تخطَّ إلى المحتوى

الوحدات والميزات

يمكن للإضافات توسيع قدراتها إلى ما هو أبعد من عمليات القراءة والكتابة الأساسية عبر USB باستخدام نظامين: الوحدات (Modules) والميزات (Features). يساعدك فهم الفرق بينهما على اكتشاف ما هو متاح واستخدام الآلية المناسبة للمهمة.

الوحداتالميزات
طريقة الاستخدامimport { x } from "@SignalRGB/name"device.addFeature("name") داخل Initialize()
الغرضخدمات مساعدة (الشبكات، الترميز، معلومات النظام)قدرات الجهاز (البطارية، حقن الإدخال)
مساحة الأسماءالأسماء المُصدَّرة الخاصة بالوحدة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") داخل التصدير Initialize(). تُنشئ الميزة كائنًا عامًا بالاسم نفسه للميزة.

اسم الميزةمساحة الأسماءالغرض
"keyboard"keyboardحقن ضغطات المفاتيح أو توجيه أحداث لوحة المفاتيح إلى وحدات الماكرو في SignalRGB
"mouse"mouseحقن إدخال الماوس أو توجيه أحداث الماوس إلى وحدات الماكرو في SignalRGB
"battery"batteryالإبلاغ عن مستوى البطارية وحالة الشحن للأجهزة اللاسلكية
"dtls"dtlsUDP مشفّر بتقنية DTLS مع مصادقة PSK

للإضافات التي تمثل أجهزة لوحات المفاتيح. تتيح لك حقن ضغطات مفاتيح حقيقية في نظام التشغيل أو إطلاق أحداث يمكنها تشغيل وحدات الماكرو في SignalRGB.

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

ترسل ضغطة مفتاح خام مباشرة إلى نظام التشغيل عبر keybd_event. يظهر المفتاح كإدخال حقيقي لجميع التطبيقات — ويتجاوز نظام الماكرو بالكامل.

المعاملالنوعالوصفمثال
vkCodeNumberرمز المفتاح الافتراضي في 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");
}

ترسل حدث ماوس خام إلى نظام التشغيل عبر 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
);
}
}