Нещодавно я придбав клавіатуру з підсвічуванням, яка була розроблена таким чином, що клавіша Scroll Lock використовується для перемикання заднього світла. Я швидко виявив, що Кориця не реагує належним чином при натисканні клавіші прокрутки. Спочатку я думав, що підсвічування клавіатури була DOA, оскільки все інше працювало поза коробкою. Після перезавантаження я виявив, що перед запуском Xorg мені вдалося переключити підсвічування за допомогою клавіші Scroll Lock. Потім, знову після запуску Xorg (і, отже, cinnamon_session), ця функція знову перестала працювати.
Для того, щоб підсвітка працювала після запуску Xorg, я був змушений випустити: xset led named "Scroll Lock"
увімкнути та вимкнути цю функціональність.
Після невеликих досліджень я натрапив на програму під назвою, xev
яка скидала ключову інформацію про події після терміналу. Після натискання клавіші Scroll Lock термінал заповнюється цією інформацією:
Подія KeyPress, серійний 34, синтетичний НЕТ, вікно 0x2c00001, корінь 0x2df, subw 0x0, час 2609824, (410,0), корінь: (1724,142), стан 0x0, клавішний код 78 (клавіша 0xff14, Scroll_Lock), той самий екран YES, XLookupString дає 0 байт: XmbLookupString дає 0 байт: XFilterEvent повертає: False
Подія KeyRelease, серійний 37, синтетичний НІ, вікно 0x2c00001, корінь 0x2df, subw 0x0, час 2609912, (410,0), корінь: (1724,142), стан 0x0, клавішний код 78 (клавіша 0xff14, Scroll_Lock), той же_екран ТАК, XLookupString дає 0 байт:
Тому я знаю, що ключова подія надсилається до ядра.
Крім того, що цікаво, я спостерігав дивну поведінку, коли знаходився в терміналі (ще до запуску Xorg або Cinnamon) та користуючись Scroll Lock. А саме, в цей момент моя підсвічування перемкнула, як очікувалося, але коли увімкнено функцію прокрутки, я нічого не набрав, на екрані не було написано. Після відключення програми Scroll Lock все, що я написав, негайно перекидається на термінал, як ніби він раніше був завантажений.
tl; dr Яка угода з прокруткою Lock та Xorg?