Byg firmware fra kildekode
Hvis du ønsker at foretage ændringer i et tastaturets tastebindinger eller tilføje understøttelse af nye tastaturer i SignalRGB QMK-protokollen, skal du bygge firmwaren fra kildekode.
Trin til opbygning fra kildekode:
- Download og installer QMK MSYS herfra.

Åbn QMK MSYS og udfør et Git-clone af din nødvendige QMK-fork / kildekode. (Dette kan være QMK Mainline _eller SonixQMK.)
Du skal derefter tilføje SignalRGB-protokol-submodulet til den fork-kildekode du kompilerer imod:
// cd in deinen Quell-Fork, gegen den du kompilieren wirst, im Terminal (QMK_MSYS, bash usw.)git submodule add https://github.com/SRGBmods/QMK_Community_Module modules/signalrgbgit submodule update --init --recursive- Indsæt de to ovenstående kommandoer i terminalvinduet (QMK_MSYS, bash osv.).
- Du skal oprette en keymap.json med følgende indhold i den specifikke tastaturmærke-mappe:
{ "modules": [ "signalrgb" ]}BEMÆRK: ERSTAT “KEYBOARD BRAND” MED DIT TASTATURMÆRKE, “MODEL” MED TASTATURMODELLEN OG “KM” MED KEYMAP-TYPEN (default / via / keychron / osv.).
KEYMAP-TYPER:
- default: Dette er den keymap du bruger, når du ikke kompilerer til VIA.
- via: Dette er den keymap du bruger, når du kompilerer til VIA. (Prøv dette først – din VIA-keymap kan du finde her)

- Hvis firmwaren ikke kan kompileres, tilmeld dig Discord og bed om hjælp i QMK-kanalerne.
Når du har kompileret din firmware, skal du flashe den til dit tastatur.
- Du skal søge online efter flash-instruktioner til dit tastatur, da instruktionerne varierer mellem tastaturer.
- Når du har flashet dit tastatur, skal du tilpasse tastaturpluginnet nedenfor, så SignalRGB fungerer med dit tastatur.
Mappe med eksempler på QMK-plugins
- Når du har downloadet det ovenstående tastaturplugin, åbn det i en teksteditor.
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"}, ];}- Når du åbner tastaturpluginnet, vil du se en skærm svarende til den ovenfor.
- Du skal udfylde nogle af disse felter, startende med Name-feltet.
- Name-feltet skal udfyldes med navnet på det tastatur du har udviklet firmware til.
export function Name() { return "Massdrop CTRL QMK Keyboard"; }- Dernæst skal vi indtaste VendorId for tastaturet.
- For at finde VendorId for tastaturet, åbn SignalRGB.
- Klik derefter på indstillings-tandhjulet i nederste venstre hjørne.

Klik derefter på “Enhedsoplysninger”.

Find derefter dit tastatur og notér VendorID og ProductID.


Indtast nu VendorId og ProductId med disse værdier.
export function Name() { return "Massdrop CTRL QMK Keyboard"; }export function VendorId() { return 0x04d8; }export function ProductId() { return 0xEED2; }- Det næste felt der skal udfyldes er Publisher-feltet. I Publisher-feltet kan du indtaste dit navn, brugernavn eller kaldenavn.
export function Name() { return "Massdrop CTRL QMK Keyboard"; }export function VendorId() { return 0x04d8; }export function ProductId() { return 0xEED2; }export function Publisher() { return "WhirlwindFX"; }- Nu er vi færdige med at udfylde felterne og går videre til arrays.
Der er 3 arrays der skal ændres: vKeys, vKeynames og vKeyPositions.

- vKeys-arrayet tilknytter hvert tastaturets tast til dens position i de RGB-data der sendes til tastaturet.
- vKeyNames-arrayet fortæller os, hvilken tast der svarer til hver vKey og vKeyPosition.
- vKeyPositions-arrayet fortæller SignalRGB, hvor hver tast er placeret positionsmæssigt på tastaturet.
- Tilpas først vKeyNames-arrayet, så det afspejler dit tastatur.
- Det betyder at du skal omorganisere vKeyNames, så de passer til dit tastatur.
- I vores tilfælde skulle vi fjerne taster og omorganisere de resterende, da vores bundkort er et TKL-bundkort.

Opdater derefter vKeyPositions-arrayet på samme måde som vKeyNames-arrayet blev opdateret.

Opdater til sidst vKeys-arrayet, så det stemmer overens med vKeyNames- og vKeysPositions-arrays.

- Gem nu din plugin-fil i %userprofile%/Documents/WhirlwindFX/plugins og genstart Signal.
- Dit tastatur skulle nu lyse op og reagere på SignalRGB.
Hvis tastaturet ikke lyser op eller ikke reagerer korrekt på SignalRGB:
Sektion kaldt “Hvis tastaturet ikke lyser op eller ikke reagerer korrekt på SignalRGB:”- Gå til enhedssiden i SignalRGB.

- Naviger derefter til dit tastatur og klik på indstillings-tandhjulet.

- Klik derefter på kontakten “Vis konsol”.

- I konsollen bør det samlede antal LED’er på enheden vises. Sammenlign dette antal med det antal LED’er du har tildelt.
- I vores tilfælde er der 119 LED’er i alt.
Hvis antallet af LED’er svarer til antallet af vKeys:
Sektion kaldt “Hvis antallet af LED’er svarer til antallet af vKeys:”- Sørg for at Size-feltet i dit plugin i begge retninger er 1 større end din højeste LED-koordinat:
- I vores tilfælde befinder den fjerneste LED sig ved position [17,6], så vores Size-felt skal være [18,7].
export function Size() { return [18, 7]; }Hvis antallet af LED’er ikke svarer til antallet af vKeys:
Sektion kaldt “Hvis antallet af LED’er ikke svarer til antallet af vKeys:”- Du skal tilføje vKeys, vKeyPositions og vKeyNames for at matche det samlede antal LED’er.
- I vores tilfælde havde enheden 119 LED’er, så vi skulle tilføje 32 LED’er til tastaturets underglow.



- Hvis antallet af vKeys svarer til det samlede antal LED’er og enheden er korrekt dimensioneret, men LED’erne er forkert tilknyttet:
- Tilmeld dig Discord og bed om hjælp i QMK-kanalerne.
Sådan løser du blinkning af indikator-LED’er (CAPSLOCK, NUMLOCK, SCROLL-LOCK), når SignalRGB og tasten er aktive.
Sektion kaldt “Sådan løser du blinkning af indikator-LED’er (CAPSLOCK, NUMLOCK, SCROLL-LOCK), når SignalRGB og tasten er aktive.”Dette er lidt avanceret, da det kræver kendskab til indeksværdierne for dine indikatorer (CAPS, NUM, SCROLL). (Disse findes oftest i enhedens underkategori ansi/iso eller direkte i <keyboard_name.c> – søg efter g_led_config og tilknyt indekset visuelt til den tilsvarende tast. Alternativt kan du, når dit SignalRGB-plugin fungerer, hente ID’et derfra og rekompilere med denne ændring!)

Når du kender ovenstående værdier, kræves der en lille ændring i signalrgb.c eller via.c afhængigt af dit firmware-build. Erstat CAPSLOCK_LED_INDEX_, NUM___LOCK_LED_INDEX eller SCROLL_LOCK_LED_INDEX med indeksværdierne for dit tastatur.
Hvis CAPS_LOCK-indekset er 61, ændres denne linje:
if ((index + i) == CAPS_LOCK_LED_INDEX && host_keyboard_led_state().caps_lock) {Til denne linje:
if ((index + i) == 61 && hostkeyboard led_state().caps_lock) {Komplet kodeeksempel (Dette erstatter denne specifikke funktion “led_streaming” fuldstændigt):
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); } }}** Tilmeld dig Discord og bed om hjælp i QMK-Custom-Builds-kanalen, hvis du har problemer med ovenstående instruktioner! **