ScrapVim-lite-3/KeyInput
ScrapVim-lite-3のキー入力をVim key notationに変換するクラス
code:script.js
import {js2vim} from '/api/code/takker/Vim-keymap-converter/script.js';
import {scrapboxDOM} from '/api/code/takker/scrapbox-dom-accessor/script.js';
export class KeyInput {
constructor() {
this._started = false;
this._preventDefaultCallback = undefined;
this._deleteCompositionCharsCallback = undefined;
}
start() {
if (this._started) return;
scrapboxDOM.editor.addEventListener('keydown', e => this._handleKeyDown(e));
scrapboxDOM.editor.addEventListener('compositionend', e => this._handleCompositionEnd(e));
this._started = true;
}
やること
キー入力を取得する
keydownのイベント監視
code:script.js
_handleKeyDown(e) {
const keyMap = js2vim(e);
}
compositionendのイベント監視
入力確定後、editorに流し込まれた文字列がそれぞれ1文字ずつ入力されたとみなして、ScrapVim-lite-3/command文字列に変換する
流し込まれた文字列を削除するかどうかは外部の関数で決める
これ取得したvim key mapをどうやってScrapVim-lite-3/Modeに渡すんだ?
callback関数を外部から指定してもらう?
キー入力のイベント監視と、キー入力を変換する部分とを切り分ける?
この場合、イベント監視をScrapVim-lite-3/ScrapVimで行うことになるかな
イメージ
this.converter(e, (key)=>this.mode.preventDefault(key)).forEach(key=>this.mode.parse(key))
キー入力を/icons/javascript.icon形式からScrapVim-lite-3/command文字列に変換する
Vim-keymap-converterを使う
default動作を握りつぶす
Normal Modeで文字入力を無効にしたりするのに使う
握りつぶすキーの指定はScrapVim-lite-3/Mode#5fdb61371280f0000021c665で指定する
#2020-12-18 00:16:22
#2020-12-13 05:48:05