Linux 上的 getchar() 可以读取哪些键盘字符

Which keyboard characters can be read with getchar() on Linux

我在 Ubuntu 上有一个 C++ 应用程序 运行,它使用 getchar() 函数等待按键。没有使用输入,我只是用任何按键结束我的程序。

我注意到我基本上可以输入任何 printable character, but also some unprintable 字符,例如 escapebackspace 键。没有触发程序结束的键是 shiftctrl.

等键

所以我的问题是,getchar() 读取哪些按键?我该如何对它们进行分类,因为显然不仅可打印字符会触发 getchar()?

我无法在手册页或 C++ 参考中找到答案。

这基本上就是我写的所有代码:

std::cout << "Ready for input ..." << std::endl;
std::getchar();
std::cout << "A key was pressed, landing ..." << std::endl;

请注意,我确实操纵 termios 不等待换行符并且不回显。

getcharstdin 读取,而不是直接从键盘读取。您对 "keyboard characters" 的假设暗示了您遗漏的那一点。这缺少从 key presses 到字符的翻译。例如,按键按下 Shift+a 产生 A。如何输入 à 取决于 xact 键盘配置。

所以结果是 getchar() 没有捕捉到的键是 Modifier 键。也许只是因为它们只是 "modifiers" 并且总是与另一个键一起使用来创建特定的字符。如果有人知道具体原因,我想知道。