为什么我不能在C中读取Ctrl + S?

时间:2012-11-15 10:38:39

标签: c input io

我在C中有这个程序读取输入:

cod1 = getch ();
  if (kbhit())
    cod2 = getch ();

我可以读取每个 Ctrl + Char 可能的序列,除了 Ctrl + C ,它关闭了程序 - 没关系, Ctrl + S ,那个简单就是没有捕获。但是我想让 Ctrl + S 成为我程序中的保存功能;我怎么能这样做?此外,是否可以读取 Alt + Char 字符?因为它将其作为常规字符读取,例如, Alt + A 的读取代码与 A 相同。

1 个答案:

答案 0 :(得分:6)

您的问题是输入可能会被终端模拟器吃掉。

例如,Alt+<Whatever>通常会保留用于菜单快捷方式(例如Alt+F打开File菜单)。在AltF File得到强调后,匹配的字符通常会被点亮。

对于Ctrl+S

Stops all output on screen (XOFF) is reserved(您的终端模拟器也会这样做)。

至于在命令行应用程序中使用Alt+<...>作为快捷方式。至于我担心持有Alt并不会影响收到的字符,它只会设置难以在控制台中访问的标志。即使在GUI应用程序(在Windows中),它也非常棘手,您必须使用GetAsyncState()之类的功能来检查是否按下了alt。