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工具, 云资产清单, 动态显示, 启动器, 外设驱动, 媒体控制, 宏命令, 开源, 快捷键, 机械键盘, 桌面增强, 自定义小组件, 触摸屏, 逆向工具, 逆向工程, 键盘