https://github.com/srwi/qmk-modules
https://github.com/srwi/qmk-modules
Last synced: 23 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/srwi/qmk-modules
- Owner: srwi
- License: gpl-2.0
- Created: 2026-02-28T20:16:34.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2026-06-17T17:01:47.000Z (about 1 month ago)
- Last Synced: 2026-06-28T10:30:43.036Z (23 days ago)
- Language: C
- Size: 9.77 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# QMK Modules
This repository contains QMK Community Modules for KeyPeek and other applications.
## Install
Add this repository into your userspace `modules/` folder, e.g. as `modules/srwi`:
```sh
git submodule add modules/srwi
git submodule update --init --recursive
```
Then enable the module(s) you want in your keymap `keymap.json` (see each
module below for its identifier):
```json
{
"modules": [
"srwi/keypeek_layer_notify"
]
}
```
## Modules
### `keypeek_layer_notify`
Sends current/default layer state and key press/release events over Raw HID so
KeyPeek can track layer changes and key highlights.
> [!NOTE]
> This module requires **KeyPeek 0.6.0 or newer**. Older releases of KeyPeek will not react to layer changes.
#### Compatibility with custom RAW HID handlers
To receive commands from KeyPeek, the module uses your firmware's RAW HID
handler — `via_command_kb` on QMK or `raw_hid_receive_kb` on Vial. For most keyboards this just works and there's nothing to configure.
The exception is a keyboard that already defines one of those handlers for its
own features. Two pieces of code can't share the same handler, so the firmware
won't build (you'll see a "duplicate symbol" error). If that happens:
1. Add `#define KEYPEEK_DISABLE_RAW_HID_HANDLER` to your `config.h`.
2. Call `keypeek_handle_command()` from your existing handler, for example:
```c
bool via_command_kb(uint8_t *data, uint8_t length) {
if (keypeek_handle_command(data, length)) {
return true; // handled by KeyPeek
}
// ... your own handling ...
return false;
}
```