RaphaelCaputo2/shark-k86-mac
GitHub: RaphaelCaputo2/shark-k86-mac
为 Attack Shark K86 机械键盘提供原生 macOS/Linux 控制能力的 Python 工具,支持 RGB 灯效与 TFT 屏幕的全面自定义。
Stars: 0 | Forks: 0
# shark-k86-mac
**Attack Shark K86** 机械键盘的原生 **macOS / Linux** 控制工具 —— 包括 RGB 灯光、侧边灯带以及 128×128 TFT 屏幕。无需 Windows,无需虚拟机,无需浏览器。
Attack Shark 仅提供了一个 Windows 应用程序(此外还有一个并非对所有人都有效的浏览器 WebHID 驱动程序)。这是一个小型的 Python 工具,可直接与键盘的厂商 HID 接口进行通信,因此您可以在 Mac 或 Linux 机器上通过终端来控制它。
## 功能
- 🎨 按键和侧边灯带的**纯色自定义**
- 🌈 **20 多种内置特效**(波浪、涟漪、贪吃蛇、呼吸、流星、烟花……)—— 包括响应式的*打字涟漪*特效
- 🖼️ **发送任意图片**(PNG/JPG/……)至 TFT 屏幕
- 🎞️ **发送动画 GIF** 至屏幕
- 💡 LED 主控 + 节电控制(那个会在后台默默关掉灯光的功能)
- 🔎 只读设备信息(固件版本、状态)
## 支持的设备
| | |
|---|---|
| 产品 | Attack Shark K86 (ROYUAN "Gaming Keyboard") |
| USB VID:PID | `0x3151:0x4015` |
| 控制接口 | HID interface 2, usage page `0xffff`, usage `0x0002` |
其他 ROYUAN/Attack Shark 型号可能共享相同的通信帧格式,但尚未经过测试。
## 安装
```
git clone https://github.com/RaphaelCaputo2/shark-k86-mac.git
cd shark-k86-mac
pip install -r requirements.txt # hidapi + pillow
# 可选:安装 `k86` 命令
pip install -e .
```
通过 **USB 线缆**连接键盘,并将背面的开关拨至 **Win + USB**。
- **Linux:** 您可能需要配置一条 udev 规则,以便在不使用 `sudo` 的情况下访问设备:
# /etc/udev/rules.d/99-attackshark-k86.rules
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="3151", ATTRS{idProduct}=="4015", MODE="0660", TAG+="uaccess"
然后执行 `sudo udevadm control --reload && sudo udevadm trigger`。
- **macOS:** 开箱即用。
## 用法
```
# 灯效
k86 color purple # solid colour on the keys (name or "R,G,B")
k86 color 0,128,255 --bright 4
k86 side blue # side strips
k86 both cyan # keys + side, same colour
k86 effect ripple --rainbow # reactive: type and watch it spread 🌊
k86 effect wave --rainbow
k86 effect breath --rgb 255 0 0
k86 show # live colour show
k86 leds off # / on
k86 info # firmware + state (read-only)
# 屏幕 (128x128)
k86 image ~/Pictures/logo.png
k86 image logo.png --rotate 90 --flip h
k86 gif ~/Pictures/loop.gif
k86 test # 4-colour test pattern
```
如果没有执行 `pip install -e .`,可以作为模块运行:`python -m k86.cli color purple`。
### 作为库使用
```
from k86 import K86
with K86() as kb:
kb.leds(on=True)
kb.set_main_color(255, 0, 255) # magenta keys
kb.set_side_color(0, 0, 255) # blue side strips
from k86 import screen
screen.write_image(screen.load_image("logo.png"))
```
请参阅 [`examples/`](examples/) 以查看在 TFT 屏幕上显示实时时钟的示例。
## 注意事项
- **亮度范围为 0–4。** 发送 `> 4` 的值会导致固件丢弃整个数据包。
- **节电模式会隐藏所有灯光。** 如果没有任何灯光亮起,说明 LED 关闭位或节电模式已开启 —— 请调用 `k86 leds on`(该库在每次执行颜色命令前都会自动执行此操作)。
- **自定义颜色与彩虹模式** 的区别在于选项 nibble:`7` = 您的 RGB 颜色,`8` = 彩虹模式。
## 免责声明
本项目为非官方工具,与 Attack Shark / ROYUAN 没有任何 affiliation。使用风险自负。它仅发送与官方软件相同的厂商 HID 命令;不会刷新固件。
## 鸣谢
由 [@RaphaelCaputo2](https://github.com/RaphaelCaputo2) 逆向工程并开发。
协议源自 Attack Shark 公开的 WebHID 驱动程序(他们的 JavaScript 代码**并未**在此处分发 —— 此处仅包含关于通信格式的净室描述)。
## 许可证
[MIT](LICENSE)
标签:HID, Python, RGB灯效, 外设管理, 无后门, 硬件控制工具, 逆向工具