如何在不按C / Mac Os中的“返回”的情况下从键盘获取输入
答案 0 :(得分:5)
在具有终端的类Unix系统上(我认为MacOS X符合条件),那么您需要将终端设置为所谓的“cbreak”模式。关键是终端保持数据直到按下“return”,这样你的C代码就什么也做不了,除非它指示终端不做这样的缓冲。这通常称为“cbreak模式”,涉及tcsetattr()
函数。
发现一点谷歌搜索this code似乎没问题。终端处于cbreak模式后,您就可以读取标准getchar()
或fgetc()
来电时的数据。
答案 1 :(得分:5)
来自comp.lang.c FAQ: How can I read a single character from the keyboard without waiting for the RETURN key? How can I stop characters from being echoed on the screen as they're typed?
答案 2 :(得分:2)
如果您必须自己处理细节,请使用curses变体。如果它可用,则更喜欢“ncurses”而不是“curses”。请注意,某些键是“Meta”键,它们实际上只是修改基本键代码。读取键输入有几种“模式”,范围从“熟”到“部分熟”到“原始”。每种模式都有自己的特点,请仔细阅读文档。
有时最好使用各种游戏编程库中的现有键处理代码,我听说使用SDL的键扫描循环有一些好的结果。那是一段时间了,所以也许存在更新(和更好)的工具包。