【发布时间】:2014-01-29 10:33:48
【问题描述】:
#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,最常用)
【问题讨论】:
-
通常情况下,我不反对在适当的情况下使用
goto。但这里不合适;无限循环将是更好的选择。 -
@glglgl 已编辑。谢谢你的建议。 :-)
-
这真的是您使用的代码吗?它应该打印一个 3 位数的零填充十进制数,后跟十六进制。我很好奇某处没有错误,因为 0x86 似乎只是无法生产。 num pad pg up 会发生什么?
-
@user3125280 抱歉。我编辑了代码。
-
@KevinDongNaiJia 这给了你这些确切的结果?我能看到 0x86 产生的唯一方法是从第 1 组,当 5 键是释放 (0x80 + 0x06) 并且这不会在 e0 之前。
标签: c console-application mingw32 getch conio