Por que a tecla Scroll Lock está desativada no Cinnamon / Linux / Xorg?

13

Recentemente, comprei um teclado retroiluminado que foi projetado para que a tecla Scroll Lock fosse usada para alternar a luz de fundo. Eu rapidamente descobri que o Canela não responde corretamente quando a tecla Scroll Lock é pressionada. Originalmente, eu pensei que a luz de fundo do teclado era DOA porque todo o resto funcionava imediatamente. Após uma reinicialização, descobri que, antes de iniciar o Xorg, era possível alternar com êxito a luz de fundo usando a tecla Scroll Lock. Então, mais uma vez, após iniciar o Xorg (e, consequentemente, cinnamon_session), essa funcionalidade parou de funcionar novamente.

Para que a luz de fundo funcionasse após o lançamento do Xorg, fui forçado a emitir um: xset led named "Scroll Lock"para ativar e desativar essa funcionalidade.

Depois de um pouco de pesquisa, deparei-me com um programa chamado xevque despejava as principais informações do evento no terminal após o início. Ao pressionar a tecla Scroll Lock, o terminal foi preenchido com esta informação:

Evento KeyPress, série 34, NO sintético, janela 0x2c00001, raiz 0x2df, subw 0x0, tempo 2609824, (410,0), raiz: (1724,142), estado 0x0, código de chave 78 (keysym 0xff14, Scroll_Lock), same_screen YES, XLookupString fornece 0 bytes: XmbLookupString fornece 0 bytes: XFilterEvent retorna: False

Evento KeyRelease, série 37, NO sintético, janela 0x2c00001, raiz 0x2df, subw 0x0, tempo 2609912, (410,0), raiz: (1724,142), estado 0x0, código de chave 78 (keysym 0xff14, Scroll_Lock), same_screen YES, XLookupString fornece 0 bytes:

Então eu sei que o evento principal está sendo enviado para o kernel.

Além disso, curiosamente, observei um comportamento estranho quando estava no terminal (ainda antes do lançamento do Xorg ou do Cinnamon) e usando o Scroll Lock. Nomeadamente, neste momento minha luz de fundo estava alternando conforme o esperado, mas quando o Scroll Lock estava ativado, nada que eu digitei foi gravado na tela. Depois de desativar o Scroll Lock, tudo o que eu escrevi foi imediatamente despejado no terminal como se estivesse sendo armazenado em buffer anteriormente.

tl; dr Qual é o problema com o Scroll Lock e o Xorg?

sherrellbc
fonte
Alguma sorte em resolver este problema @sherrellbc?
Pykler

Respostas:

10

Eu não estou familiarizado com o Canela, mas deve ser possível ativar a tecla Scroll Lock.

Primeiro, precisamos verificar se você possui um slot modificador de teclado sobressalente. Corre:

xmodmap -pm

Isso imprimirá uma lista da sua configuração atual do modificador. Felizmente, uma dessas linhas não terá nenhuma chave listada; geralmente isso será mod3. Supondo que seja esse o caso, você pode ativar o Scroll Lock com este comando:

xmodmap -e "add mod3 = Scroll_Lock"

O LED Scroll Lock agora deve responder às teclas pressionadas.

Se isso funcionar, você provavelmente quer que o X faça isso automaticamente sempre que for iniciado. Existem várias maneiras de fazer isso: isso pode ser feito por usuário, mas, para algo assim, acho que faz sentido que seja definido globalmente.

Mas nunca fiz isso antes de mim mesmo, então é melhor testá-lo antes de fornecer mais detalhes. :)

ESTÁ BEM. O método que tentei ativar esse modmap globalmente não funciona para mim no KDE. :( Mas ativá-lo no meu diretório pessoal parece funcionar bem.

Crie um arquivo chamado .Xmodmapem seu diretório pessoal contendo esta linha:

add mod3 = Scroll_Lock

A maneira mais fácil de fazer isso é:

cd ~
echo >.Xmodmap "add mod3 = Scroll_Lock"

Agora reinicie o X (logout e login novamente). Felizmente, sua tecla Scroll Lock estará funcionando. Caso contrário, informe-me.

PM 2Ring
fonte
A configuração .Xmodmap não funcionou para mim no Ubuntu 16.04 / Unidade, mas a solução permanente na resposta de de Pykler trabalhou :)
Nebel54
7

Encontrou o caminho permanente após uma longa noite com muitas soluções meio assadas.

# backup your symbols file
sudo cp /usr/share/X11/xkb/symbols/us{,.distribution} 

Adicione a seguinte linha na xkb_symbols "basic" {seção. não se preocupe se essa segunda linha não estiver lá, ela está lá apenas para alguns idiomas e não estava lá para nós no meu sistema.

...
    modifier_map Mod3   { Scroll_Lock }; <==<< Add this line

    include "level3(ralt_switch)" <==<< before this line
};

Talvez você precise fazer o mesmo em outros layouts se alternar entre idiomas.

Além disso, há um cache onde vivem os layouts do xkb. Você deve limpá-lo antes de reiniciar o servidor X para verificar o (s) novo (s) arquivo (s) de símbolos do teclado.

sudo rm -f /var/lib/xkb/*
Pykler
fonte
Isso é legal, mas funcionou apenas em conjunto com as alterações gsettings e xkboptions mencionadas em askubuntu.com/a/1067921/274298 para mim.
peschü 2/02/19
2

Como Scroll Lockpode interferir nos atalhos do teclado quando ativo (nomeado F12, Ctrl+ Spacenão funcionará conforme o esperado), decidi associar a Scroll Locktecla a uma inicialização manual de xset, alternando o estado do LED em relação ao estado anterior.

Eu criei um script executável chamado toggle_keyb_led.sh:

xset q | awk '/LED/{ if ($10 ~ "00000000") print "led"; else print "-led" }' | xargs xset

Isso analisa a saída de xset q, combinando a linha com LED mask.

Nota 1 : Se não funcionar, verifique com xset -led; xset q | grep 'LED'qual é o valor atual da máscara.

Nota 2 : Alguns usuários precisam executar xset led 3para ativar a luz. Nesse caso, reescreva o script acima.


Em seguida, você pode iniciar esse script como atalho personalizado usando o ambiente da área de trabalho como (aqui está com um canela):

insira a descrição da imagem aqui

sequielo
fonte