今回はyamyを使って モディファイヤ(ControlやShift等)も使ったキー割り当ての方法と、 モディファイヤ自体の変更方法について。
モディファイヤを使ったキー割り当て
Ref: 窓使いの憂鬱のマニュアルの モディファイヤキー割り当ての変更
例えばControl
+a
と押した時にb
と出力させたい場合は
key C-a = b
の様に、キーの前にC-
、A-
、S-
、W-
とつけるとそれぞれ
Control
、Alt
、Shift
、Windows
キーと一緒に押す、
と言う意味になります。
(Windowsキーは上記マニュアルにはありませんがyamyの104/106.mayuでは定義されています。)
複数与える事も可能でC-A-a
とすればControl
+Alt
+a
と押す意味になります。
逆に、Control
は押されてない状態でa
を押す、とする場合には~C-a
と~
をモディファイヤの前に付けます。
さらに、押されていても押されていなくても同様の割り当てを行いたいときは*
をつけます。
key C-a = b # Ctrl+a -> b, a -> a
key ~C-a = b # Ctrl+a -> Ctrl-a, a -> b
key *C-a = b # Ctrl+a -> b, a -> b
明示的に書かれていないモディファイヤについては、
デフォルトで定義されているものが使われて、
上記の4つに関しては~C-~A-~S-~W-
と全て押されていない時に限り、
になります。
その他のモディファイヤについては上記マニュアルを参照してください。
(他にもNumLock
状態、CapsLock
状態等が扱えます。)
もし、明示的に書くモディファイヤ以外はどのような状態でも良い、というのであれば、
key C-a = b # Ctrl+a -> b, a -> a, Ctrl+Shift+a -> Ctrl+Shift+a
key C-*a = b # Ctrl+a -> b, a -> a, Ctrl+Shift+a -> b
の様に、*
をキーの直前に持ってくることで
明示されたControl
以外の状態は何でも良いことにできます。
また、押されたモディファイヤをそのまま割り当てキーにも伝えたいときは
key S-*C-a = S-*C-b
# a->a, Ctrl+a -> Ctrl+a, Shift+Ctrl+a -> Shift+Ctrl+b
# Shift+a -> Shift+b, Alt+Shift+a -> Alt+Shit+a
と言った感じ*
を両辺の同じモディファイヤに付けることで、そのモディファイヤをそのまま伝える事が出来ます。
さらに
key C-*a = C-*b
# a->a, Ctrl+a -> Ctrl+b, Shift+Ctrl+a -> Shift+Ctrl+b
# Shift+a -> Shift+a, Alt+Shift+a -> Alt+Shit+a
の様に、両辺のキー自体に*
をつけると、明示されたモディファイヤ以外全てがそのまま伝えられます。
従って、
key *a = *b
とすれば、a
は完全にb
と同じ働きをするようになります。
モディファイヤの変更
モディファイヤの変更については窓使いの憂鬱の上記マニュアル に詳しくあるので、取り敢えず自分で使っている設定を
# Thumb Shift
#mod shift += !!!Space
# CapsLock to Control
mod Control += CapsLock
key *CapsLock = *LControl
mod Control += E0CapsLock
key *E0CapsLock = *LControl
# Left Control to CapsLock
#key *LCtrl = $CapsLock
# NumLock to CapsLock
key *NumLock = $CapsLock
# Apps to CapsLock
key *Apps = $CapsLock
# Right Windows Button to CapsLock
key *RWin = $CapsLock
# Left Windows Button to CapsLock
#key LWin =
#key *LWin = $CapsLock
はずせないのはCapsLock
をControl
として使っているところです。
Control
は頻繁に使う上、CapsLock
はまず使いません。
Control
の元の位置は、どうやっても普通にキーボードを売っていたら小指でも押せないと思うのですが…
(ちょっと手を動かしてでも直ぐに小指がおかしくなりそうに…)
まず、
mod Control += CapsLock
で、CapsLock
キーをControl
モディファイヤとして使える様に追加登録しています。
ただ、このままだと、CapsLock
自体はそのキーとしての機能を持っているので、
CapsLock
+a
と押すと、CapsLock
を押した上で、Control
+a
を押した、
と解釈されてしまい、CapsLockの呪いにかかります。
そこでキー自体もConrol
に変更しておきます。
上記にあるように*
を両方に使って
key *CapsLock = *LControl
E0CapsLock
は前回あったNLSキーの問題で、escapeNLSKeys=1
と設定した場合に設定されるキーです
(逆にこの時、CapsLock
の方はキーに割り当てられてないので、
自分の現在の設定ではE0CapsLock
だけが意味をなしてます)。
もしくは最初に
mod Control += !CapsLock
とすれば、真のモディファイヤ
と呼ばれ、CapsLock
はモディファイヤ
としての働き以外を一切しなくなるので、Control
を押した時、
といったイベントを使うソフト等がない場合にはこれでもOKです。
その他の設定ですが、最初にコメントアウトしてあるのは 親指シフトをしたい場合で、
mod shift += !!!Space
とすると、まずはSpace
にShift
としてのモディファイヤ機能を与えるわけですが、
!!
または!!!
を加えることでOne Shotモディファイヤ
と呼ばれる機能を持ち、
Space
押して直ぐに離した場合はSpace
そのものを、
Space
+a
を押すと大文字A
を出力します。
!!
と!!!
の違いは、Space
を長押しした時、!!
の場合は
Space
が離されるか他のキーが押されるのを待ち続けますが、
!!!
の場合は、一定時間押し続けると普通にSpace
を押した時のように
Space
が繰り返し入力されていく様に出来ます。
Space
自体は普通に使いたいときは!!!
を使ったほうがより自然に使えるかと。
後は、適当に余り使わないボタンのアプリケーションキー
(Apps
)
をCapsLock
に当てたり、NumLock
やRWin
なども当てたりしてますが、
とりあえず、と言う感じで。