让某些按键穿过锁屏

让某些按键穿过锁屏

即使我的锁屏处于活动状态,我也希望某些键(主要是媒体键)能够到达我的窗口管理器。这样,即使屏幕锁定,我也可以控制我的媒体播放器。

据我所知,这可能只有在屏幕储物柜支持此功能的情况下才有可能:一旦屏幕储物柜将键盘指针从根窗口中夺走,似乎就无法接收按键事件。

有谁知道有支持这样的东西的屏幕储物柜吗?或者在锁屏处于活动状态时监听按键的任何其他方式?

非常感谢,

卢卡斯

答案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事件线。在本例中,它用于将事件作为命令行参数传递给脚本。

acpidArch Wiki 上还有一篇不错的文章:https://wiki.archlinux.org/index.php/Acpid

下一步是弄清楚如何通过脚本控制媒体播放器。

相关内容