2015-12-24 56 views
0

我希望当Del键被按下时,某个函数被调用。 如何使用getch()如果可能或其他嵌套getch()调用?如何检测键盘上的删除键何时被按下?

+1

你为什么编程平台? 'getch()'不是一个可移植的函数,你的问题的答案取决于平台。 – fuz

+0

我正在使用Windows,如果解决方案只能在Windows平台上工作,我没有任何问题 – xixhxix

+0

您唯一可以做错的就是不尝试。 _getch()返回0xE0,如果它是F1或Del这样的扩展键,则再次调用_getch()以获得密钥的扫描码。 Del键为0x53。 –

回答

1

函数_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 

当然,数字锁定必须关闭。

+0

不知何故对我来说它是-32不是0或224,但总体来说它的工作原理,所以谢谢你! – xixhxix

+0

'224 + 32 = 256' –

+0

@xixhxix注意'_getch()'返回'int'而不是'char'。 –

0

你应该寻找这个函数kbhit()。它基本上是键盘命中和寻找del键ascii代码并与之匹配。