Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Нажатие клавиши преобразуется в двухбайтовый код, называемый скан-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 | Пробел | ||
Esc | BackSpace | ||
Tab |
Таблица П6. Расширенные коды некоторых клавиш
Дата публикования: 2014-10-29; Прочитано: 280 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!