Gibt es eine Möglichkeit, Tastaturkürzel in der virtuellen Linux-Konsole zu konfigurieren?
Wenn ich zum Beispiel zu tty1 gehe und dann die Tastenkombination Ctrl+ Alt+ drücke H, möchte ich, dass das Skript /usr/bin/hello.sh
ausgeführt wird.
Im Idealfall ist die Verknüpfung bereits vor dem Anmelden verfügbar (in diesem Fall wird sie mit den von mir angegebenen Berechtigungen eines Benutzers ausgeführt). Es macht mir auch nichts aus, den Kernel zu modifizieren, wenn dies der einzige Weg ist, dies zu erreichen. Es muss auch kein Shell-Skript sein, es kann auch eine normale ELF-Binärdatei oder sogar ein Kernelmodul sein, das Systemaufrufe ausführt.
Beispielanwendungsfälle
- Ich bin in der Konsole und surfe mit so etwas im Internet
links
und möchte die Bildschirmhelligkeit verringern. Ich drücke Fn+ End, was zufällig die Helligkeitstaste ist und einen einzelnen Schlüsselcode erzeugt, und ein Programm wird ausgeführt, das die Helligkeit reduziert, indem etwas in eine/sys
Datei geschrieben wird. - Ich bin in einem Konsolentexteditor und höre Musik im Hintergrund, die von abgespielt wird
mpd
. Ich drücke die ⏯Taste (Wiedergabe / Pause), die wiederum einen einzelnen Schlüsselcode erzeugt, und bewirkt, dass ein Programm ausgeführt wird, das ein Signal sendet,mpd
um das aktuelle Lied anzuhalten.
Lösung
Nach der Idee von dirkt habe/dev/input
ich zu diesem Zweck evd (event daemon) erstellt. Die Anwendung kann im Hintergrund gestartet werden und übernimmt die Tastatur, wo immer Sie sich befinden, auch vor dem Anmelden und innerhalb von X.
/usr/bin/hello.sh
in den Tastaturpuffer eingegeben wird, als hätten Sie sie an der Shell-Eingabeaufforderung eingegeben?
readline
Lösung. Ich denke, es ist das Nächste, was Sie in bestehenden Implementierungen finden werden. Multitasking-Desktop-ähnliche getty
Ersetzungen sind mir nicht bekannt .
readline
Makros sind möglicherweise das, wonach Sie suchen, und sobald sie konfiguriert sind, funktionieren sie überall dort, wo Sie bash (oder eine ähnlich readline-fähige Shell) verwenden, und nicht nur in der Konsole. siehe wiki.archlinux.org/index.php/readline#Macros