键盘.txt

来自「中断」· 文本 代码 · 共 59 行

TXT
59
字号
#include<stdio.h>
#include<bios.h>
#include<conio.h>

#define ESC 1
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77

#define NUM_KEYS 4
#define INDEX_UP 0
#define INDEX_DOWN 1
#define INDEX_LEFT 2
#define INDEX_RIGHT 3
char *key_name[NUM_KEYS]={"up","down","left","right"};

int key_scan_code;
int key_table[NUM_KEYS];

void interrupt newhandler()
{
  int status;
  key_scan_code=inp(0x60);
  status=inp(0x61);
  outp(0x61,status&0x80);
  outp(0x61,status);
  outp(0x20,0x20); 
  switch(key_scan_code)
 {
   case UP: key_table[INDEX_UP]=1;break;
   case DOWN: key_table[INDEX_DOWN]=1;break;
   case LEFT: key_table[INDEX_LEFT]=1;break;
   case RIGHT: key_table[INDEX_RIGHT]=1;break;
 }
}
void init_key()
{
  int i;
  for(i=0;i<NUM_KEYS;i++)
   key_table[i]=0;
}
void main()
{
  int i;
  void interrupt(*oldhandler)(void);
  oldhandler=getvect(9);
  setvect(9,newhandler);
 while(key_scan_code!=ESC)
{init_key();
 for(i=0;i<NUM_KEYS;i++)
 {
  if(key_table[i]!=0)
  printf("%s",key_name[i]);
  }
 printf("..");
}
  setvect(9,oldhandler);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?