Edit of
keyevent/13.HH_scheme
Top
/
keyevent
/
13.HH_scheme
[
Front page
] [
Edit
|
Diff
|
History
|
Attach
|
Reload
] [
New
|
Page list
|
Search
|
Recent changes
|
Help
]
-- Use page as template --
(no template pages)
** help [#e95b1bba] ===== keyevent.nvim : color scheme demo ===== HH + HH ( click H, tap H, click H, tap H ) でこの画面を表示 click H : click するたびに color scheme 変更 H 長押し : key release でcolor scheme slide show 開始。長押ししている時間がslide show interval tap H + H 長押し : 逆順でslide show 開始 任意のkey : slide show 終了 Esc : demo 終了 ----- color name : dark slide show interval : 1234 ms ** 案1 [#v85577f4] - CTRE の組み合わせ - key sequence - hold 中 meta (mac only) - Break ? |#|state|key|meta|type|next|type|action|note| |1|NORMAL|H|0|C|-|single(tan)|vim H|| |2|NORMAL|hhhh|SSSS|CTCT|DEMO|tap-click(tatan-tatan)|demo start|show help win この表を表示する。color scheme の名前を表示する| |3|else|<Esc>|<Esc>|C|NORMAL|single(tan)|demo end|close help win| |4|DEMO|h|S|C|-|click(tan)|next color scheme|slide show でなければ次のcolor shecmeへ| |5|DEMO|hh|SS|CR|HOLD|hold(taan)|slide show 開始準備|holdしていた時間がslide show interval になる| |6|DEMO|hhh|SSS|CTR|HOLD|tap-hold(tataan)|slide show 逆開始準備|holdしていた時間がslide show interval になる(逆順)| |7|HOLD|WILD|WILD|E|SLIDE|hold end(release)|start slide show|slide show 開始| |8|HOLD|WILD|WILD|WILD|DEMO|hold end|reset|reset| |9|SLIDE|WILD|WILD|WILD|DEMO|any(EB)|stop slide show|slide show 中に押すとslide show停止| ** 案2 [#v85577f4] repeat ___ hold ___ tap | click -----------|------------ key j hw hist 1 58 hist 2 3 hist 1 ----- seq type CTTHEC key hhhh 🔥 meta SSSS x ** key [#ta317906] key_seq = { keys = { "h", "h", "h", "h" }, metas = {META.S, META.S, META.S, META.S }, types = { TAP, CLICK, TAP, CLICK } } ** ai [#s4440ed5] はい、その方向がかなり良いと思います。 ''keyevent.nvim'' のサンプルは「便利なプラグイン集」ではなく、**keyevent がどんなイベントを生成でき、それをどう利用できるかを触って分かるデモ**にした方が、ライブラリとしての価値が伝わります。 特に、 - C:click - T:tap - H:repeat - ''nt'' による連打 - キー列 - meta key - repeat 中のイベント(meta?) - repeat_end - (長押し中の ''nr'':hold time) - (''prev_key'') などを、**一つの小さな playground で体験できる**のが面白いです。 *** 例えばこんなデモ [#t13fa7f5] |操作|動作|見せたいもの| |---|---|---| |''H''|Vim の ''H''|通常のキーを壊さない| |''HH''|Demo help|''nt'' / 連打| |''M''|カーソルが画面中央付近を移動|click| |''M'' 長押し|10 repeat ごとにスキン変更|''repeat'', ''nr''| |''MM''|別のものを順番に切替|''nt''| |''HM''|メッセージ popup|''prev_key'' / key sequence| |''M'' 長押し→離す|元のスキンに戻す|''repeat_end''| |''H'' 長押し|''H'' を普通に繰り返す|Vim の通常 repeat との共存| この「**同じキーでも、押し方によって意味が変わる**」というのが ''keyevent'' のデモとして非常に分かりやすいです。 --- *** ''M'' は特に良い題材だと思います [#mb86f83f] ただカーソルを動かすだけだと少し地味なので、 > **M = Magic** くらいにしてしまって、 M → magic click MM → magic tap M hold → magic repeat とすると、同じキーに3種類のイベントを割り当てられます。 例えば通常の ''M'' では、 ● が画面中央付近を少しずつ移動する。 そして ''M'' 長押しでは、 M repeat 10 → skin 2 repeat 20 → skin 3 repeat 30 → skin 1 ... と、カーソル位置の表示方法を normal → crosshair → box → target → normal ... のように変える。 離した瞬間に元へ戻す。 これは実用性ではなく、**「repeat イベントってこういうことか」**が目で分かります。 --- *** ''MM'' は「別の軸」にすると面白い [#tfde269c] ''M'' の長押しが **時間方向**なら、 ''MM'' は **入力回数方向**にすると対比がきれいです。 例えば、 MM のたびに ● ○ ◎ ⊙ ◉ ● ... のようなカーソルマーカーを順番に変更する。 つまり、 M click MM tap / nt M hold repeat で、**同じ M に対して event type の違いが視覚的に現れる**わけです。 --- *** ''HM'' は「イベント列」のデモ [#a271222f] これも良いと思います。 例えば、 HM で |keyevent.nvim| || |H → M| |key sequence demo| のような小さな通知を出す。 ここでは単純に ''H'' と ''M'' を個別に見るだけでなく、 prev_key == "H" key == "M" という **イベントの文脈**を利用していることを示せます。 --- ## そして ''HH'' → help が非常に良い これは特に好きです。 最初の H は完全に Vim の ''H''。 しかし、 HH なら keyevent.nvim demo ────────────────── H Vim H HH this help M move magic MM change marker M hold change skin HM popup ... となる。 つまり **「既存の Vim 操作を保ったまま、tap/sequence を上に重ねられる」**ということが一発で分かります。 そして ''HHH'' なども将来、 HH help HHH event monitor HHHH diagnosis と拡張できます。 --- ## さらに一つ入れるなら「イベント可視化」 これは ''keyevent.nvim'' ならではなので、サンプルとしてかなり価値があります。 例えば右下に小さく |key: M| |type: repeat| |nt: 1| |nr: 23| |interval: 83| |meta: -| と表示する。 キーを押すたびにリアルタイムで変わる。 これなら、 M M M とタップしたときと、 M──────────── と長押ししたときの違いが目で見えます。 これは「サンプル」というより、**keyevent の実験器**ですね。 --- 私は最終的には、 examples/ basic.lua demo.lua のように大量のサンプルを並べるより、 **''demo.lua'' 一つで keyevent の性質を遊びながら全部見せる** [#j3df59ca] くらいが、このプロジェクトには合っていると思います。 特に今回の > ''H'' → Vimそのまま > ''HH'' → help > ''M'' → click > ''MM'' → tap > ''M'' hold → repeat > ''HM'' → sequence という構成は、**keyevent の API ドキュメントを読まなくても「なるほど、こういうイベントが取れるのか」と理解できる**ので、かなり良いデモになりそうです。
Do not change timestamp
** help [#e95b1bba] ===== keyevent.nvim : color scheme demo ===== HH + HH ( click H, tap H, click H, tap H ) でこの画面を表示 click H : click するたびに color scheme 変更 H 長押し : key release でcolor scheme slide show 開始。長押ししている時間がslide show interval tap H + H 長押し : 逆順でslide show 開始 任意のkey : slide show 終了 Esc : demo 終了 ----- color name : dark slide show interval : 1234 ms ** 案1 [#v85577f4] - CTRE の組み合わせ - key sequence - hold 中 meta (mac only) - Break ? |#|state|key|meta|type|next|type|action|note| |1|NORMAL|H|0|C|-|single(tan)|vim H|| |2|NORMAL|hhhh|SSSS|CTCT|DEMO|tap-click(tatan-tatan)|demo start|show help win この表を表示する。color scheme の名前を表示する| |3|else|<Esc>|<Esc>|C|NORMAL|single(tan)|demo end|close help win| |4|DEMO|h|S|C|-|click(tan)|next color scheme|slide show でなければ次のcolor shecmeへ| |5|DEMO|hh|SS|CR|HOLD|hold(taan)|slide show 開始準備|holdしていた時間がslide show interval になる| |6|DEMO|hhh|SSS|CTR|HOLD|tap-hold(tataan)|slide show 逆開始準備|holdしていた時間がslide show interval になる(逆順)| |7|HOLD|WILD|WILD|E|SLIDE|hold end(release)|start slide show|slide show 開始| |8|HOLD|WILD|WILD|WILD|DEMO|hold end|reset|reset| |9|SLIDE|WILD|WILD|WILD|DEMO|any(EB)|stop slide show|slide show 中に押すとslide show停止| ** 案2 [#v85577f4] repeat ___ hold ___ tap | click -----------|------------ key j hw hist 1 58 hist 2 3 hist 1 ----- seq type CTTHEC key hhhh 🔥 meta SSSS x ** key [#ta317906] key_seq = { keys = { "h", "h", "h", "h" }, metas = {META.S, META.S, META.S, META.S }, types = { TAP, CLICK, TAP, CLICK } } ** ai [#s4440ed5] はい、その方向がかなり良いと思います。 ''keyevent.nvim'' のサンプルは「便利なプラグイン集」ではなく、**keyevent がどんなイベントを生成でき、それをどう利用できるかを触って分かるデモ**にした方が、ライブラリとしての価値が伝わります。 特に、 - C:click - T:tap - H:repeat - ''nt'' による連打 - キー列 - meta key - repeat 中のイベント(meta?) - repeat_end - (長押し中の ''nr'':hold time) - (''prev_key'') などを、**一つの小さな playground で体験できる**のが面白いです。 *** 例えばこんなデモ [#t13fa7f5] |操作|動作|見せたいもの| |---|---|---| |''H''|Vim の ''H''|通常のキーを壊さない| |''HH''|Demo help|''nt'' / 連打| |''M''|カーソルが画面中央付近を移動|click| |''M'' 長押し|10 repeat ごとにスキン変更|''repeat'', ''nr''| |''MM''|別のものを順番に切替|''nt''| |''HM''|メッセージ popup|''prev_key'' / key sequence| |''M'' 長押し→離す|元のスキンに戻す|''repeat_end''| |''H'' 長押し|''H'' を普通に繰り返す|Vim の通常 repeat との共存| この「**同じキーでも、押し方によって意味が変わる**」というのが ''keyevent'' のデモとして非常に分かりやすいです。 --- *** ''M'' は特に良い題材だと思います [#mb86f83f] ただカーソルを動かすだけだと少し地味なので、 > **M = Magic** くらいにしてしまって、 M → magic click MM → magic tap M hold → magic repeat とすると、同じキーに3種類のイベントを割り当てられます。 例えば通常の ''M'' では、 ● が画面中央付近を少しずつ移動する。 そして ''M'' 長押しでは、 M repeat 10 → skin 2 repeat 20 → skin 3 repeat 30 → skin 1 ... と、カーソル位置の表示方法を normal → crosshair → box → target → normal ... のように変える。 離した瞬間に元へ戻す。 これは実用性ではなく、**「repeat イベントってこういうことか」**が目で分かります。 --- *** ''MM'' は「別の軸」にすると面白い [#tfde269c] ''M'' の長押しが **時間方向**なら、 ''MM'' は **入力回数方向**にすると対比がきれいです。 例えば、 MM のたびに ● ○ ◎ ⊙ ◉ ● ... のようなカーソルマーカーを順番に変更する。 つまり、 M click MM tap / nt M hold repeat で、**同じ M に対して event type の違いが視覚的に現れる**わけです。 --- *** ''HM'' は「イベント列」のデモ [#a271222f] これも良いと思います。 例えば、 HM で |keyevent.nvim| || |H → M| |key sequence demo| のような小さな通知を出す。 ここでは単純に ''H'' と ''M'' を個別に見るだけでなく、 prev_key == "H" key == "M" という **イベントの文脈**を利用していることを示せます。 --- ## そして ''HH'' → help が非常に良い これは特に好きです。 最初の H は完全に Vim の ''H''。 しかし、 HH なら keyevent.nvim demo ────────────────── H Vim H HH this help M move magic MM change marker M hold change skin HM popup ... となる。 つまり **「既存の Vim 操作を保ったまま、tap/sequence を上に重ねられる」**ということが一発で分かります。 そして ''HHH'' なども将来、 HH help HHH event monitor HHHH diagnosis と拡張できます。 --- ## さらに一つ入れるなら「イベント可視化」 これは ''keyevent.nvim'' ならではなので、サンプルとしてかなり価値があります。 例えば右下に小さく |key: M| |type: repeat| |nt: 1| |nr: 23| |interval: 83| |meta: -| と表示する。 キーを押すたびにリアルタイムで変わる。 これなら、 M M M とタップしたときと、 M──────────── と長押ししたときの違いが目で見えます。 これは「サンプル」というより、**keyevent の実験器**ですね。 --- 私は最終的には、 examples/ basic.lua demo.lua のように大量のサンプルを並べるより、 **''demo.lua'' 一つで keyevent の性質を遊びながら全部見せる** [#j3df59ca] くらいが、このプロジェクトには合っていると思います。 特に今回の > ''H'' → Vimそのまま > ''HH'' → help > ''M'' → click > ''MM'' → tap > ''M'' hold → repeat > ''HM'' → sequence という構成は、**keyevent の API ドキュメントを読まなくても「なるほど、こういうイベントが取れるのか」と理解できる**ので、かなり良いデモになりそうです。
View Text Formatting Rules