Como alterno as teclas Command e Control em um MacBook Pro?


59

Eu vasculhei a web e não consigo fazer com que o Xmodmap / nada funcione corretamente. Eu quero trocar AMBAS minhas chaves de comando pela minha chave de controle - em essência, invertendo o que elas fazem atualmente.

Como eu faria isso?

Eu tentei xmodmap -e "keycode 133 = Control_L"e comandos correspondentes para códigos de tecla 134 (comando à direita) e 37 (controle à esquerda). Eu até tentei estes comandos, mais xmodmap -pke > ~/.Xmodmape xmodmap ~/.Xmodmapem .xinitrc.

Meu objetivo final é que eu quero que o HUD / Dash apareça quando clico controle commandpara o controle funcional, ou seja, control-vé um atalho comum para colar, eu clicariacommand-v

Respostas:


64

Eu descobri. Coloque o seguinte em ~/.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 testar, execute o comando:

xmodmap ~/.Xmodmap

Para fazê-lo funcionar sempre, adicione-o aos Aplicativos de Inicialização.

Isso deve funcionar em qualquer MacBook Pro; o problema era que o Xmodmap estava atribuindo Super_L às teclas de comando esquerda e direita e Control_L à tecla de controle esquerda. Por alguma razão, por padrão, o Ubuntu acha que o MacBook Pro possui um teclado de 105 teclas padrão (provavelmente pensando no teclado Apple completo), mas isso está errado. De qualquer forma, reatribuí os códigos de chave às chaves corretas, depois as atribui a controle mod4.


Tenho uma pergunta extra: como alterar a tecla Control esquerda para se tornar a tecla alt e vice-versa, a tecla alt ao lado da tecla Control esquerda para se tornar a tecla Control esquerda?
719016

como faço para manter o botão de vitória do lado direito funcionando?
arcanine

Lembre-se de que isso não funciona bem com a alternância do layout do teclado. Portanto, se você usar mais de um layout, precisará executar o xmodmap após cada alteração no layout. A resposta abaixo sugere que editar / usr / share / X11 / xkb / symbols / pc é imune a isso.
Clorz

Ele roda no VNCViewer. Estou usando a área de trabalho do Gnome e gostaria de substituir o teclado da Apple (tecla Command) pela tecla Ctrl.
ahmed

32

Acabei de instalar o Ubuntu 16.04 dual boot no meu MBP13 "ontem. Para o Ubuntu 16.04, aqui está como eu fiz:

Etapa 1: iniciar o terminal

Etapa 2: Editar extensão do teclado X

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

Etapa 3: faça as seguintes alterações. Verifique se o seu arquivo está assim:

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

...

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

Etapa 4: limpar o cache do xkb

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

Etapa 5 (condicional): se as chaves não forem trocadas após a etapa 4, reinicie o computador. Funcionou para mim depois disso.

Espero que ajude, boa sorte!


Esta é uma solução muito melhor do que a resposta aceita.
Axilus

não funcionou para mim.
chovy

Esta é a resposta real (2017).
CESCO 16/02

Essa é a resposta. Precisa reiniciar após a alteração. Obrigado
racemic

Isso funcionou para mim! Finalmente alternar entre Mac OS e Linux não envolve quase tanto reprogramação memória muscular :)
JoLoCo

15

Entrar System -> Preferences -> Keyboard

Clique na guia "Layouts" e, em seguida, clique no botão "Opções de layout".

Clique em "Comportamento das teclas Alt / Win"

Selecione "O controle está mapeado para as teclas Win (e a tecla ctrl usual).

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


9
Apenas uma observação - isso não troca as chaves, apenas torna as chaves de comando chaves de controle adicionais.
Fabian Tamp

Isso não funciona no Ubuntu 16.04.
único

Isso parece levar ao comportamento desejado no Ubuntu 18.04
RM de Vos

Eu usei "alt é trocado com Win" como eu estou usando o teclado da Apple no Ubuntu.
SM Adnan

6

Vá para as configurações do sistema e, em seguida, para o layout do teclado, depois para as opções, depois para o comportamento das teclas Win / Alt e, em seguida, marque as "Meta switches Ctrl" e, em seguida, na posição Ctrl, selecione "Ctrl switches Meta" e pronto!

em 12.04.1 você altera isso por:

Primeiro, vá para "Configurações do sistema" e clique em "Teclado", depois em "Configurações de layout" (no canto inferior esquerdo), depois em "Opções" no canto inferior direito e depois expanda a guia "Comportamento das teclas Alt / Win" e selecione " O controle está mapeado para ganhar as teclas (e as teclas Ctrl comuns) "


Trabalhou para mim em 12.04. Eu realmente não posso acreditar, mas funcionou. Depois de horas de mexer com .Xmodmap
jyoseph

Isso é ótimo, obrigado. Eu tenho o sistema mais novo (o que você descreve no segundo parágrafo). Ctrl é mapeado para as teclas Win, fazendo com que o Cmd se comporte como Ctrl. Posição da tecla Ctrl -> Ctrl esquerdo como Meta faz o oposto. Também como uma nota lateral, eu tive que ir para Inicialização e Desligamento -> Service Manager -> Serviços de Inicialização e ativar o Daemon do Teclado (isso estava desativado por padrão).
0__

14.04 parece não ter esse link "Opções".
Waldir Leoncio 14/04

Como para o Ubuntu 15.04, esta opção está disponível agora em "Dispositivos de Entrada> Teclado> guia Avançado> Alt seção comportamento chave / Win> Ctrl é mapeado para ganhar Chaves (e as chaves de costume Ctrl)"
Serj Zaharchenko

2
Não
consigo

5

A página de ajuda da comunidade Ubuntu para teclados da Apple fornece as seguintes etapas para fazer permanentemente essa alteração: (testado em 27/05/2017)

Execute o seguinte comando para anexar a linha de configuração ao arquivo, /etc/modprobe.d/hid_apple.confcriando-o, se necessário:

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

Acione a cópia da configuração no arquivo de inicialização initramfs.

sudo update-initramfs -u -k all

Opcionalmente, reinicie

sudo reboot

Para testá-lo temporariamente, você pode executar

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

4

Atualizado para 18.04, pois nenhuma das respostas fornecidas parecia funcionar no meu sistema. Fiz uma instalação limpa do 18.04 e tentei usar um teclado Apple com fio de alumínio. O comportamento padrão do Left Super no inglês americano é mapeado para o Gnome Desktop Dashboard. A ferramenta Tweak tinha todas as configurações necessárias em uma GUI fácil de usar!

sudo apt install gnome-tweak-tool

Primeiro, troquei a tecla de atalho do painel para o lado direito e, em "Opções adicionais de layout", você pode usar "Posição Ctrl / Trocar vitória esquerda com Ctrl esquerdo " para obter um bom efeito.


O gnome-tweak-tool é incrível, obrigado!
Dennis Golomazov 20/12/19

Essa deve ser a resposta aceita. No Mac, atualmente estou descobrindo que o Gnome Tweak Tools tem a configuração desejada em Teclado e mouse> Opções adicionais de layout> Posição Ctrl> Trocar vitória esquerda com Ctrl esquerdo. A tecla Command do teclado do Mac parece ser chamada de "Win".
bhaller 07/07

Em 2019, no Gnome, esta é a solução mais fácil. Obrigado
jymbob

1

Duplicata de Como trocar as chaves de comando e controle com xkb passo a passo?

No 16.04, é aqui que finalmente consegui que isso funcionasse. O Xmodmap não funciona universalmente em todos os aplicativos, a ferramenta gnome tweak não possuía a função, o dconf editou uma troca personalizada de teclas altwin2 (como a resposta principal aqui) falhou, então eu estava arrancando os cabelos até combinar várias respostas nesta completa e simples e solução elegante:

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

altere para:

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        ]   };
};

Salve .

rm -rf /var/lib/xkb/*

(Não sei se isso é necessário, mas fiz.)

Reinicie.


Isso foi legal, mas não consigo usar o mesmo truque para alternar minhas teclas ALT que a tecla Control esquerda. Parece que as teclas ALT funcionam de maneira diferente. Você sabe como eu posso fazer isso?
Pierre Thibault

O mesmo truque funciona para qualquer coisa. Você precisa alternar os mapeamentos de teclas e modifier_map. Você também pode pular em ajustes do gnome ou gconf, eu esqueço quais, e existem várias configurações de alternância como "swap ctrl e alt".
Tom Mercer

Não podemos fazer a: key <LALT> {[Control_L]}; chave <RALT> {[Control_L]}; Alt é tratado de maneira diferente. Então eu usei o Gnome Tweaks. Não consegui exatamente o que queria, mas não é tão ruim.
Pierre Thibault 15/01

Não sei se entendi o seu problema. Se você deseja que ambos os alts se comportem como controles, o arquivo exatamente como acima fará com que ambas as teclas alt se comportem como controles, e ambas as teclas de controle se comportem como alts. Se você pode especificar o que deseja que cada chave seja, talvez eu possa ajudar? Você tentou este arquivo? Qual máquina você está usando e qual teclado? O layout do teclado francês pode estar nos causando problemas.
Tom Mercer

Não, eu não tentei o arquivo. Eu posso ver que mais tarde no arquivo você está fazendo a troca de duas alt para duas ctrl. Eu senti falta disso. Obrigado por apontar. Eu vou tentar isso.
Pierre Thibault

0

Você pode achar que o Kinto é útil. É um projeto que criei recentemente, depois de alguns anos resolvendo esse problema de maneiras diferentes e agora sinto que ele é sólido o suficiente para compartilhar.

O instalador do Kinto simplesmente usa python para fazer a instalação inicial, depois disso é apenas um serviço systemd, bash, xprop, setxkbmap e xkbcomp. No que me diz respeito, é a solução mais rápida e nativa para esse problema que você encontrará.

https://github.com/rbreaves/kinto

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

Aqui também está um Gist, se você quiser apenas ver o que está no centro de tudo, ele não alternará seu mapa de teclas quando necessário. O Gist também não inclui arquivos de mapa de teclas xkb personalizados que configuram cursores no estilo macOS / manipulações de palavras que usam Cmd e as teclas de seta.

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

conteúdo essencial

# 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!
#
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.