Dvorakjpはdvorak配列を日本語向けに拡張したものです(下の記事が詳しい)
https://alpha.mixi.co.jp/entry/2012/10806/
しかし etyping等のタイピングサイトで使えないという弱点があります
ciを「き」に変換したり
hnaを「ひゃ」に変換する事がサイト上で出来ないからです
なのでautotkey(キーの入力に対して処理を割り当てられる)を使って
etypingでDvorakJPを使えるようにしました
#実装と説明
やりたいことは
1:か行をcで補う
2: 左下でan on en un inを打てるようにする
3: 左上でai ou eiを打てるようにする
4: yを使うものをhやnで代用する
pha → ぴゃ
rha → りゃ
nha → にゃ
zha → じゃ
gna → ぎゃ
cna → きゃ
hna → ひゃ
tna → ちゃ
bna → びゃ
mna → みゃ
1はcをkに置き換えれば出来て、23もそれらを置き換えれば出来ます
4も直前に打たれたキーによってh,nをyに置き換えれば出来ますが
nhaの時だけ注意が必要です
nnhaの時には「んや」ではなく「んは」と打たれるようにしたいからです
なのでnが2連続である場合にはhをyに置き換えないようにします
nmaeは直前のnが子音として残っていたらtを
なければfを代入しています
A_PriorKeyは直前に打たれたキーです
#MaxHotkeysPerInterval 200
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SetTitleMatchMode,2
#InstallKeybdHook
#UseHook
nmae = f
n::
if( A_PriorKey == "%" || A_PriorKey == "q" || A_PriorKey == "j" || A_PriorKey == "k"|| A_PriorKey == "x" || nmae = "t")
{
nmae = f
send,{n}
}
else if(A_PriorKey == "g" || A_PriorKey == "c"|| A_PriorKey == "h"|| A_PriorKey == "t"|| A_PriorKey == "b"|| A_PriorKey == "m")
{
nmae = f
send,{y}
}
else
{
nmae = t
send,{n}
}
return
a::
nmae = f
send,{a}
return
o::
nmae = f
send,{o}
return
e::
nmae = f
send,{e}
return
u::
nmae = f
send,{u}
return
i::
nmae = fh
send,{i}
return
c::send,{k}
h::
if(A_PriorKey == "p" || A_PriorKey == "r"|| A_PriorKey == "z")
send,{y}
else if(nmae = "t")
send,{y}
else
send,{h}
return
;::
send,{a}{n}
return
q::
send,{o}{n}
return
j::
send,{e}{n}
return
k::
send,{u}{n}
return
x::
send,{i}{n}
return
'::
send,{a}{i}
return
,::
send,{o}{u}
return
.::
send,{e}{i}
return