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

Lua*_*ico 8 c io input

我有这个程序C,读取输入如下:

cod1 = getch ();
  if (kbhit())
    cod2 = getch ();
Run Code Online (Sandbox Code Playgroud)

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

Vyk*_*tor 6

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

例如Alt+<Whatever>,通常保留用于菜单快捷方式(例如Alt+F打开File菜单).一旦你持有Alt(F强调了File),匹配的字符通常是高亮的.

Ctrl+S 保留Stops all output on screen (XOFF)(再次终端仿真程序这一点).

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

  • 请注意,您可以使用`stty -ixon`关闭终端中的XON/XOFF. (3认同)