viernes, 31 de julio de 2009

Lenny y Touchpads Synaptics


Un Touchpad en un laptop para algunos puede ser una bendición y para otros una verdadera pesadilla. En mi caso, luego de un poco de práctica y costumbre, me ha ayudado a ser bastante rápido en el uso del puntero y como sustitución completa del Mouse.

En este sentido, me dediqué a revisar un poco cómo trabaja el Touchpad de mi laptop y qué cosas puedo cambiar en su comportamiento. Es muy interesante ya que el área del Touchpad se puede definir a partir de un sistema de coordenadas, de hecho, está segmentado en 9 áreas diferentes.

En esta publicación, voy a explicar brevemente mi experiencia habilitando y cambiando algunos parámetros de mi Touchpad.

Mi caja de herramientas está formada por:
  • Hardware
    Laptop HP-Compaq NX6115
  • Sofware:
    Xorg 7.3
    synclient
  1. Determinar cómo Lenny está detectando el Touchpad:
    # dmesg |grep Touchpad
    ... la respuesta de este comando fué:
    [ 11.040052] Synaptics Touchpad, model: 1, fw: 6.2, id: 0x1a0b1, caps: 0xa04713/0x200000
  2. Verificar si el servidor "Xorg" tiene debidamente configurado el Touchpad:
    # vim /etc/X11/xorg.conf
    ... en mi caso no estaba configurado, al menos de manera explícita. Lo que conseguí en el archivo relacionado con el Touchpad fue la configuración básica del mouse ...
    ...
    Section "InputDevice"
    Identifier "Configured Mouse"
    Driver "mouse"
    EndSection
  3. Comenté las líneas anteriores en el xorg.conf y configuré una nueva sección para configurar el Touchpad:
    ...
    Section "Server Layout"
    ...
    InputDevice "SynapticsTouchpad" "SendCoreEvents"
    EndSection
    ...
    Section "Module"
    Load "synaptics"
    EndSection
    ...
    Section "InputDevice"
    Identifier "SynapticsTouchpad"
    Driver "synaptics"
    Option "AlwaysCore" "true" # send events to CorePointer
    #Option "Device" "/dev/input/mice"
    Option "Device" "/dev/psaux"
    Option "Protocol" "auto-dev"
    Option "SHMConfig" "true" # configurable at runtime? security risk
    Option "LeftEdge" "1400" # x coord left
    Option "RightEdge" "5000" # x coord right
    Option "TopEdge" "1300" # y coord top
    Option "BottomEdge" "4300" # y coord bottom
    Option "FingerLow" "25" # pressure below this level triggers release
    Option "FingerHigh" "30" # pressure above this level triggers touch
    Option "MaxTapTime" "180" # max time in ms for detecting tap
    Option "VertEdgeScroll" "true" # enable vertical scroll zone
    Option "HorizEdgeScroll" "true" # enable horizontal scroll zone
    Option "CornerCoasting" "true" # enable continuous scroll with finger in corner
    Option "CoastingSpeed" "0.30" # corner coasting speed
    Option "VertScrollDelta" "45" # edge-to-edge scroll distance of the vertical scroll
    Option "HorizScrollDelta" "45" # edge-to-edge scroll distance of the horizontal scroll
    Option "MinSpeed" "0.10" # speed factor for low pointer movement
    Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement
    Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements
    Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers
    Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers
    Option "TapButton1" "1"
    Option "TapButton2" "2"
    Option "TapButton3" "3"
    Option "EdgeMotionUseAlways" "1"
    Option "EmulateMidButtonTime" "75"
    EndSection
    ...
  4. Reiniciar.
Con esta configuración y revisando el archivo de logs del Xorg (en mi caso aparecieron al final del archivo):

less /var/log/Xorg.0.log

Verifiqué que efectivamente los cambios habían sido aplicados.

Para realizar ajustes específicos sobre el driver "synaptics" y cambiar el comportamiento del Touchpad utilicé el comando "synclient".

Para visualizar los parámetros del controlador, ejecuto:
  • # synclient -l
La respuesta del comando es una lista de todos los parámetros y sus valores actuales:

Parameter settings:
LeftEdge = 1400
RightEdge = 5000
TopEdge = 1300
BottomEdge = 4300
FingerLow = 38
FingerHigh = 43
FingerPress = 256
MaxTapTime = 180
MaxTapMove = 220
MaxDoubleTapTime = 180
SingleTapTimeout = 180
ClickTime = 100
FastTaps = 0
EmulateMidButtonTime = 75
EmulateTwoFingerMinZ = 257
VertScrollDelta = 228
HorizScrollDelta = 227
VertEdgeScroll = 1
HorizEdgeScroll = 1
CornerCoasting = 1
VertTwoFingerScroll = 1
HorizTwoFingerScroll = 1
MinSpeed = 0.102
MaxSpeed = 0.089
AccelFactor = 0
TrackstickSpeed = 40
EdgeMotionMinZ = 30
EdgeMotionMaxZ = 160
EdgeMotionMinSpeed = 1
EdgeMotionMaxSpeed = 304
EdgeMotionUseAlways = 1
UpDownScrolling = 1
LeftRightScrolling = 1
UpDownScrollRepeat = 1
LeftRightScrollRepeat = 1
ScrollButtonRepeat = 100
TouchpadOff = 0
GuestMouseOff = 0
LockedDrags = 0
LockedDragTimeout = 5000
RTCornerButton = 2
RBCornerButton = 3
LTCornerButton = 0
LBCornerButton = 0
TapButton1 = 1
TapButton2 = 2
TapButton3 = 3
CircularScrolling = 0
CircScrollDelta = 0.1
CircScrollTrigger = 0
CircularPad = 0
PalmDetect = 1
PalmMinWidth = 10
PalmMinZ = 200
CoastingSpeed = 0.3
PressureMotionMinZ = 30
PressureMotionMaxZ = 160
PressureMotionMinFactor = 1
PressureMotionMaxFactor = 1
GrabEventDevice = 1

Dado que existe un sistema de coordenadas que definen las áreas de sensibilidad del Touchpad, utilicé el comando para ver qué valores se reportaban cada vez que lo presionaba:
  • # synclient -m 100
Presioné cada una de las esquinas del Touchpad y aparecían los valores de las coordenadas. De toda la línea que aparecía, solamente me concentré en la segunda y tercera columna que son las coordenadas "x" y "y".

Por ejemplo, la esquina superior derecha del Touchpad reportó:

3.102 1309 1163 14 1 4 0 0 0 0 0 00000000 0 0 0 0 0

Entonces los valores asociados son:

x = 1309
y = 1163

Sucesivamente, presioné cada área del Touchpad y ajusté los valores aproximados de los parámetros ejecutando:
  • synclient LeftEdge=1400
  • synclient RightEdge=5000
  • synclient TopEdge=1300
  • synclient BottomEdge=4700
Estos valores se reportan al driver "synaptics" en tiempo real pero son cambios temporales. Entonces, luego de comprobar que el comportamiento del Touchpad es como quería, los convertí en cambios permanentes editando los parámetros directamente en el archivo "xorg.conf" y reiniciando.

De esta manera, podemos tener el control completo de nuestro Touchpad ;-)

Saludos!

José Gregorio.

FUENTES:
  1. http://wiki.archlinux.org/index.php/Touchpad_Synaptics
  2. http://madpenguin.org/cms/index.php/?m=show&opt=printable&id=887
  3. http://ubuntuforums.org/showthread.php?p=975421
  4. http://www.synaptics.com/sites/default/files/ACF126.pdf?q=decaf/utilities/ACF126.pdf

No hay comentarios: