jQuery Terminal のAndroid に問題があります。ほぼ修正しました。テストしたデバイスで動作します。デモ。しかし、一部のデバイスではキープレスイベントがまったく発生しないようです (キープレスをエコーする必要があります)。
モバイルでは、仮想キーボードが開いているので、テキストエリアに焦点を合わせ続けるコードがあります(クリップボードを再利用しました)。
私はキーダウンでこのコードを持っています:
function keydown_event(e) {
...
if (enabled) {
...
} else {
// this get fired while typing
$.terminal.active().echo('keydown else');
prevent_keypress = false;
return;
}
// this will prevent for instance backspace to go back one page
prevent_keypress = true;
$.terminal.active().echo('keydown return false');
return false;
}
...
}
}
そしてキープレスで:
var doc = $(document.documentElement || window);
doc.bind('keypress.cmd', function(e) {
var result;
if (e.ctrlKey && e.which === 99) { // CTRL+C
return;
}
// this line never get fired while typing
$.terminal.active().echo('keypress');
if (prevent_keypress) {
$.terminal.active().echo('prevent');
return;
}
if (!reverse_search && $.isFunction(options.keypress)) {
result = options.keypress(e);
}
if (result === undefined || result) {
...
self.insert(String.fromCharCode(e.which));
...
} else {
return result;
}
}).bind('keydown.cmd', keydown_event);
誰もが同じ問題を抱えていて、それを修正する方法を知っています。私のデバイスで動作するので、私にとっては難しいです.
更新問題を特定するための簡単なテストを作成しましたが、キープレスがまったく起動されていないようです。