pychroma 控制 Razer Chroma 灯效教程:安装、JSON 配置与兼容性

pychroma 是一个调用 Razer Chroma SDK 的第三方 Python 库,可以让脚本在 Razer Synapse/Chroma Connect 中注册应用并控制键盘、鼠标、灯带等设备的灯效。仓库目前未归档,但最后一次代码推送停留在 2020 年,PyPI 包版本为 0.0.2,因此更适合学习和旧设备实验,不应默认认为兼容所有新版 Synapse。

兼容性说明:先确认 Razer Synapse 和 Chroma Connect 能识别设备。第三方库失效时不要关闭系统安全功能或安装来源不明的 SDK 补丁;优先查看 pychroma GitHub 仓库和 Razer 当前开发文档。

pychroma 当前维护状态与安装包名

项目的 setup.py 声明包名为 pychroma、版本 0.0.2、Python 3.6 及以上,并依赖 requestspynput。旧文中的 pip install chroma 包名不正确,应使用:

py -m venv .venv
.venvScriptsactivate
python -m pip install --upgrade pip
python -m pip install pychroma

安装后可以运行 python -c "import pychroma; print(pychroma.__file__)" 检查实际加载位置。

准备 Chroma 应用配置 JSON

配置文件用于在 Chroma Connect 中显示应用名称、作者和支持设备。不要把私人邮箱或不准备公开的信息写进准备分享的示例。

{
  "chroma": {
    "developerName": "WorldCovert",
    "developerContact": "contact@example.com",
    "category": "application",
    "supportedDevices": [
      "keyboard", "mouse", "mousepad", "keypad", "headset", "chromalink"
    ],
    "description": "Python Chroma lighting demo",
    "title": "pychroma demo"
  },
  "devices": {
    "keyboard": "Razer keyboard",
    "mouse": "Razer mouse"
  }
}

最小可运行的 pychroma 程序

from pychroma import Controller, Sketch


class DemoSketch(Sketch):
    def setup(self):
        self.frame_rate = 10

    def update(self):
        pass

    def render(self):
        pass


with Controller("config.json") as controller:
    controller.run_sketch(DemoSketch)

运行脚本后,Synapse/Chroma Connect 应出现对应应用。没有设备时先检查 Synapse、模块安装和设备是否支持 Chroma SDK,而不是立即修改 Python 代码。

制作 HSV 彩虹流动效果

下面示例把 ChromaLink 切换为 HSV 模式,通过色相递增制造流动效果。设备分区数量并不统一,原测试笔记本映射为 4 个区域;其他设备需要查看库的映射和实际能力。

from pychroma import Controller, Sketch


class RainbowSketch(Sketch):
    def setup(self):
        self.frame_rate = 24
        self.chromalink.color_mode("hsv")
        self.hue = 0

    def update(self):
        self.hue = (self.hue + 5) % 360

    def render(self):
        variation = 36
        for index in range(4):
            color = ((self.hue - variation * index) % 360, 100, 100)
            self.chromalink.set_array(index + 1, color)


with Controller("config.json") as controller:
    controller.run_sketch(RainbowSketch)

刷新率越高,动画越流畅,但 CPU 占用和 SDK 通信频率也会上升。温度提示、状态灯等慢变化场景可以把刷新率降到 1-2 FPS。

pychroma 无法连接 Razer Synapse 怎么办

  • 确认 Synapse 和 Chroma Connect 模块正在运行。
  • 确认设备在 Synapse 内能正常显示基础灯效。
  • 使用虚拟环境里的 Python 运行,避免导入了另一个同名包。
  • 检查 config.json 路径和 JSON 语法。
  • 新版 Synapse 不兼容时,记录版本并查看项目 issue;不要盲目降级整套系统驱动。

相关阅读

硬件灯效实践:Raspberry Pi Pico 控制 5V ARGB/WS2812B 教程