Edit of
rush/03.spec-hold
Top
/
rush
/
03.spec-hold
[
Front page
] [
Edit
|
Diff
|
History
|
Attach
|
Reload
] [
New
|
Page list
|
Search
|
Recent changes
|
Help
]
-- Use page as template --
(no template pages)
* Spec Hold [#cef65b46] - タタン、タタン、タタンで加速 - タン、タン、タンで減速 - タタタタタンで最初から爆速 - 20タンでも最初から爆速、タタン、タン、も有効 - rush-count は廃止 ** rush.nvim内部処理仕様 [#w4f4a4b0] - keymap.set で置き換えたkeymapを監視する。置き換えるキーは具体的には "j", <C-f>, "gj" など。 -- <C-f>, "gj" などはまだ実験していない - key K を長押しする操作を<hold-K>と表記する - 同時にon_keyで置き換えていないkey eventを監視する。(<C-f>などの場合どうするかは未定) - keymap.set で登録した関数が呼び出されるたびにrush eventを発生させる - rush eventの内容 -- 発生時間(vim.loop.hrtime) -- 押されたkey -- 連打開始直前に押されたキー(なければ"") -- vim_count:連打開始時のvim.v.count -- 前回key eventからの時間間隔(最初のkey evetの場合はvimが起動してからevent発生までの時間間隔) - rush eventの種類 -- tap: 前と同じキーが短時間(おおよそinterval.rep以内)に続けて押された --- 同一キー連打回数ntを提供する。連打開始はclickになるので、tapの場合2からはじまる -- start: キーを押し込んだ最初のeventはtap|clickだが2番目のkey eventはhold-startと判定する --- start2がよいか? -- repeat: キーを押し込んだ後3番目以降のkey eventはrepeat rush eventと判定する --- hold時間を提供する。hold時間とはhold開始からの経過時間。最初は≒interval.hold2+interval.rep --- repeat回数nrを提供する。repeat回数とはhold中に発生したkey event回数。3から始まる。 -- click: その他のkey event。連打でない場合、時間をおいてタイプの場合に相当する -- repeat-end: hold終了event。repeatからinterval.rep経過後repat eventがなければ発生する。またはrepeat以外のeventが発生する直前に発生する - 具体例 -- しばらく時間をおいてから"jjk<hold-k>"と連続タイプした場合のrush event概要 -- click-j(1,0), tap-j(2,0), tap-k(1,0), tap-k(2,0), start-k(2,2), repeat-k(2,3), repeat-k(2,4), ..., repeat-end(2,n) -- 括弧は(nt,nr) 利用例(アイデア) - rush eventの内容をみてreturnする文字列や振る舞いを自由に設定することができる - 例、j<hold-j>の場合 -- click-j(1,0), tap-j(2,0), start-j(2,2), repeat-j(2,3), ... となるので -- nr!=0なら return "2j" とする - 例、<hold-j>の場合 -- nr!=0なら return vim_count .. "j" とする - 例、n,<hold-n>の場合 -- nr!=0なら 検索履歴表示 - 例、j,kの場合 -- return <esc> - 例、j,<hold-k>の場合 -- return "", 女子高生とのチャットゲーム開始 - &color(,orange){<hold-j><hold-j><hold-j> と<hold-j>を繰り返すたびに移動量が倍になる。}; - &color(,orange){勝手に加速しない。加速度合いを制御できる}; - &color(,orange){Ctrlキーを押すたびに遅くなるとか};
Do not change timestamp
* Spec Hold [#cef65b46] - タタン、タタン、タタンで加速 - タン、タン、タンで減速 - タタタタタンで最初から爆速 - 20タンでも最初から爆速、タタン、タン、も有効 - rush-count は廃止 ** rush.nvim内部処理仕様 [#w4f4a4b0] - keymap.set で置き換えたkeymapを監視する。置き換えるキーは具体的には "j", <C-f>, "gj" など。 -- <C-f>, "gj" などはまだ実験していない - key K を長押しする操作を<hold-K>と表記する - 同時にon_keyで置き換えていないkey eventを監視する。(<C-f>などの場合どうするかは未定) - keymap.set で登録した関数が呼び出されるたびにrush eventを発生させる - rush eventの内容 -- 発生時間(vim.loop.hrtime) -- 押されたkey -- 連打開始直前に押されたキー(なければ"") -- vim_count:連打開始時のvim.v.count -- 前回key eventからの時間間隔(最初のkey evetの場合はvimが起動してからevent発生までの時間間隔) - rush eventの種類 -- tap: 前と同じキーが短時間(おおよそinterval.rep以内)に続けて押された --- 同一キー連打回数ntを提供する。連打開始はclickになるので、tapの場合2からはじまる -- start: キーを押し込んだ最初のeventはtap|clickだが2番目のkey eventはhold-startと判定する --- start2がよいか? -- repeat: キーを押し込んだ後3番目以降のkey eventはrepeat rush eventと判定する --- hold時間を提供する。hold時間とはhold開始からの経過時間。最初は≒interval.hold2+interval.rep --- repeat回数nrを提供する。repeat回数とはhold中に発生したkey event回数。3から始まる。 -- click: その他のkey event。連打でない場合、時間をおいてタイプの場合に相当する -- repeat-end: hold終了event。repeatからinterval.rep経過後repat eventがなければ発生する。またはrepeat以外のeventが発生する直前に発生する - 具体例 -- しばらく時間をおいてから"jjk<hold-k>"と連続タイプした場合のrush event概要 -- click-j(1,0), tap-j(2,0), tap-k(1,0), tap-k(2,0), start-k(2,2), repeat-k(2,3), repeat-k(2,4), ..., repeat-end(2,n) -- 括弧は(nt,nr) 利用例(アイデア) - rush eventの内容をみてreturnする文字列や振る舞いを自由に設定することができる - 例、j<hold-j>の場合 -- click-j(1,0), tap-j(2,0), start-j(2,2), repeat-j(2,3), ... となるので -- nr!=0なら return "2j" とする - 例、<hold-j>の場合 -- nr!=0なら return vim_count .. "j" とする - 例、n,<hold-n>の場合 -- nr!=0なら 検索履歴表示 - 例、j,kの場合 -- return <esc> - 例、j,<hold-k>の場合 -- return "", 女子高生とのチャットゲーム開始 - &color(,orange){<hold-j><hold-j><hold-j> と<hold-j>を繰り返すたびに移動量が倍になる。}; - &color(,orange){勝手に加速しない。加速度合いを制御できる}; - &color(,orange){Ctrlキーを押すたびに遅くなるとか};
View Text Formatting Rules