Salamor/aula-l99-open-widgets
GitHub: Salamor/aula-l99-open-widgets
这个项目旨在通过逆向工程 Aula L99 机械键盘的 USB 通信协议,将其内置触摸屏转化为支持自定义组件和应用启动的动态控制面板。
Stars: 4 | Forks: 0
# 🖥️ Aula L99 开源小组件
## 这是什么项目?
**Aula L99** 是一款机械键盘,配备内置 **3.98 英寸 IPS 触摸屏(320×480)**。开箱即支持上传 GIF/图片、计算器、数字小键盘、媒体控制和 LED 管理 —— 所有功能均通过官方 AULA 驱动程序实现。
但这块屏幕的潜力远不止于此。
本项目旨在**逆向工程 AULA 驱动程序与 L99 之间的 USB 通信协议**,并在其之上构建一个**开源软件层** —— 从而在键盘触摸屏上实现完全可定制的动态小组件。
想象一下:Spotify 正在播放、Discord 状态、系统统计信息、天气、自定义宏 —— 所有内容都可以直接在键盘上显示和交互。
## 愿景
L99 的触摸屏拥有足够的表面积和分辨率,可以作为**集成在键盘中的迷你 Stream Deck**。无需额外的设备,无需额外的桌面空间。只有你的键盘,功能更强大。
我们想要构建:
- 🎵 **媒体小组件** —— 来自 Spotify / Apple Music 的当前曲目、艺术家、专辑封面
- 💬 **Discord 小组件** —— 语音频道状态、静音/取消静音切换、通知
- 📊 **系统统计** —— 实时 CPU、GPU、RAM 使用率
- 🌤️ **天气小组件** —— 本地天气预报一目了然
- ⚡ **自定义宏按钮** —— 点击触发快捷键、启动应用、运行脚本
- 🚀 **应用启动器** —— 点击将任意窗口置于前台或在屏幕 1 或 2 上启动它
- 🎨 **完全可定制的布局** —— 多页面、拖拽、调整大小、主题化你的小组件
## 为什么这很重要 —— 一个真实的用例
这个项目源于一个非常具体的痛点。
想象一下双显示器设置:一个 32 英寸主显示器和一个 13 英寸副显示器。在任何给定时间,有 6-8 个应用打开 —— Discord、Spotify、浏览器、League of Legends、Blitz.gg、视频教程、工作项目。在它们之间切换意味着 Alt+Tab,失去焦点,打断工作流。
显而易见的解决方案是使用平板电脑作为辅助触摸面板 —— Galaxy Tab 或 iPad。实际上:延迟、作为第二屏幕使用时触摸无响应,而且又有一个设备占据桌面空间。
L99 本来就放在桌子上。它已经有触摸屏了。**为什么不利用它呢?**
以下是理想设置在实际中的样子:
- 🎮 **在玩 League of Legends 时** —— 点击 Blitz.gg 在屏幕 2 上调出英雄数据,点击 Discord 查看朋友的屏幕共享,点击 Spotify 跳过曲目 —— 所有操作都不需要 Alt+Tab,都不需要离开游戏
- 💼 **在工作时** —— 针对该项目所需工具的自定义布局和快速启动按钮,通过一次点击在“游戏模式”和“工作模式”之间切换配置文件
- 🎵 **始终** —— 一眼即可看到当前曲目,点击即可跳过,无需切换窗口
这就是价值 300 美元的 Stream Deck 所解决的问题 —— 作为一个独立的设备,放在已经拥挤的桌子上。L99 的内置触摸屏可以更优雅地解决这个问题,无需额外成本,无需额外空间。
这就是本项目正在努力的方向。
## 为什么可行
### 软件相似性线索
官方 AULA 驱动程序看起来与 Royal Kludge (RK) 驱动软件**几乎完全相同**。这有力地表明这两个品牌使用相同的基础 USB 控制器芯片和固件堆栈 —— 这是使用中颖 (SinoWealth) 芯片组的国产键盘制造商中的常见做法。
### 先例:Rangoli 与 Kludge Knight
Royal Kludge 协议已经被逆向工程:
- [**Rangoli**](https://github.com/rnayabed/rangoli) —— 开源、跨平台的 RK 软件,通过使用 Wireshark 逆向工程 USB 数据包构建
- [**Kludge Knight**](https://github.com/vinc3m1/kludgeknight) —— 基于 Rangoli 协议研究构建的浏览器版 RK 配置器
如果 L99 共享相同的协议(或其变体),那么很大一部分逆向工程的基础工作已经完成。**屏幕特定命令**将是需要探索的新领域。
### 开发者本人也表示这是可能的
AULA 自己的团队确认,自定义小组件开发在技术上是可行的 —— 只是他们没有通过官方软件公开这一功能。
## 当前状态
| 功能 | 状态 |
|---|---|
| USB 协议分析 | ⏳ 未开始 |
| 基础通信(RK 协议兼容性测试) | ⏳ 未开始 |
| 屏幕图像推送 | ⏳ 未开始 |
| 动态小组件框架 | ⏳ 未开始 |
| 触摸输入逆向工程 | ⏳ 未开始 |
## 技术方案
### 第一阶段 —— 协议侦察
1. 使用 **Wireshark + USBPcap** 捕获官方 AULA 驱动程序与 L99 之间的 USB 流量
2. 将捕获的数据包与记录的 [RK 协议](https://github.com/progzone122/aegis-2067usb-protocol) 进行比较
3. 确定哪些命令控制屏幕(图像推送、触摸事件等)
### 第二阶段 —— 构建最小 Python 桥接
4. 使用 `hidapi` 或 `pyusb` 复现屏幕命令
5. 在没有官方驱动程序的情况下将静态图像推送到屏幕
6. 将触摸输入事件从键盘映射回主机
### 第三阶段 —— 小组件框架
7. 构建一个轻量级应用程序,将小组件渲染为帧并循环推送到屏幕
8. 集成公共 API:Spotify Web API、Discord RPC、OpenWeatherMap 等
9. 设计一个简单的配置系统,以便用户选择和排列小组件
## 你如何提供帮助
你不需要成为开发者即可做出贡献。我们需要的是:
**🔬 如果你拥有 L99 并且可以运行 Wireshark:**
在图像上传期间捕获 USB 流量并分享 `.pcapng` 文件。这是解除项目阻碍的最重要的一件事。
**🐍 如果你懂 Python + USB/HID:**
帮助分析数据包并编写初始通信层。
**🎨 如果你擅长 UI/UX:**
设计小组件布局界面、图标集和主题。
**📝 如果你只有想法:**
提交一个 issue 并描述你想要的小组件。社区的意见将决定优先构建什么。
## 相关项目与灵感
| 项目 | 描述 |
|---|---|
| [Rangoli](https://github.com/rnayabed/rangoli) | 通过 USB 逆向工程实现的 RK 键盘开源软件 |
| [Kludge Knight](https://github.com/vinc3m1/kludgeknight) | 基于 Rangoli 协议研究构建的浏览器版 RK 配置器 |
| [aegis-2067usb](https://github.com/progzone122/aegis-2067usb-custom-software) | AULA F2067 的开源自定义软件 —— 协议完全记录 |
| [aula-rgb-controller](https://github.com/veysiemrah/aula-rgb-controller) | AULA F87 TK 的完整 RGB 控制器 —— 191 次提交,C 语言完整协议文档 |
| [F75_Initializer](https://github.com/Simon-Martens/F75_Initializer) Linux 下的 AULA F75 MAX 屏幕初始化 —— 现有与 L99 屏幕控制最接近的工作 | |
| [Aula-F87-Controller](https://github.com/marcoslor/Aula-F87-Controller) | 协议已记录,AULA F87 的 Python CLI + WebHID 应用 |
| [OpenRGB issue #5166](https://gitlab.com/CalcProgrammer1/OpenRGB/-/work_items/5166) | AULA F99 的完整无线协议逆向工程 —— 数据包结构、CRC、可用的概念验证 |
| [win-68-he-tool](https://github.com/caioalonso/win-68-he-tool) | 官方 AULA Web 驱动程序的可读 JavaScript 本地副本 |
| [OpenRazer](https://github.com/openrazer/openrazer) | Linux 社区版 Razer 驱动程序 —— 证明该模式具有可扩展性 |
| [Elgato Stream Deck](https://github.com/elgato/streamdeck) | 键盘附属小组件外观的黄金标准 |
## 硬件规格(仅供参考)
| 规格 | 数值 |
|---|---|
| 屏幕 | 3.98 英寸 IPS 触摸屏 |
| 分辨率 | 320 × 480 像素 |
| 连接 | USB-C(有线,驱动程序必需) |
| 操作系统支持 | 仅 Windows(官方驱动程序) |
| 驱动下载 | [soaidriver.com](https://soaidriver.com) |
## 社区
这个项目是由一位希望键盘能做得更多的用户发起的 —— 而不是开发者。如果你也是这种情况,那你来对地方了。
- 💬 讨论:[GitHub Issues](../../issues) —— 分享想法、提出问题、发布抓包文件
- 🧵 Reddit 贴子:*[发布到 r/MechanicalKeyboards 后添加链接]*
## 许可证
MIT —— 可自由使用、修改和分发。
*Aula L99 已具备硬件条件。让我们构建软件。*
标签:Aula L99, Discord, HID, productivity, Spotify, Stream Deck, USB协议, Windows工具, 云资产清单, 动态显示, 启动器, 外设驱动, 媒体控制, 宏命令, 开源, 快捷键, 机械键盘, 桌面增强, 自定义小组件, 触摸屏, 逆向工具, 逆向工程, 键盘