谈按键布局(三):人体工学按键布局的终极解决方案-以 Ergodox 为例
前言
上一篇谈到软件改布局,本篇讲的终极解决方案是从硬件层面改变布局。我用了几个月时间逐渐适应了以Dvorak作为日常布局,使用Linux打命令和写代码的舒适度得到了大幅提升。这体现在:打字的时候,手指不需要总是大幅度移动、标点符号符号更好按了,右手小拇指也变得舒服得多。然而还是有一些地方很难以忍受,所以有了这个终极解决方案。
传统方案的不足
- 传统键盘由于历史原因(防止打字机卡键)设计的倾斜布局使得左手特别难按,手腕很不舒服。
- 倾斜布局使得我到现在盲打数字区域都会打错。
- 之前的快捷键位置都变了,非常不好按,我应对的方法是忍着。
- vim很适应的hjkl现在的位置变得非常不舒服,虽然可以通过修改vim配置解决,但治标不治本,因为没办法一下改掉所有vim模式插件的运行模式。
- 玩游戏的时候按键位置变得很不方便,切换按键布局也很麻烦,我应对的方法是不玩游戏。
- 退格键很远,又没有足够多的按键把退格键映射到好按的位置。
终极方案
综合考虑上面几个不足,从选购键盘开始,把这些问题全都解决掉:
应对倾斜布局:
选择直来直去的键盘。通过长时间调查,发现有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
这个区域是重点,为了解决Dvorak的快捷键(复制、粘贴、剪切等)和vim的hjkl很难按的问题,引入了这个区。在其他层按住TT3时,临时切换到这个区,同时点击相应位置的按键即可出发快捷键。我把常用的Ctrl+ZXCVBFL都放到了相应位置,以便单手使用复制粘贴剪切等。
除此之外,按住TT3,原来的hjkl都对应到了现在的方向键,不仅vim可以像以前一样操作,任何文本编辑器、浏览器、文件管理器都支持同样的操作了,就像mac上的全局emacs绑定一样。
设计这个布局的时候,我还考虑到Linux可能会经常切换TTY,所以不仅FN键得到了保留,ctrl/alt/super/shift等修饰键我都放到了与前几层同样的位置。
不知道读者看到最后有没有注意到存在几个鼠标形状的按键,这个是qmk固件里面最有趣的东西,可以使用键盘控制鼠标运动。这个功能在某些时候会有很大作用,比如有的电脑没有足够多的usb口,无法同时连接键盘和鼠标(或者连接起来很麻烦);比如把两块分体键盘放在腿上使用,不愿意去找鼠标,便用键盘充当鼠标的作用。只要使用手掌压住TT3或按一下TT3,鼠标模式就能同时激活,手完全没有离开键盘的必要。
最后,所有的空白都用功能键填充,这样就可以操作系统层面设置热键快捷启动软件或者运行命令了。
除此之外,按住TT3,原来的hjkl都对应到了现在的方向键,不仅vim可以像以前一样操作,任何文本编辑器、浏览器、文件管理器都支持同样的操作了,就像mac上的全局emacs绑定一样。
设计这个布局的时候,我还考虑到Linux可能会经常切换TTY,所以不仅FN键得到了保留,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。我买的键帽没有两手食指定位点
买的时候卖家多送了俩键帽,所以用瑞士军刀里面的钻孔锥稍微钻一下,这两个键帽手感就会变得不一样,就可以用这个当定位点了
有的时候会“跳键”,按一下会出俩字母
qmk固件里面有个config.h,把DEBOUNCE宏改大点,或者在网页界面的设置里面设置好debounce delay就好了。
特殊功能:录制宏
功能区和数字区有宏键,按录制宏开始录制,停止停止录制键可以停止录制,按play键可以运行宏。暂时没想到有什么有用的用法,毕竟复制粘贴更方便,我用Vim的时候也很少用宏。轴体的选择
用惯了青轴机械键盘,段落感强且不会出现不清楚按键有没有按下的情况。而小拇指比较脆弱,所以我的字母区使用青轴,边缘使用红轴。大拇指力量大一些,所以大拇指的小键盘区域使用茶轴。有的时候会不小心按到数字区,为了手感上体现出来差异,数字区的10个键使用茶轴。
附录
我的ergodox布局源码与编译指南:https://github.com/the0demiurge/CharlesBackup/tree/master/keyboard/charles-ergodox-layout
烧录器 Teensy Loader:https://www.pjrc.com/teensy/loader_linux.html
烧录器 Teensy Loader:https://www.pjrc.com/teensy/loader_linux.html
Ergodox-ez 键盘布局编辑器:https://configure.ergodox-ez.com/layouts/BrrB/latest/0
TMK编辑器:http://minivan.config.thevankeyboards.com/
Massdrop家的布局编辑器:https://www.massdrop.com/configurator/ergodox
TMK编辑器:http://minivan.config.thevankeyboards.com/
Massdrop家的布局编辑器:https://www.massdrop.com/configurator/ergodox
ErgoDox初级指南 - 入手及自定义键位:https://antscript.com/post/2016-05-03-Ergodox-custom-layout-1/
ErgoDox中级指南 - 自定义组合键:https://antscript.com/post/2016-06-02-Ergodox-custom-layout-2/
ErgoDox中级指南 - 自定义组合键:https://antscript.com/post/2016-06-02-Ergodox-custom-layout-2/
评论
发表评论