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.
Modules vs Features
Section titled “Modules vs Features”| Modules | Features | |
|---|---|---|
| Cara penggunaan | import { x } from "@SignalRGB/name" | device.addFeature("name") dalam Initialize() |
| Tujuan | Layanan utilitas (jaringan, encoding, info sistem) | Kemampuan perangkat (baterai, injeksi input) |
| Namespace | Nama ekspor modul sendiri | device.featureName.* |
| Instance | Satu per plugin | Dapat memiliki beberapa |
Available Modules
Section titled “Available Modules”Impor ini di bagian atas file plugin Anda.
| Import path | Tujuan |
|---|---|
@SignalRGB/serial | Komunikasi port Serial/COM |
@SignalRGB/tcp | Komunikasi socket TCP |
@SignalRGB/udp | Komunikasi socket UDP |
@SignalRGB/base64 | Encoding dan decoding Base64 |
@SignalRGB/performance | Profiling performa dan timer frame |
@SignalRGB/appInfo | Info versi aplikasi SignalRGB |
@SignalRGB/systeminfo | Informasi hardware sistem |
@SignalRGB/permissions | Periksa status izin pengguna |
Lihat Advanced Communication untuk contoh penggunaan serial, tcp, dan udp.
Available Features
Section titled “Available Features”Panggil device.addFeature("name") dalam ekspor Initialize() Anda. Feature membuat objek global dengan nama yang sama dengan feature tersebut.
| Nama feature | Namespace | Tujuan |
|---|---|---|
"keyboard" | keyboard | Injeksi keystroke atau arahkan peristiwa keyboard ke makro SignalRGB |
"mouse" | mouse | Injeksi input mouse atau arahkan peristiwa mouse ke makro SignalRGB |
"battery" | battery | Laporkan level baterai dan status pengisian untuk perangkat nirkabel |
"dtls" | dtls | UDP terenkripsi DTLS dengan autentikasi PSK |
Keyboard Feature
Section titled “Keyboard Feature”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");}keyboard.sendHid(vkCode, options)
Section titled “keyboard.sendHid(vkCode, options)”Mengirim keystroke mentah langsung ke sistem operasi melalui keybd_event. Tombol muncul sebagai input nyata ke semua aplikasi — ini melewati sistem makro sepenuhnya.
| Parameter | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| vkCode | Number | Kode Windows Virtual Key | 0x41 (tombol A) |
| options.released | Boolean (wajib) | true untuk key-up, false untuk key-down | false |
keyboard.sendHid(0x41, { released: false }); // Press Akeyboard.sendHid(0x41, { released: true }); // Release Akeyboard.sendEvent(eventData, eventType)
Section titled “keyboard.sendEvent(eventData, eventType)”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.
| Parameter | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| eventData | Object atau String | Data peristiwa. Sertakan key (nama string) dan opsional keyCode (number) untuk pencocokan tombol. | { key: "A", keyCode: 0x41 } |
| eventType | String | Label 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.
Mouse Feature
Section titled “Mouse Feature”Untuk plugin yang mewakili perangkat mouse atau pointer.
export function Initialize() { device.addFeature("mouse");}mouse.sendHid(buttonCode, options)
Section titled “mouse.sendHid(buttonCode, options)”Mengirim peristiwa mouse mentah ke OS melalui SendInput. Pergerakan mouse (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) diblokir demi keamanan.
| Parameter | Tipe | Deskripsi |
|---|---|---|
| buttonCode | Number | Flag Windows MOUSEEVENTF_* |
| options.XButton | Number | Diperlukan untuk peristiwa X-button — 1 (X1) atau 2 (X2) |
| options.WheelDelta | Number | Diperlukan untuk peristiwa scroll wheel — positif untuk scroll ke atas, negatif untuk scroll ke bawah |
Kode tombol umum:
| Kode | Konstanta | Deskripsi |
|---|---|---|
0x0002 | MOUSEEVENTF_LEFTDOWN | Tekan tombol kiri |
0x0004 | MOUSEEVENTF_LEFTUP | Lepas tombol kiri |
0x0008 | MOUSEEVENTF_RIGHTDOWN | Tekan tombol kanan |
0x0010 | MOUSEEVENTF_RIGHTUP | Lepas tombol kanan |
0x0020 | MOUSEEVENTF_MIDDLEDOWN | Tekan tombol tengah |
0x0040 | MOUSEEVENTF_MIDDLEUP | Lepas tombol tengah |
0x0800 | MOUSEEVENTF_WHEEL | Scroll vertikal |
0x01000 | MOUSEEVENTF_HWHEEL | Scroll horizontal |
0x0080 | MOUSEEVENTF_XDOWN | Tekan X-button (memerlukan opsi XButton) |
0x0100 | MOUSEEVENTF_XUP | Lepas X-button (memerlukan opsi XButton) |
// Left clickmouse.sendHid(0x0002, {}); // downmouse.sendHid(0x0004, {}); // up
// Scroll up one notchmouse.sendHid(0x0800, { WheelDelta: 120 });
// X1 button pressmouse.sendHid(0x0080, { XButton: 1 });mouse.sendHid(0x0100, { XButton: 1 });mouse.sendEvent(eventData, eventType)
Section titled “mouse.sendEvent(eventData, eventType)”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");Battery Feature
Section titled “Battery Feature”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");}Mengatur Status Baterai
Section titled “Mengatur Status Baterai”| Metode | Deskripsi |
|---|---|
battery.setBatteryLevel(level) | Atur persentase baterai (0–100) |
battery.setBatteryState(state) | Atur status pengisian menggunakan konstanta status |
Konstanta status (akses melalui battery.<name>):
| Konstanta | Deskripsi |
|---|---|
battery.disabled | Pelaporan baterai dinonaktifkan |
battery.unknown | Status belum diketahui |
battery.draining | Berjalan dengan baterai |
battery.charging | Mengisi daya melalui kabel |
battery.fullCharging | Mengisi daya dan sudah penuh |
battery.full | Penuh, tidak mengisi daya |
battery.wirelessCharging | Pengisian daya nirkabel |
Membaca Status Baterai
Section titled “Membaca Status Baterai”Properti-properti ini mencerminkan nilai terakhir yang diatur:
| Properti | Tipe | Deskripsi |
|---|---|---|
battery.batteryLevel | Number | Level saat ini (0–100) |
battery.batteryState | Number | Nilai status saat ini |
battery.stateString | String | Label status yang dapat dibaca manusia |
Contoh Battery
Section titled “Contoh Battery”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 ); }}