我编写了两个自定义脚本来调亮/调暗我的屏幕,并希望将它们绑定到我的F9和F10键。我将它们放入并在两者上/opt/bin
使用,并且当从终端调用时它们可以工作。sudo chown root:root script
sudo chmod 755 script
当我现在尝试运行时xbindkeys -v
,将这些行添加到~/.xbindkeysrc
"/opt/bin/dim_screen.sh"
Control + c:75
"/opt/bin/brighten_screen.sh"
Control + c:76
它给了我这个错误消息:
displayName = :0.0
rc file = /home/pi/.xbindkeysrc
rc guile file = /home/pi/.xbindkeysrc.scm
getting rc guile file /home/pi/.xbindkeysrc.scm.
WARNING : /home/pi/.xbindkeysrc.scm not found or reading not allowed.
2 keys in /home/pi/.xbindkeysrc
min_keycode=8 max_keycode=255 (ie: know keycodes)
"/opt/bin/dim_screen.sh"
m:0x4 + c:75
Control + F9
"/opt/bin/brighten_screen.sh"
m:0x4 + c:76
X Error of failed request: BadAccess (attempt to access private resource denied)
Major opcode of failed request: 33 (X_GrabKey)
Serial number of failed request: 17
Current serial number in output stream: 21
起初我认为这是关于脚本的文件权限,因此我添加了
ALL ALL= NOPASSWD: /opt/bin/brighten_screen.sh
ALL ALL= NOPASSWD: /opt/bin/dim_screen.sh
给我的/etc/sudoers
。但错误仍然存在,所以我再次阅读了它,现在阅读了有关xgrabkeys我认为当 xbindkeys 想要读取它们时,关键信号已经被其他程序使用,因此它无法访问它们。当我不使用功能键时它也不起作用。
因为很可能是F9和F10保留用于内部目的,所以我更改了to和 of to 的xmodmap
映射F9F13F10F14
我可以暂时使其工作,按照 Vincent Yu 关于问题“使用 xbindkeys 将元键(又名超级键/Windows 键)绑定到左键单击并允许拖放”的说明(我注意到他所说的关于更改不会在会话中持续存在),但现在重新启动后,它再次给我同样的错误(用F9
替换F13
),即使我分别运行xmodmap -e 'keycode 75 = F13'
和并更改了我的xmodmap -e 'keycode 76 = F14'
~/.Xmodmap
我不知道如何处理这个问题或找出是什么阻止 xbindkeys 使用密钥。 Google 没有给我提供有用的结果,浏览一下 unix.SE 上的帖子(上述的除外)也没有帮助。
如果相关的话,我将 Raspbian Jesse 核心与 lxde 一起使用。
答案1
我有类似的问题,谷歌引导我到https://askubuntu.com/questions/499926/why-do-these-xte-commands-work-in-terminal-but-not-when-bound-with-xbindkeys,这基本上是说将 xbindkeys 特定的修饰符添加release
到键绑定中,以便它们的脚本在 javascript 术语中的“keyup”上触发。这样做可以解决我的问题。
因此,对于您的情况,以下内容应该有效:
"/opt/bin/dim_screen.sh"
Control + c:75 + release
"/opt/bin/brighten_screen.sh"
Control + c:76 + release