如何检测键盘上的删除键何时被按下?
函数_getch()
为光标和页面控制键返回一个“转义”值。对于键盘和功能键,即0
后面跟着键码,对于其他键是224
,后面跟着键码。
#include <stdio.h>
#include <conio.h>
#define ESC 27
#define ESC1 0
#define ESC2 224
int main()
{
int d=-1, e=-1;
printf("Press a key (Esc to quit)\n");
do {
d = _getch();
if (d == ESC1) {
e = _getch();
printf("%d %d\n", d, e);
} else if (d == ESC2) {
e = _getch();
printf("%d %d\n", d, e);
} else {
printf("%d\n", d);
}
} while (d != ESC);
return 0;
}
运行程序和按压三个键删除,德尔(键盘),Esc键产生输出
Press a key (Esc to quit)
224 83
0 83
27
当然,数字锁定必须关闭。
不知何故对我来说它是-32不是0或224,但总体来说它的工作原理,所以谢谢你! – xixhxix
'224 + 32 = 256' –
@xixhxix注意'_getch()'返回'int'而不是'char'。 –
你应该寻找这个函数kbhit()。它基本上是键盘命中和寻找del键ascii代码并与之匹配。
你为什么编程平台? 'getch()'不是一个可移植的函数,你的问题的答案取决于平台。 – fuz
我正在使用Windows,如果解决方案只能在Windows平台上工作,我没有任何问题 – xixhxix
您唯一可以做错的就是不尝试。 _getch()返回0xE0,如果它是F1或Del这样的扩展键,则再次调用_getch()以获得密钥的扫描码。 Del键为0x53。 –