• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Gelöst] udev mx1000 und die dritte maustaste

Smurfle

Member
Guten Abend,

ich habe hier ein Problem mit meiner mx1000 Maus von Logitech und udev. Die Maus wird von udev richtig eingerichtet und ich kann alle tasten mit xbindkeys belegen. Nur ist udev der Meinung das ich die dritte Maustaste nochmal zusätzlich auf maus1 + maus2 brauche. Dem ist aber nicht so. Ich will das weg haben.
Mir ist klar das ich einfach eine xorg.conf anlegen könnte wo ich es ausschalte, nur bin ich nicht so der große Bastler. Meine Frage hierzu wäre wo bekomm ich eine neue xorg.conf her die ich dann auf meine Bedürfnisse abändern kann?
Desweiteren ist mir auch klar das es sich mit einer udev_regel regeln lässt. Aber wiederum bin ich da etwas hilflos da ich keine Ahnung davon habe. Das WWW ist auch nicht gerade ergiebig zum Thema Howto/Tutorial für udev_schreibtischnager_regeln.

Ich habe hier Opensuse 11.2 x86_64 mit KDE 4.3 am laufen.

Mfg smurf
 
A

Anonymous

Gast
Hi,

eine neue xorg.conf bekommst du mit
Code:
sax2 -a
als root im Runlevel 3. Bin mir nicht sicher, ob du dann noch "AutoAddDevices""off" setzen musst. Muss du ausprobieren. Das steht aber auch nochmal in der neuen xorg.conf drin.
 
OP
Smurfle

Smurfle

Member
Guten Abend,

das Problem mit der Maustastenemulation ist gelöst :)
Mein Fehler was das ich angenommen habe das es sich hier um udev handelt. Tatsächlich kümmert sich ja jetzt Hal um die Maus und Konsorten. Nach der Erkenntnis war fast schon zu leicht das problem zu beheben.

Das editieren von
Code:
/usr/share/hal/fdi/policy/20thirdparty/11-mouse.fdi
brachte den erhoften Durchbruch.
Code:
<merge key="input.x11_options.Emulate3Buttons" type="string">false</merge>
bei Logitech tweaks einfügen. Das es so aussieht.

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.mouse">
      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
             string="Linux">
        
        <match key="@input.originating_device:usb.vendor_id" int="0x46d">
          <match key="@input.originating_device:usb.product_id" int="0xc50e">
            <merge key="input.x11_options.Buttons" type="string">8</merge>
            <merge key="input.x11_options.EmulateWheel" type="string">on</merge>
            <merge key="input.x11_options.EmulateWheelButton" type="string">8</merge>
            <merge key="input.x11_options.YAxisMapping" type="string">4 5</merge>
            <merge key="input.x11_options.XAxisMapping" type="string">6 7</merge>
            <merge key="input.x11_options.Emulate3Buttons" type="string">false</merge>
          </match>
          <match key="@input.originating_device:usb.product_id" int="0xc521">
            <merge key="input.x11_options.HWHEELRelativeAxisButtons" type="string">7 6</merge>
          </match>
        </match>
        
        <match key="@input.originating_device:usb.vendor_id" int="0x045e">
          <match key="@input.originating_device:usb.product_id" int="0x0095">
            <merge key="input.x11_options.HWHEELRelativeAxisButtons" type="string">7 6</merge>
          </match>
        </match>
        
        <match key="@input.originating_device:usb.vendor_id" int="0x0210">
          <match key="@input.originating_device:usb.product_id" int="0x0003">
            <merge key="input.x11_options.EmulateWheel" type="string">on</merge>
            <merge key="input.x11_options.EmulateWheelButton" type="string">2</merge>
          </match>
        </match>
        <match key="@input.originating_device:usb.vendor_id" int="0x0002">
          <match key="@input.originating_device:usb.product_id" int="0x000a">
            <merge key="input.x11_options.EmulateWheel" type="string">on</merge>
            <merge key="input.x11_options.EmulateWheelButton" type="string">2</merge>
          </match>
        </match>
        <match key="@input.originating_device:usb.vendor_id" int="0x04b3">
          <match key="@input.originating_device:usb.product_id" int="0x300f">
            <merge key="input.x11_options.EmulateWheel" type="string">on</merge>
            <merge key="input.x11_options.EmulateWheelButton" type="string">2</merge>
          </match>
        </match>
        <match key="info.product" string="TPPS/2 IBM TrackPoint">
          <merge key="input.x11_options.EmulateWheel" type="string">true</merge>
          <merge key="input.x11_options.EmulateWheelButton" type="string">2</merge>
          <merge key="input.x11_options.YAxisMapping" type="string">4 5</merge>
          <merge key="input.x11_options.XAxisMapping" type="string">6 7</merge>
          <merge key="input.x11_options.Emulate3Buttons" type="string">false</merge>
          <merge key="input.x11_options.EmulateWheelTimeout" type="string">200</merge>
        </match>
        
        <match key="@input.originating_device:usb.vendor_id" int="0x03f0">
          <match key="@input.originating_device:usb.product_id" int="0x1126">
            <merge key="input.x11_options.MinX" type="string">0</merge>
            <merge key="input.x11_options.MaxX" type="string">3000</merge>
            <merge key="input.x11_options.MinY" type="string">0</merge>
            <merge key="input.x11_options.MaxX" type="string">3000</merge>
          </match>
        </match>
      </match>
    </match>
  </device>
</deviceinfo>

und es gibt nur noch eine richtige dritte Maustaste.

Ihr könntet euren Wikieintrag zur mx1000 mit Opensuse 11.2 erweitern. Zum Einrichten ist keine Handarbeit mehr nötig. Hal macht alle Tasten nutzbar, nur noch die Belegung der Tasten ist mit Xbindkeys zu tätigen.

Mfg Smurf
 

Escho

Advanced Hacker
Smurfle schrieb:
Ihr könntet euren Wikieintrag zur mx1000 mit Opensuse 11.2 erweitern. Zum Einrichten ist keine Handarbeit mehr nötig. Hal macht alle Tasten nutzbar, nur noch die Belegung der Tasten ist mit Xbindkeys zu tätigen.

Mfg Smurf
Eine Erweiterung des Wiki-Beitrages auf openSuse 11.2 ist in Planung. Dauert aber noch ein paar Tage, bis ich dazu die Zeit finde.

Edgar
 
OP
Smurfle

Smurfle

Member
Hallo,

da ich bei der neuen OpenSuse 11.3 wieder das Problem hatte mit der Emulation der dritten Maustaste und die Lösung von OpenSuse 11.2 mit Hal und der /usr/share/hal/fdi/policy/20thirdparty/11-mouse.fdi nicht mehr geht, habe ich mich wieder einmal tiefer mit dem Thema beschäftigen müssen. Damit sich andere die Sucherei mit Google sparen können schreibe ich hier in den Thread ein kleines How-to in der Hoffnung das es den einem oder anderen weiter hilft.

Ausgangsbasis ist eine vom System vollständig erkannte MX1000.
Dazu musste ich absolut nicht herum basteln. Ein Hoch auf udev ;D
Einzig mit xbindkeys muste ich etwas basteln um die Maustasten mit bestimmten Sachen wie ALT+Left oder STRG+A auf die Maustasten zu legen. Was mich anfangs ja doch schwer erstaunt hat war das alle Tasten von "xev" richtig ausgegeben wurden. Was den ersten positiven Eindruck etwas schmälerte war das mit Maus1 und Maus3 wieder eine dritte Maustaste emuliert wird (Maus2). Da bei der Maus schon eine Maus2 erkannt wurde ist das unnötig für mich und da ich gerne Quake3 und Quakelive spiele stört das auch beim spielen (Rocketjumps wem das was sagt).
Anfangs bastelte ich mit einer xorg.conf herum da ich keine passende udev.rule auf meinem system gefunden habe um das Problem su beseitigen. Allerdings brachte ich da nicht alle Tasten zum laufen. Also hab ich mich wieder mit udev beschäftigt.
Ich habe zwar in
Code:
/etc/X11/xorg.conf.d/11-mouse.conf
was gefunden aber sämtliche Änderungen darin wurden nicht übernommen. Wobei ich jetzt nicht sagen kann an was das liegen könnte, evtl. gibts hier ja jemanden der da Licht ins Dunkel bringen kann.
Dann sties ich ich bei meiner Googlesuche auf "xinput" was mich dann nach gezielter Suche zur Lösung brachte.
Und hier eine kurze Zusammenfassung:

1.sich mit "xinput" die Eingabegeräte mit ihrer id anzeigen lassen.

Code:
xinput list
smurf@smurfville:~> xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB RECEIVER id=8 [slave pointer (2)]
⎜ ↳ HID 046a:0023 id=10 [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)]
↳ HID 046a:0023 id=9 [slave keyboard (3)]
smurf@smurfville:~>

2.id der Maus raussuchen (bei mir: ⎜ ↳ Logitech USB RECEIVER id=8 [slave pointer (2)]])

3.mit "xinput list-props "id von der Maus" die id der Middle-Button-Emulation heraussuchen.

smurf@smurfville:~> xinput list-props 8
Device 'Logitech USB RECEIVER':
Device Enabled (121): 1
Device Accel Profile (246): 0
Device Accel Constant Deceleration (247): 1.000000
Device Accel Adaptive Deceleration (249): 1.000000
Device Accel Velocity Scaling (250): 10.000000
Evdev Axis Inversion (251): 0, 0
Evdev Axes Swap (253): 0
Axis Labels (254): "Rel X" (129), "Rel Y" (130)
Button Labels (255): "Button Left" (122), "Button Middle" (123), "Button Right" (124), "Button Wheel Up" (125), "Button Wheel Down" (126), "Button Horiz Wheel Left" (127), "Button Horiz Wheel Right" (128), "Button Side" (241), "Button Extra" (242), "Button Forward" (243), "Button Back" (244), "Button Task" (245), "Button Unknown" (240), "Button Unknown" (240), "Button Unknown" (240), "Button Unknown" (240), "Button Unknown" (240), "Button Unknown" (240), "Button Unknown" (240), "Button Unknown" (240), "Button Unknown" (240), "Button Unknown" (240), "Button Unknown" (240), "Button Unknown" (240)
Evdev Middle Button Emulation (256): 0
Evdev Middle Button Timeout (257): 50
Evdev Wheel Emulation (258): 0
Evdev Wheel Emulation Axes (259): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (260): 10
Evdev Wheel Emulation Timeout (261): 200
Evdev Wheel Emulation Button (262): 4
Evdev Drag Lock Buttons (263): 0
smurf@smurfville:~>

Bei mir wäre das die Zeile "Evdev Middle Button Emulation (256)"

4.Die Emulation ausschalten mit "xinput set-prop "id der Maus" "id der Emulation" 0"

smurf@smurfville:~> xinput set-prop 8 256 0
smurf@smurfville:~>

und schon ist die lästige Maustastenemulation weg. Da ich noch ein Script in meinem Autostart_Ordner für meine Maus hatte, packte ich den Befehl gleich mit darein damit er bei jedem Start gleich ausgeführt wird.

Code:
#!/bin/sh
#+++++++++++++++++++++++MX1000++++++++++++++++++++++++++++++++++++++++++++

#+++++++++Ausschalten 3 Maustasten Emulation++++++++++++++++++++++++++++++
xinput set-prop 8 256 0

#++++++++++++++++Tastenzuweisungen mit xbindkeys++++++++++++++++++++++++++
/usr/bin/xbindkeys

es wäre auch möglich den Befehl in die ~/.xinitrc zu schreiben oder in die /etc/xinit/xinitrc wenn es Systemweit sein soll.

Mfg Smurf
 

Escho

Advanced Hacker
Ich denke, dieses interessante Howto wäre in der Linupedia besser aufgehoben, als hier im Forum. Mach doch einen Wiki-Artikel draus.

Edgar
 
OP
Smurfle

Smurfle

Member
Escho schrieb:
Ich denke, dieses interessante Howto wäre in der Linupedia besser aufgehoben, als hier im Forum. Mach doch einen Wiki-Artikel draus.

Edgar

Ja das werd ich dann wohl so machen. Die Frage ist ob ich das in den MX1000 Beitrag reinpfrimeln soll oder lieber einen neuen erstellen zum Thema xinput mit dem Beispiel MX1000?

mfg smurf
 

Escho

Advanced Hacker
Ich würd daraus einen seperaten Artikel machen, da der MX1000-Beitrag sonst langsam unübersichtlich wird.

Edgar
 
Oben