Читайте также: |
|
При нажатии любой клавиши клавиатура генерирует некоторый код, известный как скэн-код (scan-code) [1]. Далее проводится преобразование поступающего скэн-кода в специальный двухбайтовый код. Младший из этих двух байтов для символьных клавиш содержит ASCII-код, соответствующий изображенному на клавише знаку, а старший байт содержит скэн-код клавиши.
При нажатии некоторых управляющих клавиш, таких как <F1> — <F10>, <Home>, <Del>, <Ins> и других, а также при нажатии некоторых комбинаций клавиш младший байт двухбайтового кода содержит не ASCII-код, а 0 (нуль). Это признак того, что нажатая клавиша не является символьной. Старший байт при этом содержит скэн-код нажатой клавиши (если это единственная клавиша) или номер комбинации клавиш (если это комбинация, в которой участвует управляющая клавиша). Двухбайтный код, младший байт которого содержит нуль, называют расширенным ASCII-кодом.
В соответствии с этим клавиши на стандартной клавиатуре компьютера можно разделить на три группы:
§ клавиши (и комбинации клавиш), при нажатии которых в буфер заносится простой ASCII-код (символьные клавиши в обоих регистрах, а также некоторые комбинации с участием клавиш <Ctrl> и <Alt>);
§ клавиши (и комбинации клавиш), при нажатии которых в буфер заносится расширенный ASCII-код (функциональные клавиши и их комбинации с клавишами <Ctrl>, <Shift> и <Alt>; символьные клавиши в сочетании с <Alt> и еще некоторые);
§ клавиши (и комбинации клавиш), при нажатии которых никакой код в буфер не заносится (<Ctrl>, <Alt>, <Shift>, <NumLock>, <CapsLock>, <ScrollLock>, <Pause>, <Print Screen>, а также некоторые комбинации).
Итак, после нажатия клавиши соответствующий код помещается в буфер клавиатуры. Считывание из буфера осуществляется с помощью процедур Read и ReadLn, а также функции ReadKey. Буфер в состоянии вместить до 16 символов. Если клавиши на клавиатуре нажимаются, а коды из буфера не считываются, имеет место переполнение буфера и после этого коды начинают теряться. Для работы с клавиатурой удобно использовать 2 функции модуля CRT:
ü Функция KeyPressed: Boolean – возвращает значение True, если в буфере есть хотя бы один символ (т.е, если была нажата клавиша на клавиатуре), и False в противном случае.
ü Функция ReadKey: Char cчитывает символ из буфера клавиатуры; считанный символ этом на экране не отображается. Если перед обращением к ReadKey в буфере что-то было, символ считывается немедленно. Если буфер пуст, функция ожидает нажатия клавиши.
Приложение 6
Дата добавления: 2015-07-11; просмотров: 74 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Процедуры работы с текстовым файлом | | | Прощание с клиентом |