Ga naar inhoud

Modules en functies

Plugins kunnen hun mogelijkheden uitbreiden voorbij basale USB-lees- en schrijfbewerkingen met twee systemen: Modules en Functies. Het begrijpen van het verschil helpt u te ontdekken wat beschikbaar is en het juiste mechanisme te gebruiken.

ModulesFuncties
Hoe te gebruikenimport { x } from "@SignalRGB/naam"device.addFeature("naam") in Initialize()
DoelHulpprogrammaservices (netwerk, codering, systeeminfo)Apparaatmogelijkheden (batterij, invoerinjectie)
NaamruimteEigen geëxporteerde namen van de moduledevice.functienaam.*
InstantiesÉén per pluginKunnen er meerdere zijn

Importeer deze bovenaan uw plugin-bestand.

ImportpadDoel
@SignalRGB/serialSeriële/COM-poortcommunicatie
@SignalRGB/tcpTCP-socketcommunicatie
@SignalRGB/udpUDP-socketcommunicatie
@SignalRGB/base64Base64-codering en -decodering
@SignalRGB/performancePrestatieprofilering en frame-timers
@SignalRGB/appInfoVersie-informatie van de SignalRGB-applicatie
@SignalRGB/systeminfoSysteemhardware-informatie
@SignalRGB/permissionsGebruikersmachtigingsstatus controleren

Zie Geavanceerde communicatie voor gebruiksvoorbeelden van serial, tcp en udp.


Roep device.addFeature("naam") aan in uw Initialize()-export. De functie maakt een globaal object aan met dezelfde naam als de functie.

FunctienaamNaamruimteDoel
"keyboard"keyboardToetsaanslagen injecteren of toetsenbordgebeurtenissen routeren naar SignalRGB-macro’s
"mouse"mouseMuisinvoer injecteren of muisgebeurtenissen routeren naar SignalRGB-macro’s
"battery"batteryBatterijniveau en laadstatus rapporteren voor draadloze apparaten
"dtls"dtlsDTLS-versleutelde UDP met PSK-authenticatie

Voor plugins die toetsenbordapparaten vertegenwoordigen. Hiermee kunt u echte toetsaanslagen in het besturingssysteem injecteren of gebeurtenissen activeren die SignalRGB-macro’s kunnen activeren.

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

Verzendt een ruwe toetsaanslag rechtstreeks naar het besturingssysteem via keybd_event. De toets verschijnt als echte invoer voor alle applicaties — het omzeilt het macrosysteem volledig.

ParameterTypeBeschrijvingVoorbeeld
vkCodeGetalWindows Virtuele Toetscode0x41 (toets A)
options.releasedBoolean (vereist)true voor toets omhoog, false voor toets omlaagfalse
keyboard.sendHid(0x41, { released: false }); // Druk op A
keyboard.sendHid(0x41, { released: true }); // Laat A los

Routeert een toetsenbordgebeurtenis door het SignalRGB-macrosysteem. Macro’s met een onKey-trigger kunnen deze gebeurtenissen matchen. Injecteert geen echte toetsaanslag — alleen SignalRGB-macro’s zien deze gebeurtenis.

Het macrosysteem verrijkt de gebeurtenis automatisch met live modificatiestatus (Ctrl, Shift, Alt, Win) van het fysieke toetsenbord voordat het wordt verzonden.

ParameterTypeBeschrijvingVoorbeeld
eventDataObject of StringGebeurtenisgegevens. Voeg key (tekenreeksnaam) en optioneel keyCode (getal) toe voor toetsmatching.{ key: "A", keyCode: 0x41 }
eventTypeStringGebeurtenistypelabel"KeyPress"
keyboard.sendEvent({ key: "A", keyCode: 0x41, released: false }, "KeyPress");

Macroscripts ontvangen event.Sender (de UID van de plugin) en event.SenderType ("Device"), zodat ze plugin-afkomstige gebeurtenissen kunnen onderscheiden van echte hardware-toetsaanslagen.


Voor plugins die muis- of aanwijsapparaten vertegenwoordigen.

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

Verzendt een ruwe muisgebeurtenis naar het besturingssysteem via SendInput. Muisbeweging (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) is geblokkeerd voor de veiligheid.

ParameterTypeBeschrijving
buttonCodeGetalWindows MOUSEEVENTF_*-vlag
options.XButtonGetalVereist voor X-knopgebeurtenissen — 1 (X1) of 2 (X2)
options.WheelDeltaGetalVereist voor scrollwielgebeurtenissen — positief scrolt omhoog, negatief omlaag

Veelgebruikte knoppcodes:

CodeConstanteBeschrijving
0x0002MOUSEEVENTF_LEFTDOWNLinkerknop indrukken
0x0004MOUSEEVENTF_LEFTUPLinkerknop loslaten
0x0008MOUSEEVENTF_RIGHTDOWNRechterknop indrukken
0x0010MOUSEEVENTF_RIGHTUPRechterknop loslaten
0x0020MOUSEEVENTF_MIDDLEDOWNMiddelste knop indrukken
0x0040MOUSEEVENTF_MIDDLEUPMiddelste knop loslaten
0x0800MOUSEEVENTF_WHEELVerticaal scrollen
0x01000MOUSEEVENTF_HWHEELHorizontaal scrollen
0x0080MOUSEEVENTF_XDOWNX-knop indrukken (vereist XButton-optie)
0x0100MOUSEEVENTF_XUPX-knop loslaten (vereist XButton-optie)
// Left click
mouse.sendHid(0x0002, {}); // down
mouse.sendHid(0x0004, {}); // up
// Scroll up one notch
mouse.sendHid(0x0800, { WheelDelta: 120 });
// X1 button press
mouse.sendHid(0x0080, { XButton: 1 });
mouse.sendHid(0x0100, { XButton: 1 });

Routeert een aangepaste muisgebeurtenis door het SignalRGB-macrosysteem. Macroscripts met een onMouse-trigger kunnen deze gebeurtenissen matchen. Injecteert geen muisinvoer op OS-niveau.

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

Voor draadloze apparaten die batterijstatus rapporteren. Nadat u de functie heeft toegevoegd, werkt u het batterijniveau en de status bij telkens wanneer uw apparaat deze rapporteert.

export function Initialize() {
device.addFeature("battery");
}
MethodeBeschrijving
battery.setBatteryLevel(level)Batterijpercentage instellen (0–100)
battery.setBatteryState(state)Laadstatus instellen met een toestandsconstante

Toestandsconstanten (toegankelijk via battery.<naam>):

ConstanteBeschrijving
battery.disabledBatterijrapportage uitgeschakeld
battery.unknownToestand nog niet bekend
battery.drainingDraait op batterij
battery.chargingOpladen via kabel
battery.fullChargingOpladen en al vol
battery.fullVolledig opgeladen, niet aan het opladen
battery.wirelessChargingDraadloos opladen

Deze eigenschappen weerspiegelen de laatste ingestelde waarden:

EigenschapTypeBeschrijving
battery.batteryLevelGetalHuidig niveau (0–100)
battery.batteryStateGetalHuidige toestandswaarde
battery.stateStringStringLeesbaar toestandslabel
export function Initialize() {
device.addFeature("battery");
}
export function Render() {
// Non-blocking read — check if the device sent a battery report this 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
);
}
}