我想知道如何在c编程语言中表示输入shift等键。这些键有任何二进制值吗? 因为我可以在二进制值27的帮助下表示esc键。 例如:
int main()
{
int x;
char ch;
while(1)
{
ch=getch();
if(ch==27)
{
printf("esc key pressed");
break;
}
else
{
printf("%c key pressed\n",ch);
}
}
}
在我的程序中,如果我按esc它将会中断。现在,如果我想打破任何其他键,如输入,转移,alt如何做到这一点?
答案 0 :(得分:1)
这大部分都取决于平台。但是,可以使用keyboard scan codes和以下示例程序检测某些键:
#include<stdio.h>
int main()
{
int ch;
int ascii[10];
int count=1;
ch=getchar();
ascii[0]=ch;
while (1) //Loop used for storing successive ASCII values
{
ascii[count]=getchar();
if (ascii[count]==10) break;
count++;
}
if (27==ascii[0] && 79==ascii[1] && 80==ascii[2]) printf("F1 is pressed");
if (27==ascii[0] && 79==ascii[1] && 81==ascii[2]) printf("F2 is pressed");
if (27==ascii[0] && 79==ascii[1] && 82==ascii[2]) printf("F3 is pressed");
if (27==ascii[0] && 91==ascii[1] && 72==ascii[2]) printf("HOME key is pressed");
return 0;
}
如果你想要一个更有用的例子而不必在每次击键后点击 ENTER ,你可以try disabling input buffering and enabling raw mode.
答案 1 :(得分:1)
我想知道如何表示 输入 shift 等密钥c编程语言中的等 ...
正如其他人所说,这是依赖操作系统的。
此功能:
<强> short GetAsyncKeyState(int key) 强>;
(对于Windows编程) 可与WinUser.h中的以下#defines结合使用,以确定当前 AND 最近的状态一把钥匙:
#define VK_CLEAR 0x0C
#define VK_RETURN 0x0D //AKA enter
#define VK_SHIFT 0x10
#define VK_CONTROL 0x11
#define VK_MENU 0x12
#define VK_PAUSE 0x13
#define VK_CAPITAL 0x14
#define VK_KANA 0x15
#define VK_HANGEUL 0x15 /* old name - should be here for compatibility */
#define VK_HANGUL 0x15
#define VK_JUNJA 0x17
#define VK_FINAL 0x18
#define VK_HANJA 0x19
#define VK_KANJI 0x19
#define VK_ESCAPE 0x1B
#define VK_CONVERT 0x1C
#define VK_NONCONVERT 0x1D
#define VK_ACCEPT 0x1E
#define VK_MODECHANGE 0x1F
#define VK_SPACE 0x20
#define VK_PRIOR 0x21
#define VK_NEXT 0x22
#define VK_END 0x23
#define VK_HOME 0x24
#define VK_LEFT 0x25
#define VK_UP 0x26
#define VK_RIGHT 0x27
#define VK_DOWN 0x28
#define VK_SELECT 0x29
#define VK_PRINT 0x2A
#define VK_EXECUTE 0x2B
#define VK_SNAPSHOT 0x2C
#define VK_INSERT 0x2D
#define VK_DELETE 0x2E
#define VK_HELP 0x2F