タイトル画像

オレオレkeyd自慢

こんにちは。LinuxでCapsLockを活用しまくった結果学校のPCで定期的に誤爆するようになってしまった静カニです。

ということで、そのCapsLock活かしまくり設定を晒していきたいと思います…と思いましたが、 dotfilesで公開しているので晒すというのはなんか変ですね。 まあとにかく書いていきます。

全体像

# /etc/keyd/default.conf

[ids]
*

[main]
capslock = overload(capslock_layer, esc)

[capslock_layer:S]
b = backspace
n = delete
h = left
j = down
k = up
l = right
o = enter

てき↑とう↓かいせつ

keydを使ってます。

あとはセクションごとに解説しておきます。

[ids]

対象のキーボードとかを指定するやつらしいです。 まあ私はノートPCにそのまま付いているものを使っているので特段指定する必要はありません。 というわけでワイルドカードです。

[main]

こいつが勝手に適用されるやつです。

capslockで、capslockに対してリマップすることを示しています。

overloadというのは、単押しで第二引数のキー、 それ以外のキーと組み合わせることで第一引数のlayerにする、みたいな感じです。 layerは組み合わせるときに便利なやつぐらいに思っています。詳細は他の方の記事でも見てください。

単押しでescになるようにしているのは、 元々半角全角キーに近いため<Plug>(skkeleton_toggle)<Esc>にマッピングしていたのですが、 普通にibus-skkの半角全角と被って誤爆が多かったのと、 アルファベットを打つ度にtoggleしないといけないのでなるべくホームポジションから近い方がいいんですよね。 一瞬単押しではなく後述の[capslock_layer:S]の部分にi = escと書いていたのですが、 やっぱり単押しでできると段違いに楽なんですよね。

[capslock_layer:S]

とりあえずcapslock_layerの部分はもちろんさっきのoverloadのところのlayerです。 で、:Sというのは、特に指定されてなければShiftキーの機能を受け継ぐ、みたいなやつです。

でこのあと延々と組み合わせが続いていきます。

まずはbでBackSpaceキーです。なんでBackSpaceキーってこんなにもホームポジションから遠いんでしょうか。

あとbの隣りだかなという理由だけでnにDeleteが入ってきました。 BackSpaceを入れた当初はまあ別にいいかなと思って入れていなかったのですが、 意外と自分の需要があったので追加しました。

でHJKLで矢印キーです。やっぱりInsertでもHJKL移動したいんですよね。

あとEnter押すときのあの音なくなりますけど、 やっぱりホームポジションには近ければ近いほどいいので、oでEnterにしてます。 oにした理由はVimのnormalが新しい行を挿入してInsertだったので、 イメージ的に近しい部分があったからだったと思います。

共通点に気付いた人いるかな?

さて、ここまで(主にさっきのcapslock_layerのあたり)を読んでいて気付いたことはありますか?

それは、マッピング対象のキーが(CapsLockは例外)右手対象になっていることです。 多分Deleteキーでdにしろよと思った人も多いことと思いますが、 それは右手で完結させるためなんですよね。

※Dvorak配列は考えないものとし、QWERTY配列とする

じゃあなんで右手なの、という話ですが、それは単にCapsLockが左にあるからです。 例えばCapsLock+Dはできなくもないですが多分ホームポジションから外れた方がラクにできるんですよね。 ここであまりホームポジションから外れたくないんです。 ただそれだけの話でした。

唯一の問題点

ほ か の か ん き ょ う で ご ば く す る ☆