外部プログラムでフックされた場合のキー入力イベントに keyup を使う
IME and DiMENSiON という Firefox 拡張を利用してみたのだが、XKeymacs と同時に使用すると問題があった。
Ctrl-\ 等で IME を on/off しても反応しない。
入力エリアの keypress イベント時に IME 状態を取得しているようだが、XKeymacs で定義した IME on/off を実行しても keypress が発生していなかった。
同様に keydown も発生しなかったが、keyup は発生した。
以下の変更で XKeymacs と同時使用できるようになった。
--- overlay.js.org +++ overlay.js @@ -162,7 +162,7 @@ return; } if(isTextInput(focusedElement)){ - focusedElement.addEventListener('keypress',changeBGColor,false); + focusedElement.addEventListener('keyup',changeBGColor,false); focusedElement.addEventListener('blur',returnBGColor,false); document.getElementById("suilen").setIMEStatusToLastFO(); @@ -185,7 +185,7 @@ document.getElementById("suilen").setIMEStatus(false); this.style.backgroundColor=null; this.style.color=null; - this.removeEventListener('keypress',changeBGColor,false); + this.removeEventListener('keyup',changeBGColor,false); this.removeEventListener('blur',returnBGColor,false); }