Cosas mías

November 29, 2006

Desarrollar bajo Linux y no morir en el intento (II). Esas teclas multimedia que no funcionan

Filed under: Programación, Linux

Otra tarea pendiente y que he solucionado a medias consiste en mi Microsoft Wireless Natural Multimedia Keyboard (sí, esos partidos) y su ratón correspondiente. Para decirlo con pocas palabras, simplemente hay que decir que bajo Linux no funciona.

No funciona conectado al puerto PS/2 porque genera una serie de texto basura como consecuencia de lo que yo considero es un bug del núcleo 2.6, pues no contempla las 255 teclas, pero no tengo ganas de meterme en líos. Lo curioso es que conectado mediante USB no presenta ese problema.

Este teclado tiene varias teclas completamente muertas, es decir, que el kernel de linux es incapaz de ver, como la de Messenger, la de Cerrar Sesión o la de Suspender. Pero hay otras que sí que ve pero el sistema se encuentra incapaz de remapear convenientemente.

Y son esas las que vamos a forzar a que funcionen y tengan un cometido. No es necesario decirle a las X qué modelo de teclado tenemos, pero si se lo decimos, algunas de esas teclas ya estarán auto asignadas. Por ello, en mi xorg.conf tengo la línea

Option “XkbModel” “microsoft”

El siguiente paso es localizar los keycodes de dichas teclas. Para ello ejecutamos en una consola el programa “xev”. Si no lo tenemos, lo instalamos mediante

emerge xev

Mientras este programa tenga el foco, nos capturará las teclas y nos dará su código de tecla. Entre todo el texto  aparecerá algo como

keycode 240

Eso es lo que necesitamos. El código 240 se corresponde con la tecla de “Mis Documentos” en mi teclado, pero sin embargo la de “Mis Imágenes” no genera ningún código, por lo que no podremos usarla para nada.

Hace tiempo estuve mirando el código fuente del núcleo de linux respecto a este tema, y vi alguna cosa rara pero no me atreví a tocar nada. Lo curioso del tema es que con un núcleo 2.4 funcionan todas, pero con uno 2.6 no, así que me reitero en lo del bug.

El siguiente paso es buscar teclas no asignadas para remapear. Para ello abrimos el fichero /usr/include/X11/keysymdef.h y allí tenemos todos los valores disponibles. En mi caso, y dado que mi teclado sólo llega al F12, he elegido remapear de la F35 hacia abajo.

Remapear una tecla en linux es sencillo: ejecutamos

xmodmap -e ‘keycode <code>=<keyname>’

para asignar un nombre a una tecla que no lo tiene. Por ello, si ejecutamos

xmodmap -e ‘keycode 240=F35′

estaremos diciendo a Linux que la tecla “Mis Documentos” es F35. Y F35 es una tecla válida para asignar allá donde queramos. 

Y ahora viene el truco del almendruco, al menos para el KDE. Si tuviéramos que ejecutar esa línea de comandos para cada tecla y cada vez que entremos en el KDE, sería un absurdo, por lo que creamos un fichero de texto con permisos de ejecución con el nombre que queramos y lo situamos en

.kde/Autostart

y dentro de ese fichero colocamos todas nuestras asignaciones, más o menos así:

#! /bin/sh
xmodmap -e ‘keycode 130=F35′
xmodmap -e ‘keycode 129=F34′

De este modo, cada vez que iniciemos KDE se nos remapearán esas teclas y podremos usarlas dentro del entorno. Evidentemente, hay más lugares en donde colocar un script para que se autolance, pero en mi caso me vale así.

Otra cosa que debería hacer es reasignar los dos botones laterales del ratón -lo ideal es que se mapearan en combinaciones de teclas-, pero aparte de reordenarlos y de asignar los de la rueda, no he visto nada… Así que si alguien sabe cómo hacerlo, que por favor me lo diga… 

 

Comments »

The URI to TrackBack this entry is: http://rfog.blogsome.com/2006/11/29/desarrollar-bajo-linux-y-no-morir-en-el-intento-ii-esas-teclas-multimedia-que-no-funcionan/trackback/

No comments yet.

RSS feed for comments on this post.

Leave a comment

Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>



Anti-spam measure: please retype the above text into the box provided.

Get free blog up and running in minutes with Blogsome
Theme designed by Gary Rogers