C 在我按下键盘上的某个键后,如何使我的程序执行特定的操作?

C 在我按下键盘上的某个键后,如何使我的程序执行特定的操作?,c,console,ascii,C,Console,Ascii,我了解到0x0A是enter键的十六进制ASCII值。所以我想在得到其他键的十六进制ASCII值后,我可以对它们做同样的处理。但是我不知道右箭头键和左箭头键 编辑:我应该提到我使用的是Windows 10。您没有指定操作系统 这个答案将从Windows的角度解决这个问题 两项可以简化Windows环境中的任务: 功能 名单 它与其他键盘定义一样,包括箭头键: VK_左0x25左箭头键 VK\u向上0x26向上箭头键 VK_RIGHT 0x27右箭头键 VK\u向下0x28向下箭头键

我了解到0x0A是enter键的十六进制ASCII值。所以我想在得到其他键的十六进制ASCII值后,我可以对它们做同样的处理。但是我不知道右箭头键和左箭头键


编辑:我应该提到我使用的是Windows 10。

您没有指定操作系统

这个答案将从Windows的角度解决这个问题

两项可以简化Windows环境中的任务:

  • 功能
  • 名单
它与其他键盘定义一样,包括箭头键:

  • VK_左0x25左箭头键

  • VK\u向上0x26向上箭头键

  • VK_RIGHT 0x27右箭头键

  • VK\u向下0x28向下箭头键

总之,这些可以用来使您的代码能够捕获单个击键以及击键组合,检测瞬时和保持状态,所有这些都有助于确定键盘的状态。使用这些,您的代码示例可以实现如下:

if(ch == 0x0A)
{
printf("ENTER KEY was pressed\n");
}
else
{

}
要同时捕获多个击键,您可以执行类似的操作,例如(捕获


下面的链接可能会有所帮助:还有缓冲的问题。我不认为我们可以假设fgetc()会在一次击键后立即返回。如果这是Linux和标准终端仿真器,我有处理这些问题的示例代码。如果是Linux,ncurses提供了易于理解的方法来处理键码转换和缓冲。如果您在Windows上,或针对Windows,我建议使用WinApi,它们允许您检测所有听起来像您想要的键(据我所知)。在linux上,您可能需要通过ASCII键(或者一个函数,如果在给定的系统上可用的话)检查您使用的是什么操作系统?
if(ch == 0x0A)
{
printf("ENTER KEY was pressed\n");
}
else
{

}
void GetAppState(void)
{
    short state=0;
    short state1=0;
    
    state = GetAsyncKeyState(VK_RETURN);
    if (0x80000000 & state) //check instantaineous state of key
    {
       printf("ENTER KEY was pressed\n");
    }
    else
    {
        ...
    } 
    ...... and so on
state = GetAsyncKeyState(VK_CONTROL);
    if (0x80000000 & state) //check instantaineous state of key
    {
        state = GetAsyncKeyState(VK_SHIFT); 
        if (0x80000000 & state) //check instantaineous state of key
        {
            state = GetAsyncKeyState('h'); 
            state1 = GetAsyncKeyState('H'); 
            if ((0x80000000 & state) || 
                (0x80000000 & state1))
            {