{"id":51225034,"url":"https://github.com/srwi/qmk-modules","last_synced_at":"2026-06-28T10:30:46.060Z","repository":{"id":365520160,"uuid":"1169523013","full_name":"srwi/qmk-modules","owner":"srwi","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-17T17:01:47.000Z","size":10,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-28T10:30:43.036Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/srwi.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":null,"dco":null,"cla":null}},"created_at":"2026-02-28T20:16:34.000Z","updated_at":"2026-06-17T16:55:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/srwi/qmk-modules","commit_stats":null,"previous_names":["srwi/qmk-modules"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/srwi/qmk-modules","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srwi%2Fqmk-modules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srwi%2Fqmk-modules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srwi%2Fqmk-modules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srwi%2Fqmk-modules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/srwi","download_url":"https://codeload.github.com/srwi/qmk-modules/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/srwi%2Fqmk-modules/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34885801,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-06-28T10:30:45.346Z","updated_at":"2026-06-28T10:30:46.048Z","avatar_url":"https://github.com/srwi.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QMK Modules\n\nThis repository contains QMK Community Modules for KeyPeek and other applications.\n\n## Install\n\nAdd this repository into your userspace `modules/` folder, e.g. as `modules/srwi`:\n\n```sh\ngit submodule add \u003crepo-url\u003e modules/srwi\ngit submodule update --init --recursive\n```\n\nThen enable the module(s) you want in your keymap `keymap.json` (see each\nmodule below for its identifier):\n\n```json\n{\n  \"modules\": [\n    \"srwi/keypeek_layer_notify\"\n  ]\n}\n```\n\n## Modules\n\n### `keypeek_layer_notify`\n\nSends current/default layer state and key press/release events over Raw HID so\nKeyPeek can track layer changes and key highlights.\n\n\u003e [!NOTE]\n\u003e This module requires **KeyPeek 0.6.0 or newer**. Older releases of KeyPeek will not react to layer changes.\n\n#### Compatibility with custom RAW HID handlers\n\nTo receive commands from KeyPeek, the module uses your firmware's RAW HID\nhandler — `via_command_kb` on QMK or `raw_hid_receive_kb` on Vial. For most keyboards this just works and there's nothing to configure.\n\nThe exception is a keyboard that already defines one of those handlers for its\nown features. Two pieces of code can't share the same handler, so the firmware\nwon't build (you'll see a \"duplicate symbol\" error). If that happens:\n\n1. Add `#define KEYPEEK_DISABLE_RAW_HID_HANDLER` to your `config.h`.\n2. Call `keypeek_handle_command()` from your existing handler, for example:\n\n   ```c\n   bool via_command_kb(uint8_t *data, uint8_t length) {\n       if (keypeek_handle_command(data, length)) {\n           return true; // handled by KeyPeek\n       }\n       // ... your own handling ...\n       return false;\n   }\n   ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrwi%2Fqmk-modules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsrwi%2Fqmk-modules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsrwi%2Fqmk-modules/lists"}