Windowsだと入力中にCtrl+Tで半角英数に変換できるが、改めてするIMEをオフにする必要があるので、Macと同じ感覚で無変換キーを2回押すことで半角英数変換とIMEオフできるようにした。
IMEの設定でスクリプトを書き直す必要があると思われるので、自分の設定は下記の通り。
Windows 10でIMEはGoogle日本語入力を使用。
タスクバーのIMEのアイコン上で右クリックし「プロパティ」を選択。
「一般」タブの「キー設定」にある「キー設定の選択」の「編集」クリック。
入力キーでソートし、「Muhenkan」の「入力文字なし」は「IMEを無効化」、それ以外は「半角英数に変換」を選択。
同様に「Henkan」は「変換中」のみ「次候補を選択」、それ以外は「IMEを有効化」を選択して、「OK」を押す。
プロパティも「OK」を押して、メモ帳か適当なソフトでIME切り替えを確認。
タスクバーのIMEのアイコン上で右クリックし「プロパティ」を選択。
「一般」タブの「キー設定」にある「キー設定の選択」の「編集」クリック。
入力キーでソートし、「Muhenkan」の「入力文字なし」は「IMEを無効化」、それ以外は「半角英数に変換」を選択。
同様に「Henkan」は「変換中」のみ「次候補を選択」、それ以外は「IMEを有効化」を選択して、「OK」を押す。
プロパティも「OK」を押して、メモ帳か適当なソフトでIME切り替えを確認。
以下のスクリプトをAutoHotkeyに追加する。
~sc07B up::
If (A_PriorHotKey == A_ThisHotKey && A_TimeSincePriorHotkey < 500) ; 0.5秒以内に無変換キー(sc07B)を2回押し
{
Send, +{Space} ; 無変換キーで1回変換しているため、Shift+Spaceで一つ前の候補に戻す
Sleep, 50
Gosub, imeoff
}
Return
If (A_PriorHotKey == A_ThisHotKey && A_TimeSincePriorHotkey < 500) ; 0.5秒以内に無変換キー(sc07B)を2回押し
{
Send, +{Space} ; 無変換キーで1回変換しているため、Shift+Spaceで一つ前の候補に戻す
Sleep, 50
Gosub, imeoff
}
Return
; IME有効化(ここではimeonはなくても動く)
imeon:
{
Sleep, 100
Gosub, IMEGetstate
If (vimestate = 1)
{
}
else
{
Send, {vkf3}
}
return
}
imeon:
{
Sleep, 100
Gosub, IMEGetstate
If (vimestate = 1)
{
}
else
{
Send, {vkf3}
}
return
}
; IME無効化
imeoff:
{
Sleep, 100
Gosub, IMEGetstate
If (vimestate = 0)
{
}
else
{
Send, {vkf3}
}
return
}
; IMEの状態を取得
IMEGetstate:
{
DetectHiddenWindows, ON
WinGet, vcurrentwindow, ID, A
vgetdefault := DllCall("imm32.dll\ImmGetDefaultIMEWnd", "Uint", vcurrentwindow)
vimestate := DllCall("user32.dll\SendMessageA", "UInt", vgetdefault, "UInt", 0x0283, "Int", 0x0005, "Int", 0)
DetectHiddenWindows, Off
return
}
; IME制御の参考ページ
; https://qiita.com/neokix/items/83ac2ac8e1dd405528b0
; https://morakana.hatenadiary.org/entry/20080213/1202876561
x
0 件のコメント:
コメントを投稿