2012年5月3日木曜日

skid patch の周期を表計算ソフトで視覚的に捉えてみた

1. A3 セルに以下の式を書いて B3 セルにコピー。
=IF(A2>=A$2,1,A2+1)

2. B3 セルには以下の数式が入っているはず。
=IF(B2>=B$2,1,B2+1)

3. A2:A3 を下方向に 1000 行程コピーする。

4. A2 セルと B2 セルにそれぞれ Chainwheel と Cog の歯数を入力。

5. オートフィルタを設定して Chainwheel の列を '1' で絞る。*別に '1' 以外でもOK。

フィルタで絞ってない状態が下図。


購入検討中の FUJI / Feather CX は
Chainwheel -> 42T
Cog -> 18T
なので Chainwheel を '1' で絞ると下図ように Cog が 1, 7, 13... の周期で現れる事が分かる。


最初は怖いので軽めのギア比でスタートするとして、慣れてきたら Chainwheel を素数のものに交換する予定。 42T より上の歯数で素数のものは 43T, 47T, 53T 辺り。

47T に交換したと仮定すると Cog の周期は下図のように 1, 12, 5, 16, 9, 2, 13, 6, 17, 10, 3, 14, 7, 18, 11, 4, 15, 8 と重複することなく並び Cog の枚数 18T だけ繰り返した後再び 1, 12, 5... を繰り返す。素数最強。


…まぁ skid とかやらないと思いますけどね…。

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 を継続します。
以上の処理を繰り返す事でキーリピートを実現しています。