質問: Windows上でMacのように別の言語で入力をしていても 「かな」を押せば日本語入力の`ひらがな`モードになり、 「英数」を押せば日本語入力の`英数`モードになるような設定を AutoHotkeyで行いたいのですがGoogleIMEをオフにして英数入力にすることができません。 `かな`の代わりに`カタカナひらがな`キーを`英数`の代わりに`無変換`キーを使用しています。 `IME.ahk`をこちらから取得してきて`#Include`を行い ``` #Include IME.ahk #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. #Warn ; Enable warnings to assist with detecting common errors. #InstallKeybdHook SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. ; Thai: 0x41E041E ; Japanese: 0x4110411 vk1Csc079:: PostMessage, 0x50, 0, 0x41E041E,, A ; 0x50 is WM_INPUTLANGCHANGEREQUEST Return vkFFsc070:: PostMessage, 0x50, 0, 0x4110411,, A ; 0x50 is WM_INPUTLANGCHANGEREQUEST IME_SET(1) Return vkEBsc07B:: PostMessage, 0x50, 0, 0x4110411,, A ; 0x50 is WM_INPUTLANGCHANGEREQUEST IME_SET(0) Return ``` のように設定することでタイ語と日本語の行き来はできるようになったのですが、 タイ語のキーボード状態で無変換を押した場合、日本語入力にはなるのですが、 `ひらがな`の状態になってしまいます。 `vkFFsc070`と`vkEBsc07B`はそれぞれタイ語のキーボード配置での `カタカナひらがな`と`無変換`キーですが、 日本語入力状態では`vkF2sc070`と`vk1Dsc07B`がそれぞれ該当します。 IMEをAutoHotkeyの機能でオフにするにはどうすればよいでしょうか?
回答: Autohotkey ではIMEの状態をとるのが難しいようなのでIMEの状態を切り替えるのではなくWindowsの入力言語として英語(日本語キーボード)を追加し、入力言語自体を追加することで解決しました。 日本語IMEを使ってるときはアルファベットを使わずに常に「ひらがな」を使うようにしています。 また無変換キーなどは入力中の言語によって送信されるキーコードが変化するため、まず`ChangeKey`を用い、F13~F15の使ってないキーに変更してからAutohotkeyの設定を行っています。 質問時はAutohotkeyのv1を使っていたのですが、以下のコードはv2のものになります。 ``` ; 無変換(ひらがな入力) F13:: PostMessage 0x50, 0, 0x4110411,, "A" return ; 変換(英数入力) F14:: PostMessage 0x50, 0, 0x4110409,, "A" return ; ひらカナ(別言語) F15:: PostMessage 0x50, 0, 0x4120412,, "A" return ```