GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Problem beim Binden einer Tastenkombination an eine Funktions-/Multimediataste?

Ich möchte ein Batch-Skript mit einer Verknüpfung verbinden. Wenn ich es unter Systemeinstellungen> Tastatur> Verknüpfungen einbinde Es funktioniert mit jeder Taste, außer meinen Helligkeitstasten von meiner externen Apple-Tastatur.

Die Helligkeitstasten werden in showkey mit dem Keycode 224 erkannt und 225 .

xev-Ausgabe:

FocusOut event, serial 41, synthetic NO, window 0x4000001,
mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 41, synthetic NO, window 0x4000001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 41, synthetic NO, window 0x0,
    keys:  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 

Irgendwelche Vorschläge, was ich tun kann?

Akzeptierte Antwort:

Lösung mit Halevt

Laut den Manpages halevt ist ein generischer Handler für HAL-Ereignisse. Es ist veraltet und wird durch udev ersetzt , aber da ich nicht genug über udev weiß Ich gebe ein halevt Lösung.

BEARBEITEN: nach einigem Schweiß ist mir das in udev gelungen . Siehe meine andere Antwort.

Ich werde vim verwenden um Dateien zu bearbeiten, aber wenn Sie vim nicht kennen Sie können es durch nano ersetzen oder gedit .

Halevt installieren

sudo apt-get update && sudo apt-get install halevt

Festlegen, welche Ereignisse Sie an ein Skript binden möchten
Halte die halevt an Daemon, der bereits läuft:

sudo /etc/init.d/halevt stop

Sehen Sie nun nach, ob halevt die Ereignisse der Tasten erkennen können, die Sie verwenden möchten, starten Sie den Listener:

sudo -u halevt halevt -fig:plugdev

Drücken Sie nun die Funktionstaste auf Ihrer Tastatur, an die Sie das Skript binden möchten. Ich weiß, dass das OP seine Helligkeitstasten zum Laufen bringen möchte, also lass uns damit fortfahren. Die Ausgabe für die Helligkeitstasten sollte etwa so aussehen:

Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-down)
Condition: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input,ButtonPressed (brightness-up)

Sie können sehen, dass die brightness-down und brightness-up Ereignisse übertragen werden.

Das Ereignis an ein Skript binden
Bearbeiten Sie nun die Datei /etc/halevt/halevt.xml :

sudo vim /etc/halevt/halevt.xml

und fügen Sie die folgenden Zeilen hinzu (ich habe es ganz unten gemacht, kurz vor </halevt:Configuration> ):

<halevt:Device match="hal.info.category = input">

    <halevt:Condition name="ButtonPressed" value="brightness-up" exec="sudo /home/user/brightness-script.sh up"/>

    <halevt:Condition name="ButtonPressed" value="brightness-down" exec="sudo /home/user/brightness-script.sh down"/>

</halevt:Device>

wobei Sie natürlich value ändern sollten zu dem Ereignis, das Sie vom Listener erhalten haben, und exec durch den Befehl, den Sie ausführen möchten.

Geben Sie dem halevt-Benutzer die Berechtigung, den Befehl oder das Skript auszuführen
Seit dem halevt Daemon wird als halevt ausgeführt Benutzer müssen Sie ihm die Berechtigung erteilen, das zu tun, was Sie in exec angegeben haben .

Führen Sie aus (denken Sie daran, vim zu ersetzen von Ihrem Redakteur Ihrer Wahl)

sudo EDITOR=vim visudo

und fügen Sie unten die folgenden Zeilen hinzu

halevt ALL=(root) NOPASSWD: /home/user/brightness-script.sh 

und speichern und beenden.

Verwandte:Tastaturwiederholung von der Befehlszeile aus deaktivieren?

Stellen Sie sicher, dass Ihr Skript ausführbar ist

sudo chmod +x /home/user/brightness-script.sh

Starten Sie den Halevt-Daemon erneut

sudo /etc/init.d/halevt start

Und es sollte funktionieren!


Ubuntu
  1. Tastenkombinationen, die unabhängig vom Tastaturlayout sind?

  2. Wie führe ich ein Skript in der Shell aus, wenn eine Tastenkombination gedrückt wird?

  3. Winterschlaf am 18.04?

  4. Ubuntu 12.04 Nomodeset behebt Boot-Problem, führt aber dazu, dass die Bildschirmauflösung hängen bleibt?

  5. Unity startet nach dem Booten nicht?

Ralink Rt 3290 Bluetooth-Problem unter Ubuntu 16.04?

Wie erstelle ich eine Schlüsselbindung, die es mir ermöglicht, das Google Drive zu mounten?

Problem im The Key 3g „Verbindungsaktivierung fehlgeschlagen“ in 14.04?

Die Tastenkombination zum Überspringen eines Songs in Rhythmbox?

Numlock ohne Schlüssel umschalten – ohne Sudo-Berechtigungen?

Schwerwiegender Fehler:Aufruf der undefinierten Funktion curl_init()