【问题标题】:How do I detect arrow keys pressed using curses in C?如何检测在 C 中使用诅咒按下的箭头键?
【发布时间】:2010-11-14 00:53:19
【问题描述】:

在尝试通过 curses (ncurses) 从箭头键获取输入时,它不会捕获为 KEY_UP 等。我使用了带有 true 参数的键盘功能,但 getch 仍然返回了转义序列。如何切换 getch() 返回的值并专门抓取箭头键?

【问题讨论】:

    标签: c input key ncurses curses


    【解决方案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 库的全部目的:-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 2018-12-18
      • 2018-05-08
      • 2014-04-17
      • 1970-01-01
      • 2022-01-12
      相关资源
      最近更新 更多