2007年8月18日星期六

用Xmodmap作键盘映射

因为笔记本没有windows键,所以需要另外弄一个键来代理ubuntu里面的Super键(其实主要是fusion需要用,哈哈)

Thinkwiki上面提供的方法是用Caps_Lock来作
http://www.thinkwiki.org/wiki/Installing_Ubuntu_7.04_on_a_ThinkPad_T43#Overview
这个显然不是一个明智的决定,不能切换大小写多不方便

但是这个文章是instructive的,里面提到的Xmodmap是个好东西(是不是跟我id有点神似,嘿嘿)
查了一些介绍这个软件的文章
http://www.cbi.pku.edu.cn/chinese/documents/csdoc/cman/xmodmap.html

指定的思路是用Alt_Right来当Super用,反正在windows里面也是牺牲它,嘿嘿,都被搞惯了,我又何必客气

开始实验的xmodmap配置文件如下:
remove mod1 = Alt_R
add mod4 = Alt_R

麻烦的事情是,貌似Alt_L和Alt_R是一对,只要把Alt_R挪作他用,Alt_L也就跟着罢工了,也就是说Ctrl Tab就不干活了,这个是绝对不能容忍的事情。于是又是了一下这一段

clear mod1
add mod4 = Alt_R
add mod1 = Alt_L

还是同样的问题,有点无语,理论上应该不会是逻辑问题,只好开始逐步调试

试验把Alt改成Control--相应的要把Mod1也改成Control,很意外,是work的。也就是说,至少整个代码的语法是没有问题的....剩下的,不知道应该算是bug还是什么。

恩,原则上其实Contrlol_R这个键也是永远不会用到的,跟Alt_R倒是没多少区别。不过...总是有点不甘心,准备再多试试。

尝试在上面代码的基础上做修改,思路是用keycode把Control_R和Alt_R对换,代码大致是(我这里113,109分别是Alt和Control的键值)
remove mod1 = Alt_R
remove Control = Control_R

keycode 113 = Control_R
keycode 109 = Alt_R

add mod4 = Control_R
add Control = Alt_R
很不幸的,以上配置依然是错的...

不 过好在这次是直接在xmodmap下面一句一句执行的,发现错误居然是处在最后一句上...有点无语--此时的Alt_R实际上已经关联到键盘的Ctrl 键了,居然会因为修改他和使得左侧的Alt罢工...而反对是Alt键,给它换了一个名字以后,对他作修改就不会连作到左侧的兄弟了。

问题已经很清楚了,最后的代码只有3行
! use Right Alt as Super
remove mod1 = Alt_R
keycode 113 = Super_L
add mod4 = Super_L

如果希望用键盘上的back/forward键,加上下面的两行
! back and forward browser keys
keycode 234 = F19
keycode 233 = F20
以上东西放到~/.Xmodmap文件中即可

嘿嘿,生命在于折腾

0 comments: