Skip to content

Moduli i funkcionalnosti

Pluginovi mogu proširiti svoje mogućnosti izvan jednostavnih USB čitanja i pisanja sa dva sistema: modulima i funkcionalnostima. Razumevanje razlike između njih pomaže vam da otkrijete što je dostupno i da koristite pravi mehanizam.

ModuliFunkcionalnosti
Korišćenjeimport { x } from "@SignalRGB/name"device.addFeature("name") u Initialize()
SvrhaPomoćni servisi (mreža, kodiranje, informacije o sistemu)Mogućnosti uređaja (baterija, injekcija unosa)
NamespaceSopstveni exportovani nazivi moduladevice.featureName.*
InstanceJedna po pluginuMože ih biti više

Importujte ove na početku vaše plugin datoteke.

Put importaSvrha
@SignalRGB/serialSerijska/COM port komunikacija
@SignalRGB/tcpTCP socket komunikacija
@SignalRGB/udpUDP socket komunikacija
@SignalRGB/base64Base64 kodiranje i dekodiranje
@SignalRGB/performanceProfilisanje performansi i tajmer frejmova
@SignalRGB/appInfoInformacije o verziji SignalRGB aplikacije
@SignalRGB/systeminfoInformacije o sistemskom hardveru
@SignalRGB/permissionsProvera statusa korisničkih dozvola

Pod Napredna komunikacija naći ćete primere korišćenja za serial, tcp i udp.


Pozovite device.addFeature("name") u vašem Initialize() exportu. Funkcionalnost kreira globalni objekat sa istim imenom kao i funkcionalnost.

Naziv funkcionalnostiNamespaceSvrha
"keyboard"keyboardUbacivanje pritisaka tastera ili prosleđivanje događaja tastature SignalRGB makroima
"mouse"mouseUbacivanje unosa miša ili prosleđivanje događaja miša SignalRGB makroima
"battery"batteryPrijavljivanje nivoa i stanja baterije za bežične uređaje
"dtls"dtlsDTLS šifrovani UDP sa PSK autentifikacijom

Za pluginove koji predstavljaju uređaje tastature. Omogućava ubacivanje pravih pritisaka tastera u OS ili aktiviranje događaja koji mogu pokrenuti SignalRGB makroe.

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

Šalje sirov pritisak tastera direktno operativnom sistemu putem keybd_event. Taster se pojavljuje kao pravi unos svim aplikacijama — potpuno zaobilazi sistem makroa.

ParametarTipOpisPrimer
vkCodeNumberWindows Virtual Key Code0x41 (taster A)
options.releasedBoolean (obavezno)true za Key-Up, false za Key-Downfalse
keyboard.sendHid(0x41, { released: false }); // Pritisni A
keyboard.sendHid(0x41, { released: true }); // Pusti A

Prosleđuje događaj tastature kroz sistem makroa SignalRGBa. Makroi sa onKey okidačem mogu podudariti ove događaje. Ne ubacuje pravi pritisak tastera — samo SignalRGB makroi vide ovaj događaj.

Sistem makroa automatski obogaćuje događaj trenutnim statusom modifikatora (Ctrl, Shift, Alt, Win) sa fizičke tastature pre prosleđivanja.

ParametarTipOpisPrimer
eventDataObject ili StringPodaci događaja. Navedite key (String naziv) i opciono keyCode (broj) za podudaranje ključa.{ key: "A", keyCode: 0x41 }
eventTypeStringOznaka tipa događaja"KeyPress"
keyboard.sendEvent({ key: "A", keyCode: 0x41, released: false }, "KeyPress");

Makro skripte primaju event.Sender (UID plugina) i event.SenderType ("Device"), kako bi mogle razlikovati događaje pokrenute pluginom od pravih pritisaka hardverskih tastera.


Za pluginove koji predstavljaju miševe ili uređaje za pokazivanje.

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

Šalje sirov događaj miša OS-u putem SendInput. Pomeranja miša (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) su blokirana iz bezbednosnih razloga.

ParametarTipOpis
buttonCodeNumberWindows MOUSEEVENTF_* flag
options.XButtonNumberObavezno za X dugme događaje — 1 (X1) ili 2 (X2)
options.WheelDeltaNumberObavezno za događaje točka miša — pozitivno skroluje gore, negativno dole

Česti kodovi dugmadi:

KodKonstantaOpis
0x0002MOUSEEVENTF_LEFTDOWNPritisni levo dugme
0x0004MOUSEEVENTF_LEFTUPPusti levo dugme
0x0008MOUSEEVENTF_RIGHTDOWNPritisni desno dugme
0x0010MOUSEEVENTF_RIGHTUPPusti desno dugme
0x0020MOUSEEVENTF_MIDDLEDOWNPritisni srednje dugme
0x0040MOUSEEVENTF_MIDDLEUPPusti srednje dugme
0x0800MOUSEEVENTF_WHEELVertikalno skrolovanje
0x01000MOUSEEVENTF_HWHEELHorizontalno skrolovanje
0x0080MOUSEEVENTF_XDOWNPritisni X dugme (zahteva opciju XButton)
0x0100MOUSEEVENTF_XUPPusti X dugme (zahteva opciju XButton)
// Levi klik
mouse.sendHid(0x0002, {}); // pritisnuto
mouse.sendHid(0x0004, {}); // pušteno
// Skroluj jedan korak gore
mouse.sendHid(0x0800, { WheelDelta: 120 });
// Pritisni X1 dugme
mouse.sendHid(0x0080, { XButton: 1 });
mouse.sendHid(0x0100, { XButton: 1 });

Prosleđuje prilagođeni događaj miša kroz sistem makroa SignalRGBa. Makro skripte sa onMouse okidačem mogu podudariti ove događaje. Ne ubacuje OS unos miša.

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

Za bežične uređaje koji prijavljuju status baterije. Nakon dodavanja funkcionalnosti, ažurirajte nivo i stanje baterije kada ih uređaj prijavi.

export function Initialize() {
device.addFeature("battery");
}
MetodaOpis
battery.setBatteryLevel(level)Postavi procenat baterije (0–100)
battery.setBatteryState(state)Postavi stanje punjenja koristeći konstantu stanja

Konstante stanja (pristup putem battery.<name>):

KonstantaOpis
battery.disabledIzveštavanje o bateriji onemogućeno
battery.unknownStanje još uvek nepoznato
battery.drainingRadi na bateriji
battery.chargingPuni se putem kabla
battery.fullChargingPuni se i već je puno
battery.fullPotpuno napunjeno, ne puni se
battery.wirelessChargingBežično punjenje

Ova svojstva odražavaju poslednje postavljene vrednosti:

SvojstvoTipOpis
battery.batteryLevelNumberTrenutni nivo (0–100)
battery.batteryStateNumberTrenutna vrednost stanja
battery.stateStringStringČitljiva oznaka stanja
export function Initialize() {
device.addFeature("battery");
}
export function Render() {
// Neblokirajuće čitanje — proverite da li je uređaj poslao izveštaj o bateriji ovog frejma
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
);
}
}