Modul dan Ciri
Plugin boleh meluaskan kemampuannya melebihi operasi baca dan tulis USB mudah dengan dua sistem: Modul dan Ciri. Memahami perbezaan antara keduanya membantu Anda menemui apa yang tersedia dan menggunakan mekanisme yang betul.
Modul vs. Ciri
Section titled “Modul vs. Ciri”| Modul | Ciri | |
|---|---|---|
| Penggunaan | import { x } from "@SignalRGB/name" | device.addFeature("name") dalam Initialize() |
| Tujuan | Perkhidmatan pembantu (rangkaian, pengekodan, maklumat sistem) | Kemampuan peranti (bateri, suntikan input) |
| Ruang Nama | Nama eksport sendiri modul | device.featureName.* |
| Instans | Satu per plugin | Boleh ada berbilang |
Modul yang Tersedia
Section titled “Modul yang Tersedia”Import ini di bahagian atas fail plugin Anda.
| Laluan Import | Tujuan |
|---|---|
@SignalRGB/serial | Komunikasi bersiri/COM port |
@SignalRGB/tcp | Komunikasi soket TCP |
@SignalRGB/udp | Komunikasi soket UDP |
@SignalRGB/base64 | Pengekodan dan penyahkodan Base64 |
@SignalRGB/performance | Pemprofilan prestasi dan pemasa frame |
@SignalRGB/appInfo | Maklumat versi aplikasi SignalRGB |
@SignalRGB/systeminfo | Maklumat perkakasan sistem |
@SignalRGB/permissions | Semak status kebenaran pengguna |
Lihat Komunikasi Lanjutan untuk contoh penggunaan serial, tcp, dan udp.
Ciri yang Tersedia
Section titled “Ciri yang Tersedia”Panggil device.addFeature("name") dalam eksport Initialize() Anda. Ciri tersebut mencipta objek global dengan nama yang sama dengan ciri.
| Nama Ciri | Ruang Nama | Tujuan |
|---|---|---|
"keyboard" | keyboard | Suntik ketukan kekunci atau hadkan peristiwa papan kekunci ke makro SignalRGB |
"mouse" | mouse | Suntik input tetikus atau hadkan peristiwa tetikus ke makro SignalRGB |
"battery" | battery | Lapor tahap bateri dan status pengecasan untuk peranti wayarles |
"dtls" | dtls | UDP terenkripsi DTLS dengan pengesahan PSK |
Ciri Keyboard
Section titled “Ciri Keyboard”Untuk plugin yang mewakili peranti papan kekunci. Membolehkan suntikan ketukan kekunci sebenar ke OS atau mencetuskan peristiwa yang boleh memicu makro SignalRGB.
export function Initialize() { device.addFeature("keyboard");}keyboard.sendHid(vkCode, options)
Section titled “keyboard.sendHid(vkCode, options)”Menghantar ketukan kekunci mentah terus ke sistem operasi melalui keybd_event. Kekunci muncul sebagai input sebenar untuk semua aplikasi — ia memintas sistem makro sepenuhnya.
| Parameter | Jenis | Keterangan | Contoh |
|---|---|---|---|
| vkCode | Number | Kod Kekunci Maya Windows | 0x41 (Kekunci A) |
| options.released | Boolean (diperlukan) | true untuk Key-Up, false untuk Key-Down | false |
keyboard.sendHid(0x41, { released: false }); // Tekan Akeyboard.sendHid(0x41, { released: true }); // Lepaskan Akeyboard.sendEvent(eventData, eventType)
Section titled “keyboard.sendEvent(eventData, eventType)”Menghantar peristiwa papan kekunci melalui sistem makro SignalRGB. Makro dengan pencetus onKey boleh memadankan peristiwa ini. Tidak menyuntik ketukan kekunci sebenar — hanya makro SignalRGB yang melihat peristiwa ini.
Sistem makro secara automatik memperkayakan peristiwa dengan status pengubah semasa (Ctrl, Shift, Alt, Win) dari papan kekunci fizikal sebelum ia dihantar.
| Parameter | Jenis | Keterangan | Contoh |
|---|---|---|---|
| eventData | Object atau String | Data peristiwa. Nyatakan key (nama String) dan pilihan keyCode (nombor) untuk padanan kekunci. | { key: "A", keyCode: 0x41 } |
| eventType | String | Label jenis peristiwa | "KeyPress" |
keyboard.sendEvent({ key: "A", keyCode: 0x41, released: false }, "KeyPress");Skrip makro menerima event.Sender (UID plugin) dan event.SenderType ("Device"), supaya mereka boleh membezakan peristiwa yang dicetuskan plugin daripada ketukan kekunci perkakasan sebenar.
Ciri Mouse
Section titled “Ciri Mouse”Untuk plugin yang mewakili peranti tetikus atau penuding.
export function Initialize() { device.addFeature("mouse");}mouse.sendHid(buttonCode, options)
Section titled “mouse.sendHid(buttonCode, options)”Menghantar peristiwa tetikus mentah ke OS melalui SendInput. Pergerakan tetikus (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) disekat atas sebab keselamatan.
| Parameter | Jenis | Keterangan |
|---|---|---|
| buttonCode | Number | Flag MOUSEEVENTF_* Windows |
| options.XButton | Number | Diperlukan untuk peristiwa Kekunci X — 1 (X1) atau 2 (X2) |
| options.WheelDelta | Number | Diperlukan untuk peristiwa roda tetikus — positif tatal naik, negatif tatal turun |
Kod butang biasa:
| Kod | Pemalar | Keterangan |
|---|---|---|
0x0002 | MOUSEEVENTF_LEFTDOWN | Tekan butang kiri |
0x0004 | MOUSEEVENTF_LEFTUP | Lepaskan butang kiri |
0x0008 | MOUSEEVENTF_RIGHTDOWN | Tekan butang kanan |
0x0010 | MOUSEEVENTF_RIGHTUP | Lepaskan butang kanan |
0x0020 | MOUSEEVENTF_MIDDLEDOWN | Tekan butang tengah |
0x0040 | MOUSEEVENTF_MIDDLEUP | Lepaskan butang tengah |
0x0800 | MOUSEEVENTF_WHEEL | Tatal menegak |
0x01000 | MOUSEEVENTF_HWHEEL | Tatal mendatar |
0x0080 | MOUSEEVENTF_XDOWN | Tekan Kekunci X (memerlukan pilihan XButton) |
0x0100 | MOUSEEVENTF_XUP | Lepaskan Kekunci X (memerlukan pilihan XButton) |
// Klik kirimouse.sendHid(0x0002, {}); // ditekanmouse.sendHid(0x0004, {}); // dilepaskan
// Tatal satu langkah ke atasmouse.sendHid(0x0800, { WheelDelta: 120 });
// Tekan Kekunci X1mouse.sendHid(0x0080, { XButton: 1 });mouse.sendHid(0x0100, { XButton: 1 });mouse.sendEvent(eventData, eventType)
Section titled “mouse.sendEvent(eventData, eventType)”Menghantar peristiwa tetikus tersuai melalui sistem makro SignalRGB. Skrip makro dengan pencetus onMouse boleh memadankan peristiwa ini. Tidak menyuntik input tetikus OS.
mouse.sendEvent({ button: "LeftClick" }, "ButtonPress");Ciri Battery
Section titled “Ciri Battery”Untuk peranti wayarles yang melaporkan status bateri. Selepas menambah ciri, kemas kini tahap dan status bateri apabila peranti melaporkannya.
export function Initialize() { device.addFeature("battery");}Menetapkan Status Bateri
Section titled “Menetapkan Status Bateri”| Kaedah | Keterangan |
|---|---|
battery.setBatteryLevel(level) | Tetapkan peratusan bateri (0–100) |
battery.setBatteryState(state) | Tetapkan status pengecasan dengan pemalar status |
Pemalar status (akses melalui battery.<name>):
| Pemalar | Keterangan |
|---|---|
battery.disabled | Pelaporan bateri dinyahaktifkan |
battery.unknown | Status masih tidak diketahui |
battery.draining | Berjalan pada bateri |
battery.charging | Mengecas melalui kabel |
battery.fullCharging | Mengecas dan sudah penuh |
battery.full | Caj penuh, tidak mengecas |
battery.wirelessCharging | Pengecasan wayarles |
Membaca Status Bateri
Section titled “Membaca Status Bateri”Sifat-sifat ini mencerminkan nilai terakhir yang ditetapkan:
| Sifat | Jenis | Keterangan |
|---|---|---|
battery.batteryLevel | Number | Tahap semasa (0–100) |
battery.batteryState | Number | Nilai status semasa |
battery.stateString | String | Label status yang boleh dibaca |
Contoh Bateri
Section titled “Contoh Bateri”export function Initialize() { device.addFeature("battery");}
export function Render() { // Pembacaan tidak menyekat — semak sama ada peranti menghantar laporan bateri frame ini 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 ); }}