• Авторизация


Расширенные коды клавиатуры 05-10-2009 23:25 к комментариям - к полной версии - понравилось!


Нажатие клавиши преобразуется в двухбайтовый код, называемый скан-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
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Расширенные коды клавиатуры | xpackpackax - Дневник xpackpackax | Лента друзей xpackpackax / Полная версия Добавить в друзья Страницы: раньше»