T-Code for AHK (AutoHotKey)


AutoHotKeyというキーカスタマイズツール上で動作するT-code入力法です. 最低限のことしかやっていません. バグは連絡頂ければ対応するかもしれませんが, 改良等はあまりする気はありません (一番下の行参照).

インストール

  1. こちらからAutoHotKey_Lをインストール.ただしUnicodeで.
  2. tc.ahkを好きな場所に置く
  3. アイコンもそのまま同じフォルダに入れる (icon1,icon2)
  4. tc.ahkをダブルクリックする
  5. T-Codeモードは ^\ でトグルする.
今となっては,ほとんど書き直してしまいましたが,ベースは こちらを参考にしました.ありがとうございました.

AutoHotKeyに関する幾つかのメモ

●メモ1:
文字の送信方法は,

・Send
・SendMessage, 0x286	これはWM_IME_CHAR
・SendMessage, 0x102	これはWM_CHAR

の3つがある.Notepad, Word, Excel, PowerPoint, FireFoxを調査.
WordはいいけどPPTは駄目とかいろいろある.結論としては,Sendが
何にでも使える.

現状で残されたアプリ依存の部分:

FireFox以外では,IMEオフの状態でひらがな (in unicode) をいろいろ送って,
変換キー {vk1Csc079} を送ると変換してくれる.(その後はIMEオンの状態に
なる.)

一方,FireFoxでは,まず変換キーを送ってIMEオンにしてからでないと変換し
てくれない.送ったひらがなが単に挿入されるだけ.

FireFox以外の方が便利だが,元々のIMEの動作をよく考えると,FireFoxの方
が普通のように思われる.

^\でT-Codeモードに入ったときに,まず変換キーを送っているので,この差異
は隠蔽されているはず.

また,IME_ONの方法は,アプリによってうまく行かない場合もあるという指摘
があるが,今のところ問題ないので,頂きものをそのまま使っている.

FireFoxとPPTだけ特別扱いしていた頃のコード:

ControlGetFocus, control, A
msgnum := 0x286		; 0x286 WM_IME_CHAR
if WinActive("ahk_class MozillaWindowClass") or WinActive("ahk_class PPTFrameClass") {
  msgnum := 0x102		; 0x102 WM_CHAR
}
SendMessage, msgnum, uni, 0, %control%, A

●メモ2:
*a:: と書くと,A_ThisHotKeyは "*a" になる.^aや+aではない.後で自分で
判定しないといけない.ひどい.

●メモ3:
1::
+1::
!::
上の組合せでは,必ず"!"が呼ばれる.
"!::"を消すと"+1::"が呼ばれる.
つまり,同じ組合せで,2回ホットキーを呼ばないようになっている.

●メモ4:
a::
A::
という組合せは,同じホットキーを2回指定したというエラーになる.

●メモ5:
*::
という書き方は,エラーにはならないが発火もしない.

●メモ6:
あるアプリのahk_class名を調べるには,WindowSpyを使う.

●メモ7:
評価するには%で挟む.評価対象の場所とそうでない場所は,やってみるしか
ない.疲れる.

●メモ8:
Send {U+nnnn} のnnnnは16進.変数に入っている整数は,10進と16進が区別さ
れているらしい.または,文字列がそのまま入っていて,毎回,その場で解釈
し直しているのかもしれない.ともかく,nnnnの部分に入る数値は16進で入れ
ないといけない.ひどい.

●メモ9:
AutoHotKeyに関連する日本語のページの情報はいろいろ参考になったが,かな
り古い.autohotkey_l だと配列もオブジェクト指向も入っている.

●メモ:
さんざん世話になっておきながらで申し訳ないが,言語としては相当にひどい.
できればもういじりたくないので,改良する気はないです.
inserted by FC2 system