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 wissen vim
, ersetzen Sie es bitte in den Befehlen durch entweder gedit
oder nano
.
Bestimmen Sie Ihre Tastatur
/lib/udev/findkeyboards
sollte in meinem Fall die Tastaturen drucken, die an den Computer angeschlossen sind
USB keyboard: input/event9
USB keyboard: input/event7
AT keyboard: input/event4
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
udevadm info --export-db | awk '/event9/' RS="" | grep -P 'ID_(VENDOR|MODEL)(?!_ENC)'
Hier müssen Sie die 9 in der awk-Anweisung durch die richtige Zahl ersetzen. Die Ausgabe sollte ähnlich sein wie
E: ID_MODEL=USB_Receiver
E: ID_MODEL_ID=c52b
E: ID_VENDOR=Logitech
E: ID_VENDOR_ID=046d
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:
cat /sys/class/dmi/id/sys_vendor
Das ist in meinem Fall
SAMSUNG ELECTRONICS CO., LTD.
und
cat /sys/class/dmi/id/product_name
Das ist in meinem Fall
305U1A
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)
sudo /lib/udev/keymap -i input/event4
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
sudo /lib/udev/keymap -i input/event4 2> /dev/null
oder, wenn Sie immer noch das Bildlaufproblem haben
sudo /lib/udev/keymap -i input/event4 > ~/keymap.log
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):
scan code: 0xCE key code: kpplusminus
scan code: 0x89 key code: brightnessdown
scan code: 0x88 key code: brightnessup
scan code: 0x82 key code: switchvideomode
scan code: 0xF9 key code: f23
scan code: 0xA0 key code: mute
scan code: 0xAE key code: volumedown
scan code: 0xB0 key code: volumeup
scan code: 0x43 key code: f9
scan code: 0x44 key code: f10
scan code: 0xB3 key code: prog3
scan code: 0x86 key code: wlan
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 vor KEY_KEYCODE
und Sie müssen das Teil danach KEY_
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
und prog2
für dieses Beispiel verwenden, da diese auf meinem Computer nicht verwendet werden. Sie können sie jedoch auch f13
durch f24
oder f20
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 von ls /lib/udev/keymaps
an, um nach geeigneten Namen zu suchen . Ich gehe mit custom-brightness
zum Zweck dieser Frage.
sudo vim /lib/udev/keymaps/custom-brightness
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:
# /lib/udev/keymaps/custom-brightness
0x89 prog1
0x88 prog2
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
sudo vim /lib/udev/keymaps/force-release/custom-brightness
Diese Datei sollte die gleichen Scan-Codes enthalten, meine sieht aus wie
# /lib/udev/keymaps/force-release/custom-brightness
0x89
0x88
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 erstellen
Wieder 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 mit
E: ID_MODEL=USB_Receiver
E: ID_MODEL_ID=c52b
E: ID_VENDOR=Logitech
E: ID_VENDOR_ID=046d
wird bereits von einer der Regeln abgeglichen, andernfalls wird es überschrieben.
Fügen Sie die folgende Regel hinzu, nach der Sie das ID_VENDOR_ID
und ID_MODEL_ID
und den Namen Ihrer Keymap entsprechend ändern sollten
ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c52b", RUN+="keymap $name custom-brightness"
Laptop-Tastatur :
Wenn /lib/udev/findkeyboards
gemeldet wird, dass Ihre Laptop-Tastatur unter AT keyboard
Ihre Regel fallen sollte LABEL="keyboard_vendorcheck"
, setzen Sie sie andernfalls unter LABEL="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`)
ENV{DMI_VENDOR}=="SAMSUNG*", ATTR{[dmi/id]product_name}=="305U1A", RUN+="keymap $name custom_brightness"
Fügen Sie jetzt auch eine Regel hinzu, /lib/udev/rules.d/95-keyboard-force-release.rules
nachdem Sie sie gesichert haben
sudo cp /lib/udev/rules.d/95-keyboard-force-release.rules /lib/udev/rules.d/95-keyboard-force-release.rules.bak
sudo vim /lib/udev/rules.d/95-keyboard-force-release.rules
Wieder unter den anderen Einträgen Ihres Herstellers hinzufügen
ENV{DMI_VENDOR}=="SAMSUNG*", ATTR{[dmi/id]product_name}=="305U1A", RUN+="keyboard-force-release.sh $devpath custom_test"
Stellen Sie sicher, dass udev die neuen Regeln lädt.
Um die neuen Regeln zu laden, führen Sie sie aus
sudo adevadm trigger
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
sudo /lib/udev/keymap -i input/event4
die jetzt für die Helligkeitstasten melden sollte
scan code: 0x89 key code: prog1
scan code: 0x88 key code: prog2
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 extrahieren zless
) 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.