我在一台仅有窗口管理器(即没有桌面)的联想笔记本电脑上运行 Debian Stretch。开箱即用,Debian 的这种配置忽略了具有特殊功能的按键,例如音量增大、麦克风静音、亮度增大等。
为了解决 X 下的问题,我使用 xbindkeys(在 .xsession 中)将这些特殊键绑定到执行所需操作的各种脚本,例如调用 amixer 来调高主通道上的音量等。此设置似乎在以下位置运行我的脚本子 shell 到目前为止运行良好。
当我尝试在运行 Bash 的 tty 中实现相同的效果时,问题就出现了。到目前为止,我已经尝试使用 loadkeys (在 systemd 服务中)将特殊键绑定到脚本调用。
这是我提交给 loadkeys 的示例:
plain keycode 114 = F110
string F110 = "my_volume_script_file_name some_parameters\n"
plain keycode 115 = F120
string F110 = "my_volume_script_file_name other_parameters\n"
plain keycode 113 = F130
string F110 = "my_volume_script_file_name yet_other_parameters\n"
当我按下映射的键之一时,此设置似乎将我的调用提交到 tty 前台运行的任何内容的标准输入。如果它是一个交互式 shell,那么一切都会按预期工作(尽管在屏幕上看到命令调用很烦人)。如果有其他东西在前台运行,那么当然,击键提交的文本不会被解释为脚本调用,并且不会发生所需的效果。
我想知道是否有任何东西可以绑定到我的键上,从而导致 Bash 将文本解释为在子 shell 中运行的命令,而不是将其提交到前台进程的 stdin。哎呀,如果有一种方法可以说服它将文本提交到不同的文件描述符,我也许也可以用它来做一些有用的事情。
顺便说一句,我查看了 Readline 上的 Bash 手册部分,但发现没有任何适用的内容。
我的主要目标,或者说,是让特殊键在 tty 中工作,无论前台运行什么。还有其他方法吗?
任何帮助是极大的赞赏