Questão como remapear Ctrl para Escape se pressionado e liberado por conta própria


Eu quero remapear o controle, para que:

  1. Se for pressionado e liberado sem outra chave, ele age como   Esc.
  2. Se for pressionado e mantido junto com outra tecla, Agir como Ctrl (sem alteração no comportamento neste caso).

Estou ciente de Como faço para remapear certas chaves ou dispositivos?, então eu suspeito que isso pode ser feito com xmodmap. Mas essa resposta não explica como mapear as teclas modificadoras. Examinei os exemplos e as seções gramaticais da página do xmodmap, mas eles não explicam isso. A resposta em Remapeando o Caps Lock para Controlar e Escapar (não da maneira usual) mencionar que não é possível fazer isso para Caps Lock, uma vez que é uma chave de bloqueio, mas espero que isso seja possível fazê-lo com o controle, que é uma tecla mod. Uma solução com algo diferente de xmodmap também será aceita. (Estou executando o Xmonad no Ubuntu 12.04, então talvez haja uma maneira de configurar isso em xmonad.hs?)

EDIT: O mais próximo que eu posso conseguir é:

xmodmap -e 'remove Control = Control_L'
xmodmap -e 'keysym Control_L = Escape'
xmodmap -e 'add Control = Escape'

Com isso eu recebo Escape quando eu pressiono o Ctrl esquerda chave sozinho, mas para obter, digamos, Ctrl+UMA Eu tenho que pressionar o  Ctrl esquerda tecla duas vezes: Ctrl, Ctrl+UMA (em vez de apenas Ctrl+UMA) - não tenho certeza porque eu preciso pressioná-lo duas vezes.


4
2017-11-22 22:30


origem




Respostas:


A última resposta para Remapeando o Caps Lock para Controlar e Escapar (não da maneira usual) diz que este utilitário fará o que você quer: https://github.com/alols/xcape


3
2017-12-04 08:21





Isso pode ser feito com xmodmap, mas esteja ciente de que se você definiu algumas coisas com setxkbmap, o último programa irá anular e limpar xmodmap configurações.

No entanto, para fazer exatamente o que você quer com xmodmap, pode entrar

xmodmap -e "keysym Control_L control = Escape Control_L" 

Agora, se você olhar xmodmap -pmEscape foi adicionado ao modificador de controle. Isto significa que quando o controle da esquerda é pressionado, o escape será o resultado, mas quando o controle é pressionado com outra tecla (como em Ctrl+C), ainda dará o mesmo resultado de antes.

Teste-o entrando no terminal man xmodmap e, em seguida, pressione ctrl enquanto olha para a manpage e vai eco 'esc', mas quando você pressiona Ctrl+Z ele irá suspender a página.

Se você deseja redefinir suas experiências com xmodmap, logout e login novamente, e se você deseja definir o xmodmap comando como um item de inicialização, veja minha resposta aqui:


1
2017-11-26 18:07



Obrigado pela sua resposta. Infelizmente, depois de aplicar seus passos, acabo quase na mesma situação que mencionei acima; isto é, Ctrl + A, Ctrl + K, Ctrl + R etc. não funcionam (em vez disso, enviam escape). Para obter, digamos, Ctrl + A, eu tenho que pressionar Ctrl duas vezes, a segunda vez junto com A. (FWIW, eu nunca defini setxkbmap, a menos que ele venha com a instalação padrão do ubuntu 12.04). - psvm
@psvm Ele funcionou para mim - eu era capaz de usar ctrl como escape e depois ctrl + C, por exemplo, então não sei por que isso não aconteceu para você. É estranho que você tenha que pressionar ctrl duas vezes: acho que isso pode ser parte do problema; pode ser uma chave danificada. Também devo verificar se você aplicou alguma configuração no GUI do teclado, pois talvez essas configurações estejam causando os problemas. Se for um problema com suas chaves, nenhum comando funcionará com sucesso.
Deixe-me ser mais claro: eu concordo com você que Ctrl + C, Ctrl + Z funcionam. Eu discordo que Ctrl + K, Ctrl + R, Ctrl + A funcionam. Ou seja, afirmo que com essa solução, algumas combinações funcionam e outras não. Você poderia verificar, por exemplo, que Ctrl + A funciona na linha de comando depois de aplicar sua solução? Basta abrir um terminal simples e digitar algo no prompt do bash e, em seguida, usar Ctrl + A: você coloca o cursor no início dessa linha? Para mim, não funciona (instalação padrão de 12.04, nunca toquei nas configurações do teclado) e tenho que pressionar A duas vezes ou Ctrl duas vezes. - psvm
@psvm Vou verificar isso, só um minuto.
@psvm Sim, você está correto - o crtl-a leva duas pressões de ctrl, mas ctrl-c e ctrl-z funcionam. Eu vou ver se consigo descobrir o porquê.