【问题标题】:What are the ascii values of up down left right?上下左右的ascii值是多少?
【发布时间】:2011-02-22 00:10:10
【问题描述】:

方向键的 ASCII 值是多少? (上/下/左/右)

【问题讨论】:

  • 因为箭头键没有 ASCII 值之类的东西,所以您要寻找的答案在很大程度上取决于您在什么操作系统上的什么平台上尝试做什么。那么你的目标是什么平台呢?浏览器?命令行?其他图形用户界面?什么操作系统?视窗? Linux?苹果?你想做什么?读取关键值?打印箭头?移动光标?
  • 我对这个问题的错误答案种类之多感到惊讶。

标签: hardware ascii


【解决方案1】:

简而言之:

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

【讨论】:

  • 嗯?在 ASCII 中,字符 37-40 映射到 % & ' 和 (
  • 这些是浏览器中 event.keyCode 中显示的正确值,但不是 ASCII 码。尽管我怀疑这些是 OP 正在寻找的值。见:developer.mozilla.org/en-US/docs/DOM/KeyboardEvent
  • 如果这些对于浏览器中的 javasctip t 是正确的,则应将该信息添加到答案中。仅考虑问题给出的上下文和此处提供的非上下文显然是垃圾。
【解决方案2】:

这些键没有真正的 ascii 码,因此您需要查看这些键的扫描码,根据helppc 的信息,称为 Make 和 Break 键码。代码听起来“ascii”的原因是因为键代码由旧的 BIOS 中断 0x16 和键盘中断 0x9 处理。

正常模式 Num lock 开启 断断续续 向下箭头 E0 50 E0 D0 E0 2A E0 50 E0 D0 E0 AA 左箭头 E0 4B E0 CB E0 2A E0 4B E0 CB E0 AA 右箭头 E0 4D E0 CD E0 2A E0 4D E0 CD E0 AA 向上箭头 E0 48 E0 C8 E0 2A E0 48 E0 C8 E0 AA

因此,通过查看 E0 后面的代码来获取 Make 键码,例如分别为 0x50、0x4B、0x4D、0x48,这就是查看键码并将它们视为“ascii”时产生混淆的地方......答案是不要 因为平台不同,操作系统不同,在Windows下会有对应这些键的虚拟键码,不一定和BIOS码一样,VK_UP,VK_DOWN,VK_LEFT, VK_RIGHT.. 这可以在你的 C++ 头文件 windows.h 中找到,我记得在 SDK 的包含文件夹中。

不要依赖密钥代码来获得此处显示的相同“相同 ascii”代码,因为操作系统会以操作系统认为合适的方式重新编程整个 BIOS 代码,这自然是意料之中的,因为 BIOS 代码是16位,操作系统(现在是32位保护模式),当然那些来自BIOS的代码将不再有效。

因此原始键盘中断 0x9 和 BIOS 中断 0x16 将在 BIOS 加载后从内存中擦除,当保护模式操作系统开始加载时,它将覆盖该内存区域并用自己的 32 位保护模式替换它处理这些键盘扫描代码的处理程序。

这是一个使用 Borland C 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,(我其实没有左右的代码,这是我的老菜谱里的!)实际的扫描码在@ 987654323@ 变量。 AZ,0-9 以外的键通过bioskey 例程的扫描代码为 0.... 添加 256 的原因,因为变量 lo 的代码为 0,而 hi 变量的代码为扫描代码并在其上添加256,以免与'ascii'代码混淆......

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 我喜欢你的回答,也喜欢 tommieb75 的回答,但你们俩都有些胡扯——“本身没有 ASCII 码”和“没有真正的 ASCII 码”。平淡:箭头键没有 ASCII 码,因为ASCII 是字符 编码,而不是键盘编码。在回答他们认为他们提出的问题时,纠正他们对问题的不准确理解通常更有帮助。
    【解决方案4】:

    以下内容的 ascii 值:

    1. 向上键 - 224 72

    2. 向下键 - 224 80

    3. 左键 - 224 75

    4. 右键 - 224 77

    其中的每一个都有两个整数值作为 ascii 值,因为它们是特殊键,而 $ 的代码只是 36。这些 2 字节特殊键的第一个数字通常是 224 或 0。这可以通过 Windows 中的 F# 或删除键找到。

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

    【讨论】:

      【解决方案5】:

      如果您使用 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】:

        您可以通过编译并运行这个小 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】:

          箭头字符的 Ascii 代码如下: ↑ 24 ↓ 25 → 26 ← 27

          【讨论】:

            【解决方案8】:

            如果您正在使用终端,就像我在搜索中发现它时那样,那么您会发现箭头键会发送相应的光标移动转义序列。 所以在这种情况下, UP = ^[[A DOWN = ^[[B RIGHT = ^[[C LEFT = ^[[D ^[ 是表示转义的符号,但您将使用 ASCII 值进行转义,即 27,以及括号和字母。 在我的情况下,使用串行连接来传达这些方向,对于向上箭头,我将字节序列 27,91,65 发送给 ^[, [, A

            【讨论】:

            • 如果您想将快捷方式映射到 iterm2 中的箭头键,这就是您所需要的
            【解决方案9】:

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

            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);
            

            希望这能解决问题!

            【讨论】:

              【解决方案10】:

              我被这个问题困住了,无法找到一个好的解决方案,所以决定对我拥有的 Mingw 编译器进行一些修补。我在&lt;conio.h&gt; 头文件中使用了C++ 和getch() 函数并按下箭头键来查找分配给这些键的值。事实证明,它们分别为向上、向右、向下和向左键分配了 22472、22477、22480、22475 的值。但是等等,它并没有像你期望的那样工作。您必须放弃 224 部分,只写最后两位数字,以便软件识别正确的密钥;正如你猜到的,72、77、80 和 75 都被其他角色全神贯注,但这对我有用,我希望它也对你有用。如果您想自己运行 C++ 代码并找出自己的值,请运行此代码并按 Enter 键退出循环:

              #include<iostream>
              #include<conio.h>
              using namespace std;
              int main()
              {
                  int x;
                  while(1){
                      x=(int)getch();
                      if(x==13){
                          break;
                      }
                      else
                          cout<<endl<<endl<<x;
                  }
                  return getch();
              }
              

              【讨论】:

                【解决方案11】:

                如果您来 JavaScript 的目的是了解按下了哪个键。

                然后有一个JavaScript名字keydown的AddEventListener方法。

                这为我们提供了按下的键,但是您可以在按下的键上执行某些方法,您可以通过 keydown 或 onkeydown 获得它们两者完全相同。

                按键的方法有:-

                .code :- 这会返回一个关于按下哪个键的字符串,如 ArrowUp、ArrowDown、KeyW、Keyr 等 .keyCode :- 此方法已弃用,但您仍然可以使用它。这将返回一个整数,例如 small a ---> 65 ,Capital A :- 65 主要是 ASCII 码表示不区分大小写 ArrowLeft:- 37,ArrowUp:- 38,ArrowRight:- 39 和 ArrowDown:- 40

                <!DOCTYPE html>
                <html lang="en">
                  <head>
                    <meta charset="UTF-8" />
                    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
                    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
                  </head>
                  <body>
                    <h1 id="show">Press Any Button</h1>
                
                  // JavaScript Code Starting From here See Magic By Pressing Any Buttton
                  <script>
                    document.addEventListener('keydown', (key)=> {
                         let keycode = key.keyCode;
                         document.getElementById('show').innerText = keycode;
                
                    /*
                    let keyString = key.code;
                    switch(keyString){
                        case "ArrowLeft":
                            console.log("Left Key is Pressed");
                            break;
                        case "ArrowUp":
                            console.log("Up Key is Pressed");
                            break;
                        case "ArrowRight":
                            console.log("Right Key is Pressed");
                            break;
                        case "ArrowDown":
                            console.log("Down Key is Pressed");
                            break;
                        default:
                            console.log("Any Other Key is Pressed");
                            break;
                    }
                    */
                });
                </script>
                
                </body>
                </html>

                【讨论】:

                  【解决方案12】:

                  嘎!访问 asciitable.com。箭头键是 HJKL 键的控制等效项。即,在 vi 中创建一大块文本。请注意,您可以使用 HJKL 键在该文本中移动。箭头键将是 ^H、^J、^K、^L。

                  在 asciitable.com 上找到第三列中的“K”。现在,查看第一列中的同一行以找到匹配的控制代码(在本例中为“VT”)。

                  【讨论】:

                    【解决方案13】:

                    这是我得到的:

                    左 - 19 向上 - 5 右 - 4 下降 - 24

                    在 Visual Fox Pro 中工作

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2013-09-02
                      • 2021-08-21
                      • 2014-06-26
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-12-22
                      • 2014-06-01
                      相关资源
                      最近更新 更多