Linux给Xserver的键盘编码,可以通过showkey这个命令看到。
Xserver收到特定的key后,会根据键盘排布来转化为相应的keysym,也就是把单纯的keycode,转化为字母,并上报给上层应用。
使用 xev可以在图形界面下查看某个key被按下后,Xserver上报给应用程序的值。
那么按了caps之后,按下'a'这个按键后,showkey读到的数据是变化了的么?是'A'的keycode?
经过实践,发现,在按下Caps Lock后,再次按'a'键,showkey读到的仍然是'keycode 30 press'.
这么看来,对于按下cap lock键之后的字母大小写键转换,是在xserver中完成的了。
在给富士康的Demo中,按下Caps之后,按住 Shift + a,应该是得到a的,但是敲入的仍然是'A'。
那么使用xmodmap可以解决这个问题么?
还是这个问题仅仅是由于Xserver没有记忆Caps的值导致的?(这个应该不可能,因为按下Caps之后,按字母会自动变为大写的)
|
showkey |
xev keysym |
Ctrl L |
29 |
37 0xffe3 Control_L |
R |
97 |
105 0xffe4 _R |
Shift L |
42 |
50 0xffe1 Shift_L |
R |
54 |
62 0xffe2 _R |
Enter |
28 |
36 0xff0d Return |
Space |
57 |
65 0x20 Space |
Break |
119 |
127 0xff13 Pause |
Menu |
127 |
135 0xff67 Menu |
上 |
103 |
111 0xff52 Up |
下 |
108 |
116 0xff54 Down |
左 |
105 |
113 0xff51 Left |
右 |
106 |
114 0x5553 Right |
Win L |
125 |
133 0xffeb Super_L |
Win R |
126 |
134 0xffec Super_R |
经过对照,Showkey的值,在arm机器上,和PC上读取到的值是一致的。
阅读(1235) | 评论(0) | 转发(0) |