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.
Moduler vs. Features
Sektion kaldt “Moduler vs. Features”| Moduler | Features | |
|---|---|---|
| Brug | import { x } from "@SignalRGB/name" | device.addFeature("name") i Initialize() |
| Formål | Hjælpetjenester (netværk, kodning, systeminfo) | Enhedsfunktioner (batteri, input-injektion) |
| Navnerum | Modulets egne eksporterede navne | device.featureName.* |
| Instanser | Én pr. plugin | Kan have flere |
Tilgængelige moduler
Sektion kaldt “Tilgængelige moduler”Importér disse øverst i din plugin-fil.
| Import-sti | Formål |
|---|---|
@SignalRGB/serial | Seriel/COM-port-kommunikation |
@SignalRGB/tcp | TCP-socket-kommunikation |
@SignalRGB/udp | UDP-socket-kommunikation |
@SignalRGB/base64 | Base64-kodning og -dekodning |
@SignalRGB/performance | Performance-profilering og frame-timer |
@SignalRGB/appInfo | SignalRGB-applikationsversionsinformation |
@SignalRGB/systeminfo | System-hardwareinformation |
@SignalRGB/permissions | Kontrol af brugerrettighedsstatus |
Se Avanceret kommunikation for eksempler på brug af serial, tcp og udp. |
Tilgængelige Features
Sektion kaldt “Tilgængelige Features”Kald device.addFeature("name") i din Initialize()-eksport. Feature’et opretter et globalt objekt med samme navn som feature’et.
| Feature-navn | Navnerum | Formål |
|---|---|---|
"keyboard" | keyboard | Injicér tastetryk eller videresend tastaturhændelser til SignalRGB-makroer |
"mouse" | mouse | Injicér museinput eller videresend musehændelser til SignalRGB-makroer |
"battery" | battery | Rapportér batteriniveau og opladningstilstand for trådløse enheder |
"dtls" | dtls | DTLS-krypteret UDP med PSK-autentificering |
Keyboard-Feature
Sektion kaldt “Keyboard-Feature”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");}keyboard.sendHid(vkCode, options)
Sektion kaldt “keyboard.sendHid(vkCode, options)”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.
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| vkCode | Number | Windows Virtual Key Code | 0x41 (tast A) |
| options.released | Boolean (påkrævet) | true for Key-Up, false for Key-Down | false |
keyboard.sendHid(0x41, { released: false }); // Tryk Akeyboard.sendHid(0x41, { released: true }); // Slip Akeyboard.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.
| Parameter | Type | Beskrivelse | Eksempel |
|---|---|---|---|
| eventData | Object eller String | Hændelsesdata. Angiv key (streng-navn) og valgfrit keyCode (tal) til nøglematchning. | { key: "A", keyCode: 0x41 } |
| eventType | String | Hæ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.
Mouse-Feature
Sektion kaldt “Mouse-Feature”Til plugins der repræsenterer mus- eller pegeenheder.
export function Initialize() { device.addFeature("mouse");}mouse.sendHid(buttonCode, options)
Sektion kaldt “mouse.sendHid(buttonCode, options)”Sender en rå mushændelse via SendInput til operativsystemet. Musebevægelser (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) er blokeret af sikkerhedshensyn.
| Parameter | Type | Beskrivelse |
|---|---|---|
| buttonCode | Number | Windows MOUSEEVENTF_*-flag |
| options.XButton | Number | Påkrævet for X-knap-hændelser — 1 (X1) eller 2 (X2) |
| options.WheelDelta | Number | Påkrævet for rullehjulshændelser — positiv ruller op, negativ ruller ned |
Hyppige knapkoder:
| Kode | Konstant | Beskrivelse |
|---|---|---|
0x0002 | MOUSEEVENTF_LEFTDOWN | Tryk venstre knap |
0x0004 | MOUSEEVENTF_LEFTUP | Slip venstre knap |
0x0008 | MOUSEEVENTF_RIGHTDOWN | Tryk højre knap |
0x0010 | MOUSEEVENTF_RIGHTUP | Slip højre knap |
0x0020 | MOUSEEVENTF_MIDDLEDOWN | Tryk midterste knap |
0x0040 | MOUSEEVENTF_MIDDLEUP | Slip midterste knap |
0x0800 | MOUSEEVENTF_WHEEL | Lodret rulning |
0x01000 | MOUSEEVENTF_HWHEEL | Vandret rulning |
0x0080 | MOUSEEVENTF_XDOWN | Tryk X-knap (kræver XButton-option) |
0x0100 | MOUSEEVENTF_XUP | Slip X-knap (kræver XButton-option) |
// Venstreklikmouse.sendHid(0x0002, {}); // trykketmouse.sendHid(0x0004, {}); // sluppet
// Rul ét trin opmouse.sendHid(0x0800, { WheelDelta: 120 });
// Tryk X1-knapmouse.sendHid(0x0080, { XButton: 1 });mouse.sendHid(0x0100, { XButton: 1 });mouse.sendEvent(eventData, eventType)
Sektion kaldt “mouse.sendEvent(eventData, eventType)”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");Battery-Feature
Sektion kaldt “Battery-Feature”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");}Sæt batteritilstand
Sektion kaldt “Sæt batteritilstand”| Metode | Beskrivelse |
|---|---|
battery.setBatteryLevel(level) | Sæt batteriprocent (0–100) |
battery.setBatteryState(state) | Sæt opladningstilstand med en tilstandskonstant |
Tilstandskonstanter (adgang via battery.<name>):
| Konstant | Beskrivelse |
|---|---|
battery.disabled | Batterirapportering deaktiveret |
battery.unknown | Tilstand endnu ukendt |
battery.draining | Kører på batteri |
battery.charging | Oplader via kabel |
battery.fullCharging | Oplader og allerede fuldt |
battery.full | Fuldt opladet, oplader ikke |
battery.wirelessCharging | Trådløs opladning |
Læs batteritilstand
Sektion kaldt “Læs batteritilstand”Disse egenskaber afspejler de senest satte værdier:
| Egenskab | Type | Beskrivelse |
|---|---|---|
battery.batteryLevel | Number | Aktuelt niveau (0–100) |
battery.batteryState | Number | Aktuel tilstandsværdi |
battery.stateString | String | Læsbart tilstandslabel |
Batteri-eksempel
Sektion kaldt “Batteri-eksempel”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 ); }}