我想获得我的键盘当前扫描代码集。 我使用的代码或多或少看起来像这样:
#define STATUSPORT 64h
#define DATAPORT 60h
#define PS2controllerOutputFull 0x20
#define PS2controllerInputFull 2h
void sendByte()
{
__asm
{
push eax
repeat :
in al, STATUSPORT
test al, PS2controllerInputFull
jne repeat
pop eax
out DATAPORT, al
clc
}
}
UCHAR getByte()
{
__asm
{
repeat:
in al, STATUSPORT
test al, PS2controllerOutputFull
jne repeat
in al, DATAPORT
clc
}
}
UCHAR getScanCodeSet()
{
__asm
{
mov al, 0xF0
call sendByte
mov al, 0x00
call sendByte
call getByte
cmp al, 0xFA
jne unknownError
call getByte; AL = Scan Code Set
jmp exit
unknownError:
mov al, 0xDD
exit:
}
}
而不是获取当前控制组号码,我从键盘接收0xFA(Acknowledge)。我对任何建议都非常感激。
(我从windows驱动程序运行此代码)