所以最近我试图为我的学校项目制作一个键盘记录器。 (我将int9h更改为我自己的代码,这样我就可以在不中断键盘缓冲区或其他程序的情况下获取密钥)。现在当使用常规键(只是简单的BIOS代码)时,一切正常,但我的键盘移位标志状态有问题。 我试图使用int16h(ah = 2)并直接从内存获取字节,我尝试打印它以查看错误。无论我按哪个键(Lshift,Rshift,Caps lock等),该字节始终为0。
注意:我们使用DOSbox来运行我们的程序
这是我的检查:
shiftRight_check:
mov ah, 2
int 16h
test al, 1
jz shiftLeft_check
jmp shift_keys
shiftLeft_check:
mov ah, 2
int 16h
test al, 2
jz regular_keys
jmp shift_keys
从我看到的字节应该如下:
0: 01H alpha-shift (right side) DOWN
1: 02H alpha-shift (left side) DOWN
2: 04H Ctrl-shift (either side) DOWN
3: 08H Alt-shift (either side) DOWN
4: 10H ScrollLock state
5: 20H NumLock state
6: 40H CapsLock state
7: 80H Insert state
任何人都可以帮助我吗?