This keymap enables the efog.tech Endgame trackball to be used with either hand interchangeably. It's intended for when the Endgame is positioned between a split keyboard, pointing directly at the monitor.
Buttons are optimized for the user's hands to be at an angle to the trackball (since it's directly in front of their body).
- Reverted to using OEM firmware and editing keymaps in ZMK Studio
- Adjusted the Snipe layer to allow access to all main mouse buttons (Left/Middle/Right)
- Moved RGB and Bluetooth settings to the Device layer
- Removed the User layer
- Version 1.2.1 - Readme | Download
- Version 1.2.0 - Readme | Download
- Version 1.1.0 - Readme | Download
- Version 1.0.0 - Readme | Download
I no longer maintain forked firmware for the Endgame. My keymaps are now implemented as overrides to the default keymap in ZMK Studio, and pointer/scrolling adjustments are made with the new Marshmallow UI configuration webpage.
I'm currently using this firmware version from December 29, 2025.
The Default layer provides the five standard mouse buttons, plus the ability to toggle on the Snipe and Scroll layers with the encoders or access the Extras layer momentarily.
| Left | ZMK Studio (left) | Right | ZMK Studio (right) |
|---|---|---|---|
| Back mouse button, Hold for Extras layer |
Hold/tap (layer/mouse key): Extras, MB4 |
Forward mouse button, Hold for Extras layer |
Hold/tap (layer/mouse key): Extras, MB5 |
| Middle mouse button | Mouse Key Press: MB3 | Middle mouse button | Mouse Key Press: MB3 |
| Right mouse button | Mouse Key Press: MB2 | Right mouse button | Mouse Key Press: MB2 |
| Left mouse button | Mouse Key Press: MB1 | Mouse mouse button | Mouse Key Press: MB1 |
| Encoder up: Snipe Layer | To Layer: Snipe | Encoder up: Snipe Layer | To Layer: Snipe |
| Encoder down: Scroll Layer | To Layer: Scroll | Encoder down: Scroll Layer | To Layer: Scroll |
The Extras layer provides ZMK Studio Unlock, power off, and Chromium browser-tab management in two-button combinations.
- To close a tab, press both top-middle buttons together.
- To reopen a closed tab, press one of the top-middle buttons and a top-corner button.
- To refresh a tab, press one of the top-middle buttons and a bottom-corner button.
| Left | ZMK Studio (left) | Right | ZMK Studio (right) |
|---|---|---|---|
| Close tab | Key Press: LCtrl + Keyboard W | Close tab | Key Press: LCtrl + Keyboard W |
| Reopen closed tab | Key Press: LCtrl + LShift + Keyboard T | Reopen closed tab | Key Press: LCtrl + LShift + Keyboard T |
| Refresh (F5) | Key Press: Keyboard F5 | Refresh (F5) | Key Press: Keyboard F5 |
| ZMK Studio Unlock | Studio Unlock | Power off | Power off |
| Encoder up: Disabled | None | Encoder up: Disabled | None |
| Encoder down: Disabled | None | Encoder down: Disabled | None |
The Snipe layer reduces pointer speed 1/3rd of normal, allowing for precision clicking with the Left/Middle/Right mouse buttons. Press the top buttons to return to the Default layer.
| Left | ZMK Studio (left) | Right | ZMK Studio (right) |
|---|---|---|---|
| Return to Default layer | To Layer: Default | Return to Default layer | To Layer: Default |
| Middle mouse button | Transparent | Middle mouse button | Transparent |
| Right mouse button | Transparent | Right mouse button | Transparent |
| Left mouse button | Transparent | Left mouse button | Transparent |
| Encoder up: Disabled | None | Encoder up: Disabled | None |
| Encoder down: Scroll Layer | To Layer: Scroll | Encoder down: Scroll Layer | To Layer: Scroll |
When the Scroll layer is enabled, moving the ball scrolls vertically and horizontally.
- This layer also provides access to the Device layer.
| Left | ZMK Studio (left) | Right | ZMK Studio (right) |
|---|---|---|---|
| Enable Device layer | To Layer: Device | Enable Device layer | To Layer: Device |
| Return to Default layer | To Layer: Default | Return to Default layer | To Layer: Default |
| Return to Default layer | To Layer: Default | Return to Default layer | To Layer: Default |
| Return to Default layer | To Layer: Default | Return to Default layer | To Layer: Default |
| Encoder up: Snipe Layer | To Layer: Snipe | Encoder up: Snipe Layer | To Layer: Snipe |
| Encoder down: Disabled | None | Encoder down: Disabled | None |
The Device layer contains settings for RGB lighting and Bluetooth.
- This layer can only be accessed by first enabling the Scroll layer.
| Left | ZMK Studio (left) | Right | ZMK Studio (right) |
|---|---|---|---|
| RGB off | RGB off | Clear all Bluetooth profiles | Bluetooth: Clear all profiles |
| Change RGB lighting effect | Underglow: Next Effect | Next Bluetooth profile | Bluetooth: Next Profile |
| Toggle RGB lighting on/off | Toggle RGB | Previous Bluetooth profile | Bluetooth: Previous Profile |
| Return to Default layer | To Layer: Default | Return to Default layer | To Layer: Default |
| Encoder up: Disabled | None | Encoder up: Disabled | None |
| Encoder down: Disabled | None | Encoder down: Disabled | None |