Intro
A while ago I build a Charybdis Nano, but being left-handed I wanted the trackball on the left hand, not the right.
After some help from the people in the bastardkb discord, I got everything running.
Firmware changes
The full commit is here in my QMK fork. Only the 3 files mentioned below are important for the change, the remaining changes are just my own keymap.
It boils down to:
- update the keymatrix
- change the master to the left
- tell QMK that the pointing device is left
Thumbcluster
First we need to update the thumbcluster. By default, the Nano has 3 keys on the left, and 2 on the right.
For the left-handed version it's swapped around, that's why we need to swap them in the Charybdis Nano's keymap definition as well.
keyboards/bastardkb/charybdis/3x5/3x5.h
#define LAYOUT_charybdis_3x5( \
k00, k01, k02, k03, k04, k44, k43, k42, k41, k40, \
k10, k11, k12, k13, k14, k54, k53, k52, k51, k50, \
k20, k21, k22, k23, k24, k64, k63, k62, k61, k60, \
- k32, k33, k30, k70, k72 \
+ k32, k30, k70, k73, k72 \
) \
{ \
{ k00, k01, k02, k03, k04 }, \
{ k10, k11, k12, k13, k14 }, \
{ k20, k21, k22, k23, k24 }, \
- { k30, KC_NO, k32, k33, KC_NO }, \
+ { k30, KC_NO, k32, KC_NO, KC_NO }, \
{ k40, k41, k42, k43, k44 }, \
{ k50, k51, k52, k53, k54 }, \
{ k60, k61, k62, k63, k64 }, \
- { k70, KC_NO, k72, KC_NO, KC_NO }, \
+ { k70, KC_NO, k72, k73, KC_NO }, \
}
The first change just updates the order or parameters for the LAYOUT_charybdis_3x5
function we use in our keymap.c
.
The second and third line updates the matrix internally, k33
goes unused in the left-handed version, and instead we want k73
.
Changing the master
Split keyboards work using a master & slave system, only the master communicates with the connected PC. The slave just talks over the TRRS cable with the master.
Usually the right side is the master in QMK, defined by the MASTER_RIGHT
in the config.h
of a keyboard.
To make things easier, I just set the master to be the left. That way, we don't need to think about sending the trackball stuff over I2C (the TRRS cable).
keyboards/bastardkb/charybdis/3x5/config.h
- #define MASTER_RIGHT
+ #define MASTER_LEFT
Changing the pointer
Last but not least, we need to tell QMK that the pointer is on the left side aswell.
keyboards/bastardkb/charybdis/config.h
- #define POINTING_DEVICE_RIGHT
+ #define POINTING_DEVICE_LEFT
Final thoughts
In the end, not that much work.
If you know which 5 lines you need to change.