{"id":35408581,"url":"https://github.com/axide-dev/axidev-io","last_synced_at":"2026-04-25T10:06:47.467Z","repository":{"id":330495589,"uuid":"1121301974","full_name":"axide-dev/axidev-io","owner":"axide-dev","description":"A lightweight C library for cross-platform keyboard input injection and monitoring.","archived":false,"fork":false,"pushed_at":"2026-04-18T17:48:23.000Z","size":447,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-18T19:33:19.746Z","etag":null,"topics":["c","io","keyboard","library","linux","windows"],"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/axide-dev.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-22T19:05:04.000Z","updated_at":"2026-04-18T17:43:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/axide-dev/axidev-io","commit_stats":null,"previous_names":["ziedyousfi/typr-io","axide-dev/axidev-io"],"tags_count":66,"template":false,"template_full_name":null,"purl":"pkg:github/axide-dev/axidev-io","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axide-dev%2Faxidev-io","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axide-dev%2Faxidev-io/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axide-dev%2Faxidev-io/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axide-dev%2Faxidev-io/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/axide-dev","download_url":"https://codeload.github.com/axide-dev/axidev-io/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axide-dev%2Faxidev-io/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32257778,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T09:15:33.318Z","status":"ssl_error","status_checked_at":"2026-04-25T09:15:31.997Z","response_time":59,"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":["c","io","keyboard","library","linux","windows"],"created_at":"2026-01-02T13:24:42.781Z","updated_at":"2026-04-25T10:06:47.460Z","avatar_url":"https://github.com/axide-dev.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# axidev-io\n\n`axidev-io` is a C library for keyboard input injection and global keyboard\nlistening on Windows and Linux.\n\n## Build\n\n```sh\npython build.py\npython build.py test\npython build.py example\n```\n\nOn Linux the build expects `libinput`, `libudev`, and `xkbcommon` through\n`pkg-config`. Runtime keyboard initialization also needs the XKB data files\nfrom `xkeyboard-config` or `xkb-data`, usually under `/usr/share/X11/xkb`.\n\nThe primary public header is `include/axidev-io/c_api.h`, including the logging\nmacros.\n\n## Public API\n\nMost consumers only need:\n\n```c\n#include \u003caxidev-io/c_api.h\u003e\n\nint main(void) {\n  if (!axidev_io_keyboard_initialize()) {\n    return 1;\n  }\n\n  axidev_io_keyboard_type_text(\"Hello world\");\n  axidev_io_keyboard_tap((axidev_io_keyboard_key_with_modifier_t){\n      .key = AXIDEV_IO_KEY_C,\n      .mods = AXIDEV_IO_MOD_CTRL\n  });\n\n  axidev_io_keyboard_free();\n  return 0;\n}\n```\n\nThe listener uses the same global-library model:\n\n```c\nstatic void on_key(uint32_t codepoint,\n                   axidev_io_keyboard_key_with_modifier_t key_mod,\n                   bool pressed,\n                   void *user_data) {\n  printf(\"Key event: codepoint=%u, key=%u, mods=%u, pressed=%d\\n\",\n          codepoint, key_mod.key, key_mod.mods, pressed));\n}\n\nint main(void) {\n  if (!axidev_io_listener_start(on_key, NULL)) {\n    return 1;\n  }\n\n  axidev_io_listener_stop();\n  return 0;\n}\n```\n\n## Notes\n\n- Normal sender calls do not take sender handles, listener handles, or context\n  handles.\n- Shared runtime state lives in the single exported `axidev_io_global`\n  pointer.\n- Printable text sending prefers layout-resolved key sequences; explicit\n  `key_down`, `key_up`, and `tap` remain available for low-level control.\n- `axidev_io_keyboard_key_down(key_mod, true)` requests backend-managed repeat\n  for that held key where supported. On Windows, this repeat is emulated by the\n  SendInput backend using the user's system keyboard repeat delay and speed\n  settings. It is not native hardware typematic behavior and does not make the\n  backend a HID device; `can_simulate_hid` remains false. On Linux/uinput, this\n  flag does not change the existing backend behavior.\n- Vendored dependency: `vendor/stb/stb_ds.h` with license text in\n  `vendor/licenses/stb.txt`.\n\n## Docs\n\n- [docs/README.md](docs/README.md)\n- [docs/consumers/README.md](docs/consumers/README.md)\n- [docs/developers/README.md](docs/developers/README.md)\n\n## License\n\nSee [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxide-dev%2Faxidev-io","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faxide-dev%2Faxidev-io","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxide-dev%2Faxidev-io/lists"}