xbindkeys를 사용할 때 X_GrabKeys에 대한 BadAccess

xbindkeys를 사용할 때 X_GrabKeys에 대한 BadAccess

F9저는 화면을 밝게/어둡게 하고 이를 키 와 키 에 바인딩하기 위해 두 개의 사용자 정의 스크립트를 작성했습니다 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해당 스크립트가 자바스크립트 용어로 "키업"에서 실행되도록 함을 의미합니다. 이렇게 하면 내 문제가 해결됩니다.

따라서 귀하의 경우에는 다음이 작동합니다.

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

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

관련 정보