#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)と固定します