/*********************
K.C.Y 1993
*********************/
#include <dos.h>
void interrupt far (*oldKBD)(void);
unsigned char scancode[128]={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
unsigned char touchcode[128]={
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
void interrupt ScanKey()
{
unsigned char key,key2;
__emit__(0xFB);
key = inportb(0x60);
if (key>127) scancode[key-128]=0;
else if(!scancode[key]) {
scancode[key]=1;
touchcode[key]=1;
}
key2 = inportb(0x61);
key=key2;
key2=key2 | 0x80;
outportb(0x61,key2);
outportb(0x61,key);
__emit__(0xFA);
outportb(0x20,0x20);
}
void NewKey()
{
oldKBD=getvect(0x9);
setvect(0x9,ScanKey);
return;
}
void OldKey()
{
setvect(0x9,oldKBD);
return;
}
'코드' 카테고리의 다른 글
| inline code (0) | 2023.11.17 |
|---|---|
| WebDAV (FireMonkey) (0) | 2014.06.27 |
| Cam (0) | 2010.08.10 |
| unzip (2) | 2010.08.03 |
| FindWindow (0) | 2010.07.13 |