先前的設定在使用上有時會出現未預期的情況,應該就是按鍵時間的問題。後來在網路上看到這一位作者的設定方式 https://github.com/argenkiwi/kenkyo/blob/main/keyd/components/main.conf
於是修改了Home Row幾個modifier鍵的設定,從單用overloadt改成overloadi+timeout+overloadt2
其中的overloadi是為了避免在快速打字時誤擊,timeout是在連續打字時確保功能,overloadt2是在確保搭配的鍵壓下再放開後Modifier的功能。
經過這些修改,使用上感覺更加穩定,特別是在使用線性軸打字速度很快時,經過這樣修改,不論快速打英文或中文都沒問題。(如果在打中文時出現問題,可以比對中文輸入法的按鍵設定與keyd的設定是否有衝突?)
另外是把";"改為"/",以避開被[navig]定義鎖住後無法用同一個";"鍵自我解除。
以及加了幾個「不需modifier」的組合方式,以複合鍵(同時按下)做為單一鍵使用,這些一樣是為了讓手指不必移動大距離去找按鍵,一直維持在home row附近。
2+3 = esc
w+e = A-left <--這是切換terminator的tabs
x+c = A-tab
c+v = middlemouse
8+9 = backspace
i+o = A-right <--這是切換terminator的tabs
h+u = pageup
b+h = pagedown <--這是因為Alice鍵盤多了一個右手B鍵,如果不是Alice鍵盤就改一下別的組合。
comma+dot = S-C-n <--這是切換terminator分割區
以上的複合鍵在使用線性軸鍵盤時,感覺還蠻順暢,如果是用筆記型電腦本身的鍵盤,反應有點不是很順,可以依據你的鍵盤實際使用習慣,改成更適合手勢的組合。
當然使用keyd這些新規則的按鍵方式,是需要一點時間來記憶跟適應,我相信熟悉這種佈局的按鍵排列之後,會比以往使用傳統式按鍵佈局更順手。
順便一提,keyd是透過kernel層來管理鍵盤,所以可能無法port到別的OS(?),另一個跟keyd類似的是 https://github.com/jtroo/kanata 它可以在Windows或macOS(功能受限)使用,不過它的設定檔不如keyd這麼簡單明瞭、好上手。
以下是 /etc/keyd/default.conf
[ids]
*
[main]
capslock = overload(caps, C-space)
leftshift = overload(shift, M-a)
rightshift = overload(shift, M-f)
rightcontrol = overload(candm, C-f12)
rightalt = layer(rightalt)
leftalt = layer(navig)
2+3 = esc
w+e = A-left
x+c = A-tab
c+v = middlemouse
8+9 = backspace
i+o = A-right
h+u = pageup
b+h = pagedown
comma+dot = S-C-n
a = overloadi(a, timeout(overloadt2(navig, a, 200), 500, a), 125)
s = overloadi(s, timeout(overloadt2(shift, s, 200), 500, s), 125)
d = overloadi(d, timeout(overloadt2(control, d, 200), 500, d), 125)
f = overloadi(f, timeout(overloadt2(meta, f, 200), 500, f), 125)
j = overloadi(j, timeout(overloadt2(meta, j, 200), 500, j), 125)
k = overloadi(k, timeout(overloadt2(control, k, 200), 500, k), 125)
l = overloadi(l, timeout(overloadt2(shift, l, 200), 500, l), 125)
/ = overloadi(/, timeout(overloadt2(rightalt, /, 200), 500, /), 125)
[caps:C]
f = esc
g = `
j = leftmouse
k = middlemouse
l = rightmouse
t = S-C-f
[candm:M]
[navig:A]
layer_indicator = 1
i = up
j = left
k = down
l = right
h = home
' = pagedown
y = backspace
p = pageup
u = delete
; = end
m = mute
, = volumedown
. = volumeup
space = space
[ = A-left
] = A-right
[rightalt:A]
j = toggle(navig)