getch()真正得到了什么?扫描码?

时间:2014-01-10 12:35:34

标签: c console-application mingw32 getch conio

#include <conio.h>

int main (void)
{
    for (;;)
    {
        unsigned char ch = getch();
        printf ("0x%02X\n", ch);
    }
}

我想获取扫描码。

以下是Wikipedia的说明:

    Reads a character directly from the console without buffer, and without echo.

当我按 Del 时,它显示0xE0 0x53。

当我按 Ctrl + PgUp 时,它显示0xE0 0x86。

虽然有些与表格相同,但它显示的大多数值都与它不同。

那么,getch()真的能获得扫描码吗?

这是扫描码表(第2组,最常用)

Scan Code

1 个答案:

答案 0 :(得分:0)

我在VS 2012(C ++)中运行了一个控制台应用程序并获得了与您相同的结果。它确实说getch()已被弃用,我应该使用_getch(),但这没有任何区别。

然后我在这里找到了一张与之匹配的表格(最右边一列)。对我来说,“白色”键使用shift和数字键盘等效,“灰色”键是独立的页面向上,向下翻页等。我发现的一个差异是输入数字小键盘是与常规输入键相同。

http://www.itlnet.net/programming/program/Reference/msc/ng7d68f.html

我不知道这张桌子的来源,除非你点击“关于指南”,它说“微软C数据库,版权所有(C)1987,由Peter Norton”。彼得得到它,我不知道。