xdotool을 사용하여 키 입력을 Java 창으로 보내는 데 문제가 있습니까?

xdotool을 사용하여 키 입력을 Java 창으로 보내는 데 문제가 있습니까?

저는 Fedora 22(Linux)를 실행 중이고 다른 사람이 작성한 Java 응용 프로그램에 키 입력을 보내려고 합니다. xdotool을 다양한 방법으로 사용해 보았지만 Java 앱에 포커스를 설정할 수도 없고 키 입력을 보낼 수도 없습니다.

앱은 다음 명령줄을 사용하여 javaws로 시작됩니다.

javaws -J-XX:MaxPermSize=512M -J-d64 -J-Xms1G -J-Xmx1G /path/to/java/file

키 입력을 보내려는 첫 번째 시도는 다음 명령을 사용했습니다.

xdotool search --name 'Window title' windowraise windowfocus --sync key H e l l o Return

그러나 아무 일도 일어나지 않았습니다. Java 창에 초점이 맞지 않거나 키 입력이 표시되지 않습니다.

그래서 Java 프로세스의 PID를 찾아 PID로 프로세스를 식별해 보았습니다.

xdotool search --pid 1234 windowraise windowfocus --sync key H e l l o Return

같은 결과. 마지막으로 'selectwindow'로 창을 식별해 보았습니다.

xdotool selectwindow windowraise windowfocus --sync key H e l l o Return

명령을 내린 후 커서가 사각형으로 바뀌었습니다. 자바창에 마우스를 옮겨서 클릭해봤는데 이것도 안되네요.

더 자세히 조사하기 위해 다음 명령을 사용하여 다른 Java 애플리케이션을 실행했습니다.

java -jar appname.jar

xdotool도 이 창에 포커스를 설정하거나 키 입력을 보낼 수 없습니다.

xdotool 문서를 읽어보니 일부 프로그램이 해당 입력을 받아들이지 않는다는 것을 알고 있습니다. xdotool의 키 입력을 듣도록 Java 앱에 다른 명령줄 인수를 전달하는 등 내가 할 수 있는 일이 있습니까?

다음은 내가 실행 중인 Java 및 xdotool 버전에 대한 일부 정보입니다.

$ java -version
openjdk version "1.8.0_65-debug"
OpenJDK Runtime Environment (build 1.8.0_65-debug-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01-debug, mixed mode)

$ xdotool --version
xdotool version 2.20110530.1

답변1

창 포커스는 창 관리자의 작업입니다. 나는 당신이 하나를 사용하고 있다고 가정합니다. 창에 초점을 맞추는 가장 좋은 방법은 다음과 같습니다.

xdotool search --name 'Window title' windowactivate

xdotool은 두 가지 메커니즘을 사용하여 키 이벤트, XTEST현재 포커스로 보낼 이벤트 확장, XSendEvent()특정 창으로 이벤트를 보냅니다. 후자는 다음을 사용하여 이벤트를 생성합니다.인조플래그는 일부 응용 프로그램이 보안 위험을 의미한다고 결정하므로 이벤트를 무시하십시오.

그러나 xdotool을 사용하여 "실제" 키 이벤트를 보낼 수는 있지만 명시적으로 창을 제공해서는 안 됩니다. 초점을 창으로 옮긴 후

xdotool type Hello; xdotool key Return

관련 정보