如何检测在 C 中使用诅咒按下的箭头键?
Posted
技术标签:
【中文标题】如何检测在 C 中使用诅咒按下的箭头键?【英文标题】:How do I detect arrow keys pressed using curses in C? 【发布时间】:2010-11-14 00:53:19 【问题描述】:在尝试通过 curses (ncurses) 从箭头键获取输入时,它不会捕获为 KEY_UP 等。我使用了带有 true 参数的键盘功能,但 getch 仍然返回了转义序列。如何切换 getch() 返回的值并专门抓取箭头键?
【问题讨论】:
【参考方案1】:我将getch()
调用存储为char,而它们应该是int。切换后完美运行。
【讨论】:
【参考方案2】:我在 Mac OS X 上发现了同样的问题。但通过添加以下内容已解决:
keypad(stdscr, TRUE);
【讨论】:
这对我有用。【参考方案3】:当按下箭头键时,标准(VT100 类)终端会发送一系列字符。您只需要跟踪这些是否按顺序按下。以下是要注意的字符:
Down Arrow 0x1B 0x5B 0x42
Left Arrow 0x1B 0x5B 0x44
Right Arrow 0x1B 0x5B 0x43
Up Arrow 0x1B 0x5B 0x41
【讨论】:
您是否可以使用 ctrl 作为组合键或序列输入转义码? 不需要;您可以直接键入它们。 0x1B = esc, 0x5B = [, and 0x41 - 0x44 = A - D。在终端中输入 esc[D,光标向左移动。 这种方法一开始就完全违背了使用 curses 库的全部目的:-)以上是关于如何检测在 C 中使用诅咒按下的箭头键?的主要内容,如果未能解决你的问题,请参考以下文章