SRGBmods QMK Firmware

This firmware is not officially supported by SignalRGB or QMK but by the moderator team of SignalRGB. Support can be provided either on the Github repository ( Issues) or the QMK channels of this Discord (Discord will be faster in most cases).

Please keep support requests to either of those locations only, thanks!

Firmware Download

Thanks to our moderator team the vast majority of keyboards that are supported by QMK are now available to the community as pre-compiled firmware. (QMK’s RGB Matrix support is required for the keyboard to be supported). The GPL source code to create this firmware can be found here.

The firmware files can be found here.

We do recommend you attempt the VIA versions first as it will allow you to fix any key mapping issues.

(Make sure to backup your current layout with VIA before flashing that way you can restore them afterwards!)

Directions for flashing the firmware are usually provided by your keyboard manufacturer.

You can ask for help in the QMK channels on this Discord as well.

Once you have completed flashing your keyboard read the below to get started with authoring a keyboard plugin.

SignalRGB and VIA attempt to talk to the keyboard the same way, make sure to quit SignalRGB if you wish to use VIA / quit VIA if you wish to use SignalRGB.

User Plugin Creation

  1. After flashing your keyboard, you need to modify the keyboard plugin below to get SignalRGB working with your keyboard.
  • Example Keyboard Plugin can be downloaded here: QMK_Keyboard_Example.js
  • After downloading the keyboard plugin above, open it in a text editor.


export function Name() { return “QMK Keyboard”; }

export function VendorId() { return 0x0000; }

export function ProductId() { return 0x0000; }

export function Publisher() { return “WhirlwindFX”; }

export function Size() { return [21, 6]; }

export function DefaultPosition(){return [10, 100]; }

export function DefaultScale(){return 8.0}

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”},




  1. After opening the keyboard plugin, you will be presented with a screen similar to the one above.
  • You will need to fill in some of these fields, starting with the Name field.
  • The name field needs to be filled in with the name of the keyboard that you developed firmware for.


export function Name() { return “Massdrop CTRL QMK Keyboard”; }


  1. Next, we need to fill in the VendorId for the keyboard.
  • To find the VendorId for the keyboard, open SignalRGB.
  • Then click the settings cog in the bottom left corner.

Then, click on Device Information.

Find your keyboard and note down its VendorID and ProductID.

Now fill the VendorId and ProductId fields with these values.


export function Name() { return “Massdrop CTRL QMK Keyboard”; }

export function VendorId() { return 0x04d8; }

export function ProductId() { return 0xEED2; }


  1. The next field that needs to be filled in is the Publisher field. In the publisher field, you can put your name, username or handle.


export function Name() { return “Massdrop CTRL QMK Keyboard”; }

export function VendorId() { return 0x04d8; }

export function ProductId() { return 0xEED2; }

export function Publisher() { return “WhirlwindFX”; }


  1. Now, we are done filling in fields, and are moving onto arrays.

There are 3 arrays that need modified: vKeys, vKeynames, and vKeyPositions

  • The vKeys array maps each keyboard key to its position within the RGB Data being sent to the keyboard.
  • The vKeyNames array tells us which key corresponds to each vKey and vKeyPosition.
  • The vKeyPositions array tells SignalRGB where each key on the keyboard is position-wise.
  • First, change the vKeyNames array to reflect your keyboard.
  • This means that you need to rearrange the vKeyNames so that they match your keyboard.
    • In our case, we had to remove keys and reorganize the remaining ones as our board is a TKL board.

Then update the vKeyPositions array the same way that the vKeyNames array was updated.

Finally, update the vKeys array so that it matches the vKeyNames and vKeysPositions arrays.

  1. Now, save your plugin file into %userprofile%/Documents/WhirlwindFX/plugins, then restart SignalRGB.
  • Your keyboard should start to light up and react with SignalRGB.

If the Keyboard Does Not Light up or Does Not React Properly to SignalRGB:

  1. Go to the Devices page in SignalRGB.

  1. Next, go to your keyboard, and then click on the settings cog.

  1. Then, click the Show Console toggle.

  • There should be a Device Total LED Count in the console. Compare that Device Total LED Count to the number of LEDs that you have assigned.
    • In our case, there are 119 Total LEDs.

If the Number of LEDs Does Match the Number of vKeys you Have:

  • Ensure that the size field of your plugin is 1 larger in each direction than your highest LED Coordinate:
    • In our case, the furthest out LED is at position [17,6], therefore our Size field needs to be [18,7].


export function Size() { return [18, 7]; }


If the Number of LEDs does not Match the Number of Vkeys you have:

  • You will need to add vKeys, vKeyPositions, and vKeyNames to match the number of Total LEDs.
    • In our case, the device had 119 LEDs, so we needed to add 32 LEDS for the keyboard’s underglow.

  • If the number of vKeys matches the number of Total LEDs and the device is sized properly, but the LEDs are improperly mapped:
  • Join the discord and ask for help in the QMK channels.