Posso mapear uma tecla (caps lock) para fazer uma coisa pressionada sozinha e outra quando pressionada com uma segunda tecla?

3

Apenas leia esta postagem seriamente obsessiva sobre a personalização de teclados e enquanto eu estiver não vai fazer tudo lá, há algumas idéias que eu gostaria de deletar. Em particular, ele configurou a tecla Caps Lock para que:

  • quando pressionado e solto sozinho, é mapeado para Esc
  • quando pressionada e pressionada, e uma segunda tecla é pressionada, ela é mapeada para Ctrl

Como ele diz, isso é ótimo para os usuários do vim. Isso é possível no Ubuntu?

Ele também faz algo similar com as teclas Shift da direita e da esquerda. Quando pressionados sozinhos, eles mapeiam para ( e ) mas se outra tecla for pressionada, eles agem como você espera que Shift funcione.

    
por Hamish Downer 04.10.2012 / 10:42

2 respostas

4

Encontrei uma resposta em unix.se pelo menos para a parte Caps Lock / Ctrl / Esc.

Primeiro remapeie Caps Lock para um controle extra colocando o seguinte em ~/.profile

if [ $DISPLAY ]
then
  # Add the 3 lines below to Convert caps-lock into Control
  xmodmap -e 'remove Lock = Caps_Lock'
  xmodmap -e 'keysym Caps_Lock = Control_L'
  xmodmap -e 'add Control = Control_L'

  # and xcape is in Startup Applications
fi

Em seguida, vá para xcape - você precisará instalar as dependências (consulte o README) e fazer make e% código%. E então faz o que o README diz:

  

O xcape é executado como um daemon e intercepta a tecla Control. Se a tecla Control for pressionada e liberada sozinha, ela gerará um evento-chave de escape.

Estou usando agora e é muito bom:)

Eu acho que uma versão modificada poderia fazer a coisa shift / parênteses também.

    
por Hamish Downer 09.10.2012 / 00:06
2

No Ubuntu 16.04

1ª opção

Caps_Lock como Ctrl

  • abra o arquivo /etc/default/keyboard e altere XKBOPTIONS="" para:

    XKBOPTIONS="caps:ctrl_modifier"
    

Caps_Lock como Esc

  • instale o xcape com

    sudo apt install xcape
    
  • crie .xsessionrc no diretório inicial (ou edite se já existir)

  • adicione a seguinte linha a ~/.xsessionrc

    #!/bin/bash
    
    /usr/bin/xcape -e 'Caps_Lock=Escape'
    

Nota

  • você precisa fazer logout, em seguida, faça o login.
  • para uma lista completa de todas as opções que você pode definir em (1), verifique a seção ! options em

    /usr/share/X11/xkb/rules/*.lst
    

2ª opção

você pode usar o seguinte script para obter o mesmo comportamento em uma sessão.

#!/bin/sh

# Super Caps

/usr/bin/setxkbmap -option 'caps:ctrl_modifier'  # rebind Caps_Lock to Ctrl, when held down, accomapgnied with other button
/usr/bin/xcape -e 'Caps_Lock=Escape'             # rebind Caps_Lock to Esp, when tapped alone
  1. coloque o conteúdo acima em um arquivo, em qualquer local

por exemplo. custom_capslock em ~/.local/bin/

  1. torne-o executável

     chmod a+x custom_capslock
    
  2. adicione-o a Startup Applications , adicionando o caminho completo de o script no campo Comando.

por exemplo, /home/yourname/.local/custom_capslock

PS: se você quiser usar systemd ou /etc/rc.local de "Startup Applications", certifique-se de que seu script não foi substituído por outros serviços do sistema

    
por yaitloutou 12.02.2017 / 17:39