Mal funcionamento do CapsLock no Linux Mint e distros parecidas

INTRODUÇÃO: Basicamente, não utilizo a tecla Shift para inserir uma letra maiúscula. Ao invés disso, utilizo CapsLock: inserio a letra com a tecla CapsLock ativada e desativo posteriormente, porém em uma velocidade muito rápida, visto que uso esse processo desde criança. Portanto, me acostumei e raramente utilizo Shift.

PROBLEMA: Nas distros baseadas em Ubuntu e mesmo na distro do Linux Mint Debian, há um “delay” no uso do capslock, fazendo com que as duas primeiras letras fiquem em maiúsculo (erro que não acontece no Windows).
Já procurei em fóruns estrangeiros, mas ainda não encontrei uma boa solução: seja um app .deb, seja inserção de comandos no terminal.

Informações gerais:

  • Notebook Acer Aspire E1-572
  • No Windows, utilizo o driver padrão do teclado: Teclado Padrão PS/2 | ELAN 11.116.0.0
1 Curtida

Mesmo problema, kkkkk, pesquisei, pesquisei e nada. Até achei um comando, “script de inicialização”, só que transforma seu teclado num teclado americano, remove a letra ç, acentos, buga tudo.

Não encontrei nada compatível com teclado brasileiro.

É bizarro que no Windows isso não existe, então tanto faz qual tecla você utiliza, se caps ou shift.

E eu pensando que o que me impossibilitaria de migrar para o Linux seria a falta de algum programa ou jogo, mas na verdade vem sendo o teclado, não pode digitar da forma que eu quero.

Mó tristeza ter que ser forçado a re-aprender algo no qual você já se habituou só por causa de vontade de sistema operacional.

1 Curtida

Você possui um link para o script? Pode ser que ele roda algum comando ou adiciona algum tipo de parâmetro, podendo ser adaptado para o português brasileiro. Procurando, eu achei um:

Eu tentei simular o problema no openSUSE Leap 15.1 e não consegui.

Foi esse mesmo, acredito. O problema é que ele deixou a escrita mais lenta, como se houvesse um delay em todas as teclas, além do fato de ter atrapalhado o uso de acentuação. Geralmente, os “patches” que encontro são só feitos por gringos. Ninguém aqui no Brasil se importou o suficiente pra criar algo nesse nível, não ao menos que eu tenha encontrado.

Olha, tentei reproduzir o comportamento mas não deu certo nem no meu desktop (gentoo), nem na máquina virtual (mint dentro do gentoo com usb passthrough do teclado), nem no meu notebook com Linux Mint Debian Edition…

Segundo ponto que analisando o script postado ele só muda uma pequena característica do seu mapa de teclado atual. Estranho ter mudado de idioma. Enfim… não consigo mais.

Puxa, eu vou precisar me adaptar ao Shift, talvez ?
Ainda vou procurar alternativas de script, mas caso alguém se dispor a me auxiliar, eu ficaria grato.

Realmente, no mundo Linux esse delay existe e não tem como “arrumar”
vc vai ter que se reacostumar com o shift ou adicionar um “delay mental” pra resolver isso, nunca achei uma “solução” pra isso também

1 Curtida

“Realmente, no mundo Linux esse delay existe” Não senhor! Aqui no meu note com ubuntu 16.04 não existe esse problema não. Quem lhe disse q isso acontece em toda distro linux? De onde vem essa informação?

2 Curtidas

com certeza não!! aqui tambem não axistem nenhum problema e olha que uso uma distro nova em um PC “antigo”.

Poderia, por favor, dizer as configurações do seu not ?
Dependendo, pode ser um problema “nativo” de notebooks fracos, antigos ou apenas específicos.

Olá @emosqueti :wave:

Se caso você usa o Xorg, testa o Wayland para ver. :v:

A explicação pro delay é até simples. O caps_lock pode estar ativo ou inativo. Ele passa de inativo para ativo, quando a tecla é pressionada e permanece assim mesmo que a tecla seja liberada.

Por outro lado, passa de ativo para inativo apenas quando a tecla é liberada.

Ou seja, a seguinte sequência é válida, estando o caps_lock INATIVO
CAPS_LOCK pressionado — caps_lock ATIVO
CAPS_LOCK liberado — caps_lock ATIVO
CAPS_LOCK pressionado — caps_lock ATIVO
CAPS_LOCK liberado — caps_lock INATIVO

Então, estando o caps_lock ativo e a pessoa digita caps_lock e depois uma letra, muito rapidamente, o KeyPress da letra pode ser tratado ANTES do KeyRelease do caps_lock.

Dá pra fazer esse teste com o

xev

Ative o caps_lock e depois tecle rapidamente <CAPS_LOCK> x

Tem que ser muito rápido e pode precisar que se repita o experimeto algumas vezes. Cedo ou tarde você verá os dois eventos – KeyPress do caps_lock e KeyPress do x – antes do KeyRelease do caps_lock.

Mesmo sendo fácil de identificar o problema e até pensar em uma solução (por exemplo, é só fazer o caps_lock destivar no KeyPress, uai!), tem que hackear um bocado para entender como tudo funciona e implementar a solução.

Não sei se o Wayland tem o mesmo problema. Tem algum programa para testar isso ? Ou só no “teste de digitação” mesmo ?

Andei me batendo com esse troço. Estou no caminho, mas preciso testar mais.
De qualquer modo, eu consegui que o CAPS_LOCK funcionasse como o @emosqueti e o @KeepAway descreveram, da seguinte forma.

criei o arquivo /usr/share/X11/xkb/symbols/brcaps com o conteúdo :

default
xkb_symbols "abnt2" {
   include "br(abnt2)"
   name[Group1]="Portuguese (Brazil) caps";
   key <CAPS> {
       type="ALPHABETIC",
       repeat=No,
       symbols[Group1]= [ Caps_Lock, Caps_Lock ],
       actions[Group1]= [ LockMods(modifiers=Lock),
                          LockMods(modifiers=Shift+Lock,affect=unlock) ]
   };
}; 

Uma vez criado o arquivo, se quiser usar essa configuração do CAPS_LOCK é só executar

setxkbmap -layout brcaps

Para voltar pro padrão, basta

setxkbmap -layout br

Claro, presumindo que o layout que vocês usam normalmente é o br.

Na dúvida, dá para consultar o layout com

setxkbmap -query

O fato é que funcionou normalmente aqui no meu PC.

Espero que funcione para vocês dois. Caso contrário, dêem um toque para eu ver o que precisa mudar.

2 Curtidas

Positivo Stilo XC3650 intel dual core.

Eu acho que existe, Kalebe.

Você pode fazer o seguinte teste.

  • Pressione (e mantenha pressionada) a tecla <CAPS_LOCK>.
  • Digite kalebe.

O resultado deve ser KALABE em maiúscula.

  • Solte a tecla <CAPS_LOCK>
  • Digite kalebe.

O resultado deve ser (de novo) KALEBE em maiúscula.

Agora é a hora do “vamos ver”

  • Pressione novamente (e mantenha pressionada) a tecla <CAPS_LOCK>
  • Digite kalebe.

Se o resultado for KALEBE, em maiúscula, o tal do delay existe. O caps_lock não desativou quando você pressionou a tecla. Só vai desativar quando você soltar.

Soltando a tecla <CAPS_LOCK> e escrevendo kalabe, vai estar em minúscula.

O arquivo que eu sugeri, resolve esse problema.

Se o caps_lock estiver ativo (tudo que você escreve está em letra maiúscula), ao pressionar a tecla <CAPS_LOCK>, ele desativa imediatamente (antes mesmo de você soltar a tecla).

“Pressione (e mantenha pressionada) a tecla <CAPS_LOCK>”
Vc sabe q o funcionamento da tecla CapsLock não é “segurando” né? rs. Acho q entendi seu problema. Vc está usando a tecla caps como se fosse a tecla shift. Capslock vc so aperta uma vez nela pra deixar as letra maisculas e minusculas.
Ex: Quero escrever meu nome todo em maisculo usando capslock. Aperto apenas uma vez no capslock, digito menu nome e vai sair assim: KALEBE. Agr quero q tudo q eu digite sai minusculo então aperto (uma vez) novamente caps lock.

Realizei todo um trabalho de faculdade no meu notebook e afirmo! Esse problema não existe! Pelo menos não nos 4 anos que uso Linux (Ubuntu) em meus computadores kk. Tanto é que nunca ouvi falar em nenhum site de tecnologia Linux. Por tanto acredito fortemente que se trata de um caso isolado.

kkkkk !
Claro que eu sei, Kalebe.

É só um teste para identificar se o delay existe.

O problema é, estando o caps_lock desativado, ele ativa quando você pressiona a tecla <CAPS_LOCK>

O contrário não é verdadeiro.
Estando o caps_lock ativado, ele não desativa quando você pressiona a tecla <CAPS_LOCK>. Só desativa quando você solta essa tecla.

O procedimento que sugeri é justamente para você verificar se isso ocorre no teu PC ou não.

Claro que existe.

Faça o procedimento que sugeri e anote o resultado.
Agora faça em um Windows. Acho que o resultado vai ser diferente. Infelizmente não tenho nenhum Windows aqui para confirmar.

Acontece que a gente se habituou a usas o <CAPS_LOCK> da forma que ele foi desenhado para funcionar, no Linux. Mas tem gente que não conseguiu se habituar a esse comportamento. Para eles, o problema existe.

Não é não Kalebe. Tanto que tem até um fix no github. E se você pesquisar por

linux caps lock delay

no google, vai achar um monte de página falando sobre o assunto e sugerindo algum script para rodar.

Eu só fiz foi dar uma estudada no assunto e desenvolvi uma solução sem script, que fica nativa no sistema.

Eu acho que aindo posso melhorar. Tornar uma variante do layout, ou coisa assim. Mas antes, preciso saber se funcionou para o @emosqueti e para o @KeepAway

1 Curtida

Emerson !

Se você estiver com dificuldade de criar o arquivo no lugar certo, abre o editor no modo gráfico, copia o texto e salva como brcaps.

Depois disso, vai para um terminal e executa

sudo cp brcaps /usr/share/X11/xkb/symbols/

Agora é só seguir os procedimento de trocar o layout (estão no post 13).