애플리케이션에서 X11 전달을 프로그래밍 방식으로 제어하는 ​​방법은 무엇입니까?

애플리케이션에서 X11 전달을 프로그래밍 방식으로 제어하는 ​​방법은 무엇입니까?

서버에서 원격 X 응용 프로그램을 실행하고 X11 클라이언트가 UX 상호 작용을 처리하도록 X11 전달을 설정하고 싶습니다.

그러나 실제로 사용자 상호 작용을 수행하기 위해 X11 클라이언트를 구성하거나 프로그래밍 방식으로(스크립트에서) 가짜로 만들고 싶습니다.

예를 들어, 마우스 클릭이나 키보드 상호 작용(예: 설치 프로그램)이 필요한 애플리케이션을 실행하여 완료될 때까지 해당 클릭이나 키보드 키 입력을 스크립트에서 애플리케이션으로 프로그래밍 방식으로 보낼 수 있습니다.

가능합니까? 이를 달성하는 방법이나 시작 위치는 무엇입니까? 아니면 X11 프로토콜을 재사용/하이재킹하여 사용자가 아닌 상호 작용을 삽입하려면 어떻게 해야 합니까?

답변1

지금까지 나는 발견했다xdotool마우스 및 키보드 입력을 쉽게 위조할 수 있는 도구입니다.

간단한 키보드 상호 작용의 몇 가지 예:

xdotool key a
xdotool key Down
xdotool key Tab
xdotool key "Return"
xdotool key "Control_L+t"
xdotool key Alt+1
xdotool key ctrl+v
xdotool key Super
xdotool key KP_Enter
xdotool key ctrl+Page_Up
xdotool key ctrl+U005C
xdotool key ctrl+shift+e
xdotool key --delay 1000  shift+minus # for underscore
xdotool key --clearmodifiers shift+Insert
xdotool key --clearmodifiers --window 0x2600006 alt+1 0 9 8 7 6 5 4 3

마우스 상호 작용이 포함된 예제 스크립트:

WINDOWID=$(xdotool selectwindow)

xdotool set_window --overrideredirect 1 $WINDOWID windowunmap $WINDOWID windowmap $WINDOWID
xdotool windowsize $WINDOWID 10 100%

# Set behaviors
xdotool behave $WINDOWID mouse-enter windowfocus windowsize --usehints 80 100% &
xdotool behave $WINDOWID mouse-leave windowsize 4 100% &

다른 예시:F5 키 누르기를 첫 번째 Chrome 창으로 보내는 방법.

더 많은 스크립트 예제를 보려면 다음 사이트를 방문하세요.GitHub또는공식 웹 사이트.

sudo apt-get install xdotool예를 들어 적절한 저장소에서 설치할 수 있습니다.원천.


와인

X11 응용 프로그램이 Wine에서 실행 중인 경우 다음을 사용할 수도 있습니다.와인 제조 팁. 조사하다소스 파일(쉘 스크립트입니다) AutoHotkey 도구를 사용하여 응용 프로그램을 제어하는 ​​방법을 안내합니다.

보다 고급 방법에는 winedbg디버거 사용 및 프로세스 연결이 포함될 수 있습니다.

$ winedbg
Wine-dbg>info process
 00000008 3        'terminal.exe'
Wine-dbg>attach 8
0xf7709c0e __kernel_vsyscall+0xe in [vdso].so: int  $0x80

그런 다음 디버거를 사용하여 직접 상호 작용할 수 있습니다( man winedbg도움말 얻기 참조).

관련 정보