blechmusikの日記

キー・カスタマイズ・ソフトウェア "DvorakJ" の覚え書きをはじめとして様々なことを書いています。

日本語入力時に、 [左 Alt] を [無変換] に変更する

software / キーカスタマイズソフト 2にて出された、AutoHotkeyのお題に回答してみる。なるほど、台湾キーボードの 左 Alt無変換 に変更したいようだ。無変換 を使用するのは日本語を入力するときだけだろう。これより、日本語入力中に限り 左 Alt無変換 に変更するスクリプトを書くことにする。日本語入力中かどうかを判定するには、お馴染みの IME.ahk を使用するだけでよい。以上より、つぎのようなAutoHotkey_L 用スクリプトを作成した。

;;; software / キーカスタマイズソフト 2
;;; http://hibari.2ch.net/test/read.cgi/software/1239109333/330
;;; > AutoHotkeyを、台湾キーボードで使ってます。 
;;; > (中略)
;;; > んで逆行するようだけど、左アルトを、無変換キーにしたいです。


;;; AutoHotkey_L <http://www.autohotkey.net/~Lexikos/AutoHotkey_L/>

;;; 日本語入力ならば
;;; LALT を 無変換に変更する

#If ( IME_GET() )
LAlt::
	send,{vk1Dsc07B}
return


;;; IME.ahk
;;; http://www6.atwiki.jp/eamat/pub/MyScript/IME20091203.zip
IME_GET(WinTitle="A")  {
    VarSetCapacity(stGTI, 48, 0)
    NumPut(48, stGTI,  0, "UInt")   ;	DWORD   cbSize;
	hwndFocus := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI)
	             ? NumGet(stGTI,12,"UInt") : WinExist(WinTitle)

    return DllCall("SendMessageW"
          , UInt, DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwndFocus)
          , UInt, 0x0283  ;Message : WM_IME_CONTROL
          ,  Int, 0x0005  ;wParam  : IMC_GETOPENSTATUS
          ,  Int, 0)      ;lParam  : 0
}