{"id":15049391,"url":"https://github.com/indigoparadox/minput-hop","last_synced_at":"2025-04-10T02:09:14.672Z","repository":{"id":173177117,"uuid":"650353567","full_name":"indigoparadox/minput-hop","owner":"indigoparadox","description":"Compact client-only library written in C89 for talking to Synergy KVM server and its forks","archived":false,"fork":false,"pushed_at":"2024-01-14T18:44:54.000Z","size":354,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-09-30T01:21:44.410Z","etag":null,"topics":["barrier","c89","input-leap","kvm","synergy","windows-3-x","windows-95"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/indigoparadox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-06-06T22:27:28.000Z","updated_at":"2024-02-19T16:19:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"d84e9711-80fc-4eb4-a3bf-3f1c7ef1a5a1","html_url":"https://github.com/indigoparadox/minput-hop","commit_stats":null,"previous_names":["indigoparadox/minput-hop"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indigoparadox%2Fminput-hop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indigoparadox%2Fminput-hop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indigoparadox%2Fminput-hop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/indigoparadox%2Fminput-hop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/indigoparadox","download_url":"https://codeload.github.com/indigoparadox/minput-hop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219855784,"owners_count":16556131,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["barrier","c89","input-leap","kvm","synergy","windows-3-x","windows-95"],"created_at":"2024-09-24T21:20:04.982Z","updated_at":"2024-10-12T17:21:53.333Z","avatar_url":"https://github.com/indigoparadox.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# minput-hop\n\nminput-hop (a play on input-leap) is a compact client-only library written in C89 for talking to Synergy KVM server and its forks.\n\nRough docs for API available at: [https://indigoparadox.github.io/minput-hop/](https://indigoparadox.github.io/minput-hop/)!\n\n## Purpose\n\nTo have something simple and (relatively) easy to port to obsolete or embedded operating systems so they can share input devices with a KVM server.\n\n## Architecture\n\nThe architecture is a little convoluted, but it's roughly like this:\n\n * Platform-specific startup happens in osio\\_\\*.c. This is WinMain() on Windows and main() elsewhere.\n * Platform-specific main sets up a common environment, gets configuration (server, client name, port, etc) into a NETIO\\_CFG struct which it then passes to minput\\_main() in main.c.\n * minput\\_main() initializes common subsystems (network, UI) in order and calls osio\\_loop(), again platform-specific in osio\\_\\*.c.\n * osio\\_loop() repeated calls the loop iteration; either by setting up a timer and then starting the message loop on Windows, or directly elsewhere.\n\nThis might be simplified somewhat later, but it works for now.\n\n## Ideas\n\n - Abstract socket send/recv/etc into layer that can be switched out for e.g.\n   serial communication over RS-232.\n\n## Known Issues\n\n - Does not handle the mouse being held down gracefully, especially in MSPAINT.\n - Does not handle mouse interactions well inside of its own window.\n\n## Debug Defines\n\nIn addition to the DEBUG compile-time definition, some fine-grained debug statements have been placed inside the following definitions to keep verbosity in the logs down when not needed:\n\n - DEBUG\\_FLOW\n - DEBUG\\_CALV\n - DEBUG\\_SEND\n - DEBUG\\_PACKETS\\_IN\n - DEBUG\\_PROTO\\_MOUSE\n - DEBUG\\_PROTO\\_CLIP\n\n## References\n\n- Programming Windows, 3rd Edition - Petzold, Charles\n- [qemu](https://www.qemu.org/docs/master/interop/barrier.html) docs for Barrier protocol information.\n- @cvtsi2sd@hachyderm.io for undocumented \\*\\_event() calls in Windows 3.\n- [Bobobobo's weblog](https://bobobobo.wordpress.com/2009/03/30/adding-an-icon-system-tray-win32-c/) for a detailed example of using the tray notification area.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findigoparadox%2Fminput-hop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findigoparadox%2Fminput-hop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findigoparadox%2Fminput-hop/lists"}