我在C
中有这个程序读取输入:
cod1 = getch ();
if (kbhit())
cod2 = getch ();
我可以读取每个 Ctrl + Char 可能的序列,除了 Ctrl + C ,它关闭了程序 - 没关系, Ctrl + S ,那个简单就是没有捕获。但是我想让 Ctrl + S 成为我程序中的保存功能;我怎么能这样做?此外,是否可以读取 Alt + Char 字符?因为它将其作为常规字符读取,例如, Alt + A 的读取代码与 A 相同。
答案 0 :(得分:6)
您的问题是输入可能会被终端模拟器吃掉。
例如,Alt+<Whatever>
通常会保留用于菜单快捷方式(例如Alt+F
打开File
菜单)。在Alt
中F
File
得到强调后,匹配的字符通常会被点亮。
Ctrl+S
, Stops all output on screen (XOFF)
is reserved(您的终端模拟器也会这样做)。
至于在命令行应用程序中使用Alt+<...>
作为快捷方式。至于我担心持有Alt
并不会影响收到的字符,它只会设置难以在控制台中访问的标志。即使在GUI应用程序(在Windows中),它也非常棘手,您必须使用GetAsyncState()
之类的功能来检查是否按下了alt。