La nueva Ubuntu y mi viejo ratón

(Actualizado 2. Ver al final del artículo) Ayer actualicé mi sistema a la nueva Ubuntu 8.10 y me encontré con el primer problema: mi ratón empezó a funcionar correctamente.

Para explicarlo un poco mejor: mi ratón tiene un total de siete botones: los dos de siempre, el central en la rueda, y dos extra en el pulgar. La rueda, además, se puede mover a derecha e izquierda: dos botones más. Hasta ahora Ubuntu (o más concretamente, las X-Windows) no reconocían los botones extra, y los interpretaba como si fuesen el botón central, lo que para mí era muy cómodo. En efecto, si uso el botón central de la rueda para pegar texto o abrir un enlace de Firefox en una nueva pestaña, es raro que no se me mueva algo y acabe pinchando donde no quiero, problema que resuelvo usando el botón del pulgar.

Por desgracia la nueva versión utiliza HAL para detectar y gestionar el ratón, y éste sí reconoce los nuevos botones, con lo que el botón del pulgar ahora me lleva a la página anterior cada vez que lo pulso.

Por suerte el nuevo sistema también permite reconfigurar el sistema con más comodidad, y lo que es más interesante, sin necesidad de reiniciar las X, sino simplemente desenchufando y volviendo a enchufar el ratón. La manera es mediante unos ficheros XML (con extensión .fdi ) almacenados en /etc/hal/fdi/policy. Estos ficheros permiten modificar y personalizar completamente el funcionamiento de cualquier dispositivo, aunque la documentación es algo confusa.

Para los impacientes, la solución es tan simple como crear un fichero cualquiera en ese directorio (por ejemplo, /etc/hal/fdi/policy/mouse.fdi ) que contenga las siguientes lineas:

<device>
    <match key="info.capabilities" contains="input.mouse">
        <merge key="input.x11_options.ButtonMapping" type="string">1 2 3 4 5 6 7 2 2</merge>
    </match>
</device>

Para los que quieran personalizarlo más, la asignación de eventos es:

  1. Botón izquierdo
  2. Botón central
  3. Botón derecho
  4. Rueda arriba
  5. Rueda abajo
  6. Rueda izquierda
  7. Rueda derecha
  8. Página anterior (en un navegador)
  9. Página siguiente (en un navegador)

En el fichero anterior lo que hago es especificar que los eventos 8 y 9 deben responder como un evento 2, mientras que los demás permanecen inalterados.

Actualización: modifiqué el fichero FDI para que filtre los dispositivos, quedándose sólo con los ratones (tag match).

Actualización 2: Por desgracia la solución no sirve porque sólo funciona cuando primero se cargan las X y luego el módulo del ratón (por ejemplo, al desenchufarlo y volverlo a enchufar con las X ya cargadas). Cuando se arranca el ordenador desde cero, como se carga primero el módulo USB y luego las X, no hace nada.

La solución, al final, es más sencilla:

  • Se crea un fichero .Xmodmap en el directorio del usuario, que contenga la línea pointer = 1 8 3 4 5 6 7 2
  • Se sale de las X y se vuelve a entrar
  • Preguntará si se quiere utilizar un fichero Xmodmap, y mostrará la lista de los que ha encontrado (estará el que acabamos de crear)
  • Lo seleccionamos y lo añadimos a la lista de activos, y nos aseguramos de marcar la opción «No volver a preguntar».

Y con esto sí se resolverá el problema. El único defecto es que no se pueden repetir eventos, por lo que tuve que, simplemente, invertir los eventos 2 y 8, en lugar de asignar el 2 a todos los que me interesaba. Pero menos da una piedra…

Bailando Samba

En el trabajo han montado un servidor windows para compartir ficheros e impresoras, y como la mayoría de los servidores de este tipo, utiliza el protocolo SMB de Microsoft.

Acceder a estos servicios desde Linux parecía tan sencillo como abrir Lugares->Red y navegar gracias a SAMBA; pero, como de costumbre, las cosas nunca son tan sencillas. En efecto, el firewall que utilizo no me dejaba acceder, así que tras rebuscar en Internet encontré que tenía que abrir los puertos 135, 137, 138, 139 y 445. Me parecía extraño que, queriendo trabajar sólo como cliente (sin compartir yo nada) tuviese que abrir puertos, pero de todas formas lo probé. El resultado: ni con esas funcionaba, aunque si quitaba el firewall entonces iba como la seda.

Bastante mosqueado volví a buscar en Internet, pero no encontré absolutamente nada, así que me armé de paciencia y de Wireshark y empecé a ver qué demonios pasaba con los paquetes. Así fue como descubrí que el problema estaba en la resolución de nombres. En efecto, cuando un recurso no está en el DNS (un servidor, una impresora), SAMBA utiliza su propio servicio para descubrir su dirección IP, para lo que envía una petición UDP a toda la red usando la dirección de broadcast. El problema es que la respuesta no viene de la dirección de broadcast, sino de un equipo concreto (el buscado), por lo que el firewall la bloquea.

Pensando que era un bug del módulo ip_conntrack escribí a los desarrolladores para avisarles. Su respuesta, sin embargo, fue que cargase el módulo nf_conntrack_netbios_ns. Y efectivamente, con dicho módulo, y sin necesidad de abrir ningún puerto, todo ha funcionado perfectamente.

Lapsus linguae

Acabo de lanzar la versión 3.11b de DeVeDe que corrige un par de fallos en las locales EL, SV, SK y PL. En las dos primeras el fallo impedía que se mostrasen los iconos en los botones; en la tercera una frase no aparecía en negrita; y en la cuarta, la más grave, directamente no arrancaba el programa.

También actualicé el paquete DEB, como debe ser, y añadí una respuesta extra en la FAQ sobre como hacer DVDs sin menú.

Esguince cervical

Como ya habreis leído, sufrí hace unos meses un esguince cervical por culpa del clásico «alcance por detrás». Después de todo este tiempo he aprendido bastantes cosas, y creo que no está de más compartirlas porque pueden ayudar a mitigar las molestias de, o incluso evitar, el esguince cervical.

¿Qué es un esguince cervical?

El esguince cervical se produce cuando, por culpa de un impulso brusco, la cabeza se mueve violentamente, generalmente adelante y atrás. El caso más habitual es cuando estás en el coche, parado, y alguien te embiste por detrás: la espalda está perfectamente apoyada en el respaldo, pero la cabeza suele estar suelta, sin apoyarse en nada. Además, al no prever el golpe, los músculos del cuello están relajados, con lo que, en el breve instante que dura el golpe no les da tiempo a tensarse y sujetar convenientemente la cabeza.

¿Como puedo prevenirlo?

Dado que no conducir no es una opción, es importante entonces buscar la manera de prevenir en la medida de lo posible los resultados de un alcance por detrás. Lo ideal sería comprar un coche que obtuviese una buena puntuación en las pruebas específicas de alcance por detrás. Por desgracia, si vemos las tablas de los test del International Insurance Whiplash Prevention Group, vemos que en 2005 (cuando me compré el mío) menos de la mitad consiguen una puntuación buena o aceptable. En 2008, afortunadamente, la cifra sube a algo más de la mitad, pero aún así sigue siendo, bajo mi punto de vista, escandaloso. Normalmente el diseño del asiento y el reposacabezas es fundamental para conseguir una buena protección, pero parece que los fabricantes no se preocupan demasiado, salvo los de gama alta. Y uno no siempre se puede permitir un coche así (no es sólo comprarlo, sino también mantenerlo: un Audi no lo dejo durmiendo en la calle ni harto de vino).

Una vez que ya tenemos un coche, bueno o malo, es fundamental ajustar correctamente el asiento y el reposacabezas. Por muy bueno que sea el sistema, si está mal ajustado no servirá para nada. La idea es que, en caso de alcance por detrás, impida que la cabeza se mueva violentamente, sirviendo de apoyo y haciendo que siga el movimiento del resto del cuerpo. Para ello es necesario que esté ajustado en altura para que su parte superior quede igualada con la parte superior de nuestra cabeza, y (muy importante) en distancia, de manera que quede, como mucho, a cuatro centímetros de nuestra cabeza. Y, como la colonia, mejor cuanto más cerca.

Y es aquí en donde la gran mayoría de coches fallan estrepitosamente. En mi caso me compré un Citroen C2 porque quería un coche pequeño y  manejable, que pudiese aparcar con facilidad en cualquier hueco. Pero si echamos un vistazo a los resultados de la tabla vemos que son desastrosos: obtiene la peor puntuación posible. Parte de la culpa se debe a que no hay manera de ajustar el reposacabezas en sentido horizontal; sólo se puede subir y bajar; y la otra a que el respaldo tiene una forma… digamos que singular: si ajusto la inclinación del respaldo para sentarme cómodo, el reposacabezas queda a unos diez centímetros de mi cabeza. La única forma de que se acerque es echando el respaldo hacia adelante; pero en ese caso la zona lumbar queda separada casi diez centímetros, y no hay quien aguante más de cinco minutos parado (no digamos ya conducir), porque sólo apoyas los hombros en el respaldo. Ya mucho antes del accidente me había hartado de probar combinaciones y no hubo manera de conseguir que el reposacabezas quedase en una posición adecuada. Los asientos tienen una forma muy extraña. A veces me pregunto si los fabricantes llegan a probar sus propios vehículos.

Tras el accidente empecé a buscar y encontré dos posibles soluciones al problema: la primera, un añadido acolchado para el reposacabezas (disponible en tiendas de complementos para el coche). Este reduce la distancia lo suficiente como para poder apoyar cómodamente la cabeza en cualquier momento.

La segunda solución es un soporte lumbar. Se coloca en la zona de los riñones y la separa del asiento, haciendo la postura más cómoda y permitiendo, en mi caso, que toda la espalda se apoye cuando se pone el respaldo en la postura necesaria para que la cabeza quede a una distancia razonable del reposacabezas, manteniendo la curvatura natural de la columna.

Al principio el añadido del reposacabezas me parecía la opción más cómoda, pero después de probar bien el soporte lumbar (y, sobre todo, de ponerlo bien: no tiene que estar abajo del todo, sino a un par de centímetros de altura) me he decantado definitivamente por él, porque es más cómodo. El añadido del reposacabezas lo pasé al asiento del acompañante para que proteja cuando lleve a alguien.

Lo que más me molesta es que no parece haber ninguna solución oficial por parte de Citroen. He preguntado en concesionarios y talleres y la respuesta es siempre la misma: los asientos son así y no hay nada que cambiar.

DeVeDe 3.11

Acabo de lanzar una nueva revisión de DeVeDe, la 3.11. Los cambios en sí son pocos, aunque necesarios, por tratarse de algunas correcciones.

El primer cambio importante es de apariencia: en efecto, hubo varias quejas en la zona de comentarios de GnomeFiles sobre ella, y me dieron varias sugerencias interesantes, entre ellas limitar el tamaño vertical de las ventanas para que se pueda utilizar cómodamente en equipos con resolución vertical de 800 pixels (como muchos ultraportátiles).

Otro cambio es que ahora puede trabajar indistintamente con mkisofs o genisoimage, con lo que no habrá problemas para usarlo en el futuro en el caso de que alguna distribución se niegue a instalar el primero o hacer un enlace al segundo (para los que no sepan de qué va la movida: el autor de mkisofs cambió la licencia de algunas partes a CDDL, que es incompatible con la GPL, ante lo que la gente de Debian decidió coger la última versión GPL y hacer un fork). Esta corrección la he extendido al paquete DEB, en donde exijo uno cualquiera de los dos paquetes para que funcione.

Respecto a la corrección de errores, el primero es limitar el número de archivos que se pueden añadir a un DVD a 61. En efecto: el estándar de DVD sólo permite un máximo de 128 comandos en cada título. Dado que el código que añado necesita dos comandos por cada fichero que se añada, además de 6 comandos extra para inicialización, ese es el número máximo que se puede meter. En el futuro espero poder cambiar el sistema para elevar el máximo a 99 archivos, igual que en VCD, sVCD, CVD y DivX.

Otro error corregido es que no recuperaba las opciones del menú al cargar una estructura de disco por culpa de un despiste tonto. Ahora ya lo hace. Ahora también muestra la fuente en el botón para escoger el tipo de letra del título del menú. Por último, al previsualizar el menú en formato NTSC usa una ventana un poco más pequeña para que no quede la ventana medio vacía.

Actualización: acabo de subir la revisión 2 del paquete DEB, en donde quito la dependencia de ImageMagik. Esto me pasa por reciclar los ficheros de control de paquetes viejos O:-)

DeVeDe 3.10

Por fin. Tras un par de meses en espera por fin he tenido tiempo de darle los últimos retoques a la versión 3.10 de DeVeDe. Y además, no sólo en formato TAR.BZ2, sino también en forma de paquete DEB, para instalarlo directamente en sistemas con Ubuntu o Debian.

La principal novedad está, sin duda, en el sistema de menús: por fin he eliminado el límite de doce títulos por disco. Ahora puede haber hasta 90, mostrando un máximo de diez por menú y añadiendo flechas para pasar al siguiente o anterior. Los usuarios de grabadoras de doble capa ya no tienen queja.

Otros cambios en los menús permiten ahora añadir un título, música de fondo, mover a la derecha o a la izquierda los textos, o añadir sombras a las letras (del color que se quiera). Con todos estos cambios creo que el 95% de los usuarios no necesitarán irse a un editor externo como QDVDAuthor, DVD Styler o Polidori.

Otro cambio que mejorará la calidad de los discos es que cuando el vídeo original es de 24 fotogramas por segundo y se quiere hacer un disco PAL (a 25 fotogramas por segundo), en lugar de repetir un fotograma cada 24 (lo que produce un molesto efecto, como si el vídeo fuese a saltos) lo acelera un 4%, igual que se hace en los estudios de televisión. El único inconveniente es que el sonido también se acelera, con lo que un oido entrenado notará que todo suena un poco más agudo y rápido que en el vídeo original. Afortunadamente este efecto normalmente no se nota, salvo, quizás, en musicales. Al crear un disco NTSC a partir de un vídeo a 24fps este problema no existe porque se utiliza la opción telecine de Mencoder, que suaviza las transiciones al repetir fotogramas.

Otra novedad interesante es la ayuda contextual: en las ventanas principales hay un botón de ayuda. Al pulsarlo se desplegará la ayuda para esa ventana concreta, pudiendo ir en cualquier momento al índice, por supuesto.

Por último, se ha simplificado aún más el uso. Ahora se escoge en la ventana principal el tipo de disco que se va a crear (PAL o NTSC), y los nuevos vídeos que se añadan, así como el menú, estarán en dicho formato. Aún así, es posible cambiar de manera individual el formato de cada vídeo si se desea. También se han ocultado las opciones avanzadas de la ventana principal, aunque siguen estando disponibles simplemente pulsando un botón.

El resto de cambios son pequeñas correcciones de errores.

Nueva versión de GAG

Ayer lancé una pequeña revisión de GAG. Los cambios son bastante pequeños: un nuevo icono para windows, un par de frases en inglés corregidas, y un par de comprobaciones extra en el código que oculta y hace visibles las particiones. También añadí una corrección extra, aunque es algo más bien «por tranquilidad personal»: si se produce un error de lectura, antes de reintentarlo, resetea la controladora correspondiente. Se supone que ésto lo debería haber hecho desde la primera versión de GAG, pero por desgracia la documentación de que disponía no especificaba que fuese necesario. Lo descubrí de casualidad hace un par de meses, y entre las recaidas por el cuello y el cambio de trabajo no tuve tiempo de implementarlo, además de que tampoco era algo crítico por la sencilla razón de que, hoy en día, difícilmente se puede producir un error al leer o escribir desde un disco duro. Esto tenía sentido en los viejos tiempos de las controladoras ESDI o cuando se usaban disqueteras tan lentas como las primeras (era habitual que fallase la primera operación de lectura porque al tener que arrancar el motor de giro, el disco todavía no había alcanzado la velocidad de rotación adecuada; por eso había que resetear la controladora y reintentar al menos tres veces). Hoy en día, con discos duros ATA-5 y SATA ya no se puede producir ese error, por lo que, al no reintentarse nunca una lectura o escritura, nunca se necesita reiniciar la controladora (además, sospecho que dicho comando ni siquiera es necesario en los discos duros actuales).

RealMedia sin RealPlayer

Por casualidades de la vida tengo una película en formato RealMedia (.rm), pero no era capaz de reproducirla. MPlayer, mi reproductor favorito (es el único que se puede controlar completamente desde teclado) se negaba a mostrar el vídeo, sólo reconocía el audio.

Me harté de buscar en google y en todas partes decían lo mismo: si tenía los w32codecs instalados debería poder reproducir archivos .rm sin problemas. Pero a la vez mucha gente se quejaba de que los tenía instalados y ni con esas (como era mi caso).

Los volví a bajar de la página oficial, probé con otros reproductores… y nada. Al final ya me veía resignado a utilizar el RealPlayer para Linux, pero su interfaz me tiraba para atrás. Hasta que echando un vistazo a la salida de Mplayer encontré un mensajito de error en el que no había reparado antes:

 Error: libstdc++.so.5: cannot open shared object file: No such file or directory

Y efectivamente: un simple sudo apt-get install libstdc++5 resolvió el problema.

Por si le sirve a alguien más.

Parecidos razonables

Mientras termino de recuperarme de una recaida de mis adorables cervicales, aprovecharé para subir una entrada que tenía escrita desde hace tiempo. Y es que a veces uno encuentra cosas divertidas o curiosas en la vida real, como por ejemplo el famoso Quick Stop de Clerks (el cartel de la derecha)… pero en Valencia (a la izquierda):


Otro caso es el parecido entre el logo de Nvidia, famosa por sus tarjetas gráficas, y el de una empresa de gestión, promoción y construcción cuya furgoneta encontré en Vigo mientras daba un paseillo, y cuyo nombre he decidido omitir:


Por último, cabe destacar el curioso parecido entre el fondo por defecto de Ubuntu (a la derecha), y el que aparece en la promoción de reproductores de DVD de una conocida marca de foagrás (o foie gras para los puristas) a la izquierda. La foto la hice con mi viejo móvil, por eso tiene tan poca calidad.

¡Y yo que renegaba de los móviles con cámara de fotos!