【问题标题】:Reading arrow keys with C++用 C++ 读取方向键
【发布时间】:2014-11-18 13:46:27
【问题描述】:

我正在编写一个 C++ 应用程序,并且必须阅读是否按下了箭头键。 我只发现了一些只能在 Windows 上运行的功能。

【问题讨论】:

  • 您想在 Xcode 或您的应用程序中捕捉箭头键吗?
  • 我必须在方法中使用方向键的输入。
  • 那就和Xcode无关了。它是命令行应用程序还是您通过 Cocoa 使用 UI?
  • 一个 C++ 命令行应用程序。我认为它与 Xcode 有关,因为我发现的东西只适用于 Windows。
  • Xcode 只是一个 IDE,所以大多数时候它与它无关。您应该查看一些 UNIX 示例,了解如何读出按键并捕捉箭头键。

标签: c++ arrow-keys


【解决方案1】:

你有这样的问题是因为你问错了问题。如果您的应用程序是命令行工具并且可以从终端访问,那么就不可能知道此时按下了哪些键,因为终端可能远离您的应用程序运行的机器并且哪个更重要,有终端没有理由向您发送箭头键按下,因为终端可以使用它们进行文本导航。

因此您可以搜索如何使终端向您发送按键。不是每个终端都支持它,但我认为现代操作系统中的大多数现代终端都支持。

如果您有一个用于在本地运行的 gui 应用程序,并假设您通过插入的键盘控制它。那么您应该搜索您的 gui 工具包的文档。 (QtwxWidgets、原始xorg、windows API 等)

所以对于这个问题没有原生的 C++ 解决方案,因为你的问题在很多情况下都是没有意义的。

因此,您可以使用诸如ncurses 之类的控制台库或Qt 之类的gui 工具包,或者在您的特定情况下搜索本机解决方案,但不要指望最后一种方法在其他机器上无需任何额外代码即可工作。

或者只是搜索可以让你这样做的其他库。

【讨论】:

  • 我从来没有想过像vi和古老的vt-100终端这样的程序可以在21世纪被描述为现代 :-)
【解决方案2】:

正如您所说,您只找到了适用于 Windows 的材料,我假设您正在寻找一种 Linux-Unix 方式。像我这样的老恐龙还记得我们只有真正的控制台(只有键盘和 80x25 显示器)的时代。在这些早期,存在用于解释键盘传输的键并将光标定位在几乎任何终端上的屏幕上的低级库,以及将屏幕用作(仅文本)GUI 的高级库。

对于高级库,您应该寻找 cursesncurses,对于低级功能,您应该寻找 terminfo。

【讨论】:

    猜你喜欢
    • 2012-09-24
    • 2020-12-13
    • 2012-03-14
    • 2012-08-23
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多