Nuphy Kick75
Foreword
QMK is an open-source keyboard firmware with a large ecosystem of supported keyboards and a rich set of features for customizing key mappings, macros, lighting, and more.
In order to start building your custom firmware, QMK source code has to be installed.
The installation procedure is outlined in great detail on the website.
Setting up QMK environment and building a firmware
-
Download and follow setup instructions
All the following operations must be performed in
MSYSterminal window (not Power Shell or another terminal). -
Run
qmk setupand point it to Nuphy QMK firmware repository with the following commandqmk setup nuphy-src/qmk_firmware -b nuphy-keyboards -
Compile the firmware for the keyboard
qmk compile -kb nuphy/kick75/ansi -km viaIf you're compiling for a different Nuphy keyboard, you'll need to adjust it as per supported keyboards found here
-
When the process is done, you'll see something like the following:
Copying nuphy_kick75_ansi_via.bin to qmk_firmware folderwhere
qmk_firmware/is the folder created afterqmk setupstep above. -
You can now follow the steps outlined here to flash the keyboard with the
.binfile.In order to flash custom firmware, the keyboard has to be put into a special flashing mode.
In my case with Kick75 keyboard, I was able to enter flashing mode by unplugging the keyboard, holding down the ESC key and plugging the keyboard back.
In QMK Toolbox, the following line indicates that the keyboard went into flashing mode:
STM32 DFU device connected (WinUSB): STMicroelectronics STM32 BOOTLOADER (0483:DF11:2200)This is where one extra keyboard might be handy to continue flashing.
Flashing took around 20 seconds, and the keyboard loaded with the new firmware.
Configuring QMK environment
Alright, more fun to come!
Before diving deep into firmware customization, I took some steps to make iterative build process less tedious.
First of all, let's set our keyboard as the default one:
qmk config user.keyboard=nuphy/kick75/ansi
From docs:
The keyboard option is the path relative to the keyboard directory, the above example would be found in
qmk_firmware/keyboards/nuphy/kick75/ansi. If you're unsure you can view a full list of supported keyboards withqmk list-keyboards.
And second, set the default keymap name. Many people use their Github username as their keymap name, and so did I:
qmk config user.keymap=naviltsev
Creating a new keymap
Let's create a new keymap that we'll use to write custom stuff:
$ qmk new-keymap
Ψ Generating a new keymap
Ψ Created a new keymap called naviltsev in: C:/Users/nikolay/qmk_firmware/keyboards/nuphy/kick75/ansi/keymaps/naviltsev.
Ψ Compile a firmware with your new keymap by typing: qmk compile -kb nuphy/kick75/ansi -km naviltsev.
Note that by default a keymap file was generated inside QMK firmware directory, which may not be very convenient if you're planning to keep your work on Github or elsewhere - but we'll get to it soon.
Now let's compile to make sure everything works:
qmk compile -kb nuphy/kick75/ansi -km naviltsev
Note that I have to enter -kb and -km arguments - that will soon get boring. This can be fixed by setting up those keyboard and keymap values in a user config:
qmk config user.keyboard=nuphy/kick75/ansi
qmk config user.keymap=naviltsev
User directory
In my case I will be using Github as the storage to keep my keymap work.
Kick off QMK MSYS - we're going to use it as a terminal.
Start off with creating a new repository in your file system.
[nikolay@HomePC Dev]$ mkdir qmk_keyboard
[nikolay@HomePC Dev]$ cd qmk_keyboard/
[nikolay@HomePC qmk_keyboard]$ git init .
Inside your repo, create a directory structure that matches QMK's keyboard, for example: keyboards/<your_keyboard_name>/keymaps/<your_keymap_name>/keymap.c.
In my case <your_keyboard_name> is nuphy/kick75/ansi, and <your_keymap_name> is my Github username.
I end up with this directory path - /d/Dev/qmk_keyboard/keyboards/nuphy/kick75/ansi/keymaps/naviltsev
I did have some of my custom files in the default qmk_firmware directory (/c/Users/nikolay/qmk_firmware/keyboards/nuphy/kick75/ansi/keymaps/naviltsev), so I simply moved them all into the new directory controlled by git.
And now the important bit - link the new directory:
[nikolay@HomePC Dev]$ qmk config user.overlay_dir=/d/Dev/qmk_keyboard
user.overlay_dir: d:/dev/qmk_keyboard -> D:/Dev/qmk_keyboard
Ψ Wrote configuration to C:/Users/nikolay/AppData/Local/QMK.EXE/qmk.exe/qmk.exe.ini
Checking qmk config settings:
[nikolay@HomePC ~]$ qmk config
find.keymap=default
mass_compile.keymap=default
user.keyboard=nuphy/kick75/ansi
user.keymap=naviltsev
user.overlay_dir=d:/dev/src/github.com/naviltsev/qmk_keyboard
All good now!
NOTE: there's a chance that qmk compile now fails with Invalid keymap argument error. If that's the case, run qmk doctor and it will show that you're likely missing qmk.json file in your qmk_keyboard/ directory - take an empty one from here and put it inside your qmk_keyboard/.
{
"userspace_version": "1.0",
"build_targets": []
}
qmk doctor should now have no complaints:
Testing userspace candidate: D:/Dev/qmk_keyboard -- Valid `qmk.json`
Trying to compile now, and nice - I can see that the external directory is now in use:
D:/Dev/qmk_keyboard/keyboards/nuphy/kick75/ansi/keymaps/naviltsev
Alright, now your experiments are under git control, isn't that a good occasion to become a happier person?
From now on, https://docs.qmk.fm/ is your friend.