Pourquoi la touche Scroll Lock est-elle désactivée dans Cinnamon / Linux / Xorg?

13

J'ai récemment acheté un clavier rétroéclairé qui a été conçu de telle sorte que la touche Scroll Lock a été utilisée pour basculer le rétro-éclairage. J'ai rapidement constaté que Cinnamon ne répond pas correctement lorsque la touche Scroll Lock est enfoncée. À l'origine, je pensais que le rétro-éclairage du clavier était DOA parce que tout le reste fonctionnait hors de la boîte. Après un redémarrage, j'ai constaté qu'avant de lancer Xorg, j'étais en mesure de basculer avec succès le rétro-éclairage en utilisant la touche de défilement. Puis, encore une fois, après avoir démarré Xorg (et par conséquent cinnamon_session), cette fonctionnalité a cessé de fonctionner à nouveau.

Afin de faire fonctionner le rétro-éclairage après le lancement de Xorg, j'ai été obligé d'émettre un: xset led named "Scroll Lock"pour activer et désactiver cette fonctionnalité.

Après un peu de recherche, je suis tombé sur un programme appelé xevqui exportait les informations sur les événements clés vers le terminal après son démarrage. En appuyant sur la touche Scroll Lock, le terminal a été renseigné avec ces informations:

Événement KeyPress, série 34, NO synthétique, fenêtre 0x2c00001, racine 0x2df, subw 0x0, heure 2609824, (410,0), racine: (1724,142), état 0x0, code clé 78 (keysym 0xff14, Scroll_Lock), même écran YES, XLookupString donne 0 octets: XmbLookupString donne 0 octets: XFilterEvent renvoie: False

Événement KeyRelease, série 37, NO synthétique, fenêtre 0x2c00001, racine 0x2df, subw 0x0, heure 2609912, (410,0), racine: (1724,142), état 0x0, code clé 78 (keysym 0xff14, Scroll_Lock), same_screen YES, XLookupString donne 0 octets:

Je sais donc que l'événement clé est envoyé au noyau.

Aussi, fait intéressant, j'ai observé un comportement étrange dans le terminal (toujours avant de lancer Xorg ou Cinnamon) et en utilisant Scroll Lock. À savoir, à ce stade, mon rétro-éclairage basculait comme prévu, mais lorsque le verrouillage du défilement était activé, rien que je tapais n'était écrit sur l'écran. Après avoir désactivé Scroll Lock, tout ce que j'avais écrit a été immédiatement vidé sur le terminal comme s'il était précédemment en mémoire tampon.

tl; dr Quel est le problème avec Scroll Lock et Xorg?

sherrellbc
la source
Avez-vous de la chance de résoudre ce problème @sherrellbc?
Pykler

Réponses:

10

Je ne connais pas Cinnamon, mais il devrait être possible d'activer votre touche de défilement.

Tout d'abord, nous devons voir si vous avez un emplacement de modificateur de clavier de rechange. Courir:

xmodmap -pm

Cela imprimera une liste de votre configuration actuelle de modificateur. Espérons que l'une de ces lignes ne contiendra aucune clé; ce sera généralement mod3. En supposant que c'est le cas, vous pouvez activer le verrouillage du défilement avec cette commande:

xmodmap -e "add mod3 = Scroll_Lock"

Votre LED Scroll Lock devrait maintenant répondre aux pressions sur la touche Scroll Lock.

Si cela fonctionne, vous voudrez probablement que X le fasse automatiquement chaque fois qu'il démarre. Il existe différentes façons de le faire: cela peut être fait par utilisateur, mais pour quelque chose comme ça, je pense qu'il est logique que cela soit défini globalement.

Mais je n'ai jamais fait cela avant moi, donc je ferais mieux de le tester avant de donner plus de détails. :)

D'ACCORD. La méthode que j'ai essayé d'activer ce modmap globalement ne fonctionne pas pour moi sur KDE. :( Mais l'activer dans mon répertoire personnel semble fonctionner correctement.

Créez un fichier appelé .Xmodmapdans votre répertoire personnel contenant cette ligne:

add mod3 = Scroll_Lock

La façon la plus simple de le faire est:

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

Redémarrez maintenant X (déconnexion et connexion à nouveau). Espérons que votre touche de défilement fonctionnera. Si ce n'est pas le cas, faites-le moi savoir.

PM 2Ring
la source
La configuration .Xmodmap n'a pas fonctionné pour moi sur Ubuntu 16.04 / Unity, mais la solution permanente dans la réponse de Pykler a fonctionné :)
Nebel54
7

Trouvé de façon permanente après une longue nuit avec beaucoup de solutions à moitié cuites.

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

Ajoutez la ligne suivante dans la xkb_symbols "basic" {section. ne vous inquiétez pas si cette deuxième ligne n'est pas là, elle n'est là que pour certaines langues et n'était pas là pour nous sur mon système.

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

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

Vous devrez peut-être faire de même dans vos autres mises en page si vous basculez entre les langues

En outre, il existe un cache où les mises en page xkb vivent. Vous devez l'effacer avant de redémarrer votre serveur X pour vérifier le ou les nouveaux fichiers de symboles de clavier.

sudo rm -f /var/lib/xkb/*
Pykler
la source
C'est bien mais cela n'a fonctionné qu'avec le changement de gsettings et le changement de xkboptions mentionnés dans askubuntu.com/a/1067921/274298 pour moi.
peschü
2

Comme cela Scroll Lockpeut interférer avec vos raccourcis clavier lorsqu'ils sont actifs (nommés F12, Ctrl+ Spacene fonctionnera pas comme prévu), j'ai décidé de faire correspondre la Scroll Lockclé à un lancement manuel de xset, basculant l'état de la LED concernant son état précédent.

J'ai créé un script exécutable nommé toggle_keyb_led.sh:

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

Cela analyse la sortie de xset q, en faisant correspondre la ligne avec LED mask.

Remarque 1 : Si cela ne fonctionne pas pour vous, veuillez vérifier avec xset -led; xset q | grep 'LED'quelle est la valeur actuelle du masque.

Remarque 2 : Certains utilisateurs doivent exécuter xset led 3pour activer la lumière. Dans ce cas, veuillez réécrire le script ci-dessus.


Ensuite, vous pouvez lancer ce script en tant que raccourci personnalisé en utilisant votre environnement de bureau comme (voici avec une cannelle):

entrez la description de l'image ici

sequielo
la source