Dlaczego klawisz Scroll Lock jest wyłączony w Cinnamon / Linux / Xorg?


13

Niedawno kupiłem podświetlaną klawiaturę, która została zaprojektowana tak, aby klawisz Scroll Lock był używany do przełączania podświetlenia. Szybko odkryłem, że cynamon nie reaguje prawidłowo po naciśnięciu klawisza Scroll Lock. Początkowo myślałem, że podświetlenie klawiatury to DOA, ponieważ wszystko inne działało od razu po wyjęciu z pudełka. Po ponownym uruchomieniu zauważyłem, że przed uruchomieniem Xorg byłem w stanie z powodzeniem przełączać podświetlenie za pomocą klawisza Scroll Lock. Potem ponownie, po uruchomieniu Xorga (i w konsekwencji cynamonowej sesji), ta funkcja przestała działać.

Aby podświetlenie działało po uruchomieniu Xorg, byłem zmuszony wydać: xset led named "Scroll Lock"aby włączyć i wyłączyć tę funkcję.

Po kilku badaniach natrafiłem na program o nazwie xevzrzucone kluczowe informacje o zdarzeniu do terminala po jego uruchomieniu. Po naciśnięciu klawisza Scroll Lock terminal został wypełniony następującymi informacjami:

Zdarzenie KeyPress, numer seryjny 34, syntetyczny NO, okno 0x2c00001, root 0x2df, subw 0x0, czas 2609824, (410,0), root: (1724,142), stan 0x0, kod klucza 78 (keyym 0xff14, Scroll_Lock), same_ ekran TAK, XLookupString daje 0 bajtów: XmbLookupString daje 0 bajtów: XFilterEvent zwraca: False

Zdarzenie KeyRelease, numer seryjny 37, syntetyczny NO, okno 0x2c00001, root 0x2df, subw 0x0, czas 2609912, (410,0), root: (1724,142), stan 0x0, kod klucza 78 (keyym 0xff14, Scroll_Lock), same_ ekran TAK, XLookupString daje 0 bajtów:

Wiem, że kluczowe zdarzenie jest wysyłane do jądra.

Co ciekawe, zaobserwowałem dziwne zachowanie w terminalu (jeszcze przed uruchomieniem Xorg lub Cinnamon) i korzystaniem ze Scroll Lock. Mianowicie, w tym momencie moje podświetlenie przełączało się zgodnie z oczekiwaniami, ale kiedy włączona była blokada przewijania, nic, co wpisałem, nie zostało zapisane na ekranie. Po wyłączeniu Scroll Lock wszystko, co napisałem, zostało natychmiast zrzucone do terminala, tak jakby wcześniej było buforowane.

tl; dr Jaki jest układ Scroll Lock i Xorg?


Masz szczęście w rozwiązaniu tego problemu @sherrellbc?
Pykler,

Odpowiedzi:


10

Nie znam Cinnamon, ale powinno być możliwe włączenie klawisza Scroll Lock.

Najpierw musimy sprawdzić, czy masz wolne gniazdo modyfikatora klawiatury. Biegać:

xmodmap -pm

Spowoduje to wydrukowanie listy aktualnej konfiguracji modyfikatora. Mamy nadzieję, że jedna z tych linii nie będzie zawierała żadnych kluczy; generalnie tak będzie mod3. Zakładając, że tak jest, możesz włączyć Scroll Lock za pomocą tego polecenia:

xmodmap -e "add mod3 = Scroll_Lock"

Dioda LED Scroll Lock powinna teraz reagować na naciśnięcia klawiszy Scroll Lock.

Jeśli to zadziała, prawdopodobnie chcesz, aby X zrobił to automatycznie przy każdym uruchomieniu. Można to zrobić na różne sposoby: można to zrobić dla każdego użytkownika, ale myślę, że w przypadku czegoś takiego warto ustawić ją globalnie.

Ale nigdy wcześniej tego nie robiłem, więc lepiej przetestuję to, zanim podam dalsze szczegóły. :)

DOBRZE. Metoda, którą próbowałem aktywować globalnie, nie działa dla mnie w KDE. :( Ale aktywowanie go w moim katalogu domowym wydaje się działać OK.

Utwórz plik o nazwie .Xmodmapw katalogu domowym zawierający ten wiersz:

add mod3 = Scroll_Lock

Najłatwiej to zrobić:

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

Teraz uruchom ponownie X (wyloguj się i zaloguj ponownie). Mam nadzieję, że twój klawisz Scroll Lock będzie działał. Jeśli nie, proszę dać mi znać.


Konfiguracja .Xmodmap nie działała dla mnie na Ubuntu 16.04 / Unity, ale działało trwałe rozwiązanie w odpowiedzi Pyklera :)
Nebel54

7

Znalazłem trwały sposób po długiej nocy z dużą ilością na wpół upieczonych rozwiązań.

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

Dodaj następujący wiersz w xkb_symbols "basic" {sekcji. nie martw się, jeśli nie ma tam drugiej linii, jest ona dostępna tylko w niektórych językach i nie było jej w moim systemie.

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

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

Być może będziesz musiał zrobić to samo w innych układach, jeśli przełączasz się między językami

Ponadto istnieje pamięć podręczna, w której działają układy xkb. Należy wyczyścić go przed ponownym uruchomieniem serwera X, aby sprawdzić nowe pliki symboli klawiatury.

sudo rm -f /var/lib/xkb/*

Jest to miłe, ale działało tylko razem ze zmianą gsettings i zmianą xkboptions wspomnianymi dla mnie w askubuntu.com/a/1067921/274298 .
peschü

2

Jak Scroll Lockmoże kolidować z skrótów klawiaturowych, kiedy aktywny (nazwane F12, Ctrl+ Spacenie będzie działać zgodnie z oczekiwaniami), postanowiłem dopasować Scroll Lockklucz do ręcznego uruchomienia xset, przełączanie stanu LED uważając go poprzedniego stanu.

Utworzyłem skrypt wykonywalny o nazwie toggle_keyb_led.sh:

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

To analizuje wynik xset q, dopasowując linię do LED mask.

Uwaga 1 : Jeśli to nie działa, sprawdź, xset -led; xset q | grep 'LED'jaka jest bieżąca wartość maski.

Uwaga 2 : Niektórzy użytkownicy muszą uruchomić, xset led 3aby aktywować światło. W takim przypadku proszę przepisać powyższy skrypt.


Następnie możesz uruchomić ten skrypt jako Skrót niestandardowy za pomocą Środowiska pulpitu, takiego jak (tutaj z Cinnamon):

wprowadź opis zdjęcia tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.