跳转到内容

模块和功能

插件可以使用两种系统将其功能扩展到基本 USB 读写之外:模块功能。了解两者之间的区别有助于您发现可用的内容并使用正确的机制完成工作。

模块功能
使用方式import { x } from "@SignalRGB/name"Initialize() 中使用 device.addFeature("name")
目的实用服务(网络、编码、系统信息)设备功能(电池、输入注入)
命名空间模块自己的导出名称device.featureName.*
实例每个插件一个可以有多个

在插件文件顶部导入这些模块。

导入路径目的
@SignalRGB/serial串口/COM 端口通信
@SignalRGB/tcpTCP 套接字通信
@SignalRGB/udpUDP 套接字通信
@SignalRGB/base64Base64 编码和解码
@SignalRGB/performance性能分析和帧计时器
@SignalRGB/appInfoSignalRGB 应用程序版本信息
@SignalRGB/systeminfo系统硬件信息
@SignalRGB/permissions检查用户权限状态

有关 serialtcpudp 的使用示例,请参阅高级通信


在您的 Initialize() 导出中调用 device.addFeature("name")。该功能创建一个与功能同名的全局对象。

功能名称命名空间目的
"keyboard"keyboard注入按键操作或将键盘事件路由到 SignalRGB 宏
"mouse"mouse注入鼠标输入或将鼠标事件路由到 SignalRGB 宏
"battery"battery报告无线设备的电池电量和充电状态
"dtls"dtls使用 PSK 身份验证的 DTLS 加密 UDP

适用于代表键盘设备的插件。让您可以向操作系统注入真实的按键操作或触发可以激活 SignalRGB 宏的事件。

export function Initialize() {
device.addFeature("keyboard");
}

通过 keybd_event 直接向操作系统发送原始按键操作。该按键对所有应用程序显示为真实输入——它完全绕过宏系统。

参数类型描述示例
vkCodeNumberWindows 虚拟键代码0x41(A 键)
options.releasedBoolean(必需true 表示松键,false 表示按键false
keyboard.sendHid(0x41, { released: false }); // Press A
keyboard.sendHid(0x41, { released: true }); // Release A

通过 SignalRGB 宏系统路由键盘事件。具有 onKey 触发器的宏可以匹配这些事件。不会注入真实的按键操作——只有 SignalRGB 宏才能看到此事件。

宏系统在分发事件之前会自动使用物理键盘的实时修改键状态(Ctrl、Shift、Alt、Win)丰富事件内容。

参数类型描述示例
eventDataObject 或 String事件数据。包含 key(字符串名称)和可选的 keyCode(数字)用于按键匹配。{ key: "A", keyCode: 0x41 }
eventTypeString事件类型标签"KeyPress"
keyboard.sendEvent({ key: "A", keyCode: 0x41, released: false }, "KeyPress");

宏脚本接收 event.Sender(插件的 UID)和 event.SenderType"Device"),因此可以区分插件来源的事件和真实硬件按键操作。


适用于代表鼠标或指针设备的插件。

export function Initialize() {
device.addFeature("mouse");
}

通过 SendInput 向操作系统发送原始鼠标事件。出于安全考虑,鼠标移动(MOUSEEVENTF_MOVEMOUSEEVENTF_ABSOLUTE)被禁止。

参数类型描述
buttonCodeNumberWindows MOUSEEVENTF_* 标志
options.XButtonNumberX 按钮事件必需 — 1(X1)或 2(X2)
options.WheelDeltaNumber滚轮事件必需 — 正值向上滚动,负值向下滚动

常用按钮代码:

代码常量描述
0x0002MOUSEEVENTF_LEFTDOWN左键按下
0x0004MOUSEEVENTF_LEFTUP左键释放
0x0008MOUSEEVENTF_RIGHTDOWN右键按下
0x0010MOUSEEVENTF_RIGHTUP右键释放
0x0020MOUSEEVENTF_MIDDLEDOWN中键按下
0x0040MOUSEEVENTF_MIDDLEUP中键释放
0x0800MOUSEEVENTF_WHEEL垂直滚动
0x01000MOUSEEVENTF_HWHEEL水平滚动
0x0080MOUSEEVENTF_XDOWNX 按钮按下(需要 XButton 选项)
0x0100MOUSEEVENTF_XUPX 按钮释放(需要 XButton 选项)
// 左键单击
mouse.sendHid(0x0002, {}); // 按下
mouse.sendHid(0x0004, {}); // 释放
// 向上滚动一格
mouse.sendHid(0x0800, { WheelDelta: 120 });
// X1 按钮按下
mouse.sendHid(0x0080, { XButton: 1 });
mouse.sendHid(0x0100, { XButton: 1 });

通过 SignalRGB 宏系统路由自定义鼠标事件。具有 onMouse 触发器的宏脚本可以匹配这些事件。不会注入任何操作系统级别的鼠标输入。

mouse.sendEvent({ button: "LeftClick" }, "ButtonPress");

适用于报告电池状态的无线设备。添加功能后,每当您的设备报告时,更新电池电量和状态。

export function Initialize() {
device.addFeature("battery");
}
方法描述
battery.setBatteryLevel(level)设置电池百分比(0-100)
battery.setBatteryState(state)使用状态常量设置充电状态

状态常量(通过 battery.<name> 访问):

常量描述
battery.disabled电池报告已禁用
battery.unknown状态尚未知晓
battery.draining使用电池运行
battery.charging通过线缆充电
battery.fullCharging正在充电且已充满
battery.full充满电,未充电
battery.wirelessCharging无线充电

这些属性反映最后设置的值:

属性类型描述
battery.batteryLevelNumber当前电量(0-100)
battery.batteryStateNumber当前状态值
battery.stateStringString人类可读的状态标签
export function Initialize() {
device.addFeature("battery");
}
export function Render() {
// 非阻塞读取 — 检查设备本帧是否发送了电池报告
var data = device.read([], 64, 0);
if(device.getLastReadSize() > 0 && data[0] === 0x02) {
var level = data[1]; // 0–100
var charging = data[2] === 0x01;
battery.setBatteryLevel(level);
battery.setBatteryState(
charging ? battery.charging : battery.draining
);
}
}