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.
Moduler vs. funktioner
Section titled “Moduler vs. funktioner”| Moduler | Funktioner | |
|---|---|---|
| Hur man använder | import { x } from "@SignalRGB/name" | device.addFeature("name") i Initialize() |
| Syfte | Hjälptjänster (nätverk, kodning, systeminformation) | Enhetsförmågor (batteri, inmatningsinjektion) |
| Namnrymd | Modulens egna exporterade namn | device.featureName.* |
| Instanser | En per plugin | Kan ha flera |
Tillgängliga moduler
Section titled “Tillgängliga moduler”Importera dessa längst upp i din plugin-fil.
| Importväg | Syfte |
|---|---|
@SignalRGB/serial | Seriell/COM-portkommunikation |
@SignalRGB/tcp | TCP-socketkommunikation |
@SignalRGB/udp | UDP-socketkommunikation |
@SignalRGB/base64 | Base64-kodning och avkodning |
@SignalRGB/performance | Prestandaprofilering och bildrute-timer |
@SignalRGB/appInfo | SignalRGB-applikationsversionsinformation |
@SignalRGB/systeminfo | Systemhårdvaruinformation |
@SignalRGB/permissions | Kontrollera status för användarbehörigheter |
Se sidan Avancerad kommunikation för användningsexempel för serial, tcp och udp.
Tillgängliga funktioner
Section titled “Tillgängliga funktioner”Anropa device.addFeature("name") i din Initialize()-export. Funktionen skapar ett globalt objekt med specifikt samma namn.
| Funktionsnamn | Namnrymd | Syfte |
|---|---|---|
"keyboard" | keyboard | Injicera tangentbordstryckningar i SignalRGB-makron eller vidarebefordra tangentbordshändelser |
"mouse" | mouse | Injicera musinmatning i SignalRGB-makron eller vidarebefordra mushändelser |
"battery" | battery | Rapportera batterinivå och laddningsstatus för trådlösa enheter |
"dtls" | dtls | DTLS-krypterad UDP med PSK-autentisering |
Tangentbordsfunktion
Section titled “Tangentbordsfunktion”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");}keyboard.sendHid(vkCode, options)
Section titled “keyboard.sendHid(vkCode, options)”Skickar ett direkt rått tangentbordstryck till operativsystemet via keybd_event. Tangenten visas som verklig inmatning för alla applikationer — kringgår makrosystemet helt.
| Parameter | Typ | Beskrivning | Exempel |
|---|---|---|---|
| vkCode | Number | Windows virtuell tangentkod | 0x41 (A-tangenten) |
| options.released | Boolean (obligatorisk) | true för tangentreleasing, false för tangentnedtryckning | false |
keyboard.sendHid(0x41, { released: false }); // Tryck Akeyboard.sendHid(0x41, { released: true }); // Släpp Akeyboard.sendEvent(eventData, eventType)
Section titled “keyboard.sendEvent(eventData, eventType)”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.
| Parameter | Typ | Beskrivning | Exempel |
|---|---|---|---|
| eventData | Object eller String | Händelsedata. Inkludera key (strängnamn) och valfritt keyCode (nummer) för tangentkoppling. | { key: "A", keyCode: 0x41 } |
| eventType | String | Hä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.
Musfunktion
Section titled “Musfunktion”För plugins som representerar mus- eller pekarenheter.
export function Initialize() { device.addFeature("mouse");}mouse.sendHid(buttonCode, options)
Section titled “mouse.sendHid(buttonCode, options)”Skickar ett rått mushändelse till operativsystemet via SendInput. Musrörelse (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) är blockerat av säkerhetsskäl.
| Parameter | Typ | Beskrivning |
|---|---|---|
| buttonCode | Number | Windows MOUSEEVENTF_*-flagga |
| options.XButton | Number | Obligatorisk för X-knappshändelser — 1 (X1) eller 2 (X2) |
| options.WheelDelta | Number | Obligatorisk för scrollhjulshändelser — positivt rullar upp, negativt rullar ner |
Vanliga knappkoder:
| Kod | Konstant | Beskrivning |
|---|---|---|
0x0002 | MOUSEEVENTF_LEFTDOWN | Vänster knapp nedtryckt |
0x0004 | MOUSEEVENTF_LEFTUP | Vänster knapp released |
0x0008 | MOUSEEVENTF_RIGHTDOWN | Höger knapp nedtryckt |
0x0010 | MOUSEEVENTF_RIGHTUP | Höger knapp released |
0x0020 | MOUSEEVENTF_MIDDLEDOWN | Mittenknapp nedtryckt |
0x0040 | MOUSEEVENTF_MIDDLEUP | Mittenknapp released |
0x0800 | MOUSEEVENTF_WHEEL | Vertikalt scroll |
0x01000 | MOUSEEVENTF_HWHEEL | Horisontellt scroll |
0x0080 | MOUSEEVENTF_XDOWN | X-knapp nedtryckt (kräver XButton-alternativ) |
0x0100 | MOUSEEVENTF_XUP | X-knapp released (kräver XButton-alternativ) |
// Vänsterklickmouse.sendHid(0x0002, {}); // tryck nedmouse.sendHid(0x0004, {}); // släpp
// Rulla upp ett hackmouse.sendHid(0x0800, { WheelDelta: 120 });
// X1-knapp nedtrycktmouse.sendHid(0x0080, { XButton: 1 });mouse.sendHid(0x0100, { XButton: 1 });mouse.sendEvent(eventData, eventType)
Section titled “mouse.sendEvent(eventData, eventType)”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");Batterifunktion
Section titled “Batterifunktion”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");}Ställa in batteristatus
Section titled “Ställa in batteristatus”| Metod | Beskrivning |
|---|---|
battery.setBatteryLevel(level) | Ange batteriprocenttal (0–100) |
battery.setBatteryState(state) | Ange laddningsstatus med statuskonstant |
Statuskonstanter (åtkomst via battery.<namn>):
| Konstant | Beskrivning |
|---|---|
battery.disabled | Batterirapportering inaktiverad |
battery.unknown | Status ännu okänd |
battery.draining | Körs på batteri |
battery.charging | Laddas via kabel |
battery.fullCharging | Laddas och redan full |
battery.full | Fulladdat, laddas inte |
battery.wirelessCharging | Trådlös laddning |
Läsa batteristatus
Section titled “Läsa batteristatus”Dessa egenskaper återspeglar det senaste inställda värdet:
| Egenskap | Typ | Beskrivning |
|---|---|---|
battery.batteryLevel | Number | Aktuell nivå (0–100) |
battery.batteryState | Number | Aktuellt statusvärde |
battery.stateString | String | Mänsklig läsbar statusetikett |
Batteriexempel
Section titled “Batteriexempel”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 ); }}