Steuern von Bluetooth-Mausgesten, die Tastaturereignisse registrieren

9

tl; dr

Ich habe gerade einen Logitech T630 gekauft . Es ist eine Bluetooth-Maus, die mehrere Tastaturereignisse über Gesten (PDF) unterstützt. Diese Gesten sind in Ordnung und gut, aber ich kann sie kaum gebrauchen. Ich habe eine schreckliche Zeit, sie loszuwerden.

Ich möchte Folgendes in der Reihenfolge abnehmender Priorität tun:

  1. Deaktivieren Sie diese Gesten
  2. Ordnen Sie die Gesten neu zu (ich denke, dass dies ohne Hacken der Firmware oder Reverse Engineering der Windows / OS X-Gerätetreiber nicht möglich ist).

Ich will nicht:

  • benutze Windows
  • Deaktivieren Sie alle Gesten

Für weitere Informationen lesen Sie weiter…

Knöpfe und Gesten

Die dreizehn möglichen Mausereignisse sind:

  1. links Klick
  2. Mittelklick
  3. Rechtsklick
  4. hochscrollen
  5. runterscrollen
  6. nach links scrollen
  7. nach rechts scrollen
  8. Wischen Sie die Kante nach links
  9. Wischen Sie die Kante nach rechts
  10. Wischen Sie mit zwei Fingern nach links
  11. Wischen Sie mit zwei Fingern nach rechts
  12. zweimal tippen
  13. Doppeltippen mit zwei Fingern

Die ersten sieben sind in der Reihenfolge angeordnet, in der das Betriebssystem sie abbildet.

Nur die ersten drei sind mechanisch - alle anderen verwenden die Berührungsfläche:

Berührungsgesten

GUI-Optionen

Das Einrichten in Kubuntu Trusty war ein Kinderspiel, bietet jedoch wenig Unterstützung für die Konfiguration dieser anderen Gesten.

Diese Gesten beziehen sich nicht auf:

  • Touchpad ( synapticsläuft nicht)
  • Barrierefreiheit
  • heiße Ecken
  • Standard-Mausgesten

Alle diesbezüglichen Einstellungen wurden überprüft und sind alle deaktiviert.

Befehlszeileneinstellungen

lomoco

Das lomocoDienstprogramm zum Konfigurieren spezieller Funktionen von Logitech USB-Mäusen ist nicht anwendbar.

xinput

Ich dachte, ich xinputkönnte etwas helfen:

$ xinput --list | grep pointer
 Virtual core pointer                          id=2    [master pointer  (3)]
    Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
    Ultrathin Touch Mouse                     id=13   [slave  pointer  (2)]
$ xinput --list-props 13
Device 'Ultrathin Touch Mouse':
    Device Enabled (144):   1
    Coordinate Transformation Matrix (146): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (266): 0
    Device Accel Constant Deceleration (267):   1.000000
    Device Accel Adaptive Deceleration (268):   1.000000
    Device Accel Velocity Scaling (269):    10.000000
    Device Product ID (261):    1133, 45069
    Device Node (262):  "/dev/input/event11"
    Evdev Axis Inversion (270): 0, 0
    Evdev Axes Swap (272):  0
    Axis Labels (273):  "Rel X" (154), "Rel Y" (155), "Rel Horiz Wheel" (746), "Rel Vert Wheel" (265)
    Button Labels (274):    "Button Left" (147), "Button Middle" (148), "Button Right" (149), "Button Wheel Up" (150), "Button Wheel Down" (151), "Button Horiz Wheel Left" (152), "Button Horiz Wheel Right" (153), "Button Side" (1032), "Button Extra" (1033), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264), "Button Unknown" (264)
    Evdev Middle Button Emulation (275):    0
    Evdev Middle Button Timeout (276):  50
    Evdev Third Button Emulation (277): 0
    Evdev Third Button Emulation Timeout (278): 1000
    Evdev Third Button Emulation Button (279):  3
    Evdev Third Button Emulation Threshold (280):   20
    Evdev Wheel Emulation (281):    0
    Evdev Wheel Emulation Axes (282):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (283):    10
    Evdev Wheel Emulation Timeout (284):    200
    Evdev Wheel Emulation Button (285): 4
    Evdev Drag Lock Buttons (286):  0

Beachten Sie die 13 Tastenbeschriftungen:

$ xinput --get-button-map "Ultrathin Touch Mouse"
1 2 3 4 5 6 7 8 9 10 11 12 13

Das Ausschalten hat nicht geholfen:

$ xinput --set-button-map "Ultrathin Touch Mouse" 1 2 3 4 5 6 7 0 0 0 0 0 0

Auch wenn es beispielsweise die mittlere Maustaste in einen Linksklick verwandeln kann :

$ xinput --set-button-map "Ultrathin Touch Mouse" 1 1 3 4 5 6 7 0 0 0 0 0 0

xmodmap

Ähnlich wie bei den xinputgleichen Ergebnissen:

$ xmodmap -e "pointer = 1 2 3 4 5 6 7 0 0 0 0 0 0"

inputkbd

Von elmicha unten vorgeschlagen , funktioniert dies auf Kernel-Ebene und versucht, die Gesten zu null Tastaturereignissen zu führen. Sollte funktionieren, aber auch hier kein Glück mit folgendem Prozess:

$ sudo input-kbd 4 > keymap # note the 4 is from /dev/input/event4
# edit the keymap to map any combination of keys to either 0 or 240 (KEY_UNKNOWN)
# e.g. change this:
# 0x700e0 =  29 # KEY_LEFTCTRL
# to this:
# 0x700e0 =   0 # KEY_LEFTCTRL
# or this:
# 0x700e0 = 240 # KEY_LEFTCTRL
$ sudo input-kbd -f keymap 4
$ sudo input-kbd 4 # should return the updated keymap

Danach zeigt die Keymap keine Änderung mehr.

xkbcomp

Dies schlug der XInput-Hacker Peter Hutterer vor , sicherlich ein Mann, der wissen sollte, was er tat. Trotzdem kein Glück:

$ xkbcomp -xkb $DISPLAY t630.xkb
# edit the keyboard description and replace the definition of any key to NoSymbol or VoidSymbol
# e.g. change this:
#     key <LCTL> {         [       Control_L  ] };
# to this:
#     key <LCTL> {         [       NoSymbol   ] };
# or this:
#     key <LCTL> {         [       VoidSymbol ] };
$ sudo xkbcomp -i 8 t630.xkb $DISPLAY # here the 8 is the id in xinput, names don't work
$ xkbcomp -xkb -i 8 $DISPLAY - # should return the updated keyboard description

Danach zeigt die Tastaturbeschreibung keine Änderung.

Peter war der Meinung, dass dies wahrscheinlich auf die Tatsache zurückzuführen Xist , dass die Art des Geräts als Tastatur oder Maus verwirrt ist, ähnlich wie dieser Fehler , der das gegenteilige Problem hat. Dies kann erklären, warum alle anderen erwarteten Elemente nicht funktionieren. Er sagte jedoch auch, dass die Verwendung evdevaus dem gleichen Grund nicht funktionieren sollte.

evdev

Zuerst schien es zu funktionieren, aber es funktioniert auch nicht. Dadurch wird versucht, den generischen Eingabetreiber zu nutzen X, um die Schaltflächenzuordnung festzulegen, indem Folgendes an /usr/share/X11/xorg.conf.d/10-evdev.confoder angehängt wird /etc/X11/xorg.conf.d/10-evdev.conf:

# custom for Logitech Ultrathin Touch mouse

Section "InputDevice"
    Identifier "Logitech bluetooth Touch Mouse"
    Driver "evdev"
    Option "Name"   "Ultrathin Touch Mouse"
    Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
EndSection

Section "InputClass"
    Identifier  "Ultrathin Touch Mouse"
    Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
EndSection

Dies scheint fehlerfrei in /var/log/Xorg.0.log(using grep EE) zu funktionieren und xinputbestätigt die Tastenbelegung, führt jedoch nicht zum gewünschten Effekt.

Es ist jedoch bekannt, dass dies für den T631 funktioniert.

Tastaturereignisse

Ich denke, das Problem liegt in der Tatsache, dass diese Gesten Tastaturereignisse erzeugen:

$ sudo evemu-record /dev/input/event4 | grep "E: "
# swipe edge right
E: 0.000000 0004 0004 458976    # EV_MSC / MSC_SCAN             458976
E: 0.000000 0001 001d 0001      # EV_KEY / KEY_LEFTCTRL         1
E: 0.000000 0004 0004 458979    # EV_MSC / MSC_SCAN             458979
E: 0.000000 0001 007d 0001      # EV_KEY / KEY_LEFTMETA         1
E: 0.000000 0004 0004 458795    # EV_MSC / MSC_SCAN             458795
E: 0.000000 0001 000f 0001      # EV_KEY / KEY_TAB              1
E: 0.000000 0000 0000 0000      # ------------ SYN_REPORT (0) ----------
E: 0.002980 0004 0004 458976    # EV_MSC / MSC_SCAN             458976
E: 0.002980 0001 001d 0000      # EV_KEY / KEY_LEFTCTRL         0
E: 0.002980 0004 0004 458979    # EV_MSC / MSC_SCAN             458979
E: 0.002980 0001 007d 0000      # EV_KEY / KEY_LEFTMETA         0
E: 0.002980 0004 0004 458795    # EV_MSC / MSC_SCAN             458795
E: 0.002980 0001 000f 0000      # EV_KEY / KEY_TAB              0
E: 0.002980 0000 0000 0000      # ------------ SYN_REPORT (0) ----------
# swipe edge left
E: 3.306977 0004 0004 458978    # EV_MSC / MSC_SCAN             458978
E: 3.306977 0001 0038 0001      # EV_KEY / KEY_LEFTALT          1
E: 3.306977 0004 0004 458979    # EV_MSC / MSC_SCAN             458979
E: 3.306977 0001 007d 0001      # EV_KEY / KEY_LEFTMETA         1
E: 3.306977 0004 0004 458866    # EV_MSC / MSC_SCAN             458866
E: 3.306977 0001 00c1 0001      # EV_KEY / KEY_F23              1
E: 3.306977 0000 0000 0000      # ------------ SYN_REPORT (0) ----------
E: 3.310979 0004 0004 458978    # EV_MSC / MSC_SCAN             458978
E: 3.310979 0001 0038 0000      # EV_KEY / KEY_LEFTALT          0
E: 3.310979 0004 0004 458979    # EV_MSC / MSC_SCAN             458979
E: 3.310979 0001 007d 0000      # EV_KEY / KEY_LEFTMETA         0
E: 3.310979 0004 0004 458866    # EV_MSC / MSC_SCAN             458866
E: 3.310979 0001 00c1 0000      # EV_KEY / KEY_F23              0
E: 3.310979 0000 0000 0000      # ------------ SYN_REPORT (0) ----------
# two finger double tap
E: 10.225976 0004 0004 458983   # EV_MSC / MSC_SCAN             458983
E: 10.225976 0001 007e 0001     # EV_KEY / KEY_RIGHTMETA        1
E: 10.225976 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
E: 10.229986 0004 0004 458983   # EV_MSC / MSC_SCAN             458983
E: 10.229986 0001 007e 0000     # EV_KEY / KEY_RIGHTMETA        0
E: 10.229986 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
# two finger swipe left
E: 27.934977 0004 0004 589828   # EV_MSC / MSC_SCAN             589828
E: 27.934977 0001 0113 0001     # EV_KEY / BTN_SIDE             1
E: 27.934977 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
E: 27.937983 0004 0004 589828   # EV_MSC / MSC_SCAN             589828
E: 27.937983 0001 0113 0000     # EV_KEY / BTN_SIDE             0
E: 27.937983 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
# two finger swipe right
E: 32.513990 0004 0004 589829   # EV_MSC / MSC_SCAN             589829
E: 32.513990 0001 0114 0001     # EV_KEY / BTN_EXTRA            1
E: 32.513990 0000 0000 0000     # ------------ SYN_REPORT (0) ----------
E: 32.516994 0004 0004 589829   # EV_MSC / MSC_SCAN             589829
E: 32.516994 0001 0114 0000     # EV_KEY / BTN_EXTRA            0
E: 32.516994 0000 0000 0000     # ------------ SYN_REPORT (0) ----------

In Bezug auf die Keymap beziehen sich diese auf:

$ sudo input-kbd 4 | grep -e KEY_LEFTCTL -e KEY_LEFTMETA -e KEY_TAB -e KEY_LEFTALT -e KEY_F23 -e KEY_RIGHTMETA -e BTN_SIDE -e BTN_EXTRA
0x700e2 =  56  # KEY_LEFTALT
0x700e3 = 125  # KEY_LEFTMETA
0x700e7 = 126  # KEY_RIGHTMETA
0x7002b =  15  # KEY_TAB
0x70072 = 193  # KEY_F23
0x700e2 =  56  # KEY_LEFTALT
0x700e3 = 125  # KEY_LEFTMETA
0x700e7 = 126  # KEY_RIGHTMETA
0x90004 = 275  # BTN_SIDE
0x90005 = 276  # BTN_EXTRA

Doppeltippen scheint nichts zu bewirken.

Weitere Referenzen

Es kann auch hilfreich sein, auf einen Verweis auf ähnliche Probleme in einem Fehler hinzuweisen, bei dem sich die oben genannte Maus nicht in der gnome-bluetoothPIN-Code-Datenbank befindet. Es ist unnötig zu erwähnen, dass weitere Kommentare zu diesem Thema offiziell nicht aktuell zu diesem Fehlerbericht sind, aber die Verweise können dazu beitragen, eine Perspektive auf die Art dieses Problems zu geben.

Hier ist die Ausgabe von evemu-describe /dev/input/event4FWIW.

Bluetooth-Adapter

FWIW Ich habe zwei verschiedene USB-Bluetooth-Adapter verwendet:

$ lsusb | grep Bluetooth
Bus 007 Device 010: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
$ lsusb | grep Bluetooth
Bus 007 Device 011: ID 0a5c:21e8 Broadcom Corp. BCM20702A0 Bluetooth 4.0
wxl
quelle
2
Kommentare sind nicht für eine ausführliche Diskussion gedacht. Dieses Gespräch wurde in den Chat verschoben .
Mitch
Ich habe also ein Problem herausgefunden: Ich denke, Sie müssen auf Ihrer Windows VM installieren - Standard-Windows Logitech-Treiber und siehe vmmouse_detectDienstprogramm. xmodmapund xinputund wird sogar xorg.confunter Ihrem Kubuntu nützlich sein, aber nicht unter Windows VM. Unter WinVM sollten Sie also in der Lage sein, Ihre Maus mit Standard-Logitech-Dienstprogrammen für Windows zu konfigurieren.
Schneller
Hast du das jemals gelöst?
Seth
Nein, es wurde nicht behoben. Ideen haben?
wxl

Antworten:

3

Nach vielen Schmerzen gelang es mir, eine Schlüsselkarte zu erstellen, die etwas Nützliches bewirkt.

Zuerst ein paar Anmerkungen (ich kann noch keinen Kommentar abgeben) zur vorherigen Antwort:

  1. Das von Mr Backup bereitgestellte fixMouse-Skript funktioniert nicht, da manchmal der Tastatureintrag der Maus in xinput mit dem falschen Namen angezeigt wird, dh in meinem Fall wird Folgendes angezeigt:

    ⎡ Virtual core pointer                          id=2    [master pointer  (3)]
    ...
    ⎜   ↳ Ultrathin Touch Mouse                     id=11   [slave  pointer  (2)]
    ⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    
    ...
        ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]
    

    Auf der anderen Seite können Sie lsinput von input-utils verwenden, um die richtige ID zu finden:

    lsinput 2>&1|grep -B5 "Ultrathin Touch Mouse"
    /dev/input/event12
       bustype : BUS_BLUETOOTH
       vendor  : 0x46d
       product : 0xb00d
       version : 1792
       name    : "Ultrathin Touch Mouse"
    
  2. Aus irgendeinem Grund werden beim Ablegen der Karte für die Maus einige Codes dupliziert (zwischen 0x700e0 und 0x700e7). Achten Sie darauf, sie zu finden und zu beseitigen, oder Sie werden verrückt.

  3. Das Ersetzen aller Schlüsselcodes durch KEY_UNKNOWN verhindert das Platzen zufälliger Zeichen, macht jedoch die speziellen Berührungsaktionen unbrauchbar. Ich habe stattdessen festgestellt, dass Sie einige der Gesten nützlichen Kombinationen zuordnen können. Insbesondere sendet das "Wischen von links" die Codes 0x700e0 + 0x700e3 + 0x7002b, während das "Wischen von rechts" 0x700e3 + 0x700e3 + 0x70072 sendet. Ich habe KEX_UNKNOW 0x700e3 zugeordnet, das beiden Gesten gemeinsam ist, um es aus dem Weg zu räumen. Dann habe ich die restlichen Tastencodes verwendet, um STRG + F8 (Desktop-Raster) und ALT-F2 (Läufer) zu erstellen, aber natürlich können Sie eine beliebige Kombination von zwei beliebigen Tasten generieren. Hier ist meine Karte. Seien Sie beim Kopieren / Einfügen vorsichtig, um keine leeren Zeilen und keine anfänglichen Leerzeichen zu hinterlassen (sie unterbrechen input-kbd):

    0x700e3 = KEY_UNKNOWN
    0x700e0 = KEY_LEFTCTRL
    0x7002b = KEY_F8
    0x700e2 = KEY_LEFTALT
    0x70072 = KEY_F2
    0x70004 = KEY_UNKNOWN
    0x70005 = KEY_UNKNOWN
    0x70006 = KEY_UNKNOWN
    0x70007 = KEY_UNKNOWN
    0x70008 = KEY_UNKNOWN
    0x70009 = KEY_UNKNOWN
    0x7000a = KEY_UNKNOWN
    0x7000b = KEY_UNKNOWN
    0x7000c = KEY_UNKNOWN
    0x7000d = KEY_UNKNOWN
    0x7000e = KEY_UNKNOWN
    0x7000f = KEY_UNKNOWN
    0x70010 = KEY_UNKNOWN
    0x70011 = KEY_UNKNOWN
    0x70012 = KEY_UNKNOWN
    0x70013 = KEY_UNKNOWN
    0x70014 = KEY_UNKNOWN
    0x70015 = KEY_UNKNOWN
    0x70016 = KEY_UNKNOWN
    0x70017 = KEY_UNKNOWN
    0x70018 = KEY_UNKNOWN
    0x70019 = KEY_UNKNOWN
    0x7001a = KEY_UNKNOWN
    0x7001b = KEY_UNKNOWN
    0x7001c = KEY_UNKNOWN
    0x7001d = KEY_UNKNOWN
    0x7001e = KEY_UNKNOWN
    0x7001f = KEY_UNKNOWN
    0x70020 = KEY_UNKNOWN
    0x70021 = KEY_UNKNOWN
    0x70022 = KEY_UNKNOWN
    0x70023 = KEY_UNKNOWN
    0x70024 = KEY_UNKNOWN
    0x70025 = KEY_UNKNOWN
    0x70026 = KEY_UNKNOWN
    0x70027 = KEY_UNKNOWN
    0x70028 = KEY_UNKNOWN
    0x70029 = KEY_UNKNOWN
    0x7002a = KEY_UNKNOWN
    0x7002c = KEY_UNKNOWN
    0x7002d = KEY_UNKNOWN
    0x7002e = KEY_UNKNOWN
    0x7002f = KEY_UNKNOWN
    0x70030 = KEY_UNKNOWN
    0x70031 = KEY_UNKNOWN
    0x70032 = KEY_UNKNOWN
    0x70033 = KEY_UNKNOWN
    0x70034 = KEY_UNKNOWN
    0x70035 = KEY_UNKNOWN
    0x70036 = KEY_UNKNOWN
    0x70037 = KEY_UNKNOWN
    0x70038 = KEY_UNKNOWN
    0x70039 = KEY_UNKNOWN
    0x7003a = KEY_UNKNOWN
    0x7003b = KEY_UNKNOWN
    0x7003c = KEY_UNKNOWN
    0x7003d = KEY_UNKNOWN
    0x7003e = KEY_UNKNOWN
    0x7003f = KEY_UNKNOWN
    0x70040 = KEY_UNKNOWN
    0x70041 = KEY_UNKNOWN
    0x70042 = KEY_UNKNOWN
    0x70043 = KEY_UNKNOWN
    0x70044 = KEY_UNKNOWN
    0x70045 = KEY_UNKNOWN
    0x70046 = KEY_UNKNOWN
    0x70047 = KEY_UNKNOWN
    0x70048 = KEY_UNKNOWN
    0x70049 = KEY_UNKNOWN
    0x7004a = KEY_UNKNOWN
    0x7004b = KEY_UNKNOWN
    0x7004c = KEY_UNKNOWN
    0x7004d = KEY_UNKNOWN
    0x7004e = KEY_UNKNOWN
    0x7004f = KEY_UNKNOWN
    0x70050 = KEY_UNKNOWN
    0x70051 = KEY_UNKNOWN
    0x70052 = KEY_UNKNOWN
    0x70053 = KEY_UNKNOWN
    0x70054 = KEY_UNKNOWN
    0x70055 = KEY_UNKNOWN
    0x70056 = KEY_UNKNOWN
    0x70057 = KEY_UNKNOWN
    0x70058 = KEY_UNKNOWN
    0x70059 = KEY_UNKNOWN
    0x7005a = KEY_UNKNOWN
    0x7005b = KEY_UNKNOWN
    0x7005c = KEY_UNKNOWN
    0x7005d = KEY_UNKNOWN
    0x7005e = KEY_UNKNOWN
    0x7005f = KEY_UNKNOWN
    0x70060 = KEY_UNKNOWN
    0x70061 = KEY_UNKNOWN
    0x70062 = KEY_UNKNOWN
    0x70063 = KEY_UNKNOWN
    0x70064 = KEY_UNKNOWN
    0x70065 = KEY_UNKNOWN
    0x70066 = KEY_UNKNOWN
    0x70067 = KEY_UNKNOWN
    0x70068 = KEY_UNKNOWN
    0x70069 = KEY_UNKNOWN
    0x7006a = KEY_UNKNOWN
    0x7006b = KEY_UNKNOWN
    0x7006c = KEY_UNKNOWN
    0x7006d = KEY_UNKNOWN
    0x7006e = KEY_UNKNOWN
    0x7006f = KEY_UNKNOWN
    0x70070 = KEY_UNKNOWN
    0x70071 = KEY_UNKNOWN
    0x70073 = KEY_UNKNOWN
    0x70074 = KEY_UNKNOWN
    0x70075 = KEY_UNKNOWN
    0x70076 = KEY_UNKNOWN
    0x70077 = KEY_UNKNOWN
    0x70078 = KEY_UNKNOWN
    0x70079 = KEY_UNKNOWN
    0x7007a = KEY_UNKNOWN
    0x7007b = KEY_UNKNOWN
    0x7007c = KEY_UNKNOWN
    0x7007d = KEY_UNKNOWN
    0x7007e = KEY_UNKNOWN
    0x7007f = KEY_UNKNOWN
    0x70080 = KEY_UNKNOWN
    0x70081 = KEY_UNKNOWN
    0x70082 = KEY_UNKNOWN
    0x70083 = KEY_UNKNOWN
    0x70084 = KEY_UNKNOWN
    0x70085 = KEY_UNKNOWN
    0x70086 = KEY_UNKNOWN
    0x70087 = KEY_UNKNOWN
    0x70088 = KEY_UNKNOWN
    0x70089 = KEY_UNKNOWN
    0x7008a = KEY_UNKNOWN
    0x7008b = KEY_UNKNOWN
    0x7008c = KEY_UNKNOWN
    0x7008d = KEY_UNKNOWN
    0x7008e = KEY_UNKNOWN
    0x7008f = KEY_UNKNOWN
    0x70090 = KEY_UNKNOWN
    0x70091 = KEY_UNKNOWN
    0x70092 = KEY_UNKNOWN
    0x70093 = KEY_UNKNOWN
    0x70094 = KEY_UNKNOWN
    0x70095 = KEY_UNKNOWN
    0x70096 = KEY_UNKNOWN
    0x70097 = KEY_UNKNOWN
    0x70098 = KEY_UNKNOWN
    0x70099 = KEY_UNKNOWN
    0x7009a = KEY_UNKNOWN
    0x7009b = KEY_UNKNOWN
    0x7009c = KEY_UNKNOWN
    0x7009d = KEY_UNKNOWN
    0x7009e = KEY_UNKNOWN
    0x7009f = KEY_UNKNOWN
    0x700a0 = KEY_UNKNOWN
    0x700a1 = KEY_UNKNOWN
    0x700a2 = KEY_UNKNOWN
    0x700a3 = KEY_UNKNOWN
    0x700a4 = KEY_UNKNOWN
    0x700a5 = KEY_UNKNOWN
    0x700a6 = KEY_UNKNOWN
    0x700a7 = KEY_UNKNOWN
    0x700a8 = KEY_UNKNOWN
    0x700a9 = KEY_UNKNOWN
    0x700aa = KEY_UNKNOWN
    0x700ab = KEY_UNKNOWN
    0x700ac = KEY_UNKNOWN
    0x700ad = KEY_UNKNOWN
    0x700ae = KEY_UNKNOWN
    0x700af = KEY_UNKNOWN
    0x700b0 = KEY_UNKNOWN
    0x700b1 = KEY_UNKNOWN
    0x700b2 = KEY_UNKNOWN
    0x700b3 = KEY_UNKNOWN
    0x700b4 = KEY_UNKNOWN
    0x700b5 = KEY_UNKNOWN
    0x700b6 = KEY_UNKNOWN
    0x700b7 = KEY_UNKNOWN
    0x700b8 = KEY_UNKNOWN
    0x700b9 = KEY_UNKNOWN
    0x700ba = KEY_UNKNOWN
    0x700bb = KEY_UNKNOWN
    0x700bc = KEY_UNKNOWN
    0x700bd = KEY_UNKNOWN
    0x700be = KEY_UNKNOWN
    0x700bf = KEY_UNKNOWN
    0x700c0 = KEY_UNKNOWN
    0x700c1 = KEY_UNKNOWN
    0x700c2 = KEY_UNKNOWN
    0x700c3 = KEY_UNKNOWN
    0x700c4 = KEY_UNKNOWN
    0x700c5 = KEY_UNKNOWN
    0x700c6 = KEY_UNKNOWN
    0x700c7 = KEY_UNKNOWN
    0x700c8 = KEY_UNKNOWN
    0x700c9 = KEY_UNKNOWN
    0x700ca = KEY_UNKNOWN
    0x700cb = KEY_UNKNOWN
    0x700cc = KEY_UNKNOWN
    0x700cd = KEY_UNKNOWN
    0x700ce = KEY_UNKNOWN
    0x700cf = KEY_UNKNOWN
    0x700d0 = KEY_UNKNOWN
    0x700d1 = KEY_UNKNOWN
    0x700d2 = KEY_UNKNOWN
    0x700d3 = KEY_UNKNOWN
    0x700d4 = KEY_UNKNOWN
    0x700d5 = KEY_UNKNOWN
    0x700d6 = KEY_UNKNOWN
    0x700d7 = KEY_UNKNOWN
    0x700d8 = KEY_UNKNOWN
    0x700d9 = KEY_UNKNOWN
    0x700da = KEY_UNKNOWN
    0x700db = KEY_UNKNOWN
    0x700dc = KEY_UNKNOWN
    0x700dd = KEY_UNKNOWN
    0x700de = KEY_UNKNOWN
    0x700df = KEY_UNKNOWN
    0x700e1 = KEY_UNKNOWN
    0x700e4 = KEY_UNKNOWN
    0x700e5 = KEY_UNKNOWN
    0x700e6 = KEY_UNKNOWN
    0x700e7 = KEY_UNKNOWN
    0x700e8 = KEY_UNKNOWN
    0x700e9 = KEY_UNKNOWN
    0x700ea = KEY_UNKNOWN
    0x700eb = KEY_UNKNOWN
    0x700ec = KEY_UNKNOWN
    0x700ed = KEY_UNKNOWN
    0x700ee = KEY_UNKNOWN
    0x700ef = KEY_UNKNOWN
    0x700f0 = KEY_UNKNOWN
    0x700f1 = KEY_UNKNOWN
    0x700f2 = KEY_UNKNOWN
    0x700f3 = KEY_UNKNOWN
    0x700f4 = KEY_UNKNOWN
    0x700f5 = KEY_UNKNOWN
    0x700f6 = KEY_UNKNOWN
    0x700f7 = KEY_UNKNOWN
    0x700f8 = KEY_UNKNOWN
    0x700f9 = KEY_UNKNOWN
    0x700fa = KEY_UNKNOWN
    0x700fb = KEY_UNKNOWN
    0x700fc = KEY_UNKNOWN
    0x700fd = KEY_UNKNOWN
    0x700fe = KEY_UNKNOWN
    0x700ff = KEY_UNKNOWN
    0x90001 = 272  # BTN_LEFT
    0x90002 = 273  # BTN_RIGHT
    0x90003 = 274  # BTN_MIDDLE
    0x90004 = 275  # BTN_SIDE
    0x90005 = 276  # BTN_EXTRA
    

Ich war nicht in der Lage, die richtigen Codes für die Zwei-Finger-Wischbewegungen zu erhalten, aber es ist mir auch egal, da diese Gesten nicht ausgeführt werden können.

PS Falls Sie versuchen möchten, andere Gesten anzupassen, habe ich folgende Schritte ausgeführt:

  1. Ich habe die Karteneinträge sortiert, die Duplikate bereinigt und festgestellt, dass sie 252 Symbole (plus 5 Schaltflächen) enthalten.

  2. Ich setze die ersten zehn Symbole auf KEY_A, die folgenden zehn auf KEY_B und so weiter bis zu den letzten 2, die zu KEY_Z wurden. dann habe ich diese Karte geladen.

  3. Ich führe die Gesten in einem Textfenster aus (oder Sie können "xbindkeys -mk" verwenden) und notiere die erzeugten Buchstaben.

  4. In der Karte ändere ich alle NICHT erzeugten Buchstaben in KEY_UNKNOWN, die drei verbleibenden in KEY_A, KEY_B, KEY_C .. KEY_Z, KEY_1, .., KEY_4, dann lade ich diese neue MAP.

  5. Ich führe die Geste erneut aus und beachte die erzeugten Buchstaben / Zahlen: Dies sind die Codes, die für alles definiert werden können, was Sie für eine bestimmte Tastenkombination benötigen.

Lorenzo
quelle
2

Sie könnten versuchen, input-kbdaus dem input-utilsPaket zu verwenden:

$ apropos input-kbd
input-kbd (8)        - print or modify keyboard maps for input devices

Mithilfe des Eingabegeräteindex (z. B. 4 für /dev/input/event4, der gefunden werden kann, lsinputder sich notwendigerweise von der in verwendeten ID unterscheidet xinput) können Sie die Tastaturbelegung neu konfigurieren, indem Sie ihr eine Datei mit dem -fSchalter zuführen , z

$ sudo input-kbd -f some-file 4

wo die some-filedie Form hat scancode = keycode|keyname, wo die folgenden äquivalent sind:

0x0001 = KEY_F9
0x0001 = 67

Sie finden die aktuelle Karte mit sudo input-kbd 4. Da Sie eine Datei aus öffnen /devmüssen, müssen Sie den Superuser verwenden, um das Ereignis zu lesen.

Beachten Sie auch, dass es trotz seines anscheinend irreführenden Namens auch mit Mäusen funktioniert.

Elmicha
quelle
Sie sind vielleicht auf dem richtigen Weg , aber wenn Sie sich die Keymap ansehen , ist leider nicht klar, welche Scancode geändert werden soll, insbesondere angesichts der Tatsache , dass einige dieser Keynamen völlig undefiniert sind. Vielleicht wäre es hilfreich, wenn Sie den Mechanismus finden könnten, um die Definition von Schlüsselnamen herauszufinden. +1 für näher.
wxl
Was passiert, wenn Sie alle KEY_ * auf 0 oder einen der KEY_UNKNOWN-Werte (z. B. 240) abbilden? Oder deaktiviert das einige der Gesten, die Sie behalten möchten? Um die neue Karte zu generieren, können Sie die aktuelle Karte durchleiten awk '/KEY_/ { $3 = 240 } { print }'.
Elmicha
Ich denke, die Frage ist, wo kann ich die Definition von KEY_UNKNOWNoder für diese Angelegenheit herausfinden BTN_EXTRA?
wxl
Mit können Sie sudo input-events 4sehen, welche Maustaste welche ist. KEY_UNKNOWN druckt (hoffentlich) keine Aktion aus oder löst sie aus.
Elmicha
1
Die Definition der Schlüsselnamen befindet sich in /usr/include/linux/input.h, in dem angegeben ist, dass die Namen der USB-HUT 1.12 nachempfunden sind, in der angegeben ist, dass die Schlüsselcodes 232-65535 "Reserviert" sind. input-kbd verwendet das name.shdort, um den Schlüsselnamen umzukehren -> Codezuordnung, damit input_kbd Namen für die Schlüsselcodes drucken kann.
Elmicha
2

Um die Gesten zu deaktivieren, können Sie die Tastenbelegung mit dem evdevTreiber so ändern , dass die letzten 6 "Tasten" wie folgt deaktiviert sind:

  1. Anhängen an /usr/share/X11/xorg.conf.d/10-evdev.confoder /etc/X11/xorg.conf.d/10-evdev.confabhängig von dem, was Sie haben:

    # custom for Logitech Ultrathin Touch mouse
    
    Section "InputDevice"
        Identifier "Logitech bluetooth Touch Mouse"
        Driver "evdev"
        Option "Name"   "Ultrathin Touch Mouse"
        Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
    EndSection
    
    Section "InputClass"
        Identifier  "Ultrathin Touch Mouse"
        Option "ButtonMapping" "1 2 3 4 5 6 7 0 0 0 0 0 0"
    EndSection
  2. Neustart des XServers mitsudo service lightdm restart

  3. bestätigen mit xinput --get-button-map "Ultrathin Touch Mouse"

Sie können den Wert von ändern, InputDevice Identifierwenn Sie möchten, aber es ist wichtig, den Wert für InputDevice Nameund InputClass Identifierals "Ultradünne Touch-Maus" beizubehalten, da dies auf diese Weise xinputerkannt wird.

Getestet mit der Mac-Version T631.

Wenn Sie ein wenig mehr Informationen darüber wünschen evdev, ist dieser Blog-Beitrag von Joe Shaw besonders aufschlussreich darüber, wie er in den gesamten Eingabestapel passt.

steev
quelle
Dies ist möglicherweise eine gute Lösung. Ich hasse es jedoch, XKonfigurationsdateien zu verwenden, insbesondere global definierte. Bestimmte Upgrade-Pfade überschreiben diese, was nicht ideal ist. Darüber hinaus ist dies nicht ideal, da nicht klar ist, wie die Schlüssel neu zugeordnet werden sollen. Ich sage nicht, dass es keine gültige Lösung ist, aber wenn es um Kopfgeld geht, kann sich die andere Antwort durchsetzen. ☺ Schließlich ist es ein Mist, dass dies nicht ohne einen Neustart implementiert werden kann. Vielleicht wäre evdeves schön, wenn Sie einen Weg finden könnten, direkt damit umzugehen , aber ich habe so etwas nicht gefunden.
wxl
Respektvoll, ich denke, Sie verlangen zu viel. Aber trotzdem habe ich nicht gepostet, um das Kopfgeld zu bekommen, nur um möglicherweise denen zu helfen, die ein ähnliches Problem haben. Wenn sie weniger Einschränkungen für eine Lösung haben als Sie, sollte dies für sie nützlich sein. Das heißt, ich bin sicher, wenn Sie X neu starten wollten, könnten Sie das gleiche Ergebnis erzielen, ohne neu zu starten. Es wäre nur ein bisschen chaotisch. Aber ich höre dich über das Upgrade. Ich muss sehr vorsichtig sein, dass ich während eines Updates keine Probleme habe.
steev
1
respektvoll stimme ich zu, aber meine Hoffnung ist immer, mehr als nur mir selbst zu helfen. Davon abgesehen schätze ich Ihre Antwort, weshalb ich es + 1 getan habe!
wxl
Nun
1
omg, ich habe mich geirrt. es schien sich zu verhalten, aber ich konnte es nicht wirklich testen evemu-record. funktioniert nicht :(
wxl
1

Ich habe es geschafft, die Gesten "Wischen am linken Rand" und "Wischen am rechten Rand" mit xbindkeys zu konfigurieren. Dies kann wahrscheinlich auch für die beiden Fingerabdrücke gelten, aber ich habe mich nicht mit diesen befasst, da ich finde, dass sie sowieso schwierig durchzuführen sind.

Dies ist meine .xbindkeysrc

    #Right edge swipe (Send Alt+F2)
    "xte 'keydown Alt_L' 'key F2' 'keyup Alt_L'"
     Alt+Mod4+XF86TouchpadOff
    #Left edge swipe (Send CTRL+F8)
    "xte 'keydown Control_L' 'key F8' 'keyup Control_L'"
     Control+Mod4 + Tab

Ich habe sie nützlichen KDE-Verknüpfungen zugeordnet. Natürlich können Sie auch alles andere tun. Sie müssen xbindkeys beim Anmelden ausführen. Ich habe eine .desktop-Datei erstellt, wie in allen xbindkeys-Tutorials erläutert:

    #./.config/autostart/xbindkeys.desktop
    [Desktop Entry]
    Comment[en_GB]=
    Comment=
    Exec=xbindkeys
    GenericName[en_GB]=
    GenericName=
    Icon=system-run
    MimeType=
    Name[en_GB]=
    Name=
    Path=
    StartupNotify=true
    Terminal=false
    TerminalOptions=
    Type=Application
    X-DBUS-ServiceName=
    X-DBUS-StartupType=
    X-KDE-SubstituteUID=false
    X-KDE-Username=

HTH

Lorenzo
quelle
1

Ich war frustriert über diese Sache, weil ich sie trotz aller angebotenen Lösungen, einschließlich derer, die von jemandem bereitgestellt wurden, der tatsächlich XEingabecode schreibt, nie zum Laufen bringen konnte . Das heißt, ich ging davon weg und benutzte nur eine normale, schnurgebundene Maus.

Gestern habe ich das Ultradünne gefunden und beschlossen, es erneut auszuprobieren und es funktioniert einfach. Dies gilt zumindest in dem Sinne, dass der Grund für diese Frage darin besteht, dass diese Gesten auf seltsame Weise interpretiert wurden und meinen Workflow durcheinander brachten. Jetzt scheinen sie keine wirkliche Wirkung zu haben, außer dass ich mit dem Wischen am linken Rand zwischen den zuletzt verwendeten Registerkarten in Firefox wechseln kann.

Seltsam ist, dass die Gesten in keiner Weise tatsächlich deaktiviert sind. Alle 13 "Buttons" werden von zurückgegeben xinput --get-button-map "Ultrathin Touch Mouse". Auch grep Ultrathin /usr/share/X11/xorg.conf.dgibt nichts zurück. Es wurden keine relevanten NoSymbols (und überhaupt keine VoidSymbols) mit xkbcompund keine relevanten KEY_UNKNOWNs mit gefunden input-kbd.

Auf der anderen Seite sieht alles gleich aus, evemu-recordbis auf die Tatsache, dass die Doppelklick-Gesten nur als einfache BTN_LEFTEreignisse verstanden werden.

Das heißt, etwas hat sich in dieser Hinsicht geändert, aber ich bin mir nicht sicher, was.

Ich habe auch nicht getestet, wie man Dinge neu zuordnet, aber das war nicht wirklich im Rahmen der ursprünglichen Frage.

wxl
quelle
0

Ich habe alle Antworten gelesen und ein Skript um input-kbd (Teil von input-utils) geschrieben, um dieses Problem automatisch zu beheben.

Sie sollten fixMouse von diesem Repository einmal bei jeder Anmeldung ausführen . Es wird:

  1. Hören Sie dbus für diese Maus
  2. Konfigurieren Sie alle Tastenanschläge auf KEY_UNKNOWN

Die Standardfunktionen der Maus (linke Taste; Bildlauf usw.) funktionieren weiterhin einwandfrei. Nur die seltsamen Tastaturtasten werden gestoppt.

Es überlebt Suspend, Bluetooth Sleep, Mouse On-Off usw.

Für mich geht das.

Berend
quelle