yamy

yamyで検索してもProject Web of Yet Another Mado tsukai no Yuutsu on OSDN Web spaceが見つかりにくい! というわけで少しでもPageRankを上げるべく、できるだけyamyという単語を使ってみよう。
ちょっと前に買ったノートPCにyamyを入れてみているのだが、どうもたまにCtrlが押しっぱなしであるかのように振舞うことがあって困っていた。調べてみたところ、英数キーの不具合に起因することがわかった。
どうもyamyでは「英数(CapsLock)」「半角・全角」「ひらがな」のフックがまだちゃんとできてないらしい。自作の*1.mayuファイルを使っていたために問題が生じたようだ。私の設定では、英数キーをCtrlに変換しているのみで、半角/全角、ひらがなキーはフックしていない。
これらのキーを使う場合は、現状ではyamy本体に同梱のworkaround.regをレジストリに書き込んだ上で、workaround.mayuの差分を適用した.mayuファイルを使えばいい……らしい。
workaround.regの内容はこう。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,04,00,00,00,29,e0,29,00,3a,e0,3a,00,70,e0,70,00,00,00,00,00

見てみると、"HKEY_CURRENT_USER\Keyboard Layout"には"Scancode Map"というエントリはないようなので、特にバックアップを取る必要はない。不要になったら、このエントリだけ消せばよいだろう。
.mayuにworkaround.mayuのそれっぽい部分を抜き出して書き加え、ログインしなおしてScancode Mapを有効化してみると、英数キーのCtrl化には成功したが、半角/全角キーによるIME onが働かなくなっていた。
"Scancode Map"でググってみると、仕様の解説が見つかった。
これを参考に、Scancode Mapを書き換えてみる。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,3a,e0,3a,00,00,00,00,00

英数キー(0x003A)にのみプレフィクスを付けて0xE03A、半角/全角・ひらがなキーには何もしない。
再びログオフ→ログイン。今度はうまくいった。


ReadMeくらいちゃんと読まないとダメっすね……w
よく見るとDirectInputには対応しない(ユーザモードでのフックなので機能しない)って書いてあるし、DirectX系のゲームじゃ使えないんだろうなぁ。
ゲームで使おうと思ったら、やはり本家mayuを使わねばならないか……。

*1:厳密には自作ではなく、ベースは借り物。改造しまくってるけど。