最近新买了 HHKB 的日文配列版本,插在笔记本上用。适应键位倒先不谈,我是希望这日文键盘和笔记本原来的 us 布局键盘可以交叉使用的。就是两个键盘可以同时使用,而外接的键盘是日文键盘布局,内置键盘是美式键盘布局。两者不会混淆。

设想起来感觉应该好解决,本以为只要在 Xorg 的配置文件里做区分就好。结果发现 Xorg 的配置文件好像不能针对某个键盘做单独设定。只好改用 setxkbmap 指定 device 编号,单独设定某键盘的 layout,就可以实现想要的效果了。

之后,还有一些小问题要处理:

  • Fcitx 会覆盖掉 setxkbmap 设定好的值,改由它自己接管。解决方法是在 Fcitx 的「附加组件」设置中关闭「X键盘集成」。其后果是,无法使用 Fcitx 里的键盘布局作为输入法了。唔,因为最近没学俄语了,暂时是不要紧。
  • AwesomeWM 中的 Mod4 键(Super_L)在 HHKB 里需要按住 Fn 才能按到,然而按住 Fn 后,数字键一行又不能用了。于是没法按习惯方式切换桌面,所以我修改了 setxkbmap 的设置文件,将全角半角键(hztg)换成了 Super_L。
  • setxkbmap 的设置只在当前 Xorg 会话中生效,所以最好将命令写在 .xinitrc 里。而外接键盘会时常移动,device 编号也不固定,所以最好是写一个脚本,获取键盘的编号,再用 setxkbmap 设置。然后每次启动 Xorg 或者插入 USB 设备时,自动运行脚本(所以脚本还要判断键盘是不是正插在电脑上)。

做完了这些,新买的 HHKB 基本上是可以愉快使用了。