문제

Java로 화면 키보드를 개발하고 있습니다. 이 키보드에는 다음에 있습니다 JComponent 가능한 모든 키에 대해. 버튼에서 마우스 다운이 감지되면 현재 초점을 맞춘 응용 프로그램에 특정 키보드 코드를 보내려고합니다. 키보드 자체는 a JFrame 장식이없고 항상 위에 설정하십시오.

로봇 클래스를 사용하여 기본 대기열에서 이러한 키보드 이벤트를 시뮬레이션 할 수 있음을 알았습니다. 그러나이 경우를 선택합니다 JComponent 키 압력이 JFrame, 그리고 다른 응용 프로그램에서받을 수 없습니다.

온 스크린 키보드 "Always-The Always-Outcus"를 유지하려면 어떻게해야합니까? 키 프레스를 보내기 위해 다른 접근법을 사용할 수 있습니까?

도움이 되었습니까?

해결책 3

분명히이 작업을 수행하는 유일한 방법은 JNI 레이어를 갖는 것입니다. Java는 그러한 기능을 제공하는 쉬운 방법이 없습니다.

이것은 JNI를 배우고 싶은 사람을위한 소규모 제 3 자 도서관에게 흥미로운 개념 일 수 있습니다 ...

다른 팁

나는 찾았다 Jnativehook 실제 키보드와 마우스 명령으로 게임 보트를 제어하려고 할 때 (더 "인간과 같은").

지금까지 찾을 수있는 유일한 해결책은 모든 키를 jcomponent로 만들고 (초점을 맞출 수 없음) JFrame에서 다음 속성을 설정하는 것입니다.

    setUndecorated(true);
    setFocusableWindowState(false);
    setFocusable(false);
    enableInputMethods(false);

이제 로봇 클래스를 사용할 때 키를 클릭하여 집중된 창에 이벤트를 보낼 수 있습니다. 유일한 제한 사항은 동일한 가상 머신에 속하는 Windows에서만 작동하는 것처럼 보이며 다른 시스템 창에서는 전혀 작동하지 않습니다.

Robot 클래스를 사용하기 전에 Fortain SetFocus () 또는 SetActiveWindow () 함수를 호출하려고 했습니까?

OS 독립적 인 방식 으로이 작업을 수행하는 방법을 모릅니다. Windows에 대해 잘 모르지만 X 프로토콜을 통해 X Server와 대화 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top