/ / Ekran dotykowy Windows 7 + Java Swing = Opóźnione zdarzenia myszy - java, swing, Windows-7, touch

Ekran dotykowy Windows 7 + Java Swing = Opóźnione zdarzenie Mouse - java, swing, windows-7, touch

Zajmuję się tworzeniem aplikacji Swing w Javie. Program ma być uruchamiany na dedykowanych maszynach z ekranem dotykowym Windows 7 i, o ile mi wiadomo, ten program powinien być jedyną rzeczą działającą na nich podczas normalnej pracy.

Zauważyłem, że ekran dotykowy systemu Windows 7Interfejs ma tę funkcję, w której będzie powstrzymywać zdarzenia mousedown. Z powodu gestu „kliknij i przytrzymaj prawy przycisk myszy” system Windows 7 tak naprawdę nie wyśle ​​aplikacji do myszy, dopóki:

  • użytkownik „poprawia” (podnosi palec od dotyku, w którym to momencie są wysyłane zarówno w dół, jak i w górę)
  • porusza palcem (w tym momencie kliknięcie staje się przeciągnięciem)
  • lub przekroczenie limitu czasu gestu prawego kliknięcia (po około 5-6 sekundach)

W praktyce oznacza to, że przyciski nie wyglądająwciśnięty w aplikacji, dopóki nie zostanie wysłane zdarzenie opuszczenia myszy (i nigdy nie rysuj przygnębionego za pomocą szybkiego stuknięcia). Ale ostatnio, poważniej, oznacza to funkcjonalność, która wymaga naciśnięcia i przytrzymania nie może dzieje się bez większego zamieszania dla przeciętnego użytkownika.

Na tym etapie rozwoju jest daleko za późno, by się odwrócić i zacząć od zera w jednej z wielu bibliotek dotykowych, które są dostępne na inne pytania. (Wymagają powtórzenia całej aplikacji w ich hierarchia komponentów, a to po prostu nie jest wykonalne. Ponadto rzeczy zakodowane w celu użycia zdarzeń myszy musiałyby zostać ponownie zakodowane za pomocą zdarzeń dotykowych, a tak naprawdę nie potrzebujemy obsługi wielodotykowej ...)

Tak, próbowałem po prostu wyłączyć dotknij i przytrzymaj gest prawym przyciskiem myszy. Niestety, po prostu wyłącza rysowanie koła wskazującego gest kliknięcia prawym przyciskiem myszy wokół palca i ostrzeżenie kolejnego kliknięcia prawym przyciskiem myszy. To NIE usuwa podstawowego problemu: opóźnionego zdarzenia przesunięcia myszy do maksymalnie sześć sekund.

Moje pytanie: Czy istnieje sposób na:

  • Najlepiej wskazać systemowi Windows, że moja aplikacjajest aplikacją przystosowaną do obsługi dotykowej, więc natychmiast wysyła zdarzenia (ale, jak sądzę, nadal wysyła zdarzenia myszy zamiast zdarzeń dotykowych)? Widzę, że wbudowana miękka klawiatura działa poprawnie. Chcę tylko, aby moja aplikacja Java działała tak samo.
  • Wyłączyć opóźnienie całkowicie na komputerze, ale nadal zapewniać podstawowe funkcje dotykowe?
  • Potencjalnie coś tak prostego jak to pytanie, które wydaje się pytać o to samo zjawisko, ale w Javie?

Odpowiedzi:

1 dla odpowiedzi № 1

Zazwyczaj tego rodzaju zachowanie jest kontrolowane przezsterownik urządzenia dotykowego zainstalowany na urządzeniu. Wszyscy producenci dotykowi, których widziałem, mają aplikacje panelu sterowania, które pozwalają dostosować zachowanie dotyku. Na przykład możesz nakazać kierowcy, aby natychmiast wysłał kliknięcie myszą do otrzymania dotyku, zamiast na krótko, aby zapobiec przypadkowemu dotknięciu inicjując zdarzenie wejściowe.