c - 如何在c中表示键(enter,shift,alt,space等)

标签 c

我想知道如何在 C 编程语言中表示像 Enter、Shift 等键。这些键有二进制值吗? 因为我可以借助二进制值 27 来表示 esc 键。 例如:

    int main()
{
    int x;
    char ch;

    while(1)
    {
        ch=getch();
        if(ch==27)
        {
            printf("esc key pressed");
            break;
        }
        else
        {
            printf("%c key pressed\n",ch);
        }
    }
}

在我的程序中,如果我按 esc 它将中断。现在,如果我想用任何其他键(例如 Enter、Shift、Alt)来中断,该怎么做?

最佳答案

其中大部分都依赖于平台。但是,可以使用 keyboard scan codes 检测某些按键。以及以下示例程序:

#include<stdio.h>

int main()
{
    int ch;
    int ascii[10];
    int count=1;
    ch=getchar();
    ascii[0]=ch;
    while (1)       //Loop used for storing successive ASCII values
    {
        ascii[count]=getchar();
        if (ascii[count]==10) break;
        count++;
    }
    if (27==ascii[0] && 79==ascii[1] && 80==ascii[2]) printf("F1 is pressed");
    if (27==ascii[0] && 79==ascii[1] && 81==ascii[2]) printf("F2 is pressed");
    if (27==ascii[0] && 79==ascii[1] && 82==ascii[2]) printf("F3 is pressed");
    if (27==ascii[0] && 91==ascii[1] && 72==ascii[2]) printf("HOME key is pressed");
    return 0;
}

如果您想要一个更有用的示例,而不必在每次击键后按 ENTER,您可以 try disabling input buffering and enabling raw mode.

关于c - 如何在c中表示键(enter,shift,alt,space等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30439094/

相关文章:

c - 错误是在语法中还是在代码中?

c - 从用于写入的 FILE 副本中将数据读入数组

c - 二维数组和指针

c - K&R 练习 1.16 - 线长限制

c - 将数组传递给函数

c - 如何让编译器将头文件放入源文件

c - 使用 pragma pack(1) 时是否存在性能问题?

c - 如果包含数字,如何使整个字符串大写?

c++ - 如何同时启用两个ffplay窗口的音频?(如何同时听到视频文件的音频?)

c - 如何获取CUDA内核的汇编代码?