#author("2026-10-27T11:12:58+09:00","","")
#author("2026-10-27T11:17:31+09:00","","")
-- [[google doc:https://docs.google.com/spreadsheets/d/1e-N8RGgv6kk97OX560dcwQpqqKORN1UcyR8wW_bJ6Ts/edit?usp=sharing]]

* 確率 [#y91f3f2c]

- keyeventが起きたとき、keyeventの種類click, hold, repeatを判定する
-- click: 略号c. キーを押し下げ(press)て、repeatが始まる前にキーを解放(release)する動作
-- hold: 略号h. キーを押し下げ(press)て、repeatが始まった最初のキーイベント
-- repeat: 略号r. キーを押し下げ(press)て、holdの後のキーイベント
- 前提:前のクリックとの時間間隔をvとしたときclick, hold, repeat の頻度は次とする
-- hold: Fh(v), repeat: Fr(v), click: Fc(v)
- 確率:vの時にclick, hold, repeat である確率は次で求まる
-- Ft(v) = Fh(v) + Fr(v) + Fc(v)
-- Pc(v) = Fh(v) / Ft(v)
-- Pc(v) = Fc(v) / Ft(v)
-- Ph(v) = Fh(v) / Ft(v)
-- Pr(v) = Fr(v) / Ft(v)
- 関数
- x = (v-Vh)/Dh, Fh(v) = fh(x) = exp(-x^2/2)
- x = (v-Vr)/Dr, Fr(v) = fr(x) = exp(-x^2/2)
- Fc(v) = Vc (constant)
- 特殊事情:前のeventの種類により確率が変わる
-- clickの後にrepeatがくる確率は0
-- holdの後にholdがくる確率は0
-- repeatの後にholdがくる確率は0

* probability [#yfa3a49c]

- keyevent はキーの押しっぱなし(hold)とクリック(click)を区別したい
- キーを押しっぱなしにした時の特徴は次の通り
-- 最初のkey pressでkey eventが発生
-- その後delay (ex 500ms)のちに次のkey event発生
-- その後interval (ex 150ms)のちに次のkey event発生
-- キーをrelease するまでinterval おきにkey eventが発生
-- delay, intervalは一定ではなく幅がある
- キーをクリックした場合はkey eventの間隔は不定(ex 100ms ~ 1day)
- key press, key release event は取得できない
- そこでkeyevent.nvimではkey evcentの間隔を観察してhold, clickを判定したい
- クリックの場合間隔に規則はないのでhold, click の正確な判定はできない
- そこでhold, click の確率を計算したい
- 確率の計算手順は次のようにしたい
- hold した場合のdelay, intervalには幅があるが、これは正規分布と仮定して標準偏差はσとする
- delay, interval ともに同じσを使う
- 前のkey event との間隔をvとする
- v==delayの場合、delayの確率90%、とする
- abs(d-delay) <= σ の場合delayの確率90*68.3%, とする
- ただしdelayとintervalは遠いとする
- 問題は、delay-repeat-repeat-repeatと信頼できる確率で続いた場合holdの確率が100%近くになって欲しい。
- これはどう計算すると良いでしょうか?ベイズ確率でしょうか?

* 確率 [#pf8eebd5]

- 別のアプローチです。
- 同じkey(ex. "h")のkey eventが来るたびにdelay, interval, clickのシーケンス確率を計算したいです。
- 前回と今回が異なるkey(ex. "hj")の場合はclick 100%です。
-- 同じキーを押しっぱなしの時だけdelay, interval が発生するからです
- 同じキーが押されるシーケンスは次のパターンです
-- click click
-- click delay click
-- click delay interval interval .... interval click
- つまりclickのあとはclickかdelayでintervalが来ることはありえません
- delayのあとはclickかintrevalでdelayが来ることはありません
- intervalのあとはclickかintrevalでdelayが来ることはありません
- 3回同じキーが連続して押された時考えられるシーエンスは次の4通りです
- click click click
- click click delay
- click delay click
- click delay repeat
- この4つのそれぞれの確率P1, P2, P3, P4 はどうやって計算しますか?(P1 + P2 + P3 + P4 = 1)
- 簡単のためclickかdelayか判定する時はdelayの確率をPd, clickの確率を(1-Pd)と固定します
- 簡単のためclickかintervalか判定する時はintervalの確率をPi, clickの確率を(1-Pi)と固定します

Front page   Edit Diff History Attach Copy Rename Reload   New Page list Search Recent changes   Help   RSS of recent changes