让我们从我的代码看起来然后我将解释我的问题:
int main {
char ch; //Stores key presses
initscr();
raw();
nonl();
keypad(stdscr, TRUE);
noecho();
//Some code
ch = getch();
switch (ch) {
case KEY_UP:{
//Code that works
break;
}
case KEY_ENTER:{
//Some code- that doesn't work problem being the above
break;
}
//Other case statements
}
现在问题:
如果你还没有解决的话,我遇到的问题是,当我按下键盘上的输入/返回键时,绝对没有任何反应。
我尝试将KEY_ENTER
更改为'\n'
- 无效 - 甚至更改char ch
时通过多次迭代,包括int
和wchar_t
。
一切都无济于事,在你说寻找答案之前,让我把我的行李包起来,通过互联网的每个角落进行危险的冒险,我已经试过了,如果我没有,我就不会冒险,寻求援助。
所以现在我的搜索把我带到了这里,我问你 - 网络中可爱的人 - 帮助我寻找我一直在寻找的答案
对于那些可能足够勇敢回答它的人,我向你表示最衷心的感谢和感谢
答案 0 :(得分:0)
试试case '\r':
。 (为了更好的衡量,您可以{test}执行case '\r': case '\n': case KEY_ENTER:
,基本上在testcurs.c中完成,以捕获所有可能性。)调用nonl()
是您获得' \的原因。 R'而不是' \ n'。
关于KEY_ENTER
,我唯一的理由是它标记为“不可靠”#34;在PDCurses评论中。我可以假装它意味着代表键盘"输入"关键,而不是通常标记的关键"返回"在键盘的主要部分...除了PDCurses还有PADENTER
,专门用于此目的。事实上,像PDCurses中的很多东西一样,KEY_ENTER
存在的原因,并且定义它的方式,是一个历史的混乱。