{"id":18748031,"url":"https://github.com/andrasbiro/amigamousejoyemu","last_synced_at":"2026-04-13T17:33:45.998Z","repository":{"id":150920273,"uuid":"305134738","full_name":"andrasbiro/AmigaMouseJoyEmu","owner":"andrasbiro","description":"Amiga mouse emulation library for arduino/platformio","archived":false,"fork":false,"pushed_at":"2020-10-20T17:35:29.000Z","size":7,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-27T12:14:01.419Z","etag":null,"topics":["amiga","amiga-hardware","arduino","arduino-library","commodore-amiga-computers","mouse-emulation","platformio"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrasbiro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-18T15:35:21.000Z","updated_at":"2025-01-22T23:38:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"4557288e-2d02-4b22-a0b5-4552e0142b5b","html_url":"https://github.com/andrasbiro/AmigaMouseJoyEmu","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/andrasbiro/AmigaMouseJoyEmu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrasbiro%2FAmigaMouseJoyEmu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrasbiro%2FAmigaMouseJoyEmu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrasbiro%2FAmigaMouseJoyEmu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrasbiro%2FAmigaMouseJoyEmu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrasbiro","download_url":"https://codeload.github.com/andrasbiro/AmigaMouseJoyEmu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrasbiro%2FAmigaMouseJoyEmu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31762597,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T15:25:13.801Z","status":"ssl_error","status_checked_at":"2026-04-13T15:25:09.162Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amiga","amiga-hardware","arduino","arduino-library","commodore-amiga-computers","mouse-emulation","platformio"],"created_at":"2024-11-07T16:32:24.989Z","updated_at":"2026-04-13T17:33:45.980Z","avatar_url":"https://github.com/andrasbiro.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AmigaMouseJoyEmu\n\nThis is a simple arduino/platformio library to emulate mouse (and maybe\njoystick, in the future). I use it together with Kris Chambers' [excellent PS2\nlibrary](https://github.com/kristopher/PS2-Mouse-Arduino) on an Arduino Pro Mini\n(5V/16MHz version). However, in theory, it is also possible to use it with a USB\nHID library.\n\nCurrently it can only emulate a mouse - although I planned to add Joystick\nsupport to it, I'm not sure if I ever will.\n\n## Mouse emulation\n\n### Buttons\n\nThe current version emulates a 3 button mouse. Although I wanted to add scroll\nsupport, I couldn't find a clear description how\n[FreeWheel](http://aminet.net/package/util/mouse/FreeWheel) expects that\ninformation.\n\n### Movement\n\nAmiga mouse uses quadrature encoders which is sent directly to the mouse port's\npin 1/2/3/4. This library sends N number of 4 quadrature phases (usually a\n\"click\" on a rotary encoder) on both X and Y axes. The emulated signal always\ntakes the same time, 4ms by default. Due to the blocking nature of the\nemulation, this sets the polling period, as well as the slowest possible\nmovement in one emulation cycle. There is a maximum limit of movement for an\nemulation cycle, 100 by default - resulting quadrature phase changes in 10us\nperiod. I'm not sure of the limitation of the Arduino platform I used or the\nAmiga, but this worked well on my 16MHz version.\n\n### Emulation\n\nThe idea is that you should poll your input in the main loop, which should have\nthe 3 button state and the cumulated movement since the last poll. If the button\nstate is changed since the last call, it should be sent to the amiga, next the\nemulation of the quadrature movement should take place.\n\nThis method works very well with more intelligent mouse protocols, like PS2 or\nUSB HID, or interrupt based inputs, but it won't work well with \"dumber\"\nprotocols as in input (such as the Amiga mouse protocol itself)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrasbiro%2Famigamousejoyemu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrasbiro%2Famigamousejoyemu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrasbiro%2Famigamousejoyemu/lists"}