Chinaunix首页 | 论坛 | 博客
  • 博客访问: 697385
  • 博文数量: 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上读取到的值是一致的。
 

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