- 论坛徽章:
- 2
|
内核版本 linux0.11
do_self:
lea alt_map,%ebx
testb $0x20,mode /* alt-gr ,如果mode == 0x20,则表示按下了右键alt或ctrl;如果mode == 0x10,则表示按下了左键alt或ctrl*/
jne 1f /* jne:不相等则跳转;jnz:不等于0则跳转*/
lea shift_map,%ebx
testb $0x03,mode
jne 1f
lea key_map,%ebx
1: movb (%ebx,%eax),%al
orb %al,%al
je none /*普通的按键从这返回*/
testb $0x4c,mode /* ctrl or caps */
je 2f
cmpb $'a,%al
jb 2f
cmpb $'},%al
ja 2f
subb $32,%al
2: testb $0x0c,mode /* ctrl */
je 3f
不明白的是红色字体。如果我按键按下的是普通的按键,比如“A”或者左键"ctrl",那么mode != 0x20,但是这段代码(jne 1f)却说明了,这种情况下是使用alt_map的,正常的情况下,应该使用的是key_map吧。
求明白,谢谢! |
|