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.


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.


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

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

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

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.

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.