# Ergodox 鍵位分享

有很多的人在買了 Ergodox 類的雙手分離式後,最一開始遇到的困難通常會是不知道鍵位配置要怎麼設定才好,所以今天這篇文章想要來跟大家分享我的 Ergodox 鍵位配置。

# 使用情境說明

TIP

在這邊想先給大家一個概念,像這種可以自定義鍵位的鍵盤最大的好處就是他可以非常高度的客製化來達到最適合你使用的情境,所以並沒有一個適合任何人,任何作業系統的最好鍵位,但我們可以參考其他人的鍵位,根據自己的使用情境,一步一步慢慢修改他,來使得你在使用鍵盤的是會越來越輕鬆。

首先來描述我自己,然後我們根據我自己的特質,來解釋為什麼我的鍵位配置是這樣。我是一個

  • 軟體開發工程師
  • 開發與使用純文字介面的程式居多
  • 前端等 GUI 界面開發也有但相對少
  • 使用 vim
  • 使用 MacOS 作為日常操作,Linux 僅使用 terminal 操作,Windows 幾乎沒有使用

# 鍵位配置

有了以上幾點假設以後,接下來我的鍵位配置就會看到是以 MacOS 和 terminal 使用為主,並且配合 vim 而有一些快捷鍵。然後我的鍵位配置基本上只需要兩層

layer 0:

layer 1:

TIP

對於沒使用過 TMK,QMK 的朋友可能沒有 layer 的概念,我簡單解釋一下。Layer 在這些韌體中,你可以透過一些特殊設置的按鍵,在按下去後,整把鍵盤的鍵位定義就會變成那一層。例如我本來在 layer 0 的 h,j,k,l 按鍵位置,本來按下去電腦就會收到按下字母 h,j,k,l 這四顆按鍵。但如果我透過按下某些按鍵,跳到了 layer 1,對照一下上圖,則這四顆按鍵則會變成是方向鍵的左,下,上,右 。另外就是 layer 1 會看到很多倒三角形,這些倒三角形則是指會套用該顆按鍵在前一層的設定,在 TMK 和 QMK 是稱為 transparent (透明) 的按鍵。

# 設計的概念

這套鍵位設計主要是基於下面幾個要求與特點

  • 要善用大拇指
    • 大拇指很有力氣,適合比較長時間壓住按鍵
    • 但大拇指不像其他四根指頭,適合按很多按鍵
  • 減輕小指負擔
    • 小指是整隻手最沒力氣的
    • 減少小指要去長時間按壓 modifier key (shift, ctrl 等等)
  • 減少整個手掌的移動
    • 例如為了要按上下左右的移動
    • 為了要按 enter 而要折手腕

針對上面這些描述,我們就來詳細的解釋鍵位的擺放

# 中央區域

在中央區域我目前還是維持 QWERTY 的配置,所以這個區域除了因為 Ergodox 不同排之間不是交錯排列外,和一般鍵盤是相同的。

# 拇指區域

在拇指區域,我從左手由左到右開始說起。

# space

這是因為原來 space 我就是用拇指去按的,只不過我現在全部交由左手的拇指去處理。

# cmd

因為我使用的是 mac,而我基本上在原來 macbook 上面的鍵盤也都是用左手去按 cmd 來執行像是複製 (cmd + c),貼上 (cmd + v),全選 (cmd + a) 等等要由 cmd 開始觸發的按鍵。

# left shift

最早以前我在使用一般鍵盤時其實只有使用左手的小拇指去壓 shift,然後我不會使用 capslock 來切換大小寫。因此如果要連續打幾個大寫字母的話,我就一定要壓住 shift 來執行。也因為這樣他符合 "需要壓住" 這個特性,所以我讓拇指來執行,然後在我自己鍵位演變的過程中,剛好這個位置還有空,也不會有需要 space + shift 這種按鍵的需求,所以我就讓左手的拇指去壓住 shift。因為左手拇指去壓 shift,所以小指就少了一個重擔。

雖然前面有說到不會有 shift + space 這種組合,但是會有 shift + cmd 這種組合鍵出現,如果遇上這種狀況,我則會用其他的 shift 鍵來配合,後面會做介紹。

左手介紹完後,接者來介紹右手。右手我則從右到左開始講起

# Enter

前面有說到,正是因為我不能接受要折手腕去按 enter,所以我就讓我的右手拇指去按 enter。經過這樣的設定以後,我就不需要折右手手腕去按 enter 了。

# TT [1]

這個 TT [1] 就是當我按住的時候,會把鍵位切到 layer 1。那我在 layer 1 擺放了些什麼呢?

我在 layer 1 唯一有修改的就是右手本來的

  • H, J, K, L 按鍵變成方向鍵
    如此一來我就可以用熟悉的 vim 的上下左右在任何一個程式中,而且也不必把整隻手移動到傳統鍵盤的右下角來操作。而且如果使用上下左右的話,在網頁瀏覽器裡面其實就可以執行稍微地往下滾動和往上滾動。

  • ; 的按鍵變成 delete
    如此一來我也不用大幅移動右手去按最右上方的刪除鍵。

  • U, I 變成 page up, page down
    平常我們好像很少用到 page up 和 page down,一部分原因是它藏在鍵盤要大幅移動手才能按到的地方。在我把他移動到這邊之後,我就變得非常容易按到,而他最方便的就是我可以快速的捲動網頁的上下。通常我在打 code,有需要查詢網頁的文件時或者看 linux 的 less, man 時,我只要用 cmd + tab 或是 alfred 等等就就可以快速的切換到不同的視窗,然後配上 page up 和 page down,聯合前面的 J, K 變成方向鍵,我就可以先大幅在網頁中捲動,然後在接近目標的區塊時再用方向鍵來慢慢查看。

  • P, ' 的按鍵變成 [ 和 ]
    這是因為上面的 Ergodox 在 layer 0 其實已經擺放不下按鍵,所以我把它們放到下一層。我個人在打 code 的時候,習慣在打一對的括弧 (小 (), 中 [], 大{}) 都是一次一起打完,然後再移動輸入的游標回去括弧裡面再把內容輸入,避免自己忘記少打。然後在傳統的鍵盤中這種一對的括弧都是緊鄰在一起的,所以使得我習慣會用兩隻連著的手指打完。然後之所以 ] 的位置比 [ 往下一排,是因為如果放同一排,我的右手小指要帶動整隻右手

    如果改到下一排,這樣我的右手小指跟手不怎麼需要動就可以按

    這樣會更舒服。而且 [] 這兩個按鍵比較特別,在 macOS 裡面是可以用這兩個按鍵配合 modifier key 就在不同的 tab 之間切換 (Safari, Chrome, Terminal, iTerm 等等,數不勝數),所以我把他這樣擺放。

再來是 F1 到 F10 之間,剛剛好就 map 回數字鍵 1 ~ 10,這是因為我在裝一些桌機的時候才會按到這些按鍵,因此我也保留,並且放在比較容易記憶和理解的位置 。而左手還有一個 ~,的符號,這是因為最早的時候我是用 kbparadise 的鍵盤,他們將這個符號擺放在 Fn 層的左手 F 按鍵位置,我已經用習慣了所以就延續下來。

所以透過這個 TT [1],我就達到我的右手不必大幅移動。然後這個 TT 其實是 Tap Taggle,意思是快速按下兩下 (我自己的設定是兩下),他就會切換並鎖定在 layer 1,即便不壓住他也還是會維持在 layer 1,而如果採用長壓的話,壓下去的時候會跳到 layer 1 ,但是一但放開,就會立刻跳回 layer 0。因為這樣的設計,所以平時我在打 code 的時候很容易就可以切換上下左右,page up, page down 和 delete,而如果我在跟別人討論東西,或者需要慢慢的觀看文件時,可以快按兩下改成鎖定,就不必讓大拇指一直壓住 TT [1] 的按鍵。

# Esc

會在這個位置放 Esc 是因為我在使用 vim 的時候,如果要從編輯的 insert 切回到 normal mode 時,直接用右手拇指按一下就可以離開了。

然後你會問其他拇指區的按鍵呢? 那幾顆按鍵在我平常手擺放的位置也很難按到,因此我會擺一些還是需要按,但不是在一般文字編輯會需要按的按鍵,像是 F11 等等。F11 在 macOS 中就等於是手在觸控板上面四指往外滑,會把所有的視窗都挪開,露出桌面,如此我就可以快速存取桌面的檔案。

# 最後一排

最後一排我其實平常在編輯文字的時候,也只會用到食指排的按鍵,其他按鍵我我擺放一些偶爾會需要按,但不會在編輯文字時要按的按鍵。像是我就擺放了音量放大縮小,播放用的前後暫停等,有人也擺放了 macOS 的螢幕亮度等等按鍵。

而我最常按的是左手的 alt 按鍵,因為我會用 alt + space,也就是全部用左手去叫出 alfred 來用。

# 小指區

前面有提到,我盡量的減輕小指區的工作,因此其實我真正小拇指會按到的按鍵只有

左手最上面的 Esc 按鍵被右手大拇指的 Esc 取代掉,左手最下面的 shift 則被左手的大拇指取代掉;右手最上面的 backsapce 被 layer 1 的 backspace 取代掉,而右手最下面的 shift 則我從來不會按,或者你也可以說功能也被左手拇指取代掉了。

因此我在最後這一區只保留了這四個按鍵,然後基本上也是按照原來傳統鍵盤擺放的按鍵,只是因為我自己不使用 capslock,所以左手那邊就擺放了一個 ctrl。

# 食指延伸區

這邊其實我最常按的也是那兩顆比較長的按鍵

最上面那顆按鍵有必要時也會去按,但在一般文字編輯中也不太會按到。我們一樣從左手開始介紹起

# ` (按住 shift 時是 ~)

這顆按鍵比較少按,通常會用到是在編輯 python 和 golang 裡面長的 string,以及有時候 terminal 會用到但因為使用頻率很低,所以我用下來並沒有特別想把他換掉。

# Left Ctrl

這顆按鍵是我如果要按 ctrl 的時後第一首選,像是我如果要需要在 macOS 不同的桌面之間切換的時候,因為需要長時間壓住然後再配合左右的方向鍵,所以我一定會用這顆 ctrl。但如果沒辦法的時候,我還是會用左手的小指去按 ctrl,像是如果要在 terminal 裡面送出 ctrl + c 強制結束 process,我則會用小指去按小指區的 ctrl 比較舒服。這也是我認為還可以改進的地方

# Left Shift

這顆按鍵最主要是前面提到如果有需要按下 cmd + shift 時候的按鍵,因為左手拇指已經在按 cmd,沒辦法再去按 shift,所以我多放了一顆 shift 按鍵在這邊,就可以透過左手的拇指按 cmd,食指按 shift 來達成這個組合鍵。然後前面提到的 [ 和 ] 按鍵配合 cmd + shift,就可以做到在不同的 tab 之間切換,就是透過按下這邊的 shift 達成的。

介紹完左手,接下來換右手的部分

# 最上面的 + (按住 shift 時是 =)

其實這顆按鍵不會按,因此不特別介紹

# + (按住 shift 時是 =)

這顆按鍵則是平時寫 code 的時候就會非常常按的 + 號和 = 號。在不按著 shift 的時候就是 = 號,然後左手拇指按 shift 就是 + 號。

# - (按住 shift 時是 _)

這顆按鍵也是平時寫 code 的時候就會常常按的 - 和 _ 號碼。在不按著 shift 的時候就是 - 號,也是注音輸入法裡面 ㄦ,按住 shift 以後就是 _,底線式的駝峰式命名也會用到。

# 結語

以上就是我個人在使用 macOS 下,平常配 vim 打 code 所使用的配置,然後還是要再強調一次,沒有一個最好的鍵位配置,只有最適合你的鍵位配置。而怎麼得到這樣的鍵位配置,是需要時間和嘗試來得到的,但你也可以先從別人的鍵位配置開始改起,或者你也可以參考別人的鍵位配置解說,擷取其中適合你的部分,來一步一步改進你自己的鍵盤。畢竟這把是你的鍵盤,只有你用得開心舒服,才是最重要的,這也是我認為 QMK 這樣的韌體最大的價值了。