長らくキー配列についてはKeyball61のオレオレマッピングを語るの通りでしたが、加えてhome row modsを導入しました。
home row modsは、ホームポジションのasdf
(左)とjkl;
(右)を押しっぱなしたときに(hold)、Ctrl
やShift
などの修飾キーとして機能させる方法論です。
配列やキー数が特殊なキーボードであっても、ホームポジションのキーがないことは少ないので、特定のキーボードにロックインされないところが魅力です。
Karabiner-Elementsを使えばmacbookのキーボードでも実現できて、外出時の生産性を下げずにすむのでは?と思って、まずはKeyball 61で試してみることにしました。
home row modsのページでは、GUI
(Win
/Cmd
)、Alt
(Option
/Meta
)、Shift
、Ctrl
の順に並べる方法が一般的と語っています(GASC)。しかし、私は紹介されている例のいずれにも該当しないASGCを採用することにしました。
a
->Alt
- イニシャルが共通で覚えやすい
Alt
キーは利用頻度が低いので小指に割り当てても負担が低い
s
->Shift
- イニシャルが共通で覚えやすい
d
->GUI
- macOSを左手単体で操作したくなったとき
GUI
+a
/s
/f
は使うが、d
を使わないので干渉しにくい
- macOSを左手単体で操作したくなったとき
f
->Ctrl
- 頻繁に使うキーなので負担に強い指がいい
といったことを勘案してのものです。
なお、私はSandSという、スペースキーを長押ししたらShift
扱いする方法を愛用しているので、実質的にはs
->Shift
はほぼ用無しです。もし、Shift+Space
をしたくなったら活躍するかも。
Emacsを使いたくなったら、Altの出番が増えるかもしれないしSAGCの方がいいかもなとも思い始めてます。
配列の他にhome row modsを導入するにあたって、気を使う点は、どんな状況で長押しを修飾キー判定させるかです。
Keyball 61のファームウェアであるqmkの場合は、実に多様な設定を組み合わせられます(https://github.com/qmk/qmk_firmware/blob/master/docs/tap_hold.md)。代表的なものは以下です。
TAPPING_TERM
- 一定時間(ms)を過ぎたら、長押しとみなす
PERMISSIVE_HOLD
TAPPING_TERM
経過中でも、他のキーを押して離すと、長押し判定する
HOLD_ON_OTHER_KEY_PRESS
TAPPING_TERM
経過中に、他のキーを押すと、長押し判定する
さらにこれらは、キー単位で設定する方法も用意されています。
私は友人のアドバイスを受けて、TAPPING_TERM
を160ms、PERMISSIVE_HOLD
を有効にしました。
Keyballの場合は、info.json
に以下のような設定を追加すればOKです(https://github.com/atusy/keyball/blob/5852d1e760382d86719d29388b39d65dd91dd0cc/qmk_firmware/keyboards/keyball/keyball61/info.json?plain=1#L10-L11)。
{
"tapping": {
"term": 160,
"permissive_hold": true
}
}
今のところこれでほぼ困ることなく、このブログも書いています。
HOLD_ON_OTHER_KEY_PRESS
はhome row modsには適用していません。
一点、これは自分の指使いの問題だと思いますが、ときどきa
が意図せず長押し判定されることがあります。たぶん小指の運指能力が低くて、キー離れが悪いのだと思います。
TAPPING_TERM_BY_KEY
で例外設定をしてもいいのですが、いったんはこのまま訓練を積んでみようと思います。
ENJOY