firmware - flinguenheld/chew GitHub Wiki

Firmware

💡 I recommend using the gemini controller with the split version because it includes a VBus detection.

Rusty Chew

I've written a firmware in rust so if you're a rustacean, feel free to fork it and add some hacks -> rusty chew

You can also use it directly, follow the explanations on the readme and open the file src/layouts.
With this file, you can add/modify layers, combos and the leader key combinations.

QMK

Chew also runs on QMK.
You can see my keymap here and use it to create yours.

Flashing

To flash your controllers, you have to install QMK. So follow the QMK setup tutorial.
Then move into one of this folders :

    cd ~/qmk_firmware/keyboards/chew/split/keymaps/
    cd ~/qmk_firmware/keyboards/chew/mono/keymaps/

Press twice the reset button or maintain the boot button and plug the usb cable in, the controller should appear in your file explorer.
And use this command :

    qmk compile && qmk flash

Handedness (split version)

Open the config.h file.

Gemini controller

If you use the gemini controler, use the Vbus option which is on the pin #19.
The master will be those which is connected with the usb cable.

#define USB_VBUS_PIN GP19
  

RP2040-zero controller

This controller doesn't have a Vbus option so to distinguish who's the master/slave side, you have two options with both pros and cons:

SPLIT_USB_DETECT

(This is the default method)
QMK detects automatically which controller is the master on boot (the one which is plugged-in).

Caveat:

On cold computer boot, the keyboard start could fail even if the watchdog is enabled (it is enabled by default).
In this case, you can increase the split timeout value:

// Default 2000
#define SPLIT_USB_TIMEOUT 8000

Try to find a value which works for you.
Unfortunately, due to this, you may not be able to access the bios.

VBUS style

This method uses a pin which is active only on one side.
The master role is static.

Add these lines in your config.h :

#undef SPLIT_USB_DETECT
// On the left --
#define USB_VBUS_PIN GP10
// Or on the right --
// #define USB_VBUS_PIN GP12
  
Caveat:

This method works as well, however you won't be able to use your keyboard with the slave plugged-in.

⚠️ **GitHub.com Fallback** ⚠️