Auf meinem Laptop habe ich einen Trackpoint. Den habe ich mir schon immer auch für mein Schreibtisch-Keyboard gewünscht. Deshalb hab ich mir ein Ultranav-Keyboard gekauft. Eigentlich funktioniert alles, aber die Tastatur ist doch ganz schön klapperig. Empfehlen würde ich das wirklich niemandem. Ich bin noch am überlegen, ob der Trackpoint die schlechte Tastatur rechtfertigt. Aber da ich eine Weile damit zugrebracht habe, die Tastatur richtig zum laufen zu bekommen, kommt hier dann eine Anleitung für Leidensgenossen.

###Scrolling mit dem Trackpoint und xorg mit evdev Damit das klappt, muss das entsprechend konfiguriert werden. Bei ganz neuen xorg-Versionen passiert das nicht mehr in der xorg.conf, sondern mit hal. Die entsprechende /etc/hal/tc/hal/fdi/policy/ultranav-trackpoint.fdi:

  
  <?xml version="1.0" encoding="UTF-8"?>
  <deviceinfo version="0.2">
  <device>
        <match key="info.udi" string="/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if1_logicaldev_input">
         <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">true</merge>
         <merge key="input.x11_options.EmulateWheelTimeout" type="string">200</merge>
        </match>
  </device>
  </deviceinfo> 
  

Touchpad mit Synaptics

Da das Touchpad auch als normale usb-maus erkannt wird, kann man die tollen Features eines Touchpads nicht nutzen. Deshalb muss X gezwungen werden, dafür den synaptics-Treiber zu verwenden. Das passiert wieder über hal:

<?xml version="1.0" encoding="UTF-8"?>
  <deviceinfo version="0.2">
  <device>
        <match key="info.udi" string="/org/freedesktop/Hal/devices/usb_device_6cb_9_noserial_if0_logicaldev_input">
         <merge key="input.x11_driver" type="string">synaptics</merge>
         <merge key="input.x11_options.SHMConfig" type="string">true</merge>
         <merge key="input.x11_options.MaxTapMove" type="string">2000</merge>
         <merge key="input.x11_options.VertEdgeScroll" type="string">true</merge>
         <merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge>
         <merge key="input.x11_options.HorizTwoFingerScroll" type="string">true</merge>
         <merge key="input.x11_options.CircularScrolling" type="string">true</merge>
        </match>
  </device>
  </deviceinfo>

Eventuell ist die UDI bei einem anderen Keyboard eine andere. Rausfinden kann man das, indem man sich alle Devices mit “lshal” anzeigt. Das ist eine lange liste, mit der gesamten Hardware die hal so kennt. der Eintrag, der für uns interessant ist, hat als “access_control.type” “mouse”. Wer mehrere Pointer hat, kann anhand des Namens unterscheiden. Ist man der Meinung den richtigen Eintrag gefunden zu haben, kann man das Überprüfen, indem man schaut welche linux.device_file angegeben ist und dann mit cat rausfindet ob sich da was tut.

Update 11.2.2009:

Leider geht das ganze mit dem neuesten xserver-xorg-video-evdev in debian nicht mehr. Da der Trend weg von hal geht, wird das da jetzt mit xinput konfiguriert. Was den tierischen Nachteil hat, dass man Keyboards nur noch konfigurieren kann, wenn sie auch tatsächlich da sind … Das habe ich in meiner .xinitrc für mein laptop-Keyboard:

/usr/bin/xinput set-prop 10 "Evdev Wheel Emulation" 1 
/usr/bin/xinput set-prop 10 "Evdev Wheel Emulation Button" 2 

Für mein externes Keyboard funktioniert das genau so, ich muss nur die 10 durch eine 18 ersetzen. Wenn man “xinput list” macht, sieht man die angeschlossenen Geräte.