3
#include <windows.h>

int main() {
if ( !GetKeyState(VK_CAPITAL) & 1 ) {
printf("caps off");
}
else
printf("caps on");
return 0;
}

ただし、ウィンドウのみに限定されます

Linuxでgccを使用してこれを行う方法は?

何が& 1入っていGetKeyState(VK_CAPITAL) & 1ますか?

4

1 に答える 1

4

X11 ベースのデスクトップの最も一般的なケース:

#include <stdio.h>
#include <X11/XKBlib.h>

int main() {
    Display * d = XOpenDisplay((char*)0);

    if (d) {
        unsigned n;

        XkbGetIndicatorState(d, XkbUseCoreKbd, &n);

        printf((n & 1)?"caps on\n":"caps off\n");
    }
}

X11 開発ヘッダーがあることを確認し、次のようにコンパイルします。

$ gcc -lX11 test.c -o test

デスクトップのコンソール ウィンドウから実行します。

$ ./test
caps off
$ ./test
caps on
于 2012-01-25T20:47:39.073 に答える