|
Функция 00h - чтение символа с клавиатуры.
Вход: АН: 00h
Выход: АН - скан код
AL - ASCII-символ
Функция 01h - чтение статуса клавиатуры.
Вход: АН: 01h
Выход: АН - скан-код
AL - ASCII-символ
флаг Z: если 0, то в буфере есть символ, если 1 - нет символа.
Функция 02h - Флаги, возвращаемые клавиатурой.
Вход: АН: 02h
Выход:AL - байт статуса клавиатуры:
бит 0 - нажат правый Shift;
бит 1 - нажат левый Shift;
бит 2 - нажата клавиша Ctrl;
бит 3 - нажата клавиша Alt;
бит 4 - Scroll Lock в положении ON;
бит 5 - Num Lock в положении ON;
бит 6 - Caps Lock в положении ON;
бит 7 - Insert в положении ON.
Скан-коды
Давайте теперь поговорим о такой вещи как скан-коды. Если вы считаете, что при нажатии клавиши А обработчик клавиатуры также получает код символа А, то вы ошибаетесь. К сожалению, это не так. Обработчику посылается скан-код. Более того, он посылается дважды — при нажатии и отпускании клавиши. В видеоиграх нас будут интересовать не столько ASCII-коды, сколько нажатия клавиш A, S, Пробел, которые обычно отвечают за маневры, стрельбу и т. д. Таким образом, нам надо знать, как получить именно скан-коды. И это все, что требуется. В таблице 3.2 перечислены скан-коды клавиш.
Таблица 3.2. Таблица скан-кодов.
Клавиша | Скан-код | Клавиша | Скан-код | Клавиша | Скан-код | Клавиша | Скан-код |
Esc | I | Z | F7 | ||||
O | X | F8 | |||||
P | C | F9 | |||||
[ | V | F10 | |||||
] | B | F11 | |||||
Enter | N | F12 | |||||
Ctrl | M | Num Lock | |||||
A | Запятая | Scroll Lock | |||||
S | Точка | Home | |||||
D | / | Up | |||||
- | F | Правый Shift | PgUp | ||||
= | G | Print Screen | Серый - | ||||
Backspace | H | Alt | Left | ||||
Tab | J | Пробел | 5 на цифр. клав. | ||||
Q | K | Caps Lock | Right | ||||
W | L | F1 | Серый + | ||||
E | ; | F2 | End | ||||
R | Апостроф | F3 | Down | ||||
T | ~ | F4 | PgDn | ||||
Y | Левый Shift | F5 | Ins | ||||
U | \ | F6 | Del |
Если вы внимательно изучали таблицу, то должны, были заметить, что клавиши; имеющие двухсимвольную кодировку, обладают, тем не менее, только одним скан-кодом. Это происходит потому, что каждый скан-код может быть дополнен информацией о статусе клавиш. Кроме того, благодаря таблице 3.2, мы теперь сами можем по скан-коду определять код ASCII.
Статус клавиш
Мы должны иметь возможность определять:
§ Была ли нажата какая-нибудь клавиша;
§ Какая была нажата клавиша;
§ Статус клавиши Shift.
Статус клавиш — это просто битовый вектор (последовательность), содержащий информацию о клавишах Shift, Alt, Ctrl и других. Эта последовательность находится в памяти по адресам 417h и 418h. Мы не будем читать эти ячейки напрямую, а воспользуемся BIOS и Си.
Листинг 3.4 содержит код, позволяющий получить статус клавиш.
Дата добавления: 2015-07-12; просмотров: 77 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Листинг 3.3. Программа работы с джойстиком (JOY.C). | | | Листинг 3.5. Получение скан-кодов с клавиатуры. |