Skocz do zawartości

Emulacja scrolla myszy w Arduino Leonardo.


Pomocna odpowiedź

Napisano

Witam. Znalazłem na YT taki oto film przedstawiający użycie Joysticka jako myszki komputerowej.

A tutaj kod: https://www.dropbox.com/sh/m6c40pu99fqxb5b/AADmt0grA9RdJtuGajwIePn0a/arduino_mouse_emulation?dl=0

I pytanie: Jak emulować scrolla myszy? Chciałbym przerobić ten kod, aby poruszanie joystickiem emulowało poruszanie myszą (to już jest w kodzie), dodać dwa tact switche jako prawy i lewy przycisk myszy oraz po naciśnięciu joysticka (wbudowany przycisk tact swich) i poruszaniu nim w górę i w dół emulować scrolla (przewijanie strony). Mam problem z tym ostatnim czyli emulowaniem scrolla myszy. Macie jakieś pomysły jak mógłbym to wykonać?

Scroll to po prostu kolejne przyciski myszy, jeden do przesunięcia trochę w górę, drugi w dół. O ile dobrze pamiętam to czwarty i piąty są do przewijania pionowo, a szósty i siódmy poziomo.

deshipu, możesz podać skąd taki pomysł? Bo patrząc w źródła biblioteki nie znalazłem, żeby to ukrywała. Po prostu wysyła raport HID mouse, który ma oddzielne pole dla scrolla. Przyciski nic do tego nie mają - może jak czegoś nie wiesz to nie pisz...

  • Lubię! 1

Żeby nie pisać jak się nie wie, to trzeba najpierw wiedzieć, że się nie wie. Poszperałem i już wiem co się dzieje. Oczywiście masz rację, myszki USB wysyłają liczbę kroków kółka od ostatniego raportu.

A czemu napisałem o przyciskach? Bo tak jest to obsługiwane przez X-owe sterowniki myszy. Zapewne zaszłość z czasów, kiedy myszki kółka nie miały, a Microsoft jeszcze nie "rozszerzył" standardu swoją Intellimouse. Założyłem, jak widać błędnie, że sterowniki są tylko cienką warstwą nad samym protokołem, zapominając, że protokół ten zmienił się przecież już wielokrotnie, a sterowniki nadal używają tego samego interfejsu.

W każdym razie przepraszam Aiji za wprowadzenie w błąd, a Elvisowi dziękuję za poprawienie.

Wg. tego co pisał Elvis metoda move() ma trzy parametry [ Mouse.move(xVal, yPos, wheel); ] i trzeci odpowiada za scrolla myszy. Napisałem kod, dzięki któremu mogę scrollować za pomocą joysticka, jednakże scroll zamiast powoli przewijać stronę, od razu przeskakuję na koniec (joystick w dół - strona błyskawicznie przeskakuje na sam dół; joystick w górę - strona błyskawicznie przeskakuje na samą górę). Co mam zrobić, aby przewijanie było powolne?

Aiji, zapewne musisz stopniowo podawać informacje o "obrocie scrolla". Gdy przekręcasz kółko na myszce nie dzieje się to w ciągu ułamka sekundy tylko cały ruch jednak chwilę trwa. Dobierz doświadczalnie jakieś opóźnienia między kolejnym scrollami i będzie dobrze 😉

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...