Diferencia entre revisiones de «Reasignar teclas thinkpad»

De Recursos Educativos
Ir a la navegación Ir a la búsqueda
Sin resumen de edición
Sin resumen de edición
Línea 10: Línea 10:
No tengo aun claro como hacer el cambio permanente.
No tengo aun claro como hacer el cambio permanente.


xev
Actualización 22-mayo-2018. Resulta que por diversos motivos los gestores de escritorio no acaban de hacer lo que deberian y no cargan el fichero <code>~/.Xmodmap</code> que en teoría sería la manera correcta y elegante de hacer este cambio permanente. Basta buscar en Internet para darse cuenta de que no hay solución buena y completa, unas pierden la configuración al rebotar, al suspender, hasta al saltar el protector de pantalla, otras dependen de scripts, etc.
I166 I167    PGUP PGDN 112 117


Así que cambié de aproximación a una basada en <code>xkb</code>.


grep 167 /usr/share/X11/xkb/keycodes/evdev
== Solucion con XKB ==


/usr/share/X11/xkb/symbols/pc
Partimos de la información de que las teclas a las que queremos cambiar tienen los keycodes 166 y 167 (esta información se obtiene con <code>xev</code>). Buscamos que nombre da XKB a estos keycodes en <code>/usr/share/X11/xkb/keycodes/evdev</code> y obtenemos que son <code>I166</code> y <code>I167</code>.


    key <PGDN> {        [  Next                ]      };
Necesitaremos también saber el nombre de las que funcionan como PaginaArriba y Pagina Abajo (en mi caso keycodes 112 y 117). Sus nombres resultan ser <code>PGUP</code> y <code>PGDN</code>.
    key <I166> {        [  Prior                ]      };
    key <I167> {        [  Next                ]      };


Con esta información nos vamos a <code>/usr/share/X11/xkb/symbols/</code>. Alli buscamos <code>PGUP</code> y <code>PGDN</code> y vemos que los eventos que generan son <code>Prior</code> y <code>Next</code>.
Esos son los eventos que queremos generar con <code>I166</code> y <code>I167</code>. Buscamos <code>I166</code> y vemos que está definida en el fichero <code>inet</code>.


Hacemos el siguiente cambio:
Antes:
<nowiki>
    key <I166>  {      [ XF86Back              ]      };
    key <I167>  {      [ XF86Forward          ]      };
</nowiki>
Despues:
<nowiki>
//  key <I166>  {      [ XF86Back              ]      };
//  key <I167>  {      [ XF86Forward          ]      };
    key <I166>  {      [ Prior                ]      };
    key <I167>  {      [ Next                  ]      };</nowiki>
Y listo. A funcionar.


[[Category:Tips]]
[[Category:Tips]]

Revisión del 21:39 22 may 2018

Teclas thinkpad.jpg

Algunos modelos de Thinkpad (T510 por ejemplo) tienen un par de teclas encima de las del cursor que tienen un efecto odioso: hacen en los navegadores de "adelante" y "atras". Lo habitual es que sean PagArriba y PagAbajo, con lo que cuando estás navegando y quiere mover arriba o abajo la pagina en la que estás lo que obtienes es adelante y atras en el historial de navegación, que es un dolor.

Solucion:

xmodmap -e 'keycode 166=Prior'
xmodmap -e 'keycode 167=Next'

No tengo aun claro como hacer el cambio permanente.

Actualización 22-mayo-2018. Resulta que por diversos motivos los gestores de escritorio no acaban de hacer lo que deberian y no cargan el fichero ~/.Xmodmap que en teoría sería la manera correcta y elegante de hacer este cambio permanente. Basta buscar en Internet para darse cuenta de que no hay solución buena y completa, unas pierden la configuración al rebotar, al suspender, hasta al saltar el protector de pantalla, otras dependen de scripts, etc.

Así que cambié de aproximación a una basada en xkb.

Solucion con XKB

Partimos de la información de que las teclas a las que queremos cambiar tienen los keycodes 166 y 167 (esta información se obtiene con xev). Buscamos que nombre da XKB a estos keycodes en /usr/share/X11/xkb/keycodes/evdev y obtenemos que son I166 y I167.

Necesitaremos también saber el nombre de las que funcionan como PaginaArriba y Pagina Abajo (en mi caso keycodes 112 y 117). Sus nombres resultan ser PGUP y PGDN.

Con esta información nos vamos a /usr/share/X11/xkb/symbols/. Alli buscamos PGUP y PGDN y vemos que los eventos que generan son Prior y Next. Esos son los eventos que queremos generar con I166 y I167. Buscamos I166 y vemos que está definida en el fichero inet.

Hacemos el siguiente cambio:

Antes:

    key <I166>   {      [ XF86Back              ]       };
    key <I167>   {      [ XF86Forward           ]       };

Despues:

//  key <I166>   {      [ XF86Back              ]       };
//  key <I167>   {      [ XF86Forward           ]       };
    key <I166>   {      [ Prior                 ]       };
    key <I167>   {      [ Next                  ]       };

Y listo. A funcionar.