Archivos Mensuales: febrero 2012

Luego que mi madre, como jubilada asistiera a una sede del Banco del Pueblo soberano para ver los planes que para ellos tiene el gobierno, tras el irrespeto, maltrato y malas caras por parte de los empleados y por último, el soberano grito de la chica de atención que le respondió a la pregunta de mi mamá ¿cuándo puedo llamar para saber si me van a atender?, “Si quiere llame cuando le dé la gana, porque acá ya tenemos como 200 solicitudes y no tenemos tiempo para más, igual aún no la vamos a atender”, mi madre, fiel a su capacidad de no perder su compostura y con mirada circunspecta le pregunta, ¿y entonces, adonde llamo? …

La chica le entrega esto:

Un pedazo de papel del tamaño de mi uña le están entregando a los pobres viejitos jubilados que van a pedir información sobre los planes que gestiona el Banco del Pueblo, entre ellos “Mi casa bien equipada” …

Es que, el gobierno podrá tener buenas ideas, pero para funcionarios así que se buscan para las instituciones públicas, cualquier buen plan cae en desgracia …

[Linux] Corrigiendo el error de inicio de ALSA (alsactl)

Este detalle lo detecté instalando Debian GNU/Linux y Linux Mint en un equipo Lenovo E420 con tarjeta de sonido Intel HD, el error era el siguiente:

(visible en el arranque y en dmesg):

Found hardware: “HDA-Intel” “VIA VT1705” “HDA:11064397,18490397,00100000”  “0x1849” “0x0397”
Hardware is initialized using a generic method
/usr/sbin/alsactl: set_control:1328: failed to obtain info for control #1 (No such file or directory)

Este detalle causaba muchísimo ruido en la reproducción de flujos de audio y algunos otros detalles, se corrige muy fácilmente, primero, ejecutamos un test de las cornetas:

speaker-test -c 2
speaker-test 1.0.23

Playback device is default
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 2048 to 8192
Period size range from 1024 to 1024
Using max buffer size 8192
Periods = 4
was set period_size = 1024
was set buffer_size = 8192
 0 - Front Left
 1 - Front Right
Time per period = 5,822838
 0 - Front Left
 1 - Front Right

Cuando ALSA ha podido determinar la reproducción de sonido por las cornetas, ejecutamos:

Debian:

alsactl store

Mint:

alsactl -f /var/lib/alsa/asound.state store

Y listo!, al reiniciar, ya no aparecerá más el error.

Nota: Mejorando la latencia del ALSA

Los ruidos son  a veces por una latencia demasiado elevada en la respuesta del kernel, como contamos con un equipo bastante robusto, podemos reducir la latencia a un milisegundo agregando este archivo:

file: /etc/modprobe.d/modprobe.conf :

options snd-usb-audio nrpacks=1

Y reiniciamos el equipo.

Habilitar – Deshabilitar el touchpad en GNU/Linux

Me compré una nueva portátil, luego de 4 años utilizando la misma tablet, la he comprado más que todo por su procesador iCore quad-core que me permite virtualizar de muchísimas maneras (además que mi pobre Tablet ya merece un descanso).

En fin, una de las cosas que más me estresa, es haber perdido el uso de los touchpads, cuando se tiene una tablet, se olvida como funcionan los ratones y los touchpads xD.

Pero no conforme con eso, este touchpad es ultra-sensible y multitouch, toda una pesadilla a la hora de escribir y que accidentalmente caen tus dedos sobre él.

Entonces, he querido documentar varias formas de habilitar y deshabilitar el touchpad …

Manos a la obra! …

Herramienta Gráfica : Gsynaptics

Simplemente instalamos el paquete gsynaptics (por Gestor de paquetes o por cónsola) y nos aparecerá una opción en el menú “Sistema > Preferencias > Pointing Devices” que nos permitirá activar y desactivar el touchpad.

Script: Toggle Touchpad

Como uno nunca sabe cuándo va a escribir, un botón rápido en la barra de herramientas que permita el “toggle” o cambio rápido entre habilitado y deshabilitado, lo cual es bastante útil.

El script es bastante sencillo, hace uso del programa “synclient” que viene en el paquete xorg-xserver-input-synaptic, el cual permite configurar todas las opciones del synaptic.

El script:

#!/bin/bash

# Authors:
# Jesus Lara <jesuslara@devel.com.ve>
# version: 0.1
# Copyright (C) 2010 Jesus Lara
# Toggle between disable and enable Touchpad

SYNCLIENT=`type synclient | awk '{print $3}'`
SYNCLIENT=/usr/bin/synclient
if [ ! -f "$SYNCLIENT" ] ; then
        echo "No se ha encontrado synclient"
        exit 1
fi

ENABLE=$(synclient -l | grep TouchpadOff | awk '{print $3}')

if [ "$ENABLE" != "1" ]; then
        $SYNCLIENT TouchpadOff=1
else
        $SYNCLIENT TouchpadOff=0
fi

exit 0

Copien el texto en un archivo, conviértanlo en ejecutable:

chmod +x toggletouchpad.sh

Y prueben ejecutándolo en la cónsola, luego, coloquenlo como botón en la barra de herramientas:

Y tendrán un botón que permite activar y desactivar el Touchpad a voluntad en la barra de herramientas.

Detectando automáticamente la palma de la mano

También podemos, si tienes una portátil que no tiene segunda opción de ratón (como el trackpoint IBM de las Lenovo), es mejorar la sensibilidad de detección de la palma de la mano, esto es, que a una presencia de algo “más grande y con más presión” que un dedo, entonces obviarlo, para ello debemos configurar nuestro synaptic en el Xorg y agregar las siguientes opciones:

file: /usr/share/X11/xorg.conf.d/55-touchpad.conf

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        Option          "MinSpeed"              "0.5"
        Option          "MaxSpeed"              "1.0"
        Option          "AccelFactor"           "0.075"
        Option          "TapButton1"            "1"
        Option          "TapButton2"            "2"     # multitouch
        Option          "TapButton3"            "3"     # multitouch
        Option          "VertTwoFingerScroll"   "1"     # multitouch
        Option          "HorizTwoFingerScroll"  "1"     # multitouch
        Option          "HorizEdgeScroll"       "on"
        Option          "VertEdgeScroll"        "on"
        Option          "CoastingSpeed"         "8"
        Option          "CornerCoasting"        "1"
        Option          "CircularScrolling"     "1"
        Option          "CircScrollTrigger"     "7"
        Option          "EdgeMotionUseAlways"   "1"
        Option          "LBCornerButton"        "8"     # browser "back" btn
        Option          "RBCornerButton"        "9"     # browser "forward" btn
        Option          "SHMConfig"             "on"
        # deteccion de palma
        Option          "PalmDetect"            "1"
        Option          "PalmMinWidth"          "10"
        Option          "PalmMinZ"              "200"
EndSection

La última opción “Palm Detect”, es un booleano (cero, uno) que permite habilitar y deshabilitar la detección de que accidentalmente caiga nuestra palma (u otra parte de la mano) sobre el Touchpad, también incluye el ancho mínimo de la zona (es un valor del 1 al 15), para personas con dedos pequeños, valores bajos permite detectar cualquier objeto más grande que un dedo sobre el touchpad, además, PalmMinZ permite determinar el nivel de presión que por lo general ejercemos con la palma (de 1 a 255); con un valor 200, puedo reposar completamente la palma sobre la parte inferior del Touchpad y aún así, poder usarlo sin que se vuelva loco el cursor.

Desactivar el touchpad si se conecta un ratón

Como el Touchpad me estresa, terminé comprandome un ratón, entonces me gustaría que al conectar el ratón, este se desactivara automáticamente, para ello, tendremos que instalar:

aptitude install xinput

Y modificar algunas cosillas en las reglas UDEV.

xinput --list
⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                  id=10    [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                       id=11    [slave  pointer  (2)]

xinput –list retorna la lista de dispositivos de entrada, verificamos si hay una propiedad que nos permita desactivar el equipo:

xinput list-props "SynPS/2 Synaptics TouchPad" | grep Enable
    Device Enabled (129):    1

Y como existe, la probamos:

Habilitar: xinput –set-prop “SynPS/2 Synaptics TouchPad” “Device Enabled” 1
Deshabilitar: xinput –set-prop “SynPS/2 Synaptics TouchPad” “Device Enabled” 0

Listo!, podemos crear una regla UDEV para desactivar este dispositivo si un ratón USB es conectado:

script: /etc/udev/rules.d/61-touchpad.rules

# 61-touchpad.rules
#
# this rules file must be named 61* or later because it won't work
# unless it runs after '/lib/udev/rules.d/60-persistent-input.rules'
#
# NOTE: will only affect DISPLAY :0
#
# run:
#   udevadm test --action=add /sys/devices/platform/i8042/serio1/input/input4/mouse0
# or similar to test the following rules
#
# disable synaptic touchpad on DISPLAY :0 if a mouse is added to the system
ACTION=="add", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", RUN+="/bin/sh -c 'DISPLAY=:0 /usr/bin/xinput --set-prop SynPS/2\ Synaptics\ TouchPad\ Device\ Enabled 0'"

# enable synaptic touchpad on DISPLAY :0 if a mouse is removed from the system
ACTION=="remove", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", RUN+="/bin/sh -c 'DISPLAY=:0 /usr/bin/xinput --set-prop SynPS/2\ Synaptics\ TouchPad\ Device\ Enabled 1'"

Este script habilita y deshabilita el touchpad apenas conectemos un dispositivo Mouse en el subsistema de entrada.

Para probar “cual” dispositivo es nuestro touchpad ejecutamos:

cat /proc/bus/input/devices
I: Bus=0011 Vendor=0002 Product=0007 Version=01b1
N: Name="SynPS/2 Synaptics TouchPad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input4
U: Uniq=
H: Handlers=mouse0 event4 
B: PROP=9
B: EV=b
B: KEY=6420 30000 0 0 0 0
B: ABS=260800011000003

Y veremos que nuestro dispositivo es: /sys/devices/platform/i8042/serio1/input/input4, para probar si la regla está bien escrita ejecutamos:

udevadm test --action=remove /sys/devices/platform/i8042/serio1/input/input4 2>&1 | grep "run:"
udevadm_test: run: 'socket:@/org/freedesktop/hal/udev_event'

Nota: También podíamos (si no queremos instalar xinput) es utilizar el mismo comando “disable Touchpad” del synclient, modificando las reglas de UDEV de esta manera:

ACTION=="add", SUBSYSTEM=="input", KERNEL=="mouse[1-9]", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient TouchpadOff=1"
ACTION=="remove", SUBSYSTEM=="input", KERNEL=="mouse[1-9]", ENV{ID_CLASS}="mouse", RUN+="/usr/bin/synclient TouchpadOff=0"

Y así, no apagamos el dispositivo, simplemente “desactivamos” el touchpad y lo podremos recuperar con el script de arriba.

Desactivando el Touchpad mientras se escribe

Para que esta directiva funcione, deberán tener habilitado “SHMConfig” en la configuración del Touchpad en Xorg (como aparece comentado en las reglas del Xorg, colocadas más arriba), al habilitar SHMConfig, podemos cambiar opciones del Synaptic Touchpad en ejecución utilizando la herramienta “syndaemon”, en mi caso, he utilizado el archivo “.xinitrc” para colocar el siguiente comando:

file: /home/jesuslara/.xinitrc

syndaemon -t -k -i 2 -d &

syndaemon indica que desactivará el touchpad en presencia de actividad del teclado (solo desactivará los taps y el scrolling, se podrá seguir moviendo el cursor) y lo reactivará luego de 2 segundos de detectado que el teclado ya no se está usando.

Si no lo poseen, creen el archivo, pónganle opción ejecutable y reinicien su sesión.

Nota: para los usuarios de Gnome, pueden colocar el comando en “Aplicaciones al inicio” para que el demonio syndaemon quede configurado al iniciar el sistema.

También pueden ir al menú “Sistema > Preferencias > Ratón” y en la pestaña “Touchpad” hacen click en la opción “desactivar Touchpad mientras se escribe”.

¿Vieron cuántas opciones hay? … espero les ayude como me ayudaron a mí estos tips …

Happy Hacking!

A %d blogueros les gusta esto: