Przejdź do głównej zawartości

Moduły i funkcje

Wtyczki mogą rozszerzać swoje możliwości poza podstawowe operacje odczytu i zapisu USB za pomocą dwóch systemów: Modułów i Funkcji. Zrozumienie różnicy pomaga odkryć, co jest dostępne i używać właściwego mechanizmu.

ModułyFunkcje
Jak używaćimport { x } from "@SignalRGB/nazwa"device.addFeature("nazwa") w Initialize()
CelUsługi narzędziowe (sieć, kodowanie, info systemowe)Możliwości urządzenia (bateria, wstrzykiwanie wejścia)
Przestrzeń nazwWłasne wyeksportowane nazwy modułudevice.nazwafunkcji.*
InstancjeJedna na wtyczkęMoże być wiele

Importuj je na górze pliku wtyczki.

Ścieżka importuCel
@SignalRGB/serialKomunikacja szeregowa/przez port COM
@SignalRGB/tcpKomunikacja przez gniazdo TCP
@SignalRGB/udpKomunikacja przez gniazdo UDP
@SignalRGB/base64Kodowanie i dekodowanie Base64
@SignalRGB/performanceProfilowanie wydajności i timery klatek
@SignalRGB/appInfoInformacje o wersji aplikacji SignalRGB
@SignalRGB/systeminfoInformacje o sprzęcie systemowym
@SignalRGB/permissionsSprawdzanie statusu uprawnień użytkownika

Zobacz Zaawansowana komunikacja dla przykładów użycia serial, tcp i udp.


Wywołaj device.addFeature("nazwa") w swoim eksporcie Initialize(). Funkcja tworzy globalny obiekt o tej samej nazwie co funkcja.

Nazwa funkcjiPrzestrzeń nazwCel
"keyboard"keyboardWstrzykiwanie naciśnięć klawiszy lub kierowanie zdarzeń klawiatury do makr SignalRGB
"mouse"mouseWstrzykiwanie wejścia myszy lub kierowanie zdarzeń myszy do makr SignalRGB
"battery"batteryRaportowanie poziomu baterii i statusu ładowania dla urządzeń bezprzewodowych
"dtls"dtlsSzyfrowany UDP DTLS z uwierzytelnianiem PSK

Dla wtyczek reprezentujących urządzenia klawiaturowe. Pozwala wstrzykiwać prawdziwe naciśnięcia klawiszy do systemu operacyjnego lub aktywować zdarzenia, które mogą uruchamiać makra SignalRGB.

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

Wysyła surowe naciśnięcie klawisza bezpośrednio do systemu operacyjnego przez keybd_event. Klawisz pojawia się jako prawdziwe wejście dla wszystkich aplikacji — całkowicie omija system makr.

ParametrTypOpisPrzykład
vkCodeLiczbaWirtualny kod klawisza Windows0x41 (klawisz A)
options.releasedBoolean (wymagane)true dla zwolnienia klawisza, false dla naciśnięciafalse
keyboard.sendHid(0x41, { released: false }); // Naciśnij A
keyboard.sendHid(0x41, { released: true }); // Zwolnij A

Kieruje zdarzenie klawiatury przez system makr SignalRGB. Makra z wyzwalaczem onKey mogą dopasowywać te zdarzenia. Nie wstrzykuje prawdziwego naciśnięcia klawisza — tylko makra SignalRGB widzą to zdarzenie.

System makr automatycznie wzbogaca zdarzenie o aktualny status modyfikatorów (Ctrl, Shift, Alt, Win) z fizycznej klawiatury przed wysłaniem.

ParametrTypOpisPrzykład
eventDataObiekt lub StringDane zdarzenia. Dodaj key (nazwa ciągu) i opcjonalnie keyCode (liczba) do dopasowywania klawiszy.{ key: "A", keyCode: 0x41 }
eventTypeStringEtykieta typu zdarzenia"KeyPress"
keyboard.sendEvent({ key: "A", keyCode: 0x41, released: false }, "KeyPress");

Skrypty makr otrzymują event.Sender (UID wtyczki) i event.SenderType ("Device"), dzięki czemu mogą odróżnić zdarzenia pochodzące z wtyczki od prawdziwych naciśnięć klawiszy sprzętowych.


Dla wtyczek reprezentujących urządzenia mysz lub wskaźnikowe.

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

Wysyła surowe zdarzenie myszy do systemu operacyjnego przez SendInput. Ruch myszy (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) jest zablokowany ze względów bezpieczeństwa.

ParametrTypOpis
buttonCodeLiczbaFlaga Windows MOUSEEVENTF_*
options.XButtonLiczbaWymagane dla zdarzeń przycisku X — 1 (X1) lub 2 (X2)
options.WheelDeltaLiczbaWymagane dla zdarzeń kółka przewijania — dodatnie przewija w górę, ujemne w dół

Często używane kody przycisków:

KodStałaOpis
0x0002MOUSEEVENTF_LEFTDOWNNaciśnięcie lewego przycisku
0x0004MOUSEEVENTF_LEFTUPZwolnienie lewego przycisku
0x0008MOUSEEVENTF_RIGHTDOWNNaciśnięcie prawego przycisku
0x0010MOUSEEVENTF_RIGHTUPZwolnienie prawego przycisku
0x0020MOUSEEVENTF_MIDDLEDOWNNaciśnięcie środkowego przycisku
0x0040MOUSEEVENTF_MIDDLEUPZwolnienie środkowego przycisku
0x0800MOUSEEVENTF_WHEELPrzewijanie pionowe
0x01000MOUSEEVENTF_HWHEELPrzewijanie poziome
0x0080MOUSEEVENTF_XDOWNNaciśnięcie przycisku X (wymaga opcji XButton)
0x0100MOUSEEVENTF_XUPZwolnienie przycisku X (wymaga opcji XButton)
// 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 });

Kieruje niestandardowe zdarzenie myszy przez system makr SignalRGB. Skrypty makr z wyzwalaczem onMouse mogą dopasowywać te zdarzenia. Nie wstrzykuje wejścia myszy na poziomie systemu operacyjnego.

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

Dla urządzeń bezprzewodowych raportujących status baterii. Po dodaniu funkcji aktualizuj poziom baterii i status za każdym razem, gdy urządzenie to raportuje.

export function Initialize() {
device.addFeature("battery");
}
MetodaOpis
battery.setBatteryLevel(level)Ustawia procent baterii (0–100)
battery.setBatteryState(state)Ustawia status ładowania za pomocą stałej stanu

Stałe stanu (dostępne przez battery.<nazwa>):

StałaOpis
battery.disabledRaportowanie baterii wyłączone
battery.unknownStan jeszcze nieznany
battery.drainingDziała na baterii
battery.chargingŁadowanie przez kabel
battery.fullChargingŁadowanie i już pełna
battery.fullW pełni naładowana, nie ładuje się
battery.wirelessChargingŁadowanie bezprzewodowe

Te właściwości odzwierciedlają ostatnio ustawione wartości:

WłaściwośćTypOpis
battery.batteryLevelLiczbaAktualny poziom (0–100)
battery.batteryStateLiczbaAktualna wartość stanu
battery.stateStringStringCzytelna etykieta stanu
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
);
}
}