Intercambiar alt y super

27

Tengo un Macbook Air que ejecuta Linux. Quiero intercambiar las teclas alty superen ambos lados del teclado entre sí.

¿Cómo hago esto con las herramientas cli?

Actualizar

Siguiendo la respuesta de Drav Sloan utilicé lo siguiente:

keycode 64 = Alt_L
keycode 133 = Super_L
remove Mod1 = Alt_L
remove Mod4 = Super_L
add Mod1 = Super_L
add Mod4 = Alt_L

keycode 108 = Alt_R
keycode 134 = Super_R
remove Mod1 = Alt_R
remove Mod4 = Super_R
add Mod1 = Super_R
add Mod4 = Alt_R

fuente
1
Curiosamente, las cosas funcionaron para mí (mac air) para cuando tomé solo las primeras 6 líneas y no el bototm una vez en un archivo y ejecuté el archivo xmobmap en él. Con el resultado final tuve errores.
Leo Ufimtsev

Respuestas:

20

Una forma de lograrlo es a través de xmodmap. Puedes correr xevpara obtener eventos clave. Al ejecutar xev, debe aparecer un cuadro y puede enfocarlo y presionar las teclas que desea intercambiar. Debe mostrar detalles similares a los de la Altclave:

KeyPress event, serial 28, synthetic NO, window 0x8800001,
  root 0x25, subw 0x0, time 2213877115, (126,91), root:(1639,475),
  state 0x0, keycode 14 (keysym 0xffe9, Alt_L), same_screen YES,
  XLookupString gives 0 bytes: 
  XmbLookupString gives 0 bytes: 
  XFilterEvent returns: False

Estoy en una PC y no tengo una "tecla de comando", pero tengo la "tecla de Windows" equivalente, y xev da:

KeyPress event, serial 28, synthetic NO, window 0x8000001,
  root 0x25, subw 0x0, time 2213687746, (111,74), root:(1624,98),
  state 0x0, keycode 93 (keysym 0xffeb, Super_L), same_screen YES,
  XLookupString gives 0 bytes: 
  XmbLookupString gives 0 bytes: 
  XFilterEvent returns: False

Debido a que xmodmap no tiene idea statey puede romper fácilmente las asignaciones de teclas, le sugiero que haga lo siguiente:

xmodmap -pke > defaults

Luego creamos un archivo xmodmap:

keycode 14 = Alt_L
keycode 93 = Super_L
remove Mod1 = Alt_L
remove Mod4 = Super_L
add Mod1 = Super_L
add Mod4 = Alt_L

Tenga en cuenta cómo estoy usando los códigos de tecla que xevregresaron. También aquí solo estoy reemplazando las teclas súper y alt izquierdas (y dejando las correctas a su antiguo comportamiento). Entonces podemos simplemente ejecutar xmodmap, para configurar estas teclas:

$ xmodmap -v modmap.file
! modmap:
! 1:  keycode 14 = Alt_L
        keycode 0xe = Alt_L
! 2:  keycode 93 = Super_L
        keycode 0x5d = Super_L
! 3:  remove Mod1 = Alt_L
! Keysym Alt_L (0xffe9) corresponds to keycode(s) 0xe
        remove mod1 =  0xe
! 4:  remove Mod4 = Super_L
! Keysym Super_L (0xffeb) corresponds to keycode(s) 0x5d
        remove mod4 =  0x5d
! 5:  add Mod1 = Super_L
        add mod1 = Super_L
! 6:  add Mod4 = Alt_L
        add mod4 = Alt_L
!
! executing work queue
!
        keycode 0xe = Alt_L
        keycode 0x5d = Super_L
        remove mod1 =  0xe
        remove mod4 =  0x5d
        add mod1 = Super_L
        add mod4 = Alt_L

Puede ejecutar sin el -vinterruptor (detallado) para la ejecución silenciosa, pero me parece útil si cometió errores en su archivo de mapa de modulación. Si las cosas se complican, vuelva a aplicar sus valores predeterminados:

xmodmap defaults

Modmap a menudo se ejecuta al inicio de X, por lo que puede aplicarlos como valores predeterminados si coloca sus comandos de modmap ~/.xmodmaprc.

Drav Sloan
fuente
¿Hay alguna manera de hacer esto con setxkbmap? Me gustaría usar la setxkbmap -option compose:raltopción junto con esto.
Utilicé la solución swap_opt_cmd en otra respuesta, pero esta merece un voto positivo porque es muy completa y está claramente escrita. Bravo, señor.
John Franklin
Gracias. Me equivoqué con xmodmap y agradezco si pudieras ayudar a askubuntu.com/questions/1026246/…
Tim
26

Si quieres hacer esto en un teclado Apple, prueba esto:

echo 1|sudo tee /sys/module/hid_apple/parameters/swap_opt_cmd

Para que esto funcione para una versión inferior de Linux, puede probar esto: http://blog.chaselambda.com/2014/10/09/apple-keyboard-on-linux-3.8.html

theicfire
fuente
Aunque las otras respuestas también funcionan, esta es la solución para Mac Books; ¡trabajado como un encanto!
sinisterstuf
1
¿Por qué no es este el valor predeterminado?
John Franklin
No tengo acceso de escritura a este archivo. :-(
itmuckel
1
@ Micha90 - necesitas usar tee: echo "1" | sudo tee /sys/module/hid\_apple/parameters/swap\_opt\_cmd
jaustin
2
Pase una hora configurando xmodmap. Funciona. Entonces vea la segunda respuesta ...
Bilow
17

Si solo desea intercambiar alt y superclave a la izquierda, ejecute el comando en su terminal:

setxkbmap -option altwin:swap_alt_win

Para restaurar el comportamiento predeterminado solo use:

setxkbmap -option

Nota: esto es temporal. Si desea que los efectos se agreguen permanentemente a su archivo de inicio.

coljamkop
fuente
44
Esta debería ser la solución aceptada, ya que es limpia y utiliza una función integrada. Debería haber mencionado que para restaurar el comportamiento predeterminado podría usarlo setxkbmap -option. Y si sólo desea Cambiar izquierda y la tecla alt súper , a continuación, utilizar este comando: setxkbmap -option altwin:swap_lalt_lwin.
erik
1
Tengo el teclado Logitech y esto funcionó para cambiar mi tecla de Windows (Super_L) con la izquierda alt (Alt_L). ¡Gracias!
Derek
4
$ xmodmap -pke

Tome nota de qué códigos de tecla alt y super están vinculados, luego en su carpeta de inicio abra / cree un nuevo archivo .xmodmaprc. Por ejemplo, mis teclas super / alt están vinculadas como tales

keycode  64 = Alt_L Meta_L Alt_L Meta_L
keycode 108 = Alt_R Meta_R Alt_R Meta_R
keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R

Pero para intercambiar las claves, pondría lo siguiente en .xmodmaprc

keycode  64 = Super_L NoSymbol Super_L
keycode 108 = Super_R NoSymbol Super_R
keycode 133 = Alt_L Meta_L Alt_L Meta_L
keycode 134 = Alt_R Meta_R Alt_R Meta_R
cepkos
fuente
Sobrescribir el código clave / asociaciones de roles ... simple, y funciona. Me pregunto si hay algún inconveniente en comparación con la remove ...solución.
Anillo Ø
Recuerde que puede usar greppara filtrar la salida, por lo que xmodmap -pke | grep -i "super\|alt"debería ser más fácil ver lo que necesita.
Benjamin R
0

Si usted es una de las personas desafortunadas como yo que no pudo hacer que xmodmap cambie Alt correcto con Ctrl derecho, entonces quizás esto ayude.

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

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 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