我想知道是否可以使用虚拟控制台中笔记本电脑键盘的专用亮度/音量键来调整(增加/减少)亮度或音量。
系统是否可以配置为执行后台操作以响应单个按键,或者是通过命令行进行交互的唯一模式? (我已经找到了通过命令行进行调整的方法。)
我能想到的唯一可比较的例子是电源按钮发出立即系统停止的信号。但是,我怀疑它在不同的级别上运行,因为当我尝试在提示符下按下它时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
在虚拟控制台上输入,您将确定键码编号(您可以在xev
Xorg 下执行此操作,但需要扣除 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
.