Студопедия

Главная страница Случайная страница

Разделы сайта

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






Bios INT 16h






Функция 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 содержит код, позволяющий получить статус клавиш.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.