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

11

Eu comprei recentemente um teclado retroiluminado que foi projetado de tal forma que a tecla Scroll Lock foi usada para alternar a luz de fundo. Eu rapidamente descobri que o Cinnamon não responde corretamente quando a tecla Scroll Lock é pressionada. Originalmente, eu achava que a luz de fundo do teclado era DOA, porque todo o resto funcionava da caixa. Depois de uma reinicialização, descobri que, antes de iniciar o Xorg, eu conseguia alternar com êxito a luz de fundo usando a tecla Scroll Lock. Então, mais uma vez, após iniciar o Xorg (e consequentemente a canela_session), essa funcionalidade parou de funcionar novamente.

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

Após um pouco de pesquisa, me deparei com um programa chamado xev que despejou as principais informações do evento no terminal depois que ele foi iniciado. Ao pressionar a tecla Scroll Lock, o terminal foi preenchido com esta informação:

KeyPress event, serial 34, synthetic NO, window 0x2c00001, root 0x2df, subw 0x0, time 2609824, (410,0), root:(1724,142), state 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x2c00001, root 0x2df, subw 0x0, time 2609912, (410,0), root:(1724,142), state 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES, XLookupString gives 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 no terminal (ainda antes de iniciar o Xorg ou o Cinnamon) e usando o Scroll Lock. Ou seja, neste momento minha luz de fundo estava alternando conforme o esperado, mas quando o Scroll Lock estava habilitado, nada que eu digitei foi escrito na tela. Depois de desabilitar o Scroll Lock, tudo que eu escrevi foi imediatamente colocado no terminal como se estivesse sendo armazenado em buffer.

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

    
por sherrellbc 26.10.2014 / 01:09

3 respostas

8

Eu não estou familiarizado com o Cinnamon, mas deve ser possível ativar sua chave de bloqueio de rolagem.

Primeiro, precisamos ver se você tem um slot modificador de teclado extra. Executar:

xmodmap -pm

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

xmodmap -e "add mod3 = Scroll_Lock"

Seu LED de Scroll Lock agora deve responder às teclas pressionadas de Scroll Lock.

Se isso funcionar, você provavelmente desejará 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 ele seja definido globalmente.

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

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

Crie um arquivo chamado .Xmodmap em seu diretório pessoal que contém 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 (faça logout e faça login novamente). Esperançosamente, sua chave de Scroll Lock estará funcionando. Se isso não acontecer, por favor me avise.

    
por 26.10.2014 / 05:59
5

Encontrou o caminho permanente depois de um longo noite com muitas soluções meio assados.

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

Adicione a seguinte linha na seção xkb_symbols "basic" { . 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
};

Você pode ter que fazer o mesmo em seus outros layouts se alternar entre os idiomas

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

sudo rm -f /var/lib/xkb/*
    
por 17.03.2015 / 07:02
1

Como Scroll Lock pode interferir com os atalhos de teclado quando ativo (com o nome F12 , Ctrl + Espaço ganho funciona como esperado), eu decidi combinar a tecla Scroll Lock para um lançamento 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 , correspondendo a linha com LED mask .

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

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

Em seguida, você pode iniciar este script como atalho personalizado usando seu ambiente de área de trabalho como (aqui é com uma canela):

    
por 19.03.2017 / 00:19