En las últimas versiones de Ubuntu, los TouchPad de Synaptics incluídos en mayoría de los computadores portátiles funcionan sin necesidad de instalar o modificar nada, gracias a un driver de código abierto que permite su utilización en entornos gráficos.
Sin embargo, es probable que quieras modificar alguna configuración, y aquí la cosa se pone un poco complicada (sólo un poco); pero en realidad este driver proporciona todas las opciones que podríamos necesitar de nuestro touchpad. Para ello, tenemos dos alternativas complementarias: GSynaptics y los ficheros de configuración de X.Org
Además, también hay un par de opciones disponibles a través de las preferencias de mouse, en Sistema → Preferencias → Ratón, bajo la pestaña Touchpad. Allí podrás des/habilitar el touchpad, el click con un toque y el desplazamiento horizontal/vertical.
GSynaptics
GSynaptics es una herramienta de configuración gráfica para el touchpad, que permite cambiar parámetros de configuración sin necesidad de reiniciar el sistema. Una vez instalado (está en los repositorios de Ubuntu), lo encontrarás en Sistema → Preferencias → Touchpad.
Al ejecutarlo por primera vez, quizás te aparezca una ventana de advertencia indicándote un error sobre SHMConfig
. Éste es un parámetro de configuración del driver que viene deshabilitado por defecto; para activarlo deberás abrir una ventana del terminal y editar el fichero de configuración del Touchpad, con permisos de administrador (o puedes hacer lo mismo desde el diálogo de Ejecutar una aplicación que sale al presionar Alt+F2): gksu gedit /usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi
Para habilitar SHMConfig
, debes encontrar la sección que comienza con <match key="info.product" contains="Synaptics TouchPad">
(casi al principio de todo), y antes del primer cierre </match>
(que corresponde al cierre de esa sección), debes ingresar la siguiente clave: <merge key="input.x11_options.SHMConfig" type="string">On</merge>
—después de haber configurado el TouchPad a tu gusto, es buena idea borrar o comenar esta línea, ya que SHMConfig=On
puede presentar problemas de seguridad.
Al reiniciar, podrás utilizar GSynaptics sin problema; tendrás acceso a las siguientes opciones de configuración:
- Des/activar el touchpad
- Ajustar la sensibilidad
- Des/activar el click con un toque
- Ajustar el tiempo el click con un toque
- Des/activar toque rápido
- Des/habilitar desplazamiento horizontal/vertical
- Ajustar velocidad de desplazamiento horizontal/vertical
- Des/activar desplazamiento circular
- Ajustar velocidad y punto de inicio del desplazamiento circular
- Des/activar movimiento en el eje
- Ajustar aceleración y velocidad mínima/máxima
Algo bastante completo, pero aun hay otras opciones escondidas…
Editar el archivo de configuración del TouchPad
Como quizás se han dado cuenta por la sección anterior; las cosas han cambiado algo para configurar los dispositivos que funcionan en las X: anteriormente, su configuración estaba determinada por el archivo de configuración /etc/X11/xorg.conf
, mientras que ahora toda la configuración se hace automáticamente a través de HAL; una “capa de abstracción de hardware” que hace que el hardware “simplemente funcione”. En lo práctico, esto significa que ahora la configuración de los dispositivos que funcionan con las X está repartida en diversos archivos XML. El de Synaptics se encuentra en /usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi
Sin embargo, a falta de una interfaz gráfica, puede resultar algo complicado saber qué valores deben llevar las variables que queramos modificar —aquí entra en juego synclient, un programa que forma parte del driver de Touchpad y que permite tanto obtener información del funcionamiento del driver, como modificar valores “al vuelo” (para lo cual será necesario activar SHMConfig
, tal como hicimos en la sección anterior).
En mi caso particular, había dos cosas que me interesaba modificar: el ancho del área para el desplazamiento vertical (que era muy pequeño, y no se correspondía con el área delimitada en el touchpad) y activar el desplazamiento vertical con dos dedos (permite hacer desplazamiento vertical arrastrando dos dedos en cualquier parte del touchpad). Para ver todas las opciones a configurar, puedes ver el manual de synaptics con
Volvamos a synclient
… hay tres modos que nos interesarán: ver la configuración actual, recibir información sobre el funcionamiento del touchpad, y cambiar configuraciones. Para lo primero, tenemos synclient -l, que devuelve algo como:
Parameter settings:
LeftEdge = 1632
RightEdge = 5000
TopEdge = 1575
BottomEdge = 4281
FingerLow = 25
FingerHigh = 30
FingerPress = 256
MaxTapTime = 180
MaxTapMove = 220
MaxDoubleTapTime = 180
SingleTapTimeout = 180
ClickTime = 100
FastTaps = 0
EmulateMidButtonTime = 75
EmulateTwoFingerMinZ = 257
VertScrollDelta = 100
HorizScrollDelta = 121
VertEdgeScroll = 1
HorizEdgeScroll = 0
CornerCoasting = 0
VertTwoFingerScroll = 1
HorizTwoFingerScroll = 0
MinSpeed = 0.109
MaxSpeed = 0.179934
AccelFactor = 0.0015
TrackstickSpeed = 40
EdgeMotionMinZ = 30
EdgeMotionMaxZ = 160
EdgeMotionMinSpeed = 1
EdgeMotionMaxSpeed = 400
EdgeMotionUseAlways = 0
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
ClickFinger1 = 1
ClickFinger2 = 1
ClickFinger3 = 1
CircularScrolling = 0
CircScrollDelta = 0.1
CircScrollTrigger = 0
CircularPad = 0
PalmDetect = 1
PalmMinWidth = 10
PalmMinZ = 200
CoastingSpeed = 0
PressureMotionMinZ = 30
PressureMotionMaxZ = 160
PressureMotionMinFactor = 1
PressureMotionMaxFactor = 1
GrabEventDevice = 1
Primero, lo más fácil: activar el desplazamiento vertical con dos dedos —synclient VertTwoFingerScroll=1 y listo; con eso queda activado durante la sesión, más adelante podremos hacer este cambio permanente al editar el fichero de configuración.
Ahora, para definir mejor el ancho del área de desplazamiento vertical, recurirremos nuevamente a synclient
, pero ahora para tener información sobre la utilización del touchpad, con synclient -m 50, lo que nos entregará información cada 50 milisegundos sobre el dispositivo, algo similar a esto:
time x y z f w l r u d m multi gl gm gr gdx gdy
0.000 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0
18.685 2482 2250 44 1 8 0 0 0 0 0 00000000 0 0 0 0 0
18.735 2489 2247 43 1 8 0 0 0 0 0 00000000 0 0 0 0 0
18.785 2656 2233 39 1 10 0 0 0 0 0 00000000 0 0 0 0 0
18.836 3054 2222 36 1 7 0 0 0 0 0 00000000 0 0 0 0 0
18.886 3445 2215 36 1 8 0 0 0 0 0 00000000 0 0 0 0 0
18.936 3761 2179 36 1 8 0 0 0 0 0 00000000 0 0 0 0 0
18.987 3906 2126 36 1 8 0 0 0 0 0 00000000 0 0 0 0 0
19.037 3879 2068 38 1 8 0 0 0 0 0 00000000 0 0 0 0 0
19.087 3682 1978 35 1 9 0 0 0 0 0 00000000 0 0 0 0 0
19.137 3367 1828 35 1 10 0 0 0 0 0 00000000 0 0 0 0 0
19.187 3056 1749 33 1 10 0 0 0 0 0 00000000 0 0 0 0 0
19.237 2929 1731 26 1 10 0 0 0 0 0 00000000 0 0 0 0 0
19.287 1 5855 3 2 5 0 0 0 0 0 00000000 0 0 0 0 0
19.337 1 5855 4 2 5 0 0 0 0 0 00000000 0 0 0 0 0
19.588 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0
19.738 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0
19.838 1 5855 2 2 5 0 0 0 0 0 00000000 0 0 0 0 0
19.988 1 5855 0 0 0 0 0 0 0 0 00000000 0 0 0 0 0
20.289 1 5855 1 2 5 0 0 0 0 0 00000000 0 0 0 0 0
En mi caso, descubrí que el área marcada para el desplazamiento vertical en mi TouchPad comenzaba en la coordenada X = 5000, por lo que debería aplicar ese valor a RightEdge
: synclient RightEdge=5000 y ya.
Recuerda que los cambios que realizas con synclient
tienen efecto instantáneo, pero además son transitorios — para hacerlos permanentes, debemos editar el fichero de configuración del driver.
Fijar los cambios permanentes a la configuración
Nuevamente tendremos que editar /usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi
, pero como siempre, es buena idea realizar primero una copia de seguridad: sudo cp /usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi /usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi.backup
Ahora sí, a editar… podemos hacerlo con cualquier editor de texto, por ejemplo: gksu gedit /usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi
En mi caso, mi fichero de configuración queda así:
<?xml version="1.0" encoding="ISO-8859-1"?> <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.touchpad"> <match key="info.product" contains="Synaptics TouchPad"> <merge key="input.x11_driver" type="string">synaptics</merge> <!-- Arbitrary options can be passed to the driver using the input.x11_options property since xorg-server-1.5. --> <!-- EXAMPLE: <merge key="input.x11_options.LeftEdge" type="string">120</merge> --> <!-- La siguiente es la línea que insertamos antes para activar SHMConfig. Si ya no necesitas hacer más cambios o utilizar synclient, puedes comentarla o borrarla, ya que SHMConfig=On implica riesgos de seguridad --> <merge key="input.x11_options.SHMConfig" type="string">On</merge> <merge key="input.x11_options.RightEdge" type="string">5000</merge> <merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge> </match> <match key="info.product" contains="AlpsPS/2 ALPS"> <merge key="input.x11_driver" type="string">synaptics</merge> </match> <match key="info.product" contains="appletouch"> <merge key="input.x11_driver" type="string">synaptics</merge> </match> <match key="info.product" contains="bcm5974"> <merge key="input.x11_driver" type="string">synaptics</merge> <merge key="input.x11_options.LeftEdge" type="string">0</merge> <merge key="input.x11_options.RightEdge" type="string">1280</merge> <merge key="input.x11_options.TopEdge" type="string">0</merge> <merge key="input.x11_options.BottomEdge" type="string">800</merge> <merge key="input.x11_options.ClickFinger1" type="string">1</merge> <merge key="input.x11_options.ClickFinger2" type="string">3</merge> <merge key="input.x11_options.ClickFinger3" type="string">2</merge> <merge key="input.x11_options.HorizEdgeScroll" type="string">0</merge> <merge key="input.x11_options.VertEdgeScroll" type="string">0</merge> <merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge> <merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge> <merge key="input.x11_options.HorizScrollDelta" type="string">0</merge> <merge key="input.x11_options.VertScrollDelta" type="string">40</merge> <merge key="input.x11_options.PressureMotionMinZ" type="string">10</merge> <merge key="input.x11_options.FingerLow" type="string">16</merge> <merge key="input.x11_options.FingerHigh" type="string">80</merge> <merge key="input.x11_options.FingerPress" type="string">256</merge> <merge key="input.x11_options.PalmDetect" type="string">0</merge> <merge key="input.x11_options.PalmMinWidth" type="string">10</merge> <merge key="input.x11_options.PalmMinZ" type="string">200</merge> <merge key="input.x11_options.MinSpeed" type="string">0.8</merge> <merge key="input.x11_options.MaxSpeed" type="string">1.2</merge> <merge key="input.x11_options.AccelFactor" type="string">0.10</merge> <merge key="input.x11_options.MaxTapMove" type="string">25</merge> <merge key="input.x11_options.MaxTapTime" type="string">223</merge> <merge key="input.x11_options.MaxDoubleTapTime" type="string">200</merge> <merge key="input.x11_options.TapButton1" type="string">0</merge> <merge key="input.x11_options.TapButton2" type="string">0</merge> <merge key="input.x11_options.TapButton3" type="string">0</merge> <merge key="input.x11_options.RTCornerButton" type="string">0</merge> <merge key="input.x11_options.RBCornerButton" type="string">0</merge> <merge key="input.x11_options.LTCornerButton" type="string">0</merge> <merge key="input.x11_options.LBCornerButton" type="string">0</merge> </match> </match> </device> </deviceinfo>
Como pueden ver, la parte que nos interesa está prácticamente al principio (suponiendo que efectivamente quieres configurar un TouchPad Synaptics, y no otro de los dispositivos controlados por este fichero).
El archivo es un simple XML que acepta todas las propiedades descritas en el manual de Synaptics, de la misma forma que se hacía antes con xorg.conf
, pero en una sintaxis un-poco distinta.