Aller au contenu

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.

ModulesFonctionnalités
Utilisationimport { x } from "@SignalRGB/name"device.addFeature("name") dans Initialize()
ObjectifServices utilitaires (réseau, encodage, infos système)Capacités de l’appareil (batterie, injection d’entrée)
Espace de nomsNoms exportés propres au moduledevice.featureName.*
InstancesUne par pluginPeut en avoir plusieurs

Importez-les en haut de votre fichier plugin.

Chemin d’importObjectif
@SignalRGB/serialCommunication série/COM port
@SignalRGB/tcpCommunication socket TCP
@SignalRGB/udpCommunication socket UDP
@SignalRGB/base64Encodage et décodage Base64
@SignalRGB/performanceProfilage de performance et minuteries de trame
@SignalRGB/appInfoInformations sur la version de l’application SignalRGB
@SignalRGB/systeminfoInformations matérielles du système
@SignalRGB/permissionsVérifier l’état des permissions utilisateur
Voir Communication avancée pour des exemples d’utilisation de serial, tcp et udp.

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 nomsObjectif
"keyboard"keyboardInjecter des frappes ou router des événements clavier vers les macros SignalRGB
"mouse"mouseInjecter des entrées souris ou router des événements souris vers les macros SignalRGB
"battery"batteryRapporter le niveau de batterie et l’état de charge pour les appareils sans fil
"dtls"dtlsUDP chiffré DTLS avec authentification PSK

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

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ètreTypeDescriptionExemple
vkCodeNumberCode de touche virtuelle Windows0x41 (touche A)
options.releasedBoolean (requis)true pour key-up, false pour key-downfalse
keyboard.sendHid(0x41, { released: false }); // Appuyer sur A
keyboard.sendHid(0x41, { released: true }); // Relâcher A

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ètreTypeDescriptionExemple
eventDataObject ou StringDonnées d’événement. Incluez key (nom en string) et optionnellement keyCode (nombre) pour la correspondance de touche.{ key: "A", keyCode: 0x41 }
eventTypeStringLabel 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.


Pour les plugins qui représentent des appareils souris ou pointeurs.

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

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ètreTypeDescription
buttonCodeNumberFlag Windows MOUSEEVENTF_*
options.XButtonNumberRequis pour les événements bouton X — 1 (X1) ou 2 (X2)
options.WheelDeltaNumberRequis pour les événements molette — positif fait défiler vers le haut, négatif vers le bas

Codes de bouton courants :

CodeConstanteDescription
0x0002MOUSEEVENTF_LEFTDOWNAppui bouton gauche
0x0004MOUSEEVENTF_LEFTUPRelâchement bouton gauche
0x0008MOUSEEVENTF_RIGHTDOWNAppui bouton droit
0x0010MOUSEEVENTF_RIGHTUPRelâchement bouton droit
0x0020MOUSEEVENTF_MIDDLEDOWNAppui bouton central
0x0040MOUSEEVENTF_MIDDLEUPRelâchement bouton central
0x0800MOUSEEVENTF_WHEELDéfilement vertical
0x01000MOUSEEVENTF_HWHEELDéfilement horizontal
0x0080MOUSEEVENTF_XDOWNAppui bouton X (nécessite l’option XButton)
0x0100MOUSEEVENTF_XUPRelâchement bouton X (nécessite l’option XButton)
// Clic gauche
mouse.sendHid(0x0002, {}); // appui
mouse.sendHid(0x0004, {}); // relâchement
// Défiler d'un cran vers le haut
mouse.sendHid(0x0800, { WheelDelta: 120 });
// Appui bouton X1
mouse.sendHid(0x0080, { XButton: 1 });
mouse.sendHid(0x0100, { XButton: 1 });

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

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");
}
MéthodeDescription
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>) :

ConstanteDescription
battery.disabledRapport de batterie désactivé
battery.unknownÉtat pas encore connu
battery.drainingFonctionne sur batterie
battery.chargingEn charge via câble
battery.fullChargingEn charge et déjà plein
battery.fullPleine charge, pas en charge
battery.wirelessChargingCharge sans fil

Ces propriétés reflètent les dernières valeurs définies :

PropriétéTypeDescription
battery.batteryLevelNumberNiveau actuel (0–100)
battery.batteryStateNumberValeur d’état actuelle
battery.stateStringStringLabel d’état lisible
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
);
}
}