「変換」キー、または、「無変換」キーと同時に押した時に、
キーの役割を変更するように設定する。
「変換」キーを押している間は、以下のキーに変更する。
- 記号キーを集めた。
- 数字キーを1つ下の段に下げた。
「無変換」キーを押している間は、以下のキーに変更する。
- 移動系のキーを集めた。
- 矢印キーの配置はFPS(ゲーム)と同じ。
- Ins,Del,Home,End,PgUp,PgDnの配置はフルサイズキーボードと同じ。
- ファンクションキーを下に移動した。
これらのキー配列を実現するために、
AutoHotKeyのスクリプトコードを作った。
;muhenkan
sc07B & q::Send,{Blind}{Esc}
sc07B & e::Send,{Blind}{Up}
sc07B & r::Send,{Blind}{U+0020} ; Space
sc07B & y::Send,{Blind}{PrintScreen}
sc07B & u::Send,{Blind}{Insert}
sc07B & i::Send,{Blind}{Home}
sc07B & o::Send,{Blind}{PgUp}
sc07B & a::Send,{Blind}{Backspace}
sc07B & s::Send,{Blind}{Left}
sc07B & d::Send,{Blind}{Down}
sc07B & f::Send,{Blind}{Right}
sc07B & g::Send,{Blind}{Enter}
sc07B & h::Send,{Blind}{AppsKey}
sc07B & j::Send,{Blind}{Delete}
sc07B & k::Send,{Blind}{End}
sc07B & l::Send,{Blind}{PgDn}
sc07B & sc027::Send,{Blind}{Backspace}
sc07B & sc028::Send,{Blind}{F12}
sc07B & z::Send,{Blind}{F1}
sc07B & x::Send,{Blind}{F2}
sc07B & c::Send,{Blind}{F3}
sc07B & v::Send,{Blind}{F4}
sc07B & b::Send,{Blind}{F5}
sc07B & n::Send,{Blind}{F6}
sc07B & m::Send,{Blind}{F7}
sc07B & sc033::Send,{Blind}{F8}
sc07B & .::Send,{Blind}{F9}
sc07B & /::Send,{Blind}{F10}
sc07B & sc073::Send,{Blind}{F11}
;henkan
sc079 & q::Send,{Blind}1
sc079 & w::Send,{Blind}2
sc079 & e::Send,{Blind}3
sc079 & r::Send,{Blind}4
sc079 & t::Send,{Blind}5
sc079 & y::Send,{Blind}6
sc079 & u::Send,{Blind}7
sc079 & i::Send,{Blind}8
sc079 & o::Send,{Blind}9
sc079 & p::Send,{Blind}0
sc079 & @::Send,{Blind}{sc029} ;JP_HANKAKU_ZENKAKU
sc079 & a::Send,{Blind}-
sc079 & s::Send,{Blind}{^}
sc079 & d::Send,{Blind}\
sc079 & f::Send,{Blind}@
sc079 & g::Send,{Blind}:
sc079 & h::Send,{Blind}{U+007E} ;~
sc079 & j::Send,{Blind}{NumpadAdd} ;+
sc079 & k::Send,{Blind}{NumpadMult} ;*
sc079 & l::Send,{Blind}{NumpadDiv} ;/
sc079 & sc027::Send,{Blind}{U+003D} ;=
sc079 & sc028::Send,{Blind}{U+007C} ;|
sc079 & z::Send,{Blind}{U+0022} ;"
sc079 & x::Send,{Blind}{U+007B} ;{
sc079 & c::Send,{Blind}{U+007D} ;}
sc079 & v::Send,{Blind}{U+005B} ;[
sc079 & b::Send,{Blind}{U+005D} ;]
sc079 & n::Send,{Blind}{U+003C} ;<
sc079 & m::Send,{Blind}{U+003E} ;>
sc079 & sc033::Send,{Blind}{U+0028} ;(
sc079 & .::Send,{Blind}{U+0029} ;(
sc079 & /::Send,{Blind}{NumpadDot} ;.
sc079 & sc073::Send,{Blind}{U+0027} ;'
;raw henkan muhenkan
sc07B::Send,{sc07B}
sc079::Send,{sc079}
ついでに、以下をまとめたスクリプトコードも載せておく。
- 英語直接入力はDvorak(記号は日本語キーボード)
- 日本語入力は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 OFF, dvorak (kigou=JIS, with ctrl=qwerty)
q::Send,'
+q::Send,"
w::Send,,
+w::Send,<
e::Send,.
+e::Send,>
r::Send,p
+r::Send,+p
t::Send,y
+t::Send,+y
y::Send,f
+y::Send,+f
u::Send,g
+u::Send,+g
i::Send,c
+i::Send,+c
o::Send,r
+o::Send,+r
p::Send,l
+p::Send,+l
@::Send,/
+@::Send,?
s::Send,o
+s::Send,+o
d::Send,e
+d::Send,+e
f::Send,u
+f::Send,+u
g::Send,i
+g::Send,+i
h::Send,d
+h::Send,+d
j::Send,h
+j::Send,+h
k::Send,t
+k::Send,+t
l::Send,n
+l::Send,+n
sc027::Send,s
+sc027::Send,+s
sc028::Send,-
+sc028::Send,_
z::Send,{SC027} ; ";"
+z::Send,{SC028} ; ":"
x::Send,q
+x::Send,+q
c::Send,j
+c::Send,+j
v::Send,k
+v::Send,+k
b::Send,x
+b::Send,+x
n::Send,b
+n::Send,+b
m::Send,m
+m::Send,+m
sc033::Send,w
+sc033::Send,+w
.::Send,v
+.::Send,+v
/::Send,z
+/::Send,+z
+sc073::Send,@
#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
;don't care if IME is ON or OFF
;muhenkan
sc07B & q::Send,{Blind}{Esc}
sc07B & e::Send,{Blind}{Up}
sc07B & r::Send,{Blind}{U+0020} ; Space
sc07B & y::Send,{Blind}{PrintScreen}
sc07B & u::Send,{Blind}{Insert}
sc07B & i::Send,{Blind}{Home}
sc07B & o::Send,{Blind}{PgUp}
sc07B & a::Send,{Blind}{Backspace}
sc07B & s::Send,{Blind}{Left}
sc07B & d::Send,{Blind}{Down}
sc07B & f::Send,{Blind}{Right}
sc07B & g::Send,{Blind}{Enter}
sc07B & h::Send,{Blind}{AppsKey}
sc07B & j::Send,{Blind}{Delete}
sc07B & k::Send,{Blind}{End}
sc07B & l::Send,{Blind}{PgDn}
sc07B & sc027::Send,{Blind}{Backspace}
sc07B & sc028::Send,{Blind}{F12}
sc07B & z::Send,{Blind}{F1}
sc07B & x::Send,{Blind}{F2}
sc07B & c::Send,{Blind}{F3}
sc07B & v::Send,{Blind}{F4}
sc07B & b::Send,{Blind}{F5}
sc07B & n::Send,{Blind}{F6}
sc07B & m::Send,{Blind}{F7}
sc07B & sc033::Send,{Blind}{F8}
sc07B & .::Send,{Blind}{F9}
sc07B & /::Send,{Blind}{F10}
sc07B & sc073::Send,{Blind}{F11}
;henkan
sc079 & q::Send,{Blind}1
sc079 & w::Send,{Blind}2
sc079 & e::Send,{Blind}3
sc079 & r::Send,{Blind}4
sc079 & t::Send,{Blind}5
sc079 & y::Send,{Blind}6
sc079 & u::Send,{Blind}7
sc079 & i::Send,{Blind}8
sc079 & o::Send,{Blind}9
sc079 & p::Send,{Blind}0
sc079 & @::Send,{Blind}{sc029} ;JP_HANKAKU_ZENKAKU
sc079 & a::Send,{Blind}-
sc079 & s::Send,{Blind}{^}
sc079 & d::Send,{Blind}\
sc079 & f::Send,{Blind}@
sc079 & g::Send,{Blind}:
sc079 & h::Send,{Blind}{U+007E} ;~
sc079 & j::Send,{Blind}{NumpadAdd} ;+
sc079 & k::Send,{Blind}{NumpadMult} ;*
sc079 & l::Send,{Blind}{NumpadDiv} ;/
sc079 & sc027::Send,{Blind}{U+003D} ;=
sc079 & sc028::Send,{Blind}{U+007C} ;|
sc079 & z::Send,{Blind}{U+0022} ;"
sc079 & x::Send,{Blind}{U+007B} ;{
sc079 & c::Send,{Blind}{U+007D} ;}
sc079 & v::Send,{Blind}{U+005B} ;[
sc079 & b::Send,{Blind}{U+005D} ;]
sc079 & n::Send,{Blind}{U+003C} ;<
sc079 & m::Send,{Blind}{U+003E} ;>
sc079 & sc033::Send,{Blind}{U+0028} ;(
sc079 & .::Send,{Blind}{U+0029} ;(
sc079 & /::Send,{Blind}{NumpadDot} ;.
sc079 & sc073::Send,{Blind}{U+0027} ;'
;raw henkan muhenkan
sc07B::Send,{sc07B}
sc079::Send,{sc079}