Hoppa till innehåll

Moduler och funktioner

Plugins kan utöka sina möjligheter bortom grundläggande USB-läsningar och skrivningar med hjälp av två system: Moduler och Funktioner. Att förstå skillnaden hjälper dig att utforska vad som finns tillgängligt och använda rätt mekanism för uppgiften.

ModulerFunktioner
Hur man använderimport { x } from "@SignalRGB/name"device.addFeature("name") i Initialize()
SyfteHjälptjänster (nätverk, kodning, systeminformation)Enhetsförmågor (batteri, inmatningsinjektion)
NamnrymdModulens egna exporterade namndevice.featureName.*
InstanserEn per pluginKan ha flera

Importera dessa längst upp i din plugin-fil.

ImportvägSyfte
@SignalRGB/serialSeriell/COM-portkommunikation
@SignalRGB/tcpTCP-socketkommunikation
@SignalRGB/udpUDP-socketkommunikation
@SignalRGB/base64Base64-kodning och avkodning
@SignalRGB/performancePrestandaprofilering och bildrute-timer
@SignalRGB/appInfoSignalRGB-applikationsversionsinformation
@SignalRGB/systeminfoSystemhårdvaruinformation
@SignalRGB/permissionsKontrollera status för användarbehörigheter

Se sidan Avancerad kommunikation för användningsexempel för serial, tcp och udp.


Anropa device.addFeature("name") i din Initialize()-export. Funktionen skapar ett globalt objekt med specifikt samma namn.

FunktionsnamnNamnrymdSyfte
"keyboard"keyboardInjicera tangentbordstryckningar i SignalRGB-makron eller vidarebefordra tangentbordshändelser
"mouse"mouseInjicera musinmatning i SignalRGB-makron eller vidarebefordra mushändelser
"battery"batteryRapportera batterinivå och laddningsstatus för trådlösa enheter
"dtls"dtlsDTLS-krypterad UDP med PSK-autentisering

För plugins som representerar tangentbordsenheter. Gör det möjligt att injicera faktiska tangentbordstryckningar i operativsystemet eller utlösa händelser som kan triggas av SignalRGB-makron.

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

Skickar ett direkt rått tangentbordstryck till operativsystemet via keybd_event. Tangenten visas som verklig inmatning för alla applikationer — kringgår makrosystemet helt.

ParameterTypBeskrivningExempel
vkCodeNumberWindows virtuell tangentkod0x41 (A-tangenten)
options.releasedBoolean (obligatorisk)true för tangentreleasing, false för tangentnedtryckningfalse
keyboard.sendHid(0x41, { released: false }); // Tryck A
keyboard.sendHid(0x41, { released: true }); // Släpp A

Dirigerar en tangentbordshändelse genom SignalRGB:s makrosystem. Makroskript med onKey-triggers kan matcha dessa händelser. Injicerar inte faktiska tangentbordstryckningar — bara SignalRGB-makron ser den här händelsen.

Makrosystemet berikar automatiskt händelsen med live modifierarstatus (Ctrl, Shift, Alt, Win) från det fysiska tangentbordet innan den skickas.

ParameterTypBeskrivningExempel
eventDataObject eller StringHändelsedata. Inkludera key (strängnamn) och valfritt keyCode (nummer) för tangentkoppling.{ key: "A", keyCode: 0x41 }
eventTypeStringHändelsetyp-etikett"KeyPress"
keyboard.sendEvent({ key: "A", keyCode: 0x41, released: false }, "KeyPress");

Makroskript tar emot event.Sender (pluginets UID) och event.SenderType ("Device") för att kunna skilja plugin-ursprungshändelser från faktiska hårdvarutangentbordstryckningar.


För plugins som representerar mus- eller pekarenheter.

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

Skickar ett rått mushändelse till operativsystemet via SendInput. Musrörelse (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) är blockerat av säkerhetsskäl.

ParameterTypBeskrivning
buttonCodeNumberWindows MOUSEEVENTF_*-flagga
options.XButtonNumberObligatorisk för X-knappshändelser — 1 (X1) eller 2 (X2)
options.WheelDeltaNumberObligatorisk för scrollhjulshändelser — positivt rullar upp, negativt rullar ner

Vanliga knappkoder:

KodKonstantBeskrivning
0x0002MOUSEEVENTF_LEFTDOWNVänster knapp nedtryckt
0x0004MOUSEEVENTF_LEFTUPVänster knapp released
0x0008MOUSEEVENTF_RIGHTDOWNHöger knapp nedtryckt
0x0010MOUSEEVENTF_RIGHTUPHöger knapp released
0x0020MOUSEEVENTF_MIDDLEDOWNMittenknapp nedtryckt
0x0040MOUSEEVENTF_MIDDLEUPMittenknapp released
0x0800MOUSEEVENTF_WHEELVertikalt scroll
0x01000MOUSEEVENTF_HWHEELHorisontellt scroll
0x0080MOUSEEVENTF_XDOWNX-knapp nedtryckt (kräver XButton-alternativ)
0x0100MOUSEEVENTF_XUPX-knapp released (kräver XButton-alternativ)
// Vänsterklick
mouse.sendHid(0x0002, {}); // tryck ned
mouse.sendHid(0x0004, {}); // släpp
// Rulla upp ett hack
mouse.sendHid(0x0800, { WheelDelta: 120 });
// X1-knapp nedtryckt
mouse.sendHid(0x0080, { XButton: 1 });
mouse.sendHid(0x0100, { XButton: 1 });

Dirigerar en anpassad mushändelse genom SignalRGB:s makrosystem. Makroskript med onMouse-triggers kan matcha dessa händelser. Injicerar inte musinmatning på operativsystemnivå.

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

För trådlösa enheter som rapporterar batteristatus. När funktionen är tillagd, uppdatera batterinivå och status varje gång din enhet rapporterar dem.

export function Initialize() {
device.addFeature("battery");
}
MetodBeskrivning
battery.setBatteryLevel(level)Ange batteriprocenttal (0–100)
battery.setBatteryState(state)Ange laddningsstatus med statuskonstant

Statuskonstanter (åtkomst via battery.<namn>):

KonstantBeskrivning
battery.disabledBatterirapportering inaktiverad
battery.unknownStatus ännu okänd
battery.drainingKörs på batteri
battery.chargingLaddas via kabel
battery.fullChargingLaddas och redan full
battery.fullFulladdat, laddas inte
battery.wirelessChargingTrådlös laddning

Dessa egenskaper återspeglar det senaste inställda värdet:

EgenskapTypBeskrivning
battery.batteryLevelNumberAktuell nivå (0–100)
battery.batteryStateNumberAktuellt statusvärde
battery.stateStringStringMänsklig läsbar statusetikett
export function Initialize() {
device.addFeature("battery");
}
export function Render() {
// Icke-blockerande läsning — kontrollera om enheten skickade en batterirapport den här bildrutan
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
);
}
}