Unofficial on-device control software for the Ajazz AJ139 V2 wireless mouse.
This project replaces the vendor web UI with a local Python application built around hidapi and Tkinter. It supports direct device configuration, tray battery monitoring, key remapping, and macro management without depending on a browser wrapper.
- Status page with firmware, online state, and battery information
- Performance settings
- DPI levels
- Polling rate
- Debounce time
- Lift-off distance
- Lighting / sleep settings
- Key Mapping tab for all 8 on-device button slots
- Mouse presets, media presets, normal keyboard keys, and modifier combos
- Extended function key support up to
F24 - Macro tab with 32 macro slots
- On-device macro read / write / reset
- Macro recording and manual event insertion
- Inline macro editing for
Name,Action, andDelay - English / Japanese UI
- Raw HID debug log output
- System tray battery indicator
- Python 3.8+
- Windows recommended
- Python packages:
hidapiPillowpystraypyinstallerfor building
Install dependencies with:
python -m pip install -r requirements.txtpython main.pyIf pystray or another package appears missing, make sure you installed dependencies with the same Python you use to launch the app:
python -m pip install -r requirements.txt
python main.pyUse the included batch file:
build.batbuild.bat installs requirements into the active Python environment and then runs:
python -m PyInstaller --noconfirm --onefile --windowed main.py- Closing the main window hides the app to the system tray.
Refresh Statusloads the basic device state first.- Macro data is loaded lazily when the
Macrotab is opened. - Heavy device operations run in the background so the UI stays responsive.
- The
Macrotab shows a status message while loading, writing, or resetting. - Some macro read chunks may come back empty on this device; the app handles that without blocking for long timeouts.
- Macro storage behavior is vendor-specific and was reverse engineered from the web app.
- Devices with empty or sparse macro pages may still load more slowly than normal settings.
- Full validation still depends on real hardware testing.
- main.py: entry point
- ui_app.py: Tkinter UI and background task handling
- ajazz_mouse.py: HID protocol layer
- build.bat: Windows build helper
- requirements.txt: Python dependencies