更改console下的键盘keymap

我又开始折腾键盘了,都是被ThinkPad的键盘给惯坏了,它的键位安排是我用着最舒服的。而一般USB键盘都没有这样的键位安排,其实就是右ctrl的位置问题,在这篇文章里有对我这个怪癖的解释。

之前写过3篇左右的文章,进行各种映射,比如这篇是把Super_R映射成Control_R。但是这些方法都是只在Xwindow环境下才起作用的,用的是xmodmap这个工具。今天为了测试SSD在RHEL6下的一些优化特性,在台式机上装了个RHEL6,但是默认没有X环境,直接终端操作。现在终端下的分辨率也能自动设置的很好了,感觉直接在终端下用这个测试机也许也挺爽的,于是开始折腾。

既然之前的映射方法在没有X环境的情况下不能工作,那么就需要找其他方法了。有问题当然问google了。以“keyboard console keymap”为关键字进行搜索,找到了这篇文章,其主要方法就是用loadkeys命令更改keymap,而这个keymap是经过自己编辑的。

在RH系列中keymap文件是存放在/lib/kbd/keymaps目录中,而我能用到的是在/lib/kbd/keymaps/i386/qwerty这个目录中。目录中有很多keymap,可以通过查看/etc/sysconfig/keyboard文件(KEYTABLE选项)得到使用的是哪个keymap。一般默认的都是“us”。那么我们可以通过编辑/lib/kbd/keymaps/i386/qwerty/us.map.gz来达到更改映射的效果。打开这个文件可以发现,其实就是把Super_R的keycode指定为Control就可以了。那么关键就在如何找到与Super_R对应的keycode了。在X环境下可以使用xev,在终端下就需要用showkey这个命令了。运行showkey,按下右边的Windows徽标键,发现它的keycode是126(不同系统/键盘可能不同吧),然后修改us.map.gz,增加一行

keycode  126 = Control

再运行

loadkeys us

就可以了。如果不想修改原来的文件,可以cp出一份自己的,然后把/etc/sysconfig/keyboard文件中的KEYTABLE的值修改为自己的keycode文件名,比如us-my。重启系统之后设置也依然有效。

在终端下工作一段时间看看,当然这样就离不开笔记本了,只能是常规的测试工作可以在终端下进行。以后有时间的话可以折腾下终端下的email,还从来没用过。

1 thought on “更改console下的键盘keymap

  1. gery

    gnome-tweak-tool->”Keyboard & Mouse”->”Additional Layout Options”->”Ctrl position”->”Swap Right Win with Right Ctrl”

    Reply

Leave a Reply