reasignar alt alt para comportarse como ctrl correcto

8

Estoy tratando de reasignar mi right altcomportamiento right ctrlpara poder usar mi pulgar derecho y presionar el ctrlbotón. Este es Ubuntu 12.04.

He creado el archivo .Xmodmap en mi carpeta de inicio con el siguiente contenido:

clear control
clear mod1
!keycode 64 = Alt_L Meta_L
keycode 108 = Alt_R Meta_R
add control = Control_L Control_R Alt_R
add mod1 = Alt_L Meta_L

Como puede suponer, mi tecla alt izquierda tiene el código clave 64 y mi left alttecla tiene el código clave 108.

En realidad, esto funciona en el sentido de que mi tecla alt derecha se comporta como si presionase la ctrltecla.

Sin embargo, mi alttecla izquierda ahora ya no hace nada, lo que significa que no me altqueda ninguna tecla. Esto es extraño dado que xmodmapda el siguiente resultado:

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69),  Alt_R (0x6c)
mod1        Alt_L (0x40),  Alt_L (0xcc),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Lo extraño es que cuando elimino el mapeo Alt_R control, las altteclas funcionan.

(es decir, cambie la penúltima línea a :)

add control = Control_L Control_R

Ahora, incluso mi alt derecha se comporta como una altclave que me confunde. Después de eliminar la asignación Alt_R de la línea de control, la salida de xmodmapda:

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_L (0xcc),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Espero que ustedes puedan ayudar.

PD. Usé este sitio web como fuente.

Hoogendijk
fuente

Respuestas:

6

Debería poder simplemente usar Distribución del teclado >> Opciones >> Posición de la tecla Ctrl >> Alt derecha como Ctrl derecha , pero esto no funciona. Esto ya se ha presentado contra Debian como Bug # 663218

1) Comience de nuevo eliminando ~ / .Xmodmap.

2) Tenga en cuenta que no necesita borrar Control y Mod1. Esto hace que sea más fácil cambiar solo lo que desea. Tu ~ / .Xmodmap debe ser:

!Swap right control and right alt
remove Control = Control_R
remove Mod1 = Alt_R
keycode 105 = Alt_R
keycode 108 = Control_R
add Control = Control_R
add Mod1 = Alt_R
chaskes
fuente
2

Si usted es una de las personas desafortunadas como yo que no pudo lograr que xmodmap cambie a la derecha Alt con la derecha Ctrl, entonces quizás esto ayude.

Si presiona Alt y e hacia la derecha y obtiene é, entonces esta solución es para usted (necesita mejoras).

Ejecute esto en la terminal (verifique sus códigos de tecla con xev):

xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"

luego ponga este código en su .Xmodmap:

remove Control = Control_R
remove Mod1 = Alt_R
keycode 105 = Alt_R
keycode 108 = Control_R
add Control = Control_R
add Mod1 = Alt_R

Este código establece su clave Alt_Gr en Alt_R, y luego intercambia Alt_r con Ctrl_R.

Si desea que esto permanezca después de cerrar sesión, coloque los siguientes comandos en cualquiera de sus archivos de shell de inicio, por ejemplo ~ / .profile:

if [ -f $HOME/.Xmodmap ]; then
  xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"
  /usr/bin/xmodmap $HOME/.Xmodmap
fi

fuentes: pregunta1 pregunta2

Mugur 'Bud' Chirica
fuente
1

En Ubuntu 19.04, para hacer el mapeo en todo el sistema, debe cambiar dos archivos:

  • / usr / share / X11 / xkb / symbols / altwin
  • / usr / share / X11 / xkb / symbols / pc

Agregue la siguiente sección a la anterior:

// Ctrl is mapped to the Alt.
partial modifier_keys
xkb_symbols "right_alt" {
    key <LALT> { [ Alt_L, Meta_L ] };
    key <RALT> { type[Group1] = "TWO_LEVEL",
                 symbols[Group1] = [ Control_R, Control_R ] };
    modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
    modifier_map Control { <LCTL>, <RALT> };
};

Y sustituir include "altwin(meta_alt)"a la include "altwin(right_alt)"de este último.

ilyuha21st
fuente
Esto responde a la pregunta y funciona. Pero la respuesta aceptada intercambia las teclas alt y right ctrl correctas. Esto no se preguntó originalmente, pero creo que es una solución que muchos buscan (tener dos controles a la derecha no es tan útil). ¿Te importaría agregar cómo asignar el control correcto a la derecha alt?
Tedward el