getch() 函数返回箭头键(和其他一些特殊键)的两个键码,如 FatalError 的注释中所述。它首先返回 0 (0x00) 或 224 (0xE0),然后返回标识所按下键的代码。
对于箭头键,它首先返回 224,然后是 72(上)、80(下)、75(左)和 77(右)。如果按下数字键盘箭头键(关闭 NumLock),getch () 首先返回 0 而不是 224。
请注意,getch() 没有以任何方式标准化,并且这些代码可能因编译器而异。这些代码由 Windows 上的 MinGW 和 Visual C++ 返回。
一个方便的程序来查看 getch () 对各种键的操作是:
#include <stdio.h>
#include <conio.h>
int main ()
{
int ch;
while ((ch = _getch()) != 27) /* 27 = Esc key */
{
printf("%d", ch);
if (ch == 0 || ch == 224)
printf (", %d", _getch ());
printf("\n");
}
printf("ESC %d\n", ch);
return (0);
}
这适用于 MinGW 和 Visual C++。这些编译器使用名称 _getch() 而不是 getch() 来表明它是一个非标准函数。
因此,您可以执行以下操作:
ch = _getch ();
if (ch == 0 || ch == 224)
{
switch (_getch ())
{
case 72:
/* Code for up arrow handling */
break;
case 80:
/* Code for down arrow handling */
break;
/* ... etc ... */
}
}