Forum: PC Hard- und Software [Linux/X] Script bei jedem Tastendruck ausführen


von 1CH (Gast)


Lesenswert?

Ĥallo,

ich möchte für eine Steuerung, die ich gerade baue, eine optische 
Rückmeldung im Augenwinkel für Tastendrücke.

Das Gehirn des ganzen ist ein ITX-board mit Debian 10 (x86). Die Eingabe 
läuft über die Elektronik einer USB Tastatur, die an die Matrix-Tastatur 
eines alten (Musik-)Keyboards geflanscht wurde.

Zur Ausgabe stehen mehrere RGB-LEDs zur Verfügung, welche über 
Port-Expander am SMBus (i2c) hängen.

Im Homeverzeichnis habe ich bereits ein Script, welches per 
Zufallsgenerator  einer LED eine neue Farbe verpasst 
("/home/user/newrgbval.sh"). Wenn das ausgeführt wird, wird direkt die 
Farbe gewechselt.

Ich möchte nun, dass für jeden Tastendruck im laufenden X dieses Script 
aufgerufen wird, zusätzlich zur normalen Abarbeitung (Ein "hook" also?).

Wenn das bei jeder angeschlossenen Tastatur passiert, egal. Wenn ich 
eine angeben könnte, auch gut.

Einen Window-Manager will ich in der fertigen Anwendung nicht haben, das 
einzige grafische Programm auf dem Rechner wird fullscreen direkt auf X 
aufsetzen. Zur Not würde ich noch was schmales wie LXDE oder Fluxbox 
dazwischen laufen lassen, wenn es damit eine einfache Möglichkeit gäbe.

Wenn ich mir die Ausgabe von xev z.B. anschaue dürfte sowas ja relativ 
einfach möglich sein. <gesuchtes tool> bekommt alle Events in X 
zugesandt und für jedes Tastatur-Eingabe-Event wird ein Script 
aufgerufen.

Ich hoffe, dass es da schon was passendes gibt und ihr mir helfen 
könnnt.

Danke fürs Lesen und evtl. Antworten!
Ich

von Tom (Gast)


Lesenswert?

xinput kann das (nicht mit nacktem X probiert):
https://unix.stackexchange.com/a/129171
1
$ xinput test
2
[gekürzt]
3
⎣ Virtual core keyboard                     id=3  [master keyboard (2)]
4
[gekürzt]
5
    ↳ HID 046a:0023                             id=9  [slave  keyboard (3)]
6
[gekürzt]
7
    ↳ AT Translated Set 2 keyboard              id=13  [slave  keyboard (3)]
8
[gekürzt]
9 ist bei mir die angestöpselte USB-Tastatur, 13 die Notebook-Tastatur.
1
$ xinput test 9 | stdbuf -o0 grep "press" | while read dontcare; do echo "blink"; done
gibt ein "blink" aus, wenn an der USB-Tastatur eine Taste gedrückt wird.

von Tom (Gast)


Lesenswert?

Das erste "xinput test" sollte natürlich "xinput list" sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.