openajazz 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openajazz-0.4.0/LICENSE +21 -0
- openajazz-0.4.0/PKG-INFO +99 -0
- openajazz-0.4.0/README.md +67 -0
- openajazz-0.4.0/openajazz/__init__.py +3 -0
- openajazz-0.4.0/openajazz/__main__.py +5 -0
- openajazz-0.4.0/openajazz/cli.py +566 -0
- openajazz-0.4.0/openajazz/control.py +118 -0
- openajazz-0.4.0/openajazz/effects.py +160 -0
- openajazz-0.4.0/openajazz/keys.py +222 -0
- openajazz-0.4.0/openajazz/music.py +194 -0
- openajazz-0.4.0/openajazz/patterns.py +76 -0
- openajazz-0.4.0/openajazz/protocol.py +313 -0
- openajazz-0.4.0/openajazz/service.py +140 -0
- openajazz-0.4.0/openajazz/state.py +93 -0
- openajazz-0.4.0/openajazz/tui.py +1162 -0
- openajazz-0.4.0/openajazz.egg-info/PKG-INFO +99 -0
- openajazz-0.4.0/openajazz.egg-info/SOURCES.txt +26 -0
- openajazz-0.4.0/openajazz.egg-info/dependency_links.txt +1 -0
- openajazz-0.4.0/openajazz.egg-info/entry_points.txt +2 -0
- openajazz-0.4.0/openajazz.egg-info/requires.txt +8 -0
- openajazz-0.4.0/openajazz.egg-info/top_level.txt +1 -0
- openajazz-0.4.0/pyproject.toml +49 -0
- openajazz-0.4.0/setup.cfg +4 -0
- openajazz-0.4.0/tests/test_control_effects.py +126 -0
- openajazz-0.4.0/tests/test_music.py +41 -0
- openajazz-0.4.0/tests/test_patterns_state.py +41 -0
- openajazz-0.4.0/tests/test_protocol.py +120 -0
- openajazz-0.4.0/tests/test_service.py +37 -0
openajazz-0.4.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Shreyas Deb
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
openajazz-0.4.0/PKG-INFO
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: openajazz
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Unofficial control for AJAZZ keyboards (AK820 Max Plus so far): lighting, per-key RGB, remaps, macros, music sync. CLI, TUI and web.
|
|
5
|
+
Author-email: Shreyas Deb <shreyasdeb@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Web app, https://openajazz.vercel.app
|
|
8
|
+
Project-URL: Homepage, https://github.com/shrey715/openajazz
|
|
9
|
+
Project-URL: Releases, https://github.com/shrey715/openajazz/releases
|
|
10
|
+
Project-URL: Issues, https://github.com/shrey715/openajazz/issues
|
|
11
|
+
Project-URL: Protocol, https://github.com/shrey715/openajazz/blob/main/PROTOCOL.md
|
|
12
|
+
Keywords: ajazz,ak820,ak820 max plus,keyboard,mechanical keyboard,rgb,hid,hidraw,linux,tui,macro
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Environment :: Console :: Curses
|
|
16
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
17
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
|
+
Classifier: Topic :: System :: Hardware :: Hardware Drivers
|
|
21
|
+
Classifier: Topic :: Multimedia :: Sound/Audio :: Analysis
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: rich>=12
|
|
26
|
+
Requires-Dist: textual>=3.0
|
|
27
|
+
Provides-Extra: music
|
|
28
|
+
Requires-Dist: numpy>=1.21; extra == "music"
|
|
29
|
+
Provides-Extra: dev
|
|
30
|
+
Requires-Dist: pytest; extra == "dev"
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
# openajazz
|
|
34
|
+
|
|
35
|
+
Control **AJAZZ keyboards** without the Windows app: lighting effects, per-key RGB, key remaps, macros, music sync, sleep and battery. Works over the USB cable or the 2.4G dongle.
|
|
36
|
+
|
|
37
|
+

|
|
38
|
+
|
|
39
|
+
> [!WARNING]
|
|
40
|
+
> Unofficial. Not affiliated with AJAZZ. The protocol was reverse engineered from the vendor's Windows driver, and the lighting, colours, per-key RGB and live frames have been confirmed on real keyboards. It only sends the settings packets the official app sends and never touches firmware. Use at your own risk; `openajazz factory-reset` puts the keyboard back to stock.
|
|
41
|
+
|
|
42
|
+
## Supported keyboards
|
|
43
|
+
|
|
44
|
+
| Keyboard | Wired | 2.4G dongle | Bluetooth |
|
|
45
|
+
|---|---|---|---|
|
|
46
|
+
| AK820 Max Plus (tri-mode RGB) | yes | yes | no (the keyboard doesn't expose settings over Bluetooth) |
|
|
47
|
+
|
|
48
|
+
Have another AJAZZ board? Open an issue with the output of `openajazz devices` and the name of the vendor driver package; most of them share this protocol.
|
|
49
|
+
|
|
50
|
+
## Get it
|
|
51
|
+
|
|
52
|
+
Pick one:
|
|
53
|
+
|
|
54
|
+
| | |
|
|
55
|
+
|---|---|
|
|
56
|
+
| **Web, no install** | open **[openajazz.vercel.app](https://openajazz.vercel.app)** in Chrome, Edge or Opera on a computer |
|
|
57
|
+
| **pipx / uv** | `pipx install 'openajazz[music]'` or `uv tool install 'openajazz[music]'` |
|
|
58
|
+
| **AppImage** | grab it from [releases](https://github.com/shrey715/openajazz/releases/latest), `chmod +x`, run |
|
|
59
|
+
|
|
60
|
+
### Linux permissions
|
|
61
|
+
|
|
62
|
+
Once, so you don't need sudo (the web app needs this too):
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
openajazz udev --install # then replug the keyboard or dongle
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
It only opens the keyboard's settings interface to your user, never the typing one.
|
|
69
|
+
|
|
70
|
+
## Use it
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
openajazz # full-screen TUI
|
|
74
|
+
openajazz status # battery
|
|
75
|
+
openajazz light breathing -c cyan # effect + colour (openajazz modes lists them)
|
|
76
|
+
openajazz lights off # and `on` brings your lighting back
|
|
77
|
+
openajazz custom -a 101010 w=red a=red s=red d=red
|
|
78
|
+
openajazz remap capslock esc
|
|
79
|
+
openajazz macro f12 +lctrl c -lctrl
|
|
80
|
+
openajazz music --background # lights follow what's playing, terminal can close
|
|
81
|
+
openajazz autostart music # ...and start that at every login
|
|
82
|
+
openajazz --help # everything else
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Coming from ak820ctl? Same commands under the new name; your saved settings and presets move over on first run.
|
|
86
|
+
|
|
87
|
+
## What doesn't work (yet)
|
|
88
|
+
|
|
89
|
+
- Bluetooth: plug in the cable or dongle to change settings.
|
|
90
|
+
- Phones: browsers on phones don't support WebHID.
|
|
91
|
+
- Firmware updates and mouse-button assignments aren't supported.
|
|
92
|
+
|
|
93
|
+
More detail: [CHANGELOG](https://github.com/shrey715/openajazz/blob/main/CHANGELOG.md) · [PROTOCOL.md](https://github.com/shrey715/openajazz/blob/main/PROTOCOL.md) · [issues](https://github.com/shrey715/openajazz/issues)
|
|
94
|
+
|
|
95
|
+
## Credits
|
|
96
|
+
|
|
97
|
+
Hardware test results, the colour palette, live-frame behaviour and the effect previews come from [prasoondev/ajazz-linux](https://github.com/prasoondev/ajazz-linux) (MIT).
|
|
98
|
+
|
|
99
|
+
MIT licensed. "AJAZZ" and "AK820" are trademarks of their owner, used here only to say what hardware this is for.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# openajazz
|
|
2
|
+
|
|
3
|
+
Control **AJAZZ keyboards** without the Windows app: lighting effects, per-key RGB, key remaps, macros, music sync, sleep and battery. Works over the USB cable or the 2.4G dongle.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
> [!WARNING]
|
|
8
|
+
> Unofficial. Not affiliated with AJAZZ. The protocol was reverse engineered from the vendor's Windows driver, and the lighting, colours, per-key RGB and live frames have been confirmed on real keyboards. It only sends the settings packets the official app sends and never touches firmware. Use at your own risk; `openajazz factory-reset` puts the keyboard back to stock.
|
|
9
|
+
|
|
10
|
+
## Supported keyboards
|
|
11
|
+
|
|
12
|
+
| Keyboard | Wired | 2.4G dongle | Bluetooth |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| AK820 Max Plus (tri-mode RGB) | yes | yes | no (the keyboard doesn't expose settings over Bluetooth) |
|
|
15
|
+
|
|
16
|
+
Have another AJAZZ board? Open an issue with the output of `openajazz devices` and the name of the vendor driver package; most of them share this protocol.
|
|
17
|
+
|
|
18
|
+
## Get it
|
|
19
|
+
|
|
20
|
+
Pick one:
|
|
21
|
+
|
|
22
|
+
| | |
|
|
23
|
+
|---|---|
|
|
24
|
+
| **Web, no install** | open **[openajazz.vercel.app](https://openajazz.vercel.app)** in Chrome, Edge or Opera on a computer |
|
|
25
|
+
| **pipx / uv** | `pipx install 'openajazz[music]'` or `uv tool install 'openajazz[music]'` |
|
|
26
|
+
| **AppImage** | grab it from [releases](https://github.com/shrey715/openajazz/releases/latest), `chmod +x`, run |
|
|
27
|
+
|
|
28
|
+
### Linux permissions
|
|
29
|
+
|
|
30
|
+
Once, so you don't need sudo (the web app needs this too):
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
openajazz udev --install # then replug the keyboard or dongle
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
It only opens the keyboard's settings interface to your user, never the typing one.
|
|
37
|
+
|
|
38
|
+
## Use it
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
openajazz # full-screen TUI
|
|
42
|
+
openajazz status # battery
|
|
43
|
+
openajazz light breathing -c cyan # effect + colour (openajazz modes lists them)
|
|
44
|
+
openajazz lights off # and `on` brings your lighting back
|
|
45
|
+
openajazz custom -a 101010 w=red a=red s=red d=red
|
|
46
|
+
openajazz remap capslock esc
|
|
47
|
+
openajazz macro f12 +lctrl c -lctrl
|
|
48
|
+
openajazz music --background # lights follow what's playing, terminal can close
|
|
49
|
+
openajazz autostart music # ...and start that at every login
|
|
50
|
+
openajazz --help # everything else
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Coming from ak820ctl? Same commands under the new name; your saved settings and presets move over on first run.
|
|
54
|
+
|
|
55
|
+
## What doesn't work (yet)
|
|
56
|
+
|
|
57
|
+
- Bluetooth: plug in the cable or dongle to change settings.
|
|
58
|
+
- Phones: browsers on phones don't support WebHID.
|
|
59
|
+
- Firmware updates and mouse-button assignments aren't supported.
|
|
60
|
+
|
|
61
|
+
More detail: [CHANGELOG](https://github.com/shrey715/openajazz/blob/main/CHANGELOG.md) · [PROTOCOL.md](https://github.com/shrey715/openajazz/blob/main/PROTOCOL.md) · [issues](https://github.com/shrey715/openajazz/issues)
|
|
62
|
+
|
|
63
|
+
## Credits
|
|
64
|
+
|
|
65
|
+
Hardware test results, the colour palette, live-frame behaviour and the effect previews come from [prasoondev/ajazz-linux](https://github.com/prasoondev/ajazz-linux) (MIT).
|
|
66
|
+
|
|
67
|
+
MIT licensed. "AJAZZ" and "AK820" are trademarks of their owner, used here only to say what hardware this is for.
|