Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Адаптеры и контроллеры ЭВМ.docx
Скачиваний:
18
Добавлен:
01.04.2025
Размер:
844 Кб
Скачать
☆

80H. Когда клавиатура работает в режимах 2 и 3, код отпускания представляет собой двухбайтовый код - код

F0h и код нажатия клавиши.

Режим 1

Коды сканирования, вырабатываемые расширенной клавиатурой в режиме 1, совместимы с кодами ска-

нирования клавиатуры PC/XT. Поскольку никакого преобразования кодов сканирования в этом режиме не

происходит, коды сканирования, генерируемые клавиатурой в режиме 1, идентичны системным кодам, тре-

буемым для ввода в BIOS. Для установки режима 1 необходимо переслать в клавиатуру команду F0h с бай-

том конфигурации 01h. Чтобы получать системные коды и информацию о состоянии клавиатуры, приклад-

ные системы, использующие клавиатуру в режиме 1, должны пользоваться функциями 00h, 01h и 02h преры-

вания INT 16h BIOS (драйвера клавиатуры).

В наборе кодов сканирования режима 1 каждой клавише присваивается базовый код сканирования, а в

некоторых случаях и дополнительные коды для генерирования в системе искусственных состояний переклю-

чения регистров. Коды сканирования автоматического повторения каждой клавиши идентичны одиночным

кодам сканирования.

Режим 2

Режим 2 - это устанавливаемый по умолчанию режим расширенной клавиатуры, который система выби-

рает при инициализации после включения питания. В этом режиме клавиатура генерирует скан коды нажа-

тия, отличающиеся от системных кодов, а скан код отпускания состоит из двух байт, первый из которых

является префиксом отпускания (F0h), а второй идентичен коду нажатия этой клавиши. В этом режиме сис-

темный адаптер клавиатуры должен программироваться на преобразование генерируемых клавиатурой скан

кодов в системные коды, требуемые BIOS. За исключением системных кодов новых клавиш расширенной

клавиатуры системные коды соответствуют кодам сканирования, которые генерируются клавиатурой в

режиме 1. Для доступа к системным кодам, генерируемым новыми клавишами расширенной клавиатуры,

прикладные системы должны пользоваться функциями 10h, 11h и 12h прерывания INT 16h BIOS вместо

обычных функций INT 16h с AH=00h, 01h и 02h. Для доступа к системным кодам, генерируемым новыми

клавишами 122-клавишной клавиатуры, прикладные системы должны пользоваться функциями BIOS INT

16h с AH=20h, 21h и 22h.

Режим 3

Набор кодов сканирования, генерируемых в режиме 3, отличается от кодов режимов 1 и 2. В этом режи-

ме адаптеру клавиатуры должно быть запрещено преобразование кодов сканирования в системные коды пос-

кольку адаптер не может преобразовать этот набор кодов сканирования. Прикладные системы, использую-

щие расширенную клавиатуру в режиме 3, должны выбирать этот режим с помощью команды клавиатуры

F0h (значение байта конфигурации - 3). Эти прикладные системы должны взять на себя обработку кодов

сканирования, генерируемых клавиатурой, поскольку адаптер клавиатуры и BIOS не могут обрабатывать

набор кодов сканирования, генерируемых в режиме 3. В наборе кодов сканирования 3 каждой клавише присваивается уникальный 8-разрядный код нажатия,

который передается при нажатии клавиши. Генерацию кода отпускания можно программно разрешать или

запрещать для всех или отдельных обычных клавиш. Код отпускания формируется всегда для клавиш сдвига

и состояния (Shift, Ctrl, Alt, Caps Lock, Num Lock). Код отпускания, как и в режиме 2, состоит из двух байтов,

первый из которых является префиксом отпускания (F0h), а второй идентичен коду нажатия данной

клавиши. В режиме 3 каждая клавиша посылает только один код сканирования и состояние любой клавиши

не зависит от состояния других.

Команды передаются клавиатуре через входной буфер адаптера клавиатуры, записью их кода по адресу