用 thinkpad 25 周年机械键盘和 awesome 打造纯键盘办公环境

起因

前段日子购买了一把 thinkpad 25 周年的限量版机械键盘. 买的时候黑色的没货了, 只买到一把红色的. 个人还是觉得黑色的更好看. 笔者已经有 3 把 hhkb 了, 理论上来说不需要新键盘. 买这把 thinkpad 键盘的目的, 主要还是为了收藏. 毕竟抛开 thinkpad 25 周年不谈, 这是一款带小红点的机械键盘, 在很多年以前, 小红点机械键盘是我的梦想. 这把键盘到手后拿来摆弄了一下就放起来了. 但就在上周处理一个问题是, 我一边用 spacemacs 写东西, 一边不停用右手去抓罗技 Master 在侧面显示器上看网页, 右手在鼠标键盘上来回切换. 忽然想起, 若是能重做一个 Linux 环境, 把我多年前使用的 awesome 配置文件拿出来, 配合 thinkpad 小红点键盘, 精心调教一番, 就能实现纯键盘的高效办公–这种操作模式满足了我的一切需求和习惯, 堪称终极办公环境.

问题

这里存在几个问题:

  • thinkpad 这款键盘是限量的, 即将卖光. 若我的办公环境依赖这款键盘, 那么未来几十年的使用过程必须要有足够的键盘才行. 否则好不容易打造出来的高效环境, 一旦键盘损坏就歇菜了.
  • 不仅要考虑在家的情况, 也要考虑在公司的情况. 用这一套环境, 必须使用 Linux 操作系统, 必须用双屏, 最好使用台式机. 若是在公司, 这些都可能会带来不便.
  • 重新折腾一遍 Linux+awesome, 代价非常大, 这款键盘实际使用是否足够爽尚不知. 万一用起来很蹩脚, 那么一方面浪费了金钱, 另一方面也白花了许多时间折腾.

    针对这些问题, 我仔细调研了一番. 发现虽然 thinkpad 的纪念键盘没法买了, 但台湾一款名为 tex yoda II 的键盘和这个键盘极其相似. 除了没有 thinkpad 的 logo 之外简直一模一样. 从网上了解到, thinkpad 这款键盘 其实就是 tex yoda II 的贴牌. 既然如此, 那么买不到键盘的问题可以认为是解决了. 为了验证和保险起见, 我又下单买了一块 tex yoda II 和第二把 thinkpad 25 周年纪念机械键盘(万一 yoda 不合适, 那么我就必须把市面上的纪念版都收掉, 所以多买一把放着). 公司的办公场景我仔细考虑过, 我觉得台式机+ipad pro 的方式是一个解决方案. 唯一有所顾虑的是 Office 软件. 平时开会, 演示都可以交给 ipad pro 完成. 接下来就是如何打造一个 Linux 办公环境. 我原先的 win10 PC 上两块硬盘都快满了, 不可能在这两块 win10 硬盘上装 Linux, 所以我必须再买一块 SSD. 原本打算随便来一块容量差不多就行. 结果无意中发现 SSD 还有 TLC/MLC/3D NADA 颗粒之分, 为了确保数据安全, 我买了一块东芝的 480G Q200 SATA3. 装这块盘的时候还经历了一点小麻烦, 只能插一个特定的 SATA3 接口, 否则我的机器认不出这块盘. 关于 Linux 发行版的选择, 原本想用不操心的 ubuntu. 后来还是采用了 gentoo. 因为 ubuntu 已经非常臃肿, 默认安装了 gnome 那一套东西. 我只用 awesome, 所以装好后还要干掉很多包. gentoo 虽然折腾, 但我的工作站上也是 gentoo, 至少有不少经验是互通的. 用 ubuntu 看似安装时省劲, 代价就是后续不断遇到问题时, 我必须记忆两个不同发行版的解决方案. 我这次使用 minicd 安装 gentoo, 其实也就是 stage3. 这次安装比去年安装工作站时简单了许多, 基本上是一边看视频, 一边轻松完成. 只在 grub 写入 UEFI 的地方稍微折腾了一下, 也是因为主板的兼容性比较差导致的. 完成后开始折腾 awesome, 先要安装 xorg. 时隔多年, 早就忘了 xorg 那一堆写法, 于是又老老实实看手册学习了一边, 弄懂了不少东西. 配置 startx 时因为吧.xinitrc 的名称写错了, 折腾了两个小时. 成功启动 awesome 后, 我把自己多年前的配置重新整理添加进来, 一切顺利. 只有几个小问题, 暂时还没有解决: 1.xfce4-terminal 中无法用快捷键激活 fcitx 输入法. 2.两个屏幕若是采用同样字号, 则注定有一个屏幕看上去不那么合适, 不知 awesome 是否能对不同屏幕进行放缩调整 3.默认的声卡驱动有问题

体验

在 awesome 中启动 xfce4-terminal 后, 效果非常惊艳, 比 win10 的 xshell/mobaXterm 好得太多太多. 即使用的是同样的屏幕/字体/配色, 也能明显感觉 xfce4-terminal 的显示更加清晰锐利, 延迟更小. 还能通过 xcompmgr 支持半透明效果. 这让我很不理解, 究竟为什么 win10 下的终端无法把效果做好. 在 Linux 下 X11 转发 GUI 酣畅淋漓, 像本地程序一样流畅. win10 下那恶心的延迟感总算没有了. 单凭这一点, 我就觉得这次折腾非常值得. 非常幸运的是 thinkpad 这把键盘也很合手, 从 hhkb 换过来, 并没有觉得十分突兀. 这里我修改了两处键映射, 一个是把 CAPSLOCK 变成 CTRL, 保持和 hhkb 一样, 这个很容易理解; 另一个是把退格键和\键互换, 为了和 hhkb 的推格键的位置保持一致. 这次换键盘的体验, 让我感受到 hhkb 有几处优秀的设计: 1.跳线硬件的方式设置 capslock/ctrl 我曾一度认为硬件跳线的方式是 hhkb 保守落后的体现, 把这个称为杀手功能名不符实. 因为现在很多操作系统, 尤其是 Linux 完全可以用 xmodmap 这样的软件随意映射键位, 又何必专门搞个硬件呢? 结果当我设置了半天 xmodmap, 用 thinkpad 键盘测试通过后一连远程 server, 我发现问题并不那么简单. ssh 到远程 server 后, 本地的 xmodmap 设置完全失效, 远程 server 的窗口似乎直接从键盘读取输入, 而根本不经过 xmodmap. 更奇特的是, 一旦连过远程 server, 再开新终端后, 这些终端里 xmodmap 也失效了. 有人说, 吧.xmodmap 复制到远程总没问题了吧. 但遗憾的是 xmodmap 仅对远程的 X11 转发程序有效, 对于 ssh 窗口里的操作不起作用, 这样就十分难受, 因为 ssh 时有很多操作是在 terminal 窗口里完成的, 此时完全无法映射键位, 原本熟悉的键盘布局会瞬间变得不适应. hhkb 使用硬件映射键位的方式, 完全杜绝了各个环境中键位不一致的问题, 用户带好自己的键盘, 连接多少台电脑都没问题, 也不会跟其他人产生冲突.

2.hhkb 的倾斜角度. hhkb 底部使用了两级高度调节的设置, 给用户提供了最舒服的角度, 减轻打字疲劳. 而这个 thinkpad 键盘没有这种设计, 底部只有两个螺钉旋钮, 高度完全固定, 而且整体偏低, 手腕的疲劳感胜过 hhkb.

3.backspace 键的位置. hhkb 上的 backspace 键和很多键盘位置都不同, 当初让我很不适应, 后来才觉得这是最合理的位置. thinkpad 键盘的 backspace 键在最右上角, 对应 hhkb 键的 backspace 位置的是\键. 这真是一个非常愚蠢的设定, 右上的 backspace 非常难按, 必须把手抬开一定距离才能够到. \键虽然也是一个常用按键, 但它和 backspace 比使用频率还是差得太远. 把这样一个键放在回车之上的黄金位置, 实在非常浪费.

去鼠标化

有了上面的设置, 大部分软件用键盘配合小红点辅助已经非常方便了. 对于日常用的最频繁的浏览器, 我们还需要再进一步让其去鼠标化. 我的做法是通过安装一款 vim 键位绑定的 chrome 插件, 使得所有浏览器操作都能用键盘完成. 同时设置了代理 swithomega 的快捷键, 让这些使用频繁的操作都通过键盘完成.

总结

这次为期几天的办公环境改造很成功, 相比 win10 环境, 几乎所有的核心功能都得到了强化, 还增加很多了 awesome 相关的自定义功能. 虽然还有一些细节需要优化, 但我敢肯定, 这已经是真正意义上的终极办公环境了. 多年来折腾过的 Linux/GNU/emacs/awesome/shell 等许许多多工具, 至此总算一滴不漏的整合在了一起. 过去花的时间, 并没有白费, 过去付出的精力, 现在重新发光发热. 这种感觉, 就像是收复失去的领土, 我终于把过去的成果充分利用了起来, 站在了自己的肩膀上.