如何检测键盘上的删除键何时被按下?

问题描述 投票:0回答:3

我希望当按下Del键时调用某个函数。 如果可能的话,如何使用

getch()
或其他嵌套的
getch()
调用来实现这一点?

c windows winapi getch del
3个回答
2
投票

函数

_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;
}

运行程序并按三个键Delete、Del(键盘)、Esc 会产生输出

Press a key (Esc to quit)
224 83
0 83
27

当然,Numlock 必须关闭。


0
投票

你应该寻找这个函数 kbhit() 。它基本上用于键盘敲击并寻找 del 键 ascii 代码并与之匹配。


0
投票

正确答案是读取 4 个字节的序列。

删除键是 27 91 51 126

int c1 = getchar();
int c2 = getchar();
int c3 = getchar();
int c4 = getchar();

if (c1 == 27 && c2 == 91 && c3 == 51 && c4 == 126) {
    // delete key handler
    handle_delete(input, cur);
} else {
    printf("error: wrong sequence: %d %d %d %d\n", c1, c2, c3, c4);
}
© www.soinside.com 2019 - 2024. All rights reserved.