Управление клавиатурой

Клавиатура - достаточно сложное устройство, в состав которого входит микропроцессор и память - буфер клавиатуры. При нажатии и отпускании любой клавиши в буфер клавиатуры записываются так называемые коды на- жатия/отпускания, при этом микропроцессор клавиатуры отсекает дребезг клавиш - сигналы, полученные при неполном контакте в процессе нажатия и отпускания клавиши.

Югавиши клавиатуры делят на буквенно-цифровые, специальные и клавиши смещения.

К буквенно-цифровым относят клавиши букв, цифр, специальных знаков и пробела. Их используют для ввода информации.

Специальные клавиши - это клавиши управления курсором (1,

Home, End, Tab, Page up, Page down), удаления (Del, Backspace), клавиши переключения режимов (Ins, Caps lock, Num lock, Scroollock), функциональные клавиши (Esc, Break, FI, F2, F3, ..., F12) и т.д. Эти клавиши используют для выполнения вспомогательных операций во время работы с компьютером.

Клавиши смещения - это клавиши Shift, Ctrl и Alt. Их используют совместно с другими клавишами для изменения вводимых кодов. Так, если при нажатии клавиши «а» формируется код строчной буквы а латинского алфавита, то нажатие Shift-a приведет к вводу кода заглавной буквы А латинского алфавита.

Всего выделяют около 400 различных комбинаций, которые могут обрабатываться программой. Эти комбинации формируются на основании кодов нажатия/отпускания специальной программой BIOS (базовая система обработки ввода-вывода) и записываются в буфер BIOS клавиатуры.

Изначально считалось, что количество различных комбинаций не превысит 256, и, соответственно, для представления этой информации будет достаточно 1 байта (см. приложение 2), но со временем количество комбинаций возросло, и потребовалось использование второго байта.

В настоящее время для представления комбинаций, не вошедших в таблицу ASCII, используют расширенные коды, состоящие из двух байт: первый байт равен 0, а второй - содержит расширенный scan-код (см. приложение 3).

Ввод буквенно-цифровых данных с клавиатуры осуществляется процедурами Read и ReadLn, при этом реально происходит чтение кодов ASCII из буфера BIOS клавиатуры. Считанные символьные коды преобразуются во внутренний формат в соответствии с типом переменной.

Процедуры Read и ReadLn обрабатывают только комбинации, соответствующие буквам и цифрам, а также некоторые специальные комбинации, например, маркер конца строки (комбинация символов #13, #10).

Модуль crt содержит специальные функции управления клавиатурой, которые позволяют работать с расширенными кодами.

1. Функция Key Pressed: boolean - возвращает true, если нажата любая клавиша, false - если буфер BIOS клавиатуры пуст; функция не извлекает символы из буфера, не ожидает ввода;

2. Функция ReadKeytchar - извлекает очередной код из буфера BIOS клавиатуры и возвращает его как результат операции, ожидает ввода, но не высвечивает вводимого символа.

Для чтения расширенного кода функцию ReadKey необходимо вызывать дважды: первый раз она вернет 0, а второй - расширенный scan-код:

chl:=ReadKey; {читаем код}

if chl=#0 then ch2:=ReadKey; {если код=0, то читаем второй байт}

Пример 8.2. Разработать программу определения кодов клавиш и их комбинаций. Выход из цикла осуществлять по нажатию клавиши Esc.

Program ex;

Uses crt;

Var cl,c2:char;

Begin

repeat cl:=ReadKey; {вводим код}

if cl-W then {если расширенный код} begin

c2:=ReadKey; {то читаем расширенный scan-код} WriteLn(ord(cl):5, ord(c2):5) {выводим расширенный код} end

else WriteLn(ord(cl):5) {выводим код ASCII} until cl =#27;{до нажатия Esc}

End.

Примечание. Функция ЯеасИСеу обрабатывает коды из буфера ВЮ8 клавиатуры, поэтому с ее помощью нельзя получить коды нажатия/отпускания отдельных клавиш, не преобразуемых в расширенные Бсап-коды, например, клавиш смещения, клавиш переключения режимов.

Состояния клавиш смещения и клавиш переключения режимов ВЮБ фиксирует в байте состояния клавиатуры (табл. 8.2), который расположен в оперативной памяти по адресу $0:$417.


байту можно использовать стандартно объявленный массив Memrarray of byte, например: Мет[$0:$417\, или наложить некоторую переменную на интересующий нас байт оперативной памяти:

Var KeyState:byte absolute $0:$417;... .

8.3.

<< | >>
Источник: Иванова Г.С. Основы программирования. 2002

Еще по теме Управление клавиатурой:

  1. Статья 1040. Обращение взыскания на имущество, переданное в управление, по требованию кредитора установщика управления
  2. § 3. Право управления предприятием как особый вид абсолютных прав. Право полного и ограниченного управления (п. 1774-1776)
  3. УПРАВЛЕНИЕ ВРЕМЕНЕМ VERSUS УПРАВЛЕНИЕ СОБОЙ
  4. § 4. Правопреемство как следствие приобретения права управления предприятием. Условия отчуждения и приобретения права управления предприятием (п. 1777-1782)
  5. Управление термами
  6. Управление деканатами
  7. Статья 1029. Договор управления имуществом
  8. Управление градусами
  9. Функции управления в организации.
  10. Статья 97. Управление обществом
  11. Поведенческая основа процесса управления.
  12. ПСИХОЛОГИЯ УПРАВЛЕНИЯ
  13. Способы управления конфликтами.
  14. 34. Внешнее управление
  15. Управление собой и другими
  16. Управление собой и другими