8

我有这个程序,C它读取这样的输入:

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

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

4

1 回答 1

6

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

例如Alt+<Whatever>,通常为菜单快捷方式保留(例如Alt+F打开File菜单)。按住后通常会突出显示匹配的字符AltFget 中的下划线File)。

Ctrl+S 保留用于Stops all output on screen (XOFF)(您的终端仿真器再次这样做)。

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

于 2012-11-15T10:48:30.450 回答