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

  1. Download and follow setup instructions

    All the following operations must be performed in MSYS terminal window (not Power Shell or another terminal).

  2. Run qmk setup and point it to Nuphy QMK firmware repository with the following command

    qmk setup nuphy-src/qmk_firmware -b nuphy-keyboards	
    
  3. Compile the firmware for the keyboard

    qmk compile -kb nuphy/kick75/ansi -km via
    

    If you're compiling for a different Nuphy keyboard, you'll need to adjust it as per supported keyboards found here

  4. When the process is done, you'll see something like the following:

    Copying nuphy_kick75_ansi_via.bin to qmk_firmware folder
    

    where qmk_firmware/ is the folder created after qmk setup step above.

  5. You can now follow the steps outlined here to flash the keyboard with the .bin file.

    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 with qmk 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.