¿Cómo cambio la tecla Comando y la tecla Control en una MacBook Pro?

59

He recorrido la web y parece que no puedo hacer que Xmodmap / nada funcione correctamente. Quiero intercambiar AMBAS teclas de comando con mi tecla de control, en esencia, invertir lo que hacen actualmente.

¿Como podría hacerlo?

Intenté xmodmap -e "keycode 133 = Control_L"y los comandos correspondientes para los códigos de tecla 134 (comando derecho) y 37 (control izquierdo). Incluso he intentado estos comandos, además de xmodmap -pke > ~/.Xmodmapy xmodmap ~/.Xmodmapen .xinitrc.

Mi objetivo final es que quiero que aparezca HUD / Dash cuando hago clic controly commandcontrol funcional, es decir, control-ves un atajo común para pegar, haría cliccommand-v

kalaracey
fuente

Respuestas:

64

Me lo imaginé. Ponga lo siguiente en ~/.Xmodmap:

clear control
clear mod4

keycode 105 =
keycode 206 =

keycode 133 = Control_L NoSymbol Control_L
keycode 134 = Control_R NoSymbol Control_R
keycode 37 = Super_L NoSymbol Super_L

add control = Control_L
add control = Control_R
add mod4 = Super_L

Para probar, ejecute el comando:

xmodmap ~/.Xmodmap

Para que se ejecute siempre, agréguelo a las Aplicaciones de inicio.

Esto debería funcionar en cualquier MacBook Pro; el problema era que Xmodmap estaba asignando Super_L a las teclas de comando izquierda y derecha, y Control_L a la tecla de control izquierda. Por alguna razón, por defecto, Ubuntu piensa que el MacBook Pro tiene un teclado estándar de 105 teclas (probablemente pensando en el teclado completo de Apple) pero eso está mal. De todos modos, reasigné los códigos de teclas a las claves correctas, luego asigné las claves a controly mod4.

kalaracey
fuente
Tengo una pregunta adicional: ¿cómo puedo cambiar la tecla de control izquierda para convertirla en la tecla alt, y viceversa, la tecla alt al lado de la tecla de control izquierda para convertirla en la tecla de control izquierda?
719016
¿Cómo mantengo funcionando el botón de ganar del lado derecho?
arcanine
Tenga en cuenta que esto no funciona bien con el cambio de distribución del teclado. Entonces, si usa más de un diseño, tendrá que ejecutar xmodmap después de cada cambio de diseño. La respuesta a continuación que sugiere que editar / usr / share / X11 / xkb / symbols / pc es inmune a eso.
clorz
¿Se ejecuta en VNCViewer? Estoy usando el escritorio Gnome y me gustaría reemplazar mi teclado Apple (tecla Comando) con la tecla Ctrl.
Ahmed
32

Acabo de instalar Ubuntu 16.04 dual boot en mi MBP13 "ayer. Para Ubuntu 16.04, así es como lo hice:

Paso 1: iniciar terminal

Paso 2: Editar X Keyboard Extension

sudo nano /usr/share/X11/xkb/symbols/pc

Paso 3: realiza los siguientes cambios. Asegúrese de que su archivo se vea así:

key <LCTL> {    [ Super_L       ]   };
key <LWIN> {    [ Control_L     ]   };

...

key <RCTL> {    [ Super_R       ]   };
key <RWIN> {    [ Control_R     ]   };

Paso 4: borra el caché de xkb

sudo rm -rf /var/lib/xkb/*

Paso 5 (condicional): si las claves no se intercambian después del paso 4, reinicie su computadora. A mí me funcionó después de esto.

¡Espero que ayude, buena suerte!

clodal
fuente
Esta es una solución mucho mejor que la respuesta aceptada.
Sr. Axilus
No funciono para mi.
chovy
Esta es la respuesta real (2017).
CESCO
Esta es la respuesta. Necesita reiniciarse después del cambio. Gracias
racemic
¡Esto funcionó para mí! Finalmente, cambiar entre Mac OS y Linux no implica tanta reprogramación de la memoria muscular :)
JoLoCo
15

Entrar en System -> Preferences -> Keyboard

Haga clic en la pestaña "Diseños" y luego haga clic en el botón "Opciones de diseño".

Haga clic en "Comportamiento clave Alt / Win"

Seleccione "El control se asigna a las teclas Win (y la tecla Ctrl habitual).

de http://ubuntuforums.org/showthread.php?t=1293081

alex reska
fuente
99
Solo una nota: esto no intercambia las teclas, solo hace que las teclas de comando sean teclas de control adicionales.
Fabian Tamp
Esto no funciona para Ubuntu 16.04.
Único
Esto parece conducir al comportamiento deseado en Ubuntu 18.04
RM de Vos
Usé "alt se intercambia con Win" ya que estoy usando el teclado de Apple en Ubuntu.
SM Adnan
6

Vaya a la configuración del sistema y luego a la disposición del teclado, luego a las opciones, luego al comportamiento de la tecla Win / Alt, y luego verifique "Meta cambia Ctrl" y luego en la Posición Ctrl marque "Ctrl cambia Meta" y ¡ahí lo tiene!

el 12.04.1 cambia esto por:

Primero, vaya a "Configuración del sistema", luego haga clic en "Teclado", luego en "Configuración de diseño" (en la parte inferior izquierda), luego en "Opciones" en la parte inferior derecha, luego expanda la pestaña "Comportamiento de teclas Alt / Win", luego seleccione " El control se asigna para ganar teclas (y las teclas Ctrl habituales) "

TenorB
fuente
Trabajó para mí en 12.04. Realmente no puedo creerlo, pero funcionó. Después de horas de jugar con .xmodmap
jyoseph
Esto es genial, gracias. Tengo el sistema más nuevo (lo que usted describe en el segundo párrafo). Ctrl se asigna a las teclas Win hace que Cmd se comporte como Ctrl. Posición de la tecla Ctrl -> Ctrl izquierda mientras Meta hace lo contrario. También como nota al margen, tuve que ir a Inicio y apagado -> Administrador de servicios -> Servicios de inicio y activar Keyboard Daemon (esto estaba desactivado por defecto).
0__
14.04 no parece tener ese enlace "Opciones".
Waldir Leoncio
En cuanto a Ubuntu 15.04, esta opción está disponible ahora en "Dispositivos de entrada> Teclado> pestaña Avanzado> sección Comportamiento de teclas Alt / Win> Ctrl está asignado para ganar Teclas (y las teclas Ctrl habituales)"
Serj Zaharchenko
2
No puedo encontrar nada de eso en Ubuntu 16.04
Houman
5

La página de ayuda de Ubuntu de la comunidad para teclados Apple da los siguientes pasos para hacer este cambio de forma permanente: (probado 2017-05-27)

Ejecute el siguiente comando para agregar la línea de configuración al archivo y /etc/modprobe.d/hid_apple.confcrearla si es necesario:

echo options hid_apple swap_opt_cmd=1 | sudo tee -a /etc/modprobe.d/hid_apple.conf

Activa la copia de la configuración en el archivo de arranque initramfs.

sudo update-initramfs -u -k all

Opcionalmente, reiniciar

sudo reboot

Para probarlo temporalmente, puede ejecutar

echo 1 | sudo tee /sys/module/hid_apple/parameters/swap_opt_cmd
RasmusWL
fuente
4

Actualizado para 18.04 ya que ninguna de las respuestas proporcionadas parecía funcionar en mi sistema. Hice una instalación limpia de 18.04 e intenté usar un teclado Apple de aluminio con cable. El comportamiento predeterminado de Left Super en inglés de EE. UU. Se asigna a Gnome Desktop Dashboard. ¡La herramienta Tweak tenía todas las configuraciones necesarias en una GUI fácil de usar!

sudo apt install gnome-tweak-tool

Primero cambié la tecla de acceso rápido del tablero hacia el lado derecho y luego, en "Opciones de diseño adicionales", puede usar "Posición Ctrl / Cambiar Izquierda Ganar con Ctrl Izquierda " con buen efecto.

Dan Rozelle
fuente
gnome-tweak-tool es increíble, ¡gracias!
Dennis Golomazov
Esta debería ser la respuesta aceptada. Para Mac, actualmente encuentro que Gnome Tweak Tools tiene la configuración que deseo en Teclado y mouse> Opciones de diseño adicionales> Posición Ctrl> Cambiar izquierda a izquierda con Ctrl izquierda. La tecla Comando del teclado Mac parece referirse como "Win".
bhaller
En 2019, en Gnome, esta es la solución más fácil. Gracias
jymbob
1

¿Duplicado de cómo intercambiar las teclas de comando y control con xkb paso a paso?

En 16.04, así es como finalmente conseguí que esto funcionara. Xmodmap no funciona universalmente en todas las aplicaciones, la herramienta de ajuste gnome carecía de la función, dconf editó un intercambio de teclas altwin2 personalizado (como la respuesta principal aquí) falló, por lo que me arranqué el pelo hasta que combiné varias respuestas en este completo y simple y elegante solución:

gksudo gedit /usr/share/X11/xkb/symbols/pc

cámbielo a:

default  partial alphanumeric_keys modifier_keys
xkb_symbols "pc105" {

key <ESC>  {    [ Escape        ]   };

// The extra key on many European keyboards:
key <LSGT> {    [ less, greater, bar, brokenbar ] };

// The following keys are common to all layouts.
key <BKSL> {    [ backslash,    bar ]   };
key <SPCE> {    [    space      ]   };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> {    [ BackSpace, BackSpace  ]   };

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return        ]   };

key <CAPS> {    [ Caps_Lock     ]   };
key <NMLK> {    [ Num_Lock      ]   };

key <LFSH> {    [ Shift_L       ]   };
key <LCTL> {    [ Alt_L     ]   };
key <LWIN> {    [ Super_L       ]   };

key <RTSH> {    [ Shift_R       ]   };
key <RCTL> {    [ Alt_R     ]   };
key <RWIN> {    [ Super_R       ]   };
key <MENU> {    [ Menu          ]   };

// Beginning of modifier mappings.
modifier_map Shift  { Shift_L, Shift_R };
modifier_map Lock   { Caps_Lock };
modifier_map Control{ Control_L, Control_R };
modifier_map Mod2   { Num_Lock };
modifier_map Mod4   { Super_L, Super_R };

// Fake keys for virtual<->real modifiers mapping:
key <LVL3> {    [ ISO_Level3_Shift  ]   };
key <MDSW> {    [ Mode_switch       ]   };
modifier_map Mod5   { <LVL3>, <MDSW> };

key <ALT>  {    [ NoSymbol, Control_L, Control_R    ]   };
//include "altwin(meta_alt)"
key <LALT> {    [ Control_L     ]   };
key <RALT> {    [ Control_R     ]   };
modifier_map Mod1   { Alt_L, Alt_R, Meta_L, Meta_R };

key <META> {    [ NoSymbol, Meta_L, Meta_R  ]   };
modifier_map Mod1   { <META> };

key <SUPR> {    [ NoSymbol, Super_L ]   };
modifier_map Mod4   { <SUPR> };

key <HYPR> {    [ NoSymbol, Hyper_L ]   };
modifier_map Mod4   { <HYPR> };
// End of modifier mappings.

key <OUTP> { [ XF86Display ] };
key <KITG> { [ XF86KbdLightOnOff ] };
key <KIDN> { [ XF86KbdBrightnessDown ] };
key <KIUP> { [ XF86KbdBrightnessUp ] };
};

hidden partial alphanumeric_keys
xkb_symbols "editing" {
key <PRSC> {
type= "PC_ALT_LEVEL2",
symbols[Group1]= [ Print, Sys_Req ]
};
key <SCLK> {    [  Scroll_Lock      ]   };
key <PAUS> {
type= "PC_CONTROL_LEVEL2",
symbols[Group1]= [ Pause, Break ]
};
key  <INS> {    [  Insert       ]   };
key <HOME> {    [  Home         ]   };
key <PGUP> {    [  Prior        ]   };
key <DELE> {    [  Delete       ]   };
key  <END> {    [  End          ]   };
key <PGDN> {    [  Next         ]   };

key   <UP> {    [  Up           ]   };
key <LEFT> {    [  Left         ]   };
key <DOWN> {    [  Down         ]   };
key <RGHT> {    [  Right        ]   };
};

Salvar.

rm -rf /var/lib/xkb/*

(No sé si esto es obligatorio, pero lo hice).

Reiniciar.

Tom Mercer
fuente
Esto fue agradable, pero no puedo usar el mismo truco para cambiar mis teclas ALT que la tecla Control izquierda. Parece que las teclas ALT funcionan de manera diferente. ¿Sabes cómo puedo hacerlo?
Pierre Thibault
El mismo truco funciona para cualquier cosa. Debe cambiar tanto las asignaciones de teclas como las asignaciones de modifier_map. También puede saltar a ajustes de gnome o gconf, se me olvida cuál, y hay varias configuraciones de alternar como "swap ctrl y alt".
Tom Mercer
No podemos hacer una: clave <LALT> {[Control_L]}; tecla <RALT> {[Control_L]}; Alt es tratado de manera diferente. Así que usé ajustes de gnomo. No pude tener exactamente lo que quería, pero no es tan malo.
Pierre Thibault
No estoy seguro de entender tu problema. Si solo desea que ambos alts se comporten como controles, el archivo exactamente igual que el anterior hará que ambas teclas alt se comporten como controles, y ambas teclas de control se comporten como alts. Si puede especificar qué desea que sea cada clave, ¿tal vez pueda ayudarlo? ¿Intentaste este archivo? ¿Qué máquina estás usando y qué teclado? La distribución del teclado en francés podría estar causándonos problemas.
Tom Mercer
No, no probé el archivo. Puedo ver que más adelante en el archivo está haciendo el cambio de dos alt a dos ctrl. Me lo perdí. Gracias por señalarlo. Voy a probarlo.
Pierre Thibault
0

Puede encontrar que Kinto sea útil. Es un proyecto que creé recientemente, después de unos años de abordar este problema de diferentes maneras y ahora siento que es lo suficientemente sólido como para compartirlo.

El instalador de Kinto simplemente usa python para hacer la instalación inicial, después de eso es solo un servicio systemd, bash, xprop, setxkbmap y xkbcomp. En lo que a mí respecta, es la solución más rápida y nativa para este problema que encontrará.

https://github.com/rbreaves/kinto

https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0

Aquí también hay un Gist, si solo quieres ver lo que está en el centro de todo, no alternará tu mapa de teclas cuando sea necesario. El Gist tampoco incluye archivos de mapa de teclas xkb personalizados que configuran cursores de estilo macOS / manipulaciones de palabras que usan Cmd y las teclas de flecha.

https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb

contenido esencial

# permanent apple keyboard keyswap
echo "options hid_apple swap_opt_cmd=1" | sudo tee -a /etc/modprobe.d/hid_apple.conf
update-initramfs -u -k all

# Temporary & instant apple keyboard keyswap
echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd

# Windows and Mac keyboards - GUI (Physical Alt is Ctrl, Physical Super is Alt, Physical Ctrl is Super)
setxkbmap -option;setxkbmap -option altwin:ctrl_alt_win

# Windows and Mac keyboards - Terminal Apps (Physical Alt is Super, Physical Super is Alt, Physical Ctrl is Ctrl)
setxkbmap -option;setxkbmap -option altwin:swap_alt_win

#
# If you want a systemd service and bash script to help toggle between
# GUI and Terminal applications then look at project Kinto.
# https://github.com/rbreaves/kinto
#
# Note: The above may not work for Chromebooks running Linux, please look
# at project Kinto for that.
#
# If anyone would like to contribute to the project then please do!
#
R Ben R
fuente