当我将以下行放入~/.xbindkeysrc
GNOME 时,正确启动 application vlc
。
"vlc"
XF86Calculator
问题是我想运行一个 shell 脚本。当我将以下内容放入~/.xbindkeysrc
GNOME 时,不会启动我的脚本,而是启动计算器。
"/home/menteith/bin/audio.sh"
XF86Calculator
这是为什么?该脚本是可执行的,并且在从命令行运行时按预期工作。
更新
感谢@PRATAP,我知道当我在~/.xbindkeysrc
(即不是bash脚本)中使用编译程序并XF86Calculator
第一次按下按钮时它会启动我的程序,但是当我 XF86Calculator
第二次按下按钮时,我会启动计算器。
更新 2
感谢@Raffa,我尝试了另一种解决方案。我写了一个简单的C程序:
#include <stdio.h>
#include <stdlib.h>
int main() {
puts("Starting now:");
system("killall -s1 xbindkeys; /home/menteith/bin/audio");
return 0;
}
它杀死xbindkeys
然后运行包装器,然后运行脚本。但是,它仍然无法正常工作。在第二次和下一次之后calculator
正在启动。
更新 3 我的脚本在来自显示器 (HDMI) 的音频和来自 PC 的音频之间切换。
#!/usr/bin/env bash
output=$(pactl list cards |grep 'Active Profile:' | cut -d ':' -f 3)
if [ $output == "analog-stereo" ]; then
out="hdmi-stereo"
else
out="analog-stereo"
fi
echo test
# Set the choosen card profile as sink
pactl set-card-profile "alsa_card.pci-0000_00_1f.3" "output:${out}"
# Set the default sink to the new one
pacmd set-default-sink "alsa_card.pci-0000_00_1f.3.${out}" &> /dev/null
# Redirect the existing inputs to the new sink
for i in $(pacmd list-sink-inputs | grep index | awk '{print $2}'); do
pacmd move-sink-input "$i" "alsa_card.pci-0000_00_1f.3.${out}" &> /dev/null
done
解决方法
在 Ubuntu 19.10 上试过
文件的内容
myscript.sh
。文件的内容
.xbindkeysrc
。登录后,
运行
xbindkeys --poll-rc
。关键 XF86Calculator 应该运行您的脚本。--poll-rc 选项的参考https://wiki.archlinux.org/index.php/Xbindkeys并查看此链接中答案下方的评论https://askubuntu.com/a/1126410/739431
第一步:
首先:我建议
~/.xbindkeysrc
通过先清除文件来修改文件,然后请将以下代码复制并粘贴到文件中,替换Key_Name
为您的实际密钥名称,使其如下所示:其次:
xbindkeys
通过在终端中运行以下命令重新启动:最后:尝试配置的密钥,看看它是否按预期工作。
第二步:
请检查键盘快捷键下的系统设置,如下图所示:
如果此处为启动计算器配置了热键,则应将其禁用。否则,它可能会干扰
xbindkeys
并捕获热键按下,从而阻止您的脚本运行并运行计算器。步骤#三:
另一个需要查看的地方是
/usr/share/X11/xkb/symbols/pc
文件。首先:
gedit
通过在终端中运行以下命令在编辑器中打开文件:其次:寻找包含
XF86Calculator
在其中的行。它看起来像这样:通过在它之前添加一个这样的注释来注释掉这一行
//
:记下Key_Name并
<Key_Name>
保存并关闭文件。第三:编辑您的
~/.xbindkeysrc
文件,用上面第二步中记XF86Calculator
下的Key_Name替换。它应该如下所示:保存并关闭文件。
第四:通过在终端中运行以下命令清除 xkb 设置缓存:
第五:重新启动系统以激活新的 xkb 配置或通过在终端中使用以下命令设置 xkb 地图布局来重新加载新的 xkb 配置:
最后:首先
xbindkeys
在终端中运行以下命令:然后试试你的热键。如果没有任何反应,
xbindkeys
请在终端中运行以下命令重新启动:现在,再次尝试您的热键,看看它是否按预期工作。
祝你好运