💾 Archived View for m0yng.uk › 2022 › 03 › koda-keyboard captured on 2023-01-29 at 02:53:20. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2022-07-16)

➡️ Next capture (2023-05-24)

🚧 View Differences

-=-=-=-=-=-=-

koda keyboard - M0YNG.uk

Created 2022-03-12

Modified 2022-10-24

Tagged

I've wanted to build a keyboard for ages now, and the Penkesu computer needs a keyboard, so my first forray into the custom keyboard world was to build a koda keyboard by odd-rocket

Small 4 row by 12 keyboard with black square key caps with white lettering and a pink glow [IMG]

Sourcing components

PCB

I needed to get PCB(s) made, which isn't something I've done before. I went with JLCPCB on the basis that people like Big Clive dot com use them. The process wasn't too complex, but I did end up guessing on some options (like surface finish) or just picking based on price. In the end I ordered:

Now, when Great Scott says his JLCPCB order came within the week, I suspect he gets the special sponsor treatment.

My timeline was:

The PCBs themselves seem to be of good quality, and the one I have used works fine. I'd buy from them again.

The PCBs themselves cost £18.74 and the cheapest shipping was £19.15 for a total of £37.89 or about £2.53 per board. Did I need 15? No. Did it change the total price much? Also no. On that note, if you are in the UK and want one, let me know!

Everything else

I got the rest of the stuff from mechboards in the UK, and it wasn't cheap!

The total with shipping was **£115**!

1: https://mechboards.co.uk/products/throughhole-diodes

2: https://mechboards.co.uk/products/pro-micro-5v

3: https://mechboards.co.uk/products/24-pin-pro-micro-sockets

4: https://mechboards.co.uk/products/mill-max-socket-pins

5: https://mechboards.co.uk/products/kailh-low-profile-choc-switches-v1-brown?variant=40330408198349

6: https://mechboards.co.uk/products/work-louder-choc-keycaps-daily-set

I then got to test their support. The first set of keycaps I received had two "D" keys, and no "C". They asked me to post the set back and replaced it once they received them, which was slow but ok I guess.

However, when I went to install the keycaps I realised that I had no down key! In the pack it looked like a down key, but it was actually a left/right that had been rotated 90, and as the keycaps can only be installed one way (well, also upside down) I don't currently have a down arrow key. Luckily the set has a few dots that I can borrow, whilst I wait for mechboards to decide what to do next.

Building

I don't have many photos of this because I was doing it between other things, and after waiting this long I was keen to get it working!

The process is fairly simple,

1. Snip the socket into just the side rails so we can fit the controller

2. Shove the pins into the socket and position them into the controller - with the USB side towards the PCB

3. Solder the pins into the controller

4. Solder all the diodes to the under side of the PCB

5. Solder the socket to the underside of the PCB

6. Solder all the switches - beware of bent pins!

Later I used some brass M2 standoffs and screws with another PCB and some sticky feet to make a more robust (no exposed diodes and microcontroller) setup.

Flashing

I had to do the initial flash with the microcontroller not installed, so I could reach the reset button, or you can short `RST` to `GND` using a screwdriver.

I cloned the penkkesu repo and copied the keyboard stuff into `~/qmk_firmware/keyboards/penkesu`

From there I could `cd` into `~/qmk_firmware/keyboards/penkesu/keymaps/default` and run

qmk compile
qmk flash

Once you have QMK installed getting the keyboard into flash mode is simply a case of holding the top left and bottom left keys when connecting it to the computer, in this case `esc` and the bottom left dot.

Mods

Obviously I had to make some tweaks! So far just two...

RGB

Odd-rocket says

koda has no leds. two extra data pins with GND and VCC were broken out for RGB underlighting. 

These are the four through holes in a line below the controller.

underside of the keyboard PCB showing LED tape lit up in the middle and most of the width of the keyboard [IMG]

I connected some addressable RGB LED tape to the top data connection and made the following configuration changes;

# config.h

/* Define pins etc. for RGB lights */
#define RGB_DI_PIN C6 /* specify physical data pin */
#define RGBLED_NUM 12 /* specify number of LEDs */
#define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_SLEEP /* turn LEDs off when host sleeps */

# rules.mk

BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE ?= yes # Enable RGB LEDs

# keymaps/default/keymap.c
# In the third KEYMAP (the "raise" key on penkesu, to the right of space) on the second row (tab, a, s, d, f)

RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,

This lets to turn the RGB on/off `RGB_TOG`, change the mode `RGB_MOD`, then change the Hue, Saturation, and Intensity/Brightness.

These settings are remembered between use.

It looks good, making the middle of the board glow, but it doesn't help identify keys in the dark.

the keyboard in the dark with purple glow, some letters are slightly visible [IMG]

Keymap

Since writing this post I've added a few more convenience keys, including an entire layer for function keys and "forced" keys that should type what I want regardless of the keyboard layout. For example the tilde (~) is all over the place between mac and windows keyboards, US and UK layout, etc. Now I can type it with confidence. But also ‽ … 🐍 ` # ~ | €

My full keymap file now looks like

#include "koda.h"

enum unicode_names {
    BANG,
    EURO,
    SNEK,
    TILDE,
    PIPE,
    HASH,
    GRAVE,
    ELIP
};

const uint32_t PROGMEM unicode_map[] = {
    [BANG]  = 0x203D,  // ‽
    [SNEK]  = 0x1F40D, // 🐍
    [EURO]  = 0x20AC,  // € 
    [TILDE]  = 0x007E,  // ~
    [PIPE]  = 0x007C,  // |
    [HASH]  = 0x0023,  // #
    [GRAVE]  = 0x0060,  // `
    [ELIP]  = 0x2026,  // …
     
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

    KEYMAP(
    	KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, 
    	KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, 
    	KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_ENT, 
    	MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT),

    KEYMAP(
    	KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, 
    	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT, 
    	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_COMM, KC_DOT, KC_TRNS, KC_TRNS, 
    	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, MO(2), KC_SLSH, KC_TRNS, KC_TRNS, KC_TRNS),

    KEYMAP(
    	KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DELETE, 
    	RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NONUS_HASH, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_COLN, KC_DQUO, 
    	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PIPE, KC_LT, KC_GT, KC_PAGE_UP, KC_TRNS, 
    	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_QUES, KC_HOME, KC_PAGE_DOWN, KC_END),

    KEYMAP(
    	KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, 
    	KC_TRNS, KC_TRNS, KC_TRNS, X(EURO), KC_TRNS, KC_TRNS, KC_TRNS, X(SNEK), X(GRAVE), X(HASH), X(TILDE), X(PIPE),
    	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, X(ELIP), KC_KB_VOLUME_UP, KC_TRNS, 
    	KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, MO(2), X(BANG), KC_TRNS, KC_KB_VOLUME_DOWN, KC_TRNS)

};

Review

I'm using it now, as a stand-alone keyboard. I've never used an ortholinear keyboard before so it is taking some getting used to the layout.

I like the switches, they feel good and sound good. I like the keycaps, they look and feel nice. But they should for the price!

I've also not used QMK before, and I didn't find it easy to get started. There seems to be a lot of older info out there, and there are many different keyboards and configurations possible, so it can be hard to pin down specifics. I've found the official documentation to be the best.

My build is pretty solid and looks nice, and I could pop it into a bag to bring with me easily enough, but it is going to take time to o get my typing speed back up!

After using it for even more longer, the main issue is that it's too light and moves around the desk when typing. Maybe more grippy feet would help this.

Ultimately I still want to install this into the penkesu when I build it, but it is a nice keyboard on its own. Maybe I can have a passthrough on the penkesu so I can connect it to a host computer and just use the keyboard.

-+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-

🖤 Black Lives Matter

💙🤍💜 Trans Rights are Human Rights

❤️🧡💛💚💙💜 Love is Love

Copyright © 2022 Christopher M0YNG

Code snippets are licenced under the Hippocratic License 3.0 (or later.)

Page generated 2022-12-11 by Complex 19