代码之家  ›  专栏  ›  技术社区  ›  Laz

从上到下从左到右的ASCII值是什么?

  •  37
  • Laz  · 技术社区  · 15 年前

    箭头键的ASCII值是什么?(上/下/左/右)

    9 回复  |  直到 15 年前
        1
  •  21
  •   t0mm13b    15 年前

    这些键没有真正的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,(实际上我没有左右代码,这在我的老烹饪书中!)实际扫描代码在 lo 变量。除了A-Z,0-9以外的其它钥匙通过 bioskey 例行公事…添加原因256,因为变量 具有0代码和 hi 变量将具有扫描代码并在其上添加256,以避免与“ASCII”代码混淆…

        2
  •  52
  •   Christopher Richa    15 年前

    简而言之:

    左箭头:37
    向上箭头:38
    右箭头:39
    向下箭头:40

        3
  •  11
  •   Icemanind    15 年前

    实际上,这个问题的答案取决于您使用的操作系统和编程语言。本身没有“ASCII码”。操作系统检测到您按了箭头键并触发程序可以捕获的事件。例如,在现代的Windows机器上,您将得到一个wm_keyu或wm_keydown事件。它通常传递一个16位的值来确定推哪个键。

        4
  •  8
  •   Chris - Jr Kalimah    9 年前

    的ASCII值:

    1. 上键- 224 七十二

    2. 下键- 224 八十

    3. 左键- 224 七十五

    4. 右键- 224 七十七

    每一个都有两个ASCII值的整数值,因为它们是特殊的键,而不是仅仅36美元的代码。这两个字节的特殊键的第一个数字通常是224或0。这可以通过Windows中的f或删除键找到。

    编辑:这可能实际上是Unicode回首,但它们确实有效。

        5
  •  6
  •   Steven    15 年前

    如果您在OpenGL中编程,请使用GLUT。以下页面将有所帮助: http://www.lighthouse3d.com/opengl/glut/index.php?5

    GLUT_KEY_LEFT   Left function key
    GLUT_KEY_RIGHT  Right function key
    GLUT_KEY_UP     Up function key
    GLUT_KEY_DOWN   Down function key
    

    void processSpecialKeys(int key, int x, int y) {
    
    switch(key) {
        case GLUT_KEY_F1 : 
                red = 1.0; 
                green = 0.0; 
                blue = 0.0; break;
        case GLUT_KEY_F2 : 
                red = 0.0; 
                green = 1.0; 
                blue = 0.0; break;
        case GLUT_KEY_F3 : 
                red = 0.0; 
                green = 0.0; 
                blue = 1.0; break;
    }
    }
    
        6
  •  5
  •   Community Mohan Dere    11 年前

    你可以通过编译和运行这个小C++程序来检查它。

    #include <iostream>
    #include <conio.h>
    #include <cstdlib>
    
    int show;
    int main()
    {    
    while(true)
        {
        int show = getch();
        std::cout << show;
        }
    getch(); // Just to keep the console open after program execution  
    }
    
        7
  •  1
  •   Rajeev Kumar    11 年前

    您可以使用特殊功能激活导航,以便进行编程。下面是它的示例代码。

       void Specialkey(int key, int x, int y)
        {
        switch(key)
        {
        case GLUT_KEY_UP: 
    /*Do whatever you want*/        
             break; 
        case GLUT_KEY_DOWN: 
    /*Do whatever you want*/
                     break;
        case GLUT_KEY_LEFT:
    /*Do whatever you want*/
                     break;
        case GLUT_KEY_RIGHT:
    /*Do whatever you want*/
                     break;
        }
    
        glutPostRedisplay();
        }
    

    将此添加到主函数

    glutSpecialFunc(Specialkey);
    

    希望这能解决这个问题!

        8
  •  0
  •   Paul Bently    9 年前

    箭头字符的ASCII代码如下: 二十四 二十五 二十六 二十七

        9
  •  0
  •   Moti Hamo    9 年前

    从Windows下的键盘获取值显示如下:

    • 左箭头=2424832
    • 右箭头=2555904
    • 上箭头=2490368
    • 下箭头=2621440
    推荐文章