ข้ามไปยังเนื้อหา

โมดูลและฟีเจอร์

ปลั๊กอินสามารถขยายความสามารถให้มากกว่าการอ่านและเขียน USB พื้นฐานได้ด้วยสองระบบ ได้แก่ โมดูล (Modules) และ ฟีเจอร์ (Features) การเข้าใจความแตกต่างระหว่างทั้งสองจะช่วยให้คุณรู้ว่ามีอะไรให้ใช้บ้าง และเลือกใช้กลไกที่เหมาะกับงาน

โมดูลฟีเจอร์
วิธีใช้งานimport { x } from "@SignalRGB/name"device.addFeature("name") ใน Initialize()
วัตถุประสงค์บริการยูทิลิตี (เครือข่าย การเข้ารหัส ข้อมูลระบบ)ความสามารถของอุปกรณ์ (แบตเตอรี่ การจำลองอินพุต)
เนมสเปซชื่อที่โมดูล export ออกมาเองdevice.featureName.*
อินสแตนซ์หนึ่งตัวต่อปลั๊กอินมีได้หลายตัว

นำเข้าโมดูลเหล่านี้ที่ส่วนบนสุดของไฟล์ปลั๊กอิน

พาธการนำเข้าวัตถุประสงค์
@SignalRGB/serialการสื่อสารผ่านพอร์ตซีเรียล/COM
@SignalRGB/tcpการสื่อสารผ่านซ็อกเก็ต TCP
@SignalRGB/udpการสื่อสารผ่านซ็อกเก็ต UDP
@SignalRGB/base64การเข้ารหัสและถอดรหัส Base64
@SignalRGB/performanceการโปรไฟล์ประสิทธิภาพและตัวจับเวลาเฟรม
@SignalRGB/appInfoข้อมูลเวอร์ชันของแอปพลิเคชัน SignalRGB
@SignalRGB/systeminfoข้อมูลฮาร์ดแวร์ของระบบ
@SignalRGB/permissionsตรวจสอบสถานะสิทธิ์ของผู้ใช้

ดู การสื่อสารขั้นสูง สำหรับตัวอย่างการใช้งาน serial, tcp และ udp


เรียก device.addFeature("name") ใน export Initialize() ของคุณ ฟีเจอร์จะสร้างอ็อบเจกต์ส่วนกลางที่มีชื่อเดียวกับฟีเจอร์

ชื่อฟีเจอร์เนมสเปซวัตถุประสงค์
"keyboard"keyboardจำลองการกดแป้นพิมพ์หรือส่งอีเวนต์คีย์บอร์ดไปยังมาโครของ SignalRGB
"mouse"mouseจำลองอินพุตเมาส์หรือส่งอีเวนต์เมาส์ไปยังมาโครของ SignalRGB
"battery"batteryรายงานระดับแบตเตอรี่และสถานะการชาร์จสำหรับอุปกรณ์ไร้สาย
"dtls"dtlsUDP ที่เข้ารหัสด้วย DTLS พร้อมการยืนยันตัวตนแบบ PSK

สำหรับปลั๊กอินที่เป็นตัวแทนของอุปกรณ์คีย์บอร์ด ช่วยให้คุณจำลองการกดแป้นพิมพ์จริงเข้าสู่ระบบปฏิบัติการ หรือส่งอีเวนต์ที่สามารถเรียกใช้มาโครของ SignalRGB ได้

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

ส่งการกดแป้นพิมพ์แบบ raw ไปยังระบบปฏิบัติการโดยตรงผ่าน keybd_event ปุ่มนั้นจะปรากฏเป็นอินพุตจริงสำหรับทุกแอปพลิเคชัน — โดยข้ามระบบมาโครไปทั้งหมด

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
vkCodeNumberรหัส Virtual Key ของ Windows0x41 (ปุ่ม A)
options.releasedBoolean (จำเป็น)true สำหรับการปล่อยปุ่ม, false สำหรับการกดปุ่มfalse
keyboard.sendHid(0x41, { released: false }); // Press A
keyboard.sendHid(0x41, { released: true }); // Release A

ส่งอีเวนต์คีย์บอร์ดผ่านระบบมาโครของ SignalRGB มาโครที่มีทริกเกอร์ onKey สามารถจับคู่กับอีเวนต์เหล่านี้ได้ ไม่ได้จำลองการกดแป้นพิมพ์จริง — มีเพียงมาโครของ SignalRGB เท่านั้นที่เห็นอีเวนต์นี้

ระบบมาโครจะเพิ่มข้อมูลสถานะปุ่มตัวปรับแต่งแบบเรียลไทม์ (Ctrl, Shift, Alt, Win) จากคีย์บอร์ดจริงลงในอีเวนต์โดยอัตโนมัติก่อนส่งต่อ

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
eventDataObject หรือ Stringข้อมูลอีเวนต์ ให้ใส่ key (ชื่อสตริง) และ keyCode (ตัวเลข) ซึ่งเป็นตัวเลือก สำหรับการจับคู่ปุ่ม{ key: "A", keyCode: 0x41 }
eventTypeStringป้ายกำกับประเภทอีเวนต์"KeyPress"
keyboard.sendEvent({ key: "A", keyCode: 0x41, released: false }, "KeyPress");

สคริปต์มาโครจะได้รับ event.Sender (UID ของปลั๊กอิน) และ event.SenderType ("Device") จึงสามารถแยกแยะอีเวนต์ที่มาจากปลั๊กอินออกจากการกดแป้นพิมพ์จากฮาร์ดแวร์จริงได้


สำหรับปลั๊กอินที่เป็นตัวแทนของเมาส์หรืออุปกรณ์ชี้ตำแหน่ง

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

ส่งอีเวนต์เมาส์แบบ raw ไปยังระบบปฏิบัติการผ่าน SendInput การเคลื่อนที่ของเมาส์ (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) จะถูกบล็อกเพื่อความปลอดภัย

พารามิเตอร์ชนิดคำอธิบาย
buttonCodeNumberแฟล็ก MOUSEEVENTF_* ของ Windows
options.XButtonNumberจำเป็นสำหรับอีเวนต์ปุ่ม X — 1 (X1) หรือ 2 (X2)
options.WheelDeltaNumberจำเป็นสำหรับอีเวนต์ลูกกลิ้ง — ค่าบวกเลื่อนขึ้น ค่าลบเลื่อนลง

รหัสปุ่มที่ใช้บ่อย:

รหัสค่าคงที่คำอธิบาย
0x0002MOUSEEVENTF_LEFTDOWNกดปุ่มซ้าย
0x0004MOUSEEVENTF_LEFTUPปล่อยปุ่มซ้าย
0x0008MOUSEEVENTF_RIGHTDOWNกดปุ่มขวา
0x0010MOUSEEVENTF_RIGHTUPปล่อยปุ่มขวา
0x0020MOUSEEVENTF_MIDDLEDOWNกดปุ่มกลาง
0x0040MOUSEEVENTF_MIDDLEUPปล่อยปุ่มกลาง
0x0800MOUSEEVENTF_WHEELเลื่อนแนวตั้ง
0x01000MOUSEEVENTF_HWHEELเลื่อนแนวนอน
0x0080MOUSEEVENTF_XDOWNกดปุ่ม X (ต้องใช้ตัวเลือก XButton)
0x0100MOUSEEVENTF_XUPปล่อยปุ่ม X (ต้องใช้ตัวเลือก 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 });

ส่งอีเวนต์เมาส์แบบกำหนดเองผ่านระบบมาโครของ SignalRGB สคริปต์มาโครที่มีทริกเกอร์ onMouse สามารถจับคู่กับอีเวนต์เหล่านี้ได้ ไม่ได้จำลองอินพุตเมาส์ใด ๆ ในระดับระบบปฏิบัติการ

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

สำหรับอุปกรณ์ไร้สายที่รายงานสถานะแบตเตอรี่ หลังจากเพิ่มฟีเจอร์แล้ว ให้อัปเดตระดับและสถานะแบตเตอรี่ทุกครั้งที่อุปกรณ์รายงานค่าเหล่านี้

export function Initialize() {
device.addFeature("battery");
}
เมธอดคำอธิบาย
battery.setBatteryLevel(level)ตั้งค่าเปอร์เซ็นต์แบตเตอรี่ (0–100)
battery.setBatteryState(state)ตั้งค่าสถานะการชาร์จโดยใช้ค่าคงที่ของสถานะ

ค่าคงที่ของสถานะ (เข้าถึงผ่าน battery.<name>):

ค่าคงที่คำอธิบาย
battery.disabledปิดใช้งานการรายงานแบตเตอรี่
battery.unknownยังไม่ทราบสถานะ
battery.drainingกำลังใช้พลังงานจากแบตเตอรี่
battery.chargingกำลังชาร์จผ่านสาย
battery.fullChargingกำลังชาร์จและเต็มแล้ว
battery.fullชาร์จเต็ม ไม่ได้ชาร์จอยู่
battery.wirelessChargingกำลังชาร์จแบบไร้สาย

พร็อพเพอร์ตีเหล่านี้สะท้อนค่าล่าสุดที่ตั้งไว้:

พร็อพเพอร์ตีชนิดคำอธิบาย
battery.batteryLevelNumberระดับปัจจุบัน (0–100)
battery.batteryStateNumberค่าสถานะปัจจุบัน
battery.stateStringStringป้ายกำกับสถานะที่มนุษย์อ่านได้
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
);
}
}