# [HOWTO] Raton y Teclados Multimedia, ahora con menu OSD

## navegante

[HOWTO] Raton y Teclados Multimedia

El objetivo de este mini-howto es hacer funcionar estos dos perifericos que vienen en la mayoria de las pc modernas, ya que si tenemos el hardware, ¿por que no usarlo?, así que a lo nuestro:

I. RATON MULTIMEDIA

Al decir ratón multimedia me refiero desde los ratones con rueda, hasta los "novedosos" ratones con mas de tres botones (por lo regular logitech):

1. Primero editaremos nuestro archivo de configuracion de las X para agregar soporte para nuestro raton:

en caso de que tengamos xfree:

```
# nano -w /etc/X11/XF86Config
```

en caso de que tengamos xorg:

```
#nano -w /etc/X11/xorg.conf
```

ahí buscamos la seccion Input device y la dejamos así (agregandole las opciones en rojo):

en caso de tener tres botones y rueda:

Section "InputDevice"

    Identifier	"Mouse1"

    Driver	"mouse"

Option "Protocol"     "IMPS/2"

Option "Device"       "/dev/mouse"

Option "ZAxisMapping" "4 5"

EndSection

ó si tenemos mas de tres botones (izquierdo, derecho, central, lateral izquierdo, lateral derecho):

Section "InputDevice"

    Identifier	"Mouse1"

    Driver	"mouse"

Option "Protocol"     "ExplorerPS/2"

Option "Device"       "/dev/mouse"

Option "ZAxisMapping" "4 5 6 7"

EndSection

2. Ahora si has reiniciado las X, en caso de que tengas solo la rueda funcionara perfectamente y no hay que hacer nada mas, sin embargo si eres el afortunado poseedor de un raton con mas patas, notaras que el scroll lo haces con los laterales y no con la rueda, asi que para arreglar esto remapeamos el ratón así:

```
$ xmodmap -e "pointer = 1 2 3 6 7 4 5"
```

3. Ahora si tenías tu mouse en windows te daras cuenta que tus botones adicionales de poco sirven, solo en algunas ventanas (konqueror) se pueden usar para desplazarse horizontalmente, o en firefox se puede usar para pasr a la pagina anterior o la siguiente, en windows te dan un programita (driver) para poder asignarle la funcion que tu desees, obviamente para linux no hay version pero para eso tenemos un programita imwheel, así que:

```
# emerge imwheel
```

ahora lo configuraremos así:

```
$ nano -w ~/.imwheelrc
```

ahí agregamos lo siguiente, con esto le daremos una funcion, lo que hace este programa es reinterpretar las teclas del mouse como si fueran del teclado:

".*"

None,Left,Control_L|V

None,Right,Control_L|X

lo que esta en rojo es el boton al que se le da la funcion (lateral izquierdo o lateral derecho), y lo que esta en verde es la tecla o combinacion de teclas del teclado, en el ejemplo da la funcion de control izquierdo + v (copiar) y control izquierdo y x (cortar), el ".*" es para que funcione con cualquier ventana, si te interesa añadir algun atajo en un programa en particular haz algo como esto:

"mozilla*"

 None, Up,   Alt_L|Left

 None, Down, Alt_L|Right

"XTerm"

 None, Up,   Alt_L|Control_L|S

 None, Down, Alt_L|Control_L|T

# esto debe estar al final

".*"

 None, Up,   Alt_L|Control_L|P

 None, Down, Alt_L|Control_L|O

ahora lo ejecutamos así:

```
$ imwheel -k -b "67"
```

II. TECLADO MULTIMEDIA

Otro de esos novedosos aparatos es el teclado multimedia, es decir esos que tienen mas botones que los normales, tienen un dibujo de play, stop, subir volumen, lanzar navegador, etc..., para configurarlo procederemos así:

1. Instalamos un pequeño programa:

```
# emerge lineakd
```

2. Si quieres un menu OSD como el de la tele (o windows tambien), ese que sale con la barra de volumen, entonces necesitas emergerlo con la USE xosd:

```
# USE="xosd" emerge lineakd
```

3. Ahora pasamos a configurarlo, así (toma una libreta o un trozo de papel):

```
$ xev
```

Presiona una de esas teclas con dibujitos, ahora nos saldra algo así:

KeyRelease event, serial 30, synthetic NO, window 0x1c00001,

    root 0x48, subw 0x0, time 16203637, (-435,107), root:(253,492),

    state 0x10, keycode 33 (keysym 0x70, p), same_screen YES,

    XLookupString gives 1 bytes: (70) "p"

Checa en particular lo que esta en color rojo, y anotalo junto a la tecla que presionaste. Repite este paso con cada tecla hasta que las completes y tengas una tabla Tecla-Keycode. Ahora pasaremos a editar nuestro archivo de configuracion:

```
# nano -w /etc/lineakkb.def
```

ahí te vas al final del archivo, para tu comodidad copia una de las definiciones y cambia los datos relativos a tu teclado, te quedara algo así:

# Contributed by Navegante

[navegante]

brandname		= "Acteck"

	modelname		= "Office Keyboard 3000 XP (User Defined)"

	[KEYS]

		Mute		= 160

		VolumeDown	= 174

		VolumeUp	= 176

		Mail		= 236

		Home		= 178

		Play|Pause	= 162

		Stop		= 164

		Next		= 153

		Previous	= 144

		Capture		= 230

		Sleep		= 225

		WebBack		= 234

		WebForward	= 233

		WebRefresh	= 231

		WebSearch	= 229

	[END KEYS]

[END Office Keyboard 3000 XP]

# end User Defined Office Keyboard 3000 XP

en particular toma atención de lo que escribiste en rojo, es el nombre con el que identificara el programa la nueva definicion de teclado. Ahora pondremos a funcionar nuestro invento:

```
$ lineakd -l
```

esto te dará una lista de las definiciones disponibles, debes ver ahí la que acabas de hacer.

```
$ lineakd -c navegante
```

con esto crearas un archivo para relacionar tu definicion de teclado con las funciones que le quieras dar. Así pues editaremos el archivo que creo para darle esas funciones:

```
$ nano -w ~/.lineak/lineakd.conf
```

es tan facil como poner después del = el comando que quieres que se ejecute, en mi caso como los botones son para musica ejecuto el beep-media-player:

KeyboardType = USRmROBE

CdromDevice = /dev/cdrom

MixerDevice = /dev/mixer

Screensaver = _null_

Capture = 

Home = "firefox www.google.com.mx"

Mail = "sylpheed-claws"

Mute = EAK_MUTE

Next = "beep-media-player -f"

Play|Pause = "beep-media-player -t"

Previous = "beep-media-player -r"

Sleep = EAK_SCREEN_LOCK(GNOME)

Stop = "beep-media-player -s"

VolumeDown = EAK_VOLDOWN

VolumeUp = EAK_VOLUP

WebBack = 

WebForward = 

WebRefresh = 

WebSearch = 

III Configuración del menu OSD

Pues si haz llegado hasta aqui seguramente ya habras notado que lo tienes perfectamente instalado y funcionando, sin embargo aqui van algunas opciones que puedes querer usar:

Si deseas cambiarle el color al menu:

```
$ lineakd -o RRGGBB &
```

Donde RRGGBB es el codigo de color que desees (en hexa), existen varias formas de obtener este codigo una es buscando en la web alguna tabla como esta o más facil abrir The Gimp y buscar en el selector de colores el que mas te agrade, por la parte de abajo a la derecha esta el codigo.

Cambiar la posición del menu OSD

Si bien es cierto esta en muy buena posición por default tal vez quieras ponerlo arriba, esto se hace así:

```
 $ lineakd -p [un valor] &
```

Donde [un valor] puede ser:

a) Top, si lo quieres arriba

b) Middle, si lo quieres enmedio, y

c) Bottom, si lo quieres abajo

Alineacion del menu OSD

Pedes alienearlo vertical u horizontalmente para lo primero:

```
$ lineakd -a [un valor] & 
```

Donde [un valor] puede ser:

a) left, si lo quieres en la izquierda

b) center, si lo quieres centrado, y

c) right, si lo quieres a la derecha.

Cambiar el tiempo

Si te molesta que tarde tanto o tan poco en quitarse despues de haber presionado el boton, puees alterar el tiempo que tarda en esconderse:

```
$ lineakd -t # &
```

Donde # es el tiempo en segundos que deses que tarde.

Las opciones anteriores se pueden combinar  como habrás deducido, por ejemplo: lo quieres de color rojo, arriba, centrado y que tarde 10 segundos en desaparecer:

```
$lineakd -o FF0000 -p top -a center -t 10 &
```

continuamos despues para refinarlo y añadir algunas cosas...

----------

## g0su

Empiezo a pensar que somos los unicos que estamos todos los dias a las 3 de la mañana leyendo esto. Yo por fin a falta del flash y el java ya tengo la gentoo con amd64 perfecta y rulando   :Rolling Eyes:  .

Un saludo y buena guia(por lo menos lo que ahi xD)

----------

## Membris

Bastante completa la guía, qué bien viene el lineakd eh?

Yo hice una guía sobre LinEAK hace ya bastante tiempo que igual os puede servir como complemento a esta (http://giingo.org/lineak.php).

Buena idea la de combinar las guías de ratón y teclado  :Wink: 

----------

## g0su

Hola buenas, yo tengo problemas con el raton:

Xorg 6.8:[/n]

```
Section "InputDevice"

    Identifier  "Mouse1"

    Driver      "mouse"

    Option "CorePointer"

    Option "Device" "/dev/gpmdata"

    Option "Protocol" "ExplorerPS/2" #"IMPS/2"

    Option "Device" "/dev/psaux"

    Option "ZAxisMapping" "4 5 6 7" #"4 5"

EndSection
```

[b]Imwheel:

```
moxilo@DarkTemplar ~ $ cat .imwheelrc

"firefox*"

None, Up, Alt_L|Left

None, Down, Alt_L|Right

".*"

None, Up, Alt_L|Control_L|P

None, Down, Alt_L|Control_L|O

moxilo@DarkTemplar ~ $  imwheel -k -b "6 7"

imwheel: ERROR: buttons: #1:   is not a number!

moxilo@DarkTemplar ~ $  
```

Nota: en el caso de mi raton no he hecho el 

$xmodmap -e "pointer = 1 2 3 6 7 4 5" porque sino se raya el raton... a mi me funciona perfectamente sin cambiar el orden. El raton es un logitech mx700.

Un saludo

----------

## navegante

Actualización: Uso del menu OSD, en unos días vuelvo a actualizar con el media detect de lineakd, solo que ahora esta en inesttable, haber si tambien agrego algunas screenshoots del menu OSD e incluyo una sección para las interfaces graficas de lineakd.

P.D. ¿g0su sigues con el problema?

----------

## Eleazar Anzola

Bueeeeeee, siguiendo el tema este (Uno siempre con ganas de jorobar y poner más mono el Gentooo je je je je je je ) me ha gustado esto de poner a funcionar las teclas multimedia y web, pero me surgen dudas.

1.- Uso kde + alsa + kmix, como le hago el mute, volumen etc y que lo tomen todas las aplicaciones y mplayer para media como le digo avanzar/retroceder - siguiente/anterior y que esto tambien puedan usarlo xmms, kboodle etc.

2.- Aun no me queda claro como hacer lo de la webkey <- -> Reload, Favoritos, Serach, etc. con el konqueror

pego mi lineakd.conf

```
KeyboardType = eleazar

CdromDevice = /dev/cdrom

MixerDevice = /dev/mixer

Screensaver = _null_

XOSD_font = -adobe-helvetica-bold-r-normal-*-*-240-*-*-p-*-*-*

XOSD_color = 0aff00

XOSD_timeout = 3

XOSD_pos = bottom

XOSD_align = center

XOSD_hoffset = 0

XOSD_voffset = 50

XOSD_soffset = 1

Favorites =

Home = kfmclient openProfile webbrowsing

Mail = evolution-2.0

Media = gmplayer

Mute =EAK_MUTE

Next =

Play|Pause =

Power =

Previous =

Refresh =

Search =

Sleep =EAK_SLEEP

Stop =

VolumeDown =EAK_VOLDOWN

VolumeUp =EAK_VOLUP

WebBack =

WebForward =

WebStop =
```

PD: je je me he percatado de que el mute subir volumen y bajar no rulan  :Razz:  como esta pueto en el conf je je je je

----------

## Membris

Basta con silenciar el pcm, al menos con la mayoría de tarjetas de sonido, para ello creo que el comando era "amixer set pcm 0" o similar, ahora no recuerdo  :Wink: 

----------

## navegante

Creo que a lo que te refieres es a que con, por ejemplo, la tecla Play si estas en xmms reproduzaca, pero si estas en Noatun tambien, o en mplayer igual. Si es eso a lo que te refieres aún no esta bien desarrollado, con la version ~x86 que esta en el portage 0.8.2 creo se encuentra la opción MediaDetect, con ella podrías hacer lo que quieres.

Sobre el Mute:

```
KMIX_MUTE(X)
```

Con eso puedes silenciar el kmix de kde, donde X es un mixer, para saber cuales tienes ejecuta: dcop kmix

Para lo de Konqueror:

```
KONQUEROR_BACK

KONQUEROR_FORWARD 

KONQUEROR_HOME

KONQUEROR_STOP

KONQUEROR_REFRESH or KONQUEROR_RELOAD

KONQUEROR_NEWTAB

KONQUEROR_NEXTTAB

KONQUEROR_PREVTAB

KONQUEROR_BOOKMARK
```

Cuando saquen una nueva versión con mas soporte de media detect, amplio el howto. Saludos.

----------

## Eleazar Anzola

he echo lo que indicas pero nanai nanai

```
dcop kmix

qt

KDebug

MainApplication-Interface

Mixer0

kmix

kmix-mainwindow#1

```

 Con respecto al konqueror no funciona esa configuración, lo que he logrado es hacer que en la tecla de home abra konqueror indicandolo talcual konqueror.

Seguiremos intentendo a ver que se logra (Es que me parece absurdo tener las teclas y no poder usarlas ó por lo menos tenerlas bien configuradas)

----------

## gringo

pues ahora que me doy cuen, tampoco me funciona la ruedecita del volúmen con la 0.8.2 ...

 *Quote:*   

> Basta con silenciar el pcm

 

ésto lo soluciona ????

gracias y saluetes

----------

## navegante

Pues la verdad no se porque no funciona, pero:

¿Que versión de kde usas?

Probaste a ejecutarlo en modo verbose, si es así que te marca al pulsar la tecla.

¿Que versión de lineakd usas?

Saludos.

----------

## Eleazar Anzola

Versión Kde : kde-base/kde-3.3.1

Versión Lineak : x11-misc/lineakd-0.7.2

Configure tecla por tecla tal como lo dice el howto, pero las opciones del konqueror al parecer no son las que pones.

----------

## t3n4k

Excelente guía  :Wink: 

(y excelente este lineakd ...  :Razz: )

Era una de las cosillas que me faltava por tener.

PD: por cierto, tengo un teclado que ya está en el fichero de lineakd donde hay unos cuantos, y como curiosidad, hay unas teclas que xev no me las detectaba, simplemente no imprimía nada, algún otro programa para mirar los códigos de las teclas?

Saludos

----------

## navegante

mmm.. si no te detecta esas teclas tal vez sea por como lo definiste en las X, a mi me pasa que si lo defino como 105 me da unos codes y con 103 otros (es que la verdad no se de cuantas es), por otro lado prueba o correrlo en modo verbose y checa la salida, creo que te dice el keycode tambien. Saludos.

----------

## torio

tengo un teclado compaq, figura en xorg y en la lista de lineakd como Internet Keyboard (18 keys pero xorg no las muestra a todas y por consiguiente el lineakd ni se entera que las presiono

mi problema es como hacer que el servidor x las reconozca...????

otra: probe con lineakconfig y por mas que se este ejecutando el lineakd me dice que no lo puede encontrar..., 

Salu2 y muy util el tutorial.....,

----------

## LithiumEye

Yo no es por picar, pero a ver cuando "alguien" se hace una guia para configurar controles remotos a  traves de infrarojos con el lirc con el kernel 2.6.x jejejeje

----------

## t3n4k

 *navegante wrote:*   

>  por otro lado prueba o correrlo en modo verbose y checa la salida, creo que te dice el keycode tambien.

 

En modo verbose el xev? No he encontrado tal opción en el manual...

O te refieres a otra cosa?

Saludos

----------

## torio

me parece, creo, que se refiere al lineakd, que en modo verbose te dice tambien el codigo de la tecla que presionaste, incluso te dice para que funcion esta definida (no la que tiene asignada, no se si me explico)

Salu2

----------

## gringo

he mirao un poco y con la 0.7.2 va todo de perlas; con la 0.8.x no me funciona la rueda del volúmen. Mirando desde consola parece que el programa no entiende los comandos EAK_loquesea...

saluetes

----------

## t3n4k

 *torio wrote:*   

> me parece, creo, que se refiere al lineakd, que en modo verbose te dice tambien el codigo de la tecla que presionaste, incluso te dice para que funcion esta definida (no la que tiene asignada, no se si me explico)
> 
> 

 

Si, te has explicado  :Razz: 

/* Luego lo miraré, que estoy en el curro  :Sad:  */

Ya estoy en casa.

arrancando lineakd con -v hace el modo verbose, sí. Pero no me detecta las teclas que no me detectaba tampoco xev :_(

Alguna idea?

XkbModel en xorg.conf vale pc105

es un Logitech Acces keyboard

Saludos

----------

## torio

ideas por el momento no,  tengo el mismo problema y eso que mi teclado figura tanto en la lista de teclados de xorg como en la de lineakd, asi que por ahora tengo definidas las qe funcionan, ni bien tenga algo lo pongo...por el momento sigo probando distintas configuraciones de teclado a saber ponerlo como pc 105 teclas 103 teclas, nnnn teclas pero no creo que ninguna me solucione los problemas...

Salu2

----------

## torio

t3n4k te podes fijar con dmesg

presiona alguna tecla y despues "dmesg" debes ver al final de lo que muestra algo como esto:

/*************************

atkbd.c: Unknown key pressed (translated set 2, code 0x9f on isa0060/serio0).

atkbd.c: Use 'setkeycodes e01f <keycode>' to make it known.

atkbd.c: Unknown key released (translated set 2, code 0x9f on isa0060/serio0).

atkbd.c: Use 'setkeycodes e01f <keycode>' to make it known.

/*************************

o aca si es que figura tu teclado

http://www.win.tue.nl/~aeb/linux/kbd/scancodes-5.html

despues con setkeycodes xxx <keycode> le asignas el numero correspondiente (el mismo que tenes en la def de tu teclado en el archivo "/etc/lineakkb.def" )

haces lo mismo para cada tecla y todo deberia estar en orden....pero:

1- a mi me funciono en parte si  y en parte no, para resumir el mapeo no lo hacia muy bien 146

lo tomaba como 152 ??? por que no se..  :Question:   :Question:   :Question: 

2- no se como automatizar esto para que lo haga al inicio antes de que se carge el lineakd

(soy nuevo en esto asi que.......)

Salu2

----------

## navegante

Vuelve a probar con lineakd en modo verbose pero cambia el modelo de teclado, si aparecen algunas va por ahí el camino, si no tendras que probar con dumpkeys y setkeycodes, si revisas un poco más abajo alguien acaba de revivir un pequeño howto sobre eso, checalo si tienes dudas pues preguntas aqui. Por otro lado tu teclado es por ps/2 o usb porque en usb hay algunos problemas pero con el driver correspondiente. Saludos.

----------

## Top94

Hola a todos, a mi me da un problema diferente:

```
# xev

Xlib: connection to ":0.0" refused by server

Xlib: No protocol specified

xev:  unable to open display ':0.0'
```

Tengo XOrg y KDE 3.3 y mi teclado es un Logitech Cordless

Gracias

----------

## navegante

El problema es que intentas utilizar xevc como root, hazlo como usuario normal y te funcionará, aunque puedes probar con xhost +, pero mejor hazlo en tu usuario normal. Saludos.

----------

## artic

Bueno en el caso del raton el xorg.config lo tengo de manera distinta por q de ponerlo de otro modo no funciona en mi caso :

```

Section "InputDevice"

   Identifier  "Mouse1"

   Driver      "mouse"

   Option      "Protocol"     "ExplorerPS/2"

   Option      "Device"       "/dev/mouse"

   Option      "Buttons"      "7"

   Option      "ZAxisMapping" "6 7"

EndSection

```

estaria bien tb hacer una referencia del manual a : http://gentoo-wiki.com/HOWTO_Mouse_Nav_Buttons#Introduction

pues estan haciendo un magnifico trabajo ,ya de por si la pagina oficial ofrece buenos howto ellos los hacen muy interesantes tb.

Salu2

----------

## artic

Continuo ya puestos:

```

$ lineakd

Segmentation fault

```

como root no me da ese error pero hago un :

```

lineakd -l

```

 y no me lista nada y el /etc existe o sea q parece no trabajar bien ,despues de editar el /etc con mi teclado hago un :

```

$ lineakd -c artic

NOTE: if '-f', '-e','u', '-d', or '-m' parameters are used in conjunction with '-c', please

      make sure you specify those BEFORE '-c' !

```

incrfeible respuesta esta definitivamente roto,pq el teclado artic existe de echo crea la config en mi home y tengo los keycodes correctos.

Pienso q es problema en amd64 las versiones anteriores no compilan en el y la 0.8.2 va como un culo.

Por lo q he visto en su web tiene buena pinta pero por lo q veo habra q esperar ,echenos la culpa a los 64 o al gcc 3.4.

Salu2

----------

## Top94

Muchas Gracias navegante justo lo que digiste.

Ya lo tengo todo configurado y funcionando. Solo me falta la duda del novato  :Laughing: 

en que archivo de inicio lo añado para que me arranque automaticamente despues de entrar en las X?

Gracias por adelantado

----------

## artic

Pues en el .xinitrc de tu home,metelo ahi y se te ejecutara automaticamente.

Salu2

----------

## navegante

Si no puedes configurarlo puedes hacer un script muy senciilo para esoo y ponerlo en la carpeta desktop de tu home, ya sea que uses xfce, kde, o gnome, si siguen las normas de freedesktop lo hará. Otra opción es la carpeta .kde/Autostart para kde o gurdarlo para tu sesión en gnome. Saludos.

----------

## Top94

Perfecto, muchas gracias, probare las dos opciones  :Smile: 

Un Saludo

----------

## Chewieip

Pues debo ser muy burro pero no se cargar de inicio el lineakd. 

Se que se ha de poner en el .xinitrc pero no me carga. 

Ha de ir así? 

```
 wmaker

lineakd

```

Lo he probado, y también con un exec delante y no funciona.

----------

## el_Salmon

Tengo la misma duda que Chewieip. He intentado muchas veces utilizar el lineakd, pero no entiendo por qué no se puede lanzar como demonio del sistema o por qué no está integrado en el panel de control de KDE o Gnome

----------

## Eleazar Anzola

 *Chewieip wrote:*   

> Pues debo ser muy burro pero no se cargar de inicio el lineakd. 
> 
> Se que se ha de poner en el .xinitrc pero no me carga. 
> 
> Ha de ir así? 
> ...

 

Ujummm, el problema parece ser que al ejecutar el wmker se queda alli hasta que finalizas la sesion y luego se carga el lineakd, mi consejo es invertirlos, carga primero el lineakd y despues el wmkaer

```
lineakd

wmaker

```

----------

## AnFe

¿Por qué siempre se olvida la gente de los operadores?

```
lineakd &

wmaker
```

Un saludo

----------

## gringo

para artic -> esto seguro que te interesa  https://bugs.gentoo.org/show_bug.cgi?id=78959

saluetes  :Wink: 

----------

