DPI-Tasten der Logitech G400-Maus deaktivieren/neu zuordnen

DPI-Tasten der Logitech G400-Maus deaktivieren/neu zuordnen

Ich hatte die Logitech MX-518-Maus, aber sie hatte Probleme mit der Reaktionsfähigkeit, sodass ich den Support anrief, um Ersatz zu bekommen. Statt einer weiteren 518 schickten sie mir eineLogitech G400 Mausweil der 518 nicht mehr hergestellt wird. Dies führt zu Problemen, da der MX518 zwar vonAbonnieren, die G400-Maus wird nicht unterstützt. Beim Ausführen $ lomoco -swird angezeigt 001.003: 046d:c245 Unsupported Logitech device: Unknown.

Ich möchte die DPI meiner Maus auf einen einzigen Wert beschränken und die Tasten DPI+ und DPI- meiner Tastatur PgUpneu zuordnen.PgDn

Wie würde ich das erreichen?

Logitech G400

Die Schaltflächen sind in der Reihenfolge:

  1. Knopf 1: Links Klick
  2. Taste 2: Mittelklick
  3. Taste 3: Rechtsklick
  4. Taste 4: Mausrad nach oben
  5. Taste 5: Mausrad nach unten
  6. Taste 6: Keiner
  7. Taste 7: Keiner
  8. Taste 8: Daumentaste Nr. 1
  9. Taste 9: Daumentaste Nr. 2
  10. Taste 10: Schaltfläche zum Aufgabenwechsel
  11. Taste 11: Keiner
  12. Taste 12: Keiner

Bei der Vorgängermaus (MX 518)Die Tasten 11 und 12 waren die DPI-Tasten. Ein Unterschied zwischen diesen Tasten und den anderen besteht darin, dass Anwendungen wie xevstandardmäßig das Drücken dieser Tasten nicht als Ereignis erkennen. Damit diese Tasten bei der MX 518-Maus geändert/belegt werden können, müssen sie zunächst deaktiviert werden. Ich glaube, das lomocohieß „Logitech SmartScroll/Cruise Control“. Bei der G400 lomocofunktioniert es nicht und mir ist keine Alternative bekannt.

Hier ist auch eine Ausgabe von xinput, falls sie hilfreich ist.

user@localhost:~$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech Gaming Mouse G400                id=8    [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]
user@localhost:~$ xinput list-props 8
Device 'Logitech Gaming Mouse G400':
    Device Enabled (121):   1
    Coordinate Transformation Matrix (123): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (248): 0
    Device Accel Constant Deceleration (249):   2.000000
    Device Accel Adaptive Deceleration (250):   1.000000
    Device Accel Velocity Scaling (251):    1.000000
    Device Product ID (238):    1133, 49733
    Device Node (239):  "/dev/input/event4"
    Evdev Axis Inversion (252): 0, 0
    Evdev Axes Swap (254):  0
    Axis Labels (255):  "Rel X" (131), "Rel Y" (132), "Rel Vert Wheel" (247)
    Button Labels (256):    "Button Left" (124), "Button Middle" (125), "Button Right" (126), "Button Wheel Up" (127), "Button Wheel Down" (128), "Button Horiz Wheel Left" (129), "Button Horiz Wheel Right" (130), "Button Side" (242), "Button Extra" (243), "Button Forward" (244), "Button Back" (245), "Button Task" (246), "Button Unknown" (241), "Button Unknown" (241), "Button Unknown" (241), "Button Unknown" (241)
    Evdev Middle Button Emulation (257):    0
    Evdev Middle Button Timeout (258):  50
    Evdev Third Button Emulation (259): 0
    Evdev Third Button Emulation Timeout (260): 1000
    Evdev Third Button Emulation Button (261):  3
    Evdev Third Button Emulation Threshold (262):   20
    Evdev Wheel Emulation (263):    0
    Evdev Wheel Emulation Axes (264):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (265):    10
    Evdev Wheel Emulation Timeout (266):    200
    Evdev Wheel Emulation Button (267): 4
    Evdev Drag Lock Buttons (268):  0

Antwort1

@Koviko – Ich habe eine ähnliche Maus – eine Logitech MX1100 – die auch DPI-Tasten hat, die nicht an den USB gesendet werden, wenn sie im Standardmodus gedrückt werden. Ich habe selbst einige Tests durchgeführt und konnte schließlich die Codes herausfinden, um das Signal zum Umschalten der Maus in den „Treibermodus“ zu senden, wodurch ich dann easygestures/xev verwenden konnte, um die Tasten neu zuzuweisen.

Wenn Sie möchten, kann ich Sie durch die Schritte führen, die ich verwendet habe, um herauszufinden, wie man es ausschaltet (ich habe jetzt ein Skript, das ich einfach beim Start ausführen muss, als eine Art Workaround, aber es funktioniert zumindest), aber dazu muss man eine VM einrichten, eine zweite Maus haben und den Roh-USB-Verkehr abhören, und leider scheint es sehr mausspezifisch zu sein.

Meine Schritte (es gibt mit ziemlicher Sicherheit bessere):

1) Installieren Sie eine Windows-VM (mit der installierten Logitech SetPoint-Software; ich habe VirtualBox verwendet, da ich das bereits mit WinXP für die Arbeit eingerichtet hatte), Wireshark und gcc auf Ihrem System. 2) Dann habe ich die folgenden Schritte in einem Terminal ausgeführt:

sudo modprobe usbmon
sudo wireshark &
sudo /usr/lib/virtualbox/VirtualBox &

3) Wählen Sie in Wireshark die Option „Die verfügbaren Erfassungsschnittstellen auflisten …“ und notieren Sie sich, welche USB-Busnummer viele Pakete generiert, wenn Sie die Maus bewegen (bei mir war es usbmon3, aber ich nehme an, dass das ausschließlich davon abhängt, an welchen USB-Anschluss Ihr Empfänger angeschlossen ist).

3) Innerhalb von VirtualBox (ich musste es als sudo ausführen, um den USB-Controller freizugeben) bearbeitete ich die Einstellungen der XP-VM und aktivierte sowohl den USB-Controller als auch den USB 2.0 (EHCI)-Controller. Dann fügte ich einen neuen USB-Filter hinzu, der von einem vorhandenen Gerät bestückt wurde, wählte den Empfänger meiner Logitech-Maus aus (Hersteller-ID 046d, Produkt c245, für Sie) und startete dann die VM.

(Hinweis: Ab diesem Zeitpunkt musste ich eine zweite Maus anschließen, da ich die Kontrolle über meine normale Maus an die Windows-VM übergeben musste, damit die SetPoint-Software erkennen konnte, dass es sich um mehr als eine generische Maus handelte.)

4) In der VM startete ich dann die SetPoint-Software und ging zu dem Bildschirm, auf dem Sie benutzerdefinierte Aktionen für verschiedene Schaltflächen festlegen können. Dann startete ich in Wireshark eine Erfassung auf dem USB-Bus für die Maus, ging dann sofort in die VM/SetPoint und änderte die Tastenzuweisung von DPI +/- in Keystroke Assignment, ging dann sofort zurück zu Wireshark und stoppte die Erfassung. (Ich wiederholte dies noch etwa 10-15 Mal und änderte die Einstellungen in verschiedene Modi, hauptsächlich, weil ich nicht sicher war, wie viele Daten ich benötigen würde, aber nach Überprüfung brauchte ich wirklich nur die ersten 1-2 Erfassungen.)

Vorausgesetzt, Ihre Maus funktioniert ungefähr so ​​wie meine, was ich vermute, würde Ihre Aufnahme wahrscheinlich insgesamt 16 Frames umfassen, 4x GET DESCRIPTOR, dann 3x (2xURB_CONTROL out + 2xURB_INTERRUPT in). Was Sie suchen, sind die 3 längeren URB_CONTROL-Ausgangsframes. Ein Beispiel für einen meiner aufgenommenen Frames ist:

0000  c0 80 64 36 00 88 ff ff  53 02 00 03 03 00 00 00
0010  5e 4b 25 50 00 00 00 00  f4 d9 08 00 8d ff ff ff
0020  07 00 00 00 07 00 00 00  21 09 10 02 01 00 07 00
0030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
0040  10 01 80 65 82 85 ff

Was wir suchen, sind die letzten 7 Bytes der Antwort (im obigen Beispiel die '10 01 80 65 82 85 ff') aus jedem der längeren 'URB_CONTROL out'-Frames. Schließlich habe ich den Quellcode des "g_hack" heruntergeladen vonGit, und habe oben sowohl meinen Mausproduktcode als auch eine neue Option hineingeschustert (ich habe sie auf 0/1 mit einer if-Anweisung darin gesetzt, da es sich nur um einen sehr groben Proof of Concept handelte), die meine Maus in den „Treibermodus“ oder „DPI-Modus“ versetzen würde.

Danach mussten Sie nur noch die neu verfügbaren Maustasten in einem Neuzuordnungsprogramm Ihrer Wahl einrichten (ich habe Easygestures verwendet, da ich dies als erstes mit einer Benutzeroberfläche gefunden habe – es kann sein, dass es einen besseren Ersatz gibt, vielleicht aber auch nicht).

verwandte Informationen