aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBranden Byers <branden@brandenbyers.com>2019-08-06 10:17:59 -0700
committerDrashna Jaelre <drashna@live.com>2019-08-06 10:17:59 -0700
commit6b27ebefc643f81d4f46949270c258ff0f2c2049 (patch)
treea394add5192baeb3c9be36d4bb7a870f9efd61d5
parentf54e47c79df0ca3fc5b4a5c199ad29db8c5ce87b (diff)
downloadqmk_firmware-6b27ebefc643f81d4f46949270c258ff0f2c2049.tar.gz
qmk_firmware-6b27ebefc643f81d4f46949270c258ff0f2c2049.zip
[Keyboard] Add cKeys' "The Dora" Board (#6469)
* Initial 4x5 * More board * Update exboard * Update * Change name to thedora * Update keyboards/ckeys/thedora/keymaps/default/keymap.c Co-Authored-By: fauxpark <fauxpark@gmail.com> * Update keyboards/ckeys/thedora/config.h Co-Authored-By: fauxpark <fauxpark@gmail.com> * Remove the slash * Attempt at fixing moxygen line break issues * Update keyboards/ckeys/thedora/config.h Co-Authored-By: fauxpark <fauxpark@gmail.com> * Add boilerplate * Update keyboards/ckeys/thedora/config.h Co-Authored-By: Drashna Jaelre <drashna@live.com>
-rw-r--r--keyboards/ckeys/readme.md5
-rwxr-xr-xkeyboards/ckeys/thedora/config.h188
-rw-r--r--keyboards/ckeys/thedora/info.json16
-rwxr-xr-xkeyboards/ckeys/thedora/keymaps/default/config.h3
-rwxr-xr-xkeyboards/ckeys/thedora/keymaps/default/keymap.c155
-rwxr-xr-xkeyboards/ckeys/thedora/keymaps/default/readme.md1
-rwxr-xr-xkeyboards/ckeys/thedora/readme.md57
-rwxr-xr-xkeyboards/ckeys/thedora/rules.mk19
-rwxr-xr-xkeyboards/ckeys/thedora/thedora.c28
-rwxr-xr-xkeyboards/ckeys/thedora/thedora.h21
10 files changed, 491 insertions, 2 deletions
diff --git a/keyboards/ckeys/readme.md b/keyboards/ckeys/readme.md
index bdcf5b34d..f04626cd3 100644
--- a/keyboards/ckeys/readme.md
+++ b/keyboards/ckeys/readme.md
@@ -1,10 +1,11 @@
1# cKeys.org 1# cKeys.org
2 2
3[cKeys](https://ckeys.org/) is a mechanical keyboard-based nonprofit organization located in Seattle, Washington. 3[cKeys](https://ckeys.org/) is an all volunteer run 501c3 nonprofit organization located in Seattle, Washington.
4 4
5In addition, to hosting the [Seattle Mechanical Keyboard Meetups](https://ckeys.org/events/), they have [soldering workshops](https://ckeys.org/workshops/) featuring hardware hosted in this repository. 5In addition to hosting the [Seattle Mechanical Keyboard Meetups](https://ckeys.org/events/), we teach [soldering workshops](https://ckeys.org/workshops/) featuring hardware hosted in this repository.
6 6
7* Supported Hardware 7* Supported Hardware
8 * The Obelus - 4x4 Macropad 8 * The Obelus - 4x4 Macropad
9 * naKey - Through hole numpad 9 * naKey - Through hole numpad
10 * Handwire 101 - Handwired 4x4 (Proton C or Pro Micro) 10 * Handwire 101 - Handwired 4x4 (Proton C or Pro Micro)
11 * The Dora Board - 4x5 with rotary encoder and Proton C pinouts
diff --git a/keyboards/ckeys/thedora/config.h b/keyboards/ckeys/thedora/config.h
new file mode 100755
index 000000000..f2b93ee70
--- /dev/null
+++ b/keyboards/ckeys/thedora/config.h
@@ -0,0 +1,188 @@
1/* Copyright 2019 Branden Byers
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "config_common.h"
20
21/* USB Device descriptor parameter */
22#define VENDOR_ID 0xFEED
23#define PRODUCT_ID 0x6060
24#define DEVICE_VER 0x0001
25#define MANUFACTURER ckeys
26#define PRODUCT thedora
27#define DESCRIPTION A board for keyboard exploration.
28
29#define ENCODERS_PAD_A { B13 }
30#define ENCODERS_PAD_B { B15 }
31#define ENCODER_RESOLUTION 4
32
33/* key matrix size */
34#define MATRIX_ROWS 4
35#define MATRIX_COLS 6
36
37#define MATRIX_ROW_PINS { A2, A1, A0, B8 }
38#define MATRIX_COL_PINS { B5, B4, B3, B2, B1, B0 }
39
40// #define UNUSED_PINS { B14 }
41
42/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
43#define DIODE_DIRECTION COL2ROW
44
45//#define BACKLIGHT_PIN B7
46// #define BACKLIGHT_BREATHING
47//#define BACKLIGHT_LEVELS 3
48
49/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
50#define DEBOUNCE 5
51
52/* define if matrix has ghost (lacks anti-ghosting diodes) */
53//#define MATRIX_HAS_GHOST
54
55/* number of backlight levels */
56
57/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
58#define LOCKING_SUPPORT_ENABLE
59/* Locking resynchronize hack */
60#define LOCKING_RESYNC_ENABLE
61
62#define AUDIO_CLICKY
63
64#define DAC_SAMPLE_MAX 65535U
65
66/*
67 * MIDI options
68 */
69
70/* Prevent use of disabled MIDI features in the keymap */
71//#define MIDI_ENABLE_STRICT 1
72
73/* enable basic MIDI features:
74 - MIDI notes can be sent when in Music mode is on
75*/
76//#define MIDI_BASIC
77
78/* enable advanced MIDI features:
79 - MIDI notes can be added to the keymap
80 - Octave shift and transpose
81 - Virtual sustain, portamento, and modulation wheel
82 - etc.
83*/
84#define MIDI_ADVANCED
85
86/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
87//#define MIDI_TONE_KEYCODE_OCTAVES 1
88
89/*
90 * Force NKRO
91 *
92 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
93 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
94 * makefile for this to work.)
95 *
96 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
97 * until the next keyboard reset.
98 *
99 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
100 * fully operational during normal computer usage.
101 *
102 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
103 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
104 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
105 * power-up.
106 *
107 */
108//#define FORCE_NKRO
109
110/*
111 * Magic Key Options
112 *
113 * Magic keys are hotkey commands that allow control over firmware functions of
114 * the keyboard. They are best used in combination with the HID Listen program,
115 * found here: https://www.pjrc.com/teensy/hid_listen.html
116 *
117 * The options below allow the magic key functionality to be changed. This is
118 * useful if your keyboard/keypad is missing keys and you want magic key support.
119 *
120 */
121
122/* control how magic key switches layers */
123//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
124//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
125//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
126
127/* override magic key keymap */
128//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
129//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
130//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
131//#define MAGIC_KEY_HELP1 H
132//#define MAGIC_KEY_HELP2 SLASH
133//#define MAGIC_KEY_DEBUG D
134//#define MAGIC_KEY_DEBUG_MATRIX X
135//#define MAGIC_KEY_DEBUG_KBD K
136//#define MAGIC_KEY_DEBUG_MOUSE M
137//#define MAGIC_KEY_VERSION V
138//#define MAGIC_KEY_STATUS S
139//#define MAGIC_KEY_CONSOLE C
140//#define MAGIC_KEY_LAYER0_ALT1 ESC
141//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
142//#define MAGIC_KEY_LAYER0 0
143//#define MAGIC_KEY_LAYER1 1
144//#define MAGIC_KEY_LAYER2 2
145//#define MAGIC_KEY_LAYER3 3
146//#define MAGIC_KEY_LAYER4 4
147//#define MAGIC_KEY_LAYER5 5
148//#define MAGIC_KEY_LAYER6 6
149//#define MAGIC_KEY_LAYER7 7
150//#define MAGIC_KEY_LAYER8 8
151//#define MAGIC_KEY_LAYER9 9
152//#define MAGIC_KEY_BOOTLOADER PAUSE
153//#define MAGIC_KEY_LOCK CAPS
154//#define MAGIC_KEY_EEPROM E
155//#define MAGIC_KEY_NKRO N
156//#define MAGIC_KEY_SLEEP_LED Z
157
158// Audio Click
159
160// Music Mode Polyphony
161// NOTE: Must change polyphony_rate to a number higher than 0 in voices.c
162#define AUDIO_VOICES
163#define PITCH_STANDARD_A 880.0f
164
165// Mouse keys
166#define MOUSEKEY_DELAY 0
167#define MOUSEKEY_INTERVAL 20
168#define MOUSEKEY_MAX_SPEED 2
169#define MOUSEKEY_TIME_TO_MAX 5
170#define MOUSEKEY_WHEEL_DELAY 0
171
172/*
173 * Feature disable options
174 * These options are also useful to firmware size reduction.
175 */
176
177/* disable debug print */
178//#define NO_DEBUG
179
180/* disable print */
181//#define NO_PRINT
182
183/* disable action features */
184//#define NO_ACTION_LAYER
185//#define NO_ACTION_TAPPING
186//#define NO_ACTION_ONESHOT
187//#define NO_ACTION_MACRO
188//#define NO_ACTION_FUNCTION
diff --git a/keyboards/ckeys/thedora/info.json b/keyboards/ckeys/thedora/info.json
new file mode 100644
index 000000000..06e1037f7
--- /dev/null
+++ b/keyboards/ckeys/thedora/info.json
@@ -0,0 +1,16 @@
1{
2 "keyboard_name": "The Dora Board.",
3 "url": "https://ckeys.org/slides/exboard",
4 "maintainer": "brandenbyers",
5 "width": 4,
6 "height": 4,
7 "layouts": {
8 "LAYOUT_ortho_4x5": {
9 "key_count": 20,
10 "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x": 4, "y":0},
11 {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1},
12 {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2},
13 {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}]
14 }
15 }
16}
diff --git a/keyboards/ckeys/thedora/keymaps/default/config.h b/keyboards/ckeys/thedora/keymaps/default/config.h
new file mode 100755
index 000000000..507a9ccdc
--- /dev/null
+++ b/keyboards/ckeys/thedora/keymaps/default/config.h
@@ -0,0 +1,3 @@
1#pragma once
2
3// Add overrides here
diff --git a/keyboards/ckeys/thedora/keymaps/default/keymap.c b/keyboards/ckeys/thedora/keymaps/default/keymap.c
new file mode 100755
index 000000000..c407fbe26
--- /dev/null
+++ b/keyboards/ckeys/thedora/keymaps/default/keymap.c
@@ -0,0 +1,155 @@
1#include QMK_KEYBOARD_H
2
3enum layers {
4 _BASE, // base layer
5 _MUSIC, // music mode
6 _MIDI, // midi mode
7 _MOUSE, // mouse keys
8 _ADMIN // admin duties
9};
10
11const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
12
13// ┌─────────┬─────────┬─────────┬─────────┬─────────┐
14// │ │ │ │ │ │
15// │ 7 │ 8 │ 9 │ / │ ADMIN │
16// ROTORY │ │ │ │ │ │
17// RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
18// VOL UP │ │ │ │ │ │
19// │ 4 │ 5 │ 6 │ * │ MOUSE │
20// ROTORY │ │ │ │ │ │
21// LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
22// VOL DOWN │ │ │ │ │ │
23// │ 1 │ 2 │ 3 │ - │ MIDI │
24// │ │ │ │ │ │
25// ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
26// │ TOGGLE │ │ │ │ │ │
27// │ MUSIC │ 0 │ . │ = │ + │ MUSIC │
28// │ │ │ │ │ │ │
29// └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
30
31 [_BASE] = LAYOUT(
32 KC_KP_7, KC_KP_8, KC_KP_9, KC_PSLS, MO(_ADMIN), MU_TOG,
33 KC_KP_4, KC_KP_5, KC_KP_6, KC_PAST, TG(_MOUSE),
34 KC_KP_1, KC_KP_2, KC_KP_3, KC_PMNS, TG(_MIDI),
35 KC_KP_0, KC_KP_DOT, KC_KP_EQUAL, KC_PPLS, MO(_MUSIC)
36 ),
37
38// MUSIC LAYER
39 // ┌─────────┬─────────┬─────────┬─────────┬─────────┐
40 // │ │ │ │ │ │
41 // │ │ │ │ │ │
42 // ROTORY │ │ │ │ │ │
43 // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
44 // PAGE UP │ │ │ │ │ │
45 // │ │ │ │ │ │
46 // ROTORY │ │ │ │ │ │
47 // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
48 // PAGE DOWN│ │ │ │ │ │
49 // │ │ │ │ MODE │ │
50 // │ │ │ │ │ │
51 //┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
52 //│ │ │ │ │ │ │
53 //│ │ RECORD │ STOP │ │ PLAY │ │
54 //│ │ │ │ │ │ │
55 //└─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
56
57 [_MUSIC] = LAYOUT(
58 _______, _______, _______, _______, _______, _______,
59 _______, _______, _______, _______, _______,
60 _______, _______, _______, _______, MU_MOD,
61 KC_LCTL, KC_LALT, _______, KC_LGUI, _______
62 ),
63
64// MIDI LAYER
65// ┌─────────┬─────────┬─────────┬─────────┬─────────┐
66// │ │ │ │ │ │
67// │ D♯ │ E │ F │ F♯ │ G │
68// ROTORY │ │ │ │ │ │
69// RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
70// PAGE UP │ │ │ │ │ │
71// │ A♯ │ B │ C │ C♯ │ D │
72// ROTORY │ │ │ │ │ │
73// LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
74// PAGE DOWN│ │ │ │ │ │
75// │ F │ F♯ │ G │ G♯ │ A │
76// │ │ │ │ │ │
77// ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
78// │ │ │ │ │ │ │
79// │ │ C │ C♯ │ D │ D♯ │ E │
80// │ │ │ │ │ │ │
81// └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
82
83 [_MIDI] = LAYOUT(
84 MI_Ds_3, MI_E_3, MI_F_3, MI_Fs_3, MI_G_3, _______,
85 MI_As_2, MI_B_2, MI_C_3, MI_Cs_3, MI_D_3,
86 MI_F_2, MI_Fs_2, MI_G_2, MI_Gs_2, TG(_MIDI),
87 MI_C_2, MI_Cs_2, MI_D_2, MI_Ds_2, MI_E_2
88 ),
89
90// MOUSE LAYER
91// ┌─────────┬─────────┬─────────┬─────────┬─────────┐
92// │ │ │ │ │ │
93// │ BTN 5 │ │ WHEEL │ │ │
94// ROTORY │ │ │ UP │ │ │
95// RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
96// PAGE DOWN│ │ │ │ │ │
97// │ │ LEFT │ MOUSE │ RIGHT │ │
98// ROTORY │ │ CLICK │ UP │ CLICK │ │
99// LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
100// PAGE UP │ │ │ │ │ │
101// │ BTN 4 │ MOUSE │ MOUSE │ MOUSE │ │
102// │ │ LEFT │ DOWN │ RIGHT │ │
103// ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
104// │ │ │ │ │ │ │
105// │ │ BTN 3 │ WHEEL │ WHEEL │ WHEEL │ │
106// │ │ │ LEFT │ DOWN │ RIGHT │ │
107// └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
108
109 [_MOUSE] = LAYOUT(
110 KC_MS_BTN5, _______, KC_MS_WH_UP, _______, _______, _______,
111 _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, TG(_MOUSE),
112 KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______,
113 KC_MS_BTN3, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, _______
114 ),
115
116// ADMIN LAYER
117// ┌─────────┬─────────┬─────────┬─────────┬─────────┐
118// │ │ │ │ │ │
119// │ RESET │ │ │ │ │
120// ROTORY │ │ │ │ │ │
121// RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
122// PAGE UP │ │ │ │ │ │
123// │ 4 │ 5 │ 6 │ * │ │
124// ROTORY │ │ │ │ │ │
125// LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
126// PAGE DOWN│ │ │ │ │ │
127// │ 1 │ 2 │ 3 │ │ │
128// │ │ │ │ │ │
129// ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
130// │ │ │ │ │ │ │
131// │ │ 0 │ . │ = │ │ │
132// │ │ │ │ │ │ │
133// └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
134
135 [_ADMIN] = LAYOUT(
136 RESET, _______, _______, _______, TG(_ADMIN), _______,
137 _______, _______, _______, _______, _______,
138 _______, _______, _______, _______, _______,
139 _______, _______, _______, _______, _______
140 ),
141};
142
143bool process_record_user(uint16_t keycode, keyrecord_t *record) {
144 return true;
145};
146
147void encoder_update_user(uint8_t index, bool clockwise) {
148 if (index == 0) { /* First encoder */
149 if (clockwise) {
150 tap_code(KC_PGDN);
151 } else {
152 tap_code(KC_PGUP);
153 }
154 }
155}
diff --git a/keyboards/ckeys/thedora/keymaps/default/readme.md b/keyboards/ckeys/thedora/keymaps/default/readme.md
new file mode 100755
index 000000000..4594bdfe3
--- /dev/null
+++ b/keyboards/ckeys/thedora/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for the cKeys Handwire 101 4x4 keyboard. \ No newline at end of file
diff --git a/keyboards/ckeys/thedora/readme.md b/keyboards/ckeys/thedora/readme.md
new file mode 100755
index 000000000..920162075
--- /dev/null
+++ b/keyboards/ckeys/thedora/readme.md
@@ -0,0 +1,57 @@
1# theDora Board
2
3![Thedora Board](https://ckeys.org/images/exboard-3.jpg)
4
5A 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?
6
7Keyboard Maintainer: [brandenbyers](https://github.com/brandenbyers)
8Hardware Supported: theDora
9Hardware Availability: [cKeys.org](https://ckeys.org)
10
11Make example for this keyboard (after setting up your build environment):
12
13`make ckeys/thedora:default`
14
15See 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).
16
17---
18
19## Slides
20
21Slides can be found at: https://ckeys.org/slides/exboard/
22
23## Case Design
24
25The acrylic laser cutter file is coming soon!
26
27## PCB Design
28
29All cKeys PCBs are open source. However, this one has not been posted yet because it needs to be cleaned up a bit! Coming soon!
30
31## Firmware
32
33If 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.
34
35Building for Proton C: `make ckeys/thedora:default`
36
37## Default Layout
38
39You can find the default layout in `thedora/keymaps/default/keymap.c`
40
41## Rotary Encoder
42
43This 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.
44
45```
46void encoder_update_user(uint8_t index, bool clockwise) {
47 if (index == 0) { /* First encoder */
48 if (clockwise) {
49 tap_code(KC_PGDN); // What the rotary encoder repeatedly does when turned right.
50 } else {
51 tap_code(KC_PGUP); // What it does when turned to the left.
52 }
53 }
54}
55```
56
57![The Dora Board](https://ckeys.org/images/exboard-1.jpg)
diff --git a/keyboards/ckeys/thedora/rules.mk b/keyboards/ckeys/thedora/rules.mk
new file mode 100755
index 000000000..11adbdacd
--- /dev/null
+++ b/keyboards/ckeys/thedora/rules.mk
@@ -0,0 +1,19 @@
1MCU = STM32F303
2
3# Build Options
4# comment out to disable the options.
5#
6BACKLIGHT_ENABLE = no
7BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration
8## (Note that for BOOTMAGIC on Teensy LC you have to use a custom .ld script.)
9MOUSEKEY_ENABLE = yes # Mouse keys
10EXTRAKEY_ENABLE = yes # Audio control and System control
11CONSOLE_ENABLE = no # Console for debug
12COMMAND_ENABLE = no # Commands for debug and configuration
13#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
14NKRO_ENABLE = yes # USB Nkey Rollover
15AUDIO_ENABLE = yes
16MIDI_ENABLE = yes # MIDI controls
17RGBLIGHT_ENABLE = no
18ENCODER_ENABLE = yes
19# SERIAL_LINK_ENABLE = yes
diff --git a/keyboards/ckeys/thedora/thedora.c b/keyboards/ckeys/thedora/thedora.c
new file mode 100755
index 000000000..438320ef1
--- /dev/null
+++ b/keyboards/ckeys/thedora/thedora.c
@@ -0,0 +1,28 @@
1#include "thedora.h"
2
3void matrix_init_kb(void) {
4 // put your keyboard start-up code here
5 // runs once when the firmware starts up
6 // Turn status LED on
7 //DDRD |= (1<<6);
8 //PORTD |= (1<<6);
9
10 matrix_init_user();
11}
12
13void matrix_scan_kb(void) {
14 // put your looping keyboard code here
15 // runs every cycle (a lot)
16 matrix_scan_user();
17}
18
19bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
20 // put your per-action keyboard code here
21 // runs for every action, just before processing by the firmware
22 return process_record_user(keycode, record);
23}
24
25void led_set_kb(uint8_t usb_led) {
26 // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
27 led_set_user(usb_led);
28}
diff --git a/keyboards/ckeys/thedora/thedora.h b/keyboards/ckeys/thedora/thedora.h
new file mode 100755
index 000000000..2c4443c3a
--- /dev/null
+++ b/keyboards/ckeys/thedora/thedora.h
@@ -0,0 +1,21 @@
1#pragma once
2
3#include "quantum.h"
4
5// This a shortcut to help you visually see your layout.
6// The following is an example using the Planck MIT layout
7// The first section contains all of the arguements
8// The second converts the arguments into a two-dimensional array
9#define LAYOUT( \
10 k00, k01, k02, k03, k04, k05, \
11 k06, k07, k08, k09, k10, \
12 k11, k12, k13, k14, k15, \
13 k16, k17, k18, k19, k20 \
14) \
15{ \
16 { k00, k01, k02, k03, k04, k05, }, \
17 { k06, k07, k08, k09, k10 }, \
18 { k11, k12, k13, k14, k15 }, \
19 { k16, k17, k18, k19, k20 } \
20}
21