如何在C中检测使用诅咒按下的箭头键?

如何在C中检测使用诅咒按下的箭头键?,c,input,key,ncurses,curses,C,Input,Key,Ncurses,Curses,在试图通过诅咒(ncurses)从箭头键获取输入时,它不会捕捉到KEY_UP等。我使用了带true参数的键盘函数,但getch仍然返回了一个转义序列。如何在getch()返回的值之间切换,并具体抓取箭头键?标准(类似VT100)终端在按下箭头键时发送一系列字符。您只需跟踪这些按钮是否按顺序按下即可。以下是需要注意的字符: Down Arrow 0x1B 0x5B 0x42 Left Arrow 0x1B 0x5B 0x44 Right Arrow 0x1B 0x5B 0x43 Up Arro

在试图通过诅咒(ncurses)从箭头键获取输入时,它不会捕捉到KEY_UP等。我使用了带true参数的键盘函数,但getch仍然返回了一个转义序列。如何在getch()返回的值之间切换,并具体抓取箭头键?

标准(类似VT100)终端在按下箭头键时发送一系列字符。您只需跟踪这些按钮是否按顺序按下即可。以下是需要注意的字符:

Down Arrow  0x1B 0x5B 0x42
Left Arrow  0x1B 0x5B 0x44
Right Arrow 0x1B 0x5B 0x43
Up Arrow    0x1B 0x5B 0x41

我将
getch()
调用存储为char,而它们应该是int。开关后工作正常

我在Mac OS X上发现了相同的问题。但通过添加以下内容解决了此问题:

keypad(stdscr, TRUE);

是否有转义码可以使用ctrl键作为组合键或序列输入?无需;您可以直接键入它们。0x1B=esc,0x5B=[,0x41-0x44=A-D。在终端中键入esc[D,光标向左移动。这种方法几乎完全违背了使用curses库的全部目的:-)