カテゴリー
AutoHotKey JISかなシフト配列 キーボード配列

JISかなシフト配列の設定方法

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
ありがとうございました。