在 tty/虚拟控制台中使用亮度/音量键?

在 tty/虚拟控制台中使用亮度/音量键?

我想知道是否可以使用虚拟控制台中笔记本电脑键盘的专用亮度/音量键来调整(增加/减少)亮度或音量。

系统是否可以配置为执行后台操作以响应单个按键,或者是通过命令行进行交互的唯一模式? (我已经找到了通过命令行进行调整的方法。)

我能想到的唯一可比较的例子是电源按钮发出立即系统停止的信号。但是,我怀疑它在不同的级别上运行,因为当我尝试在提示符下按下它时showkey,它仍然关闭系统(而不是返回键码)。


编辑:实际上,虽然我已经弄清楚如何纯粹通过命令行来完成这些事情,但我没有知道如何去做没有 root 访问权限。任何有关此事的进一步见解将不胜感激。

答案1

这取决于您在 tty 中使用的 shell,但一般来说:是的,可以。 readline 库是使这些快捷键成为可能的软件组件。

我只是碰巧知道它是如何与 一起工作的zsh,所以我将举一个例子。如果您使用bash,请尝试阅读手册中的“Readline Key Bindings”部分 - 看起来这就是您正在寻找的内容。

zsh

myfunc() {
    echo 'It works!'
}
zle -N mywidget myfunc
bindkey "^[OQ" mywidget

zle -N命令用于定义称为“zsh 小部件”的东西。小部件可用于调用函数。该bindkey命令让您指定一个键码和一个在按下该键时将执行的小部件。键码^[OQ恰好指的是F2我的情况下的键。要找出音量键的键码,请按Ctrl+V,然后按音量键(在我的情况下,我会按Fn+F2,这会给出^[[26~)。

答案2

这不是问题的通用解决方案,但经过几天的故障排除后,我发现波梅德,它专门用于管理Apple笔记本电脑上的热键(这就是我所拥有的)。

除了允许您增加/减少亮度/键盘背光/音量之外,它还会在连接/断开交流电源(除其他外)时自动设置亮度。比尝试为其编写自己的脚本要好得多。

答案3

您是否看过并尝试过这个:https://wiki.archlinux.org/index.php/Linux_console/Keyboard_configuration

您需要创建一个自定义的虚拟控制台键盘映射。 (这是在 Arch 中的。我想在 Debian/Ubuntu 中可能有所不同,也许在其他版本中也是如此。)

通过showkey在虚拟控制台上输入,您将确定键码编号(您可以在xevXorg 下执行此操作,但需要扣除 8 才能获得控制台键码编号,也就是说,如果xev给您 169,则意味着您的控制台键映射为 161 )。

例如,当我在 tty 中时,通过此自定义键盘映射,我只需在 Arch/Fluxbox 系统中按我的(Apple)键盘上的弹出键即可更改到下一个控制台:

keycode 161 = Incr_Console   Last_Console     Decr_Console
        shift   altgr   keycode 161 = VoidSymbol
        altgr   control keycode 161 = VoidSymbol
        shift   altgr   control keycode 161 = VoidSymbol
        shift   alt     keycode 161 = VoidSymbol
        altgr   alt     keycode 161 = VoidSymbol
        shift   altgr   alt     keycode 161 = VoidSymbol

Shift+Eject 转到最后一个控制台,Ctrl+Eject 减少它。

对于音量和亮度,您可能需要额外的步骤。

假设您的键码编号是 161,然后首先将其绑定到未使用的功能键,例如 F70:

keycode 161 = F70

然后将该 F70 绑定到命令字符串:

为了在终端中执行打印命令,必须将换行转义字符附加到命令字符串的末尾。例如,要使系统进入休眠状态,请添加以下键盘映射:

string F70 = "sudo /usr/sbin/hibernate\n"

如果失败,您可以检查acpid.

相关内容