特色图片

为自己没有驱动的机械键盘做一个网页驱动

米饭AI 摘要

当官方驱动随公司一同消失,那把复古又绚烂的键盘,仿佛被锁进无尽黑夜。左侧快捷键沉默,灯效成了无法破译的密码。面对残缺的生态,他决定亲手敲开一扇门——在代码与十六进制之间,能否让沉默的它重新发光?

为什么要做网页驱动

米饭现在用的机械键盘的GeekElite Lio87,是一款超级超级好看,很有复古韵味但是又充满了RGB的键盘。
最特别的就是不仅仅键盘有灯光,正面还有一条贯穿式的灯条。
来自官方的图片
之前有听到说官方在制作网页驱动的消息,再后来就听到驱动做了一半,公司消失了导致驱动没有了的消息。
这个键盘左侧有好多快捷键,如果都设定不了的话感觉好可惜。而且没有驱动的话,也没办法对灯光颜色进行很准确的更改,更换键帽之类的想要换匹配的灯光就很困难。
来自官方的图片

开始制作

因为现在AI发展的特别快,所以米饭就去问ChatGPT有没有什么方法制作一个驱动。首先查看了键盘的硬件ID,得到了明 Lio87/Leo87 属于 Telink + EVISION 一类的键盘方案生态,而刚好WOB的Rainy75y也是这个方案。所以尝试直接使用WOB的网页驱动。
硬件ID
本来只是想着试一试,没想到真的可以使用。灯光控制和键位绑定基本都正常。支持WOB驱动没办法正确识别Lio87的键位map,导致键位绑定会出错。

同时使用了lsusb工具,获得到了HIDx信息,信息都是16进制的,不过伟大的ChatGpt直接完成了对信息的解析:

    GeekElite Leo87 配置通道
    
    VID        0x320F
    PID        0x5055
    
    Usage Page 0xFF1C
    Usage      0x0092
    
    Report ID  0x04
    
    OUT:
      Report ID + 63 byte payload
      = 64 bytes
    
    IN:
      Report ID + 63 byte payload
      = 64 bytes


Interface 0
└── Keyboard
    ├── 普通 6KRO 键盘输入
    ├── Num/Caps/Scroll LED Output
    └── 一个 64-byte Feature Report

    Interface 1
    │
    ├── Report ID 1
    │   └── Keyboard
    │       120 bit NKRO 输入
    │
    ├── Report ID 2
    │   └── System Control
    │
    ├── Report ID 3
    │   └── Consumer Control
    │
    ├── Report ID 4                     ★
    │   └── FF1C:0092 Vendor Control
    │       ├── OUT 63 bytes
    │       └── IN  63 bytes
    │
    ├── Report ID 5
    │   └── Generic Desktop
    │       ├── OUT 32 bytes
    │       └── IN  32 bytes
    │
    └── Report ID 6
        └── Mouse

之后通过Hook WOB网页驱动,获取到更改颜色时,驱动向键盘发送的数据。

HIDDevice.prototype.sendReport


const oldSendReport = HIDDevice.prototype.sendReport;

HIDDevice.prototype.sendReport = async function(reportId, data) {
    console.log(
        "HID TX",
        "reportId =", reportId,
        "data =",
        Array.from(new Uint8Array(data))
            .map(x => x.toString(16).padStart(2, "0"))
            .join(" ")
    );

    return oldSendReport.call(this, reportId, data);
};

通过抓取更改颜色的信息,交给ChatGPT完成了颜色更改部分的整理。之后通过同样的方法得到了宏的设置、键位设置的方法。再通过对Rainy75键位MAP与Lio87键位MAP的对比,得到了知道所有信息的Lio87键位MAP (AI真的好厉害,这一段就是两个超级长的十六进制文件进行对比,AI很快就找到了规律并且得到了结果)

完成网页端驱动的制作

刚刚的步骤都是与网页版ChatGPT一起完成的,接下来因为要写网页了,所以转到了Codex中继续完成。后面的步骤就很简单了,把抓取整理得到的MAP,颜色控制、宏控制说明文件给Codex,然后Codex就直接给出了第一版可用的驱动。
在完成基础框架和功能的搭建之后,就不再需要很厉害的ChatGPT啦,于是转为通过CodeBuy,使用DeepSeek V4.1 Flash完成后续的UI制作以及一些小BUG的修复。
最终得到了完整版网页驱动
驱动截图

使用驱动

驱动已经开源啦,大家可以前往GitHub自行部署驱动:https://github.com/cc2562/GeekElite-Lio87-web-driver
或者使用米饭用Cloudflare Page搭建的在线版本:https://lio87.ccrice.com/
驱动目前的功能:

  • 设置键盘颜色和动画
  • 支持设定单键颜色
  • 更改键位,包括左侧快捷键
  • 录制宏和设定宏
为自己没有驱动的机械键盘做一个网页驱动
https://world.ccrice.com/2026/10/01/1440
本文作者
ccrice
发布时间
19小时前
许可协议
CC
上一篇

把豆瓣看过的番剧一键同步到Bangumi吧~

评论

没有评论

新的评论

昵称
邮箱
博客链接
23121