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 xev
zrzucone 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?