Es scheint keine Standardlösung zu geben. Es ist jedoch nicht schwierig, Xlib und Xkb direkt zu verwenden.
Erstellen Sie eine Datei getmodkey.c
:
#include <X11/Xlib.h> #include <stdio.h> #include <X11/XKBlib.h> int main() { XkbStateRec r; Display* d = XOpenDisplay(NULL); XkbGetState(d, XkbUseCoreKbd, &r); printf("mod: 0x%x\n", r.mods); XCloseDisplay(d); return !( r.mods & 1 ); }
und kompilieren Sie es -lX11
beispielsweise mit
make LDLIBS="-lX11" getmodkey
Der Exit-Statuscode des Programms wäre, 0
wenn die Shift-Taste gedrückt wurde, 1
andernfalls. Um einen anderen Modifikator zu testen, passen Sie die (r.mods & keymask)
Bedingung an (die Maske für Shift ist 1).
Dann sollte dieses Programm einfach zu integrieren sein.
if getmodkey; then echo "shift!" else echo "no shift" fi