Reprogramar teclas

Spanish Forum

Moderator: JCSenar

Post Reply
RickieES
Level 1
Level 1
Posts: 17
Joined: Wed Aug 02, 2017 3:34 am

Reprogramar teclas

Post by RickieES » Sat Sep 29, 2018 8:34 am

Saludos:

Compré un portátil Lenovo V330 15IKB (8GB de RAM, 1TB de disco duro e Intel Core i5-8250U) hace unos meses, y he encontrado un par de problemas de usabilidad que me resultan tan graves que, junto a la falta de tiempo suficiente, han provocado que siga teniendo el portátil en su caja. Comienzo por el primero.

El portátil tiene un teclado con sección de teclado numérico. Sobre el bloque normal hay cuatro teclas, igual que en el Acer que pretendía sustituir. La diferencia es que, en el Acer, la función principal de las teclas es [Inicio], [Re Pág.], [Av. Pág.] y [Fin], y como función alternativa con la tecla modificadora [Fn] típica de los portátiles, [Play/Pause], [Stop], [Rewind] y [Fast Forward] como funciones multimedia.

En cambio, en el Lenovo, las mismas teclas físicas tienen como función principal (y única) las funciones multimedia. Las teclas de edición que comento arriba están asignadas, mediante la tecla [Fn], a las teclas del cursor. Como comprenderéis, eso hace que utilizar combinaciones de teclas típicas de la edición de texto, como ir al principio o al final del documento ([Ctrl]+[Inicio], [Ctrl]+[Fin]), cambiar entre pestañas ([Ctrl]+[Re. Pág.], [Ctrl]+[Av. Pág.]) y otras funciones similares sea realmente incómodo.

He buscado si existe alguna distribución de teclado que haga funcionar esas teclas como pretendo, pero no he encontrado ninguna de las que he probado. También he buscado algún manual "Cómo" sobre cómo reprogramar la funcionalidad de las teclas, pero lo que he encontrado, repartido entre diferentes páginas, indica que se debe comenzar por identificar el código que devuelve la tecla al pulsarla, y al menos una de las teclas no parece devolver ningún valor (perdonad que escriba sin citar referencias, pero es que realmente tengo guardado el portátil nuevo en su caja, y la búsqueda sobre documentos las hice con él sobre la marcha.

En este momento, la pregunta es solo si conocéis que exista realmente el documento How-To de reprogramación de teclas. Yo juraría haber leído alguno hace muchos años (hace ya más de 20 años que uso Linux), pero no he conseguido encontrarlo. Si no, y creéis que podemos encontrar otra solución, sacaré el portátil de la caja y continuaré desde allí. :)

PD.: ya sé que estas cosas van por barrios, pero lamento profundamente haber comprado el Lenovo en lugar del Acer (mis dos portátiles hasta ahora han sido de esta marca) que tenía prácticamente las mismas características (salvo el DVD-RW) y era bastante más barato. Además de este problema de las teclas, gravísimo para mí que uso mucho el teclado, he encontrado otros problemas de usabilidad menores, desde un touchpad sin sección lateral para emular la rueda del ratón hasta la absurdez de no poder acceder a la BIOS si no es introduciendo la punta de un clip en un lateral.
Last edited by RickieES on Sat Dec 01, 2018 7:29 am, edited 1 time in total.

User avatar
JOPETA
Level 13
Level 13
Posts: 4969
Joined: Thu Nov 20, 2014 6:10 am
Location: En un lugar de cuyo nombre no quiero acordarme

Re: Reprogramar teclas

Post by JOPETA » Sat Sep 29, 2018 10:42 am

Espero que esto te sirva (parece un poco lio la verdad pero tiene una lista de referencias al final) Remapear teclas en Ubuntu 14.04 a 18.04 (cambiar teclas por otras)

Podrás encontrar mas información en la red o foros, menos "ilustrada" y con otras alternativas por ejemplo a la hora de guardar la reasignación de las teclas sin tener que recurrir crear una distribución del teclado como esta. Cuestión de probar e ir tirando del hilo.
Ni cola de león ni cabeza de ratón, prefiero ser diente de ajo.( J. Krahe)

RickieES
Level 1
Level 1
Posts: 17
Joined: Wed Aug 02, 2017 3:34 am

Re: Reprogramar teclas

Post by RickieES » Sat Dec 01, 2018 7:41 am

Buenas:

Entre medias de tu respuesta y esta he estado de oposiciones y he tardado mucho en sacar tiempo para hacer las pruebas. Añadamos que mi mensaje lo escribí a finales de septiembre, pero el ordenador lo compré a mediados de julio, y ya podéis haceros una idea de lo contento que me tiene el tema. :evil:

Estuve siguiendo los tres enlaces en mi Linux Mint 19, pero me fallaba uno de los primeros pasos. Cuando yo ejecutaba xev y pulsaba una de las teclas que quería reasignar, lo que obtenía era esto:

Code: Select all

FocusOut event, serial 38, synthetic NO, window 0x4600001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 38, synthetic NO, window 0x4600001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 38, synthetic NO, window 0x0,
    keys:  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

FocusOut event, serial 38, synthetic NO, window 0x4600001,
    mode NotifyNormal, detail NotifyNonlinear
Como se ve, esto impide averiguar el keycode ni su nombre simbólico y, a partir de ahí, ya no podía seguir el tutorial.

Ya había empezado a mirar otros ordenadores, comenzando por su teclado, claro (y he de decir que el único que tiene una disposición tan absurda es Lenovo; Acer, HP y, con un pequeño interrogante, Asus, tienen esas cuatro teclas asignadas a Inicio, RePág, AvPág y Fin).

Pero de pronto recordé que, en mis pruebas desesperadas, había podido asignar los eventos multimedia a esas teclas a través de Preferencias -> Combinaciones de teclas. Si en algún momento se estaba generando un evento que el servidor X y Mate detectaban, de alguna forma tendría que poder encontrarlo.

Así que me puse a buscar precisamente por "xev KeymapNotify" y he encontrado una página que tiene más información. En la respuesta de esa página llamada xev should work hay un apartado llamado An easy way, if know the key name. En él se explica un método alternativo para encontrar el keycode: escribir xmodmap -pk | grep -i XF86Audio | less. Busco por XF86Audio porque sé que, actualmente, las teclas están asociadas a esos eventos XF86. También sé que Play/Pause es XF86AudioPlay, Stop es XF86AudioStop, Prev. Track es XF86AudioPrev y Next Track es XF86AudioNext.

Una vez localizadas las teclas que, en mi caso, eran 171 a 174, intenté seguir el primer tutorial que me indicabas. Pero, a pesar de completarlo, las teclas siguieron sin funcionar. Asimismo, xev seguía sin mostrar eventos al pulsar las teclas.

En la misma página de StackExchange hay, más abajo, otra respuesta, que explica por qué pueden desaparecer eventos de teclado en xev y cómo conseguir reasignarlos con showkeys -s y setkeycodes. Para que funcione bien, hay que arrancar en modo monousuario y en consola. Yo utilice el parámetro single al arrancar desde Grub.

En mi caso, las teclas en cuestión devuelven códigos hexadecimales compuestos en la forma e0 xx: e022, e024, e010 y e019. Luego, como dice el tutorial, busqué usando xmodmap -pke | less códigos de tecla no usados, y los reasigné con setkeycodes. Para que el cambio sea permanente, hay que hacer que se ejecute al arrancar, así que metí las órdenes en un script llamado /etc/inet.d/keyboard-reprogram.sh con este contenido:

Code: Select all

#!/bin/sh
### BEGIN INIT INFO
# Provides:          keyboard-reprogram.sh
# Required-Start:    mountkernfs
# Required-Stop:
# X-Start-Before:    checkroot
# Default-Start:     3
# Default-Stop:
# X-Interactive:     true
# Short-Description: Reprogram Lenovo multimedia keys
# Description:       Set the console keyboard as early as possible
#                    so during the file systems checks the administrator
#                    can interact.  At this stage of the boot process
#                    only the ASCII symbols are supported.
### END INIT INFO

/usr/sbin/setkeycodes e022 89
/usr/sbin/setkeycodes e024 95
/usr/sbin/setkeycodes e010 112
/usr/sbin/setkeycodes e019 124
Por si dudáis (a mí me pasó), el primer parámetro de setkeycodes es un código hexadecimal que puede ser de uno o, como en mi caso, dos bytes y se escribe sin prefijo "0x". El segundo es un código decimal.

Tras arrancar, ya se obtienen códigos al ejecutar el primer paso del primer tutorial que me dijiste, que es xev... solo que no consigo los códigos que puse, sino 171, 172, 173 y 174. Aun así, he continuado el tutorial localizando los nombres de tecla para xmodmap (debido a los códigos que obtengo con xev, los nombre de tecla que uso son I171, I172, etc., aunque previamente probé también con los que corresponderían a los códigos que yo puse) y añadiendo entradas en el mapa de teclado /usr/share/X11/xkb/symbols/es.

Sin embargo, no me funcionaba sin más, y pensé que, como a pesar de la reasignación de setkeycodes, el código de tecla devuelto era otro diferente, como si se estuviera pulsando la tecla junto con una tecla modificadora, comencé a añadir la función Home con diferentes estados, para ver qué impacto suponía. He llegado a un punto en el que tengo esta línea en es:

Code: Select all

    key <I172>  { [  Home, Home, Home, Home ]   };
Y he conseguido que, pulsando la combinación [AltGr]+[|>] actúe como Home.

Solo que para este viaje no necesitaba esas alforjas. :( Si tengo que seguir pulsando dos teclas para generar una pulsación de teclado Home, no gano nada con respecto a usar [Fn]+[<-]. Aquí me he vuelto a atascar. Ahora lo que pienso es que, quizá, la reprogramación de funciones de las teclas no tendría que ser necesario hacerla en X, sino a un nivel más bajo del kernel, para que incluso si arranco en modo texto, las teclas funcionen correctamente y así se trasladen al entorno gráfico. Otra cosa que tengo que investigar es modificar directamente el mapa de teclado us de las X, para ver si ahí hay algo con lo que trastear.

Bueno, aunque acepto más consejos, este mensaje es más que nada para contar lo que he hecho hasta ahora, por si le sirve a alguien. Yo seguiré investigando y, si lo encuentro, lo publico aquí. Esto es casi una cuestión de orgullo personal, aunque también digo que, como bajen un poco más los portátiles con las mismas características, me voy a tragar mi orgullo. :)

A todo esto, durante mi periplo me he dado cuenta de que, además, al teclado le falta otra tecla, la que corresponde al menú que se lanza con el botón derecho del ratón. :(

User avatar
JOPETA
Level 13
Level 13
Posts: 4969
Joined: Thu Nov 20, 2014 6:10 am
Location: En un lugar de cuyo nombre no quiero acordarme

Re: Reprogramar teclas

Post by JOPETA » Sat Dec 01, 2018 7:54 am

La verdad lamento no poderte ser de ayuda. :( En ralación a esto
RickieES wrote:
Sat Dec 01, 2018 7:41 am
A todo esto, durante mi periplo me he dado cuenta de que, además, al teclado le falta otra tecla, la que corresponde al menú que se lanza con el botón derecho del ratón. :(
En mi caso esa tecla es la del símbolo de Windows, es lo que puedo decirte. :roll:
Ni cola de león ni cabeza de ratón, prefiero ser diente de ajo.( J. Krahe)

RickieES
Level 1
Level 1
Posts: 17
Joined: Wed Aug 02, 2017 3:34 am

Re: Reprogramar teclas

Post by RickieES » Mon Dec 03, 2018 3:30 pm

JOPETA wrote:
Sat Dec 01, 2018 7:54 am
La verdad lamento no poderte ser de ayuda. :( En ralación a esto
RickieES wrote:
Sat Dec 01, 2018 7:41 am
A todo esto, durante mi periplo me he dado cuenta de que, además, al teclado le falta otra tecla, la que corresponde al menú que se lanza con el botón derecho del ratón. :(
En mi caso esa tecla es la del símbolo de Windows, es lo que puedo decirte. :roll:
En el Lenovo, a la derecha de la barra espaciadora está AltGr, Ctrl y ya las teclas de cursor, así que no tengo esa opción. La tecla Windows que hay a la izquierda la quiero haciendo lo que hace, lanzar el menú de Mate.

Seguiré investigando unos días y, si no encuentro nada, miraré las ofertas por Navidad. :)

Post Reply

Return to “Español (Spanish)”