即使我的锁屏处于活动状态,我也希望某些键(主要是媒体键)能够到达我的窗口管理器。这样,即使屏幕锁定,我也可以控制我的媒体播放器。
据我所知,这可能只有在屏幕储物柜支持此功能的情况下才有可能:一旦屏幕储物柜将键盘指针从根窗口中夺走,似乎就无法接收按键事件。
有谁知道有支持这样的东西的屏幕储物柜吗?或者在锁屏处于活动状态时监听按键的任何其他方式?
非常感谢,
卢卡斯
答案1
我想出了一些办法:倾听生的即使键盘焦点被屏幕锁夺走,按键也是可能的。缺点是,使用原始按键时,您必须手动跟踪修饰键的状态,但这似乎效果很好。
我基于这个想法构建了一个小型热键守护程序,即使在屏幕锁定时也允许执行命令。如果有人感兴趣,您可以在这里找到它:https://github.com/tinloaf/lhkd
答案2
如果您的媒体键发送 ACPI 事件,您可以用来acpid
对它们进行操作。
不幸的是,它需要全局配置更改(而不是每个用户),并且将事件传递给 X11 应用程序可能很棘手。
acpi_listen
您可以通过运行然后按媒体键来查看媒体键发送了哪些 ACPI 事件(如果有) 。例如,acpi_listen
当我按笔记本电脑上的“亮度增加”键时,输出中会出现以下内容:
video/brightnessup BRTUP 00000086 00000000
如果您的按键确实发送 ACPI 事件,您可以配置acpid
为在按下按键时运行命令。相关的配置文件通常可以在/etc/acpi/events/
.它们可以有任何名称,只要它们位于正确的目录中即可。它们看起来像这样:
event=^video/brightness(up|down) .*[^K]$
action=/etc/acpi/backlight-handler.sh %e
第一行包含event=
后跟一个正则表达式来匹配 ACPI 事件。如果事件与正则表达式匹配,则action=
执行第二行(之后)中指定的命令。已扩展到%e
事件线。在本例中,它用于将事件作为命令行参数传递给脚本。
acpid
Arch Wiki 上还有一篇不错的文章:https://wiki.archlinux.org/index.php/Acpid
下一步是弄清楚如何通过脚本控制媒体播放器。