2009年2月8日日曜日

月5-315 TypeWellで練習するためのAHKスクリプト

;######################################################
;##       最初に呼び出される関数        ##
;######################################################
;無シフト面を出力
;uシフト面だったらuShift()の呼び出し
;dシフト面だったらdShift()の呼び出し
;kシフト面だったらkShift()の呼び出し

Start(FirstKey)
    {
    suspend, on
    ;--★無シフト面を出力★
    if FirstKey = q
        send, ra
    else if FirstKey = w
        send, ru
    else if FirstKey = e
        send, na
    else if FirstKey = r
        send, ko
    else if FirstKey = t
        send, ga
    else if FirstKey = y
        send, re
    else if FirstKey = i
        send, si
    else if FirstKey = o
        send, nn
    else if FirstKey = p
        send, ku
    else if FirstKey = a
        send, to
    else if FirstKey = s
        send, ta
    else if FirstKey = f
        send, ka
    else if FirstKey = g
        send, te
    else if FirstKey = h
        send, ki
    else if FirstKey = j
        send, no
    else if FirstKey = l
        send, u
    else if FirstKey = `;
        send, i
    else if FirstKey = z
        send, ha
    else if FirstKey = x
        send, de
    else if FirstKey = c
        send, ma
    else if FirstKey = v
        send, mo
    else if FirstKey = b
        send, xyo
    else if FirstKey = n
        send, ni
    else if FirstKey = m
        send, su
    ;--★uシフト面だったらuShift()の呼び出し★
    else if FirstKey = u
        uShift()
    ;--★dシフト面だったらdShift()の呼び出し★
    else if FirstKey = d
        dShift()
    ;--★kシフト面だったらkShift()の呼び出し★
    else if FirstKey = k
        kShift()
    suspend, off
    }

;######################################################
;##   ユーザーからのキー入力を受け付ける関数    ##
;######################################################
;Lnは入力を受け付ける文字列の長さ
;Tnは入力を受け付ける時間

InputKey()
    {
    input, InputKey, L1 T1, {Esc}
    return InputKey
    }

;######################################################
;##    uシフト面の文字列を出力する関数     ##
;######################################################
;uシフト面を出力
;もう一度uが入力されたら自分自身を呼び出し
;udシフト面だったらudShift()の呼び出し
;ukシフト面だったらukShift()の呼び出し
;それ以外だったらxtuを出力

uShift()
    {
    suspend, on
    SecondKey := InputKey()
    ;--★uシフト面を出力★
    if SecondKey = q
        send, rra
    else if SecondKey = w
        send, rru
    else if SecondKey = e
        send, xtuna
    else if SecondKey = r
        send, kko
    else if SecondKey = t
        send, gga
    else if SecondKey = y
        send, rre
    else if SecondKey = u
        uShift()
    else if SecondKey = i
        send, ssi
    else if SecondKey = o
        send, xtunn
    else if SecondKey = p
        send, kku
    else if SecondKey = a
        send, tto
    else if SecondKey = s
        send, tta
    else if SecondKey = f
        send, kka
    else if SecondKey = g
        send, tte
    else if SecondKey = h
        send, kki
    else if SecondKey = j
        send, xtuno
    else if SecondKey = l
        send, xtuu
    else if SecondKey = `;
        send, xtui
    else if SecondKey = z
        send, hha
    else if SecondKey = x
        send, dde
    else if SecondKey = c
        send, xtuma
    else if SecondKey = v
        send, xtumo
    else if SecondKey = b
        send, xtuxyo
    else if SecondKey = n
        send, xtuni
    else if SecondKey = m
        send, ssu
    else if SecondKey = `,
        send, xtu,
    else if SecondKey = `.
        send, xtu.
    else if SecondKey = /
        send, xtu/
    ;--★udシフト面だったらudShift()の呼び出し★
    else if SecondKey = d
        udShift()
    ;--★ukシフト面だったらukShift()の呼び出し★
    else if SecondKey = k
        ukShift()
    ;--★それ以外だったらxtuを出力★
    else
        send, xtu
    suspend, off
    }

;######################################################
;##    dシフト面の文字列を出力する関数     ##
;######################################################
;dシフト面を出力
;もう一度dが入力されたら自分自身を呼び出し

dShift()
    {
    suspend, on
    SecondKey := InputKey()
    if SecondKey = q
        send, zo
    else if SecondKey = w
        send, {Space}
    else if SecondKey = e
        send, xo
    else if SecondKey = r
        send, xe
    else if SecondKey = t
        send, di
    else if SecondKey = y
        send, pu
    else if SecondKey = u
        send, pa
    else if SecondKey = i
        send, ge
    else if SecondKey = o
        send, tu
    else if SecondKey = p
        send, -
    else if SecondKey = a
        send, sa
    else if SecondKey = s
        send, so
    else if SecondKey = d
        dShift()
    else if SecondKey = f
        send, ba
    else if SecondKey = g
        send, bo
    else if SecondKey = h
        send, hi
    else if SecondKey = j
        send, xya
    else if SecondKey = k
        send, xyu
    else if SecondKey = l
        send, ti
    else if SecondKey = `;
        send, wo
    else if SecondKey = z
        send, po
    else if SecondKey = x
        send, du
    else if SecondKey = c
        send, xu
    else if SecondKey = v
        send, he
    else if SecondKey = b
        send, pi
    else if SecondKey = n
        send, hu
    else if SecondKey = m
        send, me
    else if SecondKey = `,
        send, gi
    else if SecondKey = `.
        send, mu
    else if SecondKey = /
        send, nu
    suspend, off
    }

;######################################################
;##    kシフト面の文字列を出力する関数     ##
;######################################################
;kシフト面を出力
;もう一度kが入力されたら自分自身を呼び出し

kShift()
    {
    suspend, on
    SecondKey := InputKey()
    if SecondKey = q
        send, ze
    else if SecondKey = w
        send, ne
    else if SecondKey = e
        send, yu
    else if SecondKey = r
        send, bu
    else if SecondKey = t
        send, za
    else if SecondKey = y
        send, vu
    else if SecondKey = u
        send, pe
    else if SecondKey = i
        send, xi
    else if SecondKey = o
        send, wa
    else if SecondKey = p
        send, e
    else if SecondKey = a
        send, do
    else if SecondKey = s
        send, se
    else if SecondKey = d
        send, da
    else if SecondKey = f
        send, a
    else if SecondKey = g
        send, ke
    else if SecondKey = h
        send, be
    else if SecondKey = j
        send, o
    else if SecondKey = k
        kShift()
    else if SecondKey = l
        send, ri
    else if SecondKey = `;
        send, ji
    else if SecondKey = z
        send, ro
    else if SecondKey = x
        send, ho
    else if SecondKey = c
        send, go
    else if SecondKey = v
        send, ya
    else if SecondKey = b
        send, yo
    else if SecondKey = n
        send, bi
    else if SecondKey = m
        send, mi
    else if SecondKey = `,
        send, xa
    else if SecondKey = `.
        send, gu
    else if SecondKey = /
        send, zu
    suspend, off
    }

;######################################################
;##    udシフト面の文字列を出力する関数     ##
;######################################################
;udシフト面を出力
;もう一度dが入力されたら自分自身を呼び出し

udShift()
    {
    suspend, on
    ThirdKey := InputKey()
    if ThirdKey = q
        send, zzo
    else if ThirdKey = w
        send, xtu
    else if ThirdKey = e
        send, xtuxo
    else if ThirdKey = r
        send, xtuxe
    else if ThirdKey = t
        send, ddi
    else if ThirdKey = y
        send, ppu
    else if ThirdKey = u
        send, ppa
    else if ThirdKey = i
        send, gge
    else if ThirdKey = o
        send, ttu
    else if ThirdKey = p
        send, xtu-
    else if ThirdKey = a
        send, ssa
    else if ThirdKey = s
        send, sso
    else if ThirdKey = d
        udShift()
    else if ThirdKey = f
        send, bba
    else if ThirdKey = g
        send, bbo
    else if ThirdKey = h
        send, hhi
    else if ThirdKey = j
        send, xtuxya
    else if ThirdKey = k
        send, xtuxyu
    else if ThirdKey = l
        send, tti
    else if ThirdKey = `;
        send, xtuwo
    else if ThirdKey = z
        send, ppo
    else if ThirdKey = x
        send, ddu
    else if ThirdKey = c
        send, xtuxu
    else if ThirdKey = v
        send, hhe
    else if ThirdKey = b
        send, ppi
    else if ThirdKey = n
        send, hhu
    else if ThirdKey = m
        send, xtume
    else if ThirdKey = `,
        send, ggi
    else if ThirdKey = `.
        send, xtumu
    else if ThirdKey = /
        send, xtunu
    suspend, off
    }

;######################################################
;##    ukシフト面の文字列を出力する関数     ##
;######################################################
;ukシフト面を出力
;もう一度kが入力されたら自分自身を呼び出し

ukShift()
    {
    suspend, on
    ThirdKey := InputKey()
    if ThirdKey = q
        send, zze
    else if ThirdKey = w
        send, xtune
    else if ThirdKey = e
        send, xtuyu
    else if ThirdKey = r
        send, bbu
    else if ThirdKey = t
        send, zza
    else if ThirdKey = y
        send, vvu
    else if ThirdKey = u
        send, ppe
    else if ThirdKey = i
        send, xtuxi
    else if ThirdKey = o
        send, xtuwa
    else if ThirdKey = p
        send, xtuxe
    else if ThirdKey = a
        send, ddo
    else if ThirdKey = s
        send, sse
    else if ThirdKey = d
        send, dda
    else if ThirdKey = f
        send, xtuxa
    else if ThirdKey = g
        send, kke
    else if ThirdKey = h
        send, bbe
    else if ThirdKey = j
        send, xtuxo
    else if ThirdKey = k
        ukShift()
    else if ThirdKey = l
        send, rri
    else if ThirdKey = `;
        send, jji
    else if ThirdKey = z
        send, xturo
    else if ThirdKey = x
        send, hho
    else if ThirdKey = c
        send, ggo
    else if ThirdKey = v
        send, xtuya
    else if ThirdKey = b
        send, xtuyo
    else if ThirdKey = n
        send, bbi
    else if ThirdKey = m
        send, xtumi
    else if ThirdKey = `,
        send, xtuxa
    else if ThirdKey = `.
        send, ggu
    else if ThirdKey = /
        send, zzu
    suspend, off
    }

;================================================
;==         キー定義          ==
;================================================

^+q::suspend

#UseHook On

q::Start("q")
w::Start("w")
e::Start("e")
r::Start("r")
t::Start("t")
y::Start("y")
u::Start("u")
i::Start("i")
o::Start("o")
p::Start("p")
a::Start("a")
s::Start("s")
d::Start("d")
f::Start("f")
g::Start("g")
h::Start("h")
j::Start("j")
k::Start("k")
l::Start("l")
vkBB::Start(";")
z::Start("z")
x::Start("x")
c::Start("c")
v::Start("v")
b::Start("b")
n::Start("n")
m::Start("m")

#UseHook Off

0 件のコメント:

コメントを投稿