aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorflehrad <20124416+flehrad@users.noreply.github.com>2019-01-08 02:29:37 +1100
committerMechMerlin <30334081+mechmerlin@users.noreply.github.com>2019-01-07 07:29:37 -0800
commit28986998046b4dbdbc228dbb7889836de2a3ee18 (patch)
tree817257d2693f08efff80b4e2d14b76b444689ac3
parent2bfac351edebc6e141d3291448512b0e228e5c47 (diff)
downloadqmk_firmware-28986998046b4dbdbc228dbb7889836de2a3ee18.tar.gz
qmk_firmware-28986998046b4dbdbc228dbb7889836de2a3ee18.zip
Add Downbubble to Handwired repository (#4794)
* add snagpad * Update keyboards/snagpad/kb.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Rename kb.c to snagpad.c * Update and rename kb.h to snagpad.h * Update snagpad.h * Update keymap.c * Update config.h * Update config.h * Update rules.mk * Update README.md * Add files via upload * Update info.json * Update keymap.c * Update snagpad.h * Delete snagpad_numpad.json * Delete snagpad_ortho.json * Update README.md * Update keyboards/snagpad/info.json Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/rules.mk Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * add tradestation * --all * Did something weird messing with git -_- hopefully fixed * Update keyboards/tradestation/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/tradestation/config.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/tradestation/config.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/tradestation/rules.mk Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update snagpad.h * Update rules.mk * Update keymap.c * fixed merge conflict, updated to LAYOUT_numpad_5x4 * relocated to handwire, updated naming, added layouts to rules.mk * Update keyboards/handwired/tradestation/rules.mk Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/snagpad/snagpad.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Rename LICENSE to license * Rename README.md to readme.md * Rename LICENSE to license * Rename README.md to readme.md * Update info.json * Update keymap.c * Update info.json * Adding Numbrero QMK to Handwire Repository * Update config.h * Update readme.md * Update keyboards/handwired/numbrero/numbrero.h Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keymap.c * Update keyboards/handwired/numbrero/rules.mk Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Add handwired/downbubble keyboard to QMK Repository * Update readme.md * Create license * Update keyboards/handwired/downbubble/readme.md Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * Update keyboards/handwired/downbubble/keymaps/default/keymap.c Co-Authored-By: flehrad <20124416+flehrad@users.noreply.github.com> * fixed .h with noroadsleft's gist
-rw-r--r--keyboards/handwired/downbubble/config.h245
-rw-r--r--keyboards/handwired/downbubble/downbubble.c16
-rw-r--r--keyboards/handwired/downbubble/downbubble.h111
-rw-r--r--keyboards/handwired/downbubble/info.json554
-rw-r--r--keyboards/handwired/downbubble/keymaps/default/config.h19
-rw-r--r--keyboards/handwired/downbubble/keymaps/default/keymap.c103
-rw-r--r--keyboards/handwired/downbubble/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/downbubble/license201
-rw-r--r--keyboards/handwired/downbubble/readme.md15
-rw-r--r--keyboards/handwired/downbubble/rules.mk81
10 files changed, 1346 insertions, 0 deletions
diff --git a/keyboards/handwired/downbubble/config.h b/keyboards/handwired/downbubble/config.h
new file mode 100644
index 000000000..0da13a4b1
--- /dev/null
+++ b/keyboards/handwired/downbubble/config.h
@@ -0,0 +1,245 @@
1/*
2Copyright 2018 Don Chiou
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 0x0000
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Flehrad
27#define PRODUCT downbubble
28#define DESCRIPTION An Ergonomic Centered Numpad Keyboard
29
30/* key matrix size */
31#define MATRIX_ROWS 6
32#define MATRIX_COLS 20
33
34/*
35 * Keyboard Matrix Assignments
36 *
37 * Change this to how you wired your keyboard
38 * COLS: AVR pins used for columns, left to right
39 * ROWS: AVR pins used for rows, top to bottom
40 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
41 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
42 *
43*/
44#define MATRIX_ROW_PINS { F1, F2, F3, F4, F5, F6 }
45#define MATRIX_COL_PINS { F7, C7, C6, C5, C4, C3, C2, C1, C0, E1, E0, D7, D6, D5, D4, D3, D2, D1, D0, B7 }
46#define UNUSED_PINS
47
48/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
49#define DIODE_DIRECTION COL2ROW
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 B7
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// #endif
81
82/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
83#define DEBOUNCING_DELAY 5
84
85/* define if matrix has ghost (lacks anti-ghosting diodes) */
86//#define MATRIX_HAS_GHOST
87
88/* number of backlight levels */
89
90/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
91#define LOCKING_SUPPORT_ENABLE
92/* Locking resynchronize hack */
93#define LOCKING_RESYNC_ENABLE
94
95/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
96 * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
97 */
98// #define GRAVE_ESC_CTRL_OVERRIDE
99
100/*
101 * Force NKRO
102 *
103 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
104 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
105 * makefile for this to work.)
106 *
107 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
108 * until the next keyboard reset.
109 *
110 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
111 * fully operational during normal computer usage.
112 *
113 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
114 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
115 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
116 * power-up.
117 *
118 */
119//#define FORCE_NKRO
120
121/*
122 * Magic Key Options
123 *
124 * Magic keys are hotkey commands that allow control over firmware functions of
125 * the keyboard. They are best used in combination with the HID Listen program,
126 * found here: https://www.pjrc.com/teensy/hid_listen.html
127 *
128 * The options below allow the magic key functionality to be changed. This is
129 * useful if your keyboard/keypad is missing keys and you want magic key support.
130 *
131 */
132
133/* key combination for magic key command */
134#define IS_COMMAND() ( \
135 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
136)
137
138/* control how magic key switches layers */
139//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
140//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
141//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
142
143/* override magic key keymap */
144//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
145//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
146//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
147//#define MAGIC_KEY_HELP1 H
148//#define MAGIC_KEY_HELP2 SLASH
149//#define MAGIC_KEY_DEBUG D
150//#define MAGIC_KEY_DEBUG_MATRIX X
151//#define MAGIC_KEY_DEBUG_KBD K
152//#define MAGIC_KEY_DEBUG_MOUSE M
153//#define MAGIC_KEY_VERSION V
154//#define MAGIC_KEY_STATUS S
155//#define MAGIC_KEY_CONSOLE C
156//#define MAGIC_KEY_LAYER0_ALT1 ESC
157//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
158//#define MAGIC_KEY_LAYER0 0
159//#define MAGIC_KEY_LAYER1 1
160//#define MAGIC_KEY_LAYER2 2
161//#define MAGIC_KEY_LAYER3 3
162//#define MAGIC_KEY_LAYER4 4
163//#define MAGIC_KEY_LAYER5 5
164//#define MAGIC_KEY_LAYER6 6
165//#define MAGIC_KEY_LAYER7 7
166//#define MAGIC_KEY_LAYER8 8
167//#define MAGIC_KEY_LAYER9 9
168//#define MAGIC_KEY_BOOTLOADER PAUSE
169//#define MAGIC_KEY_LOCK CAPS
170//#define MAGIC_KEY_EEPROM E
171//#define MAGIC_KEY_NKRO N
172//#define MAGIC_KEY_SLEEP_LED Z
173
174/*
175 * Feature disable options
176 * These options are also useful to firmware size reduction.
177 */
178
179/* disable debug print */
180//#define NO_DEBUG
181
182/* disable print */
183//#define NO_PRINT
184
185/* disable action features */
186//#define NO_ACTION_LAYER
187//#define NO_ACTION_TAPPING
188//#define NO_ACTION_ONESHOT
189//#define NO_ACTION_MACRO
190//#define NO_ACTION_FUNCTION
191
192/*
193 * MIDI options
194 */
195
196/* Prevent use of disabled MIDI features in the keymap */
197//#define MIDI_ENABLE_STRICT 1
198
199/* enable basic MIDI features:
200 - MIDI notes can be sent when in Music mode is on
201*/
202//#define MIDI_BASIC
203
204/* enable advanced MIDI features:
205 - MIDI notes can be added to the keymap
206 - Octave shift and transpose
207 - Virtual sustain, portamento, and modulation wheel
208 - etc.
209*/
210//#define MIDI_ADVANCED
211
212/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
213//#define MIDI_TONE_KEYCODE_OCTAVES 1
214
215/*
216 * HD44780 LCD Display Configuration
217 */
218/*
219#define LCD_LINES 2 //< number of visible lines of the display
220#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
221
222#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
223
224#if LCD_IO_MODE
225#define LCD_PORT PORTB //< port for the LCD lines
226#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
227#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
228#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
229#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
230#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
231#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
232#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
233#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
234#define LCD_RS_PORT LCD_PORT //< port for RS line
235#define LCD_RS_PIN 3 //< pin for RS line
236#define LCD_RW_PORT LCD_PORT //< port for RW line
237#define LCD_RW_PIN 2 //< pin for RW line
238#define LCD_E_PORT LCD_PORT //< port for Enable line
239#define LCD_E_PIN 1 //< pin for Enable line
240#endif
241*/
242
243/* Bootmagic Lite key configuration */
244// #define BOOTMAGIC_LITE_ROW 0
245// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/handwired/downbubble/downbubble.c b/keyboards/handwired/downbubble/downbubble.c
new file mode 100644
index 000000000..48be8e499
--- /dev/null
+++ b/keyboards/handwired/downbubble/downbubble.c
@@ -0,0 +1,16 @@
1/* Copyright 2018 REPLACE_WITH_YOUR_NAME
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 "downbubble.h"
diff --git a/keyboards/handwired/downbubble/downbubble.h b/keyboards/handwired/downbubble/downbubble.h
new file mode 100644
index 000000000..a25a9a5db
--- /dev/null
+++ b/keyboards/handwired/downbubble/downbubble.h
@@ -0,0 +1,111 @@
1/* Copyright 2018 REPLACE_WITH_YOUR_NAME
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#pragma once
17
18#include "quantum.h"
19
20/* This a shortcut to help you visually see your layout.
21 *
22 * The first section contains all of the arguments representing the physical
23 * layout of the board and position of the keys.
24 *
25 * The second converts the arguments into a two-dimensional array which
26 * represents the switch matrix.
27 */
28#define LAYOUT_downbubble_standard( \
29 K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\
30 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\
31 K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\
32 K30, K31, K32, K33, K34, K35, K36, K37, K38, K29, K310, K311, K312, K313, K314, K315, K317, \
33 K40, K41, K42, K43, K44, K45, K46, K47, K48, K410, K411, K412, K413, K414, K416, K418, \
34 K50, K51, K52, K53, K54, K56, K58, K49, K510, K512, K513, K514, K516, K517, K518, K519 \
35) \
36{ \
37 { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \
38 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, KC_NO, K118, K119 }, \
39 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \
40 { K30, K31, K32, K33, K34, K35, K36, K37, K38, KC_NO, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \
41 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, KC_NO, K418, KC_NO }, \
42 { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \
43 }
44
45#define LAYOUT_downbubble_splitbackspace( \
46 K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\
47 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119,\
48 K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\
49 K30, K31, K32, K33, K34, K35, K36, K37, K38, K29, K310, K311, K312, K313, K314, K315, K317, \
50 K40, K41, K42, K43, K44, K45, K46, K47, K48, K410, K411, K412, K413, K414, K416, K418, \
51 K50, K51, K52, K53, K54, K56, K58, K49, K510, K512, K513, K514, K516, K517, K518, K519 \
52) \
53{ \
54 { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \
55 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119 }, \
56 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \
57 { K30, K31, K32, K33, K34, K35, K36, K37, K38, KC_NO, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \
58 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, KC_NO, K418, KC_NO }, \
59 { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \
60 }
61
62#define LAYOUT_downbubble_splitrightshift( \
63 K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\
64 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\
65 K20, K21, K22, K23, K24, K25, K26, K27, K28, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\
66 K30, K31, K32, K33, K34, K35, K36, K37, K38, K29, K310, K311, K312, K313, K314, K315, K317, \
67 K40, K41, K42, K43, K44, K45, K46, K47, K48, K410, K411, K412, K413, K414, K416, K417, K418, \
68 K50, K51, K52, K53, K54, K56, K58, K49, K510, K512, K513, K514, K516, K517, K518, K519 \
69) \
70{ \
71 { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \
72 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, KC_NO, K118, K119 }, \
73 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \
74 { K30, K31, K32, K33, K34, K35, K36, K37, K38, KC_NO, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \
75 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, K417, K418, KC_NO }, \
76 { K50, K51, K52, K53, K54, KC_NO, K56, KC_NO, K58, KC_NO, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \
77 }
78
79#define LAYOUT_downbubble_splitnumpad( \
80 K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\
81 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K118, K119,\
82 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\
83 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, K314, K315, K317, \
84 K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, K416, K418, \
85 K50, K51, K52, K53, K54, K56, K57, K58, K59, K510, K512, K513, K514, K516, K517, K518, K519 \
86) \
87{ \
88 { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \
89 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, KC_NO, K118, K119 }, \
90 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \
91 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \
92 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, KC_NO, K418, KC_NO }, \
93 { K50, K51, K52, K53, K54, KC_NO, K56, K57, K58, K59, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \
94 }
95
96#define LAYOUT_downbubble_spliteverything( \
97 K00, K01, K02, K03, K04, K05, K06, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019,\
98 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119,\
99 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219,\
100 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, K314, K315, K317, \
101 K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, K416, K417, K418, \
102 K50, K51, K52, K53, K54, K56, K57, K58, K59, K510, K512, K513, K514, K516, K517, K518, K519 \
103) \
104{ \
105 { K00, K01, K02, K03, K04, K05, K06, KC_NO, KC_NO, KC_NO, K010, K011, K012, K013, K014, K015, K016, K017, K018, K019 }, \
106 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119 }, \
107 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219 }, \
108 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K310, K311, K312, K313, K314, K315, KC_NO, K317, KC_NO, KC_NO }, \
109 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K410, K411, K412, K413, K414, KC_NO, K416, K417, K418, KC_NO }, \
110 { K50, K51, K52, K53, K54, KC_NO, K56, K57, K58, K59, K510, KC_NO, K512, K513, K514, KC_NO, K516, K517, K518, K519 }, \
111 }
diff --git a/keyboards/handwired/downbubble/info.json b/keyboards/handwired/downbubble/info.json
new file mode 100644
index 000000000..cd64c0e36
--- /dev/null
+++ b/keyboards/handwired/downbubble/info.json
@@ -0,0 +1,554 @@
1{
2 "keyboard_name": "downbubble",
3 "url": "",
4 "maintainer": "flehrad",
5 "width": 22.75,
6 "height": 6,
7 "layouts": {
8 "LAYOUT_downbubble_standard": {
9 "layout": [
10 {"label":"K00", "x":0, "y":0.5},
11 {"label":"K01", "x":1, "y":0.5},
12 {"label":"K02", "x":2, "y":0.5},
13 {"label":"K03", "x":3, "y":0.5},
14 {"label":"K04", "x":4, "y":0.5},
15 {"label":"K05", "x":5, "y":0.5},
16 {"label":"K06", "x":6, "y":0.5},
17 {"label":"K010", "x":12.75, "y":0.5},
18 {"label":"K011", "x":13.75, "y":0.5},
19 {"label":"K012", "x":14.75, "y":0.5},
20 {"label":"K013", "x":15.75, "y":0.5},
21 {"label":"K014", "x":16.75, "y":0.5},
22 {"label":"K015", "x":17.75, "y":0.5},
23 {"label":"K016", "x":18.75, "y":0.5},
24 {"label":"K017", "x":19.75, "y":0.5},
25 {"label":"K018", "x":20.75, "y":0.5},
26 {"label":"K019", "x":21.75, "y":0.5},
27 {"label":"K10", "x":0, "y":1.5},
28 {"label":"K11", "x":1, "y":1.5},
29 {"label":"K12", "x":2, "y":1.5},
30 {"label":"K13", "x":3, "y":1.5},
31 {"label":"K14", "x":4, "y":1.5},
32 {"label":"K15", "x":5, "y":1.5},
33 {"label":"K16", "x":6, "y":1.5},
34 {"label":"K17", "x":8.75, "y":1.5},
35 {"label":"K18", "x":9.75, "y":1.5},
36 {"label":"K19", "x":10.75, "y":1.5},
37 {"label":"K110", "x":12.75, "y":1.5},
38 {"label":"K111", "x":13.75, "y":1.5},
39 {"label":"K112", "x":14.75, "y":1.5},
40 {"label":"K113", "x":15.75, "y":1.5},
41 {"label":"K114", "x":16.75, "y":1.5},
42 {"label":"K115", "x":17.75, "y":1.5},
43 {"label":"K116", "x":18.75, "y":1.5, "w":2},
44 {"label":"K118", "x":20.75, "y":1.5},
45 {"label":"K119", "x":21.75, "y":1.5},
46 {"label":"K20", "x":0, "y":2.5, "w":1.5},
47 {"label":"K21", "x":1.5, "y":2.5},
48 {"label":"K22", "x":2.5, "y":2.5},
49 {"label":"K23", "x":3.5, "y":2.5},
50 {"label":"K24", "x":4.5, "y":2.5},
51 {"label":"K25", "x":5.5, "y":2.5},
52 {"label":"K26", "x":7.75, "y":2.5},
53 {"label":"K17", "x":8.75, "y":2.5},
54 {"label":"K28", "x":9.75, "y":2.5},
55 {"label":"K210", "x":12.25, "y":2.5},
56 {"label":"K211", "x":13.25, "y":2.5},
57 {"label":"K212", "x":14.25, "y":2.5},
58 {"label":"K213", "x":15.25, "y":2.5},
59 {"label":"K214", "x":16.25, "y":2.5},
60 {"label":"K215", "x":17.25, "y":2.5},
61 {"label":"K216", "x":18.25, "y":2.5},
62 {"label":"K217", "x":19.25, "y":2.5, "w":1.5},
63 {"label":"K218", "x":20.75, "y":2.5},
64 {"label":"K219", "x":21.75, "y":2.5},
65 {"label":"K30", "x":0, "y":3.5, "w":1.75},
66 {"label":"K31", "x":1.75, "y":3.5},
67 {"label":"K32", "x":2.75, "y":3.5},
68 {"label":"K33", "x":3.75, "y":3.5},
69 {"label":"K34", "x":4.75, "y":3.5},
70 {"label":"K35", "x":5.75, "y":3.5},
71 {"label":"K36", "x":7.75, "y":3.5},
72 {"label":"K37", "x":8.75, "y":3.5},
73 {"label":"K38", "x":9.75, "y":3.5},
74 {"label":"K29", "x":10.75, "y":2.5, "h":2},
75 {"label":"K310", "x":12.5, "y":3.5},
76 {"label":"K311", "x":13.5, "y":3.5},
77 {"label":"K312", "x":14.5, "y":3.5},
78 {"label":"K313", "x":15.5, "y":3.5},
79 {"label":"K314", "x":16.5, "y":3.5},
80 {"label":"K315", "x":17.5, "y":3.5},
81 {"label":"K317", "x":18.5, "y":3.5, "w":2.25},
82 {"label":"K40", "x":0, "y":4.5, "w":2.25},
83 {"label":"K41", "x":2.25, "y":4.5},
84 {"label":"K42", "x":3.25, "y":4.5},
85 {"label":"K43", "x":4.25, "y":4.5},
86 {"label":"K44", "x":5.25, "y":4.5},
87 {"label":"K45", "x":6.25, "y":4.5},
88 {"label":"K46", "x":7.75, "y":4.5},
89 {"label":"K47", "x":8.75, "y":4.5},
90 {"label":"K48", "x":9.75, "y":4.5},
91 {"label":"K410", "x":13, "y":4.5},
92 {"label":"K411", "x":14, "y":4.5},
93 {"label":"K412", "x":15, "y":4.5},
94 {"label":"K413", "x":16, "y":4.5},
95 {"label":"K414", "x":17, "y":4.5},
96 {"label":"K416", "x":18, "y":4.5, "w":2.75},
97 {"label":"K418", "x":20.75, "y":4.5},
98 {"label":"K50", "x":0, "y":5.5, "w":1.25},
99 {"label":"K51", "x":1.25, "y":5.5, "w":1.25},
100 {"label":"K52", "x":2.5, "y":5.5, "w":1.25},
101 {"label":"K53", "x":3.75, "y":5.5, "w":1.25},
102 {"label":"K54", "x":5, "y":5.5, "w":2.25},
103 {"label":"K56", "x":7.75, "y":5.5, "w":2},
104 {"label":"K58", "x":9.75, "y":5.5},
105 {"label":"K49", "x":10.75, "y":4.5, "h":2},
106 {"label":"K510", "x":13, "y":5.5, "w":2},
107 {"label":"K512", "x":15, "y":5.5, "w":1.25},
108 {"label":"K513", "x":16.25, "y":5.5, "w":1.25},
109 {"label":"K514", "x":17.5, "y":5.5, "w":1.25},
110 {"label":"K516", "x":18.75, "y":5.5},
111 {"label":"K517", "x":19.75, "y":5.5},
112 {"label":"K518", "x":20.75, "y":5.5},
113 {"label":"K519", "x":21.75, "y":5.5}]
114 },
115 "LAYOUT_downbubbled_splitbackspace": {
116 "layout": [
117 {"label":"K00", "x":0, "y":0.5},
118 {"label":"K01", "x":1, "y":0.5},
119 {"label":"K02", "x":2, "y":0.5},
120 {"label":"K03", "x":3, "y":0.5},
121 {"label":"K04", "x":4, "y":0.5},
122 {"label":"K05", "x":5, "y":0.5},
123 {"label":"K06", "x":6, "y":0.5},
124 {"label":"K010", "x":12.75, "y":0.5},
125 {"label":"K011", "x":13.75, "y":0.5},
126 {"label":"K012", "x":14.75, "y":0.5},
127 {"label":"K013", "x":15.75, "y":0.5},
128 {"label":"K014", "x":16.75, "y":0.5},
129 {"label":"K015", "x":17.75, "y":0.5},
130 {"label":"K016", "x":18.75, "y":0.5},
131 {"label":"K017", "x":19.75, "y":0.5},
132 {"label":"K018", "x":20.75, "y":0.5},
133 {"label":"K019", "x":21.75, "y":0.5},
134 {"label":"K10", "x":0, "y":1.5},
135 {"label":"K11", "x":1, "y":1.5},
136 {"label":"K12", "x":2, "y":1.5},
137 {"label":"K13", "x":3, "y":1.5},
138 {"label":"K14", "x":4, "y":1.5},
139 {"label":"K15", "x":5, "y":1.5},
140 {"label":"K16", "x":6, "y":1.5},
141 {"label":"K17", "x":8.75, "y":1.5},
142 {"label":"K18", "x":9.75, "y":1.5},
143 {"label":"K19", "x":10.75, "y":1.5},
144 {"label":"K110", "x":12.75, "y":1.5},
145 {"label":"K111", "x":13.75, "y":1.5},
146 {"label":"K112", "x":14.75, "y":1.5},
147 {"label":"K113", "x":15.75, "y":1.5},
148 {"label":"K114", "x":16.75, "y":1.5},
149 {"label":"K115", "x":17.75, "y":1.5},
150 {"label":"K116", "x":18.75, "y":1.5},
151 {"label":"K117", "x":19.75, "y":1},
152 {"label":"K118", "x":20.75, "y":1.5},
153 {"label":"K119", "x":21.75, "y":1.5},
154 {"label":"K20", "x":0, "y":2.5, "w":1.5},
155 {"label":"K21", "x":1.5, "y":2.5},
156 {"label":"K22", "x":2.5, "y":2.5},
157 {"label":"K23", "x":3.5, "y":2.5},
158 {"label":"K24", "x":4.5, "y":2.5},
159 {"label":"K25", "x":5.5, "y":2.5},
160 {"label":"K26", "x":7.75, "y":2.5},
161 {"label":"K17", "x":8.75, "y":2.5},
162 {"label":"K28", "x":9.75, "y":2.5},
163 {"label":"K210", "x":12.25, "y":2.5},
164 {"label":"K211", "x":13.25, "y":2.5},
165 {"label":"K212", "x":14.25, "y":2.5},
166 {"label":"K213", "x":15.25, "y":2.5},
167 {"label":"K214", "x":16.25, "y":2.5},
168 {"label":"K215", "x":17.25, "y":2.5},
169 {"label":"K216", "x":18.25, "y":2.5},
170 {"label":"K217", "x":19.25, "y":2.5, "w":1.5},
171 {"label":"K218", "x":20.75, "y":2.5},
172 {"label":"K219", "x":21.75, "y":2.5},
173 {"label":"K30", "x":0, "y":3.5, "w":1.75},
174 {"label":"K31", "x":1.75, "y":3.5},
175 {"label":"K32", "x":2.75, "y":3.5},
176 {"label":"K33", "x":3.75, "y":3.5},
177 {"label":"K34", "x":4.75, "y":3.5},
178 {"label":"K35", "x":5.75, "y":3.5},
179 {"label":"K36", "x":7.75, "y":3.5},
180 {"label":"K37", "x":8.75, "y":3.5},
181 {"label":"K38", "x":9.75, "y":3.5},
182 {"label":"K29", "x":10.75, "y":2.5, "h":2},
183 {"label":"K310", "x":12.5, "y":3.5},
184 {"label":"K311", "x":13.5, "y":3.5},
185 {"label":"K312", "x":14.5, "y":3.5},
186 {"label":"K313", "x":15.5, "y":3.5},
187 {"label":"K314", "x":16.5, "y":3.5},
188 {"label":"K315", "x":17.5, "y":3.5},
189 {"label":"K317", "x":18.5, "y":3.5, "w":2.25},
190 {"label":"K40", "x":0, "y":4.5, "w":2.25},
191 {"label":"K41", "x":2.25, "y":4.5},
192 {"label":"K42", "x":3.25, "y":4.5},
193 {"label":"K43", "x":4.25, "y":4.5},
194 {"label":"K44", "x":5.25, "y":4.5},
195 {"label":"K45", "x":6.25, "y":4.5},
196 {"label":"K46", "x":7.75, "y":4.5},
197 {"label":"K47", "x":8.75, "y":4.5},
198 {"label":"K48", "x":9.75, "y":4.5},
199 {"label":"K410", "x":13, "y":4.5},
200 {"label":"K411", "x":14, "y":4.5},
201 {"label":"K412", "x":15, "y":4.5},
202 {"label":"K413", "x":16, "y":4.5},
203 {"label":"K414", "x":17, "y":4.5},
204 {"label":"K416", "x":18, "y":4.5, "w":2.75},
205 {"label":"K418", "x":20.75, "y":4.5},
206 {"label":"K50", "x":0, "y":5.5, "w":1.25},
207 {"label":"K51", "x":1.25, "y":5.5, "w":1.25},
208 {"label":"K52", "x":2.5, "y":5.5, "w":1.25},
209 {"label":"K53", "x":3.75, "y":5.5, "w":1.25},
210 {"label":"K54", "x":5, "y":5.5, "w":2.25},
211 {"label":"K56", "x":7.75, "y":5.5, "w":2},
212 {"label":"K58", "x":9.75, "y":5.5},
213 {"label":"K49", "x":10.75, "y":4.5, "h":2},
214 {"label":"K510", "x":13, "y":5.5, "w":2},
215 {"label":"K512", "x":15, "y":5.5, "w":1.25},
216 {"label":"K513", "x":16.25, "y":5.5, "w":1.25},
217 {"label":"K514", "x":17.5, "y":5.5, "w":1.25},
218 {"label":"K516", "x":18.75, "y":5.5},
219 {"label":"K517", "x":19.75, "y":5.5},
220 {"label":"K518", "x":20.75, "y":5.5},
221 {"label":"K519", "x":21.75, "y":5.5}]
222 },
223 "LAYOUT_downbubble_splitrightshift": {
224 "layout": [
225 {"label":"K00", "x":0, "y":0.5},
226 {"label":"K01", "x":1, "y":0.5},
227 {"label":"K02", "x":2, "y":0.5},
228 {"label":"K03", "x":3, "y":0.5},
229 {"label":"K04", "x":4, "y":0.5},
230 {"label":"K05", "x":5, "y":0.5},
231 {"label":"K06", "x":6, "y":0.5},
232 {"label":"K010", "x":12.75, "y":0.5},
233 {"label":"K011", "x":13.75, "y":0.5},
234 {"label":"K012", "x":14.75, "y":0.5},
235 {"label":"K013", "x":15.75, "y":0.5},
236 {"label":"K014", "x":16.75, "y":0.5},
237 {"label":"K015", "x":17.75, "y":0.5},
238 {"label":"K016", "x":18.75, "y":0.5},
239 {"label":"K017", "x":19.75, "y":0.5},
240 {"label":"K018", "x":20.75, "y":0.5},
241 {"label":"K019", "x":21.75, "y":0.5},
242 {"label":"K10", "x":0, "y":1.5},
243 {"label":"K11", "x":1, "y":1.5},
244 {"label":"K12", "x":2, "y":1.5},
245 {"label":"K13", "x":3, "y":1.5},
246 {"label":"K14", "x":4, "y":1.5},
247 {"label":"K15", "x":5, "y":1.5},
248 {"label":"K16", "x":6, "y":1.5},
249 {"label":"K17", "x":8.75, "y":1.5},
250 {"label":"K18", "x":9.75, "y":1.5},
251 {"label":"K19", "x":10.75, "y":1.5},
252 {"label":"K110", "x":12.75, "y":1.5},
253 {"label":"K111", "x":13.75, "y":1.5},
254 {"label":"K112", "x":14.75, "y":1.5},
255 {"label":"K113", "x":15.75, "y":1.5},
256 {"label":"K114", "x":16.75, "y":1.5},
257 {"label":"K115", "x":17.75, "y":1.5},
258 {"label":"K116", "x":18.75, "y":1.5, "w":2},
259 {"label":"K118", "x":20.75, "y":1.5},
260 {"label":"K119", "x":21.75, "y":1.5},
261 {"label":"K20", "x":0, "y":2.5, "w":1.5},
262 {"label":"K21", "x":1.5, "y":2.5},
263 {"label":"K22", "x":2.5, "y":2.5},
264 {"label":"K23", "x":3.5, "y":2.5},
265 {"label":"K24", "x":4.5, "y":2.5},
266 {"label":"K25", "x":5.5, "y":2.5},
267 {"label":"K26", "x":7.75, "y":2.5},
268 {"label":"K17", "x":8.75, "y":2.5},
269 {"label":"K28", "x":9.75, "y":2.5},
270 {"label":"K210", "x":12.25, "y":2.5},
271 {"label":"K211", "x":13.25, "y":2.5},
272 {"label":"K212", "x":14.25, "y":2.5},
273 {"label":"K213", "x":15.25, "y":2.5},
274 {"label":"K214", "x":16.25, "y":2.5},
275 {"label":"K215", "x":17.25, "y":2.5},
276 {"label":"K216", "x":18.25, "y":2.5},
277 {"label":"K217", "x":19.25, "y":2.5, "w":1.5},
278 {"label":"K218", "x":20.75, "y":2.5},
279 {"label":"K219", "x":21.75, "y":2.5},
280 {"label":"K30", "x":0, "y":3.5, "w":1.75},
281 {"label":"K31", "x":1.75, "y":3.5},
282 {"label":"K32", "x":2.75, "y":3.5},
283 {"label":"K33", "x":3.75, "y":3.5},
284 {"label":"K34", "x":4.75, "y":3.5},
285 {"label":"K35", "x":5.75, "y":3.5},
286 {"label":"K36", "x":7.75, "y":3.5},
287 {"label":"K37", "x":8.75, "y":3.5},
288 {"label":"K38", "x":9.75, "y":3.5},
289 {"label":"K29", "x":10.75, "y":2.5, "h":2},
290 {"label":"K310", "x":12.5, "y":3.5},
291 {"label":"K311", "x":13.5, "y":3.5},
292 {"label":"K312", "x":14.5, "y":3.5},
293 {"label":"K313", "x":15.5, "y":3.5},
294 {"label":"K314", "x":16.5, "y":3.5},
295 {"label":"K315", "x":17.5, "y":3.5},
296 {"label":"K317", "x":18.5, "y":3.5, "w":2.25},
297 {"label":"K40", "x":0, "y":4.5, "w":2.25},
298 {"label":"K41", "x":2.25, "y":4.5},
299 {"label":"K42", "x":3.25, "y":4.5},
300 {"label":"K43", "x":4.25, "y":4.5},
301 {"label":"K44", "x":5.25, "y":4.5},
302 {"label":"K45", "x":6.25, "y":4.5},
303 {"label":"K46", "x":7.75, "y":4.5},
304 {"label":"K47", "x":8.75, "y":4.5},
305 {"label":"K48", "x":9.75, "y":4.5},
306 {"label":"K410", "x":13, "y":4.5},
307 {"label":"K411", "x":14, "y":4.5},
308 {"label":"K412", "x":15, "y":4.5},
309 {"label":"K413", "x":16, "y":4.5},
310 {"label":"K414", "x":17, "y":4.5},
311 {"label":"K416", "x":18, "y":4.5, "w":1.75},
312 {"label":"K417", "x":19.75, "y":4},
313 {"label":"K418", "x":20.75, "y":4.5},
314 {"label":"K50", "x":0, "y":5.5, "w":1.25},
315 {"label":"K51", "x":1.25, "y":5.5, "w":1.25},
316 {"label":"K52", "x":2.5, "y":5.5, "w":1.25},
317 {"label":"K53", "x":3.75, "y":5.5, "w":1.25},
318 {"label":"K54", "x":5, "y":5.5, "w":2.25},
319 {"label":"K56", "x":7.75, "y":5.5, "w":2},
320 {"label":"K58", "x":9.75, "y":5.5},
321 {"label":"K49", "x":10.75, "y":4.5, "h":2},
322 {"label":"K510", "x":13, "y":5.5, "w":2},
323 {"label":"K512", "x":15, "y":5.5, "w":1.25},
324 {"label":"K513", "x":16.25, "y":5.5, "w":1.25},
325 {"label":"K514", "x":17.5, "y":5.5, "w":1.25},
326 {"label":"K516", "x":18.75, "y":5.5},
327 {"label":"K517", "x":19.75, "y":5.5},
328 {"label":"K518", "x":20.75, "y":5.5},
329 {"label":"K519", "x":21.75, "y":5.5}]
330 },
331 "LAYOUT_downbubble_splitnumpad": {
332 "layout": [
333 {"label":"K00", "x":0, "y":0.5},
334 {"label":"K01", "x":1, "y":0.5},
335 {"label":"K02", "x":2, "y":0.5},
336 {"label":"K03", "x":3, "y":0.5},
337 {"label":"K04", "x":4, "y":0.5},
338 {"label":"K05", "x":5, "y":0.5},
339 {"label":"K06", "x":6, "y":0.5},
340 {"label":"K010", "x":12.75, "y":0.5},
341 {"label":"K011", "x":13.75, "y":0.5},
342 {"label":"K012", "x":14.75, "y":0.5},
343 {"label":"K013", "x":15.75, "y":0.5},
344 {"label":"K014", "x":16.75, "y":0.5},
345 {"label":"K015", "x":17.75, "y":0.5},
346 {"label":"K016", "x":18.75, "y":0.5},
347 {"label":"K017", "x":19.75, "y":0.5},
348 {"label":"K018", "x":20.75, "y":0.5},
349 {"label":"K019", "x":21.75, "y":0.5},
350 {"label":"K10", "x":0, "y":1.5},
351 {"label":"K11", "x":1, "y":1.5},
352 {"label":"K12", "x":2, "y":1.5},
353 {"label":"K13", "x":3, "y":1.5},
354 {"label":"K14", "x":4, "y":1.5},
355 {"label":"K15", "x":5, "y":1.5},
356 {"label":"K16", "x":6, "y":1.5},
357 {"label":"K17", "x":8.75, "y":1.5},
358 {"label":"K18", "x":9.75, "y":1.5},
359 {"label":"K19", "x":10.75, "y":1.5},
360 {"label":"K110", "x":12.75, "y":1.5},
361 {"label":"K111", "x":13.75, "y":1.5},
362 {"label":"K112", "x":14.75, "y":1.5},
363 {"label":"K113", "x":15.75, "y":1.5},
364 {"label":"K114", "x":16.75, "y":1.5},
365 {"label":"K115", "x":17.75, "y":1.5},
366 {"label":"K116", "x":18.75, "y":1.5, "w":2},
367 {"label":"K118", "x":20.75, "y":1.5},
368 {"label":"K119", "x":21.75, "y":1.5},
369 {"label":"K20", "x":0, "y":2.5, "w":1.5},
370 {"label":"K21", "x":1.5, "y":2.5},
371 {"label":"K22", "x":2.5, "y":2.5},
372 {"label":"K23", "x":3.5, "y":2.5},
373 {"label":"K24", "x":4.5, "y":2.5},
374 {"label":"K25", "x":5.5, "y":2.5},
375 {"label":"K26", "x":7.75, "y":2.5},
376 {"label":"K17", "x":8.75, "y":2.5},
377 {"label":"K28", "x":9.75, "y":2.5},
378 {"label":"K29", "x":10.75, "y":2},
379 {"label":"K210", "x":12.25, "y":2.5},
380 {"label":"K211", "x":13.25, "y":2.5},
381 {"label":"K212", "x":14.25, "y":2.5},
382 {"label":"K213", "x":15.25, "y":2.5},
383 {"label":"K214", "x":16.25, "y":2.5},
384 {"label":"K215", "x":17.25, "y":2.5},
385 {"label":"K216", "x":18.25, "y":2.5},
386 {"label":"K217", "x":19.25, "y":2.5, "w":1.5},
387 {"label":"K218", "x":20.75, "y":2.5},
388 {"label":"K219", "x":21.75, "y":2.5},
389 {"label":"K30", "x":0, "y":3.5, "w":1.75},
390 {"label":"K31", "x":1.75, "y":3.5},
391 {"label":"K32", "x":2.75, "y":3.5},
392 {"label":"K33", "x":3.75, "y":3.5},
393 {"label":"K34", "x":4.75, "y":3.5},
394 {"label":"K35", "x":5.75, "y":3.5},
395 {"label":"K36", "x":7.75, "y":3.5},
396 {"label":"K37", "x":8.75, "y":3.5},
397 {"label":"K38", "x":9.75, "y":3.5},
398 {"label":"K39", "x":10.75, "y":3},
399 {"label":"K310", "x":12.5, "y":3.5},
400 {"label":"K311", "x":13.5, "y":3.5},
401 {"label":"K312", "x":14.5, "y":3.5},
402 {"label":"K313", "x":15.5, "y":3.5},
403 {"label":"K314", "x":16.5, "y":3.5},
404 {"label":"K315", "x":17.5, "y":3.5},
405 {"label":"K317", "x":18.5, "y":3.5, "w":2.25},
406 {"label":"K40", "x":0, "y":4.5, "w":2.25},
407 {"label":"K41", "x":2.25, "y":4.5},
408 {"label":"K42", "x":3.25, "y":4.5},
409 {"label":"K43", "x":4.25, "y":4.5},
410 {"label":"K44", "x":5.25, "y":4.5},
411 {"label":"K45", "x":6.25, "y":4.5},
412 {"label":"K46", "x":7.75, "y":4.5},
413 {"label":"K47", "x":8.75, "y":4.5},
414 {"label":"K48", "x":9.75, "y":4.5},
415 {"label":"K49", "x":10.75, "y":4},
416 {"label":"K410", "x":13, "y":4.5},
417 {"label":"K411", "x":14, "y":4.5},
418 {"label":"K412", "x":15, "y":4.5},
419 {"label":"K413", "x":16, "y":4.5},
420 {"label":"K414", "x":17, "y":4.5},
421 {"label":"K416", "x":18, "y":4.5, "w":2.75},
422 {"label":"K418", "x":20.75, "y":4.5},
423 {"label":"K50", "x":0, "y":5.5, "w":1.25},
424 {"label":"K51", "x":1.25, "y":5.5, "w":1.25},
425 {"label":"K52", "x":2.5, "y":5.5, "w":1.25},
426 {"label":"K53", "x":3.75, "y":5.5, "w":1.25},
427 {"label":"K54", "x":5, "y":5.5, "w":2.25},
428 {"label":"K56", "x":7.75, "y":5.5},
429 {"Label":"K57", "x":8.75, "y":5},
430 {"label":"K58", "x":9.75, "y":5},
431 {"label":"K59", "x":10.75, "y":5},
432 {"label":"K510", "x":13, "y":5.5, "w":2},
433 {"label":"K512", "x":15, "y":5.5, "w":1.25},
434 {"label":"K513", "x":16.25, "y":5.5, "w":1.25},
435 {"label":"K514", "x":17.5, "y":5.5, "w":1.25},
436 {"label":"K516", "x":18.75, "y":5.5},
437 {"label":"K517", "x":19.75, "y":5.5},
438 {"label":"K518", "x":20.75, "y":5.5},
439 {"label":"K519", "x":21.75, "y":5.5}]
440 },
441 "LAYOUT_downbubble_spliteverything": {
442 "layout": [
443 {"label":"K00", "x":0, "y":0},
444 {"label":"K01", "x":1, "y":0},
445 {"label":"K02", "x":2, "y":0},
446 {"label":"K03", "x":3, "y":0},
447 {"label":"K04", "x":4, "y":0},
448 {"label":"K05", "x":5, "y":0},
449 {"label":"K06", "x":6, "y":0},
450 {"label":"K010", "x":12.75, "y":0},
451 {"label":"K011", "x":13.75, "y":0},
452 {"label":"K012", "x":14.75, "y":0},
453 {"label":"K013", "x":15.75, "y":0},
454 {"label":"K014", "x":16.75, "y":0},
455 {"label":"K015", "x":17.75, "y":0},
456 {"label":"K016", "x":18.75, "y":0},
457 {"label":"K017", "x":19.75, "y":0},
458 {"label":"K018", "x":20.75, "y":0},
459 {"label":"K019", "X":21.75, "y":0},
460 {"label":"K10", "x":0, "y":1},
461 {"label":"K11", "x":1, "y":1},
462 {"label":"K12", "x":2, "y":1},
463 {"label":"K13", "x":3, "y":1},
464 {"label":"K14", "x":4, "y":1},
465 {"label":"K15", "x":5, "y":1},
466 {"label":"K16", "x":6, "y":1},
467 {"label":"K17", "x":8.75, "y":1},
468 {"label":"K18", "x":9.75, "y":1},
469 {"label":"K19", "x":10.75, "y":1},
470 {"label":"K110", "x":12.75, "y":1},
471 {"label":"K111", "x":13.75, "y":1},
472 {"label":"K112", "x":14.75, "y":1},
473 {"label":"K113", "x":15.75, "y":1},
474 {"label":"K114", "x":16.75, "y":1},
475 {"label":"K115", "x":17.75, "y":1},
476 {"label":"K116", "x":18.75, "y":1},
477 {"label":"K117", "x":19.75, "y":1},
478 {"label":"K118", "x":20.75, "y":1},
479 {"label":"K119", "x":21.75, "y":1},
480 {"label":"K20", "x":0, "y":2, "w":1.5},
481 {"label":"K21", "x":1.5, "y":2},
482 {"label":"K22", "x":2.5, "y":2},
483 {"label":"K23", "x":3.5, "y":2},
484 {"label":"K24", "x":4.5, "y":2},
485 {"label":"K25", "x":5.5, "y":2},
486 {"label":"K26", "x":7.75, "y":2},
487 {"label":"K27", "x":8.75, "y":2},
488 {"label":"K28", "x":9.75, "y":2},
489 {"label":"K29", "x":10.75, "y":2},
490 {"label":"K210", "x":12.25, "y":2},
491 {"label":"K211", "x":13.25, "y":2},
492 {"label":"K212", "x":14.25, "y":2},
493 {"label":"K213", "x":15.25, "y":2},
494 {"label":"K214", "x":16.25, "y":2},
495 {"label":"K215", "x":17.25, "y":2},
496 {"label":"K216", "x":18.25, "y":2},
497 {"label":"K217", "x":19.25, "y":2, "w":1.5},
498 {"label":"K218", "x":20.75, "y":2},
499 {"label":"K219", "x":21.75, "y":2},
500 {"label":"K30", "x":0, "y":3, "w":1.75},
501 {"label":"K31", "x":1.75, "y":3},
502 {"label":"K32", "x":2.75, "y":3},
503 {"label":"K33", "x":3.75, "y":3},
504 {"label":"K34", "x":4.75, "y":3},
505 {"label":"K35", "x":5.75, "y":3},
506 {"label":"K36", "x":7.75, "y":3},
507 {"label":"K37", "x":8.75, "y":3},
508 {"label":"K38", "x":9.75, "y":3},
509 {"label":"K39", "x":10.75, "y":3},
510 {"label":"K310", "x":12.5, "y":3},
511 {"label":"K311", "x":13.5, "y":3},
512 {"label":"K312", "x":14.5, "y":3},
513 {"label":"K313", "x":15.5, "y":3},
514 {"label":"K314", "x":16.5, "y":3},
515 {"label":"K315", "x":17.5, "y":3},
516 {"label":"K317", "x":18.5, "y":3, "w":2.25},
517 {"label":"K40", "x":0, "y":4, "w":2.25},
518 {"label":"K41", "x":2.25, "y":4},
519 {"label":"K42", "x":3.25, "y":4},
520 {"label":"K43", "x":4.25, "y":4},
521 {"label":"K44", "x":5.25, "y":4},
522 {"label":"K45", "x":6.25, "y":4},
523 {"label":"K46", "x":7.75, "y":4},
524 {"label":"K47", "x":8.75, "y":4},
525 {"label":"K48", "x":9.75, "y":4},
526 {"label":"K49", "x":10.75, "y":4},
527 {"label":"K410", "x":13, "y":4},
528 {"label":"K411", "x":14, "y":4},
529 {"label":"K412", "x":15, "y":4},
530 {"label":"K413", "x":16, "y":4},
531 {"label":"K414", "x":17, "y":4},
532 {"label":"K416", "x":18, "y":4, "w":1.75},
533 {"label":"K417", "x":19.75, "y":4},
534 {"label":"K418", "x":20.75, "y":4},
535 {"label":"K50", "x":0, "y":5, "w":1.25},
536 {"label":"K51", "x":1.25, "y":5, "w":1.25},
537 {"label":"K52", "x":2.5, "y":5, "w":1.25},
538 {"label":"K53", "x":3.75, "y":5, "w":1.25},
539 {"label":"K54", "x":5, "y":5, "w":2.25},
540 {"label":"K56", "x":7.75, "y":5},
541 {"label":"K57", "x":8.75, "y":5},
542 {"label":"K58", "x":9.75, "y":5},
543 {"label":"K59", "x":10.75, "y":5},
544 {"label":"K510", "x":13, "y":5, "w":2},
545 {"label":"K512", "x":15, "y":5, "w":1.25},
546 {"label":"K513", "x":16.25, "y":5, "w":1.25},
547 {"label":"K514", "x":17.5, "y":5, "w":1.25},
548 {"label":"K516", "x":18.75, "y":5},
549 {"label":"K517", "x":19.75, "y":5},
550 {"label":"K518", "x":20.75, "y":5},
551 {"label":"K519", "x":21.75, "y":5}]
552 }
553 }
554}
diff --git a/keyboards/handwired/downbubble/keymaps/default/config.h b/keyboards/handwired/downbubble/keymaps/default/config.h
new file mode 100644
index 000000000..4496c5910
--- /dev/null
+++ b/keyboards/handwired/downbubble/keymaps/default/config.h
@@ -0,0 +1,19 @@
1/* Copyright 2018 REPLACE_WITH_YOUR_NAME
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// place overrides here
diff --git a/keyboards/handwired/downbubble/keymaps/default/keymap.c b/keyboards/handwired/downbubble/keymaps/default/keymap.c
new file mode 100644
index 000000000..d35d36739
--- /dev/null
+++ b/keyboards/handwired/downbubble/keymaps/default/keymap.c
@@ -0,0 +1,103 @@
1/* Copyright 2018 REPLACE_WITH_YOUR_NAME
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 the keycodes used by our macros in process_record_user
19enum custom_keycodes {
20 QMKBEST = SAFE_RANGE,
21 QMKURL
22};
23
24const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
25 [0] = LAYOUT_downbubble_standard(\
26 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_HOME, KC_TRNS,
27 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP,
28 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
29 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
30 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
31 KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
32 ),
33
34 LAYOUT_downbubble_splitbackspace(\
35 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_HOME, KC_TRNS,
36 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_END, KC_PGUP,
37 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
38 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
39 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
40 KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
41 ),
42
43 LAYOUT_downbubble_splitrightshift(\
44 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_HOME, KC_TRNS,
45 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP,
46 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
47 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
48 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
49 KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_PDOT, KC_PENT, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
50 ),
51
52 LAYOUT_downbubble_splitnumpad(\
53 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_HOME, KC_TRNS,
54 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_END, KC_PGUP,
55 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
56 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
57 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_PENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
58 KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_TRNS, KC_PDOT, KC_TRNS, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
59 ),
60
61 LAYOUT_downbubble_spliteverything(\
62 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_NLCK, KC_HOME, KC_TRNS,
63 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_PSLS, KC_PAST, KC_PMNS, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_TRNS, KC_END, KC_PGUP,
64 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_PGDN,
65 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
66 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_P1, KC_P2, KC_P3, KC_PENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
67 KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_SPC, KC_P0, KC_TRNS, KC_PDOT, KC_TRNS, KC_BSPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
68 ),
69};
70
71bool process_record_user(uint16_t keycode, keyrecord_t *record) {
72 switch (keycode) {
73 case QMKBEST:
74 if (record->event.pressed) {
75 // when keycode QMKBEST is pressed
76 SEND_STRING("QMK is the best thing ever!");
77 } else {
78 // when keycode QMKBEST is released
79 }
80 break;
81 case QMKURL:
82 if (record->event.pressed) {
83 // when keycode QMKURL is pressed
84 SEND_STRING("https://qmk.fm/" SS_TAP(X_ENTER));
85 } else {
86 // when keycode QMKURL is released
87 }
88 break;
89 }
90 return true;
91}
92
93void matrix_init_user(void) {
94
95}
96
97void matrix_scan_user(void) {
98
99}
100
101void led_set_user(uint8_t usb_led) {
102
103}
diff --git a/keyboards/handwired/downbubble/keymaps/default/readme.md b/keyboards/handwired/downbubble/keymaps/default/readme.md
new file mode 100644
index 000000000..757d99062
--- /dev/null
+++ b/keyboards/handwired/downbubble/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymaps for downbubble
diff --git a/keyboards/handwired/downbubble/license b/keyboards/handwired/downbubble/license
new file mode 100644
index 000000000..e6e77b089
--- /dev/null
+++ b/keyboards/handwired/downbubble/license
@@ -0,0 +1,201 @@
1 Apache License
2 Version 2.0, January 2004
3 http://www.apache.org/licenses/
4
5 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
7 1. Definitions.
8
9 "License" shall mean the terms and conditions for use, reproduction,
10 and distribution as defined by Sections 1 through 9 of this document.
11
12 "Licensor" shall mean the copyright owner or entity authorized by
13 the copyright owner that is granting the License.
14
15 "Legal Entity" shall mean the union of the acting entity and all
16 other entities that control, are controlled by, or are under common
17 control with that entity. For the purposes of this definition,
18 "control" means (i) the power, direct or indirect, to cause the
19 direction or management of such entity, whether by contract or
20 otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 outstanding shares, or (iii) beneficial ownership of such entity.
22
23 "You" (or "Your") shall mean an individual or Legal Entity
24 exercising permissions granted by this License.
25
26 "Source" form shall mean the preferred form for making modifications,
27 including but not limited to software source code, documentation
28 source, and configuration files.
29
30 "Object" form shall mean any form resulting from mechanical
31 transformation or translation of a Source form, including but
32 not limited to compiled object code, generated documentation,
33 and conversions to other media types.
34
35 "Work" shall mean the work of authorship, whether in Source or
36 Object form, made available under the License, as indicated by a
37 copyright notice that is included in or attached to the work
38 (an example is provided in the Appendix below).
39
40 "Derivative Works" shall mean any work, whether in Source or Object
41 form, that is based on (or derived from) the Work and for which the
42 editorial revisions, annotations, elaborations, or other modifications
43 represent, as a whole, an original work of authorship. For the purposes
44 of this License, Derivative Works shall not include works that remain
45 separable from, or merely link (or bind by name) to the interfaces of,
46 the Work and Derivative Works thereof.
47
48 "Contribution" shall mean any work of authorship, including
49 the original version of the Work and any modifications or additions
50 to that Work or Derivative Works thereof, that is intentionally
51 submitted to Licensor for inclusion in the Work by the copyright owner
52 or by an individual or Legal Entity authorized to submit on behalf of
53 the copyright owner. For the purposes of this definition, "submitted"
54 means any form of electronic, verbal, or written communication sent
55 to the Licensor or its representatives, including but not limited to
56 communication on electronic mailing lists, source code control systems,
57 and issue tracking systems that are managed by, or on behalf of, the
58 Licensor for the purpose of discussing and improving the Work, but
59 excluding communication that is conspicuously marked or otherwise
60 designated in writing by the copyright owner as "Not a Contribution."
61
62 "Contributor" shall mean Licensor and any individual or Legal Entity
63 on behalf of whom a Contribution has been received by Licensor and
64 subsequently incorporated within the Work.
65
66 2. Grant of Copyright License. Subject to the terms and conditions of
67 this License, each Contributor hereby grants to You a perpetual,
68 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 copyright license to reproduce, prepare Derivative Works of,
70 publicly display, publicly perform, sublicense, and distribute the
71 Work and such Derivative Works in Source or Object form.
72
73 3. Grant of Patent License. Subject to the terms and conditions of
74 this License, each Contributor hereby grants to You a perpetual,
75 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 (except as stated in this section) patent license to make, have made,
77 use, offer to sell, sell, import, and otherwise transfer the Work,
78 where such license applies only to those patent claims licensable
79 by such Contributor that are necessarily infringed by their
80 Contribution(s) alone or by combination of their Contribution(s)
81 with the Work to which such Contribution(s) was submitted. If You
82 institute patent litigation against any entity (including a
83 cross-claim or counterclaim in a lawsuit) alleging that the Work
84 or a Contribution incorporated within the Work constitutes direct
85 or contributory patent infringement, then any patent licenses
86 granted to You under this License for that Work shall terminate
87 as of the date such litigation is filed.
88
89 4. Redistribution. You may reproduce and distribute copies of the
90 Work or Derivative Works thereof in any medium, with or without
91 modifications, and in Source or Object form, provided that You
92 meet the following conditions:
93
94 (a) You must give any other recipients of the Work or
95 Derivative Works a copy of this License; and
96
97 (b) You must cause any modified files to carry prominent notices
98 stating that You changed the files; and
99
100 (c) You must retain, in the Source form of any Derivative Works
101 that You distribute, all copyright, patent, trademark, and
102 attribution notices from the Source form of the Work,
103 excluding those notices that do not pertain to any part of
104 the Derivative Works; and
105
106 (d) If the Work includes a "NOTICE" text file as part of its
107 distribution, then any Derivative Works that You distribute must
108 include a readable copy of the attribution notices contained
109 within such NOTICE file, excluding those notices that do not
110 pertain to any part of the Derivative Works, in at least one
111 of the following places: within a NOTICE text file distributed
112 as part of the Derivative Works; within the Source form or
113 documentation, if provided along with the Derivative Works; or,
114 within a display generated by the Derivative Works, if and
115 wherever such third-party notices normally appear. The contents
116 of the NOTICE file are for informational purposes only and
117 do not modify the License. You may add Your own attribution
118 notices within Derivative Works that You distribute, alongside
119 or as an addendum to the NOTICE text from the Work, provided
120 that such additional attribution notices cannot be construed
121 as modifying the License.
122
123 You may add Your own copyright statement to Your modifications and
124 may provide additional or different license terms and conditions
125 for use, reproduction, or distribution of Your modifications, or
126 for any such Derivative Works as a whole, provided Your use,
127 reproduction, and distribution of the Work otherwise complies with
128 the conditions stated in this License.
129
130 5. Submission of Contributions. Unless You explicitly state otherwise,
131 any Contribution intentionally submitted for inclusion in the Work
132 by You to the Licensor shall be under the terms and conditions of
133 this License, without any additional terms or conditions.
134 Notwithstanding the above, nothing herein shall supersede or modify
135 the terms of any separate license agreement you may have executed
136 with Licensor regarding such Contributions.
137
138 6. Trademarks. This License does not grant permission to use the trade
139 names, trademarks, service marks, or product names of the Licensor,
140 except as required for reasonable and customary use in describing the
141 origin of the Work and reproducing the content of the NOTICE file.
142
143 7. Disclaimer of Warranty. Unless required by applicable law or
144 agreed to in writing, Licensor provides the Work (and each
145 Contributor provides its Contributions) on an "AS IS" BASIS,
146 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 implied, including, without limitation, any warranties or conditions
148 of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 PARTICULAR PURPOSE. You are solely responsible for determining the
150 appropriateness of using or redistributing the Work and assume any
151 risks associated with Your exercise of permissions under this License.
152
153 8. Limitation of Liability. In no event and under no legal theory,
154 whether in tort (including negligence), contract, or otherwise,
155 unless required by applicable law (such as deliberate and grossly
156 negligent acts) or agreed to in writing, shall any Contributor be
157 liable to You for damages, including any direct, indirect, special,
158 incidental, or consequential damages of any character arising as a
159 result of this License or out of the use or inability to use the
160 Work (including but not limited to damages for loss of goodwill,
161 work stoppage, computer failure or malfunction, or any and all
162 other commercial damages or losses), even if such Contributor
163 has been advised of the possibility of such damages.
164
165 9. Accepting Warranty or Additional Liability. While redistributing
166 the Work or Derivative Works thereof, You may choose to offer,
167 and charge a fee for, acceptance of support, warranty, indemnity,
168 or other liability obligations and/or rights consistent with this
169 License. However, in accepting such obligations, You may act only
170 on Your own behalf and on Your sole responsibility, not on behalf
171 of any other Contributor, and only if You agree to indemnify,
172 defend, and hold each Contributor harmless for any liability
173 incurred by, or claims asserted against, such Contributor by reason
174 of your accepting any such warranty or additional liability.
175
176 END OF TERMS AND CONDITIONS
177
178 APPENDIX: How to apply the Apache License to your work.
179
180 To apply the Apache License to your work, attach the following
181 boilerplate notice, with the fields enclosed by brackets "[]"
182 replaced with your own identifying information. (Don't include
183 the brackets!) The text should be enclosed in the appropriate
184 comment syntax for the file format. We also recommend that a
185 file or class name and description of purpose be included on the
186 same "printed page" as the copyright notice for easier
187 identification within third-party archives.
188
189 Copyright [yyyy] [name of copyright owner]
190
191 Licensed under the Apache License, Version 2.0 (the "License");
192 you may not use this file except in compliance with the License.
193 You may obtain a copy of the License at
194
195 http://www.apache.org/licenses/LICENSE-2.0
196
197 Unless required by applicable law or agreed to in writing, software
198 distributed under the License is distributed on an "AS IS" BASIS,
199 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 See the License for the specific language governing permissions and
201 limitations under the License.
diff --git a/keyboards/handwired/downbubble/readme.md b/keyboards/handwired/downbubble/readme.md
new file mode 100644
index 000000000..e66234512
--- /dev/null
+++ b/keyboards/handwired/downbubble/readme.md
@@ -0,0 +1,15 @@
1# downbubble
2
3Prototype hand-wired version of this keyboard - https://imgur.com/a/0KbX1JH
4
5This is an ergonomic keyboard with a 5 degree rotation on keyboard halves, and a rotated numpad in the center for RH users.
6
7Keyboard Maintainer: [Flehrad](https://github.com/flehrad)
8Hardware Supported: downbubble PCB, AT90USB1286 MCU, MX switches and MiniUSB connector
9Hardware Availability: The Board Podcast Slack
10
11Make example for this keyboard (after setting up your build environment):
12
13 make downbubble: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).
diff --git a/keyboards/handwired/downbubble/rules.mk b/keyboards/handwired/downbubble/rules.mk
new file mode 100644
index 000000000..87d0d4a1e
--- /dev/null
+++ b/keyboards/handwired/downbubble/rules.mk
@@ -0,0 +1,81 @@
1# MCU name
2MCU = at90usb1286
3#MCU = atmega32u4
4
5# Processor frequency.
6# This will define a symbol, F_CPU, in all source code files equal to the
7# processor frequency in Hz. You can then use this symbol in your source code to
8# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
9# automatically to create a 32-bit value in your source code.
10#
11# This will be an integer division of F_USB below, as it is sourced by
12# F_USB after it has run through any CPU prescalers. Note that this value
13# does not *change* the processor frequency - it should merely be updated to
14# reflect the processor speed set externally so that the code can use accurate
15# software delays.
16F_CPU = 16000000
17
18
19#
20# LUFA specific
21#
22# Target architecture (see library "Board Types" documentation).
23ARCH = AVR8
24
25# Input clock frequency.
26# This will define a symbol, F_USB, in all source code files equal to the
27# input clock frequency (before any prescaling is performed) in Hz. This value may
28# differ from F_CPU if prescaling is used on the latter, and is required as the
29# raw input clock is fed directly to the PLL sections of the AVR for high speed
30# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
31# at the end, this will be done automatically to create a 32-bit value in your
32# source code.
33#
34# If no clock division is performed on the input clock inside the AVR (via the
35# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
36F_USB = $(F_CPU)
37
38# Interrupt driven control endpoint task(+60)
39OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
40
41
42# Bootloader selection
43# Teensy halfkay
44# Pro Micro caterina
45# Atmel DFU atmel-dfu
46# LUFA DFU lufa-dfu
47# QMK DFU qmk-dfu
48# atmega32a bootloadHID
49BOOTLOADER = atmel-dfu
50
51
52# If you don't know the bootloader type, then you can specify the
53# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
54# Teensy halfKay 512
55# Teensy++ halfKay 1024
56# Atmel DFU loader 4096
57# LUFA bootloader 4096
58# USBaspLoader 2048
59# OPT_DEFS += -DBOOTLOADER_SIZE=4096
60
61
62# Build Options
63# change yes to no to disable
64#
65BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
66MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
67EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
68CONSOLE_ENABLE = yes # Console for debug(+400)
69COMMAND_ENABLE = yes # Commands for debug and configuration
70# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
71SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
72# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
73NKRO_ENABLE = no # USB Nkey Rollover
74BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
75RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
76MIDI_ENABLE = no # MIDI support (+2400 to 4200, depending on config)
77UNICODE_ENABLE = no # Unicode
78BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
79AUDIO_ENABLE = no # Audio output on port C6
80FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
81HD44780_ENABLE = no # Enable support for HD44780 based LCDs (+400)