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.
Moduli vs. funkcionalnosti
Section titled “Moduli vs. funkcionalnosti”| Moduli | Funkcionalnosti | |
|---|---|---|
| Korišćenje | import { x } from "@SignalRGB/name" | device.addFeature("name") u Initialize() |
| Svrha | Pomoćni servisi (mreža, kodiranje, informacije o sistemu) | Mogućnosti uređaja (baterija, injekcija unosa) |
| Namespace | Sopstveni exportovani nazivi modula | device.featureName.* |
| Instance | Jedna po pluginu | Može ih biti više |
Dostupni moduli
Section titled “Dostupni moduli”Importujte ove na početku vaše plugin datoteke.
| Put importa | Svrha |
|---|---|
@SignalRGB/serial | Serijska/COM port komunikacija |
@SignalRGB/tcp | TCP socket komunikacija |
@SignalRGB/udp | UDP socket komunikacija |
@SignalRGB/base64 | Base64 kodiranje i dekodiranje |
@SignalRGB/performance | Profilisanje performansi i tajmer frejmova |
@SignalRGB/appInfo | Informacije o verziji SignalRGB aplikacije |
@SignalRGB/systeminfo | Informacije o sistemskom hardveru |
@SignalRGB/permissions | Provera statusa korisničkih dozvola |
Pod Napredna komunikacija naći ćete primere korišćenja za serial, tcp i udp.
Dostupne funkcionalnosti
Section titled “Dostupne funkcionalnosti”Pozovite device.addFeature("name") u vašem Initialize() exportu. Funkcionalnost kreira globalni objekat sa istim imenom kao i funkcionalnost.
| Naziv funkcionalnosti | Namespace | Svrha |
|---|---|---|
"keyboard" | keyboard | Ubacivanje pritisaka tastera ili prosleđivanje događaja tastature SignalRGB makroima |
"mouse" | mouse | Ubacivanje unosa miša ili prosleđivanje događaja miša SignalRGB makroima |
"battery" | battery | Prijavljivanje nivoa i stanja baterije za bežične uređaje |
"dtls" | dtls | DTLS šifrovani UDP sa PSK autentifikacijom |
Funkcionalnost tastature
Section titled “Funkcionalnost tastature”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");}keyboard.sendHid(vkCode, options)
Section titled “keyboard.sendHid(vkCode, options)”Šalje sirov pritisak tastera direktno operativnom sistemu putem keybd_event. Taster se pojavljuje kao pravi unos svim aplikacijama — potpuno zaobilazi sistem makroa.
| Parametar | Tip | Opis | Primer |
|---|---|---|---|
| vkCode | Number | Windows Virtual Key Code | 0x41 (taster A) |
| options.released | Boolean (obavezno) | true za Key-Up, false za Key-Down | false |
keyboard.sendHid(0x41, { released: false }); // Pritisni Akeyboard.sendHid(0x41, { released: true }); // Pusti Akeyboard.sendEvent(eventData, eventType)
Section titled “keyboard.sendEvent(eventData, eventType)”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.
| Parametar | Tip | Opis | Primer |
|---|---|---|---|
| eventData | Object ili String | Podaci događaja. Navedite key (String naziv) i opciono keyCode (broj) za podudaranje ključa. | { key: "A", keyCode: 0x41 } |
| eventType | String | Oznaka 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.
Funkcionalnost miša
Section titled “Funkcionalnost miša”Za pluginove koji predstavljaju miševe ili uređaje za pokazivanje.
export function Initialize() { device.addFeature("mouse");}mouse.sendHid(buttonCode, options)
Section titled “mouse.sendHid(buttonCode, options)”Šalje sirov događaj miša OS-u putem SendInput. Pomeranja miša (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) su blokirana iz bezbednosnih razloga.
| Parametar | Tip | Opis |
|---|---|---|
| buttonCode | Number | Windows MOUSEEVENTF_* flag |
| options.XButton | Number | Obavezno za X dugme događaje — 1 (X1) ili 2 (X2) |
| options.WheelDelta | Number | Obavezno za događaje točka miša — pozitivno skroluje gore, negativno dole |
Česti kodovi dugmadi:
| Kod | Konstanta | Opis |
|---|---|---|
0x0002 | MOUSEEVENTF_LEFTDOWN | Pritisni levo dugme |
0x0004 | MOUSEEVENTF_LEFTUP | Pusti levo dugme |
0x0008 | MOUSEEVENTF_RIGHTDOWN | Pritisni desno dugme |
0x0010 | MOUSEEVENTF_RIGHTUP | Pusti desno dugme |
0x0020 | MOUSEEVENTF_MIDDLEDOWN | Pritisni srednje dugme |
0x0040 | MOUSEEVENTF_MIDDLEUP | Pusti srednje dugme |
0x0800 | MOUSEEVENTF_WHEEL | Vertikalno skrolovanje |
0x01000 | MOUSEEVENTF_HWHEEL | Horizontalno skrolovanje |
0x0080 | MOUSEEVENTF_XDOWN | Pritisni X dugme (zahteva opciju XButton) |
0x0100 | MOUSEEVENTF_XUP | Pusti X dugme (zahteva opciju XButton) |
// Levi klikmouse.sendHid(0x0002, {}); // pritisnutomouse.sendHid(0x0004, {}); // pušteno
// Skroluj jedan korak goremouse.sendHid(0x0800, { WheelDelta: 120 });
// Pritisni X1 dugmemouse.sendHid(0x0080, { XButton: 1 });mouse.sendHid(0x0100, { XButton: 1 });mouse.sendEvent(eventData, eventType)
Section titled “mouse.sendEvent(eventData, eventType)”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");Funkcionalnost baterije
Section titled “Funkcionalnost baterije”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");}Postavljanje stanja baterije
Section titled “Postavljanje stanja baterije”| Metoda | Opis |
|---|---|
battery.setBatteryLevel(level) | Postavi procenat baterije (0–100) |
battery.setBatteryState(state) | Postavi stanje punjenja koristeći konstantu stanja |
Konstante stanja (pristup putem battery.<name>):
| Konstanta | Opis |
|---|---|
battery.disabled | Izveštavanje o bateriji onemogućeno |
battery.unknown | Stanje još uvek nepoznato |
battery.draining | Radi na bateriji |
battery.charging | Puni se putem kabla |
battery.fullCharging | Puni se i već je puno |
battery.full | Potpuno napunjeno, ne puni se |
battery.wirelessCharging | Bežično punjenje |
Čitanje stanja baterije
Section titled “Čitanje stanja baterije”Ova svojstva odražavaju poslednje postavljene vrednosti:
| Svojstvo | Tip | Opis |
|---|---|---|
battery.batteryLevel | Number | Trenutni nivo (0–100) |
battery.batteryState | Number | Trenutna vrednost stanja |
battery.stateString | String | Čitljiva oznaka stanja |
Primer baterije
Section titled “Primer baterije”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 ); }}