2005-11-03 ========== キーバインドの実装 ------------------ Reference URI: http://lowreal.net/logs/2005/11/03/1 Written Time: 2005-11-03T11:38:01+09:00 Tags: script javascript web [textarea で動く劣化コピー xml-mode](/2005/xml-text) の入力まわりを整理して分離してみた。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 () { xm l.indentLine() }, "C-q" : function () { xml.indentBuffer() }, "C- ." : function () { xml.wellClose() }, "/" : function () { xml.slash( ) }, "=" : function () { xml.equal() }, "RET" : function () { xml.newLineAndIndent() } });}window.addEventListener("load", xmlText_initiali ze, true);劣化コピー xml-mode と一緒に使うとき、キャレット位置が若干混乱するのが微妙。なんで 混乱するのかよくわからないのだけれど。 textarea のスクロール位置をセットしなおす方法が分からん。使えないって! event.preventDefault() を使えばキャンセルできるみたいだ。書き換えよう。 あー、しかもブラウザのキーバインド横取りできる。 スクロール問題解決? Ctrl+記号を入力すると文字が誤認される。