Gå til indhold

Moduler og Features

Plugins kan udvide deres funktioner ud over simple USB-læse- og skriveoperationer med to systemer: Moduler og Features. Forståelse af forskellen mellem dem hjælper dig med at opdage hvad der er tilgængeligt og bruge den rigtige mekanisme.

ModulerFeatures
Brugimport { x } from "@SignalRGB/name"device.addFeature("name") i Initialize()
FormålHjælpetjenester (netværk, kodning, systeminfo)Enhedsfunktioner (batteri, input-injektion)
NavnerumModulets egne eksporterede navnedevice.featureName.*
InstanserÉn pr. pluginKan have flere

Importér disse øverst i din plugin-fil.

Import-stiFormål
@SignalRGB/serialSeriel/COM-port-kommunikation
@SignalRGB/tcpTCP-socket-kommunikation
@SignalRGB/udpUDP-socket-kommunikation
@SignalRGB/base64Base64-kodning og -dekodning
@SignalRGB/performancePerformance-profilering og frame-timer
@SignalRGB/appInfoSignalRGB-applikationsversionsinformation
@SignalRGB/systeminfoSystem-hardwareinformation
@SignalRGB/permissionsKontrol af brugerrettighedsstatus
Se Avanceret kommunikation for eksempler på brug af serial, tcp og udp.

Kald device.addFeature("name") i din Initialize()-eksport. Feature’et opretter et globalt objekt med samme navn som feature’et.

Feature-navnNavnerumFormål
"keyboard"keyboardInjicér tastetryk eller videresend tastaturhændelser til SignalRGB-makroer
"mouse"mouseInjicér museinput eller videresend musehændelser til SignalRGB-makroer
"battery"batteryRapportér batteriniveau og opladningstilstand for trådløse enheder
"dtls"dtlsDTLS-krypteret UDP med PSK-autentificering

Til plugins der repræsenterer tastaturenheder. Muliggør injektion af ægte tastetryk i operativsystemet eller udløsning af hændelser der kan trigge SignalRGB-makroer.

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

Sender et råt tastetryk direkte til operativsystemet via keybd_event. Tastet vises som reel input for alle applikationer — det omgår makro-systemet fuldstændigt.

ParameterTypeBeskrivelseEksempel
vkCodeNumberWindows Virtual Key Code0x41 (tast A)
options.releasedBoolean (påkrævet)true for Key-Up, false for Key-Downfalse
keyboard.sendHid(0x41, { released: false }); // Tryk A
keyboard.sendHid(0x41, { released: true }); // Slip A

keyboard.sendEvent(eventData, eventType)

Sektion kaldt “keyboard.sendEvent(eventData, eventType)”

Videresender en tastaturhændelse gennem SignalRGB-makro-systemet. Makroer med en onKey-trigger kan matche disse hændelser. Injicerer ikke et ægte tastetryk — kun SignalRGB-makroer ser denne hændelse.

Makro-systemet beriger automatisk hændelsen med den aktuelle modifikatortilstand (Ctrl, Shift, Alt, Win) fra det fysiske tastatur, inden den sendes.

ParameterTypeBeskrivelseEksempel
eventDataObject eller StringHændelsesdata. Angiv key (streng-navn) og valgfrit keyCode (tal) til nøglematchning.{ key: "A", keyCode: 0x41 }
eventTypeStringHændelsestype-label"KeyPress"
keyboard.sendEvent({ key: "A", keyCode: 0x41, released: false }, "KeyPress");

Makro-scripts modtager event.Sender (pluginets UID) og event.SenderType ("Device"), så de kan skelne plugin-udløste hændelser fra ægte hardware-tastetryk.


Til plugins der repræsenterer mus- eller pegeenheder.

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

Sender en rå mushændelse via SendInput til operativsystemet. Musebevægelser (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) er blokeret af sikkerhedshensyn.

ParameterTypeBeskrivelse
buttonCodeNumberWindows MOUSEEVENTF_*-flag
options.XButtonNumberPåkrævet for X-knap-hændelser — 1 (X1) eller 2 (X2)
options.WheelDeltaNumberPåkrævet for rullehjulshændelser — positiv ruller op, negativ ruller ned

Hyppige knapkoder:

KodeKonstantBeskrivelse
0x0002MOUSEEVENTF_LEFTDOWNTryk venstre knap
0x0004MOUSEEVENTF_LEFTUPSlip venstre knap
0x0008MOUSEEVENTF_RIGHTDOWNTryk højre knap
0x0010MOUSEEVENTF_RIGHTUPSlip højre knap
0x0020MOUSEEVENTF_MIDDLEDOWNTryk midterste knap
0x0040MOUSEEVENTF_MIDDLEUPSlip midterste knap
0x0800MOUSEEVENTF_WHEELLodret rulning
0x01000MOUSEEVENTF_HWHEELVandret rulning
0x0080MOUSEEVENTF_XDOWNTryk X-knap (kræver XButton-option)
0x0100MOUSEEVENTF_XUPSlip X-knap (kræver XButton-option)
// Venstreklik
mouse.sendHid(0x0002, {}); // trykket
mouse.sendHid(0x0004, {}); // sluppet
// Rul ét trin op
mouse.sendHid(0x0800, { WheelDelta: 120 });
// Tryk X1-knap
mouse.sendHid(0x0080, { XButton: 1 });
mouse.sendHid(0x0100, { XButton: 1 });

Videresender en brugerdefineret mushændelse gennem SignalRGB-makro-systemet. Makro-scripts med en onMouse-trigger kan matche disse hændelser. Injicerer ikke OS-museinput.

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

Til trådløse enheder der rapporterer batteristatus. Efter tilføjelse af feature’et opdateres batteriniveau og -tilstand, når enheden rapporterer dem.

export function Initialize() {
device.addFeature("battery");
}
MetodeBeskrivelse
battery.setBatteryLevel(level)Sæt batteriprocent (0–100)
battery.setBatteryState(state)Sæt opladningstilstand med en tilstandskonstant

Tilstandskonstanter (adgang via battery.<name>):

KonstantBeskrivelse
battery.disabledBatterirapportering deaktiveret
battery.unknownTilstand endnu ukendt
battery.drainingKører på batteri
battery.chargingOplader via kabel
battery.fullChargingOplader og allerede fuldt
battery.fullFuldt opladet, oplader ikke
battery.wirelessChargingTrådløs opladning

Disse egenskaber afspejler de senest satte værdier:

EgenskabTypeBeskrivelse
battery.batteryLevelNumberAktuelt niveau (0–100)
battery.batteryStateNumberAktuel tilstandsværdi
battery.stateStringStringLæsbart tilstandslabel
export function Initialize() {
device.addFeature("battery");
}
export function Render() {
// Ikke-blokerende læsning — kontrollér om enheden har sendt en batterirapport dette frame
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
);
}
}