薙刀式AutoHotkey版が大岡さんのブログに取り上げられました

oookaworks.seesaa.net
3キー同時押しの実装はやはり面倒ですよね。少し考えてみたのですが

sho_test(){
	Send,{BackSpace}
	Send,{s}
	Send,{h}
	Send,{o}
}
jyo_test(){
	Send,{BackSpace 2}
	Send,{j}
	Send,{y}
	Send,{o}
}
r::Send,{s}{i}
~r & i::
If GetKeyState("j", "P") {
	jyo_test()
}
else
{
	sho_test()
}
return
~i & r::
If GetKeyState("j", "P") {
	jyo_test()
}
else
{
	sho_test()
}
return
~r & j::
If GetKeyState("i", "P") {
	jyo_test()
}
return
;j & rやj & iなどもr & jと同様の定義が必要

以下省略しますが「じょ」だけでも本来は3の階乗で6回もコンビネーションキーを定義する必要があります。確かに力技です。

3キー同時押しを定義するにはこの処理を繰り返す根気、もしくはよりスマートな手法を見つけなけばなりません。挑戦される方は頑張ってください。

追記

あくまで一案ですがコードを書くためのコードを書くというこれまた力技です。クリップボードの中身を破壊します。

write_3key(a,b,c,d,e){
Clipboard := "~"
Send,^v
Clipboard := a
Send,^v
Clipboard := " & "
Send,^v
Clipboard := b
Send,^v
Clipboard := " ::"
Send,^v
Send,{Enter}
Clipboard := "If GetKeyState('"
Send,^v
Clipboard := c
Send,^v
Clipboard := "', 'P') {"
Send,^v
Send,{Enter}
Send,{Tab}
Clipboard := d
Send,^v
Clipboard := "_test()"
Send,^v
Send,{Enter}
Clipboard := "}"
Send,^v
Send,{Left}{BackSpace}{Right}{Enter}
Clipboard := "else"
Send,^v
Send,{Enter}
Clipboard := "{"
Send,^v
Send,{Enter}
Send,{Tab}
Clipboard := e
Send,^v
Clipboard := "_test()"
Send,^v
Send,{Enter}
Clipboard := "}"
Send,^v
Send,{Left}{BackSpace}{Right}{Enter}
Clipboard := "return"
Send,^v
Send,{Enter}
Clipboard := "~"
Send,^v
Clipboard := b
Send,^v
Clipboard := " & "
Send,^v
Clipboard := a
Send,^v
Clipboard := " ::"
Send,^v
Send,{Enter}
Clipboard := "If GetKeyState('"
Send,^v
Clipboard := c
Send,^v
Clipboard := "', 'P') {"
Send,^v
Send,{Enter}
Send,{Tab}
Clipboard := d
Send,^v
Clipboard := "_test()"
Send,^v
Send,{Enter}
Clipboard := "}"
Send,^v
Send,{Left}{BackSpace}{Right}{Enter}
Clipboard := "else"
Send,^v
Send,{Enter}
Clipboard := "{"
Send,^v
Send,{Enter}
Send,{Tab}
Clipboard := e
Send,^v
Clipboard := "_test()"
Send,^v
Send,{Enter}
Clipboard := "}"
Send,^v
Send,{Left}{BackSpace}{Right}{Enter}
Clipboard := "return"
Send,^v
Send,{Enter}
}
write_3key_only(a,b,c,d){
Clipboard := "~"
Send,^v
Clipboard := a
Send,^v
Clipboard := " & "
Send,^v
Clipboard := b
Send,^v
Clipboard := " ::"
Send,^v
Send,{Enter}
Clipboard := "If GetKeyState('"
Send,^v
Clipboard := c
Send,^v
Clipboard := "', 'P') {"
Send,^v
Send,{Enter}
Send,{Tab}
Clipboard := d
Send,^v
Clipboard := "_test()"
Send,^v
Send,{Enter}
Clipboard := "}"
Send,^v
Send,{Left}{BackSpace}{Right}{Enter}
Clipboard := "return"
Send,^v
Send,{Enter}
Clipboard := "~"
Send,^v
Clipboard := b
Send,^v
Clipboard := " & "
Send,^v
Clipboard := a
Send,^v
Clipboard := " ::"
Send,^v
Send,{Enter}
Clipboard := "If GetKeyState('"
Send,^v
Clipboard := c
Send,^v
Clipboard := "', 'P') {"
Send,^v
Send,{Enter}
Send,{Tab}
Clipboard := d
Send,^v
Clipboard := "_test()"
Send,^v
Send,{Enter}
Clipboard := "}"
Send,^v
Send,{Left}{BackSpace}{Right}{Enter}
Clipboard := "return"
Send,^v
Send,{Enter}
}
f::write_3key("r","i","j","jyo","sho")
d::write_3key_only("r","j","i","jyo")
e::write_3key_only("j","i","r","jyo")