如何等待特定的击键?

Posted

技术标签:

【中文标题】如何等待特定的击键?【英文标题】:How to wait for a specific keystroke? 【发布时间】:2017-03-20 02:26:45 【问题描述】:

我对 C++ 有点陌生,所以请原谅我有点小白。

有什么功能可以让控制台暂停直到按下特定键?

例如:

#include <iostream>

using namespace std;

int main()

    int i = 0;

    if (specific key pressed) 
        i = 1;
     else if (other key pressed) 
        i = 2;
    

    cout << i << endl;

    return 0;

如果按下右键,控制台应该输出 1,如果按下另一个键,则输出 2。

【问题讨论】:

您所说的“特定键”是指特定的字符,还是像箭头键这样没有视觉表现的东西? int i - 0; 毫无意义。请在此处停止“键入”代码,而是从您的 IDE 中粘贴它。 在不了解您的控制台的情况下,我们无法知道它是否可以做到这一点,或者如果可以,如何做到这一点。 取决于平台。如果是 Windows,请查看这些线程 ***.com/questions/24708700/… ***.com/questions/2067893/c-console-keyboard-events 【参考方案1】:

您尝试做的事情有点复杂,C++ 利用 cin 流,将控制台的输入馈送到您的程序中。作为按键事件,操作系统将处理并且会因操作系统而异。所以使用这样的东西需要用户按回车键才能让程序接收输入。

char key;
std::cin >> key;
if (key == 'a') 
    std::cout << 1;

else 
    std::cout << 2;

在这里找到一些答案How to handle key press events in c++

【讨论】:

以上是关于如何等待特定的击键?的主要内容,如果未能解决你的问题,请参考以下文章

如何对 NSUndoManager+UITextInput 的击键进行分组

如何在 Windows 上使用 C++ 监听终端外的击键

如何在 C# 中正确捕获用户的击键,即尊重 SHIFT 键等

如何将异步方法绑定到 Tkinter 中的击键?

如何让 python 检测键盘的击键并根据 Windows 中的输入键发送不同的字符串

32 位程序无法捕获在 32 位进程上进行的击键,但能够捕获在 64 位进程上进行的击键