如何在C中检测ESC键?

xix*_*xix 2 c

我写了一段代码来检测箭头键使用_getch();,我也希望检测esc键,但我实际上不知道我应该使用的数字是什么,所以任何帮助表示赞赏.

#include <conio.h>
#include <stdio.h>
#define KEY_UP 72
#define KEY_DOWN 80
#define KEY_LEFT 75
#define KEY_RIGHT 77

int c = 0;
_getch();
switch ((c = _getch())) {
case KEY_UP:
    printf("Up\n");
    break;
case KEY_DOWN:
    printf("Down\n");
    break;
case KEY_LEFT:
    printf("Left\n");
    break;
case KEY_RIGHT:
    printf("Right\n");
    break;
default:
    printf("Null\n");
    break;
Run Code Online (Sandbox Code Playgroud)

每个箭头键是ascii代码224和定义的两个字符的组合(注意第一个_getch();),但我不知道对于转义键,我尝试搜索但没有找到它们,这些的完整列表将如此很有帮助.

谢谢.

For*_*Bru 6

ESC27ASCII 格式的。

因此,您想要#define ESC 27检查 . 返回的值_getch

这是一个 ASCII 表


Ahm*_*tfy 6

Up,Down,Left,Right被称为扩展密钥并检测它们你需要读取两个Char第一个是Null第二个是ASCII代码但ESC不是扩展密钥,所以你只能用一个检测它char.

我希望代码可以帮助您:

#include <stdio.h>
#include <stdlib.h>

#define esc 27

int main()
{
    char ch;
    do
    {
        ch = getch();
        switch(ch)
        {
            case esc:
                // your logic goes here
                break;
        }
    }
    while(exitflag != 1);
}
Run Code Online (Sandbox Code Playgroud)