箭头键的ASCII值是多少? (上/下/左/右)
答案 0 :(得分:53)
简而言之:
左箭头:37左箭头:38左箭头:39左箭头:40
答案 1 :(得分:22)
这些密钥没有真正的ascii代码,您需要根据helppc的信息检查这些密钥的扫描代码,称为Make和Break密钥代码。代码听起来'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_UP,VK_DOWN,VK_LEFT相同, VK_RIGHT ..这可以在你的C ++头文件windows.h中找到,我记得在SDK的include文件夹中。
不要依赖密钥代码来显示与此处显示的相同的“相同的ascii”代码,因为操作系统将在操作系统认为合适的任何内容中重新编程整个BIOS代码,这自然是预期的,因为BIOS代码是16位和操作系统(现在是32位保护模式),当然这些来自BIOS的代码将不再有效。
因此原始键盘中断0x9和BIOS中断0x16将在BIOS加载后从内存中擦除,当保护模式OS开始加载时,它将覆盖该内存区域并将其替换为自己的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; }
这个例程实际上,返回代码为up,down分别为328和336(我实际上没有左右代码,这是在我的旧厨师书中!)实际的扫描代码可以在{ {1}}变量。 AZ,0-9以外的密钥通过lo
例程扫描代码为0 ......添加了原因256,因为变量bioskey
的代码为0,{{1变量会有扫描码并在其上加256,以免混淆'ascii'代码......
答案 2 :(得分:11)
这个问题的答案真的取决于您使用的操作系统和编程语言。本身没有“ASCII码”。操作系统检测到您按箭头键并触发程序可以捕获的事件。例如,在现代Windows机器上,您将获得WM_KEYUP或WM_KEYDOWN事件。它通常传递一个16位值来确定推送了哪个键。
答案 3 :(得分:8)
以下的ascii值:
向上键 - 224 72
向下键 - 224 80
左键 - 224 75
右键 - 224 77
每个都有ascii值的两个整数值,因为它们是特殊键,而不是$的代码,只是36.这些2字节的特殊键通常将第一个数字设置为224或0。这可以通过Windows中的F#或删除键找到。
编辑:这实际上可能是unicode回顾,但它们确实有效。
答案 4 :(得分:6)
如果您使用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;
}
}
答案 5 :(得分:5)
您可以通过编译和运行这个小型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
}
答案 6 :(得分:1)
您可以使用特殊功能激活导航以进行编程。下面是它的示例代码。
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);
希望这能解决问题!
答案 7 :(得分:1)
如果您正在使用终端,就像我在搜索中发现的那样,那么您会发现箭头键会发送相应的光标移动转义序列。
所以在这种情况下,
UP = ^[[A
DOWN = ^[[B
RIGHT = ^[[C
LEFT = ^[[D
^[
是表示转义的符号,但您将使用 ASCII 值进行转义,即 27,以及括号和字母。
在我的例子中,使用串行连接来传达这些方向,对于向上箭头,我发送了字节序列 27,91,65
for ^[, [, A
答案 8 :(得分:0)
箭头字符的Ascii代码如下: ↑24 ↓25 →26 ←27
答案 9 :(得分:0)
从Windows下的键盘获取值显示以下内容:
答案 10 :(得分:0)
我被这个问题困住了,找不到好的解决方案,所以决定对我拥有的 Mingw 编译器进行一些修补。我在 getch()
头文件中使用了 C++ 和 <conio.h>
函数并按下箭头键来查找分配给这些键的值。事实证明,它们分别为向上、向右、向下和向左键分配了值 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 :(得分:-1)
嘎!转到asciitable.com。方向键与HJKL键等效。即在vi中创建一大块文本。请注意,您可以使用HJKL键在该文本中四处移动。箭头键将为^ H,^ J,^ K,^ L。
在asciitable.com的第三列中找到“ K”。现在,在第一列的同一行查找匹配的控制代码(在这种情况下为“ VT”)。
答案 12 :(得分:-3)
这就是我得到的:
左-19 上-5 右-4 向下-24
在Visual Fox Pro中工作