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: 활성 서버 목록을 X 서버 로그에 인쇄합니다.
- XF86Ungrab: 횡령을 보유하는 응용 프로그램을 종료하지 않고 모든 활성 횡령을 중단
- XF86ClearGrab: 활성 잡기를 보유한 모든 프로세스를 종료합니다.
하는 것으로 XF86LogGrabInfo만 활성화 그랩을 나열하지 등 현재 누르지 않은 키에 복 수동적 잡고. 패시브 그랩에 대한 정보를 얻으려면 그랩을 활성화해야합니다 xdotool key XF86LogGrabInfo
. 관심있는 키 코드 또는 마우스 버튼 조합을 누른 상태에서 실행하십시오. 다음과 같은 작업을 수행하십시오.
- 운영
sleep 1; xdotool key XF86LogGrabInfo
- 1 초 이내에 키 코드 또는 마우스 버튼 조합을 누릅니다.
- 1 초 후 키 / 버튼에서 손을 떼십시오.
- X 서버 로그에서 “Active grab…”정보를 확인하십시오 (종종
/var/log/Xorg.0.log
).
답변
나는 하나의 키 또는 버튼 의 수동 그랩 1 에 대해 손에 든 것을 알지 못하지만 전체 키보드 또는 마우스 장치의 활성 그랩을 나열하는 몇 가지 방법이 있습니다.
- 모든 플랫폼에서 Xorg 1.11 이상 (또는 패치가 적용된 이전 버전)에서만 이 패치 노트에 설명 된 대로 핫키를 맵핑하여 잡아서 데이터를 로그에 덤프하십시오 .
- 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
을 참조하십시오.