8

私は小さなxterm.jsアプリケーションを開発しています (始めたばかりです)。ユーザーが Enter キーを押したときに現在の行からテキストを取得する方法を知りたいです。プログラムは次のとおりです。

var term = new Terminal();
term.open(document.getElementById('terminal'));
term.prompt = () => {
  term.write('\r\n$ ');
};
term.writeln('This is a shell emulator.');
term.prompt();

term.on('key', function(key, ev) {
  const printable = !ev.altKey && !ev.altGraphKey && !ev.ctrlKey && !ev.metaKey;

  if (ev.keyCode === 13) {
    term.prompt();
    console.log(curr_line);
    var curr_line = ""
  } else if (ev.keyCode === 8) {
    // Do not delete the prompt
    if (term.x > 2) {
      curr_line = curr_line.slice(0, -1);
      term.write('\b \b');
    }
  } else if (printable) {
    curr_line += ev.key;
    console.log(curr_line, ev.key)
    term.write(key);
  }
});

term.on('paste', function(data) {
  term.write(data);
});

xterm.js ホームページからの例 (および変更済み)

ご覧のとおり、私の試行では、イベントを取得するたびにテキスト行に追加するkey(またはバックスペースで削除する) 必要があります。ただし、これは非同期関数内にあるため機能しません。

xterm.js現在の行の内容を取得できる別の機能が付属していますか、それとも別の回避策がありますか? 私のGoogle検索は役に立ちませんでした。

4

1 に答える 1