JISかなシフト配列をWindowsで使用するには、AutoHotKeyを使う。
https://www.autohotkey.com/
AutoHotKeyの日本語による解説サイト。
http://ahkwiki.net/Top
- AutoHotKeyをインストールする。
- 以下のスクリプトコードをファイルに保存する。
- 保存したファイルをダブルクリックする。
- JISかなシフト配列が使える!
SendMode Input
SetWorkingDir %A_ScriptDir%
IME_GET(WinTitle="A") {
ControlGet,hwnd,HWND,,,%WinTitle%
if (WinActive(WinTitle)) {
ptrSize := !A_PtrSize ? 4 : A_PtrSize
VarSetCapacity(stGTI, cbSize:=4+4+(PtrSize*6)+16, 0)
NumPut(cbSize, stGTI, 0, "UInt") ; DWORD cbSize;
hwnd := DllCall("GetGUIThreadInfo", Uint,0, Uint,&stGTI)
? NumGet(stGTI,8+PtrSize,"UInt") : hwnd
}
return DllCall("SendMessage"
, UInt, DllCall("imm32\ImmGetDefaultIMEWnd", Uint,hwnd)
, UInt, 0x0283 ;Message : WM_IME_CONTROL
, Int, 0x0005 ;wParam : IMC_GETOPENSTATUS
, Int, 0) ;lParam : 0
}
#IF (IME_GET() != 0)
;when IME is on, JIS kana shift
+1::Send,{U+FF01} ;!
+2::Send,{U+FFE5} ;¥
+q::Send,1
+w::Send,2
+e::Send,3
+r::Send,4
+t::Send,5
+y::Send,6
+u::Send,7
+i::Send,8
+o::Send,9
+p::Send,0
+@::Send,[
+[::Send,{U+300C} ;「
+a::Send,]
+s::Send,+e
+d::Send,+3
+f::Send,+4
+g::Send,+5
+h::Send,+6
+j::Send,+7
+k::Send,+8
+l::Send,+9
+sc027::Send,+0
+sc028::Send,\
+]::Send,{U+300D} ; 」
+x::Send,-
+c::Send,{^}
+v::Send,{U+FF08} ;(
+b::Send,{U+FF09} ;)
+n::Send,{U+300C} ;「
+m::Send,{U+300D} ; 」
+sc073::Send,{U+FF1F} ;?
IF (IME_GET() != 0)
と記述することにより、IMEがON、つまり日本語入力ONの時のみ、JISかなシフト配列が有効になる。
IME_GET()関数は、コチラのサイトから頂いた。
https://w.atwiki.jp/eamat/pages/17.html
ありがとうございました。