Skip to content

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.

ModulCiri
Penggunaanimport { x } from "@SignalRGB/name"device.addFeature("name") dalam Initialize()
TujuanPerkhidmatan pembantu (rangkaian, pengekodan, maklumat sistem)Kemampuan peranti (bateri, suntikan input)
Ruang NamaNama eksport sendiri moduldevice.featureName.*
InstansSatu per pluginBoleh ada berbilang

Import ini di bahagian atas fail plugin Anda.

Laluan ImportTujuan
@SignalRGB/serialKomunikasi bersiri/COM port
@SignalRGB/tcpKomunikasi soket TCP
@SignalRGB/udpKomunikasi soket UDP
@SignalRGB/base64Pengekodan dan penyahkodan Base64
@SignalRGB/performancePemprofilan prestasi dan pemasa frame
@SignalRGB/appInfoMaklumat versi aplikasi SignalRGB
@SignalRGB/systeminfoMaklumat perkakasan sistem
@SignalRGB/permissionsSemak status kebenaran pengguna

Lihat Komunikasi Lanjutan untuk contoh penggunaan serial, tcp, dan udp.


Panggil device.addFeature("name") dalam eksport Initialize() Anda. Ciri tersebut mencipta objek global dengan nama yang sama dengan ciri.

Nama CiriRuang NamaTujuan
"keyboard"keyboardSuntik ketukan kekunci atau hadkan peristiwa papan kekunci ke makro SignalRGB
"mouse"mouseSuntik input tetikus atau hadkan peristiwa tetikus ke makro SignalRGB
"battery"batteryLapor tahap bateri dan status pengecasan untuk peranti wayarles
"dtls"dtlsUDP terenkripsi DTLS dengan pengesahan PSK

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");
}

Menghantar ketukan kekunci mentah terus ke sistem operasi melalui keybd_event. Kekunci muncul sebagai input sebenar untuk semua aplikasi — ia memintas sistem makro sepenuhnya.

ParameterJenisKeteranganContoh
vkCodeNumberKod Kekunci Maya Windows0x41 (Kekunci A)
options.releasedBoolean (diperlukan)true untuk Key-Up, false untuk Key-Downfalse
keyboard.sendHid(0x41, { released: false }); // Tekan A
keyboard.sendHid(0x41, { released: true }); // Lepaskan A

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.

ParameterJenisKeteranganContoh
eventDataObject atau StringData peristiwa. Nyatakan key (nama String) dan pilihan keyCode (nombor) untuk padanan kekunci.{ key: "A", keyCode: 0x41 }
eventTypeStringLabel 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.


Untuk plugin yang mewakili peranti tetikus atau penuding.

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

Menghantar peristiwa tetikus mentah ke OS melalui SendInput. Pergerakan tetikus (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) disekat atas sebab keselamatan.

ParameterJenisKeterangan
buttonCodeNumberFlag MOUSEEVENTF_* Windows
options.XButtonNumberDiperlukan untuk peristiwa Kekunci X — 1 (X1) atau 2 (X2)
options.WheelDeltaNumberDiperlukan untuk peristiwa roda tetikus — positif tatal naik, negatif tatal turun

Kod butang biasa:

KodPemalarKeterangan
0x0002MOUSEEVENTF_LEFTDOWNTekan butang kiri
0x0004MOUSEEVENTF_LEFTUPLepaskan butang kiri
0x0008MOUSEEVENTF_RIGHTDOWNTekan butang kanan
0x0010MOUSEEVENTF_RIGHTUPLepaskan butang kanan
0x0020MOUSEEVENTF_MIDDLEDOWNTekan butang tengah
0x0040MOUSEEVENTF_MIDDLEUPLepaskan butang tengah
0x0800MOUSEEVENTF_WHEELTatal menegak
0x01000MOUSEEVENTF_HWHEELTatal mendatar
0x0080MOUSEEVENTF_XDOWNTekan Kekunci X (memerlukan pilihan XButton)
0x0100MOUSEEVENTF_XUPLepaskan Kekunci X (memerlukan pilihan XButton)
// Klik kiri
mouse.sendHid(0x0002, {}); // ditekan
mouse.sendHid(0x0004, {}); // dilepaskan
// Tatal satu langkah ke atas
mouse.sendHid(0x0800, { WheelDelta: 120 });
// Tekan Kekunci X1
mouse.sendHid(0x0080, { XButton: 1 });
mouse.sendHid(0x0100, { XButton: 1 });

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");

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");
}
KaedahKeterangan
battery.setBatteryLevel(level)Tetapkan peratusan bateri (0–100)
battery.setBatteryState(state)Tetapkan status pengecasan dengan pemalar status

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

PemalarKeterangan
battery.disabledPelaporan bateri dinyahaktifkan
battery.unknownStatus masih tidak diketahui
battery.drainingBerjalan pada bateri
battery.chargingMengecas melalui kabel
battery.fullChargingMengecas dan sudah penuh
battery.fullCaj penuh, tidak mengecas
battery.wirelessChargingPengecasan wayarles

Sifat-sifat ini mencerminkan nilai terakhir yang ditetapkan:

SifatJenisKeterangan
battery.batteryLevelNumberTahap semasa (0–100)
battery.batteryStateNumberNilai status semasa
battery.stateStringStringLabel status yang boleh dibaca
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
);
}
}