米露小窝
放弃个性,就和死了没什么区别
米露小窝

AJAZZ 黑爵键盘在 Linux 下无法使用 WEB 驱动的解决方法

前期提要

在近期入手了一块黑爵 AK980max 磁轴键盘,但是发现在 Linux 下无法连接,于是研究了一下有了解决方案

解决方案

给 Linux 添加 WebHID 权限

在 Linux 上,/dev/hidraw* 设备默认以 root 权限创建,普通用户没有办法读取,我们添加一个简单的 udev 规则即可解决

首先 lsusb 获取设备的 Vendor ID 和 Product ID

 lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 0b05:19af ASUSTek Computer, Inc. AURA LED Controller
Bus 001 Device 004: ID 8087:0029 Intel Corp. AX200 Bluetooth
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 002: ID 0c45:8043 Microdia AK980 MAX
Bus 005 Device 003: ID 373b:10c9 Compx Nearlink Mouse Dongle
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bash

我这里的 ID 就是 0c45:8043,然后执行这条命令添加

echo 'KERNEL=="hidraw*", ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="8043", TAG+="uaccess"' \
  | sudo tee /etc/udev/rules.d/50-keyboard-hid.rules

sudo udevadm control --reload-rules
sudo udevadm trigger
Bash

但是回到 Web 选择设备的时候还是不行,这是为什么呢?

修改网页设备名

回到 Web 时报错如下:

加载键盘3141:32835:KEYBOARD AK980 MAX配置失败: Error: 所有路径都未找到配置文件: 3141-32835-KEYBOARD AK980 MAX
    at ge (layout-default-Da_Ywczl.js:2:534749)
    at Proxy.N (layout-default-Da_Ywczl.js:2:529083)
    at async k (layout-default-Da_Ywczl.js:3:11462)
JavaScript

由于 Linux 和 Win 逻辑不同,Win 获取的设备名字是 AK980 MAX,但是在 Linux 下是 KEYBOARD AK980 MAX

于是我研究了一下 Web 源码,他在这段函数就是纯硬拼接

async function ge(D) {
    const [L,V,Y,Q,me] = D.split(":");
    let ye = `${L}-${V}-${Y}...`;  // 用设备名拼路径
    const b = Z(ye, "ajazz");      // 去找配置文件
}
JavaScript

然后用油猴脚本拦截修改一下就可以解决了

// ==UserScript==
// @name         AJAZZ Linux Fix
// @match        https://ajazz.driveall.cn/*
// @run-at       document-start
// ==/UserScript==

const origGetDevices = navigator.hid.getDevices.bind(navigator.hid);
navigator.hid.getDevices = async function() {
    const devices = await origGetDevices();
    devices.forEach(d => {
        if (d.productName && d.productName.startsWith("KEYBOARD ")) {
            Object.defineProperty(d, 'productName', {
                value: d.productName.replace("KEYBOARD ", ""),
                writable: false
            });
        }
    });
    return devices;
};

const origRequestDevice = navigator.hid.requestDevice.bind(navigator.hid);
navigator.hid.requestDevice = async function(options) {
    const devices = await origRequestDevice(options);
    devices.forEach(d => {
        if (d.productName && d.productName.startsWith("KEYBOARD ")) {
            Object.defineProperty(d, 'productName', {
                value: d.productName.replace("KEYBOARD ", ""),
                writable: false
            });
        }
    });
    return devices;
};
JavaScript

然后保存脚本,即可解决!

我已经反馈给客服了,不知道会不会修(x

赞赏
AJAZZ 黑爵键盘在 Linux 下无法使用 WEB 驱动的解决方法》依据“CC BY-NC-SA 4.0”许可证进行授权。转载的时候请附上米露的链接,最好请勿用于商业目的 qaq
没有标签
首页      技术      AJAZZ 黑爵键盘在 Linux 下无法使用 WEB 驱动的解决方法
MxmiluBOB的头像

MxmiluBOB

文章作者

发表回复

textsms
account_circle
email

米露小窝

AJAZZ 黑爵键盘在 Linux 下无法使用 WEB 驱动的解决方法
前期提要 在近期入手了一块黑爵 AK980max 磁轴键盘,但是发现在 Linux 下无法连接,于是研究了一下有了解决方案 解决方案 给 Linux 添加 WebHID 权限 在 Linux 上,/dev/hidr…
扫描二维码继续阅读
2026-04-09