3

LinuxコンソールでSHIFTキーが現在保持されているかどうかを確認するにはどうすればよいですか? Linux コンソールとは、xterm ではなく、実際のテキスト/フレームバッファーを意味します。

可能であれば、組み込み/標準のシェルコマンドのみを使用することをお勧めします。

4

1 に答える 1

7

キーボードのシフト状態を取得することを私が知っているコマンドはありません。とはいえ、を見ると、その要求がconsole_ioctl(4)あります: 、subcode=6。ioctlTIOCLINUX

したがって、簡単な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

上記はシフト量なので、1、2、4というようShiftになります。AltGrCtrl

于 2012-12-01T15:46:59.783 に答える