Bỏ qua để đến nội dung

Modules và tính năng

Các plugin có thể mở rộng khả năng của chúng vượt ra ngoài các lần đọc và ghi USB đơn giản với hai hệ thống: modulestính năng. Hiểu sự khác biệt giữa chúng giúp bạn khám phá những gì có sẵn và sử dụng đúng cơ chế.

ModulesTính năng
Sử dụngimport { x } from "@SignalRGB/name"device.addFeature("name") trong Initialize()
Mục đíchDịch vụ hỗ trợ (mạng, mã hóa, thông tin hệ thống)Khả năng thiết bị (pin, tiêm nhập liệu)
NamespaceTên module được xuất riêngdevice.featureName.*
InstanceMột mỗi pluginCó thể có nhiều

Nhập chúng ở đầu tệp plugin của bạn.

Đường dẫn importMục đích
@SignalRGB/serialGiao tiếp cổng Serial/COM
@SignalRGB/tcpGiao tiếp TCP socket
@SignalRGB/udpGiao tiếp UDP socket
@SignalRGB/base64Mã hóa và giải mã Base64
@SignalRGB/performanceLập hồ sơ hiệu suất và bộ đếm thời gian khung
@SignalRGB/appInfoThông tin phiên bản ứng dụng SignalRGB
@SignalRGB/systeminfoThông tin phần cứng hệ thống
@SignalRGB/permissionsKiểm tra trạng thái quyền người dùng

Trong Giao tiếp nâng cao bạn sẽ tìm thấy các ví dụ sử dụng cho serial, tcpudp.


Gọi device.addFeature("name") trong export Initialize() của bạn. Tính năng tạo ra một đối tượng toàn cục với cùng tên với tính năng đó.

Tên tính năngNamespaceMục đích
"keyboard"keyboardTiêm các lần nhấn phím hoặc chuyển tiếp sự kiện bàn phím đến macro SignalRGB
"mouse"mouseTiêm nhập liệu chuột hoặc chuyển tiếp sự kiện chuột đến macro SignalRGB
"battery"batteryBáo cáo mức và trạng thái pin cho các thiết bị không dây
"dtls"dtlsUDP được mã hóa DTLS với xác thực PSK

Dành cho các plugin đại diện cho thiết bị bàn phím. Cho phép tiêm các lần nhấn phím thực vào OS hoặc kích hoạt các sự kiện có thể kích hoạt macro SignalRGB.

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

Gửi lần nhấn phím thô trực tiếp đến hệ điều hành qua keybd_event. Phím xuất hiện như nhập liệu thực đến tất cả các ứng dụng — hoàn toàn bỏ qua hệ thống macro.

Tham sốKiểuMô tảVí dụ
vkCodeNumberWindows Virtual Key Code0x41 (phím A)
options.releasedBoolean (bắt buộc)true cho Key-Up, false cho Key-Downfalse
keyboard.sendHid(0x41, { released: false }); // Nhấn A
keyboard.sendHid(0x41, { released: true }); // Thả A

Chuyển tiếp sự kiện bàn phím qua hệ thống macro của SignalRGB. Các macro có trigger onKey có thể khớp các sự kiện này. Không tiêm lần nhấn phím thực — chỉ có macro SignalRGB mới thấy sự kiện này.

Hệ thống macro tự động bổ sung sự kiện với trạng thái modifier hiện tại (Ctrl, Shift, Alt, Win) từ bàn phím vật lý trước khi chuyển tiếp.

Tham sốKiểuMô tảVí dụ
eventDataObject hoặc StringDữ liệu sự kiện. Chỉ định key (tên chuỗi) và tùy chọn keyCode (số) để khớp khóa.{ key: "A", keyCode: 0x41 }
eventTypeStringNhãn loại sự kiện"KeyPress"
keyboard.sendEvent({ key: "A", keyCode: 0x41, released: false }, "KeyPress");

Các script macro nhận event.Sender (UID của plugin) và event.SenderType ("Device"), để chúng có thể phân biệt các sự kiện được kích hoạt bởi plugin với các lần nhấn phím phần cứng thực.


Dành cho các plugin đại diện cho chuột hoặc thiết bị trỏ.

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

Gửi sự kiện chuột thô đến OS qua SendInput. Các chuyển động chuột (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) bị chặn vì lý do bảo mật.

Tham sốKiểuMô tả
buttonCodeNumberWindows MOUSEEVENTF_* flag
options.XButtonNumberBắt buộc cho các sự kiện nút X — 1 (X1) hoặc 2 (X2)
options.WheelDeltaNumberBắt buộc cho các sự kiện bánh xe chuột — dương cuộn lên, âm cuộn xuống

Mã nút phổ biến:

Hằng sốMô tả
0x0002MOUSEEVENTF_LEFTDOWNNhấn nút trái
0x0004MOUSEEVENTF_LEFTUPThả nút trái
0x0008MOUSEEVENTF_RIGHTDOWNNhấn nút phải
0x0010MOUSEEVENTF_RIGHTUPThả nút phải
0x0020MOUSEEVENTF_MIDDLEDOWNNhấn nút giữa
0x0040MOUSEEVENTF_MIDDLEUPThả nút giữa
0x0800MOUSEEVENTF_WHEELCuộn dọc
0x01000MOUSEEVENTF_HWHEELCuộn ngang
0x0080MOUSEEVENTF_XDOWNNhấn nút X (yêu cầu tùy chọn XButton)
0x0100MOUSEEVENTF_XUPThả nút X (yêu cầu tùy chọn XButton)
// Click trái
mouse.sendHid(0x0002, {}); // nhấn
mouse.sendHid(0x0004, {}); // thả
// Cuộn lên một bước
mouse.sendHid(0x0800, { WheelDelta: 120 });
// Nhấn nút X1
mouse.sendHid(0x0080, { XButton: 1 });
mouse.sendHid(0x0100, { XButton: 1 });

Chuyển tiếp sự kiện chuột tùy chỉnh qua hệ thống macro của SignalRGB. Các script macro với trigger onMouse có thể khớp các sự kiện này. Không tiêm nhập liệu chuột OS.

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

Dành cho các thiết bị không dây báo cáo trạng thái pin. Sau khi thêm tính năng, hãy cập nhật mức và trạng thái pin khi thiết bị báo cáo.

export function Initialize() {
device.addFeature("battery");
}
Phương thứcMô tả
battery.setBatteryLevel(level)Đặt phần trăm pin (0–100)
battery.setBatteryState(state)Đặt trạng thái sạc sử dụng hằng số trạng thái

Hằng số trạng thái (truy cập qua battery.<name>):

Hằng sốMô tả
battery.disabledBáo cáo pin bị vô hiệu hóa
battery.unknownTrạng thái chưa được biết
battery.drainingĐang chạy bằng pin
battery.chargingĐang sạc qua cáp
battery.fullChargingĐang sạc và đã đầy
battery.fullĐã đầy hoàn toàn, không sạc
battery.wirelessChargingĐang sạc không dây

Các thuộc tính này phản ánh các giá trị được đặt lần cuối:

Thuộc tínhKiểuMô tả
battery.batteryLevelNumberMức hiện tại (0–100)
battery.batteryStateNumberGiá trị trạng thái hiện tại
battery.stateStringStringNhãn trạng thái có thể đọc được
export function Initialize() {
device.addFeature("battery");
}
export function Render() {
// Đọc không chặn — kiểm tra xem thiết bị có gửi báo cáo pin cho khung này không
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
);
}
}