在C中没有“返回”的情况下从键盘获取输入

如何在不按C / Mac Os中的“返回”的情况下从键盘获取输入

在具有终端的类Unix系统上(我认为MacOS X符合条件),那么您需要将终端设置为所谓的“cbreak”模式。 关键是终端保持数据直到按下“返回”,这样你的C代码就什么也做不了,除非它指示终端不做这样的缓冲。 这通常称为“cbreak模式”,涉及tcsetattr()函数。

有点谷歌搜索发现这个代码似乎很好。 终端处于cbreak模式后,您将能够读取标准getchar()fgetc()调用所附带的数据。

来自comp.lang.c FAQ: 如何在不等待RETURN键的情况下从键盘读取单个字符? 如何在键入字符时阻止字符在屏幕上回显?

如果您必须自己处理细节,请使用curses变体。 如果它可用,则更喜欢“ncurses”而不是“curses”。 请注意,某些键是“Meta”键,它们实际上只是修改基本键代码。 读取键输入有几种“模式”,范围从“熟”到“部分熟”到“原始”。 每种模式都有自己的特点,请仔细阅读文档。

有时最好使用来自各种游戏编程库的现有密钥处理代码,我听说使用SDL的关键扫描循环可以获得一些好的结果。 那是一段时间,所以也许存在更新(和更好)的工具包。