Для наиболее распространенного случая настольного компьютера на базе 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