使用GetKeyState(VK_CAPITAL)& 1在linux中

时间:2012-01-25 20:28:58

标签: c linux gcc capslock

#include <windows.h>

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

但仅限于Windows

如何在linux下用gcc做这个?

& 1中的GetKeyState(VK_CAPITAL) & 1是什么?

1 个答案:

答案 0 :(得分: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