xbindkeys を使用する場合の X_GrabKeys に対する BadAccess

xbindkeys を使用する場合の X_GrabKeys に対する BadAccess

F9私は画面を明るく/暗くし、それをキーとキーにバインドするために2つのカスタムスクリプトを作成しましたF10。私はそれらを両方に入れて使用し、/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がそれを読み取ろうとすると、キー信号はすでに他のプログラムで使用されているのでアクセスできません。ファンクションキーを使用しないと機能しません。

F9内部目的で予約されている可能性が高いので、toとofのマッピングをF10変更しました。xmodmapF9F13F10F14

「xbindkeysを使用してメタキー(スーパーキー/ Windowsキーとも呼ばれる)を左クリックしてドラッグアンドドロップを許可するようにバインドするには」という質問に対するVincent Yuの指示に従って一時的に機能させることができました。セッション間は持続しません)、再起動後に実行して変更した場合でも同じエラーが再発生します(F9replaceを使用)。F13xmodmap -e 'keycode 75 = F13'xmodmap -e 'keycode 76 = F14'~/.Xmodmap

この問題をどのように処理するのか、xbindkeysがキーを使用するのを妨げるものを見つけることはできません。 Googleは私に有用な結果を提供しておらず、unix.SE(上記の投稿を除く)の投稿を検索することも役に立ちませんでした。

関連がある場合は、lxdeでRaspbian Jesseコアを使用しています。

答え1

同様の問題がありましたが、Googleは次のように案内しました。https://askubuntu.com/questions/499926/why-do-these-xte-commands-work-in-terminal-but-not-when-bound-with-xbindkeysこれは、デフォルトでxbindkeys固有の修飾子をキーバインディングに追加し、releaseそのスクリプトがJavaScriptの用語で「キーア​​ップ」で実行されることを意味します。これは私の問題を解決します。

したがって、あなたの場合は、次のように動作します。

"/opt/bin/dim_screen.sh"
    Control + c:75 + release

"/opt/bin/brighten_screen.sh"
    Control + c:76 + release

関連情報