Chinaunix首页 | 论坛 | 博客
  • 博客访问: 64190
  • 博文数量: 14
  • 博客积分: 260
  • 博客等级: 二等列兵
  • 技术积分: 154
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-05 22:58
个人简介

临渊羡鱼,不如退而结网。

文章分类

全部博文(14)

文章存档

2014年(3)

2012年(11)

我的朋友

分类: LINUX

2012-08-13 12:36:05

接上篇,我们说说 X 的键盘映射,网上已经有不少文章,所以我只简要重复一下。当然看 man 手册永远是重要的。

可以使用命令 xev 得到按键的 keycode ,使用 xmodmap -pke 得到当前的映射,修改,然后像下面这样设置。

xmodmap -e "keycode NUMBER = KEYSYMNAME ..."

如果写成配置文件,通常使用 .xmodmaprc ,然后用运行 xmodmap .xmodmaprc 加载,我是把下面这行加进 .xinitrc 里面,startx 过程中就执行了。

xmodmap ~/.xmodmaprc

下面是我的 .xmodmaprc。完成两件事,一是把 Escape Caps_Lock 和 Control 调换了一下,二是把 F1-12 定义为切换终端 1-12 ,F1-F12 用 Shift+F? 代替。

! switch Escape and Caps_Lock for emacs
remove Lock = Caps_Lock                                                                                                                     
keycode 66 = Escape                                                                                                                         
keycode  9 = Caps_Lock                                                                                                                      
add Lock = Caps_Lock                                                                                                                        
! set original Menu to Control_R
remove Control = Control_R                                                                                                                  
keycode 135 = Control_R                                                                                                                     
add Control = Control_R
! switch console with F1-12
! Shift-F? is the original F?
keycode  67 = XF86Switch_VT_1 F1
keycode  68 = XF86Switch_VT_2 F2
keycode  69 = XF86Switch_VT_3 F3
keycode  70 = XF86Switch_VT_4 F4
keycode  71 = XF86Switch_VT_5 F5
keycode  72 = XF86Switch_VT_6 F6
keycode  73 = XF86Switch_VT_7 F7
keycode  74 = XF86Switch_VT_8 F8
keycode  75 = XF86Switch_VT_9 F9
keycode  76 = XF86Switch_VT_10 F10
keycode  95 = XF86Switch_VT_11 F11
keycode  96 = XF86Switch_VT_12 F12

格式与 Console 下面类似,是的。唯一值得一说的是

keycode NUMBER = KEYSYMNAME ...

这种格式,KEYSYMNAME 最多可以支持到8列,但是 man 手册说后4列不是每个 X server 都支持,而前4列先后是:plain Key, Shift+Key, Mode_switch+Key, Mode_switch+Shift+Key 。如果你要用到 Mode_switch 用上面语法定义一个键就可以了。

就是这些了,但是 X 把键盘的映射实现得很复杂,我是没有耐心再研究了,如果有兴趣可以看看 /usr/share/X11/xkb/ 下面那些东西,再找东西读读。呵!
阅读(4840) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~