Compiler le firmware depuis les sources
Si vous souhaitez apporter des modifications au keymap d’un clavier ou ajouter la prise en charge de nouveaux claviers au protocole SignalRGB QMK, vous devrez le compiler depuis les sources.
Étapes pour compiler depuis les sources :
- Téléchargez QMK MSYS ici et installez-le.

Ouvrez QMK MSYS et effectuez un git clone du fork / source QMK dont vous avez besoin. (Il peut s’agir de QMK Mainline _ou de SonixQMK).
Vous devrez ensuite ajouter le sous-module du protocole SignalRGB au fork source contre lequel vous compilez :
// cd vers votre fork source que vous allez compiler dans le terminal (QMK_MSYS, bash, etc)git submodule add https://github.com/SRGBmods/QMK_Community_Module modules/signalrgbgit submodule update --init --recursive- Collez les deux commandes ci-dessus dans la fenêtre du terminal (QMK_MSYS, bash, etc).
- Vous devrez ajouter un fichier keymap.json avec le contenu suivant dans le répertoire spécifique à la marque de votre clavier :
{ "modules": [ "signalrgb" ]}REMARQUE : REMPLACEZ KEYBOARD BRAND PAR LA MARQUE DE VOTRE CLAVIER, MODEL PAR LE MODÈLE DE CLAVIER, ET REMPLACEZ KM PAR LE TYPE DE KEYMAP (default / via / keychron / etc).
TYPES DE KEYMAP :
- default : C’est le keymap que vous utiliserez si vous ne compilez pas pour VIA
- via : C’est le keymap que vous utilisez si vous compilez pour VIA (Essayez ceci en premier — vous pouvez trouver votre keymap via ici)

- Si la compilation du firmware échoue, rejoignez le Discord et demandez de l’aide dans les canaux QMK.
Maintenant que vous avez compilé votre firmware, vous devrez le flasher sur votre clavier.
- Vous devrez trouver les instructions de flashage pour votre clavier en ligne, car les instructions varient d’un clavier à l’autre.
- Après avoir flashé votre clavier, vous devez modifier le plugin de clavier ci-dessous pour faire fonctionner SignalRGB avec votre clavier.
Dossier avec des exemples de plugins QMK
- Après avoir téléchargé le plugin de clavier ci-dessus, ouvrez-le dans un éditeur de texte.
export function Name() { return "QMK Keyboard"; }export function Version() { return "X.X.X"; }export function VendorId() { return 0x0000; }export function ProductId() { return 0x0000; }export function Publisher() { return "WhirlwindFX"; }export function Size() { return [14, 5]; }export function DefaultPosition(){return [10, 100]; }export function DefaultScale(){return 8.0;}/* globalshutdownColor:readonlyLightingMode:readonlyforcedColor:readonly*/export function ControllableParameters(){ return [ {"property":"shutdownColor", "group":"lighting", "label":"Shutdown Color", "min":"0", "max":"360", "type":"color", "default":"009bde"}, {"property":"LightingMode", "group":"lighting", "label":"Lighting Mode", "type":"combobox", "values":["Canvas", "Forced"], "default":"Canvas"}, {"property":"forcedColor", "group":"lighting", "label":"Forced Color", "min":"0", "max":"360", "type":"color", "default":"009bde"}, ];}- Après avoir ouvert le plugin de clavier, un écran similaire à celui ci-dessus s’affichera.
- Vous devrez remplir certains de ces champs, en commençant par le champ Name.
- Le champ name doit être rempli avec le nom du clavier pour lequel vous avez développé le firmware.
export function Name() { return "Massdrop CTRL QMK Keyboard"; }- Ensuite, nous devons renseigner le VendorId pour le clavier.
- Pour trouver le VendorId du clavier, ouvrez SignalRGB.
- Cliquez ensuite sur l’icône de paramètres en bas à gauche.

Cliquez ensuite sur Device Information.

Trouvez votre clavier et notez son VendorID et son ProductID.


Remplissez maintenant les champs VendorId et ProductId avec ces valeurs.
export function Name() { return "Massdrop CTRL QMK Keyboard"; }export function VendorId() { return 0x04d8; }export function ProductId() { return 0xEED2; }- Le champ suivant à remplir est le champ Publisher. Dans le champ publisher, vous pouvez indiquer votre nom, votre pseudonyme ou votre identifiant.
export function Name() { return "Massdrop CTRL QMK Keyboard"; }export function VendorId() { return 0x04d8; }export function ProductId() { return 0xEED2; }export function Publisher() { return "WhirlwindFX"; }- Maintenant que les champs sont remplis, nous passons aux tableaux.
Il y a 3 tableaux à modifier : vKeys, vKeynames et vKeyPositions

- Le tableau vKeys associe chaque touche du clavier à sa position dans les données RGB envoyées au clavier.
- Le tableau vKeyNames nous indique quelle touche correspond à chaque vKey et vKeyPosition.
- Le tableau vKeyPositions indique à SignalRGB où se trouve chaque touche sur le clavier en termes de position.
- En premier, modifiez le tableau vKeyNames pour qu’il reflète votre clavier.
- Cela signifie que vous devez réorganiser les vKeyNames pour qu’ils correspondent à votre clavier.
- Dans notre cas, nous avons dû supprimer des touches et réorganiser les restantes, car notre carte est une carte TKL.

Mettez ensuite à jour le tableau vKeyPositions de la même manière que le tableau vKeyNames.

Enfin, mettez à jour le tableau vKeys pour qu’il corresponde aux tableaux vKeyNames et vKeysPositions.

- Maintenant, enregistrez votre fichier plugin dans %userprofile%/Documents/WhirlwindFX/plugins, puis redémarrez Signal.
- Votre clavier devrait commencer à s’allumer et à réagir avec SignalRGB.
Si le clavier ne s’allume pas ou ne réagit pas correctement à SignalRGB :
Section intitulée « Si le clavier ne s’allume pas ou ne réagit pas correctement à SignalRGB : »- Accédez à la page Devices dans SignalRGB.

- Ensuite, allez sur votre clavier et cliquez sur l’icône de paramètres.

- Cliquez ensuite sur le bouton Show Console.

- Un Device Total LED Count devrait apparaître dans la console. Comparez ce Device Total LED Count au nombre de LEDs que vous avez assignées.
- Dans notre cas, il y a 119 LEDs au total.
Si le nombre de LEDs correspond au nombre de vKeys que vous avez :
Section intitulée « Si le nombre de LEDs correspond au nombre de vKeys que vous avez : »- Assurez-vous que le champ size de votre plugin est supérieur de 1 dans chaque direction par rapport à votre coordonnée LED la plus élevée :
- Dans notre cas, la LED la plus éloignée est à la position [17,6], donc notre champ Size doit être [18,7].
export function Size() { return [18, 7]; }Si le nombre de LEDs ne correspond pas au nombre de vKeys que vous avez :
Section intitulée « Si le nombre de LEDs ne correspond pas au nombre de vKeys que vous avez : »- Vous devrez ajouter des vKeys, vKeyPositions et vKeyNames pour correspondre au nombre total de LEDs.
- Dans notre cas, l’appareil avait 119 LEDs, nous avons donc dû ajouter 32 LEDs pour le rétroéclairage du clavier.



- Si le nombre de vKeys correspond au nombre total de LEDs et que l’appareil est correctement dimensionné, mais que les LEDs sont mal mappées :
- Rejoignez le Discord et demandez de l’aide dans les canaux QMK.
Comment corriger le clignotement des LEDs indicatrices (CAPSLOCK, NUMLOCK, SCROLL-LOCK) lorsque SignalRGB et la touche sont actifs.
Section intitulée « Comment corriger le clignotement des LEDs indicatrices (CAPSLOCK, NUMLOCK, SCROLL-LOCK) lorsque SignalRGB et la touche sont actifs. »Cette procédure est un peu complexe car elle nécessite une connaissance préalable des valeurs d’index de vos indicateurs (CAPS, NUM, SCROLL). (Cela peut généralement être trouvé dans le sous-type d’appareil ansi/iso ou directement dans <keyboard_name.c> — cherchez g_led_config et associez visuellement l’index à la touche correspondante, ou une fois que votre plugin SignalRGB fonctionne, vous pouvez obtenir l’ID à partir de là et recompiler avec cette modification !)

Une fois que vous connaissez la ou les valeurs ci-dessus, une légère modification est nécessaire dans signalrgb.c ou via.c selon votre build de firmware. Remplacez CAPSLOCK_LED_INDEX_, NUM_LOCK_LED_INDEX ou SCROLL_LOCK_LED_INDEX par les valeurs d’index de votre clavier.
Donc si l’index CAPS_LOCK est 61, cette ligne :
if ((index + i) == CAPS_LOCK_LED_INDEX && host_keyboard_led_state().caps_lock) {Devient cette ligne :
if ((index + i) == 61 && hostkeyboard led_state().caps_lock) {Exemple de code complet (Remplace entièrement cette fonction spécifique “led_streaming”) :
void led_streaming(uint8_t *data) //Stream data from HID Packets to Keyboard.{ uint8_t index = data[1]; uint8_t numberofleds = data[2];
if(numberofleds >= 10) { packet[1] = DEVICE_ERROR_LEDS; raw_hid_send(packet,32); return; }
for (uint8_t i = 0; i < numberofleds; i++) { uint8_t offset = (i * 3) + 3; uint8_t r = data[offset]; uint8_t g = data[offset + 1]; uint8_t b = data[offset + 2];
/* ONLY USE ONE OF THESE */ /* Remove the // from the beginning of the line you wish to use and update the INDEX accordingly */
/* This is for all three CAPS, NUM, and SCROLL LOCKS */ // if ( ((index + i) == CAPS_LOCK_LED_INDEX && host_keyboard_led_state().caps_lock) || ((index + i) == NUM_LOCK_LED_INDEX && host_keyboard_led_state().num_lock) || ((index + i) == SCROLL_LOCK_LED_INDEX && host_keyboard_led_state().scroll_lock)) {
/* This is for CAPS and NUM LOCK */ // if ( ((index + i) == CAPS_LOCK_LED_INDEX && host_keyboard_led_state().caps_lock) || ((index + i) == NUM_LOCK_LED_INDEX && host_keyboard_led_state().num_lock)) {
/* This is for CAPS LOCK */ // if ((index + i) == CAPS_LOCK_LED_INDEX && host_keyboard_led_state().caps_lock) {
/* This is for NUM LOCK */ // if ((index + i) == NUM_LOCK_LED_INDEX && host_keyboard_led_state().num_lock) {
/* ONLY USE ONE OF THE ABOVE */
rgb_matrix_set_color(index + i, 255, 255, 255); } else { rgb_matrix_set_color(index + i, r, g, b); } }}** Rejoignez le Discord et demandez de l’aide dans le canal QMK custom-builds si vous rencontrez des problèmes avec les instructions ci-dessus ! **