检查当前是否在 Linux 文本/fb 控制台中按住了 shift 键



如何在 Linux 控制台中检查当前是否持有 SHIFT 键?Linux控制台是指真正的文本/帧缓冲,而不是xterm。

如果可能,最好只使用内置/标准 shell 命令。

据我所知,没有任何命令可以获取键盘的移位状态。也就是说,查看console_ioctl(4),有一个ioctl请求:TIOCLINUX,子代码=6。

所以你可以写一个简单的C程序:

#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
int main()
{
    char shift_state;
    shift_state = 6;
    if (ioctl(0, TIOCLINUX, &shift_state) < 0) {
            perror("ioctl TIOCLINUX 6 (get shift state)");
            exit(1);
    }
    printf("%xn", shift_state);
    return 0;
}

结果可以按照/usr/src/linux/include/linux/keyboard.h解释:

#define KG_SHIFT        0
#define KG_CTRL         2
#define KG_ALT          3
#define KG_ALTGR        1
#define KG_SHIFTL       4
#define KG_KANASHIFT    4
#define KG_SHIFTR       5
#define KG_CTRLL        6
#define KG_CTRLR        7
#define KG_CAPSSHIFT    8

以上是移位量,因此 Shift1,AltGr2,Ctrl 为 4,依此类推。

相关内容

  • 没有找到相关文章

最新更新