2.2.07

Emesene!


Buenas!
para quienes no lo conozcan, emesene es un proyecto en el que me encuentro trabajando, el cual presenta una alternativa libre y sencilla de implementacion de un cliente compatible con MSNP13, o en castellano, el protocolo sobre el que se basa Windows Live Messenger (c)

28.8.06

Como teclas Multimedia linux

Holas!

esta es la traduccion de un HOWTO sacado del wiki de Gentoo (http://gentoo-wiki.com/HOWTO_Use_Multimedia_Keys), que a mi me resulto muy util en su momento para bindear las teclas multimedia a acciones de mi amarok, por ejemplo.
Bueno aca va:
ACLARACIÓN:
esta traduccion solo cubre hasta xbindkeys, la razon: yo mapee todas las teclas multimedia asi, y despues les asigne accuiones con los atajos que brinda cada programa de kde manualmente

=====================================================================
Como Usar Teclas Multimedia en Linux


1. INTRODUCCIÓN:

Cada vez que presionamos una tecla, el Kernel genera un "raw scancode", el cual puede ser mapeado a un "keycode" o codigo de tecla. Mientras que esto es lo que sucede a nivel Kernel, X
posee una forma diferente de mapear teclas. Lee la tabla de codigos del Kernel al iniciarse y la lleva a su propia tabla, de donde se mapea cada keycode con un "keysim", el cual es una cadena que representa a la accion que realiza dicha tecla.

2. Determinando los Keycodes

Hacerlo es bastante simple, basta con ejecutar el programa xev desde una consola (no necesariamente la de root), en un xterm (konsole, terminal, etc.).
Si no lo poseen, o sea, si les sale un erorr de program not found, es porque poseen un xorg. modular, simplemente instalen el paquete para su distro con su herramienta favorita.
Una vez que lo tiene, ejecutenlo, y veran aparecer una ventanita chica, presionen una de las teclas multimedia de su teclado, y obtendran algo parecido a esto:

KeyRelease event, serial 31, synthetic NO, window 0x2800001,
root 0x7d, subw 0x0, time 2792224, (-22,86), root:(565,101),
state 0x10, keycode 160, same_screen YES,
XLookupString gives 0 bytes:

El valor "keycode" es el importante, de entre toda esa maraña de palabras. En este ejemplo, es el nro. 160, conviene anotar en algun lado una relacióin entre la tecla presionada y el keycode que genera, esto ahorrara mucho trabajo mas adelante.
NOTA: presionen todas las teclas, para comprobar que sean reconocidas, si alguna no lo es, por favor, vean mas adelante "¿Qué pasa si no me reconoce nada?")
Si se les hace mucho lio, o son vagos ;-) , pueden ejecutar este pequeño script en lugar de xev:

#/bin/bash
xev | grep keycode | sed s/"^.*keycode *\([0-9]\+\).*$"/"keycode \1 = "/ | uniq
Con esto, presionen las teclas en orden y luego cierren la ventana de xev (no el terminal!), la salida se vera entonces en este último y es algo parecido a esto:

keycode 36 =
keycode 144 =
keycode 162 =
keycode 164 =
2.1 ¿Qué pasa si no me reconoce nada?

Si por alguna razon no se les reconoce alguna tecla, salgan de xev, presionen esa tecla y escriban dmesg. Lo último escrito deberia ser algo como esto:

atkbd.c: Unknown key released (translated set 2, code 0x96 on isa0060/serio0).
atkbd.c: Use 'setkeycodes e016 ' to make it known.


Esto quiere decir que el kernel no tiene un keycode mapeado a ese scancode específico. Tendrás que añadirlo manualmente, para elloagrega una linea al archivo /etc/init.d/local.start (o el equivalente en tu distro), que contenga lo siguiente:

setkeycodes e008 136
setkeycodes e016 150
... Y así con el resto ...

Donde el 1er. número (e008) es lo que viste en dmesg, el 2do. (136) es un keycode sin uso en tu kernel. Generalmente podes obtener un buen numero tomando los dos ultmos digitos del 1er. nro., pasándolos de hexadecimal a decimal y sumándole 128
Despues de adaptar correctamente los keymaps, reinicia y ejecuta xev de nuev, probando si las teclas se comportan como es debido.

3. Configurando Xmodmap

All you need to do now is to create a file containing mappings for keycodes to keysyms. Create a file called .Xmodmap in your $HOME directory.
Lo que necesitas ahora es crear un archivo que contenga mapeos de keycodes a keysims. Para esto crea un archivo llamado .Xmodmap (si no funciona, prueba con minúsculas) en tu $HOME (normalmente /home/NombreDeUsuario) que contenga lo siguiente:

keycode 222 = XF86PowerOff
keycode 223 = XF86Sleep
keycode 236 = XF86Mail
keycode 229 = XF86Search
keycode 230 = XF86Favorites
keycode 178 = XF86WWW

keycode 162 = XF86AudioPlay
keycode 164 = XF86AudioStop
keycode 160 = XF86AudioMute
keycode 144 = XF86AudioPrev
keycode 153 = XF86AudioNext
keycode 176 = XF86AudioRaiseVolume
keycode 174 = XF86AudioLowerVolume

o lo que quieras que funcione de tu teclado.
La sintaxis del archivo es la siguiente:


keycode 178
Este es el que encontramos con xev (o definimos en el kernel)

XF86WWW
Esta es la funcion que queremos que esa tecla tenga.

Ahora solo falta que asignemos esas teclas a acciones especifucas de nuestro escritorio, y Listo!!

Saludos a Todos!!