Readline: Function keys (e.g. F1) return "undefined" key name
- Version: v14.11.0
- Platform: Linux 5.4.0-42-generic // Ubuntu 20.04 // x64
- Subsystem: readline.emitKeypressEvents (exact place in code: here)
What steps will reproduce the bug?
- Execute the code below in a terminal.
- Press Alt+F3 (see Additionnal information).
const { StringDecoder } = require('string_decoder')
const { emitKeypressEvents } = require('readline')
const stdin = process.openStdin();
emitKeypressEvents(stdin);
if (stdin.isTTY) {
console.log('Standard input is a TTY');
stdin.setRawMode(true);
}
const strDecoder = new StringDecoder('utf8');
const escapeEsc = (str) => str?.replace(/\x1b/g, 'ESC');
stdin.on('keypress', (str, key) => {
// key.name === "undefined" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< HERE
console.log('KEYPRESS => data: «%o», key: %o', escapeEsc(str), key);
});
stdin.on('data', (data) => {
const str = strDecoder.write(data);
console.log('DATA => decoded: «%s», raw: %o', escapeEsc(str), data);
});
How often does it reproduce? Is there a required condition?
Every time!
What is the expected behavior?
key.name
should contain the name of the function key (e.g. "f1"
).
See Additional information.
What do you see instead?
key.name
contains "undefined"
(as a string / not undefined
).
See Additional information.
Output after pressing Alt + F3
Additional information
Tested key combinations (expected/current result)
The key combinations where the 3rd and 4th columns contain ??? could not be tested cause they were already bound to something else like Alt + F4 which closes the application.