Процесс узла.stdin требует нескольких нажатий клавиш для передачи данных в необработанном режиме

#javascript #node.js #terminal #stdin #tty

#javascript #node.js #терминал #stdin #tty

Вопрос:

Я пытаюсь перехватить каждое нажатие клавиши в стандартном режиме с помощью узла 6.7.0. Вот что я делаю:

 process.stdin.setEncoding('utf8');
process.stdin.setRawMode(true);
process.stdin.resume();
process.stdin.on('data', function(data) {
    console.log('data', data);
}.bind(this));
  

Когда я запускаю свою программу, я могу нажать клавишу, и она выйдет из data d системы, но если я нажму несколько клавиш, она выйдет из системы только после трех полных нажатий клавиш. Это очень странно. Кто-нибудь знает, что может происходить? Я использую терминал macOS Sierra.

Комментарии:

1. Похоже, что он захватывает «ввод». это означает результат, который драйвер клавиатуры обеспечивает для стандартного пользовательского ввода. Вероятно, то, что вы ищете, — это получить какую-то функцию keyboardMap, которая возвращает «все еще нажатые клавиши» при каждом вызове

Ответ №1:

Возможно, это то, что вы ищете для событий клавиатуры