Click to view our Accessibility Statement or contact us with accessibility-related questions

A quick crash course on the variety of ways for customization of/updating firmware of any QMK-friendly keyboard

more_vert
This is intended to be a quick and easy guide for anyone wanting to play around with the variety of ways to configure their QMK-friendly keyboard. Here, I'll go over three methods for doing so, each with increasing customizability: Drop's configurator, QMK's configurator, or entirely "by hand." Drop's configurator (https://drop.com/mechanical-keyboards/configurator/):
search
This method is easiest for those who want their firmware already compiled. But, as Apple has already taught us: simplicity in utilization is inversely proportional to customizability. Ask anyone who's installed Gentoo or Arch, surely they will agree. To do this, you need to download the mdloader (or mdloader_mac) repo from github (see https://github.com/Massdrop/mdloader/releases), and go through the user instructions within the github repo to install it. After installing, if your keyboard is connected and in reset (either from the switch on the bottom or DFU mode, which I'm guessing is "device firmware update") mode, then in your CLI [on mac], cd into the folder that contains the firmware .bin file you downloaded from Drop's configurator, and run this: $ mdloader_mac --first --download firmware_filename.bin --restart I'm sure it's something similar on Windows/Linux. This sends the firmware you designed in Drop's configurator to the keyboard, and it will remain that way until you change it again. QMK's configurator (https://config.qmk.fm/):
search
This gives you some more options in terms of keycodes (orange box), since it actually comes from QMK themselves. Some individuals may prefer using this as an intermediary for setting up their keyboard layout with some more eccentric keys not seen in Drop's configurator (RGB swirl, snake, etc.). Rather than download just a .bin that's ready to go, you can get a keymap.json file (downloadable with the button on the bottom left circled in blue), which is more readable for everyone, and can be edited quickly by hand in the case of changes rather than have to re-compile everything into a version that you can send to your keyboard. But, it does also have that option, which can be done by hitting "compile" on the top right (circled in yellow). When it's done compiling, you can download a similar .bin file (the grayed-out firmware button that's also circled in yellow), just as with Drop's configurator. It can be flashed to the keyboard with the same method as above. If you still want to edit the device via QMK's configurator, you can import the .json file to load it. But what if you want to combine these methods? Maybe you like the method of changing of LEDs through the Drop configurator, but want to utilize some of the more advanced keycodes that QMK's configurator has to offer. Fortunately, there's a relatively simple way to do this (and save it) from Drop's configurator. I picked this method up from @uvnikita. Here's the step-by-step with an old unfinished configuration I had: 1. Load up Drop's keyboard configurator, and make some minor change to the keyboard's configuration, so that you have the ability to click Save. 2. View > Developer > Developer Tools (this may vary depending on your browser. I'm using Chrome, but it shouldn't be too different on Firefox or something else) 3. With the browser in developer view, on the right side, click the "Network" tab. This shows you the communication between your computer and the site.
search
4. Within the page itself, click the "Save" button mentioned earlier. You should see something in the developer view pop up along the lines of "api?lang=en-US" and a handful of other things after it. Right click the api?lang=en-US item, scroll down to Copy, and click "Copy as cURL".
search
5. Open a text editor and paste the cURL into it (see a portion of the text block below as an example). You should have a fairly large block of text on the screen that isn't easily readable. This is fine though. This cURL is your keyboard's keymap and LED configuration, and is of the form i. keymap layout (by layer) ii. LED layout (patternId and colorId) (by layer. On the ALT, 0-67 is for individual keys, and 68-105 is for edge LEDs) iii. custom colorId's iv. keyboard layout in terms of key widths (w is width of individual keys, x is location along x-axis, y is location along y-axis, with the origin at the ESC key) v. LED pattern definitions (unfortunately, I don't think you can introduce your own here to be saved to Drop's configurator...I tried, to no avail) vi. Key definitions (such as isRGB) vii. Special keys The details of this are relatively unimportant for most, though. If you want to make some simple changes to this (such as include grave escape (KC_GESC) like me), the only part that needs to be changed is i., the rest can be left alone.
search
6. To make a simple edit like the one stated above, use ctrl-f (or cmd-f) to find the key you want to change (KC_ESC), and change it accordingly (KC_GESC). Since these are ordered by layer, it shouldn't be too hard to scroll through each appearance of it you want to change. 7. When done editing, go ahead and copy the edited cURL, and paste it into your Terminal, or whatever CLI you use. When this goes through, it saves your new configuration with the preferred/advanced keycodes onto Drop's site, allowing you to insert keys you normally wouldn't have been able to add in. This may be compiled and flashed in the same way as above. And last, doing things "the hard way": Why would you choose to do things this way? Well, it gives you the most options in terms of customization of your keyboard. I can't speak for those on Windows/Linux, but the process should be similar. This assumes you have Homebrew set up on Mac. If not, there are many tutorials online for installing it. So on Mac, in Terminal, run $ brew install qmk This installs the tools needed for flashing firmware. $ qmk setup This sets up the qmk_firmware home, so that when run "qmk ____" commands in Terminal, your computer knows where to work from. $ qmk compile -kb <massdrop/alt> -km <default> This compiles firmware for Drop's ALT keyboard with the default keymap. Of course, you don't actually type out the < > characters, they are only intended to show where you type in your own options for the keyboard/keymap. It should look similar, if not identical, to the QMK configurator's output upon compiling. For the CTRL with the responsive_pattern keymap, the output should appear as
search
To set a preferred default configuration for something like the CTRL with the responsive_pattern keymap, run $ qmk config user.keyboard=<massdrop/ctrl> user.keymap=<responsive_pattern>
search
You could also leave out the user.keymap portion, and just set your default keyboard as the CTRL. For something like the Planck, you'd change it to user.keyboard=<planck/rev6>. Considering the above example of the CTRL, from your QMK home, this can all be found (and edited) through qmk_firmware > keyboards > massdrop > ctrl > keymaps > responsive_pattern > keymap.c In my case of the ALT, when using GESC, I lost the ability to use CMD-OPT-ESC (Or GUI-ALT-ESC, which on Mac, does the same thing as CTRL-ALT-DEL in Windows). To fix this, you can edit the config.h file in qmk_firmware > keyboards > massdrop > alt > config.h and #define the necessary overrides at the bottom of this screenshot from QMK's docs.
search
After config.h is edited with the definitions, save it, and run the qmk compile command with your preferred keymap. As much as I'd like to do a tutorial on how to edit lighting from doing things manually and developing one's own lighting effects, I've been having a little bit of trouble trying to extrapolate things from some older github repos from some individuals on Drop such as @DarkMio and @LastContinue...the qmk_firmware has had some changes, and I've already messed things up a bit in the files and will need to backtrack. But since I haven't found the time to work through making an updated guide, if you'd like to take the reins on this, feel free; a couple of useful threads to give you a better idea can be found here: https://drop.com/talk/9382/how-to-configure-your-ctrl-keyboard/2200215
https://github.com/qmk/qmk_firmware/issues/4332 The creation of lighting effects from flashing firmware manually really deserves its own tutorial separate from this one anyways. I put all of this together rather quickly, so if I've made any major mistakes in typing this, don't hesitate to let me know. I'm sure it could be improved some, but hopefully this suffices for some people to help find their footing.
14
20
remove_red_eye
2.8K

search
close
rhpittman314
126
Sep 24, 2020
Update on a more advanced/detailed guide: In order to not put something out that is almost immediately rendered obsolete, I've decided to wait until Drop releases their new and improved configurator. After playing around with it upon release, I'll write up a user review over it and will talk about some of the basic pros/cons of using it over doing things through the CLI. For more on what Drop plans to put out in the near future, see this post: https://drop.com/talk/54354/mechanical-keyboards-community-announcements?utm_source=linkshare&referer=BPKDQH
delfinparis
15
Sep 4, 2020
Simple question - with my ALT every morning when I turn on my PC, I have to Fn-A a few times to get to the all white preset. Then I have to dim the lights a bit (Fn-S) because mine crashes randomly if I have them on full tilt. So, the question is, is there way to just save my current configuration and flash it? Thanks!
rhpittman314
126
Sep 4, 2020
delfinparisIn terms of changing the default brightness, not really. But an easy solution would be to load the default layout from Drop's configurator, and then change the LEDs to a shade of gray (so they're not as bright). I believe this is easiest accomplished by double clicking all of the LEDs under its associated tab, which changes all of the "A" mode LEDs, when you can then add in your own color, and drag it to some shade of gray you believe works best. When its all compiled, you can load it with the mdloader commands I have listed by the $ command prompt, and you'll be good to go.
Awesome guide!
rhpittman314
126
Aug 25, 2020
hanThanks! The positive reception is appreciated.
monkeysan
15
Aug 25, 2020
@Dropfarmer Thanks for this resource. I've been looking for a way to change parameters, such as `TAPPING_TOGGLE` (number of taps to invoke a `TT()`). Do you know off-hand if that's the kind of thing you can edit from the CURL output, or do you need to edit config.h in QMK? I was hoping for a solution that didn't require the latter just yet.
rhpittman314
126
Aug 25, 2020
monkeysanAlso, I should've noted this: It can't really be done through the cURL output, since that still has to go through the GUI configurator, whose API doesn't allow edits on config.h. What you could probably do is pull blocks of text from the cURL and insert them within keymap.c. This should work, as long as the blocks of text are laid out/formatted correctly. It may be more trouble than its worth though - it's up to you, really.
monkeysan
15
Aug 26, 2020
rhpittman314Wow, thank you so much. Can't wait to try this on my ALT. Thanks again!
(Edited)
Dropfarmer
1
Aug 24, 2020
This is literally the exact post I've been looking for. Need something to read while I wait for mine to arrive! Thanks, gonna get familiar with some of the configs and code in the mean time.
Dropfarmer
1
Sep 6, 2020
Yeah I must admit I prefer the QMK configurator for the fast input setting. It's been a long while since I've done anything with C, but I'll take a look at the github repos for QMK and drop and see if I can discern anything before your guide comes out.
Dropfarmer
1
Sep 8, 2020
DropfarmerIn case this is useful to anyone now or in the future, I found a way to get what I wanted done using drop's configurator. No time this week to start digging into C! My initial problem was that I could never tell what layer I had activated. I first tried setting an extra layer (2) on drop's config with the left alt and Gui buttons switched, then set something up on the default layer (1) for modifiers to make that mac layer (2) the default layer. This worked, but it was very hard to tell which layer was active and if I've paid for RGB lights, I may as well make them useful as well as pretty. See by switching this new layer (2) to the default layer, it seemed to inherit the LED settings from layer (0). So when I tried to have a subtle colour on the delete key that would tell me which layer was activated, it didn't work. The only way to get it so the colour would indicate the layer and make the whole experience way more user friendly was to completely delete the default layer (1) and recreate it above layer(2). This way you could set every key to be trns except for the left alt and left gui. Because I'm not thinking clearly I went through the laborious task of setting every key on the keyboard manually again (but please don't do this). I then recreated the old modifiers as layer(2) and voila! I had everything set up just the way I wanted. I could also get away with only setting handy things like the Grave_escape and then making the mac layer transparent on the esc key to get two for the price of one. Windows layer:
search
search
Mac Layer (don't bother copying it like I did - just leave it all transparent apart from the keys you want to adjust):
search
search
Modifiers:
search

Related Posts
Trending Posts in Mechanical Keyboards