Ich möchte in einem bash-Skript abfragen, ob eine der Tasten Shift, Strg, Alt, AltGr gedrückt ist. Gibt es dafür ein fertiges Kommandozeilen-Programm?
https://superuser.com/questions/248517/show-keys-pressed-in-linux War das jetzt so schwer zu ergooglen?
Franko S. schrieb: > War das jetzt so schwer zu ergooglen? Hast du nicht mitbekommen, dass xev und showkey nur unter X, nicht aber in einem Terminal oder Skript funktioniert? Aber dummfreche Bemerkungen scheinst du genug auf lager zu haben…
:
Bearbeitet durch User
Ohne jetzt dummfrech rüberkommen zu wollen: Bei mir funktioniert showkey auf der Konsole und im Terminal, letzteres mit sudo. Gelassen bleiben, auch am Freitag!
J. H. schrieb: > Bei mir funktioniert showkey auf der Konsole Aber das Fenster, das dabei auf geht, in dem die Tasten landen, hast du nicht bemerkt? Wenn man ins Terminal tippt, in dem showkey läuft, passiert gar nichts. sudo geht in meinem Fall nicht: Es ist ein Skript, das über ein Icon gestartet wird und ich würde gern abfragen können, ob beim Klick auf das Icon Shift o.Ä. gedrückt war. > Gelassen bleiben, auch am Freitag! Gilt auch für dich ;-)
:
Bearbeitet durch User
Moriz möchte Moriz schrieb: > ... in einem bash-Skript abfragen, ob eine der Tasten Shift, > Strg, Alt, AltGr gedrückt ist. showkey -a zeigt bei mir nur etwas an, wenn ich eine der Tasten Shift, Strg, Alt, AltGr zusammen mit einem Buchstaben, einer Ziffer oder Sonderzeichen drücke. Shift, Strg, Alt, AltGr entsprechen ja keinen Zeichen, sondern sind "Umschalt-Tasten". Ich bin mir gar nicht sicher, ob die Tastatur ein Signal sendet, wenn man nur Ctrl alleine drückt. Also wenn Moriz wirklich bereits das Drücken der einzelnen Tasten Shift, Strg, Alt, AltGr detektieren will, helfen die bisherigen Antworten nicht viel.
Showkey ist kein X11-Programm - im Gegenteil, wenn X11 läuft, funktioniert es u.U. nicht:
1 | $ showkey |
2 | kb mode was RAW |
3 | [ if you are trying this under X, it might not work |
4 | since the X server is also reading /dev/console ] |
5 | ... |
Ist trotzdem nicht hilfreich, da es nichts hat, um den aktuellen Status der Modifier-Keys abzufragen. Ich hab sowas auch mal gebraucht, und nichts passendes gefunden. Hab dann ein eigenes Programm geschrieben, dass den X11-Server fragt, welche Modifier er meint, gerade aktiv zu haben.
Beitrag #7629411 wurde vom Autor gelöscht.
Alexander S. schrieb: > Shift, Strg, Alt, AltGr entsprechen ja keinen Zeichen, sondern sind > "Umschalt-Tasten". Ich bin mir gar nicht sicher, ob die Tastatur ein > Signal sendet, wenn man nur Ctrl alleine drückt. Macht sie! Die Tastatur sendet Make (Drücken) und Break (Loslassen) Werte. Sie macht keinerlei Unterschied zwischen den Tasten und ihren Funktionen. Erst der Tastaturtreiber des BS macht dann etwas Sinnvolles daraus.
Norbert schrieb: > Macht sie! Die Tastatur sendet den Scancode der Taste, wenn sie gedrückt oder losgelassen wird. Es muss also irgend "jemand" darüber Buch führen und den müsste man "fragen", wie der aktuelle Status ist. Bei GUI-Programmen ist das X. Wer das bei Skripten macht? Keine Ahnung. Eigentlich kommt da nur der Tastaturtreiber in Frage. Dazu kommt noch, dass das Skript per Mausklick ja von einem GUI angekickt wird – da ändert sich also so einiges auf unterer Ebene, bis das Skript die Kontrolle hat
:
Bearbeitet durch User
Moriz schrieb: > Es muss also irgend "jemand" darüber Buch führen und > den müsste man "fragen", wie der aktuelle Status ist. Bei GUI-Programmen > ist das X. Tastatur Hardware -> Kernel module -> Tastaturtreiber -> Event Daemon -> X
:
Bearbeitet durch User
Moritz schrieb: > Es ist ein Skript, das über ein Icon gestartet wird und ich würde gern > abfragen können, ob beim Klick auf das Icon Shift o.Ä. gedrückt war. Genau so was war auch meine Anwendung (im mplayer wrapper bei Ctrl oder AltGr software volume control statt mixer benutzen). Ich hab das Programm mal angehängt. Beispiel:
1 | #!/bin/sh
|
2 | ... |
3 | xmodifiers S && echo "Shift gedrückt" |
4 | xmodifiers SC && echo "Shift und Control gedrückt" |
5 | xmodifiers S C && echo "Shift oder Control gedrückt" |
6 | ... |
7 | # meine Anwendung:
|
8 | xmodifiers C e && set -- -softvol -softvol-max 200 "$@" |
9 | ... |
zum Testen: while sleep .2; do xmodifiers; done PS: das Programm ist ein quick hack - mehr verdient die Aufgabe nicht ;-)
Moriz schrieb: > Aber das Fenster, das dabei auf geht, in dem die Tasten landen, hast du > nicht bemerkt? Bei mir geht da kein Fenster auf. Sicher, dass du es nicht mit xev verwechselst? > Wenn man ins Terminal tippt, in dem showkey läuft, passiert gar nichts. Bei mir funktioniert es. Wenn ich im Terminal die linke Shift-Taste drücke, gibt showkey aus:
1 | Tastencode 42 gedrückt |
2 | Tastencode 42 losgelassen |
Bei der recheten ist es stattdessen 54. Das funktioniert bei mir sowohl in xterm, als auch im KDE-tool "Konsole". > sudo geht in meinem Fall nicht: Es ist ein Skript, das über ein Icon > gestartet wird und ich würde gern abfragen können, ob beim Klick auf das > Icon Shift o.Ä. gedrückt war. Ach so, es geht nicht um ein Skript, das in einem Terminal läuft? Wo kommt denn das Icon her? Warum kann das Programm, das dieses Anzeigt, nicht einfach erkennen, ob beim Klick shift gedrückt wurde?
Eventuell könntest du das Script per Tastenkombination starten. Dabei 2 hinterlegen, eine mit, eine ohne shift. Und je nachdem einen anderen Parameter mitgeben. Die meisten DEs haben Einstellungen für sowas.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.