配置Nokia n900的键盘,方便符号输入

纠结了快一年的n900在2010-11-28号终于买了,然后就开始享受折腾的乐趣了。在写正题之前还是习惯先讲故事,这次是讲关于n900的故事。

在2009年的12月,诺基亚刚刚发布n900的时候就开始关注这个手机了。n900是诺基亚第一款但很遗憾也是最后一款使用Maemo作为操作系统的智能手机。Maemo5是一个以Debian为基础的手机上的Linux操作系统。n900之所以吸引我就是因为它离我“手机上的Debian“这个,算是理想吧,最接近。之前一直”梦想“着能有一款能打电话的移动Linux系统,甚至想过自己给上网本搭配移动通信模块。而n900最遗憾的一点就是它的操作系统Maemo5只在这一款手机上出现,也是最后一款,以后的n系列高端手机将使用Maemo和Moblin合并之后的项目Meego作为操作系统了,但是Meego从Debian系转成了rpm系,从gtk转成了qt,这些改变都不是我喜欢的。所以我非常希望社区能够持续支持Maemo,让它发展成手机上的Debian,完全由社区维护、自由的、平滑升级的手机操作系统。(当然还有通话部分模块的二进制驱动,这个还需要诺基亚来支持,所以这里只是美好的愿望了)

n900刚发布的时候国内价格是4k+,那是在2月的时候。我从那个时候就开始在淘宝上关注了。有一家信誉很好的店铺,n900价格从开始的4k+到5月的3k左右,最后到7 8月的2k7左右。我想在它降到2k5以下的时候再入手,但是后来悲剧的发现,n900从那家店铺里下架了……之所以犹豫了这么长时间,是因为之前的n76完全没有坏,想买n900只是为了玩,而几k的玩具对我来说显然太贵了。这次能够下定决心买,也是因为物价飞涨,想赶在大膨胀来临之前把钱花出去。

故事就讲到这吧,下面终于进入正题了。

n900也有不少不完善的地方,比如默认的SHELL是/bin/sh,大部分命令都是busybox等等,这些都很好解决,主要的问题在于,键盘只有三行,虽然是全键盘,但是还不能覆盖PC键盘上的所有键位。对于要经常使用命令行的人来说,缺少以下符号键是不能容忍的!

| [ ] { } < > ~ ` % ^ ALT TAB ESC

TAB可以用ctrl+i来代替(要用bash),ESC基本只在vim里用,还可以忍受屏幕上的符号键,ALT键我一直没找到好的解决方法,这些modifier的修改比普通符号键要复杂一些,还没搞明白。这里主要是要解决前边那些基本的符号键的键盘输入问题。

这里要知道一个问题,那就是键盘上每个按键其实都对应4个keycode,它们是1) 直接按键的时候产生的,2)和shift键组合产生的,3)和FN键组合产生的,4)和shift+Fn组合产生的。比如‘a’,单独按的时候只产生一个字母‘a’,当和shift组合的时候就产生大写的‘A’,当和Fn键组合的时候就产生‘*‘,而键盘上所有键的第四种keycode都是和第三种一样的,所以我们就可以更改这个设置,让第四种组合产生我们确实的符号键。还有不少键前三种组合都没有用完,比如退格键和空格键,再有四个方向键。

要修改这个配置就需要修改一个文件,

/usr/share/X11/xkb/symbols/nokia_vndr/rx-51

这个文件里定义了所有的按键信息。编辑这个文件,找到“english_base”, “common_keys”和”arrows_4btns”这几个段,就是所需要修改的地方。我给自己的键盘做了自己的定义。(我没有修改方向键,基本都在english_base修改的)

符号        按键           名称
<          shift+Fn+y     less
>          shift+Fn+u     greater
[          shift+Fn+h     bracketleft
]          shift+Fn+j     bracketright
{          shift+Fn+n     braceleft
}          shift+Fn+m     braceright
~          shift+space    asciitilde
|          shift+bksp     bar
^          shift+Fn+space asciicircum
%          shift+bksp     percent
`          shift+Fn+,     grave

这里名称是在修改配置文件的时候需要填写的按键名称,其他按键的名称可以参考这里。比如我想修改y的按键行为,就修改y那一行

key <AD06>   { [     y,              Y,              6,              less      ] };

中括号中的四个按键代表了按键的四种组合,最后的less就是上边列出的“名称”。其他的键也做相应的修改就好了。

还可以参考以下两篇文章

http://natisbad.org/N900/n900-keyboard-remapping.html
http://cathay4t.blogspot.com/2010/03/perl-scripting-on-n900.html  (要翻墙)

配置文件修改好之后就可以重启或者运行setxkbmap命令重新加载键盘映射,这样就可以用实体键盘输入大部分常用的符号了。

4 thoughts on “配置Nokia n900的键盘,方便符号输入

  1. wanglilife

    RHEL6-workstation-x86_64系统有一个Bug,我的一个FAT32分区,分区名字显示有问题,里面掺杂了 “>” 、”<"和其他结果字幕,俺忘记了具体是什么了。但是换成i386的版本就没有问题。

    Reply
  2. hello

    非常感谢,这篇文章对我非常有用,平时一直用那个非常麻烦符号输入法,现在可能彻底扔掉了!只是发现有点异常,我把Fn Shift J键改成bracketright后,现在按Fn Shift J键总是输出]&,按Fn Shift K键也会输出]&,(k键我基本没有修改)。

    Reply
    1. Gery Post author

      其实我也有这个问题,只是这些符号键相对比较少用,所以还能忍受,原因未知。
      把符号映射到别的键上吧,不用jk了

      Reply
  3. yoution

    请问下我也想要那个n900 的键盘映射表,可以输入{}[]的,可以把你的那个发给我吗?麻烦下你了,我自己不想修改,有点烦,还有那个
    http://natisbad.org/N900/n900-keyboard-remapping.html
    里的这个我复制后搞到手机里就启动不了了,要刷机的,那个不对的吧,我刷了2次,是那个文件有问题,我邮箱15213453297@139.com,麻烦了

    Reply

Leave a Reply