我在 C++ 中使用 _getch() 并且我想知道它是不是可以检测到箭头键而不是其他键

Posted

技术标签:

【中文标题】我在 C++ 中使用 _getch() 并且我想知道它是不是可以检测到箭头键而不是其他键【英文标题】:I'm using _getch() in C++ and i want to know if it can detect the arrow keys instead of the other keys我在 C++ 中使用 _getch() 并且我想知道它是否可以检测到箭头键而不是其他键 【发布时间】:2021-01-11 16:32:57 【问题描述】:

如果你们想知道,它是一个控制台应用程序,我真的不介意只使用 WASD,但我不介意能够使用箭头键。

        char _input = 0;
        char _up = 'Z';
        char _down = 'S';
        char _left = 'Q';
        char _right = 'D';
        do
        
            _input = _getch();

            switch (_input)
            
                case 'Z':
                case 'z':
                    _input = _up;
                    break;
                case 'Q':
                case 'q':
                    _input = _left;
                    break;
                case 'S':
                case 's':
                    _input = _down;
                    break;
                case 'D':
                case 'd':
                    _input = _right;
                    break;
            
         while (_input == 0);

【问题讨论】:

嘿!你能添加一些你写的代码吗?为了能够帮助您,重要的是要了解您实际尝试做什么。理解特定代码中的流程所需的最少代码应该足够了(方法或类,如果它很小)。 我不认为这很重要,但已经完成了 方向键可能需要两次读取。读取的第一个值是扩展代码,然后第二个键是箭头键值。取决于操作系统。 操作系统是windows 10 如果您对 _getch() 或 _getche() 的调用返回 0 或 0xE0,那么下一次对 _getch() 的调用将为您提供特殊的键码。 【参考方案1】:

这里是original answer:

检查以下值:

KEY_UP = 72
KEY_DOWN = 80
KEY_LEFT = 75
KEY_RIGHT = 77

喜欢

#define KEY_UP  72
...
...
do

    _value= _getch();
    switch(_value) 
        case KEY_UP: ...
        ...
    
 while (...);
...

以及定义所有键盘值的docs。

【讨论】:

以上是关于我在 C++ 中使用 _getch() 并且我想知道它是不是可以检测到箭头键而不是其他键的主要内容,如果未能解决你的问题,请参考以下文章

诅咒库:为啥 getch() 清除我的屏幕?

getch() 等待 Enter 键? [复制]

Qt 5.0:向 Javascript 公开 C++ 方法

在 C++ 中将数字转换为字符串的最佳方法? [复制]

C++ 程序中的暂停控制台

getch