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


20

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

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

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

답변:


21

최신 버전의 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).

2
Xorg 1.12.4를 사용하여 Debian wheezy에서 지금 테스트 xdotool key XF86LogGrabInfo하면 X 로그에서“현재 활성화 된 모든 장치 잡기 인쇄 :”바로 다음에“활성 장치 잡기 끝 목록”이라는 두 항목 만 트리거됩니다. 그러나 내 창 관리자는 많은 키를 가져옵니다. 움켜 잡은 열쇠에 대한이 작품을 보셨습니까?
Gilles 'SO- 악마 그만해

4
@Gilles - 당신이 그런 식으로 그것을 실행하는 경우 아니, 당신은 모든 출력을받지 않습니다는 ... 그것을 실행하려고 sleep 2; xdotool key "XF86LogGrabInfo"즉시 매우 빠른 키 (예 : "승리"키)를 눌러 시작, 당신은 몇 가지 결과를 볼 수 있습니다 Xorg.log. 또는 여기 와 같이 xdotool키 + XF86LogGrabInfo를 동시에 누르 십시오
don_crissti

@don_crissti 아, XF86LogGrabInfo현재 눌러 진 키에 대한 정보 만 인쇄 하는가? 그 유용성을 제한합니다. 용어를 올바르게 이해하면 모든 횡령, 모든 수동 횡령을 나열하고 싶습니다.
Gilles 'SO- 악의를 그만두십시오

가상 키보드없이 키 조합을 스크립팅 된 철저한 검색과 결합하는 영리한 방법이있을 것입니다. 확실히 내 지식 밖입니다.
Adam Katz

감사! 이것은 xfsettingsdWin+ L단축키를 훔친 것을 발견하는 데 도움이되었습니다 .
Mikel

8

나는 하나의 키 또는 버튼 의 수동 그랩 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 을 참조하십시오 .


4

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

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

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

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


1
여기에 언급 된 요지는 언어 D로 프로그래밍되어 있습니다. 실행 파일을 얻으려면 패키지 gdc(GNU D 컴파일러)를 설치 한 다음를 libx11-dev실행할 수 gdc -o xorg-show-grabs xorg-show-grabs.d -lX11있습니다.
Stéphane Gourichon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.