En un artículo anterior expliqué cómo configurar el video Intel i915 con KMS en una HP Pavilion dm4. Esta vez explicaré cómo configurar el Touchpad Synaptics de esa misma laptop.
Yo configuré el touchpad a mi gusto, así que puedes probarlo y si no te gusta lo adaptas al tuyo. Sin embargo es una tarea de ensayo y error que no podrás completar a menos que conozcas todas las opciones que tienes disponibles.
En Debian:
Lo que haremos será modificar el InputClass para agregar los parámetros que deseamos configurar. En el manual de synaptics tenemos bien documentados cada una de las opciones con su descripción y posibles valores.
Mi configuración quedó así:
Actualización: Acá pueden ver la configuración actual que tengo en mi repo github
No explicaré en detalle cada una de las opciones (para eso está el manual de synaptics), solo explicaré las más relevantes o las "problemáticas". Lo primero es ignorar las pulsaciones en el área de los botones. Para eso definimos el rango de acción del dispositivo (límites):
Colocando el límite inferior (BottomEdge y AreaBottomEdge) en 3500 evitamos que el cursor se mueva al pasar sobre el área de botones. Estableciendo el límite derecho (RightEdge) a 5200 evitamos que el cursor se mueva en la columna derecha (para habilitar la zona de scrolling vertical). La imagen a continuación ilustra estos ajustes:
El dispositivo solo tiene un botón y a simple vista no encontré la forma de configurarlo para que funcione como ambos. Estuve compilando el driver synaptics con un patch para agregar el soporte de clickpads pero no he logrado generar el .ko, así que simplemente dejé su funcionamiento por defecto (left click) y configuré el click izquierdo con tap, el doble click con doble tap y el click derecho con tap de dos dedos.
Eso podemos verlo en:
El botón para activar/desactivar el clickpad tampoco pude hacerlo funcionar pero creo que es cuestión de seguir trasteando hasta lograr una solución. Además de eso, el resto de la configuración es el ajuste de valores para la sensibilidad, aceleración y velocidad del puntero, pero eso lo dejo como tarea para el lector.
Usando el siguiente comando podemos verificar la actividad del touchpad en vivo:
La salida debería ser algo como:
Donde:
Para más información:
Espero que con esta guía puedas configurar tu ClickPad y usarlo decentemente. Me queda pendiente por investigar la función de deshabilitar el touchpad mientras se escribe, los botones left-right y el botón para activar. Cuando lo logré postearé nuevamente :)
Fuentes:
Leer el manual
Lo primero que debes hacer si deseas configurar correctamente el Touchpad es leer el manual (RTFM).$ man synaptics
Yo configuré el touchpad a mi gusto, así que puedes probarlo y si no te gusta lo adaptas al tuyo. Sin embargo es una tarea de ensayo y error que no podrás completar a menos que conozcas todas las opciones que tienes disponibles.
Dependencias
Lo único que necesitamos es un Xorg bien configurado y los drivers synaptics. Para instalar los drivers ejecutamos:En Debian:
# aptitude install xserver-xorg-input-synaptics
Entender cómo funciona el Touchpad
Básicamente no es un Touchpad, es un ClickPad y eso lo hace un poco especial. ¿Diferencias? Pues la superficie táctil también funciona como botón, que actua como uno u otro (left, right) dependiendo de la zona que se presione. No tenemos un área táctil con unos botones separados, tenemos con todo incluido, eso debe quedar muy claro.Configuración
Xorg provee una serie de plantillas predeterminadas para la configuración de dispositivos. Estas plantillas se encuentran en /usr/share/X11/xorg.conf.d/ y basta con copiar a /etc/X11/xorg.conf.d/ la que necesitemos y comenzar a modificarla. Xorg se encargará de cargar estos valores luego de los valores predeterminados. Para nuestro caso usaremos la plantilla 50-synaptics.conf.# mkdir /etc/X11/xorg.conf.d/
# cp /usr/share/X11/xorg.conf.d/50-synaptics.conf /etc/X11/xorg.conf.d/
Lo que haremos será modificar el InputClass para agregar los parámetros que deseamos configurar. En el manual de synaptics tenemos bien documentados cada una de las opciones con su descripción y posibles valores.
Mi configuración quedó así:
Section "InputClass"
Identifier "touchpad catchall"
Driver "synaptics"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Option "Protocol" "auto-dev"
Option "SHMConfig" "true"
# Edges
Option "LeftEdge" "1500"
Option "RightEdge" "5200"
Option "TopEdge" "1350"
Option "BottomEdge" "3500"
# Finger press
Option "FingerLow" "28"
Option "FingerHigh" "35"
Option "FingerPress" "70"
# Taps time
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "MaxDoubleTapTime" "180"
Option "SingleTapTimeout" "180"
Option "ClickTime" "100"
Option "FastTaps" "0"
# Emulate
Option "EmulateMidButtonTime" "75"
Option "EmulateTwoFingerMinZ" "70"
Option "EmulateTwoFingerMinW" "5"
# Scrolling
Option "VertScrollDelta" "100"
Option "HorizScrollDelta" "0"
Option "VertEdgeScroll" "1"
Option "HorizEdgeScroll" "0"
Option "CornerCoasting" "0"
Option "VertTwoFingerScroll" "1"
Option "HorizTwoFingerScroll" "1"
# Pointer speed
Option "MinSpeed" "0.5"
Option "MaxSpeed" "7.0"
Option "AccelFactor" "0.35"
Option "TrackstickSpeed" "0"
Option "EdgeMotionMinZ" "29"
Option "EdgeMotionMaxZ" "59"
Option "EdgeMotionMinSpeed" "1"
Option "EdgeMotionMaxSpeed" "40"
Option "EdgeMotionUseAlways" "0"
# Scrolling flags
Option "UpDownScrolling" "0"
Option "LeftRightScrolling" "0"
Option "UpDownScrollRepeat" "0"
Option "LeftRightScrollRepeat" "0"
Option "ScrollButtonRepeat" "100"
# Touchpad mouse on/off
Option "TouchpadOff" "0"
Option "GuestMouseOff" "0"
# Dragging
Option "LockedDrags" "0"
Option "LockedDragsTimeout" "5000"
# Corners
Option "RTCornerButton" "0"
Option "RBCornerButton" "2"
Option "LTCornerButton" "0"
Option "LBCornerButton" "1"
# Tap
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
# Click
Option "ClickFinger1" "1"
Option "ClickFinger2" "0"
Option "ClickFinger3" "0"
# Circular
Option "CircularScrolling" "0"
Option "CircScrollDelta" "0.1"
Option "CircScrollTrigger" "0"
Option "CircularPad" "0"
# Palm
Option "PalmDetect" "1"
Option "PalmMinWidth" "7"
Option "PalmMinZ" "40"
Option "CoastingSpeed" "0"
# Grab
Option "GrabEventDevice" "1"
Option "TapAndDragGesture" "1"
# Area
Option "AreaLeftEdge" "0"
Option "AreaRightEdge" "0"
Option "AreaTopEdge" "0"
Option "AreaBottomEdge" "3500"
EndSection
Section "InputClass"
Identifier "Ignore mouse devs"
MatchDevicePath "/dev/input/mouse*"
Driver "synaptics"
Option "Ignore" "on"
EndSection
Actualización: Acá pueden ver la configuración actual que tengo en mi repo github
No explicaré en detalle cada una de las opciones (para eso está el manual de synaptics), solo explicaré las más relevantes o las "problemáticas". Lo primero es ignorar las pulsaciones en el área de los botones. Para eso definimos el rango de acción del dispositivo (límites):
# Edges
Option "LeftEdge" "1500"
Option "RightEdge" "5200"
Option "TopEdge" "1350"
Option "BottomEdge" "3500"
# Area
Option "AreaLeftEdge" "0"
Option "AreaRightEdge" "0"
Option "AreaTopEdge" "0"
Option "AreaBottomEdge" "3500"
Colocando el límite inferior (BottomEdge y AreaBottomEdge) en 3500 evitamos que el cursor se mueva al pasar sobre el área de botones. Estableciendo el límite derecho (RightEdge) a 5200 evitamos que el cursor se mueva en la columna derecha (para habilitar la zona de scrolling vertical). La imagen a continuación ilustra estos ajustes:
El dispositivo solo tiene un botón y a simple vista no encontré la forma de configurarlo para que funcione como ambos. Estuve compilando el driver synaptics con un patch para agregar el soporte de clickpads pero no he logrado generar el .ko, así que simplemente dejé su funcionamiento por defecto (left click) y configuré el click izquierdo con tap, el doble click con doble tap y el click derecho con tap de dos dedos.
Eso podemos verlo en:
# Tap
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
El botón para activar/desactivar el clickpad tampoco pude hacerlo funcionar pero creo que es cuestión de seguir trasteando hasta lograr una solución. Además de eso, el resto de la configuración es el ajuste de valores para la sensibilidad, aceleración y velocidad del puntero, pero eso lo dejo como tarea para el lector.
Tarea para la casa
Una de las herramientas más importantes para lograr una efectiva configuración es synclient. Gracias a esta herramienta pude determinar las coordenadas que definen los límites de mi dispositivo (que en las imágenes de arriba están marcados con azul y rojo) y verificar los valores de configuraciónUsando el siguiente comando podemos verificar la actividad del touchpad en vivo:
$ synclient -m 10
La salida debería ser algo como:
time x y z f w l r u d m multi gl gm gr gdx gdy
874.169 5392 4317 3 0 0 0 0 0 0 0 00000000
874.269 5392 4317 0 0 0 0 0 0 0 0 00000000
874.670 5392 4317 1 0 0 0 0 0 0 0 00000000
874.770 5392 4317 7 0 0 0 0 0 0 0 00000000
874.870 4143 1708 9 1 11 0 0 0 0 0 00000000
874.970 4225 1811 3 0 0 0 0 0 0 0 00000000
875.070 4225 1811 2 0 0 0 0 0 0 0 00000000
Donde:
- x, y: definen las coordenadas de la pulsación
- z: la presión aplicada
- f: el número de dedos tocando la superficie
- w: es una medida del ancho del dedo
- l,r,m: el estado de los botones left, right y middle
Para más información:
$ man synclient
Espero que con esta guía puedas configurar tu ClickPad y usarlo decentemente. Me queda pendiente por investigar la función de deshabilitar el touchpad mientras se escribe, los botones left-right y el botón para activar. Cuando lo logré postearé nuevamente :)
Fuentes:
- http://wiki.debian.org/SynapticsTouchpad
- https://wiki.archlinux.org/index.php/Touchpad_Synaptics
- http://sansmicrosoft.blogspot.com/2010/10/pavilion-dm4-1160-touchpad-erratic-bis.html
- https://bugs.archlinux.org/task/20830
- http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html
- http://askubuntu.com/questions/15208/touchpad-issues-on-hp-pavilion-dm4-cant-right-click