# theDora Board

![Thedora Board](https://ckeys.org/images/exboard-3.jpg)

A 4x5 keyboard with rotary encoder, QWIIC connector, and header pinouts for easy access to all pins on the Proton C. This keyboard was built for QMK exploration big and small. What will you discover next?

* Keyboard Maintainer: [brandenbyers](https://github.com/brandenbyers)
* Hardware Supported: theDora
* Hardware Availability: [cKeys.org](https://ckeys.org)

Make example for this keyboard (after setting up your build environment):

`make ckeys/thedora:default`

See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](Complete Newbs Guide).

---

## Slides

Slides can be found at: https://ckeys.org/slides/exboard/

## Case Design

The acrylic laser cutter file is coming soon!

## PCB Design

All cKeys PCBs are open source. However, this one has not been posted yet because it needs to be cleaned up a bit! Coming soon!

## Firmware

If you want to reflash the pre-installed firmware, use the `.bin` file for Proton C. Flash with the QMK Toolbox or via the command line.

**Building for Proton C:**
`make ckeys/thedora:default`

**Search for Bootloader Device:**
`make ckeys/thedora:default:flash`
You will begin seeing output of the host searching for the bootloader device, `ERROR: Bootloader not found. Trying again in 5s.`

**Enter DFU-Bootloader Mode:**
Reset the controller. Press [ADMIN](https://ckeys.org/slides/exboard/assets/player/keynotedhtmlplayer#21) + [RESET](https://ckeys.org/slides/exboard/assets/player/keynotedhtmlplayer#25) or, if accessible, press the reset button on the Proton C microcontroller. 

## Default Layout

You can find the default layout in `thedora/keymaps/default/keymap.c`

## Rotary Encoder

This is the bit of code at the end of `keymap.c` that needs to changed if you want to change the behavior of the rotary encoder.

```
bool encoder_update_user(uint8_t index, bool clockwise) {
  if (index == 0) { /* First encoder */
    if (clockwise) {
      tap_code(KC_PGDN); // What the rotary encoder repeatedly does when turned right.
    } else {
      tap_code(KC_PGUP); // What it does when turned to the left.
    }
  }
    return true;
}
```

![The Dora Board](https://ckeys.org/images/exboard-1.jpg)
