谈按键布局(三):人体工学按键布局的终极解决方案-以 Ergodox 为例

前言

上一篇谈到软件改布局,本篇讲的终极解决方案是从硬件层面改变布局。我用了几个月时间逐渐适应了以Dvorak作为日常布局,使用Linux打命令和写代码的舒适度得到了大幅提升。这体现在:打字的时候,手指不需要总是大幅度移动、标点符号符号更好按了,右手小拇指也变得舒服得多。然而还是有一些地方很难以忍受,所以有了这个终极解决方案。

传统方案的不足

  1. 传统键盘由于历史原因(防止打字机卡键)设计的倾斜布局使得左手特别难按,手腕很不舒服。
  2. 倾斜布局使得我到现在盲打数字区域都会打错。
  3. 之前的快捷键位置都变了,非常不好按,我应对的方法是忍着。
  4. vim很适应的hjkl现在的位置变得非常不舒服,虽然可以通过修改vim配置解决,但治标不治本,因为没办法一下改掉所有vim模式插件的运行模式。
  5. 玩游戏的时候按键位置变得很不方便,切换按键布局也很麻烦,我应对的方法是不玩游戏。
  6. 退格键很远,又没有足够多的按键把退格键映射到好按的位置。

终极方案

综合考虑上面几个不足,从选购键盘开始,把这些问题全都解决掉:

应对倾斜布局:

选择直来直去的键盘。通过长时间调查,发现有TypeMatrix、xd75re、planck、ergodox、kinesis、X-bows等上下对齐的键盘。最初非常想要X-bows,可是这个键盘太小众,键盘和键帽太难买到;ergodox又是分体键盘,所以一步到位,既然选择要人体工学就直接选择最极端的键盘。
可能有朋友担心ergodox适应起来困难,我可以很负责任地说,适应成本很低。我为了适应dvorak花了一个星期才能够完全盲打,敲代码速度花了一个多月时间才勉强赶得上之前的打字速度,而双拼打中文的速度至今赶不上曾经的QWERTY键盘。而适应ergodox只需要一天,除了左手下排字母刚开始比较容易打错之外,打字速度与准确度与换键盘相比并没有显著区别。
如果不会盲打,淘宝也有有刻键帽可选。

应对Dvorak下快捷键、游戏、vim不好按

购买可编程(尤其是支持tmk/qmk固件的)键盘。这种键盘可以进行极高的自定义。比如我的键盘布局
这种固件是按层编程的,可以在网页上图形化地进行设计,再烧录到键盘中的单片机里。由于可以设计多层(我的键盘至多能写32层),可以通过发挥想象力在键盘里面设计各种各样的功能。下一节讲我的布局图的时候将会对如何应对快捷键、游戏和vim进行详细介绍。

我的布局图

第零层与第一层:Dvorak与QWERTY




没什么好说的,有个音乐控制功能。❐1可以在Dvorak和QWERTY之间切换,解决了玩游戏偶尔需要回到QWERTY的问题。而TT3是按下不放可以临时切换到第三层(功能区),按一下直接切换到功能区;TO2为按一下直接切换到第二层小键盘区。

第二层:NumPad

加入小键盘区,如果需要手动输入大量数字的话,使用这个会更加方便。键盘中右手大拇指区有个Calc,可以一键调用操作系统中的计算器,快速进行计算,在帮别人做算法笔试题的时候应该会很方便。

第三层:功能区

这个区域是重点,为了解决Dvorak的快捷键(复制、粘贴、剪切等)和vim的hjkl很难按的问题,引入了这个区。在其他层按住TT3时,临时切换到这个区,同时点击相应位置的按键即可出发快捷键。我把常用的Ctrl+ZXCVBFL都放到了相应位置,以便单手使用复制粘贴剪切等。
除此之外,按住TT3,原来的hjkl都对应到了现在的方向键,不仅vim可以像以前一样操作,任何文本编辑器、浏览器、文件管理器都支持同样的操作了,就像mac上的全局emacs绑定一样。
设计这个布局的时候,我还考虑到Linux可能会经常切换TTY,所以不仅FXX键得到了保留,ctrl/alt/super/shift等修饰键我都放到了与前几层同样的位置。
不知道读者看到最后有没有注意到存在几个鼠标形状的按键,这个是qmk固件里面最有趣的东西,可以使用键盘控制鼠标运动。这个功能在某些时候会有很大作用,比如有的电脑没有足够多的usb口,无法同时连接键盘和鼠标(或者连接起来很麻烦);比如把两块分体键盘放在腿上使用,不愿意去找鼠标,便用键盘充当鼠标的作用。只要使用手掌压住TT3或按一下TT3,鼠标模式就能同时激活,手完全没有离开键盘的必要。

Ergodox的一些不起眼的小问题及解决方案

层的数量这么多,如何知道当前处在哪一层

我买的ergodox是不包含LED的,无法通过LED指示处于哪一层,如果买的或者自己焊的ergodox里面有LED就不存在这个问题了。
不过没关系,虽然键盘上没有LED,但单片机(teensy)的板子上却有一个LED,只要想办法在某些层让这个LED亮起来就可以知道是不是切到了功能区却忘记切回来了。
通过研究keymap.c,发现有几个LED控制函数。通过尝试编译可以发现ergodox_board_led_on和ergodox_board_led_off两个函数可以对单片机板子上的LED进行控制。进行简单的修改便可以在小键盘区和功能区点亮这个LED。

我买的键帽没有两手食指定位点

买的时候卖家多送了俩键帽,所以用瑞士军刀里面的钻孔锥稍微钻一下,这两个键帽手感就会变得不一样,就可以用这个当定位点了

轴体的选择

用惯了青轴机械键盘,段落感强且不会出现不清楚按键有没有按下的情况。而小拇指比较脆弱,所以我的字母区使用青轴,边缘使用红轴。大拇指力量大一些,所以大拇指的小键盘区域使用茶轴。有的时候会不小心按到数字区,为了手感上体现出来差异,数字区的10个键使用茶轴。

附录

ErgoDox初级指南 - 入手及自定义键位:https://antscript.com/post/2016-05-03-Ergodox-custom-layout-1/
ErgoDox中级指南 - 自定义组合键:https://antscript.com/post/2016-06-02-Ergodox-custom-layout-2/

此博客中的热门博文

免费爬墙网站项目(ShadowSocksShare)开发简记

Ubuntu Gnome 酷炫完整指南(一):小工具篇