使用 xbindkeys 时 X_GrabKeys 上的 BadAccess

使用 xbindkeys 时 X_GrabKeys 上的 BadAccess

我编写了两个自定义脚本来调亮/调暗我的屏幕,并希望将它们绑定到我的F9F10键。我将它们放入并在两者上/opt/bin使用,并且当从终端调用时它们可以工作。sudo chown root:root scriptsudo 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 想要读取它们时,关键信号已经被其他程序使用,因此它无法访问它们。当我不使用功能键时它也不起作用。

因为很可能是F9F10保留用于内部目的,所以我更改了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

相关内容