自定鍵盤組合鍵、鍵面、與 Keybooardio Atreus

作者:   發佈於: ,更新於:

去年年中看到這個 Perl 研討會的演講:John Anderson - "Confessions of a Space Cadet",喔,Space Cadet,那不就是與 Lisp Maichine 同套推出的名鍵盤嗎?果然,這是一場講了很多鍵盤的演講。不過這演講並不是賣鍵盤,而是強調鍵盤這層人機界面很重要,打造讓人能舒適打字工作的人機界面可說是再重要不過的事了。使用一把好鍵盤,也能讓打字造成的工作疲勞減低一些。

Space Cadet Keyboard 真是奇物。其上變換鍵多達七顆:Control, Meta, Super, Hyper, Shift, Top, Front. 還可同時按下最多四鍵組合來變換字面。聽說這鍵盤能輸出多達 8000 個不同字母。聽說其鍵軸料很厚,光鍵帽就比 Cherry 的鍵軸鍵帽加起來還重。參考:youtube: Symbolics Space Cadet keyboard review (Honeywell Hall effect 4B3E)

能切換鍵鍵面之變換鍵,在 pc 與 mac 上,只剩下 shift, capslock, numslock 及 mac 系統上 option (alt)。日文鍵盤則還多個入力切換鍵。中文輸入,則都是以某組合鍵來切換鍵面。

平常時能減低工作疲勞的方法,不外乎是時時注意工作時的站姿與坐姿。其實對於鍵盤的使用狀態,也是個該要時時檢討的一環。發現常常重覆進行的指令後或或許可以透過快速鍵的使用來減低打鍵數,或是達到更高的工作效率。學 一點 Emacs Lisp,就能讓編輯器能自動補完或是自動編輯,用更少的打鍵數完成更多的指令,也算是一種能減低工作疲勞的好辦法。

在拜見 The confession of a Space CadetA modern space cadet 之後,我就立刻效彷 genehack 前輩,裝上 Karabiner-Element 而使用一陣子了,主要是採用 shift paren 與 cmd bracket 這兩組設定。由於使用電腦的主要目題是寫程式,會很常需要輸入各式括號,因此會希望能讓某個鍵按下後就直接輸出 {,而不必按 shift [ 兩個鍵。透過 Karabiner-Element,我將筆電鍵盤及 HHKB 上左側的 Cmd 鍵設定成在短按時輸出 {,而在長按時變回 Cmd。同樣地,將右側的 Cmd 對應到 },左 shift 為 (、右 shift 為 )

今年年初參與 Keyboardio 募資,預購了 Keyboardio Atreus 這把鍵盤。在這個月收到了。近八年來一直都只用 HHKB,就算有想要換到其他鍵盤,也是一直都沒看到更出色的選項,頂多就是與 HHKB 平分秋色。前幾年注意到有 40% 鍵盤這種產品後,有想試試的念頭。但一直以來這種產品於網路上只能買半成品,買回來後得自行組裝很多部份,又多為高單價。結果一直都未能決定倒底要不要買。

這支 Keyboardio Atreus 鍵盤一來已經是成品了,二來單價不高,三來,它的鍵面是完全能讓使用者徹底修改的,就算一開始用不習慣,也能試著將其改造成能符合我習慣的模樣(吧)。就是這三個理由,讓我決定參加募資預購。選購的樣式是無印、茶軸。

拿到之後,花了三天左右在習慣與調整。不得不說,這把 40% 鍵盤真的是有種魔力。不只是因為它小,也是因為它提供了很豐富的選擇度,也就是說,其實它很大(?)

這鍵盤一面共有 44 鍵,分成左右對稱的兩側,一側 22 鍵,每顆鍵都一樣大。其韌體為 Kaleidoscope,是 keyboardio 自產的開源韌體,提供以下能力:

  1. 十組鍵面
  2. 鍵面切換模式有 lock 與 shift 兩種
  3. 字鍵能兼為變換鍵
  4. 能定義巨集
  5. 能送出任意 key code,相容於未來各種鍵盤
  6. 能模擬滑鼠
  7. plugins

另有一名為 Chrysalis 之開源軟體,是用來修改此鍵盤之鍵面的,也是 keyboardio 自產。這軟體還可用來修改另一支名為 Keyboardio Model01 的鍵盤。

字鍵能兼變換鍵這個功能,與 Karabiner-Elements 提供的能力重疊了,不過兩者支援度並不完同樣。透過 Chrysalis,可讓 atreus 上的每個鍵都兼任變換鍵,雖說如此但似乎有些限制。Chrysalis UI 刻意不讓使用者能設定一鍵同時為 $ (即 shift 4) 且兼為變換鍵。任何需要按 shift 才能打出的符號,就無法與變換鍵同存在於同一鍵位上。也就是說無法讓 Cmd 與 { 共存於同一鍵。

雖然很想把原本設在 HHKB 上的 shift parens 與 cmd bracket 的兩項設定重新設在 Atreus 鍵盤韌體內,但目前看來,似乎無法只靠鍵盤韌體本身就取代 Karabiner-Element,不知能否透過修改韌體後來達成。

話說回來,Atreus 鍵盤一面只有 44 鍵,再怎麼說,都無法避免使用變換鍵來換層,感覺起來,要到完整實用程度,也必需記憶兩、三層鍵面,也就是至少與 60% 鍵盤差不多鍵數的程度。畢竟,總不能讓某些有用到的符號變成打不出來吧。既然如此,不把所有符號全塞在第一面,而是適當而有規律地分散到不同鍵面去,使記憶鍵位這件事更加容易,或許是比較不錯的安排方式。

又或者,應該依工作模式分別。替寫程式專門設計一鍵面,再替寫文件設計不同的鍵面。使兩種工作模式時,按變換鍵之次數能最少。或許也是種值得嘗試的策略。

目前在基本使用上算是習慣了,但仍不斷地在調整第一鍵面上各變換鍵的位置。主要是最底下那排。把空白、刪除、變換鍵全交給大姆指似乎會我讓我大為困惑。特別是在需要按各種 Emacs 組合鍵時。也因此,我也試著把某兩個鍵直接設為 M-xC-x,但還在評估這是否值得一直留著。

另一方面,由於鍵盤上只有四排,無法直接輸入數字,因此像 C-x 1 (delete-other-window) 之打鍵就變成必需要多按一個變換鍵,對於我這長年 Emacs 使用者而言實在太為痛苦。於是我在 globa key map 上將 C-x ,delete-other-window 綁在一起。至少,在 Atreus 上按這組組合鍵時手指之移動與在 HHKB 上相同。這樣就符合自已這二十年來養成的肌肉記憶。

一來要讓打鍵方便、二來要讓輸出能力完備、三來要避免大規模地違反長年來既有的肌肉記憶。要打造可以懶懶打字且有高輸出效率的人機界面,還真是難啊。