Imitowanie klawiatury fizycznej...

0

Witam, piszę sobie małego bocika (ma ułatwić mi monotonne klikanie jednego przycisku x.x). Wszystko działa, ale jest jeden mały szkopuł.
Korzystam z klasy Robot*. Do klikania klawisza używam oczywiście keyPress & keyRelease, które to działają na zasadzie emulowanej klawiatury - co daje ten sam efekt jakbym klikał w windowsową wirtualną klawiaturę. Niby nic groźnego, ale aplikacja w której chcę używać klawisza ignoruje te wirtualne i przyjmuje jedynie informacje od fizycznej klawiatury.

Czy ktoś z was miał kiedyś podobny problem lub wie jak go rozwiązać? Może jakaś alternatywa dla używanej przeze mnie klasy? Trochę szukałem, ale nic nie udało mi się wygrzebać spod wyników poruszających tematykę listenerów :d

PS. Uprzedzając - program mi działa, bo w notatniku klawisze są wyłapywane normalnie, a w docelowej aplikacji nie działa nawet wspomniana windowsowa klawiatura. Kodu nie zamieszczam, bo jest strasznie zabałaganiony, a wydaje mi się, że jest zbędny w tym temacie - w końcu chodzi mi bardziej o wiedzę teoretyczną, niż sam kod.

*http://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html

0

Jeżeli nie działa Ci również systemowa klawiatura wirtualna, to znaczy, że klawisze mogą być przez nią odczytywane na najniższym poziomie dostępnym w Windows. Być może klawiatura jest odczytywana bezpośrednio przez funkcje bios lub efi - wtedy niewiele można zrobić poza wbiciem się w to co jest wywoływane do odczytu klawiszy. Krótko mówiąc musisz najpierw znaleźć rozwiązanie natywne, które zadziała, a dopiero wtedy ewentualnie użyć JNI, co da ten sam efekt, lecz formalnie będzie on z poziomu Javy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1