Skip to content
SlightlyLookAroundPublic

About

The web driver for the AJAZZ AK980 PRO RGB (screen equipped) keyboard.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AK980 Web Driver

浏览器端 WebHID 驱动,用于控制 AJAZZ AK980 V2 三模 RGB 带屏机械键盘(Sonix 0x0C45)。

基于 Ghidra 逆向官方 DeviceDriver.exe 与同系开源协议实现,无需安装官方 Windows 驱动。

功能

功能 USB(0x8009) 2.4G(0xFEFE)
灯光模式 / 颜色 / 亮度 / 速度 / 方向 ✓ ✓
时间同步 ✓ ✓
TFT 屏幕 GIF / 图片上传(240×135 RGB565) ✓ ✗
休眠时间 / 按键响应 / 重置 ✓ 未逆向
按键改键 / 宏 实验性 未逆向

环境要求

  • Chrome 89+ 或 Edge(需要 WebHID)
  • 页面需通过 http://localhost / https 打开(file:// 不可用)
  • 键盘使用 USB 有线 或 2.4G 接收器(蓝牙不支持配置)
  • 退出官方 AJAZZ 驱动(可能独占 HID 接口)

使用

  1. 用 Chrome / Edge 打开 index.html(建议本地静态服务)
  2. 点击 「连接键盘」
  3. 在设备选择器中选中厂商接口(不要选 Keyboard):
    • USB:先选 0xFF13 控制接口,再选 0xFF68 数据接口
    • 2.4G:选 0xFF60 厂商接口(会自动识别 33B 的 MI_03)
  4. 连接成功后会自动发送测试灯效,可在左侧切换功能

本地服务示例

# 任意静态服务器均可
npx serve .
# 或
python -m http.server 8080

本地 HID 桥接(可选)

若 WebHID 无法枚举厂商接口,可运行本地桥接:

bridge\start-bridge.bat

服务监听 http://127.0.0.1:17321,网页会自动回退使用。

协议摘要

USB(PID 0x8009)

接口 usagePage 说明
MI_03 0xFF13 Feature Report 65B(64B payload,前缀 0x04)— 控制
MI_02 0xFF68 Output Report 4097B — 屏幕数据

指令序列:START 0x18 → MODE 0x13 → 包体 → FINISH 0xF0(或 SAVE 0x02)。

屏幕:START → IMAGE_CFG 0x72(sub 0x03)→ 4096B 分片(每片 ACK)→ SAVE。
像素格式 RGB565 小端,GIF 头 256 字节,最多 140 帧。不要发送 FINISH 0xF0。

WebHID:sendFeatureReport(reportId, data) 中 reportId 单独传,data 为 64B payload。

2.4G(PID 0xFEFE)

接口 usagePage 说明
MI_03 0xFF60 Output Report 33B(32B payload)— 配置(官方 hid_interface)
MI_04 0xFF60 Output Report 65B — 屏幕(无线不支持)

无 Feature Report。单包发送,校验和 = 65B 暂存区逐字节累加 → 写入 byte 32。

  • 灯效:05 10 00 + mode/RGB/参数 + AA 55 + checksum
  • 时间:0C 10 00 + 5A + 日期时间 + AA 55 + checksum

WebHID:sendReport(reportId, 32B payload);Chrome 会补 report ID 拼成 33B。

逆向函数参考:FUN_0044fa90(发送)、FUN_0042b330(灯效)、FUN_00423a50(时间)。

项目结构

index.html          入口页面
css/style.css       样式
js/app.js           UI 逻辑
js/hid.js           WebHID 协议层(USB + 2.4G)
js/keyboard.js      键位布局数据(来自 layouts/rgb-keyboard.xml)
js/bridge.js        本地桥接客户端(可选回退)
bridge/             本地 HID 桥接服务(Python)
assets/             键盘图 / 示例 GIF

限制与注意

  • 蓝牙模式不支持配置,请用 USB 或 2.4G
  • 2.4G 不支持屏幕上传(官方驱动同样限制)
  • 改键 / 宏 / 逐键 RGB 的 HID 指令仍在逆向中,界面可操作但写入为实验性
  • 实验性指令写错时,断电重连或官方驱动通常可恢复
  • Chrome WebHID 没有 Device ID(MI_xx)过滤,只能按 vendorId / productId / usagePage / usage

致谢

License

仅供个人学习与自用设备控制。

About

The web driver for the AJAZZ AK980 PRO RGB (screen equipped) keyboard.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages