Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Bios INT 16h

Листинг 2.2. Простая процедура сложения. | Листинг 2.3. Модифицированная версия Add_Int. | Листинг 2.4. Корректировка регистра SP. | Листинг 2.5. Программа Timer. | Листинг 2.7. Ассемблерная часть примера. | Листинг 2.9. Си-функция, тестирующая видеорежим (SETMOPEC.C). | Листинг 2.11, Программа на Си для тестирования программы 2.10 (FILLC.C). | ОСНОВЫ РАБОТЫ С УСТРОЙСТВАМИ ВВОДА | Листинг 3.1. Чтение кнопок джойстика. | Листинг 3.2. Чтение позиции джойстика. |


Функция 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. Получение скан-кодов с клавиатуры.

mybiblioteka.su - 2015-2024 год. (0.006 сек.)