명령 행에서 X 키 및 포인터 잡기 0x00f00ba5

X 서버 캡처를 나열하고 관리하기 위해 어떤 명령 줄 도구가 있습니까? (키 및 포인터 잡기와 같이 특정 키 또는 마우스 버튼 사용을 특정 응용 프로그램으로 제한하거나 마우스 포인터를 특정 화면 영역에 유지하도록 제한 함) 나는 가상 xgrab유틸리티를 찾고 있습니다. 같은 것을 보여

Key     0x00f00ba5  0x123   0
Button  0x00f00ba5  2
Pointer 0x00abcdef

에 통화가되었음을 의미 XGrabKey(display, 0x123, 0, 0x00f00ba5, ...)등으로 상 XGrabButton, XGrabPointer, XGrabKeyboard, XGrabServer(가능한 경우). 표시 형식은 중요하지 않습니다. 내가 원하는 것은 누가 무엇을 잡는 지, 그리고 아마도이 잡기를 취소하는 방법을 볼 수있는 방법입니다 (가능한 경우 X11 API가 그것을 허용하는지 확실하지 않습니다).



답변

최신 버전의 X (X.org 서버 ≥1.11)는 이 커밋에 도입 된 여러 디버깅 키 심을 지원 합니다. 트리거되면 캡처와 관련된 작업을 수행합니다.

기본적으로 ( 적어도 최신 버전에서는 ) 기본적으로 사용되지 않습니다 (기본 키맵에는 없음).

당신이 한 경우, xdotool설치, 이다 명령 줄에서 실행하여, 그들을 호출 할 수 있습니다 :

xdotool key NameOfKey

NameOfKey활성화하려는 키 심은 어디에 있습니까 ? 예를 들어, 활성 그랩 목록을 X 서버 로그에 인쇄하려면을 사용하십시오 xdotool key XF86LogGrabInfo.

관련 키 심은 다음과 같습니다.

하는 것으로 XF86LogGrabInfo만 활성화 그랩을 나열하지 등 현재 누르지 않은 키에 복 수동적 잡고. 패시브 그랩에 대한 정보를 얻으려면 그랩을 활성화해야합니다 xdotool key XF86LogGrabInfo. 관심있는 키 코드 또는 마우스 버튼 조합을 누른 상태에서 실행하십시오. 다음과 같은 작업을 수행하십시오.

  1. 운영 sleep 1; xdotool key XF86LogGrabInfo
  2. 1 초 이내에 키 코드 또는 마우스 버튼 조합을 누릅니다.
  3. 1 초 후 키 / 버튼에서 손을 떼십시오.
  4. X 서버 로그에서 “Active grab…”정보를 확인하십시오 (종종 /var/log/Xorg.0.log).

답변

나는 하나의 키 또는 버튼 의 수동 그랩 1 에 대해 손에 든 것을 알지 못하지만 전체 키보드 또는 마우스 장치의 활성 그랩을 나열하는 몇 가지 방법이 있습니다.

  1. 모든 플랫폼에서 Xorg 1.11 이상 (또는 패치가 적용된 이전 버전)에서만 이 패치 노트에 설명 된 대로 핫키를 맵핑하여 잡아서 데이터를 로그에 덤프하십시오 .
  2. Solaris 11 (Solaris 11 Express 2010.11 또는 실제 Solaris 11 릴리스)에서는 X 서버에서 정보 수집에/usr/demo/Xserver/mdb/list_Xserver_devicegrab_client 설명 된 것과 같은 디버거 스크립트를 사용하십시오 . Xorg 1.11 핫키가 현재 다루지 않은 서버 잡기 기능도 있습니다.

1 활성 및 수동 그랩의 정의는 http://tronche.com/gui/x/xlib/input/pointer-grabbing.html 을 참조하십시오 .


답변

이것은 Mechanical Snail의 답변에 추가 된 것입니다.

Xorg 로그의 항목은 해독 할 수 없습니다. 나는 그것들을 파싱하고 인간이 다루기 쉬운 형태로 제시하는 프로그램을 작성했다.

https://gist.github.com/CyberShadow/6412d11aea64144f8905cc0b8196f38e

사용하려면 xdotool key XF86LogGrabInfo기계 달팽이의 답변에 설명 된대로 먼저 실행하십시오 . 그런 다음 위에 링크 된 프로그램을 실행하십시오. Xorg 로그 파일이에없는 /var/log/Xorg.0.log경우 --xorg-log옵션을 사용하여 해당 위치를 지정할 수 있습니다 . 자세한 내용 --help을 참조하십시오.


답변