Chinaunix首页 | 论坛 | 博客
  • 博客访问: 735193
  • 博文数量: 260
  • 博客积分: 7033
  • 博客等级: 少将
  • 技术积分: 2633
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-13 23:15
文章分类

全部博文(260)

文章存档

2012年(2)

2011年(41)

2010年(78)

2009年(139)

我的朋友

分类: LINUX

2009-05-03 17:20:02

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上读取到的值是一致的。
 

 
阅读(1299) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~