2012年5月1日火曜日

AutoHotKey で kbdacc

AutoHotKey を使って kbdacc っぽくキーリピートを加速するコードを書いてみました。
下向きの矢印キーを例にとります。

$Down::
    Send, {Down}
    Sleep, 1000 / 8
    i := 0
    Loop
    {
        If i < 4
            Sleep, 1
        Else
            Sleep, 0
        GetKeyState, State, Down, P
        If State = U
            Break
        Else
            Send, {Down}
        i += 1
    }
    Return

以下解説です。

    Send, {Down}
    Sleep, 1000 / 8
まずは Down キーを1回だけ送信してその後に 1 / 8 秒だけ待ちます。
1 / 8 秒はキーリピートが発動するまでの時間です。
1000 だと1秒なので好みの値を設定して下さい。

        If i < 4
            Sleep, 1
        Else
            Sleep, 0
最初の4回はやや遅めで繰り返します。
(それでも Windows のデフォルト値よりははるかに早いですが。)
この回数も好みで設定して下さい。

Sleep の値を増やすと動作がゆっくりになります。
0 に設定すると最高速でリピートします。
この値も好みで設定して下さい。

        GetKeyState, State, Down, P
        If State = U
            Break
Down キーの押下状態を取得して変数 State へ代入します。
U (Up) だったら Loop から抜けます。

        Else
            Send, {Down}
        i += 1
Down キーが押しっぱなしだったら Down を送信して i の値を一つ増やし Loop を継続します。
以上の処理を繰り返す事でキーリピートを実現しています。

0 件のコメント:

コメントを投稿