Аппаратное обеспечение персонального компьютера

       

Программа KBDSCAN


Для демонстрации использования функции 00h прерывания INT16h мы подготовили программу, выводящую на экран скан-коды и коды ASCII нажимаемых клавиш (листинг 2.2).

Листинг 2.2. Файл kbdscan\kbdscan.c

// =====================================================

// Просмотр клавиатурных скан-кодов и кодов ASCII

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

// =====================================================

#include <stdio.h>



#include <dos.h>

int main(void)

{

  union REGS  rg;

 

  printf("KBDSCAN, (c) A. Frolov, 1997\n"

    "Press <ESC> to exit\n");

  for(;;)

  {

    // Вызываем прерывание INT 16h

    rg.h.ah = 0;

    int86(0x16, &rg, &rg);

    // Выводим на экран содержимое регистров AH и AL,

    // содержащих, соответственно, скан-код и код ASCII

    // нажатой клавиши

    printf("\nScan = %02.2X Ascii = %02.2X",

      rg.h.ah, rg.h.al);

    // Если была нажата клавиша ESC, завершаем работу

    // программы

    if(rg.h.ah == 1)

      break;

  }

  return 0;

}



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