takker99/ScrapBindings
目的
Non Vimmer向けshortcut manager
背景
interface
instanceを作成するときに、event listenerを登録するtargetを渡す
$ const mousetrap = new Mousetrap(document);
optionsは第2引数にわたす(これは変更なし)
Mousetrap.prototype.bindでキーを登録する
$ mousetrap.bind("<C-j>", command);
$ mousetrap.bind({ gg: goHome, G: goEnd });
同じキー配列に対して、一つしかコマンドを登録できない
2つ登録しようとすると、一番最後に登録しようとしたcommandで上書きされる
Mousetrap.prototype.unbindで解除
$ mousetrap.bind("gg", "G");
Mousetrap.prototype.resetで全解除
実装
2024-05-27 11:37:48 実装してたら、async generatorなしでできちゃった
途中でkey bindingsを追加したい状況が生じたため、classに切り替えた
実装したいこと
モード切り替え?
IME入力にも対応する?
理由は忘れたtakker.icon
やることを減らして早く完成させたかったか
VimはIMEから入力された文字に対応していないので、このscriptでも対応しなくて支障ないと思ったか
同じキー配列に複数のcommandを登録できるようにする?
前に登録したcommandの実行が拒否されたら、次のコマンドが実行される
たとえば、ポップアップがでているときにpを押すと貼り付け、コードブロック中で押すとコード実行を行うとか
2024-05-27
11:55:00 テストする
12:06:58 テスト開始
12:21:08 直った。しかしkey sequenceが動いていない
12:48:20 キー判定をミスってただけだった
12:51:21 無視するキー入力が来たときはtimerを消さない
12:56:07 コマンドの実行に失敗しても、reset()を必ず実行する
13:07:58 <A-t>と<A-t><A-j>がある場合のテストも完了
<A-t><A-j>と入力されればそのコマンドを実行する
<A-t>入力後flushIntervalms間入力がなければ、<A-t>のコマンドを実行する
あー、<A-t>の次になにか入力されたとき、そのkey sequenceとmatchするcommandがなければ、<A-t>にマッチするcommandを即時実行するようにするか
待たずに連続して入力できる
14:17:01 実装完了
ちょっと手こずった
code:mod.ts