Программирование игр для Windows. Советы профессионала

Получение скан-кодов с клавиатуры


Код, представленный в Листинге 3.5 напрямую считывает скан-код и возвращает его в вызывающую программу. Если ввода нет, то функция возвращает 0.

Листинг 3.5. Получение скан-кодов с клавиатуры.

unsigned char Get_Scan_Code(void)

{

// получить скан-код нажатой клавиши

// используется встроенный ассемблер

//клавиша нажата?

_asm

{

mov ah,01h    ;функция Olh - проверка на нажатие клавиш

int 16h       ;вызвать прерывание

jz empty      ;нет нажатых клавиш — выходим

mov ah,00h    ;функция 0 - получить скан-код

int 16h       ;вызвать прерывание

mov al,ah     ;результат поместить в AL

xor ah,ah     ;обнуляем АН

jmp done      ;в AX возвращается значение "все в порядке"

empty:

xor ax,ax     ;очистить AX

done:

} // конец ассемблерного блока

} // конец функции

Мы опять используем встроенный ассемблер. Можно, было, конечно, использовать функцию BIOS через вызов _int86() в Си, но на встроенном ассемблере это выглядит намного круче.



Содержание раздела