如何解决按下键盘上的某个键后,如何使程序执行特定的操作?
#include <stdlib.h>
#include <stdio.h>
int main()
{
char ch;
printf("Enter any character: \n");
ch = fgetc(stdin);
if(ch == 'A')
{
printf("A was inputed.\n");
}
else
{
printf("%c was inputed.\n",ch);
}
return 0;
}
这是一个简单的程序:当您输入A并按Enter键时,将打印“输入了A”。如果您输入其他任何字符,它将打印“输入了”。
但是我要这样:当按 键时,它将打印“ Right Arrow Key”,但是当按键时,则打印。 >,它将显示“左箭头键”。
我该怎么做?
我可以使用Enter键来完成此操作。
if(ch == 0x0A)
{
printf("ENTER KEY was pressed\n");
}
else
{
}
我了解到0x0A是回车键的十六进制ASCII值。因此,我认为在获得其他键的十六进制ASCII值后,可以对其他键执行相同的操作。但是我不知道该用的是右箭头键和左箭头键。
编辑:我应该提到我使用Windows 10。
解决方法
您尚未指定操作系统...
此答案将从 Windows 角度解决问题。
两个可以简化Windows环境中的任务的项目:
其中以及所有其他键盘定义都包括箭头键:
-
VK_LEFT 0x25 LEFT ARROW key
-
VK_UP 0x26 UP ARROW key
-
VK_RIGHT 0x27 RIGHT ARROW key
-
VK_DOWN 0x28 DOWN ARROW key
这些都可以用来使您的代码捕获单个击键以及击键组合,检测瞬时和保持状态,所有这些都有助于确定状态键盘使用这些,您的代码示例可以这样实现:
void GetAppState(void)
{
short state=0;
short state1=0;
state = GetAsyncKeyState(VK_RETURN);
if (0x80000000 & state) //check instantaineous state of key
{
printf("ENTER KEY was pressed\n");
}
else
{
...
}
...... and so on
要同时捕获多个击键,您可以执行类似的操作(捕获<ctrl><shift><h>
)
state = GetAsyncKeyState(VK_CONTROL);
if (0x80000000 & state) //check instantaineous state of key
{
state = GetAsyncKeyState(VK_SHIFT);
if (0x80000000 & state) //check instantaineous state of key
{
state = GetAsyncKeyState('h');
state1 = GetAsyncKeyState('H');
if ((0x80000000 & state) ||
(0x80000000 & state1))
{
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。