Remapear Caps Lock para Control e Escape (não é o modo usual)

25

Eu sei como usar o xmodmap para remapear a tecla Caps Lock para que ela funcione como uma tecla Control ou como uma tecla Escape. Gostaria de combinar os dois recursos da seguinte forma:

Quando eu pressiono e libero a tecla Caps Lock, ela envia Escape. Quando eu seguro Caps lock e pressiono outra tecla (diga A), ele envia Control-A.

Existe alguma combinação de xkb, xmodmap e alguma outra coisa que poderia fazer com que Caps lock se comportasse dessa maneira em X?

Estou usando o Ubuntu Precise em um Macbook Air 3,1.

    
por user372737 19.08.2012 / 19:18

6 respostas

-2

Você pode fazer o primeiro (mapeamento Caps Lock para Esc ), mas você não pode fazer o segundo.

Explicação simples: Caps Lock simplesmente não foi projetado para fazer algo quando pressionado.

Explicação detalhada: Existem muitos tipos de chaves. Dois deles são Teclas modificadoras e Teclas de Bloqueio .

Caps Lock é uma Lock Key enquanto chaves como Ctrl , Alt e Shift são Teclas modificadoras .

É evidente a partir de seus nomes que Modifier Keys modificam a função da (s) próxima (s) tecla (s) pressionada (s) e Lock Keys agem como um interruptor para ativar ou desativar alguma função particular.

Agora, como Caps Lock é uma Lock Key , você não pode se comportar como uma Modifier Key sem mapeá-lo para um. Caps Lock por si só não pode funcionar como uma chave modificadora .

    
por green 20.08.2012 / 10:02
31

Eu tenho essa configuração no meu Mac e tentei encontrar um caminho para o Ubuntu sem sorte.

Bem, agora está funcionando. Obrigado por me apontar para o xcape . O que eu fiz é muito simples e direto.

  1. Em Preferências do sistema > Layout do teclado > Opções ... > Posição da tecla Ctrl, verifiquei "Caps Lock como Ctrl".

  2. xcape -e 'Control_L = Escapar'

Concluído, o Caps Lock funciona como Ctrl quando usado como um modificador e como Esc quando pressionado sozinho (há um pequeno atraso de algumas centenas de milissegundos, conforme observado no arquivo README do xcape, por isso ainda não é tão ideal quanto o Mac solução que usa o KeyRemap4MacBook.)

    
por Vic Goldfeld 12.12.2012 / 19:37
6

Estou procurando por isso também. Há uma semana encontrei uma solução parcial usando xmodmap :

add Control = Caps_Lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

Isso obviamente não funciona perfeitamente, ele envia o Escape e o Ctrl ao mesmo tempo quando pressiono o CapsLock, mas fiquei feliz com isso por um tempo.

Finalmente, encontrei este pequeno link . Então agora eu posso simplesmente remapear CapsLock para Ctrl e deixar o xcape fazer o seu trabalho.

    
por tungd 01.12.2012 / 16:49
4

EDIT: Corrigido isso para os gerentes de exibição mais inteligentes (mais recentes).

Per Louis e os comentários de Sergiy Eu descobri essa solução que está funcionando no Ubuntu 16.04 (Xenial) com LightDM e Unity.

Eu coloquei a seguinte linha de código no meu arquivo .xprofile em meu diretório pessoal.

setxkbmap -option 'caps:ctrl_modifier' && xcape -e 'Caps_Lock=Escape' &

O trailing & amp; coloca o comando xcape em segundo plano para que ele não bloqueie sua sessão. O setxkbmap faz sua alteração imediatamente.

Sergiy:

% bl0ck_qu0te%

Louis:

% bl0ck_qu0te%     
por dragon788 26.03.2016 / 23:46
1

Eu criei uma ferramenta em C especialmente para esse propósito que supera muitos dos problemas com a solução xcape / xmodmap :

por pepper_chico 13.10.2016 / 02:48
1

Instale xcape

sudo apt-get install xcape

Adicione as duas linhas no seu ~/.bashrc

/usr/bin/setxkbmap -option 'caps:ctrl_modifier'⏎
/usr/bin/xcape -e 'Caps_Lock=Escape' -t 100

Observe a parte -t 100 , se você não configurá-lo, poderá notar um atraso no Esc se você usar o vim.

    
por Searene 04.12.2016 / 14:56