Como remapear a tecla Super (esquerda) para controlar a tecla

26

Alguém poderia me dizer como remapear minha Superchave (esquerda) para Ctrlchave?

Quero dizer Super(esquerda) deve funcionar como Ctrlchave.

Sandy
fonte
Deseja que apenas a tecla Super esquerda atue como Ctrl? É fácil remapear os dois ao mesmo tempo nas configurações de Layout do teclado, mas a alteração de apenas uma teria que ser feita através dos arquivos de configuração.
Pconley 15/05
Sim, eu só quero a tecla esquerda Super agir como Ctrl ..
Sandy
A tecla super se refere à tecla do teclado que possui um logotipo do MS Windows e fica entre a tecla Ctrl esquerda e a tecla alt / right alt gr esquerda e uma tecla com outro logotipo estranho?
René Nyffenegger
1
@ RenéNyffenegger A tecla Super é a Windowstecla nos teclados de PC e a Commandtecla nos teclados da Apple. Não tenho muita certeza de qual é a outra chave que você descreve
#

Respostas:

28

Para fazer grandes alterações em seu teclado, incluindo remapear caracteres e alterar modificadores, você precisa usar o utilitário xmodmap - consulte man xmodmap. Existem algumas maneiras de executar as alterações:

  • na linha de comando

    xmodmap -e "your commands"
    
  • ou escreva os comandos em um arquivo como .xmodmaprc, em seguida, execute-o nos itens de login ou no seu .bashrc com

    xmodmap .xmodmaprc
    

    Se você nomear o arquivo, ~/.xmodmapele será executado automaticamente no login.

Agora os comandos

O que você quer fazer é um processo de duas etapas. Primeiro, você remove o mapeamento do Super do modificador e depois o mapeia para controlar.

  1. Execute xmodmap -pmem uma janela de terminal para obter uma lista dos modificadores associados. Na minha máquina (e provavelmente a sua), Super é chamado de mod4. Super_Le Super_Rsão teclas separadas que produzem o mesmo modificador.

    Agora você pode remover o mapeamento do modificador dele. Execute o comando xmodmap (usando um dos métodos acima)

    remove mod4 = Super_L
    

    Agora, a chave física ainda é referida internamente como Super_L, mas não faz nada.

  2. Agora apenas remapeá-lo. Execute o comando xmodmap:

    add control = Super_L
    

Se você quiser desfazer isso mais tarde, basta executar os mesmos comandos com os argumentos apropriados.

Não Super_R?

A saída do xmodmap -pm pode fornecer várias chaves chamadas Super_L, mas nenhuma chamada Super_R). Nesse caso, agora você tem várias chaves extras atribuídas ao Control, mas nenhuma atribuída ao Super. Você precisará renomear uma chave. (NB: pode fornecer vários Super_L e pelo menos um Super_R. Isso é bom.)

Os nomes das chaves na tabela têm um número hexadecimal entre parênteses ao lado deles. Esse número é o código físico da tecla do teclado (pode variar de acordo com o modelo). Se você precisar alterar um Super_L para Super_R, encontre primeiro o código-chave que deseja associar ao Super_R (não tem certeza qual é o correto? Execute, em xevseguida, toque no Super certo algumas vezes. Em algum lugar no labirinto de saída está " keycode = 133 "(com um número diferente)). Execute o comando xmodmap

keycode 133 = Super_R

renomear a chave,

add mod4 = Super_R

para atribuir a Super.

pconley
fonte
Antes de tudo, obrigado por passar um tempo para mim. Quando digitei "remove mod4 = Super_L" no terminal, recebi esta mensagem: remove mod4 = Super_L: comando não encontrado . Captura de tela: i.imgur.com/fbvEA.png
Sandy
1
Esse é um comando para o utilitário xmodmap. Você deve executá-lo por um dos métodos que eu forneci na primeira seção. Eu editei minha resposta para deixar isso mais claro.
Pconley
Você também pode me dizer como executar esses comandos na inicialização?
284 Sandy Sandy
Quando você faz login ou quando o sistema é inicializado? Se for o primeiro, basta colocar os comandos no arquivo '.xmodmap' no seu diretório pessoal; o último seria mais apropriado para uma pergunta separada, na linha de 'como executo um script na inicialização' (essas perguntas provavelmente já foram feitas antes).
Pconley
Para mim não funcionou sem chave . keysym Super_L = Control_L
Aliaksandr Sushkevich 10/02
19

Linha de comando:

xmodmap -e "remove mod4 = Super_L"
xmodmap -e "add control = Super_L"

Ou insira ~/.Xmodmappara ativar na inicialização:

remove mod4 = Super_L
add control = Super_L
Coc
fonte
4

No Ubuntu, você pode editar /etc/default/keyboarde definir:

XKBOPTIONS = "altwin: ctrl_win"

Qual:

Ctrl é mapeado para as teclas Win (e as teclas Ctrl usuais)

Leia man 5 keyboardpara mais informações. Você pode encontrar todas as combinações possíveis de opções no seu sistema fazendo:

grep alt /usr/share/X11/xkb/rules/evdev.lst | grep win
Mitar
fonte
2

Se você deseja fazer com uma GUI:

  1. Instalar / abrir ajustes do Gnome
  2. Clique Keyboard & Mouse
  3. Clique Additional Layout Options
  4. Expandir Ctrl position
  5. Selecione Swap Left Win with Left Ctrl
Rico
fonte
1

Tente com isto:

clear Control
clear mod4
remove Control = Control_L Control_R
remove mod4 = Super_L Super_R
add Control = Super_L

Coloque as linhas acima no seu ~/.Xmodmape execute xmodmap ~/.Xmodmap.

Rendon
fonte