ティンカラー日記

こなゆき(a.k.a. p-snow)

23 Oct 2024

動作は速く設定はスマート、Linux用キーリマッパkeyd

個人的に Linux のキーリマップまわりの問題は xremap でほぼ解決し、このまま(少なくとも数年は)添い遂げるだろうと思っていました。でも、でも、どうしても抗えない浮気相手がでてきてしまったのです。それが keyd でした。

まず、keyd は早い。レスポンス速度が体感でわかるほど xremap に比べて快適です。そして設定ファイルのフォーマットが秀逸で、きわめて簡潔にリマップ規則を書くことができます。

Emacser にはおなじみの capslock を control とする設定は、

capslock = oneshot(control)

と書けます。はい、シンプルです。

次に、特にSKKユーザに支持されているSandS、spaceを修飾キーとしてはshiftとして、単独ではspaceとして機能させるには、

space = overload(shift, space)

と書きます。ナイス。

それでは capslock を control に割り当てたので、左コントロールは capslock にします。ついでに、修飾キーとして右手ホームポジションまわりを数字キーとして使えるようにしましょう。

left control configuration

leftcontrol = overload(numpad_layer, capslock)

[numpad_layer]

m = 1
, = 2
. = 3
j = 4
k = 5
l = 6
u = 7
i = 8
o = 9
space = 0

これは何をやっているかと言うと、左コントロール押下時に機能する numpadlayer という独自レイヤを定義し、つまり左コントロールを押しているときには、例えば mキー を押すと 1 が入力される設定を施しているのです。

それでは最後に最近の私のお気に入り、Emacs で 'キー(アポストロフィ) をSuperキーとして利用する設定をご紹介します。英字配列キーボードが前提ですが、左手小指をcontrolとして使うので右手小指も修飾キーとして使えばキーバインディングが枯渇せず、かつ打ちやすいのではないかという発想のもとに考えた方法です。

' = overload(apostrophe_layer, ')

[apostrophe_layer:M]

このたった二行で実現できます。レイヤには対応する修飾キーを定義することができて、それが :M の箇所になります。ちなみに M はMetaもしくはSuperの役割を意味します。

Tags: linux keyboard