Como faço para que a tecla Caps Lock seja uma terceira tecla Shift?

18

Como faço para que a tecla Caps Lock funcione como outra tecla Shift?

Há muitas perguntas aqui sobre como atribuí-lo novamente ou solicitá-lo para executar um comando personalizado. Eu só quero que ele funcione como outra tecla Shift. Não quero que nenhuma outra chave mude o que eles fazem, apenas essa.

Layout do teclado / O comportamento das teclas Caps Lock não funciona, não sei como remapear no CCSM.

Agora estou usando um teclado do Reino Unido, mas aprendi a digitar em um teclado dos EUA. A menor tecla Shift à esquerda é DRIVING ME NUTS.

Tom Brossman
fonte
11
Possível duplicata de Como posso remapear a tecla Caps Lock para ser Shift Lock?
Waldir Leoncio 27/07
11
@ David-yourfriend OP disse especificamente xmodmapque não funciona.
TheWanderer 02/09
11
No xkb, isso parece ter algo a ver com mapas de compatibilidade que traduzem certas combinações de teclas em ações, em vez de símbolos. Isso levará mais tempo de pesquisa e teste do que eu tenho disponível no momento. Se eu tiver a chance de aprofundar isso, se não, talvez essa migalha de pão leve outra pessoa na direção certa.
Elder Geek

Respostas:

13

Expandindo na resposta @ Zacharee1:

faça um backup com cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

edite com gksu gedit /usr/share/X11/xkb/symbols/pcou com o seu editor favorito.

Encontre a linha (22) que diz:

key <CAPS> { [ Caps_Lock ] };

e mude para

key <CAPS> { [ Shift_L ] };

e a linha (36) que diz:

modifier_map Lock { Caps_Lock };

e mude para

//modifier_map Lock { Caps_Lock }; (que deve comentar com efeito desativando o bloqueio)

O teste indica que o Num Lockainda funciona conforme o esperado. Testes adicionais indicam que as luzes indicadoras do teclado parecem um pouco disléxicas na versão 16.04, mesmo em um sistema não modificado. O indicador Scroll Lock acende no login, mas Scroll lock desativado e a luz Num Lock apagada, mas Num lock ativado. Tocar na Ctrltecla esquerda parece resolver esse comportamento e não tenho certeza se está relacionado ao meu uso de um comutador KVM (o que é possível)

Nota: Testes adicionais mostram que a luz indicadora do NumLock é acesa mesmo sem uma chave KVM e precisa ser tocada duas vezes para voltar a sincronizar com o NumLock. duas vezes para recuperá-lo em sincronia. Por que isso ocorre é provavelmente a base para uma nova pergunta ...

Outra solução simples para o seu problema original seria simplesmente obter um teclado americano barato e usar o mapeamento de teclado americano.

Fontes: @ Zacharee1 resposta e análise /usr/share/X11/xkb/symbols/pce teste de tentativa e erro

Elder Geek
fonte
Então você teve que desativar essa coisa da linha 36? Apenas mudar para o Shift_Lsuficiente para desativar completamente o capslock para mim.
TheWanderer
@ Zacharee1 Eu pensei que poderia ser a causa do impacto no Numlock que Tom Brossman mencionou em um comentário no seu post e o retirou apenas por esse motivo.
Elder Geek
Hmm. Pode ser isso. Estou vendo se consigo fazer com que Zanna teste com uma VM, já que ela tem uma placa no Reino Unido.
TheWanderer
@ Zacharee1 Isso seria legal, pois não tenho esse hardware disponível para teste e geralmente confio na lógica nos casos em que o teste completo não é possível.
Elder Geek
Isso foi feito finalmente, testado e funcionando (por enquanto, pelo menos). É estranho que a luz Num Lock do meu teclado esteja apagada, mas as teclas numéricas extras estão ativadas por padrão quando eu entro e é isso que eu estava procurando. Obrigado!
Tom Brossman
10

Você pode chegar lá adaptando Como alterar a tecla CapsLock para produzir "a"? (por exemplo).

Remova o Lockmodificador (= Caps Lock) da Caps Lockchave e declare que essa chave envia o chave de acesso Shift_L.

remove Lock = Caps_Lock
keysym Caps_Lock = Shift_L

Como alternativa, você pode remover o Lockmodificador e adicioná-lo Shift.

remove Lock = Caps_Lock
add Shift = Caps_Lock

De qualquer maneira, essas linhas vão para o arquivo ~/.Xmodmap. Teste carregando-o com xmodmap ~/.Xmodmap; o arquivo é lido automaticamente quando você faz login no ambiente padrão (ou pelo menos nos dias de Gnome).

Gilles 'SO- parar de ser mau'
fonte
2
Perfeito, isso funcionou. Criei um novo documento vazio no meu diretório pessoal chamado '.Xmodmap' e colei seu primeiro exemplo nele. Em seguida, digitei 'xmodmap ~ / .Xmodmap' no terminal para que ele entre em vigor imediatamente. Ambos são explicados na resposta vinculada. Obrigado.
precisa
O segundo conjunto de comandos não funciona para mim, mas o primeiro funciona muito bem. Pressionar Caps Lock nem acende a luz do teclado, nem aciona meu TOC latente.
Waldir Leoncio 27/07
Boa resposta, Gilles! Apenas para adicionar à sua resposta, isso também pode ser feito como um único comando: xmodmap -e "clear Lock" -e "keysym Caps_Lock = Shift_L" e desfeito setxkbmap -option , que não grava no ~/.Xmodmaparquivo, mas pode ser usado quando necessário e adicionado aos Aplicativos de Inicialização. Resposta muito boa!
Sergiy Kolodyazhnyy 3/09/16
7

Ignorando minhas tentativas anteriores de responder que falharam, encontrei algo que transforma completamente o capslock no turno esquerdo. Sem alternância, acho que é persistente e é bem simples.

Primeiro, recomendo fazer um backup, antes de apresentar como alterá-lo.

Corre sudo cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

Agora que há um backup, vamos à edição.

Use seu editor de texto favorito para editar este arquivo como raiz:

/usr/share/X11/xkb/symbols/pc

Encontre o segmento que se parece com isso (é perto do topo, linha 22 para mim):

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return                ]   };

key <CAPS> {    [ Caps_lock             ]   };
key <NMLK> {    [ Num_Lock              ]   };

editar

key <CAPS>  {   [ Caps_lock             ]   };

ser estar

key <CAPS> {    [ Shift_L, Caps_Lock    ]   };

em vez de. (O Caps_Lockdepois Shift_L,pode ser desnecessário.)

Reinicie o seu gerenciador de exibição (normalmente sudo service lightdm restart) e o capslock agora ficará à esquerda. ( Nota: minha máquina de teste usa o GNOME, então tive que reiniciar gdm. No entanto, isso causou algumas oscilações estranhas no fallback TTY e gdmnunca foi reiniciado. Eu tive que reiniciar completamente.)

Na verdade, este foi capaz de testar e posso confirmar que funciona.

Adaptado do xmodmap permanente no Ubuntu 13.04

O andarilho
fonte
Obrigado, mas isso interfere no Num Lock, que deixo permanentemente. Na minha solução de problemas anterior, alterar Caps_lock> Shift_L in /usr/share/X11/xkb/symbols/capslocktambém interferia no Num Lock. Há algo diferente no 16.04, por exemplo, a luz do Num Lock costumava permanecer na inicialização, mas agora se apaga no login do LightDM. Quando testo sua solução, ela altera Caps Lock para Shift, mas na primeira vez que pressiono Caps Lock, o Num Lock é desativado e tenho que pressionar Num Lock DUAS VEZES para ativá-lo (apenas na primeira vez). Bizarro. Realmente aprecio a ajuda até agora.
Tom Brossman
Talvez eu precise fazer uma nova pergunta "Como evitar a interferência de remapeamento do Caps Lock no Num Lock no 16.04?" mas adoraria encontrar a causa raiz aqui. Ou isso ou tempo de abrir o teclado para cima e fazer algumas modificações físicas a ele ...
Tom Brossman
Isso é estranho. O numlock funciona novamente se você executar xkbset nullify lock?
TheWanderer 02/09
@ TomBrossman Não sei se isso muda alguma coisa para você, mas funciona para mim. Em vez de apenas Shift_Lcolocar Shift_L, Caps_Lock. Verifique se os suportes estão alinhados.
TheWanderer 02/09
11
@ TomBrossman Gosto de usar o sudo se não for perigoso, só para ter certeza: p. Quando editei o arquivo, o L para turno estava em maiúsculas e também o caps lock. Esquisito. A coisa do NumLock também é estranha, pois funciona bem para mim. Essa coisa toda é estranha: p
TheWanderer 02/02
3

Para 14.04

Uma linha:

xmodmap -e 'keycode 66=Shift_L'

MAS , no caso inesperado, 66não é o código-chave correto, primeiro execute xevno console e pressione CapsLock. Então você verá algo como:

KeyPress event, serial 27, synthetic NO, window 0x1200001,
    root 0x101, subw 0x0, time 6417361, (340,373), root:(342,393),
    state 0x0, keycode XX (keysym 0x0207, Caps_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

O código de chave correto é o indicado no XX.

Elder Geek
fonte
11
Olhe para a mensagem de recompensas: Xmodmap trick no longer works and xkb handles this now..
TheWanderer
Oh meu! é por causa do 16.04? Funciona no meu 14.04. O comentário da recompensa parece não especificar.
Eu não ganhei a recompensa, então realmente não sei.
TheWanderer
Desculpe, esta é uma nova instalação do 16.04. A tecla Shift esquerda ou direita ficaria bem, eu escolhi a esquerda para a pergunta porque é adjacente e as xevvê como teclas diferentes.
Tom Brossman