etypingでDvorakJPを使う


はじめに


(wikipediaの画像より)

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