Modules et fonctionnalités
Les plugins peuvent étendre leurs capacités au-delà des lectures et écritures USB de base grâce à deux systèmes : les Modules et les Fonctionnalités. Comprendre la différence entre eux vous aide à découvrir ce qui est disponible et à utiliser le bon mécanisme.
Modules vs Fonctionnalités
Section intitulée « Modules vs Fonctionnalités »| Modules | Fonctionnalités | |
|---|---|---|
| Utilisation | import { x } from "@SignalRGB/name" | device.addFeature("name") dans Initialize() |
| Objectif | Services utilitaires (réseau, encodage, infos système) | Capacités de l’appareil (batterie, injection d’entrée) |
| Espace de noms | Noms exportés propres au module | device.featureName.* |
| Instances | Une par plugin | Peut en avoir plusieurs |
Modules disponibles
Section intitulée « Modules disponibles »Importez-les en haut de votre fichier plugin.
| Chemin d’import | Objectif |
|---|---|
@SignalRGB/serial | Communication série/COM port |
@SignalRGB/tcp | Communication socket TCP |
@SignalRGB/udp | Communication socket UDP |
@SignalRGB/base64 | Encodage et décodage Base64 |
@SignalRGB/performance | Profilage de performance et minuteries de trame |
@SignalRGB/appInfo | Informations sur la version de l’application SignalRGB |
@SignalRGB/systeminfo | Informations matérielles du système |
@SignalRGB/permissions | Vérifier l’état des permissions utilisateur |
Voir Communication avancée pour des exemples d’utilisation de serial, tcp et udp. |
Fonctionnalités disponibles
Section intitulée « Fonctionnalités disponibles »Appelez device.addFeature("name") dans votre export Initialize(). La fonctionnalité crée un objet global portant le même nom que la fonctionnalité.
| Nom de fonctionnalité | Espace de noms | Objectif |
|---|---|---|
"keyboard" | keyboard | Injecter des frappes ou router des événements clavier vers les macros SignalRGB |
"mouse" | mouse | Injecter des entrées souris ou router des événements souris vers les macros SignalRGB |
"battery" | battery | Rapporter le niveau de batterie et l’état de charge pour les appareils sans fil |
"dtls" | dtls | UDP chiffré DTLS avec authentification PSK |
Fonctionnalité clavier
Section intitulée « Fonctionnalité clavier »Pour les plugins qui représentent des appareils clavier. Permet d’injecter de vraies frappes dans l’OS ou de déclencher des événements pouvant activer les macros SignalRGB.
export function Initialize() { device.addFeature("keyboard");}keyboard.sendHid(vkCode, options)
Section intitulée « keyboard.sendHid(vkCode, options) »Envoie une frappe brute directement au système d’exploitation via keybd_event. La touche apparaît comme une vraie entrée pour toutes les applications — elle contourne entièrement le système de macros.
| Paramètre | Type | Description | Exemple |
|---|---|---|---|
| vkCode | Number | Code de touche virtuelle Windows | 0x41 (touche A) |
| options.released | Boolean (requis) | true pour key-up, false pour key-down | false |
keyboard.sendHid(0x41, { released: false }); // Appuyer sur Akeyboard.sendHid(0x41, { released: true }); // Relâcher Akeyboard.sendEvent(eventData, eventType)
Section intitulée « keyboard.sendEvent(eventData, eventType) »Route un événement clavier à travers le système de macros SignalRGB. Les macros avec un déclencheur onKey peuvent correspondre à ces événements. N’injecte pas de vraie frappe — seules les macros SignalRGB voient cet événement.
Le système de macros enrichit automatiquement l’événement avec l’état des modificateurs actifs (Ctrl, Maj, Alt, Win) depuis le clavier physique avant de le distribuer.
| Paramètre | Type | Description | Exemple |
|---|---|---|---|
| eventData | Object ou String | Données d’événement. Incluez key (nom en string) et optionnellement keyCode (nombre) pour la correspondance de touche. | { key: "A", keyCode: 0x41 } |
| eventType | String | Label du type d’événement | "KeyPress" |
keyboard.sendEvent({ key: "A", keyCode: 0x41, released: false }, "KeyPress");Les scripts de macro reçoivent event.Sender (l’UID du plugin) et event.SenderType ("Device"), afin qu’ils puissent distinguer les événements provenant du plugin des vraies frappes matérielles.
Fonctionnalité souris
Section intitulée « Fonctionnalité souris »Pour les plugins qui représentent des appareils souris ou pointeurs.
export function Initialize() { device.addFeature("mouse");}mouse.sendHid(buttonCode, options)
Section intitulée « mouse.sendHid(buttonCode, options) »Envoie un événement souris brut à l’OS via SendInput. Les mouvements de souris (MOUSEEVENTF_MOVE, MOUSEEVENTF_ABSOLUTE) sont bloqués pour des raisons de sécurité.
| Paramètre | Type | Description |
|---|---|---|
| buttonCode | Number | Flag Windows MOUSEEVENTF_* |
| options.XButton | Number | Requis pour les événements bouton X — 1 (X1) ou 2 (X2) |
| options.WheelDelta | Number | Requis pour les événements molette — positif fait défiler vers le haut, négatif vers le bas |
Codes de bouton courants :
| Code | Constante | Description |
|---|---|---|
0x0002 | MOUSEEVENTF_LEFTDOWN | Appui bouton gauche |
0x0004 | MOUSEEVENTF_LEFTUP | Relâchement bouton gauche |
0x0008 | MOUSEEVENTF_RIGHTDOWN | Appui bouton droit |
0x0010 | MOUSEEVENTF_RIGHTUP | Relâchement bouton droit |
0x0020 | MOUSEEVENTF_MIDDLEDOWN | Appui bouton central |
0x0040 | MOUSEEVENTF_MIDDLEUP | Relâchement bouton central |
0x0800 | MOUSEEVENTF_WHEEL | Défilement vertical |
0x01000 | MOUSEEVENTF_HWHEEL | Défilement horizontal |
0x0080 | MOUSEEVENTF_XDOWN | Appui bouton X (nécessite l’option XButton) |
0x0100 | MOUSEEVENTF_XUP | Relâchement bouton X (nécessite l’option XButton) |
// Clic gauchemouse.sendHid(0x0002, {}); // appuimouse.sendHid(0x0004, {}); // relâchement
// Défiler d'un cran vers le hautmouse.sendHid(0x0800, { WheelDelta: 120 });
// Appui bouton X1mouse.sendHid(0x0080, { XButton: 1 });mouse.sendHid(0x0100, { XButton: 1 });mouse.sendEvent(eventData, eventType)
Section intitulée « mouse.sendEvent(eventData, eventType) »Route un événement souris personnalisé à travers le système de macros SignalRGB. Les scripts de macro avec un déclencheur onMouse peuvent correspondre à ces événements. N’injecte aucune entrée souris au niveau de l’OS.
mouse.sendEvent({ button: "LeftClick" }, "ButtonPress");Fonctionnalité batterie
Section intitulée « Fonctionnalité batterie »Pour les appareils sans fil qui rapportent l’état de la batterie. Après avoir ajouté la fonctionnalité, mettez à jour le niveau et l’état de la batterie chaque fois que votre appareil les signale.
export function Initialize() { device.addFeature("battery");}Définir l’état de la batterie
Section intitulée « Définir l’état de la batterie »| Méthode | Description |
|---|---|
battery.setBatteryLevel(level) | Définir le pourcentage de batterie (0–100) |
battery.setBatteryState(state) | Définir l’état de charge en utilisant une constante d’état |
Constantes d’état (accès via battery.<name>) :
| Constante | Description |
|---|---|
battery.disabled | Rapport de batterie désactivé |
battery.unknown | État pas encore connu |
battery.draining | Fonctionne sur batterie |
battery.charging | En charge via câble |
battery.fullCharging | En charge et déjà plein |
battery.full | Pleine charge, pas en charge |
battery.wirelessCharging | Charge sans fil |
Lire l’état de la batterie
Section intitulée « Lire l’état de la batterie »Ces propriétés reflètent les dernières valeurs définies :
| Propriété | Type | Description |
|---|---|---|
battery.batteryLevel | Number | Niveau actuel (0–100) |
battery.batteryState | Number | Valeur d’état actuelle |
battery.stateString | String | Label d’état lisible |
Exemple batterie
Section intitulée « Exemple batterie »export function Initialize() { device.addFeature("battery");}
export function Render() { // Lecture non bloquante — vérifier si l'appareil a envoyé un rapport de batterie cette trame 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 ); }}