Neubelegung der Multimedia-Tastatur

Neubelegung der Multimedia-Tastatur

Ich habe eine G7BTS-Fernbedienung, die sowohl über Tastatur- als auch Multimediatasten verfügt. Die meisten Tasten funktionieren einwandfrei, außer der „OK“-Taste.

Die OK-Schaltfläche hat den Tastencode 353, was KEY_SELECT bedeutet. Aber mein Ubuntu 20.04 erkennt ihn nicht.

Nachfolgend sind einige Untersuchungen aufgeführt, die ich durchgeführt habe:

  1. sudo evtest

Ausgabe:

/dev/input/event9:  G7BTS Keyboard
/dev/input/event10: G7BTS Mouse
/dev/input/event11: G7BTS Consumer Control
/dev/input/event12: G7BTS System Control
  1. grep "" /sys/class/input/event11/device/id/*

Ausgabe:

/sys/class/input/event11/device/id/bustype:0005
/sys/class/input/event11/device/id/product:0041
/sys/class/input/event11/device/id/vendor:045e
/sys/class/input/event11/device/id/version:0300
  1. sudo evtest /dev/input/event11

Ausgabe:

Testing ... (interrupt to exit)
Event: time 1640250050.701930, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0041
Event: time 1640250050.701930, type 1 (EV_KEY), code 353 (KEY_SELECT), value 1
Event: time 1640250050.701930, -------------- SYN_REPORT ------------
  1. /etc/udev/hwdb.d/60-keyboard.hwdb

Ich habe versucht, die OK-Taste auf „Eingabe“ umzuordnen.

Inhalt der Datei 60-keyboard.hwdb:

# G7BTS
evdev:input:b0005v045Ep0041*
 KEYBOARD_KEY_c0041=enter
  1. sudo udevadm hwdb --test='evdev:input:b0005v045ep0041*'

Ausgabe:

KEYBOARD_KEY_c0041=enter

Bisher kann ich immer noch keine Ausgabe in xev sehen, wenn ich die OK-Taste drücke.

Wir sind für alle Vorschläge und Hilfe dankbar.

Antwort1

Vielen Dank an alle.

Ich habe mehrere Tage gebraucht, um die Lösung zu finden, und schließlich habe ich den richtigen Weg gefunden.

Referenz

Scancodes den Schlüsselcodes zuordnen

Hintergrund

Version 11 des X-Protokolls unterstützt nur einbytelange Tastencodes. Tastencodes über 255 werden daher ignoriert. Ubuntu 20.04 LTS verwendet bisher noch Version 11 des X-Protokolls.

Meine G7BTS-Ferntastatur hat eine „OK“-Taste. Diese Taste hat den Tastencode 353. Innerhalb von „xev“ passiert nichts, wenn diese Taste gedrückt wird.

Lösung

Kurz gesagt besteht die Lösung darin, eine hwdb-Konfigurationsdatei zu erstellen, die dazu verwendet wird, bestimmte Tasten anderen Tasten zuzuordnen.

udev

udev bietet eine integrierte Funktion namens hwdb, um den Hardware-Datenbankindex in /etc/udev/hwdb.bin zu verwalten. Die Datenbank wird aus Dateien mit der Erweiterung .hwdb kompiliert, die sich in den Verzeichnissen /usr/lib/udev/hwdb.d/, /run/udev/hwdb.d/ und /etc/udev/hwdb.d/ befinden. Die Standard-Zuordnungsdatei für Scancodes zu Tastencodes ist /usr/lib/udev/hwdb.d/60-keyboard.hwdb.

Allgemeine Eingabegeräte (auch USB-Tastaturen), die durch die USB-Kernel-Modalien identifiziert werden:

evdev:input:b<bus_id>v<vendor_id>p<product_id>e<version_id>-<modalias>

wobei <bus_id>, <vendor_id> und <version_id> die 4-stelligen hexadezimalen Großbuchstaben für Hersteller-, Produkt- und Versions-IDs sind

Wie man diese IDs oben findet, ist der Schlüssel

install hardinfo
sudo apt install hardinfo
software – System Profiler – Input Devices – G7BTS Comsumer Control
Device Information
 Name       G7BTS Comsumer Control
 Type       keyboard
 Bus        0x0005
 Vender     0x045e
 Product    0x0041
 Version    0x0300

Eine weitere wichtige Sache ist, den Scan-Code der Schaltfläche „OK“ zu erhalten.

install evtest
sudo apt-get install evtest
sudo evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:    Lid Switch
/dev/input/event1:    Sleep Button
/dev/input/event2:    Power Button
/dev/input/event3:    AT Translated Set 2 keyboard
/dev/input/event4:    SynPS/2 Synaptics TouchPad
/dev/input/event5:    TPPS/2 IBM TrackPoint
/dev/input/event6:    ThinkPad Extra Buttons
/dev/input/event7:    Video Bus
/dev/input/event8:    Integrated Camera: Integrated C
/dev/input/event9:    G7BTS Keyboard
/dev/input/event10:    G7BTS Mouse
/dev/input/event11:    G7BTS Consumer Control
/dev/input/event12:    G7BTS System Control
/dev/input/event13:    HDA Intel PCH Mic
/dev/input/event14:    HDA Intel PCH Dock Mic
/dev/input/event15:    HDA Intel PCH Headphone
/dev/input/event16:    HDA Intel PCH Dock Headphone
/dev/input/event17:    HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event11:    HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event19:    HDA Intel PCH HDMI/DP,pcm=8
Select the device event number [0-19]: ^C

Achten Sie auf „/dev/input/event11“

sudo evtest /dev/input/event11

Drücken Sie dann die Taste „OK“ und die Ausgabe ist unten

Event: time 1640238746.775220, type 4 (EV_MSC), code 4 (MSC_SCAN), value c0041
Event: time 1640238746.775220, type 1 (EV_KEY), code 353 (KEY_SELECT), value 0
Event: time 1640238746.775220, -------------- SYN_REPORT ------------

Achten Sie auf den „Wert c0041“. Dieser Wert c0041 ist der Scancode der Schaltfläche „OK“.

Erstellen Sie die hwdb-Datei

Jetzt haben wir die IDs und den Scan-Code, die wir brauchen. Tragen Sie diese in die oben stehenden „Generic input devices (also USB keyboards) identified by the usb kernel modalias“ ein, und schließlich haben wir die folgende Konfigurationsdatei G7BTS.hwdb:

evdev:input:b0005v045Ep0041e0300*
 KEYBOARD_KEY_c0041=enter

In diesem Kontext ist die Schaltfläche „OK“ der Taste „Eingabe“ zugeordnet. Sie können sie jeder beliebigen Taste zuordnen.

Datei am Ziel ablegen

sudo mv G7BTS.hwdb /etc/udev/hwdb.d/

Aktualisieren

sudo udevadm hwdb --update
sudo udevadm trigger --verbose 

Prüfen

sudo udevadm hwdb --test='evdev:input:b0005v045Ep0041e0300*'

Das Ergebnis ist

KEYBOARD_KEY_c0041=enter

Das Ende

Das sind alle Schritte zum Neuzuordnen von Tasten. Diese Neuzuordnung funktioniert auch nach dem Neustart noch.

Antwort2

Ich habe eine externe Tastatur in Ubuntu 20.04 zum Laufen gebracht, mit den Informationen vonhttps://www.foell.org/justin/remapping-keyboard-keys-in-ubuntu-with-udev-evdev/

  1. Verwenden Sie diese Option sudo evtest, um Informationen zu Ihrer Tastatur zu finden, etwa:
Input driver version is 1.0.1
Input device ID: bus 0x5 vendor 0x5ac product 0x24f version 0x11b
Input device name: "Keychron K6 Keyboard"
  1. verwenden sudo evemu-describe, um die Eigenschaften der Tastatur zu finden, einschließlich der führenden Nullen. In der Ausgabe finden Sie etwas wie:
# Properties:
N: Keychron K6 Keyboard
I: 0005 05ac 024f 011b
  1. Erstellen Sie die .hwdb-Datei wie Sie es getan haben, aberalle führenden 000, UndSetzen Sie alle hexadezimalen Symbole in Großbuchstabenwie:
# Input device ID: bus 0x5 vendor 0x5ac product 0x24f version 0x11b
# evdev:input:b<bus_id>v<vendor_id>p<product_id>e<version_id>-<modalias>
evdev:input:b0005v05ACp024F*

  1. Sie müssen Ihr System nicht neu starten. Führen Sie einfach Folgendes aus:
$ sudo systemd-hwdb update
$ sudo udevadm trigger
  1. Sie können überprüfen, ob Ihre Tastatur richtig zugeordnet wurde, indem Sie Folgendes verwenden $ udevadm info /dev/input/event20(ersetzen Sie event20 durch das Ereignis für Ihre Tastatur).

verwandte Informationen