从cin获取方向键

Getting arrow keys from cin

本文关键字:方向 获取 cin      更新时间:2023-10-16

我相信以前一定有人问过这个问题,但是快速搜索一下什么也没找到。

我如何在c++中获得cin的箭头/方向键?

以前确实有人问过这个问题,答案是你做不到。

c++没有键盘或控制台的概念。它只知道不透明的输入数据流。

您的物理控制台预处理和缓冲您的键盘活动,只发送熟数据到程序,通常逐行。为了直接与键盘对话,你需要一个特定于平台的终端处理库。

在Linux上,这通常是用ncursestermcap/terminfo库完成的。在Windows上,你可以使用pdcurses,或者也许是Windows API(虽然我不熟悉这方面)。

图形应用程序框架,如SDL, Allegro, irrlight或Ogre3D也提供了完整的键盘和鼠标处理。

如果你不介意使用位于conio.h中的getch(),这里有一个指针。

#include <stdio.h>
#include <conio.h>
#define KB_UP 72
#define KB_DOWN 80
#define KB_LEFT 75
#define KB_RIGHT 77
#define KB_ESCAPE 27

int main()
{
   int KB_code=0;
   while(KB_code != KB_ESCAPE )
   { 
     if (kbhit())
      {
            KB_code = getch();
            printf("KB_code = %i n",KB_code);
            switch (KB_code)
            {
                case KB_LEFT:
                           //Do something
                break;
                case KB_RIGHT:
                           //Do something                     
                break;
                case KB_UP:
                           //Do something                     
                break;
                case KB_DOWN:
                           //Do something                     
                break;
            }        
      }
  }
  return 0;
}