A lightweight macOS menu bar app for controlling a Razer mouse — DPI, RGB lighting, and software button remapping — without needing Razer Synapse.
Disclaimer: This is an independent, unofficial project and is not affiliated with, endorsed by, or supported by Razer Inc. "Razer" and related trademarks belong to their respective owners. This software talks to the device using its raw USB HID protocol (reverse-engineered with reference to the OpenRazer project) and is provided as-is, with no warranty. Use at your own risk.
- Menu bar app — runs as a
MenuBarExtra, no Dock icon or main window - DPI control — quick presets (400 / 800 / 1K / 3K) plus a slider for fine-grained adjustment
- RGB lighting — per-zone (logo / scroll wheel) effects: Static, Breathe, Cycle (spectrum), or Off, with optional zone sync and a color picker
- Button remapping — remap the side mouse buttons to common actions
(copy, paste, Mission Control, clicks, disable) entirely in software via a
CGEventTap, independent of the Razer protocol
- macOS 14.6+
- A Razer mouse (developed and tested against a Razer DeathAdder V2,
VID
0x1532/ PID0x0084; other Razer mice using the same HID protocol family may work but are unverified) - Input Monitoring permission (to talk to the mouse over HID)
- Accessibility permission (only required if you use software button remapping)
- Open
RazerControl.xcodeprojin Xcode 16+ - Select your own signing team in the project's Signing & Capabilities tab
(the project ships without a
DEVELOPMENT_TEAMset) - Build and run — the app appears as an icon in the menu bar
The Razer HID protocol implementation lives in the local RazerKit Swift
package, which has its own test suite (swift test from RazerKit/).
RazerControl/ SwiftUI menu bar app (UI, DeviceController, ButtonMapper)
RazerKit/ Swift package implementing the Razer HID protocol
SPEC.md Feature spec and protocol notes
- Button assignment via the Razer firmware protocol itself is not implemented — remapping is done entirely in software (event interception), since the firmware-level command bytes are unverified.
- Only the logo and scroll wheel lighting zones are supported.
- This project was built for personal use against one specific device; other models may require protocol adjustments.
