如何在Linux控制台中检查当前是否正在保留 SHIFT 键? Linux控制台是指真正的文本/帧缓冲区,而不是xterm。
最好只使用内置/标准shell命令,如果可能的话。
答案 0 :(得分:5)
我知道没有命令可以获得键盘的移位状态。也就是说,查看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("%x\n", 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
以上是移位量,因此 Shift 为1, AltGr 为2, Ctrl 为4,依此类推。