Portable keyboard and mouse companion.
This was inspired by foureight84's sofle and vlukash
- crkbd classic
- corne analyst case
- mbk choc low profile keycaps
- kailh choc low profile switches (brown)
- mill max ultra lowprofile sockets
- sparkfun pro micro usb-c
- pimoroni trackball
I won't go over the details of the crkbd base build there is a lot of youtube clips and the orginal foostan build is detailed.
The only thing special is I used the sparkfun pro micro usb-c controller and qwiic port to connect the pimoroni trackball, shown below.
Pimoroni Trackball with qwiic connection:
Trackball connected to the controller:
Controller connected to the board:
I'm in no means a pro C/C++ developer and I'm sure once you see the code you could probably find improvements, but most of the development was originally from foureight84, drashna and sevanteri.
Currently the common crkbd doesn't support i2c for the split keyboard communication, so I had to build the firmware similar to vlukash trackpad approach by having a firmware for the right and left controllers. Basically the master hand, the one that has the usb connected, will have the working code for the pimoroni trackball. So you have to explicitly say which is the master and enable the pimoroni trackball for that side only.
The firmware does not include the OLED driver mainly because I haven't tested it yet. The LED in the trackball will change indicating which layer you are currently at.
Clone my firmware here: https://github.com/greyhatmiddleman/qmk_firmware.git
git clone --branch greyhatmiddleman https://github.com/greyhatmiddleman/qmk_firmware.git
The firmware is located in keyboards/crkbd/rev1/common/keymaps/greyhatmiddleman_trackball_[left|right]
.
For this example the trackball will be connected to the right hand which will be the master side.
Here you want to make sure the following:
- Important: Make sure that both the
config.h
andkeymap.c
are identical under the right and left folders - In the
config.h
file make sure to define the master:
...
#define MASTER_RIGHT
...
- Change your keymaps accordingly, no need to change the code under
pointing_device_task
, unless you added layers or change the names of the layers. - Set the
rules.mk
based on the which hand is master and that has the trackball connected. - For the right hand
rules.mk
set the following:
...
PIMORONI_TRACKBALL_ENABLE = yes
...
- For the left hand
rules.mk
set the following:
...
PIMORONI_TRACKBALL_ENABLE = no
...
- Verify all your changes and confirm that the
config.h
andkeymap.c
are the same in the right and left holders. - Now you ready to flash the firmware.
Connect the usb to right hand controller and run the following:
qmk flash -kb crkbd/rev1/common -km greyhatmiddleman_trackball_right
Next connect the usb to the left hand controller and run the following:
qmk flash -kb crkbd/rev1/common -km greyhatmiddleman_trackball_left
Connect the usb to the right hand and your computer and you should be all set!
- Confirm that the
config.h
andkeymap.c
are the same under the right and left folders. - Ensure that you connected the trackball to the master hand, which would be defined under the
config.h
- The
rules.mk
should be different between the right and left folders. It should dictate which has the Pimoroni enabled which the other side should have it disabled.
- Convert the controllers using the Nice!Nano ones for wireless connectivity
- Add an OLED on the opposite side of the trackball
- Try to get EE_HAND working so that we can have a single firmware