rcmdnk's blog

20130723_AutoHotKey_200_200

ちょっと前にAlt(Cmd)とControlの交換をしてみましたが、 Windowsではyamyでの変更が少し思い通りに 行かない所があって、他を検討していました。

結局、おそらく一番使われてるであろうAutoHotkeyに落ち着いて、 ちょっと使ってみたらかなり色々な事ができて予想以上でした。

Sponsored Links

AutoHotkeyとAutoHotkey_L

現在、AutoHotkeyのページの Downloadからダウンロード出来るものはAutoHotkey_Lとなってます。 AutoHotkey_LAutoHotkeyの派生版みたいなものらしく、 マルチバイト文字に対応していたりするようです 1 2

さらに、AutoHotkey_Lをインストールする時に、ANSI版かUnicode版かを 聞かれますが、ANSI版の方が以前のAutoHotkeyとの互換性が高い一方、 日本語の取り扱いはUnicodeの方が便利そう。

自分的には以前のAutoHotkeyも使っていないし 現状日本語使っていないのでどちらでも良いのですが、 取り敢えずUnicode版を入れてあります 3

CapsLockの扱い

CpasLockについては色々上手くいかない部分があるらしく、 特に日本語OSの場合に問題が起こる様です 4。 英語キーボードならOK、と言う記述も有りましたが、使っている 英語キーボードでも駄目でした。

CapsLock::Ctrl

等とすると例えば

^h::BS

などとしてCtrl-hで一文字削除をどこでも出来る様にすると、 1回押す分にはちゃんと働いている様に見えますが、押し続けて キーリピート状態になるとhが打たれてしまいます。

さらに、暫く使っているとCtrlが押しっぱなしになっている様な状態に なることがありました。

そこで、CpsLockも含め修飾キー関連はKeySwap を使いました。 このソフトはレジストリーを書き換えてキー入力を変更します(設定の反映に再起動が必要)。

yamyだと、これより上流で変更を行っているらしく、KeySwapで変更したものは yamy起動後には反映されません。

これがAutoHotKeyだとyamyより下流で変更を行っているらしく KeySwap(レジストリー変更)の設定が反映された上でキー設定が出来ます。

yamyとAutoHotKeyは大体同じレベルでの変更を行っているみたいですが 5微妙に違うみたいです。

ということで、KeySwapで

  • CapsLockAlt
  • AltCtrl
  • AltCtrl
  • CtrlAlt

の変更をした上でAutoHotkeyで色々することにしました。

yamyの時に起こっていた問題点

以前書いた 問題点 の様に、Control-[Control-h での問題はKeySwap+AutoHotkeyでは起こっていません。 AltCtrlとしてきちんと使えています。 (レジストリーの変更をしてるのである意味当たり前ですが。)

yamyとAutoHotkeyの比較

基本的にyamyで行う設定は上記のCapsLockや修飾キー以外は すべて移行出来ました。

AutoHotkeyの方が 変数や関数を使うことが出来、 よりプログラムチックに書くことが出来ます。 yamyの場合だと、vimモード的な物を On/Offの変更が出来るロックキーと呼ばれる9つのキー(L0-L9)で 再現してましたが、 AutoHotkeyだと例えばVimMode的な変数1つを用意しておけば この値にNormalなどと与えることで複数の状態を簡単に 作る事が出来ます。

また、Windows機能へのアクセスもより自由にできるので、 ディスプレイのサイズやマウスの位置なども取得出来るし、さらにタスクトレイへのポップアップ表示等も出来ます。

後は何と言ってもまだ開発が行われている(?)ソフトで、 日本限定ソフトで無いので圧倒的に利用者が多く webで拾える情報も非常に多いです。

他のソフト

他にもPythonベースな keyhac と言うものも試しましたが、 キー設定の方法はPython記法なのでなかなかおもしろいのですが、 モード的な状態設定の方法が分からず、断念しました。

まとめ

しばらくはKeySwap+AutoHotkeyで行こうと思います。 いくつかハマった点とかもあるので、 後日別にまとめておきたいと思います。

Sponsored Links
Sponsored Links

« dev版jedi-vimのインストール fatal: Unable to find remote helper for 'https'の対処 »