Lewati ke konten

Modules and Features

Plugin dapat memperluas kemampuannya di luar pembacaan dan penulisan USB dasar menggunakan dua sistem: Modules dan Features. Memahami perbedaan di antara keduanya membantu Anda menemukan apa yang tersedia dan menggunakan mekanisme yang tepat untuk pekerjaan tersebut.

ModulesFeatures
Cara penggunaanimport { x } from "@SignalRGB/name"device.addFeature("name") dalam Initialize()
TujuanLayanan utilitas (jaringan, encoding, info sistem)Kemampuan perangkat (baterai, injeksi input)
NamespaceNama ekspor modul sendiridevice.featureName.*
InstanceSatu per pluginDapat memiliki beberapa

Impor ini di bagian atas file plugin Anda.

Import pathTujuan
@SignalRGB/serialKomunikasi port Serial/COM
@SignalRGB/tcpKomunikasi socket TCP
@SignalRGB/udpKomunikasi socket UDP
@SignalRGB/base64Encoding dan decoding Base64
@SignalRGB/performanceProfiling performa dan timer frame
@SignalRGB/appInfoInfo versi aplikasi SignalRGB
@SignalRGB/systeminfoInformasi hardware sistem
@SignalRGB/permissionsPeriksa status izin pengguna

Lihat Advanced Communication untuk contoh penggunaan serial, tcp, dan udp.


Panggil device.addFeature("name") dalam ekspor Initialize() Anda. Feature membuat objek global dengan nama yang sama dengan feature tersebut.

Nama featureNamespaceTujuan
"keyboard"keyboardInjeksi keystroke atau arahkan peristiwa keyboard ke makro SignalRGB
"mouse"mouseInjeksi input mouse atau arahkan peristiwa mouse ke makro SignalRGB
"battery"batteryLaporkan level baterai dan status pengisian untuk perangkat nirkabel
"dtls"dtlsUDP terenkripsi DTLS dengan autentikasi PSK

Untuk plugin yang mewakili perangkat keyboard. Memungkinkan Anda menginjeksi keystroke nyata ke OS atau memicu peristiwa yang dapat mengaktifkan makro SignalRGB.

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

Mengirim keystroke mentah langsung ke sistem operasi melalui keybd_event. Tombol muncul sebagai input nyata ke semua aplikasi — ini melewati sistem makro sepenuhnya.

ParameterTipeDeskripsiContoh
vkCodeNumberKode Windows Virtual Key0x41 (tombol A)
options.releasedBoolean (wajib)true untuk key-up, false untuk key-downfalse
keyboard.sendHid(0x41, { released: false }); // Press A
keyboard.sendHid(0x41, { released: true }); // Release A

Merutekan peristiwa keyboard melalui sistem makro SignalRGB. Makro dengan pemicu onKey dapat mencocokkan peristiwa ini. Tidak menginjeksi keystroke nyata — hanya makro SignalRGB yang melihat peristiwa ini.

Sistem makro secara otomatis memperkaya peristiwa dengan status modifier langsung (Ctrl, Shift, Alt, Win) dari keyboard fisik sebelum mengirimkannya.

ParameterTipeDeskripsiContoh
eventDataObject atau StringData peristiwa. Sertakan key (nama string) dan opsional keyCode (number) untuk pencocokan tombol.{ key: "A", keyCode: 0x41 }
eventTypeStringLabel tipe peristiwa"KeyPress"
keyboard.sendEvent({ key: "A", keyCode: 0x41, released: false }, "KeyPress");

Skrip makro menerima event.Sender (UID plugin) dan event.SenderType ("Device"), sehingga dapat membedakan peristiwa yang berasal dari plugin dengan keystroke hardware nyata.


Untuk plugin yang mewakili perangkat mouse atau pointer.

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

Mengirim peristiwa mouse mentah ke OS melalui SendInput. Pergerakan mouse (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) diblokir demi keamanan.

ParameterTipeDeskripsi
buttonCodeNumberFlag Windows MOUSEEVENTF_*
options.XButtonNumberDiperlukan untuk peristiwa X-button — 1 (X1) atau 2 (X2)
options.WheelDeltaNumberDiperlukan untuk peristiwa scroll wheel — positif untuk scroll ke atas, negatif untuk scroll ke bawah

Kode tombol umum:

KodeKonstantaDeskripsi
0x0002MOUSEEVENTF_LEFTDOWNTekan tombol kiri
0x0004MOUSEEVENTF_LEFTUPLepas tombol kiri
0x0008MOUSEEVENTF_RIGHTDOWNTekan tombol kanan
0x0010MOUSEEVENTF_RIGHTUPLepas tombol kanan
0x0020MOUSEEVENTF_MIDDLEDOWNTekan tombol tengah
0x0040MOUSEEVENTF_MIDDLEUPLepas tombol tengah
0x0800MOUSEEVENTF_WHEELScroll vertikal
0x01000MOUSEEVENTF_HWHEELScroll horizontal
0x0080MOUSEEVENTF_XDOWNTekan X-button (memerlukan opsi XButton)
0x0100MOUSEEVENTF_XUPLepas X-button (memerlukan opsi 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 });

Merutekan peristiwa mouse kustom melalui sistem makro SignalRGB. Skrip makro dengan pemicu onMouse dapat mencocokkan peristiwa ini. Tidak menginjeksi input mouse tingkat OS apa pun.

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

Untuk perangkat nirkabel yang melaporkan status baterai. Setelah menambahkan feature, perbarui level baterai dan status kapan pun perangkat Anda melaporkannya.

export function Initialize() {
device.addFeature("battery");
}
MetodeDeskripsi
battery.setBatteryLevel(level)Atur persentase baterai (0–100)
battery.setBatteryState(state)Atur status pengisian menggunakan konstanta status

Konstanta status (akses melalui battery.<name>):

KonstantaDeskripsi
battery.disabledPelaporan baterai dinonaktifkan
battery.unknownStatus belum diketahui
battery.drainingBerjalan dengan baterai
battery.chargingMengisi daya melalui kabel
battery.fullChargingMengisi daya dan sudah penuh
battery.fullPenuh, tidak mengisi daya
battery.wirelessChargingPengisian daya nirkabel

Properti-properti ini mencerminkan nilai terakhir yang diatur:

PropertiTipeDeskripsi
battery.batteryLevelNumberLevel saat ini (0–100)
battery.batteryStateNumberNilai status saat ini
battery.stateStringStringLabel status yang dapat dibaca manusia
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
);
}
}