aboutsummaryrefslogtreecommitdiff
path: root/keyboards/ckeys
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/ckeys')
-rwxr-xr-xkeyboards/ckeys/handwire_101/config.h119
-rwxr-xr-xkeyboards/ckeys/handwire_101/handwire_101.c17
-rwxr-xr-xkeyboards/ckeys/handwire_101/handwire_101.h32
-rw-r--r--keyboards/ckeys/handwire_101/info.json33
-rwxr-xr-xkeyboards/ckeys/handwire_101/keymaps/default/keymap.c191
-rwxr-xr-xkeyboards/ckeys/handwire_101/keymaps/default/readme.md1
-rwxr-xr-xkeyboards/ckeys/handwire_101/readme.md163
-rwxr-xr-xkeyboards/ckeys/handwire_101/rules.mk18
-rw-r--r--keyboards/ckeys/nakey/config.h109
-rw-r--r--keyboards/ckeys/nakey/info.json10
-rw-r--r--keyboards/ckeys/nakey/keymaps/default/keymap.c26
-rw-r--r--keyboards/ckeys/nakey/keymaps/default/readme.md1
-rw-r--r--keyboards/ckeys/nakey/nakey.c15
-rw-r--r--keyboards/ckeys/nakey/nakey.h39
-rw-r--r--keyboards/ckeys/nakey/readme.md49
-rw-r--r--keyboards/ckeys/nakey/rules.mk19
-rw-r--r--keyboards/ckeys/obelus/config.h110
-rw-r--r--keyboards/ckeys/obelus/info.json10
-rw-r--r--keyboards/ckeys/obelus/keymaps/default/keymap.c111
-rw-r--r--keyboards/ckeys/obelus/keymaps/default/readme.md1
-rw-r--r--keyboards/ckeys/obelus/obelus.c11
-rw-r--r--keyboards/ckeys/obelus/obelus.h19
-rw-r--r--keyboards/ckeys/obelus/readme.md19
-rw-r--r--keyboards/ckeys/obelus/rules.mk20
-rw-r--r--keyboards/ckeys/readme.md12
-rwxr-xr-xkeyboards/ckeys/thedora/config.h119
-rw-r--r--keyboards/ckeys/thedora/info.json35
-rwxr-xr-xkeyboards/ckeys/thedora/keymaps/default/keymap.c172
-rwxr-xr-xkeyboards/ckeys/thedora/readme.md66
-rwxr-xr-xkeyboards/ckeys/thedora/rules.mk22
-rwxr-xr-xkeyboards/ckeys/thedora/thedora.c31
-rwxr-xr-xkeyboards/ckeys/thedora/thedora.h37
-rw-r--r--keyboards/ckeys/washington/config.h147
-rw-r--r--keyboards/ckeys/washington/info.json10
-rw-r--r--keyboards/ckeys/washington/keymaps/default/keymap.c84
-rw-r--r--keyboards/ckeys/washington/keymaps/default/readme.md1
-rw-r--r--keyboards/ckeys/washington/readme.md23
-rw-r--r--keyboards/ckeys/washington/rules.mk21
-rw-r--r--keyboards/ckeys/washington/washington.c17
-rw-r--r--keyboards/ckeys/washington/washington.h38
40 files changed, 1978 insertions, 0 deletions
diff --git a/keyboards/ckeys/handwire_101/config.h b/keyboards/ckeys/handwire_101/config.h
new file mode 100755
index 000000000..42e26be86
--- /dev/null
+++ b/keyboards/ckeys/handwire_101/config.h
@@ -0,0 +1,119 @@
1/*
2Copyright 2012 Jun Wako <[email protected]>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED
24#define PRODUCT_ID 0x6060
25#define DEVICE_VER 0x0001
26#define MANUFACTURER cKeys
27#define PRODUCT Handwire 101
28
29/* key matrix size */
30#define MATRIX_ROWS 4
31#define MATRIX_COLS 4
32
33/*
34 * Keyboard Matrix Assignments
35 *
36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 *
42*/
43#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
44#define MATRIX_COL_PINS { D4, C6, D7, E6 }
45
46/* COL2ROW, ROW2COL*/
47#define DIODE_DIRECTION COL2ROW
48
49//#define BACKLIGHT_PIN B7
50// #define BACKLIGHT_BREATHING
51//#define BACKLIGHT_LEVELS 3
52
53
54/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
55#define DEBOUNCE 5
56
57/* define if matrix has ghost (lacks anti-ghosting diodes) */
58//#define MATRIX_HAS_GHOST
59
60/* number of backlight levels */
61
62/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
63#define LOCKING_SUPPORT_ENABLE
64/* Locking resynchronize hack */
65#define LOCKING_RESYNC_ENABLE
66
67/*
68 * Force NKRO
69 *
70 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
71 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
72 * makefile for this to work.)
73 *
74 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
75 * until the next keyboard reset.
76 *
77 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
78 * fully operational during normal computer usage.
79 *
80 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
81 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
82 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
83 * power-up.
84 *
85 */
86//#define FORCE_NKRO
87
88// Audio Click
89//#define AUDIO_CLICKY
90
91// Music Mode Polyphony
92// NOTE: Must change polyphony_rate to a number higher than 0 in voices.c
93//#define AUDIO_VOICES
94//#define PITCH_STANDARD_A 880.0f
95
96// Mouse keys
97#define MOUSEKEY_DELAY 0
98#define MOUSEKEY_INTERVAL 20
99#define MOUSEKEY_MAX_SPEED 2
100#define MOUSEKEY_TIME_TO_MAX 5
101#define MOUSEKEY_WHEEL_DELAY 0
102
103/*
104 * Feature disable options
105 * These options are also useful to firmware size reduction.
106 */
107
108/* disable debug print */
109//#define NO_DEBUG
110
111/* disable print */
112//#define NO_PRINT
113
114/* disable action features */
115//#define NO_ACTION_LAYER
116//#define NO_ACTION_TAPPING
117//#define NO_ACTION_ONESHOT
118//#define NO_ACTION_MACRO
119//#define NO_ACTION_FUNCTION
diff --git a/keyboards/ckeys/handwire_101/handwire_101.c b/keyboards/ckeys/handwire_101/handwire_101.c
new file mode 100755
index 000000000..7d251ddce
--- /dev/null
+++ b/keyboards/ckeys/handwire_101/handwire_101.c
@@ -0,0 +1,17 @@
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#include "handwire_101.h"
diff --git a/keyboards/ckeys/handwire_101/handwire_101.h b/keyboards/ckeys/handwire_101/handwire_101.h
new file mode 100755
index 000000000..5d6ef6ff0
--- /dev/null
+++ b/keyboards/ckeys/handwire_101/handwire_101.h
@@ -0,0 +1,32 @@
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 "quantum.h"
20
21#define LAYOUT_ortho_4x4( \
22 k00, k01, k02, k03, \
23 k10, k11, k12, k13, \
24 k20, k21, k22, k23, \
25 k30, k31, k32, k33 \
26) \
27{ \
28 { k00, k01, k02, k03 }, \
29 { k10, k11, k12, k13 }, \
30 { k20, k21, k22, k23 }, \
31 { k30, k31, k32, k33 } \
32}
diff --git a/keyboards/ckeys/handwire_101/info.json b/keyboards/ckeys/handwire_101/info.json
new file mode 100644
index 000000000..19e6edb48
--- /dev/null
+++ b/keyboards/ckeys/handwire_101/info.json
@@ -0,0 +1,33 @@
1{
2 "keyboard_name": "cKeys Handwire 101",
3 "url": "https://ckeys.org/slides/handwire/",
4 "maintainer": "brandenbyers",
5 "layout_aliases": {
6 "LAYOUT": "LAYOUT_ortho_4x4"
7 },
8 "layouts": {
9 "LAYOUT_ortho_4x4": {
10 "layout": [
11 {"x":0, "y":0},
12 {"x":1, "y":0},
13 {"x":2, "y":0},
14 {"x":3, "y":0},
15
16 {"x":0, "y":1},
17 {"x":1, "y":1},
18 {"x":2, "y":1},
19 {"x":3, "y":1},
20
21 {"x":0, "y":2},
22 {"x":1, "y":2},
23 {"x":2, "y":2},
24 {"x":3, "y":2},
25
26 {"x":0, "y":3},
27 {"x":1, "y":3},
28 {"x":2, "y":3},
29 {"x":3, "y":3}
30 ]
31 }
32 }
33}
diff --git a/keyboards/ckeys/handwire_101/keymaps/default/keymap.c b/keyboards/ckeys/handwire_101/keymaps/default/keymap.c
new file mode 100755
index 000000000..fdca99fd0
--- /dev/null
+++ b/keyboards/ckeys/handwire_101/keymaps/default/keymap.c
@@ -0,0 +1,191 @@
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#include QMK_KEYBOARD_H
18
19enum layers {
20 _BASE, // base layer
21 _LAYERS, // layer of all layers
22 _MUSIC, // music mode
23 _MUSIC_4_LIFE, // music mode until unplugged
24 _MOUSE, // mousekeys
25 _TERMINAL, // terminal
26 _ADMIN // admin duties
27};
28
29enum custom_keycodes {
30 TERM_ABOUT = SAFE_RANGE,
31 TERM_PRINT,
32 TERM_FLUSH,
33 TERM_HELP,
34 CKEYS_ABOUT,
35};
36
37
38const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
39 /* BASE (numpad)
40 * ,-----------------------.
41 * | 7 | 8 | 9 | / | <-- Hold for LAYERS
42 * |-----+-----+-----+-----|
43 * | 4 | 5 | 6 | * |
44 * |-----+-----+-----+-----|
45 * | 1 | 2 | 3 | - |
46 * |-----+-----+-----+-----|
47 * | 0 | . | = | + |
48 * `-----------------------'
49 */
50 [_BASE] = LAYOUT_ortho_4x4(
51 KC_P7, KC_P8, KC_P9, LT(_LAYERS, KC_PSLS),
52 KC_P4, KC_P5, KC_P6, KC_PAST,
53 KC_P1, KC_P2, KC_P3, KC_PMNS,
54 KC_P0, KC_PDOT, KC_PEQL, KC_PPLS
55 ),
56 /* LAYERS
57 * ,---------------------------.
58 * | MUSIC | | | X |
59 * |---------+-----+-----+-----|
60 * | MOUSE | | | |
61 * |---------+-----+-----+-----|
62 * |TERMINAL | | | |
63 * |---------+-----+-----+-----|
64 * | ADMIN | | | |
65 * `---------------------------'
66 */
67 [_LAYERS] = LAYOUT_ortho_4x4(
68 TG(_MUSIC), _______, _______, _______,
69 TG(_MOUSE), _______, _______, _______,
70 TG(_TERMINAL), _______, _______, _______,
71 TG(_ADMIN), _______, _______, _______
72 ),
73 /* MUSIC
74 * ,-----------------------.
75 * | X | | | X |
76 * |-----+-----+-----+-----|
77 * | | | |4EVER|
78 * |-----+-----+-----+-----|
79 * | OFF | | | |
80 * |-----+-----+-----+-----|
81 * | ON | | |MODES|
82 * `-----------------------'
83 */
84 // TODO: Make this music layer the one to jump to other music layers (different octaves)
85 [_MUSIC] = LAYOUT_ortho_4x4(
86 _______, _______, _______, _______,
87 _______, _______, _______, TG(_MUSIC_4_LIFE),
88 MU_OFF, _______, _______, _______,
89 MU_ON, _______, _______, MU_MOD
90 ),
91 /* MUSIC_4_LIFE
92 * ,-----------------------.
93 * | ♫ | ♫ | ♫ | ♫ |
94 * |-----+-----+-----+-----|
95 * | ♫ | ♫ | ♫ | ♫ |
96 * |-----+-----+-----+-----|
97 * | ♫ | ♫ | ♫ | ♫ |
98 * |-----+-----+-----+-----|
99 * | ♫ | ♫ | ♫ | ♫ |
100 * `-----------------------'
101 */
102 [_MUSIC_4_LIFE] = LAYOUT_ortho_4x4(
103 KC_M, KC_M, KC_M, KC_M,
104 KC_M, KC_M, KC_M, KC_M,
105 KC_M, KC_M, KC_M, KC_M,
106 KC_M, KC_M, KC_M, KC_M
107 ),
108 /* MOUSE
109 * ,-------------------------------------------------.
110 * | BUTTON 5 | | SCROLL UP | X |
111 * |-----------+-----------+------------+------------|
112 * | X |LEFT CLICK | UP |RIGHT CLICK |
113 * |-----------+-----------+------------+------------|
114 * | BUTTON 4 | LEFT | DOWN | RIGHT |
115 * |-----------+-----------+------------+------=-----|
116 * | BUTTON 3 |SCROLL LEFT|SCROLL DOWN |SCROLL RIGHT|
117 * `-------------------------------------------------'
118 */
119 [_MOUSE] = LAYOUT_ortho_4x4(
120 KC_BTN5, _______, KC_WH_U, _______,
121 _______, KC_BTN1, KC_MS_U, KC_BTN2,
122 KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R,
123 KC_BTN3, KC_WH_L, KC_WH_D, KC_WH_R
124 ),
125 /* TERMINAL
126 * ,---------------------------------------.
127 * | |ABOUT| | X |
128 * |------------+-----+----------+---------|
129 * |TERMINAL OFF|PRINT| | |
130 * |------------+-----+----------+---------|
131 * | X |FLUSH| | |
132 * |------------+-----+----------+---------|
133 * |TERMINAL ON |HELP | | |
134 * `--------=======------------------------'
135 */
136 [_TERMINAL] = LAYOUT_ortho_4x4(
137 _______, TERM_ABOUT, _______, _______,
138 TERM_OFF, TERM_PRINT, _______, _______,
139 _______, TERM_FLUSH, _______, _______,
140 TERM_ON, TERM_HELP , _______, _______
141 ),
142 /* ADMIN
143 * ,-----------------------------------------.
144 * | RESET | | | X |
145 * |------------+-----+-----------+----------|
146 * |ABOUT CKEYS | | | |
147 * |------------+-----+-----------+----------|
148 * | | |CLICKY UP |CLICKY OFF|
149 * |------------+-----+-----------+----------|
150 * | X | |CLICKY DOWN|CLICKY ON |
151 * `-----------------------------------------'
152 */
153 [_ADMIN] = LAYOUT_ortho_4x4(
154 RESET, _______, _______, _______,
155 CKEYS_ABOUT, _______, _______, _______,
156 _______, _______, _______, CK_OFF,
157 _______, _______, _______, CK_ON
158 ),
159};
160
161bool process_record_user(uint16_t keycode, keyrecord_t *record) {
162 switch (keycode) {
163 case TERM_ABOUT:
164 if (record->event.pressed) {
165 // when keycode TERM_ABOUT is pressed
166 SEND_STRING("about\n");
167 }
168 break;
169 case TERM_PRINT:
170 if (record->event.pressed) {
171 SEND_STRING("print\n");
172 }
173 break;
174 case TERM_FLUSH:
175 if (record->event.pressed) {
176 SEND_STRING("flush\n");
177 }
178 break;
179 case TERM_HELP:
180 if (record->event.pressed) {
181 SEND_STRING("help\n");
182 }
183 break;
184 case CKEYS_ABOUT:
185 if (record->event.pressed) {
186 SEND_STRING("https://cKeys.org\nMaking people smile one keyboard at a time.\ncKeys is a volunteer-run 501(c)(3) nonprofit organization.\n");
187 }
188 break;
189 }
190 return true;
191};
diff --git a/keyboards/ckeys/handwire_101/keymaps/default/readme.md b/keyboards/ckeys/handwire_101/keymaps/default/readme.md
new file mode 100755
index 000000000..4594bdfe3
--- /dev/null
+++ b/keyboards/ckeys/handwire_101/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/handwire_101/readme.md b/keyboards/ckeys/handwire_101/readme.md
new file mode 100755
index 000000000..cf20dab60
--- /dev/null
+++ b/keyboards/ckeys/handwire_101/readme.md
@@ -0,0 +1,163 @@
1# cKeys Handwire 101 Workshop
2
3![](https://ckeys.org/images/proton-c-handwire-1.jpg)
4
5## Slides
6
7Slides can be found at: https://ckeys.org/slides/handwire/
8
9## Case Design
10
11The laser cutting file is ideal for Ponoko's P1 board size.
12
13## Firmware
14
15If you want to reflash the pre-installed firmware, use the `.bin` file for Proton C and the `.hex` file for Pro Micro builds. Flash with the QMK Toolbox or via the command line.
16
17Building for Proton C: `make ckeys/handwire_101:default CTPC=yes`
18Building for Pro Micro: `make ckeys/handwire_101:default`
19
20Pre-built firmware files (and laser cutting case files) can be found here: https://github.com/c-keys/handwire
21
22## Default Layout
23
24You can find the default layout in `qmk-handwire/keymaps/default/keymap.c`
25
26### Layers
27
28When you plug in your keyboard, it will function as a numpad. You will remain in the `Base` numpad layer unless you hold down the top right corner key and select one of the keys in the left most column. In QMK, this is called a momentary switch and looks like `MO(LAYERS)` in the default `keymap.c`. You can read more about layer switching in the [QMK Documentation](https://beta.docs.qmk.fm/features/feature_advanced_keycodes#switching-and-toggling-layers).
29
30#### Base
31```
32 /* BASE (numpad)
33 * ,-----------------------.
34 * | 7 | 8 | 9 | / | <-- Hold for LAYERS
35 * |-----+-----+-----+-----|
36 * | 4 | 5 | 6 | * |
37 * |-----+-----+-----+-----|
38 * | 1 | 2 | 3 | - |
39 * |-----+-----+-----+-----|
40 * | 0 | . | = | + |
41 * `---------------------- '
42 */
43```
44
45#### Layers
46
47```
48 /* LAYERS
49 * ,---------------------------.
50 * | MUSIC | | | X |
51 * |---------+-----+-----+-----|
52 * | MOUSE | | | |
53 * |---------+-----+-----+-----|
54 * |TERMINAL | | | |
55 * |---------+-----+-----+-----|
56 * | ADMIN | | | |
57 * `---------------------------'
58 */
59```
60
61This is the layers layer. This is how you toggle other layers on and off. If you toggle on a layer, it is important that you re-toggle that layer offbefore switching to a new layer.
62
63#### Music
64
65```
66 /* MUSIC
67 * ,-----------------------.
68 * | X | | | X |
69 * |-----+-----+-----+-----|
70 * | | | |4EVER|
71 * |-----+-----+-----+-----|
72 * | OFF | | | |
73 * |-----+-----+-----+-----|
74 * | ON | | |MODES|
75 * `---------------------- '
76 */
77```
78
79You can toggle the music mode on and off. You can also change the mode of music modes. Lastly, you can switch to the Music 4 Life mode but tapping the key marked `4EVER` above (see below). For more information on music mode, see the [QMK Documentation](https://beta.docs.qmk.fm/features/feature_audio).
80
81_NOTE: This layer will only make sounds if you install a speaker. At the time of this writing, you can get the Proton C specific piezo speaker for [$2.61 with free overnight shipping](https://www.arrow.com/en/products/ast1109mltrq/mallory-sonalert-products). You can solder it on by desoldering the row wires where they contact the cathode end of the diodes. Then flip over the Proton C and solder the piezo speaker in. Then re-solder the row wires and you should hear beeps and boops the next time you plug in your keyboard._
82
83#### Music 4 Life
84
85```
86 /* MUSIC_4_LIFE
87 * ,-----------------------.
88 * | ♫ | ♫ | ♫ | ♫ |
89 * |-----+-----+-----+-----|
90 * | ♫ | ♫ | ♫ | ♫ |
91 * |-----+-----+-----+-----|
92 * | ♫ | ♫ | ♫ | ♫ |
93 * |-----+-----+-----+-----|
94 * | ♫ | ♫ | ♫ | ♫ |
95 * `---------------------- '
96 */
97```
98
99Music mode on every single key. However, you will need to unplug your keyboard in order to get out of this mode. The benefit of this is that you can use every single key as opposed to the few left over in the Music Mode layer. Try changing the chromatic mode before switching to this mode.
100
101#### Mouse
102
103```
104 /* MOUSE
105 * ,-------------------------------------------------.
106 * | BUTTON 5 | | SCROLL UP | X |
107 * |-----------+-----------+------------+------------|
108 * | X |LEFT CLICK | UP |RIGHT CLICK |
109 * |-----------+-----------+------------+------------|
110 * | BUTTON 4 | LEFT | DOWN | RIGHT |
111 * |-----------+-----------+------------+------=-----|
112 * | BUTTON 3 |SCROLL LEFT|SCROLL DOWN |SCROLL RIGHT|
113 * `-------------------------------------------------'
114 */
115```
116
117Switch to this mode, force yourself through the steep transitionary period, and then you can ditch mice and trackpads forever!
118
119#### Terminal
120
121```
122 /* TERMINAL
123 * ,---------------------------------------.
124 * | |ABOUT| | X |
125 * |------------+-----+----------+---------|
126 * |TERMINAL OFF|PRINT| | |
127 * |------------+-----+----------+---------|
128 * | X |FLUSH| | |
129 * |------------+-----+----------+---------|
130 * |TERMINAL ON |HELP | | |
131 * `--------=======------------------------'
132 */
133```
134
135This layer is not currently working but has been left as an example of how to write macros.
136
137#### Admin
138
139```
140 /* ADMIN
141 * ,-----------------------------------------.
142 * | RESET | | | X |
143 * |------------+-----+-----------+----------|
144 * |ABOUT CKEYS | | | |
145 * |------------+-----+-----------+----------|
146 * | | |CLICKY UP |CLICKY OFF|
147 * |------------+-----+-----------+----------|
148 * | X | |CLICKY DOWN|CLICKY ON |
149 * `-----------------------------------------'
150 */
151```
152
153The most important key in this layer is the `RESET` switch. Use it to flash new firmware. It does the same thing as the hardware button on the Proton C. But since you soldered the Proton C with the reset button facing towards the keys, the only way to reach it is to de-solder wires. The reset switch solves this. Program a reset switch into all of your future keyboards.
154
155The `ABOUT CKEYS` is another example of using a macro. It will type out a few sentences about cKeys.
156
157The clicky buttons will only make a difference if you install a piezo speaker. If you install a speaker, then you can make your keyboard extra clicky sounding even if you did not install clicky switches.
158
159![](https://ckeys.org/images/proton-c-handwire-2.jpg)
160![](https://ckeys.org/images/proton-c-handwire-3.jpg)
161![](https://ckeys.org/images/handwire-1.jpg)
162![](https://ckeys.org/images/handwire-2.jpg)
163![](https://ckeys.org/images/handwire-3.jpg)
diff --git a/keyboards/ckeys/handwire_101/rules.mk b/keyboards/ckeys/handwire_101/rules.mk
new file mode 100755
index 000000000..8fa32bcee
--- /dev/null
+++ b/keyboards/ckeys/handwire_101/rules.mk
@@ -0,0 +1,18 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = caterina
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15TERMINAL_ENABLE = yes
16NKRO_ENABLE = yes # Enable N-Key Rollover
17BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
18AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/ckeys/nakey/config.h b/keyboards/ckeys/nakey/config.h
new file mode 100644
index 000000000..26ba86e14
--- /dev/null
+++ b/keyboards/ckeys/nakey/config.h
@@ -0,0 +1,109 @@
1/*
2Copyright 2018 James Underwood
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED
24#define PRODUCT_ID 0x6060
25#define DEVICE_VER 0x0001
26#define MANUFACTURER cKeys
27#define PRODUCT naKey
28
29/* key matrix size */
30#define MATRIX_ROWS 5
31#define MATRIX_COLS 4
32
33/*
34 * Keyboard Matrix Assignments
35 *
36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 *
42*/
43#define MATRIX_ROW_PINS { F1, F4, F5, F6, F7 }
44#define MATRIX_COL_PINS { B0, B1, B2, B3 }
45#define UNUSED_PINS { D0, D1, D2, D3, D4, D5, D6, D7, C6, C7, B4, B5, B6, B7 }
46
47/* COL2ROW, ROW2COL*/
48#define DIODE_DIRECTION COL2ROW
49
50// #define BACKLIGHT_PIN B7
51// #define BACKLIGHT_BREATHING
52// #define BACKLIGHT_LEVELS 3
53
54/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
55#define DEBOUNCE 5
56
57/* define if matrix has ghost (lacks anti-ghosting diodes) */
58//#define MATRIX_HAS_GHOST
59
60/* number of backlight levels */
61
62/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
63#define LOCKING_SUPPORT_ENABLE
64/* Locking resynchronize hack */
65#define LOCKING_RESYNC_ENABLE
66
67/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
68 * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
69 */
70// #define GRAVE_ESC_CTRL_OVERRIDE
71
72/*
73 * Force NKRO
74 *
75 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
76 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
77 * makefile for this to work.)
78 *
79 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
80 * until the next keyboard reset.
81 *
82 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
83 * fully operational during normal computer usage.
84 *
85 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
86 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
87 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
88 * power-up.
89 *
90 */
91//#define FORCE_NKRO
92
93/*
94 * Feature disable options
95 * These options are also useful to firmware size reduction.
96 */
97
98/* disable debug print */
99//#define NO_DEBUG
100
101/* disable print */
102//#define NO_PRINT
103
104/* disable action features */
105//#define NO_ACTION_LAYER
106//#define NO_ACTION_TAPPING
107//#define NO_ACTION_ONESHOT
108//#define NO_ACTION_MACRO
109//#define NO_ACTION_FUNCTION
diff --git a/keyboards/ckeys/nakey/info.json b/keyboards/ckeys/nakey/info.json
new file mode 100644
index 000000000..2f939be57
--- /dev/null
+++ b/keyboards/ckeys/nakey/info.json
@@ -0,0 +1,10 @@
1{
2 "keyboard_name": "naKey",
3 "url": "",
4 "maintainer": "qmk",
5 "layouts": {
6 "LAYOUT_numpad_5x4": {
7 "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":3, "h":2}]
8 }
9 }
10}
diff --git a/keyboards/ckeys/nakey/keymaps/default/keymap.c b/keyboards/ckeys/nakey/keymaps/default/keymap.c
new file mode 100644
index 000000000..c17cd35cb
--- /dev/null
+++ b/keyboards/ckeys/nakey/keymaps/default/keymap.c
@@ -0,0 +1,26 @@
1/* Copyright 2018 James Underwood
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#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT_numpad_5x4( /* Base */
20 KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
21 KC_P7, KC_P8, KC_P9,
22 KC_P4, KC_P5, KC_P6, KC_PPLS,
23 KC_P1, KC_P2, KC_P3,
24 KC_P0, KC_PDOT, KC_PENT
25 ),
26};
diff --git a/keyboards/ckeys/nakey/keymaps/default/readme.md b/keyboards/ckeys/nakey/keymaps/default/readme.md
new file mode 100644
index 000000000..c842dc99a
--- /dev/null
+++ b/keyboards/ckeys/nakey/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for naKey
diff --git a/keyboards/ckeys/nakey/nakey.c b/keyboards/ckeys/nakey/nakey.c
new file mode 100644
index 000000000..84c0b03ff
--- /dev/null
+++ b/keyboards/ckeys/nakey/nakey.c
@@ -0,0 +1,15 @@
1/* Copyright 2018 James Underwood
2 * This program is free software: you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation, either version 2 of the License, or
5 * (at your option) any later version.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 */
15#include "nakey.h"
diff --git a/keyboards/ckeys/nakey/nakey.h b/keyboards/ckeys/nakey/nakey.h
new file mode 100644
index 000000000..bdb26afa2
--- /dev/null
+++ b/keyboards/ckeys/nakey/nakey.h
@@ -0,0 +1,39 @@
1/* Copyright 2018 James Underwood
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 "quantum.h"
20
21#define XXX KC_NO
22
23// This a shortcut to help you visually see your layout.
24// The following is an example using the Planck MIT layout
25// The first section contains all of the arguments
26// The second converts the arguments into a two-dimensional array
27#define LAYOUT_numpad_5x4( \
28 k00, k01, k02, k03, \
29 k10, k11, k12, \
30 k20, k21, k22, k13, \
31 k30, k31, k32, \
32 k40, k41, k33 \
33) { \
34 { k00, k01, k02, k03 }, \
35 { k10, k11, k12, k13 }, \
36 { k20, k21, k22, XXX }, \
37 { k30, k31, k32, k33 }, \
38 { k40, XXX, k41, XXX } \
39}
diff --git a/keyboards/ckeys/nakey/readme.md b/keyboards/ckeys/nakey/readme.md
new file mode 100644
index 000000000..b85e822ab
--- /dev/null
+++ b/keyboards/ckeys/nakey/readme.md
@@ -0,0 +1,49 @@
1# naKey
2
3Firmware for custom keyboard
4
5Keyboard Maintainer: [James Underwood](https://github.com/ju0)
6Hardware Supported: naKey
7Hardware Availability: [ckeys.org](https://ckeys.org)
8
9To build this keyboard, follow the [build guide](https://ckeys.org/tutorials/nakey-numpad-build-guide/).
10
11Make example for this keyboard (after setting up your build environment):
12
13 make ckeys/nakey:default
14
15See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
16
17## Quantum MK Firmware
18
19For the full Quantum feature list, see [the parent readme](/).
20
21## Building
22
23Download or clone the whole firmware and navigate to the root folder. Once your dev env is setup, you'll be able to type `make ckeys/nakey:default` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
24
25(Note: replace naKey with the name of your keyboard.)
26
27Depending on which keymap you would like to use, you will have to compile slightly differently.
28
29### Default
30
31To build with the default keymap, simply run `make ckeys/nakey:default`.
32
33### Other Keymaps
34
35Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder. Create a `readme.md` and a `keymap.c` file to complete your new keymap. When you are done your file tree should look like this:
36
37* `qmk_firmware/`
38 * `keyboard/`
39 * `keymaps/`
40 * `config.h` (optional)
41 * `keymap.c`
42 * `readme.md`
43 * `rules.mk` (optional)
44
45To build the firmware binary hex file with a keymap just do `make` with a keymap like this:
46
47```
48$ make naKey-[default|jack|<name>]
49```
diff --git a/keyboards/ckeys/nakey/rules.mk b/keyboards/ckeys/nakey/rules.mk
new file mode 100644
index 000000000..fcdb03996
--- /dev/null
+++ b/keyboards/ckeys/nakey/rules.mk
@@ -0,0 +1,19 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = halfkay
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = yes # Console for debug
14COMMAND_ENABLE = yes # Commands for debug and configuration
15NKRO_ENABLE = no # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17AUDIO_ENABLE = no # Audio output
18
19LAYOUTS = numpad_5x4
diff --git a/keyboards/ckeys/obelus/config.h b/keyboards/ckeys/obelus/config.h
new file mode 100644
index 000000000..00e224c20
--- /dev/null
+++ b/keyboards/ckeys/obelus/config.h
@@ -0,0 +1,110 @@
1/*
2Copyright 2012 Jun Wako <[email protected]>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xFEED
24#define PRODUCT_ID 0x6060
25#define DEVICE_VER 0x0001
26#define MANUFACTURER You
27#define PRODUCT obelus
28
29/* key matrix size */
30#define MATRIX_ROWS 4
31#define MATRIX_COLS 4
32
33/*
34 * Keyboard Matrix Assignments
35 *
36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 *
42*/
43#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
44#define MATRIX_COL_PINS { F0, F1, B2, B3 }
45#define UNUSED_PINS
46
47/* COL2ROW, ROW2COL*/
48#define DIODE_DIRECTION COL2ROW
49
50#define BACKLIGHT_PIN B7
51// #define BACKLIGHT_BREATHING
52#define BACKLIGHT_LEVELS 3
53
54/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
55#define DEBOUNCE 5
56
57/* define if matrix has ghost (lacks anti-ghosting diodes) */
58//#define MATRIX_HAS_GHOST
59
60/* number of backlight levels */
61
62/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
63#define LOCKING_SUPPORT_ENABLE
64/* Locking resynchronize hack */
65#define LOCKING_RESYNC_ENABLE
66
67/*
68 * Force NKRO
69 *
70 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
71 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
72 * makefile for this to work.)
73 *
74 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
75 * until the next keyboard reset.
76 *
77 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
78 * fully operational during normal computer usage.
79 *
80 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
81 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
82 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
83 * power-up.
84 *
85 */
86//#define FORCE_NKRO
87
88/*
89 * Feature disable options
90 * These options are also useful to firmware size reduction.
91 */
92
93/* disable debug print */
94//#define NO_DEBUG
95
96/* disable print */
97//#define NO_PRINT
98
99/* disable action features */
100//#define NO_ACTION_LAYER
101//#define NO_ACTION_TAPPING
102//#define NO_ACTION_ONESHOT
103//#define NO_ACTION_MACRO
104//#define NO_ACTION_FUNCTION
105
106#ifdef AUDIO_ENABLE
107 #define AUDIO_VOICES
108 #define AUDIO_PIN C6
109 #define STARTUP_SONG SONG(STARTUP_SOUND)
110#endif
diff --git a/keyboards/ckeys/obelus/info.json b/keyboards/ckeys/obelus/info.json
new file mode 100644
index 000000000..f930f65bc
--- /dev/null
+++ b/keyboards/ckeys/obelus/info.json
@@ -0,0 +1,10 @@
1{
2 "keyboard_name": "Obelus",
3 "url": "",
4 "maintainer": "qmk",
5 "layouts": {
6 "LAYOUT_ortho_4x4": {
7 "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}]
8 }
9 }
10}
diff --git a/keyboards/ckeys/obelus/keymaps/default/keymap.c b/keyboards/ckeys/obelus/keymaps/default/keymap.c
new file mode 100644
index 000000000..5d5bfc6d2
--- /dev/null
+++ b/keyboards/ckeys/obelus/keymaps/default/keymap.c
@@ -0,0 +1,111 @@
1#include QMK_KEYBOARD_H
2
3
4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
5 /* LAYERS
6 * ,-----------------------.
7 * | | | |RESET|
8 * |-----+-----+-----+-----|
9 * |MUSIC| | | |
10 * |-----+-----+-----+-----|
11 * |NUMPD| NAV |GAMES| |
12 * |-----+-----+-----+-----|
13 * | | | | |
14 * `---------------------- '
15 */
16 [0] = LAYOUT_ortho_4x4( /* LAYER SELECT */
17 _______, _______, _______, RESET,
18 TO(4), _______, _______, _______,
19 TO(1), TO(2), TO(3), _______,
20 _______, _______, _______, _______
21 ),
22 /* NUMPAD
23 * ,-----------------------.
24 * | 7 | 8 | 9 | * |
25 * |-----+-----+-----+-----|
26 * | 4 | 5 | 6 | - |
27 * |-----+-----+-----+-----|
28 * | 1 | 2 | 3 | + |
29 * |-----+-----+-----+-----|
30 * | 0 | . | / | = |
31 * `---------------------- '
32 */
33 [1] = LAYOUT_ortho_4x4( /* NUMPAD */
34 KC_P7, KC_P8, KC_P9, KC_PAST,
35 KC_P4, KC_P5, KC_P6, KC_PMNS,
36 KC_P1, KC_P2, KC_P3, KC_PPLS,
37 KC_P0, KC_PDOT, KC_PSLS, LT(5, KC_PENT)
38 ),
39 /* NUMPAD SUPPLEMENT
40 * ,-----------------------.
41 * |NUMLK| | | |
42 * |-----+-----+-----+-----|
43 * | | | | |
44 * |-----+-----+-----+-----|
45 * | | | | |
46 * |-----+-----+-----+-----|
47 * | | | | |
48 * `---------------------- '
49 */
50 [5] = LAYOUT_ortho_4x4( /* NUMPAD SUPPLEMENT */
51 KC_NLCK, _______, _______, TO(0),
52 _______, _______, _______, _______,
53 _______, _______, _______, _______,
54 _______, _______, _______, _______
55 ),
56 /* NAV
57 * ,-----------------------.
58 * | INS |PGUP | TAB |PRSCR|
59 * |-----+-----+-----+-----|
60 * | DEL |PGDN |VOLD |VOLU |
61 * |-----+-----+-----+-----|
62 * |HOME | UP | END | |
63 * |-----+-----+-----+-----|
64 * |LEFT |DOWN |RIGHT|ENTER|
65 * `---------------------- '
66 */
67 [2] = LAYOUT_ortho_4x4( /* NAV CLUSTER */
68 KC_INS, KC_PGUP, KC_TAB, KC_PSCR,
69 KC_DEL, KC_PGDN, KC_VOLD, KC_VOLU,
70 KC_HOME, KC_UP, KC_END, TO(0),
71 KC_LEFT, KC_DOWN, KC_RGHT, KC_ENT
72 ),
73 /* GAMING
74 * ,-----------------------.
75 * | ESC | 1 | 2 | 3 |
76 * |-----+-----+-----+-----|
77 * | TAB | Q | W | E |
78 * |-----+-----+-----+-----|
79 * |SHIFT| A | S | D |
80 * |-----+-----+-----+-----|
81 * |CTRL | C | R |SPACE|
82 * `---------------------- '
83 */
84 [3] = LAYOUT_ortho_4x4( /* GAMING */
85 LT(4, KC_ESC), KC_1, KC_2, KC_3,
86 KC_TAB, KC_Q, KC_W, KC_E,
87 KC_LSFT, KC_A, KC_S, KC_D,
88 KC_LCTL, KC_C, KC_R, KC_SPC
89 ),
90 /* MUSIC
91 * ,-----------------------.
92 * | | | | |
93 * |-----+-----+-----+-----|
94 * | | | | |
95 * |-----+-----+-----+-----|
96 * | | | | |
97 * |-----+-----+-----+-----|
98 * |TOGGL|MODE | | |
99 * `---------------------- '
100 */
101 [4] = LAYOUT_ortho_4x4( /* NUMPAD SUPPLEMENT */
102 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
103 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
104 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
105 MU_TOG, MU_MOD, XXXXXXX, TO(0)
106 ),
107};
108
109bool process_record_user(uint16_t keycode, keyrecord_t *record) {
110 return true;
111}
diff --git a/keyboards/ckeys/obelus/keymaps/default/readme.md b/keyboards/ckeys/obelus/keymaps/default/readme.md
new file mode 100644
index 000000000..bac51fc04
--- /dev/null
+++ b/keyboards/ckeys/obelus/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for obelus \ No newline at end of file
diff --git a/keyboards/ckeys/obelus/obelus.c b/keyboards/ckeys/obelus/obelus.c
new file mode 100644
index 000000000..fc6b961f2
--- /dev/null
+++ b/keyboards/ckeys/obelus/obelus.c
@@ -0,0 +1,11 @@
1#include "obelus.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}
diff --git a/keyboards/ckeys/obelus/obelus.h b/keyboards/ckeys/obelus/obelus.h
new file mode 100644
index 000000000..76ff4f1a9
--- /dev/null
+++ b/keyboards/ckeys/obelus/obelus.h
@@ -0,0 +1,19 @@
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_ortho_4x4( \
10 k00, k01, k02, k03, \
11 k10, k11, k12, k13, \
12 k20, k21, k22, k23, \
13 k30, k31, k32, k33 \
14) { \
15 { k00, k01, k02, k03 }, \
16 { k10, k11, k12, k13 }, \
17 { k20, k21, k22, k23 }, \
18 { k30, k31, k32, k33 } \
19}
diff --git a/keyboards/ckeys/obelus/readme.md b/keyboards/ckeys/obelus/readme.md
new file mode 100644
index 000000000..640e0f55e
--- /dev/null
+++ b/keyboards/ckeys/obelus/readme.md
@@ -0,0 +1,19 @@
1Obelus
2===
3
4[The Obelus](https://imgur.com/a/vj4LF) is designed to provide an easy platform to work with for people who are new to building keyboards. It is also especially useful as a QMK testbed, featuring support for a lot of the interesting features of QMK including audio, and a lot of spare pins broken out to headers for hacking away.
5
6Keyboard Maintaintainers: [Ethan Madden](https://github.com/jetpacktuxedo), [James Underwood](https://github.com/ju0)
7Hardware Supported: Obelus
8Hardware Availability: [C-Keys soldering workshops](https://ckeys.org/workshops/), [/u/MonkeyPlusPlus](https://www.reddit.com/user/monkeyplusplus)
9
10Make example for this keyboard (after setting up your build environment):
11
12 make ckeys/obelus:default
13
14Or to make and flash:
15
16 make ckeys/obelus:default:dfu
17
18See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
19
diff --git a/keyboards/ckeys/obelus/rules.mk b/keyboards/ckeys/obelus/rules.mk
new file mode 100644
index 000000000..97e2b0beb
--- /dev/null
+++ b/keyboards/ckeys/obelus/rules.mk
@@ -0,0 +1,20 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = no # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = no # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17MIDI_ENABLE = yes # MIDI support
18AUDIO_ENABLE = yes # Audio output
19
20LAYOUTS = ortho_4x4
diff --git a/keyboards/ckeys/readme.md b/keyboards/ckeys/readme.md
new file mode 100644
index 000000000..1f55f058d
--- /dev/null
+++ b/keyboards/ckeys/readme.md
@@ -0,0 +1,12 @@
1# cKeys.org
2
3[cKeys](https://ckeys.org/) is an all volunteer run 501c3 nonprofit organization located in Seattle, Washington.
4
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
7* Supported Hardware
8 * The Obelus - 4x4 Macropad
9 * naKey - Through hole numpad
10 * Handwire 101 - Handwired 4x4 (Proton C or Pro Micro)
11 * The Dora Board - 4x5 with rotary encoder and Proton C pinouts
12 * Washington Macropad - Macropad shaped like Washington State with rotary encoder and OLED
diff --git a/keyboards/ckeys/thedora/config.h b/keyboards/ckeys/thedora/config.h
new file mode 100755
index 000000000..bfc314173
--- /dev/null
+++ b/keyboards/ckeys/thedora/config.h
@@ -0,0 +1,119 @@
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
28#define ENCODERS_PAD_A { B13 }
29#define ENCODERS_PAD_B { B15 }
30#define ENCODER_RESOLUTION 4
31
32/* key matrix size */
33#define MATRIX_ROWS 4
34#define MATRIX_COLS 6
35
36#define MATRIX_ROW_PINS { A2, A1, A0, B8 }
37#define MATRIX_COL_PINS { B5, B4, B3, B2, B1, B0 }
38
39// #define UNUSED_PINS { B14 }
40
41/* COL2ROW, ROW2COL */
42#define DIODE_DIRECTION COL2ROW
43
44//#define BACKLIGHT_PIN B7
45// #define BACKLIGHT_BREATHING
46//#define BACKLIGHT_LEVELS 3
47
48/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
49#define DEBOUNCE 5
50
51/* define if matrix has ghost (lacks anti-ghosting diodes) */
52//#define MATRIX_HAS_GHOST
53
54/* number of backlight levels */
55
56/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
57#define LOCKING_SUPPORT_ENABLE
58/* Locking resynchronize hack */
59#define LOCKING_RESYNC_ENABLE
60
61#define AUDIO_CLICKY
62
63#define DAC_SAMPLE_MAX 65535U
64
65/*
66 * Force NKRO
67 *
68 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
69 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
70 * makefile for this to work.)
71 *
72 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
73 * until the next keyboard reset.
74 *
75 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
76 * fully operational during normal computer usage.
77 *
78 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
79 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
80 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
81 * power-up.
82 *
83 */
84//#define FORCE_NKRO
85
86// Audio Click
87
88// Music Mode Polyphony
89// NOTE: Must change polyphony_rate to a number higher than 0 in voices.c
90#define AUDIO_VOICES
91#define PITCH_STANDARD_A 880.0f
92#define AUDIO_PIN A5
93#define AUDIO_PIN_ALT A4
94#define AUDIO_PIN_ALT_AS_NEGATIVE
95
96// Mouse keys
97#define MOUSEKEY_DELAY 0
98#define MOUSEKEY_INTERVAL 20
99#define MOUSEKEY_MAX_SPEED 2
100#define MOUSEKEY_TIME_TO_MAX 5
101#define MOUSEKEY_WHEEL_DELAY 0
102
103/*
104 * Feature disable options
105 * These options are also useful to firmware size reduction.
106 */
107
108/* disable debug print */
109//#define NO_DEBUG
110
111/* disable print */
112//#define NO_PRINT
113
114/* disable action features */
115//#define NO_ACTION_LAYER
116//#define NO_ACTION_TAPPING
117//#define NO_ACTION_ONESHOT
118//#define NO_ACTION_MACRO
119//#define NO_ACTION_FUNCTION
diff --git a/keyboards/ckeys/thedora/info.json b/keyboards/ckeys/thedora/info.json
new file mode 100644
index 000000000..631da8f26
--- /dev/null
+++ b/keyboards/ckeys/thedora/info.json
@@ -0,0 +1,35 @@
1{
2 "keyboard_name": "The Dora Board.",
3 "url": "https://ckeys.org/slides/exboard",
4 "maintainer": "brandenbyers",
5 "layouts": {
6 "LAYOUT": {
7 "layout": [
8 {"label":"k00", "x":1, "y":0},
9 {"label":"k01", "x":2, "y":0},
10 {"label":"k02", "x":3, "y":0},
11 {"label":"k03", "x":4, "y":0},
12 {"label":"k04", "x":5, "y":0},
13
14 {"label":"k10", "x":1, "y":1},
15 {"label":"k11", "x":2, "y":1},
16 {"label":"k12", "x":3, "y":1},
17 {"label":"k13", "x":4, "y":1},
18 {"label":"k14", "x":5, "y":1},
19
20 {"label":"k20", "x":1, "y":2},
21 {"label":"k21", "x":2, "y":2},
22 {"label":"k22", "x":3, "y":2},
23 {"label":"k23", "x":4, "y":2},
24 {"label":"k24", "x":5, "y":2},
25
26 {"label":"k05 (Rotary Push)", "x":0, "y":3},
27 {"label":"k30", "x":1, "y":3},
28 {"label":"k31", "x":2, "y":3},
29 {"label":"k32", "x":3, "y":3},
30 {"label":"k33", "x":4, "y":3},
31 {"label":"k34", "x":5, "y":3}
32 ]
33 }
34 }
35}
diff --git a/keyboards/ckeys/thedora/keymaps/default/keymap.c b/keyboards/ckeys/thedora/keymaps/default/keymap.c
new file mode 100755
index 000000000..e2ce9b0d7
--- /dev/null
+++ b/keyboards/ckeys/thedora/keymaps/default/keymap.c
@@ -0,0 +1,172 @@
1/* Copyright 2019 Branden Byers (@brandenbyers)
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#include QMK_KEYBOARD_H
18
19enum layers {
20 _BASE, // base layer
21 _MUSIC, // music mode
22 _MIDI, // midi mode
23 _MOUSE, // mouse keys
24 _ADMIN // admin duties
25};
26
27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28
29 // ┌─────────┬─────────┬─────────┬─────────┬─────────┐
30 // │ │ │ │ │ │
31 // │ 7 │ 8 │ 9 │ / │ ADMIN │
32 // ROTARY │ │ │ │ │ │
33 // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
34 // PAGE DOWN│ │ │ │ │ │
35 // │ 4 │ 5 │ 6 │ * │ MOUSE │
36 // ROTARY │ │ │ │ │ │
37 // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
38 // PAGE UP │ │ │ │ │ │
39 // │ 1 │ 2 │ 3 │ - │ MIDI │
40 // │ │ │ │ │ │
41 // ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
42 // │ TOGGLE │ │ │ │ │ │
43 // │ MUSIC │ 0 │ . │ = │ + │ MUSIC │
44 // │ │ │ │ │ │ │
45 // └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
46
47 [_BASE] = LAYOUT(
48 KC_P7, KC_P8 , KC_P9 , KC_PSLS, MO(_ADMIN),
49 KC_P4, KC_P5 , KC_P6 , KC_PAST, TG(_MOUSE),
50 KC_P1, KC_P2 , KC_P3 , KC_PMNS, TG(_MIDI),
51 MU_TOG, KC_P0, KC_PDOT, KC_PEQL, KC_PPLS, MO(_MUSIC)
52 ),
53
54 // MUSIC LAYER
55 // ┌─────────┬─────────┬─────────┬─────────┬─────────┐
56 // │ │ │ │ │ │
57 // │ │ │ │ │ │
58 // ROTARY │ │ │ │ │ │
59 // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
60 // PAGE DOWN│ │ │ │ │ │
61 // │ │ │ │ │ │
62 // ROTARY │ │ │ │ │ │
63 // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
64 // PAGE UP │ │ │ │ │ │
65 // │ │ │ │ MODE │ │
66 // │ │ │ │ │ │
67 // ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
68 // │ │ │ │ │ │ │
69 // │ │ RECORD │ STOP │ │ PLAY │ │
70 // │ │ │ │ │ │ │
71 // └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
72
73 [_MUSIC] = LAYOUT(
74 _______, _______, _______, _______, _______,
75 _______, _______, _______, _______, _______,
76 _______, _______, _______, _______, MU_MOD,
77 _______, KC_LCTL, KC_LALT, _______, KC_LGUI, _______
78 ),
79
80 // MIDI LAYER
81 // ┌─────────┬─────────┬─────────┬─────────┬─────────┐
82 // │ │ │ │ │ │
83 // │ D♯ │ E │ F │ F♯ │ G │
84 // ROTARY │ │ │ │ │ │
85 // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
86 // PAGE DOWN│ │ │ │ │ │
87 // │ A♯ │ B │ C │ C♯ │ D │
88 // ROTARY │ │ │ │ │ │
89 // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
90 // PAGE UP │ │ │ │ │ │
91 // │ F │ F♯ │ G │ G♯ │ A │
92 // │ │ │ │ │ │
93 // ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
94 // │ │ │ │ │ │ │
95 // │ │ C │ C♯ │ D │ D♯ │ E │
96 // │ │ │ │ │ │ │
97 // └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
98
99 [_MIDI] = LAYOUT(
100 MI_Ds_3, MI_E_3, MI_F_3, MI_Fs_3, MI_G_3,
101 MI_As_2, MI_B_2, MI_C_3, MI_Cs_3, MI_D_3,
102 MI_F_2, MI_Fs_2, MI_G_2, MI_Gs_2, TG(_MIDI),
103 _______, MI_C_2, MI_Cs_2, MI_D_2, MI_Ds_2, MI_E_2
104 ),
105
106 // MOUSE LAYER
107 // ┌─────────┬─────────┬─────────┬─────────┬─────────┐
108 // │ │ │ │ │ │
109 // │ BTN 5 │ │ WHEEL │ │ │
110 // ROTARY │ │ │ UP │ │ │
111 // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
112 // PAGE DOWN│ │ │ │ │ │
113 // │ │ LEFT │ MOUSE │ RIGHT │ │
114 // ROTARY │ │ CLICK │ UP │ CLICK │ │
115 // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
116 // PAGE UP │ │ │ │ │ │
117 // │ BTN 4 │ MOUSE │ MOUSE │ MOUSE │ │
118 // │ │ LEFT │ DOWN │ RIGHT │ │
119 // ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
120 // │ │ │ │ │ │ │
121 // │ │ BTN 3 │ WHEEL │ WHEEL │ WHEEL │ │
122 // │ │ │ LEFT │ DOWN │ RIGHT │ │
123 // └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
124
125 [_MOUSE] = LAYOUT(
126 KC_BTN5, _______, KC_WH_U, _______, _______,
127 _______, KC_BTN1, KC_MS_U, KC_BTN2, TG(_MOUSE),
128 KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, _______,
129 _______, KC_BTN3, KC_WH_L, KC_WH_D, KC_WH_R, _______
130 ),
131
132 // ADMIN LAYER
133 // ┌─────────┬─────────┬─────────┬─────────┬─────────┐
134 // │ │ │ │ │ │
135 // │ RESET │ │ │ │ │
136 // ROTARY │ │ │ │ │ │
137 // RIGHT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
138 // PAGE DOWN│ │ │ │ │ │
139 // │ 4 │ 5 │ 6 │ * │ │
140 // ROTARY │ │ │ │ │ │
141 // LEFT: ├─────────┼─────────┼─────────┼─────────┼─────────┤
142 // PAGE UP │ │ │ │ │ │
143 // │ 1 │ 2 │ 3 │ │ │
144 // │ │ │ │ │ │
145 // ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
146 // │ │ │ │ │ │ │
147 // │ │ 0 │ . │ = │ │ │
148 // │ │ │ │ │ │ │
149 // └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
150
151 [_ADMIN] = LAYOUT(
152 RESET, _______, _______, _______, TG(_ADMIN),
153 _______, _______, _______, _______, _______,
154 _______, _______, _______, _______, _______,
155 _______, _______, _______, _______, _______, _______
156 ),
157};
158
159bool process_record_user(uint16_t keycode, keyrecord_t *record) {
160 return true;
161};
162
163bool encoder_update_user(uint8_t index, bool clockwise) {
164 if (index == 0) { /* First encoder */
165 if (clockwise) {
166 tap_code(KC_PGDN);
167 } else {
168 tap_code(KC_PGUP);
169 }
170 }
171 return true;
172}
diff --git a/keyboards/ckeys/thedora/readme.md b/keyboards/ckeys/thedora/readme.md
new file mode 100755
index 000000000..26233de3c
--- /dev/null
+++ b/keyboards/ckeys/thedora/readme.md
@@ -0,0 +1,66 @@
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
7* Keyboard Maintainer: [brandenbyers](https://github.com/brandenbyers)
8* Hardware Supported: theDora
9* Hardware 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
35**Building for Proton C:**
36`make ckeys/thedora:default`
37
38**Search for Bootloader Device:**
39`make ckeys/thedora:default:flash`
40You will begin seeing output of the host searching for the bootloader device, `ERROR: Bootloader not found. Trying again in 5s.`
41
42**Enter DFU-Bootloader Mode:**
43Reset 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.
44
45## Default Layout
46
47You can find the default layout in `thedora/keymaps/default/keymap.c`
48
49## Rotary Encoder
50
51This 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.
52
53```
54bool encoder_update_user(uint8_t index, bool clockwise) {
55 if (index == 0) { /* First encoder */
56 if (clockwise) {
57 tap_code(KC_PGDN); // What the rotary encoder repeatedly does when turned right.
58 } else {
59 tap_code(KC_PGUP); // What it does when turned to the left.
60 }
61 }
62 return true;
63}
64```
65
66![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..ea0154859
--- /dev/null
+++ b/keyboards/ckeys/thedora/rules.mk
@@ -0,0 +1,22 @@
1# MCU name
2MCU = STM32F303
3BOARD = QMK_PROTON_C
4
5# Bootloader selection
6BOOTLOADER = stm32-dfu
7
8# Build Options
9# change yes to no to disable
10#
11BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
12MOUSEKEY_ENABLE = yes # Mouse keys
13EXTRAKEY_ENABLE = yes # Audio control and System control
14CONSOLE_ENABLE = no # Console for debug
15COMMAND_ENABLE = no # Commands for debug and configuration
16NKRO_ENABLE = yes # Enable N-Key Rollover
17BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
18RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
19AUDIO_ENABLE = yes # Audio output
20
21MIDI_ENABLE = yes # MIDI support
22ENCODER_ENABLE = yes
diff --git a/keyboards/ckeys/thedora/thedora.c b/keyboards/ckeys/thedora/thedora.c
new file mode 100755
index 000000000..58953f743
--- /dev/null
+++ b/keyboards/ckeys/thedora/thedora.c
@@ -0,0 +1,31 @@
1/* Copyright 2019 Branden Byers (@brandenbyers)
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#include "thedora.h"
18
19bool encoder_update_kb(uint8_t index, bool clockwise) {
20 if (!encoder_update_user(index, clockwise)) {
21 return false;
22 }
23 if (index == 0) {
24 if (clockwise) {
25 tap_code(KC_PGDN);
26 } else {
27 tap_code(KC_PGUP);
28 }
29 }
30 return true;
31}
diff --git a/keyboards/ckeys/thedora/thedora.h b/keyboards/ckeys/thedora/thedora.h
new file mode 100755
index 000000000..5e66f6716
--- /dev/null
+++ b/keyboards/ckeys/thedora/thedora.h
@@ -0,0 +1,37 @@
1/* Copyright 2019 Branden Byers (@brandenbyers)
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 "quantum.h"
20
21#define XXX KC_NO
22
23// This a shortcut to help you visually see your layout.
24// The first section contains all of the arguments
25// The second converts the arguments into a two-dimensional array
26#define LAYOUT( \
27 k00, k01, k02, k03, k04, \
28 k10, k11, k12, k13, k14, \
29 k20, k21, k22, k23, k24, \
30 k05, k30, k31, k32, k33, k34 \
31) \
32{ \
33 { k00, k01, k02, k03, k04, k05 }, \
34 { k10, k11, k12, k13, k14, XXX }, \
35 { k20, k21, k22, k23, k24, XXX }, \
36 { k30, k31, k32, k33, k34, XXX } \
37}
diff --git a/keyboards/ckeys/washington/config.h b/keyboards/ckeys/washington/config.h
new file mode 100644
index 000000000..0b7da2782
--- /dev/null
+++ b/keyboards/ckeys/washington/config.h
@@ -0,0 +1,147 @@
1/*
2This program is free software: you can redistribute it and/or modify
3it under the terms of the GNU General Public License as published by
4the Free Software Foundation, either version 2 of the License, or
5(at your option) any later version.
6
7This program is distributed in the hope that it will be useful,
8but WITHOUT ANY WARRANTY; without even the implied warranty of
9MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10GNU General Public License for more details.
11
12You should have received a copy of the GNU General Public License
13along with this program. If not, see <http://www.gnu.org/licenses/>.
14*/
15
16#pragma once
17
18#include "config_common.h"
19
20/* USB Device descriptor parameter */
21#define VENDOR_ID 0xFEED
22#define PRODUCT_ID 0x002A
23#define DEVICE_VER 0x0001
24#define MANUFACTURER merlin04
25#define PRODUCT Washington Macropad
26
27/* key matrix size */
28#define MATRIX_ROWS 3
29#define MATRIX_COLS 3
30
31/*
32 * Keyboard Matrix Assignments
33 *
34 * Change this to how you wired your keyboard
35 * COLS: AVR pins used for columns, left to right
36 * ROWS: AVR pins used for rows, top to bottom
37 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
38 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
39 *
40 */
41#define MATRIX_ROW_PINS { F4, F5, F6 }
42#define MATRIX_COL_PINS { F7, B1, B3 }
43#define UNUSED_PINS
44
45/* COL2ROW, ROW2COL*/
46#define DIODE_DIRECTION COL2ROW
47
48#define ENCODERS_PAD_A { D4 }
49#define ENCODERS_PAD_B { C6 }
50
51/*
52 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
53 */
54// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
55
56#define BACKLIGHT_PIN B6
57#define BACKLIGHT_BREATHING
58#define BACKLIGHT_LEVELS 3
59
60// #define RGB_DI_PIN E2
61// #ifdef RGB_DI_PIN
62// #define RGBLED_NUM 16
63// #define RGBLIGHT_HUE_STEP 8
64// #define RGBLIGHT_SAT_STEP 8
65// #define RGBLIGHT_VAL_STEP 8
66// #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
67// #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
68// /*== all animations enable ==*/
69// #define RGBLIGHT_ANIMATIONS
70// /*== or choose animations ==*/
71// #define RGBLIGHT_EFFECT_BREATHING
72// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
73// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
74// #define RGBLIGHT_EFFECT_SNAKE
75// #define RGBLIGHT_EFFECT_KNIGHT
76// #define RGBLIGHT_EFFECT_CHRISTMAS
77// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
78// #define RGBLIGHT_EFFECT_RGB_TEST
79// #define RGBLIGHT_EFFECT_ALTERNATING
80// /*== customize breathing effect ==*/
81// /*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
82// #define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
83// /*==== use exp() and sin() ====*/
84// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
85// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
86// #endif
87
88/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
89#define DEBOUNCE 5
90
91/* define if matrix has ghost (lacks anti-ghosting diodes) */
92//#define MATRIX_HAS_GHOST
93
94/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
95#define LOCKING_SUPPORT_ENABLE
96/* Locking resynchronize hack */
97#define LOCKING_RESYNC_ENABLE
98
99/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
100 * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
101 */
102// #define GRAVE_ESC_CTRL_OVERRIDE
103
104/*
105 * Force NKRO
106 *
107 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
108 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
109 * makefile for this to work.)
110 *
111 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
112 * until the next keyboard reset.
113 *
114 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
115 * fully operational during normal computer usage.
116 *
117 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
118 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
119 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
120 * power-up.
121 *
122 */
123//#define FORCE_NKRO
124
125/*
126 * Feature disable options
127 * These options are also useful to firmware size reduction.
128 */
129
130/* disable debug print */
131//#define NO_DEBUG
132
133/* disable print */
134//#define NO_PRINT
135
136/* disable action features */
137//#define NO_ACTION_LAYER
138//#define NO_ACTION_TAPPING
139//#define NO_ACTION_ONESHOT
140
141/* disable these deprecated features by default */
142#define NO_ACTION_MACRO
143#define NO_ACTION_FUNCTION
144
145/* Bootmagic Lite key configuration */
146// #define BOOTMAGIC_LITE_ROW 0
147// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/ckeys/washington/info.json b/keyboards/ckeys/washington/info.json
new file mode 100644
index 000000000..304e4f335
--- /dev/null
+++ b/keyboards/ckeys/washington/info.json
@@ -0,0 +1,10 @@
1{
2 "keyboard_name": "washington",
3 "url": "https://keypcb.xyz/ViewPage/Washington",
4 "maintainer": "merlin04",
5 "layouts": {
6 "LAYOUT": {
7 "layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":0, "y":0.75}, {"x":0.5, "y":1.75}, {"x":1.5, "y":2}]
8 }
9 }
10}
diff --git a/keyboards/ckeys/washington/keymaps/default/keymap.c b/keyboards/ckeys/washington/keymaps/default/keymap.c
new file mode 100644
index 000000000..771905814
--- /dev/null
+++ b/keyboards/ckeys/washington/keymaps/default/keymap.c
@@ -0,0 +1,84 @@
1/* Copyright 2019 merlin04
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#include QMK_KEYBOARD_H
17
18// Defines names for use in layer keycodes and the keymap
19enum layer_names {
20 _BASE,
21 _FN
22};
23
24// Defines the keycodes used by our macros in process_record_user
25/*enum custom_keycodes {
26};*/
27
28const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
29 /* Base */
30 [_BASE] = LAYOUT(
31 KC_PGUP, KC_UP, KC_PGDN,
32 KC_LEFT, KC_DOWN, KC_RIGHT,
33 MO(_FN), KC_MUTE, BL_TOGG
34 ),
35 [_FN] = LAYOUT(
36 KC_HOME, KC_CALC, KC_END,
37 BL_STEP, KC_ESC, KC_SLEP,
38 KC_TRNS, KC_MPLY, RESET
39 )
40};
41
42bool encoder_update_user(uint8_t index, bool clockwise) {
43 switch (biton32(layer_state)) {
44 case _BASE:
45 if (clockwise) {
46 tap_code(KC_VOLU);
47 } else {
48 tap_code(KC_VOLD);
49 }
50 break;
51 case _FN:
52 if (clockwise) {
53 tap_code(KC_MNXT);
54 } else {
55 tap_code(KC_MPRV);
56 }
57 }
58 return true;
59}
60
61#ifdef OLED_ENABLE
62bool oled_task_user(void) {
63 // Host Keyboard Layer Status
64 oled_write_P(PSTR("Layer: "), false);
65 switch (biton32(layer_state)) {
66 case _BASE:
67 oled_write_P(PSTR("Default\n"), false);
68 break;
69 case _FN:
70 oled_write_P(PSTR("FN\n"), false);
71 break;
72 default:
73 // Or use the write_ln shortcut over adding '\n' to the end of your string
74 oled_write_ln_P(PSTR("Undefined"), false);
75 }
76
77 // Host Keyboard LED Status
78 uint8_t usb_led = host_keyboard_leds();
79 oled_write_P(IS_LED_ON(usb_led, USB_LED_NUM_LOCK) ? PSTR("NUMLCK ") : PSTR(" "), false);
80 oled_write_P(IS_LED_ON(usb_led, USB_LED_CAPS_LOCK) ? PSTR("CAPLCK ") : PSTR(" "), false);
81 oled_write_P(IS_LED_ON(usb_led, USB_LED_SCROLL_LOCK) ? PSTR("SCRLCK ") : PSTR(" "), false);
82 return false;
83}
84#endif
diff --git a/keyboards/ckeys/washington/keymaps/default/readme.md b/keyboards/ckeys/washington/keymaps/default/readme.md
new file mode 100644
index 000000000..bc0b52d23
--- /dev/null
+++ b/keyboards/ckeys/washington/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for washington
diff --git a/keyboards/ckeys/washington/readme.md b/keyboards/ckeys/washington/readme.md
new file mode 100644
index 000000000..a74934b3c
--- /dev/null
+++ b/keyboards/ckeys/washington/readme.md
@@ -0,0 +1,23 @@
1# Washington Macropad
2
3![Washington board](https://keypcb.xyz/Content/resources/washington-done.png)
4
5A macropad shaped like Washington State that supports a rotary encoder and an OLED display.
6
7* Keyboard Maintainer: [merlin04/KeyPCB](https://github.com/merlin04)
8* Hardware Supported: Washington Macropad
9* Hardware Availability: [cKeys.org](https://ckeys.org)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make ckeys/washington: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](https://docs.qmk.fm/#/newbs).
16
17## PCB Design
18
19Download the files for the PCB [here.](https://keypcb.xyz/ViewPage/Washington#files)
20
21## Default Layout
22
23You can find the default layout in `washington/keymaps/default/keymap.c`
diff --git a/keyboards/ckeys/washington/rules.mk b/keyboards/ckeys/washington/rules.mk
new file mode 100644
index 000000000..f5b9339de
--- /dev/null
+++ b/keyboards/ckeys/washington/rules.mk
@@ -0,0 +1,21 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = no # Enable N-Key Rollover
16BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
17RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
18AUDIO_ENABLE = no # Audio output
19ENCODER_ENABLE = yes # Enable support for encoders
20OLED_ENABLE = yes
21OLED_DRIVER = SSD1306 # Enable support for OLED displays
diff --git a/keyboards/ckeys/washington/washington.c b/keyboards/ckeys/washington/washington.c
new file mode 100644
index 000000000..58089caac
--- /dev/null
+++ b/keyboards/ckeys/washington/washington.c
@@ -0,0 +1,17 @@
1/* Copyright 2019 merlin04
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#include "washington.h"
diff --git a/keyboards/ckeys/washington/washington.h b/keyboards/ckeys/washington/washington.h
new file mode 100644
index 000000000..6fba7b328
--- /dev/null
+++ b/keyboards/ckeys/washington/washington.h
@@ -0,0 +1,38 @@
1/* Copyright 2019 merlin04
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 "quantum.h"
20
21/* This is a shortcut to help you visually see your layout.
22 *
23 * The first section contains all of the arguments representing the physical
24 * layout of the board and position of the keys.
25 *
26 * The second converts the arguments into a two-dimensional array which
27 * represents the switch matrix.
28 */
29#define LAYOUT( \
30 k00, k01, k02, \
31 k10, k11, k12, \
32 k20, k21, k22 \
33) \
34{ \
35 { k00, k01, k02 }, \
36 { k10, k11, k12 }, \
37 { k20, k21, k22 } \
38}