跳到內容

模組和功能

外掛程式可以通過兩個系統擴展其基本 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,按下為 falsefalse
keyboard.sendHid(0x41, { released: false }); // 按下 A
keyboard.sendHid(0x41, { released: true }); // 釋放 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
);
}
}