Nickolay.info. Обучение. Учебник по Паскалю. Приложение 5

Приложение 5. Расширенные коды клавиатуры

 

Нажатие клавиши преобразуется в двухбайтовый код, называемый скан-ASCII-кодом. Этот код помещается в буфер клавиатуры, откуда ваша программа может считать его с помощью прерывания системы BIOS. Старший байт двухбайтового кода называется скан-кодом и является отображением фактически нажатой клавиши. Скан-код не отражает состояние клавиш Shift, Ctrl или Alt и не является уникальным. Помимо скан-кодов нажатия, существуют коды отпускания клавиш, отличающиеся на шестнадцатеричное значение 80 в сторону увеличения. Младший байт полного кода, называемый ASCII-кодом, также не является уникальным, но полная комбинация скан и ASCII-кода уникальна. Некоторые клавиши не имеют ASCII-кода и вместо него возвращается ноль. Такие двухбайтовые коды называются расширенными. При приеме кода нажатой клавиши через DOS последняя отделяет от общего значения скан-код. Кроме того, работающий в системе русификатор может дополнительно транслировать скан-коды буквенных клавиш в ASCII-коды русских букв.

Исходя из сказанного, при использовании стандартной функции readkey, работающей с ASCII-кодами клавиш, в общем случае является правильной следующая схема обработки на Паскале:

ch := readkey; {Чтение символа в байт ch}

if ch = #0 then begin

   {Если нет ASCII-кода, прочитать

    дополнительно расширенный код}

   ch := readkey;

   {Обработка расширенного кода}

end

else

   {Обработка ASCII-кода}

На Паскале десятичный код может быть записан в виде #N, где N -- число, например, #65 ('A' латинская). ASCII-коды основных печатных символов можно узнать из Приложения 1, остальные нужные коды приводятся в табл. П5, П6.

 

Таблица П5. ASCII-коды некоторых клавиш

Enter

13

Пробел

32

Esc

27

BackSpace

8

Tab

9

 

 

 

Таблица П6. Расширенные коды некоторых клавиш

Клавиша

Код

Код с Shift

Код с Ctrl

Код с Alt

F1

59

84

94

104

F2

60

85

95

105

F3

61

86

96

106

F4

62

87

97

107

F5

63

88

98

108

F6

64

89

99

109

F7

65

90

100

110

F8

66

91

101

111

F9

67

92

102

112

F10

68

93

103

113

Стрелка вверх

72

 

 

 

Стрелка вниз

80

 

 

 

Стрелка влево

75

 

 

 

Стрелка вправо

77

 

 

 

Insert

82

 

 

 

Delete

83

 

 

 

Home

71

 

119

 

End

79

 

117

 

Page Up

73

 

132

 

Page Down

81

 

118

 

Рейтинг@Mail.ru
вверх гостевая; E-mail