Skocz do zawartości

Emulacja scrolla myszy w Arduino Leonardo.


Aiji

Pomocna odpowiedź

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ć?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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
Link do komentarza
Share on other sites

Ż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.

Link do komentarza
Share on other sites

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?

Link do komentarza
Share on other sites

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 😉

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.