![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
|
Возвращает значение типа Char. При обращении к этой функции анализируется буфер клавиатуры: если в нем есть хотя бы один непрочитанный символ, код этого символа берется из буфера и возвращается в качестве значения функции, в противном случае функция будет ожидать нажатия на любую клавишу. Ввод символа с помощью этой функции не сопровождается эхо-повтором, и содержимое экрана не меняется.
Пусть, например, в какой-то точке программы необходимо игнорировать все ранее нажатые клавиши, коды которых еще не прочитаны из буфера, т.е. необходимо очистить буфер. Этого можно достичь следующим способом:
Uses CRT;
var
С: Char;
begin
while KeyPressed do
С:= ReadKey;
.......
end.
При использовании процедуры ReadKey необходимо учесть, что в клавиатурный буфер помещаются так называемые расширенные коды нажатых клавиш. Если нажимается любая алфавитно-цифровая клавиша, расширенный код совпадает с ASCII-кодом соответствующего символа. Например, если нажимается клавиша с латинской буквой «а» (в нижнем регистре), функция ReadKey возвращает значение chr (97), а если «А» (в верхнем регистре) – значение chr (65). При нажатии функциональных клавиш F1...F10, клавиш управления курсором, клавиш Ins, Home, Del, End, PgUp, PgDn в буфер помещается двухбайтная последовательность: сначала символ #0, а затем расширенный код клавиши. Таким образом, значение #0, возвращаемое функцией ReadKey, используется исключительно для того, чтобы указать программе на генерацию расширенного кода. Получив это значение, программа должна еще раз обратиться к функции, чтобы прочитать расширенный код клавиши, т.е. код сканирования клавиши. Этот код определяется порядком, в соответствии с которым микропроцессор клавиатуры Intel 8042 периодически опрашивает (сканирует) состояние клавиш.
Следующая простая программа позволит вам определить расширенный код любой клавиши. Для завершения работы программы нажмите клавишу Esc.
Uses CRT;
var
С: Char;
begin
repeat
С:= ReadKey;
if C<>#0 then
WriteLn(ord(C))
else
WriteLnCO1,ord(ReadKey):8)
until C=#27 {27 - расширенный код клавиши Esc}
end.
Если вы воспользуетесь этой программой, то обнаружите, что нажатие на некоторые клавиши игнорируется функцией ReadKey. Это прежде всего так называемые сдвиговые клавиши – Shift, Ctrl, Alt. Сдвиговые клавиши в MS-DOS обычно используются для переключения регистров клавиатуры и нажимаются в сочетании с другими клавишами. Именно таким способом, например, различается ввод прописных и строчных букв. Кроме того, функция игнорирует переключающие клавиши Caps Lock, Num. Lock, Scroll Lock, а также «лишние» функциональные клавиши F11 и F12 клавиатуры IBM AT, не имеющие аналога на клавиатуре ранних моделей IBMPC/XT (в этих машинах использовалась 84-клавишная клавиатура, в то время как на IBM AT – 101- клавишная).
В таблице 4.1 приводятся расширенные коды клавиш, возвращаемые функцией ord(ReadKey). Для режима ввода кириллицы приводятся коды, соответствующие альтернативному варианту кодировки.
Таблица 4.1
Расширенные коды клавиш
| Код | Клавиша или комбинация клавиш | Код | Клавиша или комбинация клавиш | ||
| Первый байт | Второй байт | Первый байт | Второй байт | ||
| Алфавитно-цифровые клавиши | |||||
| - | Backspace (Забой) | - | Tab (Табуляция) | ||
| - | Enter | - | Пробел | ||
| - | ! | - | " | ||
| - | # | - | $ | ||
| - | % | - | & | ||
| - | ' | - | ( | ||
| - | ) | - | * | ||
| - | + | - | , | ||
| - | - | - | . | ||
| - | / | 48...57 | - | 0...9 | |
| - | - | ; | |||
| - | < | - | = | ||
| - | > | - | ? | ||
| - | @ | 65...90 | - | A...Z | |
| - | [ | - | \ | ||
| - | ] | - | ^ | ||
| - | - | ' | |||
| 97...122 | - | a...z | - | { | |
| - | l | - | } |
Окончание табл. 4.1
| - | ~ | 128...159 | - | А...Я | |
| 160... 175 | - | а...п | 224...239 | - | р...я |
| Управляющие клавиши и их сочетания со сдвиговыми | |||||
| Ctrl-2 | Shift-Tab | ||||
| 16...25 | Alt-Q...Alt-Р (верхний ряд букв) | 30...38 | Alt-A...Alt-L (средний ряд букв) | ||
| 44...50 | Alt-Z...Alt-М (нижний ряд букв) | 59...68 | F1...F10 | ||
| - 71 | Ноте | Курсор вверх | |||
| PgUp | Курсор влево | ||||
| Курсор вправо | End | ||||
| Курсор вниз | PgDn | ||||
| Ins | Del | ||||
| 84...93 | Shift-Fl...Shift-F10 | 94...103 | Ctrl-F1... Ctrl-F10 | ||
| 104...113 | Alt-Fl...Alt-F10 | Ctrl-PrtScr | |||
| Ctrl-курсор влево | Ctrl-Курсор вправо | ||||
| Ctrl-End | Ctrl-PgDn | ||||
| Ctrl-Home | 120...131 | Alt-1...Alt-= (верхний ряд клавиш) | |||
| Ctrl-PgUp |
Дата публикования: 2014-11-04; Прочитано: 359 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!
