|
|
1
21
这些键没有真正的ASCII代码,因此,您需要检查这些键的扫描代码,即 helppc 的信息。这些代码听起来是“ASCII”的原因是因为密钥代码由旧的BIOS中断0x16和键盘中断0x9处理。 Normal Mode Num lock on
Make Break Make Break
Down arrow E0 50 E0 D0 E0 2A E0 50 E0 D0 E0 AA
Left arrow E0 4B E0 CB E0 2A E0 4B E0 CB E0 AA
Right arrow E0 4D E0 CD E0 2A E0 4D E0 CD E0 AA
Up arrow E0 48 E0 C8 E0 2A E0 48 E0 C8 E0 AA
因此,通过查看生成密钥代码的e0后面的代码,例如分别为0x50、0x4b、0x4d、0x48,这是由于查看密钥代码并将其视为“ascii”而产生混淆的地方……答案是 不要 由于平台不同,操作系统也不同,在Windows下,它会有与这些键对应的虚拟键代码,不一定与BIOS代码、VK_向上、VK_向下、VK_向左、VK_向右相同。这将在您的C++的头文件Windows .h中找到,正如我在SDK的“包含文件夹”中所记得的。 不要依赖密钥代码来拥有这里显示的相同的“相同的ASCII”代码,因为操作系统将以操作系统认为合适的方式重新编程整个BIOS代码,这自然是意料之中的,因为BIOS代码是16位的,而操作系统(现在是32位保护模式),当然,来自BIOS的代码将不再有效。 因此,原始键盘中断0x9和BIOS中断0x16将在BIOS加载后从内存中清除,当受保护模式操作系统开始加载时,它将覆盖该内存区域,并用自己的32位保护模式处理程序替换该区域,以处理这些键盘扫描代码。 下面是一个使用BorlandC v3的DOS编程的旧时代的代码示例: #include <bios.h>
int getKey(void){
int key, lo, hi;
key = bioskey(0);
lo = key & 0x00FF;
hi = (key & 0xFF00) >> 8;
return (lo == 0) ? hi + 256 : lo;
}
这个程序实际上,返回的代码分别为上、下328和336,(实际上我没有左右代码,这在我的老烹饪书中!)实际扫描代码在
|
|
|
2
52
简而言之:
左箭头:37
|
|
3
11
实际上,这个问题的答案取决于您使用的操作系统和编程语言。本身没有“ASCII码”。操作系统检测到您按了箭头键并触发程序可以捕获的事件。例如,在现代的Windows机器上,您将得到一个wm_keyu或wm_keydown事件。它通常传递一个16位的值来确定推哪个键。 |
|
|
4
8
的ASCII值:
每一个都有两个ASCII值的整数值,因为它们是特殊的键,而不是仅仅36美元的代码。这两个字节的特殊键的第一个数字通常是224或0。这可以通过Windows中的f或删除键找到。 编辑:这可能实际上是Unicode回首,但它们确实有效。 |
|
|
5
6
如果您在OpenGL中编程,请使用GLUT。以下页面将有所帮助: http://www.lighthouse3d.com/opengl/glut/index.php?5
|
|
|
6
5
你可以通过编译和运行这个小C++程序来检查它。
|
|
|
7
1
您可以使用特殊功能激活导航,以便进行编程。下面是它的示例代码。
将此添加到主函数
希望这能解决这个问题! |
|
|
8
0
箭头字符的ASCII代码如下: 二十四 二十五 二十六 二十七 |
|
|
9
0
从Windows下的键盘获取值显示如下:
|