Edit of
rush/02.spec-hjkl
Top
/
rush
/
02.spec-hjkl
[
Front page
] [
Edit
|
Diff
|
History
|
Attach
|
Reload
] [
New
|
Page list
|
Search
|
Recent changes
|
Help
]
-- Use page as template --
(no template pages)
* spec [#ta285c40] ** 基本方針 [#q1b2bcc3] - キー入力のリズムに対応してexpr keymapを使ってキーを置き換える -- つまりキー入力の履歴をみて置き換えの判断をします - 同じキーの連続入力だけを対象とする - よく使うキーコンビネーションは変化させない - 頻度の低い(と思われる)キーコンビネーションに限って変化させる -- 何をよく使うかは個人差があると思うのでユーザーがカスタマイズできる様にする ** mode [#vd3506d4] - 押し下げたキー(type)とvimに渡すキー(return)。"-"とあるものは"j"を渡す - 変化するのはtypeに書いてある最後のキー。 - つまり次の表では"hold j"以外は変化せずタイプした通りvimに渡る - "j"の部分は"k", "w", "B" などにも対応可能 |key type|return|pattern(J)|pattern(E)|command|note| |j|-|タッ|T|1|| |jj|-|タタッ|TT|2|| |jjj|-|タタタッ|TTT|3|| |hold j|-|タン|H|1H|| |8 + hold j|8j|タン|H|1H|C:vim.v.count1 > 1| |j + hold j|5j|タタン|TH|2H|| |jj + hold j|10j|タタタン|TTH|3H|| |jjj + hold j|20j|タタタタン|TTTH|4H|| "5", "10", "20" の値はカスタマイズ可能。”キーコンビネーション設定”参照。 例: - jj + hold j と入力した場合 - 最初のjはTと解釈します。return j - 次のjはTTと解釈します。return j - 次のjでholdに入りますがholdに入ったことはpluginにはまだわかりません。なのでTTTと解釈します。return j - 次のjでholdに入っていたことがわかるのでTTHと解釈します。return 10j - つまり3回"j"で移動した後holdしている限り"10j"で移動します。 ** tap / hold 判定 [#qa0c4727] 同じキーを連続して入力した場合setup で指定した時間間隔を使って判定する - 閾値 -- hold-repeat-interval (t_rep) -- first-hold-interval-lower(t_hold1) -- first-hold-interval-upper(t_hold2) -- tap(t_tap) - 判定 -- if interval <= t_rep : hold repeat [ R ] -- elseif t_hold1 <= interval <= t_hold2 : start hold repeat [ S ] -- elseif interval <= t_tap : tap [ T ] -- else : click [ C ] なお判定式からわかる様に t_rep < interval < t_hold1 はtapに分類されます。 t_tap < interval はclickに分類されます。 ** 支援機能 [#ic0ad232] - 支援モードに入るとキータイプ解析結果を表示する(float window) - メニュー表示(1,2,3で機能を選択) - 1. hold測定 -- hold を何度か試す。time1,2,3 の統計情報を表示する -- <esc>でメニューに戻る - 2. tap測定 -- tapと判定してもらいたいギリギリでゆっくりtapする -- 統計情報を表示する - 3. フリーモード -- 設定値に従ってhold, click などの判定を表示する -- 統計情報を表示する - <ESC>で支援モードを抜ける ** キーコンビネーション設定 [#xdc0975e] 設定table。将来はsetupで変更可能とする。 例 pattern_NH = { keymap = {"h", "j", "k", "l"}, prefix = { "n" } } pattern_TH = { keymap = {"h", "j", "k", "l"}, prefix = { "5" } } pattern_TTH = { keymap = {"h", "j", "k", "l"}, prefix = { "10" } } ここで"NH", "TH", "TTH" はmode表の"pattern(E)"に対応する。 ** 将来構想 [#rf2fba0c] - gj + hold j で"gj" 連続 - 8gj + hold j で"8gj" 連続 : 使わない様な気もする
Do not change timestamp
* spec [#ta285c40] ** 基本方針 [#q1b2bcc3] - キー入力のリズムに対応してexpr keymapを使ってキーを置き換える -- つまりキー入力の履歴をみて置き換えの判断をします - 同じキーの連続入力だけを対象とする - よく使うキーコンビネーションは変化させない - 頻度の低い(と思われる)キーコンビネーションに限って変化させる -- 何をよく使うかは個人差があると思うのでユーザーがカスタマイズできる様にする ** mode [#vd3506d4] - 押し下げたキー(type)とvimに渡すキー(return)。"-"とあるものは"j"を渡す - 変化するのはtypeに書いてある最後のキー。 - つまり次の表では"hold j"以外は変化せずタイプした通りvimに渡る - "j"の部分は"k", "w", "B" などにも対応可能 |key type|return|pattern(J)|pattern(E)|command|note| |j|-|タッ|T|1|| |jj|-|タタッ|TT|2|| |jjj|-|タタタッ|TTT|3|| |hold j|-|タン|H|1H|| |8 + hold j|8j|タン|H|1H|C:vim.v.count1 > 1| |j + hold j|5j|タタン|TH|2H|| |jj + hold j|10j|タタタン|TTH|3H|| |jjj + hold j|20j|タタタタン|TTTH|4H|| "5", "10", "20" の値はカスタマイズ可能。”キーコンビネーション設定”参照。 例: - jj + hold j と入力した場合 - 最初のjはTと解釈します。return j - 次のjはTTと解釈します。return j - 次のjでholdに入りますがholdに入ったことはpluginにはまだわかりません。なのでTTTと解釈します。return j - 次のjでholdに入っていたことがわかるのでTTHと解釈します。return 10j - つまり3回"j"で移動した後holdしている限り"10j"で移動します。 ** tap / hold 判定 [#qa0c4727] 同じキーを連続して入力した場合setup で指定した時間間隔を使って判定する - 閾値 -- hold-repeat-interval (t_rep) -- first-hold-interval-lower(t_hold1) -- first-hold-interval-upper(t_hold2) -- tap(t_tap) - 判定 -- if interval <= t_rep : hold repeat [ R ] -- elseif t_hold1 <= interval <= t_hold2 : start hold repeat [ S ] -- elseif interval <= t_tap : tap [ T ] -- else : click [ C ] なお判定式からわかる様に t_rep < interval < t_hold1 はtapに分類されます。 t_tap < interval はclickに分類されます。 ** 支援機能 [#ic0ad232] - 支援モードに入るとキータイプ解析結果を表示する(float window) - メニュー表示(1,2,3で機能を選択) - 1. hold測定 -- hold を何度か試す。time1,2,3 の統計情報を表示する -- <esc>でメニューに戻る - 2. tap測定 -- tapと判定してもらいたいギリギリでゆっくりtapする -- 統計情報を表示する - 3. フリーモード -- 設定値に従ってhold, click などの判定を表示する -- 統計情報を表示する - <ESC>で支援モードを抜ける ** キーコンビネーション設定 [#xdc0975e] 設定table。将来はsetupで変更可能とする。 例 pattern_NH = { keymap = {"h", "j", "k", "l"}, prefix = { "n" } } pattern_TH = { keymap = {"h", "j", "k", "l"}, prefix = { "5" } } pattern_TTH = { keymap = {"h", "j", "k", "l"}, prefix = { "10" } } ここで"NH", "TH", "TTH" はmode表の"pattern(E)"に対応する。 ** 将来構想 [#rf2fba0c] - gj + hold j で"gj" 連続 - 8gj + hold j で"8gj" 連続 : 使わない様な気もする
View Text Formatting Rules