Lösung mit halevt
Laut den Manpages halevt
handelt es sich um einen generischen Handler für HAL-Events. Es ist veraltet und ersetzt durch udev
, aber da ich nicht genug darüber weiß, udev
werde ich eine halevt
Lösung geben.
EDIT: Nach einigem ernsthaften Schweiß habe ich es geschafft, dies in zu tun udev
. Siehe meine andere Antwort .
Ich werde vim
Dateien bearbeiten, aber wenn Sie nicht wissen vim
, können Sie sie durch nano
oder ersetzen gedit
.
Installation von halevt
sudo apt-get update && sudo apt-get install halevt
Festlegen, welche Ereignisse Sie an ein Skript binden möchten
Stoppen Sie den halevt
bereits ausgeführten Dämon:
sudo /etc/init.d/halevt stop
halevt
Starten Sie nun den Listener, um festzustellen, ob die Ereignisse der Tasten, die Sie verwenden möchten, erkannt werden können:
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 der OP seine Helligkeitstasten zum Laufen bringen möchte, also lasst uns damit weitermachen. Die Ausgabe für die Helligkeitstasten sollte ungefähr 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.
Binden Sie das Ereignis an ein Skript.
Bearbeiten Sie nun die Datei /etc/halevt/halevt.xml
:
sudo vim /etc/halevt/halevt.xml
und füge die folgenden Zeilen hinzu (ich habe es unten gemacht, kurz zuvor </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>
Hier sollten Sie natürlich value
zu dem Ereignis wechseln , das Sie vom Listener erhalten haben, und zu exec
dem Befehl, den Sie ausführen möchten.
Geben Sie dem Benutzer halevt die Berechtigung, den Befehl oder das Skript auszuführen.
Da der halevt
Dämon als halevt
Benutzer ausgeführt wird, müssen Sie ihm die Berechtigung erteilen, das zu tun, was Sie angegeben haben exec
.
Ausführen (denken Sie daran, vim
durch einen Editor Ihrer Wahl zu ersetzen )
sudo EDITOR=vim visudo
und fügen Sie die folgenden Zeilen unten hinzu
halevt ALL=(root) NOPASSWD: /home/user/brightness-script.sh
und speichern und beenden.
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!
udev
. Aber zögern Sie nicht, bei der anderen Lösung zu bleiben, das Wichtigste ist, dass es funktioniert;)E: Unable to locate package halevt
am 14.04.Lösung mit udev
Da HAL veraltet ist und
udev
jetzt verwendet wird, wird dieser Ansatz meiner anderen Antwort vorgezogen (obwohl ich denke, dass die Lösung mit HAL einfacher ist).Für viele Funktionstasten können Sie jedoch einfach Systemeinstellungen> Tastatur> Verknüpfungen verwenden , um ein Skript zu binden. Versuchen Sie dies zuerst! Das erspart Ihnen viel Ärger. Zum Beispiel die Helligkeitstasten funktionieren nicht (ich habe keine Ahnung, warum nicht). Wenn Sie also wissen möchten, wie Sie das Verhalten beispielsweise der Helligkeitstasten ändern können, lesen Sie weiter.
HINWEIS : Wenn Sie ein Samsung-Notebook verwenden, können Sie alle (je nach Modell) Funktionstasten reparieren, indem Sie das
samsung-tools
Paket von http://www.voria.org/forum/ installieren.In dieser Anleitung wird davon ausgegangen, dass Sie wissen, wie ein Terminal verwendet wird, und der
vim
Editor verwendet wird. Wenn Sie es nicht wissenvim
, ersetzen Sie es bitte in den Befehlen durch entwedergedit
odernano
.Bestimmen Sie Ihre Tastatur
sollte in meinem Fall die Tastaturen drucken, die an den Computer angeschlossen sind
Jetzt gibt es zwei Möglichkeiten:
USB-Tastaturen :
Wenn Sie Ihre USB-Tastatur neu zuordnen möchten, überprüfen Sie sie, indem Sie sie ausführen
Hier müssen Sie die 9 in der awk-Anweisung durch die richtige Zahl ersetzen. Die Ausgabe sollte ähnlich sein wie
Dies zeigt korrekt an, dass meine Tastatur über meinen Logitech USB-Empfänger bedient wird (Eingang / Ereignis7 erwies sich als meine Logitech G9-Maus mit einigen programmierbaren Tasten).
Laptop-Tastatur :
Wenn Sie Ihre Laptop-Tastatur neu zuordnen möchten, sollten Sie sich die Nummer für
AT keyboard
die 4 in meinem Fall merken . Holen Sie sich auch die dmi-Informationen für Ihren Laptop:Das ist in meinem Fall
und
Das ist in meinem Fall
Bestimmen Sie Ihre aktuelle Zuordnung Ihrer Funktionstasten
Jetzt können wir unsere aktuelle Keymapping durch Hören auf die Tastatur bestimmen (richtige Nummer einfügen)
Sie können diesen Befehl beenden, indem Sie ihn Escauf der Tastatur oder Ctrl+ cauf einer anderen Tastatur verwenden.
Wenn der Bildschirm beginnt sehr hart nach unten scrollen, drücken Escund Ctrl+ cein paar Mal und versuchen Sie es erneut mit
oder, wenn Sie immer noch das Bildlaufproblem haben
Im letzten Fall haben Sie immer noch das Scrollen, aber wenn Sie die Funktionstasten drücken, sollten sie dort angezeigt werden,
~/keymap.log
wo Sie sie später lesen können.Jetzt können wir die aktuelle Zuordnung Ihrer Funktionstasten überprüfen, indem wir sie drücken. Daraufhin sollte eine Liste angezeigt werden (dies ist meine Fn+ F1bis Fn+ F12):
Notieren Sie sich nun die Scan-Codes, für die sich das Verhalten ändern soll.
Ändern der Schlüsselcodes für die Scan-Codes
Wenn Sie sehen, dass der Schlüsselcode eindeutig nicht das abdeckt, was Sie von dem Schlüssel erwarten, können Sie
/usr/include/linux/input.h
unter Schlüssel und Schaltflächen nachsehen , ob es einen Schlüsselcode gibt, der besser zu dem passt, was Sie tatsächlich wollen. Die dortigen Schlüsselcodes liegen im Format vorKEY_KEYCODE
und Sie müssen das Teil danachKEY_
in Kleinbuchstaben notieren . Manchmal reicht es aus, dies zu ändern, um das Problem zu lösen.Den Helligkeitstasten ist jedoch häufig der richtige Schlüsselcode zugeordnet, sodass sie nicht neu zugeordnet werden können. Wir müssen sie also in andere Schlüsselcodes ändern. Wir werden
prog1
undprog2
für dieses Beispiel verwenden, da diese auf meinem Computer nicht verwendet werden. Sie können sie jedoch auchf13
durchf24
oderf20
durch verwenden,f24
wenn Sie eine Apple-Tastatur mit F1Durchgangstasten haben F19.Erstellen einer benutzerdefinierten Keymap :
Erstellen Sie eine Keymap-Datei im Verzeichnis
/lib/udev/keymaps
mit einem geeigneten Namen. Sehen Sie sich die Ausgabe vonls /lib/udev/keymaps
an, um nach geeigneten Namen zu suchen . Ich gehe mitcustom-brightness
zum Zweck dieser Frage.und geben Sie die Scan-Codes der Schlüssel ein, die Sie ändern möchten, gefolgt von den Scancodes, die sie haben sollen. Mein
custom-brightness
sieht so aus:Erstellen Sie eine benutzerdefinierte Schlüsselfreigabedatei. Nur wenn Sie die Tastatur Ihres Laptops ändern :
Manchmal wird das Ereignis der Tastenfreigabe nicht ordnungsgemäß gesendet , wodurch der Computer hängen bleibt. Um dies zu vermeiden, schreiben wir auch eine benutzerdefinierte Schlüsselfreigabedatei
Diese Datei sollte die gleichen Scan-Codes enthalten, meine sieht aus wie
Stellen Sie sicher, dass die neuen Zuordnungen in die
Regeldateien geladen sind. Jetzt müssen wir sicherstellen, dass Ihre Zuordnungen geladen sind. Wir können dies durch Bearbeiten tun
/lib/udev/rules.d/95-keymap.rules
, daher ist es klug, ein Backup zu erstellenWieder haben wir zwei Möglichkeiten:
USB-Tastaturen :
Da Sie eine USB-Tastatur haben, sollten Sie Ihren Eintrag unter hinzufügen
LABEL="keyboard_usbcheck"
und er sollte hinter den anderen Einträgen Ihres Tastaturherstellers liegen. Das liegt daran, dass meine Tastatur mitwird bereits von einer der Regeln abgeglichen, andernfalls wird es überschrieben.
Fügen Sie die folgende Regel hinzu, nach der Sie das
ID_VENDOR_ID
undID_MODEL_ID
und den Namen Ihrer Keymap entsprechend ändern solltenLaptop-Tastatur :
Wenn
/lib/udev/findkeyboards
gemeldet wird, dass Ihre Laptop-Tastatur unterAT keyboard
Ihre Regel fallen sollteLABEL="keyboard_vendorcheck"
, setzen Sie sie andernfalls unterLABEL="keyboard_modulecheck"
. Setzen Sie es erneut unter die anderen Einträge für Ihren Laptop-Hersteller. Füge die folgende Regel hinzu (SAMSUNG ELECTRONICS CO., LTD.
ist etwas lang, also habe ich einen Platzhalter verwendet`)Fügen Sie jetzt auch eine Regel hinzu,
/lib/udev/rules.d/95-keyboard-force-release.rules
nachdem Sie sie gesichert habenWieder unter den anderen Einträgen Ihres Herstellers hinzufügen
Stellen Sie sicher, dass udev die neuen Regeln lädt.
Um die neuen Regeln zu laden, führen Sie sie aus
HINWEIS:
udevadm control --reload-rules
(noch in den Anweisungen auf vielen Websites) funktioniert nicht.Überprüfen Sie nun, ob die Regeln von erfolgreich angewendet wurden
die jetzt für die Helligkeitstasten melden sollte
Neuzuordnung der Schlüssel in den Systemeinstellungen
Wenn im letzten Schritt die richtigen Schlüsselcodes gemeldet wurden, funktionieren beide Schlüssel automatisch (falls sie zuerst die falschen Schlüsselcodes hatten).
Für die Helligkeit müssen Sie die Tasten noch an einen Scrip binden, der jetzt über Systemeinstellungen> Tastatur> Verknüpfungen möglich ist .
Genießen
Anmerkungen :
Wenn Ihre Schlüssel den falschen Schlüsselcode hatten und durch diesen Ansatz behoben wurden, befolgen
/usr/share/doc/udev/README.keymap.txt.gz
Sie bitte die Anweisungen in (Sie können diese öffnen, ohne sie mit zu extrahierenzless
) und senden Sie Ihren Ergebnissen die dort genannten E-Mail-Adressen. Die Änderungen können dann in die nächste Version aufgenommen werden. Viele Benutzer werden davon profitieren!Vielen Dank an diesen hilfreichen Beitrag von Vaidas Jablonskis.
quelle
$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory
auch$ /lib/udev/findkeyboards bash: /lib/udev/findkeyboards: No such file or directory