textarea で動く劣化コピー xml-mode の入力まわりを整理して分離してみた。C-x i とかいうツーストローク以上のキーバインドも可能に。ただ、やっぱり文字入力をキャンセルさせる方法がわからないため、入力された文字をあとから削除する方法になってる。チラつく。

これである程度自由にキーバインドが変えられるようになった。

function xmlText_initialize() {
var xml = new xmlText(document.getElementById("xmltext"));
var kb = new keyBinding(document.getElementById("xmltext"), {
"C-x i" : function () { xml.indentLine() },
"TAB"   : function () { xml.indentLine() },
"C-q"   : function () { xml.indentBuffer() },
"C-."   : function () { xml.wellClose() },
"/"     : function () { xml.slash() },
"="     : function () { xml.equal() },
"RET"   : function () { xml.newLineAndIndent() }
});
}
window.addEventListener("load", xmlText_initialize, true);

劣化コピー xml-mode と一緒に使うとき、キャレット位置が若干混乱するのが微妙。なんで混乱するのかよくわからないのだけれど。

textarea のスクロール位置をセットしなおす方法が分からん。使えないって!

event.preventDefault() を使えばキャンセルできるみたいだ。書き換えよう。

あー、しかもブラウザのキーバインド横取りできる。

スクロール問題解決?

Ctrl+記号を入力すると文字が誤認される。

  1. トップ
  2. script
  3. キーバインドの実装
  1. トップ
  2. javascript
  3. キーバインドの実装
  1. トップ
  2. web
  3. キーバインドの実装