我最近购买了一种背光键盘,该键盘设计为使用Scroll Lock键来切换背光。我很快发现按下Scroll Lock键时,Cinnamon无法正确响应。最初,我认为键盘背光是DOA,因为其他所有功能都可以立即使用。重新启动后,我发现在启动Xorg之前,我可以使用Scroll Lock键成功切换背光。然后,再次启动Xorg(并相应地,cinnamon_session)后,此功能再次停止工作。
为了在启动Xorg之后使背光工作,我不得不发出a:xset led named "Scroll Lock"
来启用和禁用此功能。
经过一番研究,我遇到了一个程序xev
,该程序在启动后将关键事件信息转储到终端。按下Scroll Lock键后,终端将显示以下信息:
KeyPress事件,序列34,合成NO,窗口0x2c00001,根0x2df,子w 0x0,时间2609824,(410,0),根:(1724,142),状态0x0,键码78(keysym 0xff14,Scroll_Lock),same_screen是, XLookupString提供0字节:XmbLookupString提供0字节:XFilterEvent返回:False
KeyRelease事件,序列号37,合成NO,窗口0x2c00001,根0x2df,子w 0x0,时间2609912,(410,0),根:(1724,142),状态0x0,键代码78(键符号0xff14,Scroll_Lock),same_screen是, XLookupString给出0个字节:
所以我知道关键事件正在发送到内核。
另外,有趣的是,我在终端中(仍在启动Xorg或Cinnamon之前)并使用滚动锁定时观察到了奇怪的行为。也就是说,这时我的背光已按预期切换,但是启用了Scroll Lock时,我输入的内容都没有写入屏幕。禁用Scroll Lock后,我写的所有内容都会立即转储到终端,就像以前被缓冲一样。
tl; dr与Scroll Lock和Xorg有何关系?