242 votos

¿Cómo puedo reasignar ciertas teclas o dispositivos?

Estoy buscando una forma de reasignar ciertas teclas en ubuntu.

es decir

Me gustaría cambiar PgUp a Home o PgDown a End .

¿Existe un comando integrado o una herramienta para reasignar las teclas en Ubuntu/GNOME?

20voto

thelsdj Puntos 3344

Si se trata de mover una tecla Shift, hay algunos pasos adicionales:

 xmodmap -e "keycode 62 = Up" # Shift => Up
 xmodmap -e "keycode 111 = Shift_R" # Up => Shift
 xmodmap -e "add shift = Shift_R" # Make the new Shift key actually do shifting
 xmodmap -e "remove shift = Up" # Prevent the old Shift key from shifting
 xset r 62 # Make the new Up key autorepeat
 xset -r 111 # Prevent the new Shift key from autorepeating

10voto

Bill Davis Puntos 51

Así es como intenté cambiar el mapeo del ENTER a la tecla SHIFT clave (y viceversa):

$ uname -a

INFORMES:

Linux box 2.6.32-37-generic #81-Ubuntu SMP Fri Dec 2 20:35:14 UTC 2011 i686 GNU/Linux

$ which xmodmap

INFORMES:

/usr/bin/xmodmap

$ which xev

INFORMES:

/usr/bin/xev

$ xev

(ignora las siguientes cincuenta líneas más o menos)

PRESS THE ENTER KEY (notice the third line):
KeyPress event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263441120, (738,242), root:(771,314),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    XLookupString gives 1 bytes: (0d)
    XmbLookupString gives 1 bytes: (0d)
    XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263441271, (738,242), root:(771,314),
    state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    XLookupString gives 1 bytes: (0d)
    XFilterEvent returns: False

PRESS THE SHIFT KEY (notice the third line):
KeyPress event, serial 30, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263592202, (464,368), root:(497,440),
    state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x5600001,
    root 0x110, subw 0x0, time 263592298, (464,368), root:(497,440),
    state 0x1, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

Lo importante es la tercera línea de cada pulsación:

FOR:
state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
The name "Return" is the name of the behavior of the key pressed.
The number of the key pressed is "36".

state 0x0, keycode 62 (keysym 0xffe2, Shift_R), same_screen YES,
The name "Shift_R" is the name of the behavior of the key pressed.
The number of the key pressed is "62".

INVERTIR EL MAPEO:

$ xmodmap -e "keycode 62 = Return"
$ xmodmap -e "keycode 36 = Shift_R"

GUARDAR LOS RESULTADOS:

$ xmodmap -pke > ~/.Xmodmap
$ vi ~/.xinitrc

ADD

 xmodmap ~/.Xmodmap

$ sudo reboot

El principal problema era que la inversión NO funcionaba. El ENTER fue asignada a la tecla SHIFT_R pero el SHIFT_R no fue asignada a la tecla ENTER clave. Imagínate.

8voto

Rodent43 Puntos 652

Aviso: Desde 2013, Ubuntu y sus derivados ya no utilizan xmodmap , pero en su lugar utiliza xkb . Para más información, consulte esta respuesta . La respuesta que figura a continuación ya no es pertinente para las versiones actuales.


Para remapear ciertas teclas se necesitan dos herramientas. Primero xev (herramienta de línea de comandos) y segundo xmodmap (también herramienta de línea de comandos). Ambas deberían estar disponibles en Ubuntu sin necesidad de instalarlas.

  1. Inicie la ventana del terminal y ejecute xev . Ahora está activo y espera a que pulses una tecla. A continuación, pulsa la tecla cuyo comportamiento quieres cambiar, es decir PgUp .

  2. xev mostrará alguna información sobre la tecla pulsada. La tercera línea es importante. Debe ser similar a:

     state 0x10, keycode 110 (keysym 0xff55, Prior), same_screen YES,

    en este ejemplo Prior es el nombre del comportamiento al que está asignada la llave en ese momento, el número keycode es el id interno para reconocer la llave. Ahora haz esto con otra llave, es decir PgDown dan este resultado

     state 0x10, keycode 115 (keysym 0xff56, Next), same_screen YES,

    Aquí también lo interesante para nosotros es keycode 115 y Next - el nombre del comportamiento.

  3. ahora cuando quieras intercambiar las dos teclas usa xmodmap .

      xmodmap -e "keycode 110 = Next"

    Esto cambia la tecla con el código 110 en su teclado a la acción Next . Es muy sencillo.

    Tenga en cuenta que si la clave que está asignando debe tener un significado diferente cuando se utiliza con el Shift (por ejemplo, para las distribuciones de teclado británicas, Shift + 2 da comillas) entonces puede simplemente enumerar el comando secundario después del primero. Por ejemplo, si quiere que la tecla con el código 53 se asigne a la barra invertida normalmente, pero al símbolo de la barra cuando se usa con shift, podría hacer:

      xmodmap -e "keycode 53 = backslash bar"

Información adicional: La secuencia de estas asignaciones depende de la disposición del teclado. Normalmente es Key , Shift+Key , mode_switch+Key , mode_switch+Shift+Key , AltGr+Key , AltGr+Shift+Key pero puede ser muy diferente para diseños más especiales, como en el caso de la Neo 2 uno. Para omitir una columna utilice NoSymbol . Aquí hay un lista completa de todos los keysyms .
Puede ver la secuencia concreta de su diseño encontrándola en uno de los archivos de /usr/share/X11/xkb/symbols/ .

Nota: Estos cambios son sólo para la sesión X activa y se perderán después de reiniciar. Si desea guardar los cambios de forma permanente, debe ejecutar los siguientes comandos después de los anteriores:

xmodmap -pke >~/.Xmodmap

(crea un archivo llamado .Xmodmap en su directorio principal ( ~ ))

Luego hay que crear un archivo llamado .xinitrc en su directorio de inicio donde puso el comando xmodmap .Xmodmap en.

Ahora puede modificar .Xmodmap y ejecutar xmodmap .Xmodmap desde la consola para ver los cambios inmediatamente. Los cambios en .Xmodmap persistirá.

fuente: Foruns de Ubuntu

Cosas extra:

Si la tecla que estás remapeando tiene un comportamiento diferente dependiendo de un estado ( como ocurre con las teclas del teclado numérico que dependen de NumLock) simplemente tienes que hacer xmodmap -pm para obtener una lista de modificadores y luego hacer:

xmodmap -e "KEYCODE MODIFIER = behaviour behaviour_with_modifier"

Supongamos, por ejemplo, que quiere obtener un punto en lugar de una coma en el teclado numérico (útil para la mayoría de los programadores), pero quiere mantener el comportamiento de "borrado" cuando NumLock está desactivado.

xmodmap -e "keycode 91 mod2 = KP_Delete period"

mod2 porque xmodmap -pm nos dice que mod2 es Num_Lock los demás nombres se obtienen pulsando las teclas en xev .

7voto

arand Puntos 635

Para hacer reajustes globales independientemente de X, se puede hacer uso de consola-setup(5) en su lugar.

En mi caso quería reasignar Caps Lock clave para D desde que mi D -La llave está rota :)

Primero utilicé dumpkeys(1) para obtener una plantilla para un mapeo, en el caso del D -key, lo interesante es el mapeo para el keycode 32 (en mi teclado); ¡Observe que hay dos espacios en el patrón grep!

$ sudo dumpkeys | grep "keycode  32" > tempfile
$ cat tempfile
keycode  32 = +d
    shift   keycode  32 = +D
    altgr   keycode  32 = +eth
    shift   altgr   keycode  32 = +ETH
    control keycode  32 = Control_d
    shift   control keycode  32 = Control_d
    altgr   control keycode  32 = Control_d
    shift   altgr   control keycode  32 = Control_d
(121 lines total...)

Para cambiar el mapa que se aplica a Caps Lock (código 58 en mi teclado) en lugar de

sed 's/32/58/' -i tempfile

Ahora dice

keycode  58 = +d
    shift   keycode  58 = +D
    altgr   keycode  58 = +eth
(etc...)

Para añadir esta reasignación al mapa por defecto, simplemente hay que añadirla al archivo de inclusión de la reasignación para console-setup

sudo sh -c 'cat tempfile >> /etc/console-setup/remap.inc'

y console-setup necesita ser reconfigurado (saltando las preguntas de baja prioridad con -phigh )

sudo dpkg-reconfigure console-setup -phigh

Ahora el remapeo debería completarse, y cargarse automáticamente al arrancar.

2voto

Peter Hilton Puntos 10580

Acabo de tener una idea de última hora.. Creo que se puede referir a algo totalmente diferente por "reasignación".. pero voy a dejar mi respuesta como es... (No sé cómo reasignar una tecla para que se comporte como otra)

ACTUALIZACIÓN : mi "ocurrencia" ha sido confirmada; ( he respondido a la pregunta equivocada :)... por favor vea la respuesta de la Wiki de la Comunidad de NES (aceptada arriba).

Hay dos formas generales de Remodelar volver a enlazar una llave.

  • localmente a un programa concreto
    (una tecla puede ser utilizada para diferentes cosas en diferentes aplicaciones/ventanas)
  • globalmente para un usuario específico
    (una tecla tiene la misma función en todos los Windows)

En el caso de los métodos "locales a un programa", a veces hay una forma de cambiar las combinaciones de teclas que ofrece la propia aplicación... ej.

Firefox tiene un complemento llamado keyconfig ... para más información vea esto Mensaje de MozillZine

La mayoría de los programas de Ubuntu están basados en Gnome y existe una utilidad específica para modificar el keybinding de cualquier elemento del menú de estas apps de Gnome... Se llama Editable Menu Accelerator ... Es una herramienta muy "delicada", pero bastante potente.. Puedes habilitarla ejecutando gconf-editor (a través de Terminal o Alt+F2)... navegue hasta desktop -- gnome -- interface y seleccione can_change_accels .... A continuación, puede cambiar los elementos de menú para virtual cualquier cosa que desee (por programa / ventana) ... Te sugiero que lo desactives en cuanto hayas hecho lo que necesitas..

De lo contrario, puede configurar teclas de acceso rápido globales. Yo uso un programa llamado xbindkeys Install xbindkeys y también hay una opción disponible a través del Menú Principal -- Preferencias, llamada Keyboard Shortcuts

Si usas xbindkeys, tendrás que añadirlo a tus "Aplicaciones de inicio" (Menú principal -- Preferencias) ... También (como sugirió Stefano Palazzo) he escrito previamente una descripción más detallada de xbindkeys en una respuesta en este Página de askubuntu

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X