Wie funktioniert der Zoomregler (und andere Schaltflächen) der Microsoft Natural Ergonomic Keyboard 4000?

21

Ich verwende eine Microsoft Natural Ergonomic Keyboard 4000 unter Ubuntu 10.10. Die Multimedia-Tasten (Lautstärke, Wiedergabe / Pause) funktionieren, die Mail- und die Taschenrechner-Taste ebenfalls.

Jetzt würde ich gerne den Zoom-Schieberegler verwenden, wenn es möglich wäre, würde ich gerne damit einen Bildlauf durchführen. Gibt es eine Möglichkeit, dies zu ermöglichen?

Martin Ueding
quelle
2
Siehe askubuntu.com/questions/471802/… . Frühere Antworten sind möglicherweise veraltet.
Matt

Antworten:

18

Erstellen Sie die Datei /etc/udev/rules.d/98-ms-ergo.rulesmit folgendem Inhalt:

ACTION=="remove", GOTO="keyboard_end"
KERNEL!="event*", GOTO="keyboard_end"
ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
SUBSYSTEMS!="usb", GOTO="keyboard_end"

SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"

ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d pageup 0xc022e pagedown"

GOTO="keyboard_end"

Dies ordnet die Zoom-Taste Bild-auf / Bild-ab zu, ohne die installierten Dateien zu ändern /lib/udev.

Nach dem Hinzufügen müssen Sie nur die Tastatur aus- und wieder einstecken, damit sie funktioniert.

Kees Cook
quelle
Dies funktionierte für mich einwandfrei mit Fedora 19.
Rubens Mariuzzo
Beim Microsoft Ergonomic 7000 ist das Modell offenbar 071d (wie von lsusb ermittelt) und nicht 00db. Wenn also jemand dies für 7000 versucht, sollte er 00db in der obigen Datei wahrscheinlich durch 071d ersetzen. Wie auch immer, in meinem Fall (Ubuntu 14.04) funktioniert das nicht. Vielleicht hängt es damit zusammen, evtestdass der Zoomregler im Gegensatz zu den meisten anderen Tasten der Ergonomic 7000-Tastatur kein Ereignis auslöst. Nicht sicher , dass wie die Web / Home - Taste zeigt keine Ausgabe in evtestentweder - obwohl Ubuntu tut es abholen.
Matt
1
Ich kann den 4000 auch nicht auf den 14.04 bringen. Keine Ereignisse in xev.
Michael
Versuchte dies am 14.10 und funktionierte nicht.
Rubens Mariuzzo
@ Cocoabean xevfunktioniert auch bei mir nicht. Was macht ist evtest /dev/input/event3. Wenn Sie event3keine Reaktion auf diesen Schlüssel haben, testen Sie mit anderen Ereignissen ( event[0..9]).
Nicolás
9

Unter Xubuntu 13.10 (möglicherweise auch unter Ubuntu 13.10) können Sie dies folgendermaßen tun:

Tastenzuordnungen bearbeiten in /lib/udev/hwdb.d/60-keyboard.hwdb:

###########################################################
# Microsoft
###########################################################

# Microsoft Natural Ergonomic Keyboard 4000
keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

Lauf sudo udevadm hwdb --update

Starten Sie neu.

Konstantin K.
quelle
1
Arbeitete am 14.04 für mich
Amir Uval
Meine 60-keyboard.hwdb hatte einen vorhandenen Eintrag für MNEK4K mit Tastatur: usb: b0003v045Ep00DB *. Das Ändern der Aktionen hat nicht funktioniert. Das Hinzufügen eines neuen Eintrags mit diesen Aktionen hat funktioniert.
Alrekr
Arbeitete wie ein Zauber am 16.04. Ich habe "up" und "down" (anstelle von "pageup" und "pagedown") verwendet, um beim Durchsuchen von Webseiten einen reibungsloseren Bildlauf zu erhalten. Vielen Dank!
Pierre
Sie können katakanaund katakanahiragana(oder einen anderen nicht verwendeten Schlüsselcode von hal.freedesktop.org/quirk/quirk-keymap-list.txt ) anstatt einem Alias ​​zu vorhandenen Schlüsseln zuordnen . Auf diese Weise können Sie die Tasten in Kombination mit Modifikatoren erkennen und verwenden, um Lautstärke, Sprache, Größe usw. umzuschalten (konfigurieren Sie Ihren Fenstermanager, um zwei neue Supertasten zu verwenden).
Dmitry_romanov
4

Um die Microsoft Ergonomic Keyboard 4000 zu konfigurieren, müssen wir eine Konfigurationsdatei erstellen, die die Tastaturdeklaration und die Datensätze für die Zuordnung der Tasten enthält.

Dazu müssen drei Arten von Informationen ermittelt werden:

  • Tastaturtyp
  • Die Taste, scancodedie die eigentliche Taste auf der Tastatur ist
  • Die Taste name, um der ausgewählten Taste die gewünschte Funktionalität zuzuweisen

Finden Sie zuerst den Tastaturtyp:

Führen Sie im Terminal den folgenden Befehl aus:

lsusb 

Die Ausgabe bestimmt den Tastaturtyp:

...
Bus 004 Device 022: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
...    

Es erscheint nach ID. In diesem Fall ist es045e:00db

Finden Sie als zweites den Scancode und den Namen des Schlüssels.

Um sie zu bestimmen, verwenden wir das evtestProgramm, das die Ereignisinformationen eines bestimmten Geräts auf dem Terminal abmeldet:

evtest

Wenn Sie das Programm nicht haben, installieren Sie es, indem Sie den folgenden Befehl ausführen:

sudo apt-get install evtest

Durch Ausführen des evtestProgramms erhalten wir die folgende Ausgabe:

No device specified, trying to scan all of /dev/input/event* Available devices: 
/dev/input/event0:    Power Button     
/dev/input/event1:    Power Button     
/dev/input/event2:    PixArt USB Optical Mouse   
/dev/input/event3:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event4:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event5:    HDA Intel Front Headphone     
/dev/input/event6:    HDA Intel Line Out     
/dev/input/event7:    HDA Intel Line   
/dev/input/event8:    HDA Intel Rear Mic     
/dev/input/event9:    HDA Intel Front Mic     
/dev/input/event10:   HDA ATI HDMI HDMI/DP,pcm=3
Select the device event number [0-10]:

Die Ausgabe ist so ziemlich selbsterklärend. Geben Sie die entsprechende Nummer für die Tastatur ein. Hier ist die Nummer 3und drücken Sie die Eingabetaste:

Dadurch werden viele Informationen auf dem Terminal ausgegeben und in den folgenden Zeilen beendet:

... 

Testing ... (interrupt to exit)
Event: time 1472203902.240594, type 17 (EV_LED), code 0 (LED_NUML), value 0
Event: time 1472203902.240594, -------------- SYN_REPORT ------------
Event: time 1472203902.281456, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70058
Event: time 1472203902.281456, type 1 (EV_KEY), code 96 (KEY_KPENTER), value 0
Event: time 1472203902.281456, -------------- SYN_REPORT ------------

Jetzt werden bei jedem Tastendruck auf der Tastatur die Tasteninformationen ausgegeben. Zum Beispiel zeigt die Schrägstrich-Taste neben der rechten Umschalttaste:

Event: time 1472205062.294078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70038
Event: time 1472205062.294078, type 1 (EV_KEY), code 12 (KEY_SLASH), value 0
Event: time 1472205062.294078, -------------- SYN_REPORT ------------

Die erste Zeile des Protokolls enthält Informationen über die tatsächliche Taste auf der Tastatur, z. B. scancodewelche nach dem Wert steht. In diesem Fall ist es 70038

Die zweite Zeile enthält die zugewiesenen Funktionsinformationen wie den Namen des Schlüssels. In diesem Fall ist es SLASH . Untersuchen Sie die anderen Schlüssel, um die entsprechenden Namen zu finden.

Also auf den Punkt gebracht:

  • Unser Tastaturtyp ist: 045e: 00db
  • Der Scancode der Slash-Taste lautet: 70038
  • Der Name der zuzuweisenden Taste lautet SLASH

Nachdem wir die notwendigen Informationen gesammelt haben, erstellen wir die Konfigurationsdatei:

sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb

Drücken Sie i, um den Einfügemodus zu aktivieren, und geben Sie Folgendes ein:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_70038=minus      

Speichern und beenden Sie, indem Sie drücken, escapedann tippen :wqund die Eingabetaste drücken .

Führen Sie anschließend die folgenden beiden Befehle aus, damit die Konfiguration wirksam wird:

sudo udevadm hwdb --update
sudo udevadm control --reload

Ziehen Sie zum Schluss das Keyboard heraus und stecken Sie es wieder ein.

Einige Hinweise zur Konfigurationsdatei:

  • Das Format der Datei sollte genau dem angegebenen entsprechen. Der Platz vor dem Zuordnen von Datensätzen ist von entscheidender Bedeutung.
  • Statt sudoeditSie einen anderen Texteditor verwenden können, nur nicht vergessen , das genaue Format der Datei zu folgen , wie oben erläutert.
  • Dem Tastaturtyp wurden zwei Zeichen hinzugefügt: vund pdie für Hersteller und Produkt stehen. Sie sind auch wichtig.
  • Der Tastaturtyp wird in der Konfigurationsdatei in Großbuchstaben geschrieben. Unser Tastaturtyp war 045e: 00db, aber in der Konfiguration fügen wir v045Ep00DB ein *
  • Der Scancode des Schlüssels kommt gleich danach KEYBOARD_KEY_
  • Der Schlüsselname wird in der Konfigurationsdatei in Kleinbuchstaben angezeigt
  • Sie können so ziemlich jede Taste auf Ihrer Tastatur nach diesem Tutorial anpassen.
varDumper
quelle
3

Das Problem ist, dass der evdev-Treiber Schlüsselcodes> 255 ignoriert .
Die Lösung dank Marco Chiappero :

1) Sie müssen alle Neuzuordnungen definieren, die Sie benötigen (in Form von 
"scancode keycode" Liste) und platziere sie in einer Datei unter "/ lib / udev / keymaps /" 
(zum Beispiel habe ich dort logitech-lx710-cordless erstellt). Sie finden die
scannt mit evtest ("sudo evtest / dev / input / eventX", wobei X Ihr Wert ist 
Tastaturgerät. Seien Sie vorsichtig, manchmal sind diese zusätzlichen Schlüssel durch ausgesetzt
ein anderes Gerät oder Ihre Mausschnittstelle: zB. event3 -> kbd, event4 ->
Maus & zusätzliche Tasten). Hier ein paar Beispiele:

Ereignis: Uhrzeit 1294153475.909379, Typ 4 (Sonstiges), Code 4 (ScanCode), Wert c1028
"c1028" ist dann der Scancode-Wert, den Sie in Ihre Keymap-Datei einfügen werden 
nimm eine Zahl aus input.h wie oben beschrieben und konvertiere sie in 
hexadezimal. Schreiben Sie dann das Remap-Paar in Ihre Datei, möglicherweise mit einer Beschreibung
Kommentar, wie folgt:

0xC1028 0x9a # Drehtaste

Iterieren Sie für jeden Schlüssel> 255.

2) Sie müssen udev anweisen, diese Neuzuordnungsdatei bei jedem Auftreten anzuwenden 
Bearbeiten Sie daher die Datei "/lib/udev/rules.d/95-keymap.rules" und fügen Sie sie hinzu 
die udev-Regel, die Ihrer HW entspricht. Bitte fordern Sie mich nicht auf, eine Regel für zu definieren
Sie. 
HINWEIS: Sie können Ihre Keymap-Datei sofort selbst eingeben 
"sudo / lib / udev / keymap / dev / input / eventX / lib / udev / keymaps / $ YOUR_FILE" und 
überprüfe es noch einmal mit evtest.

Jetzt können Sie den Gnome-Shortcuts-Editor verwenden, um zu sehen, ob sich die Tasten jetzt befinden 
In X verwendbar und neue Verknüpfungen erstellen. Es kann jedoch vorkommen, dass nein
Diesem Schlüsselcode ist keysym zugewiesen (daher wird 0xXY anstelle von XF86Foo angezeigt). 
Sie können aktuelle Zuordnungen durch xmodmap -pke sehen, speichern Sie die Ausgabe in einem 
Datei und bearbeiten Sie sie bei Bedarf (eine vollständige Liste der Keysym - Codes finden Sie in
"/ usr / lib / X11 / XKeysymDB").
Nachdem Sie die Schlüsselwörter zu den neu zugeordneten Schlüsseln hinzugefügt haben, können Sie diese Datei speichern
als ~ / .Xmodmap (oder als / etc / X11 / Xmodmap, wenn Sie sich auf jeden Benutzer anwenden möchten).
desgua
quelle
Ich finde heraus, dass die von mir gewünschten Schaltflächen c022d und c022e sind, aber ich kann den Eingang nicht finden.h.
Martin Ueding
Wie ich verstehe (aber ich kann nicht testen , weil ich nicht über diese Hardware) Sie nicht wirklich brauchen input.h, brauchen Sie nur zu bearbeiten diese Datei: /lib/udev/rules.d/95-keymap.rules. ( Möglicherweise finden Sie hier im Launchpad Leute mit der gleichen Hardware, die in der Lage sind, bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/313514 zu unterstützen. ) Haben Sie die oben erwähnte Datei bearbeitet?
Desgua
1
Dies ist viel zu technisch und eine unorganisierte Antwort für die meisten Menschen. Einige gravierende Lücken: Keine Hilfe beim Ermitteln des geeigneten / dev / input / eventX, unklare Schritte, die mit Kontextinformationen gemischt sind, und die Aufforderung, keine Anweisungen zum Erstellen von Keymaps anzufordern.
Alain O'Dea
1
evtest ist nicht einmal standardmäßig installiert, was das Ganze noch schlimmer macht.
Alain O'Dea
Durch Ausprobieren habe ich festgestellt, dass meine Tastatur / dev / input / event3 ist und evtest keine Ereignisse vom Zoomregler aufnimmt.
Alain O'Dea
0

Auf meinem Computer wurden zusätzliche Schlüssel (HomePage, Search, Calc usw.) und Zoom-Eingaben über / dev / input / event5 gesendet, wohingegen normale Schlüssel über / dev / input / event4 gesendet wurden. Der Wert des Zoomschlüssels stimmt mit dem Wert des Warteschlangenüberlaufs überein.

niclas
quelle