aboutsummaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
authorLuis Godinez <beantek@gmail.com>2020-11-19 11:28:53 -0800
committerGitHub <noreply@github.com>2020-11-19 19:28:53 +0000
commit386cff8cf5645d742e193c4d53c0b6ff52c20885 (patch)
tree953e5b9bc6d52fb3627bad7bbe6e254518b92901 /keyboards
parente7497b3fba0c2836c9bb5087eee8b15d6ffc1362 (diff)
downloadqmk_firmware-386cff8cf5645d742e193c4d53c0b6ff52c20885.tar.gz
qmk_firmware-386cff8cf5645d742e193c4d53c0b6ff52c20885.zip
Add Launch Pad by Ungodly Design (#10952)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Erovia <Erovia@users.noreply.github.com>
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/ungodly/launch_pad/config.h72
-rw-r--r--keyboards/ungodly/launch_pad/keymaps/default/keymap.c257
-rw-r--r--keyboards/ungodly/launch_pad/launch_pad.c61
-rw-r--r--keyboards/ungodly/launch_pad/launch_pad.h70
-rw-r--r--keyboards/ungodly/launch_pad/readme.md37
-rw-r--r--keyboards/ungodly/launch_pad/rules.mk32
6 files changed, 529 insertions, 0 deletions
diff --git a/keyboards/ungodly/launch_pad/config.h b/keyboards/ungodly/launch_pad/config.h
new file mode 100644
index 000000000..c4da09760
--- /dev/null
+++ b/keyboards/ungodly/launch_pad/config.h
@@ -0,0 +1,72 @@
1/* Copyright 2020 Ungodly Design <hello@ungodly.design>
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 "config_common.h"
19
20/* USB Device descriptor parameter */
21#define VENDOR_ID 0x5544 // "UD" = Ungodly Design
22#define PRODUCT_ID 0x4C50 // "LP" = Launch Pad
23#define DEVICE_VER 0x9999
24#define MANUFACTURER Ungodly Design
25#define PRODUCT Launch Pad
26
27/* key matrix size */
28#define MATRIX_ROWS 5
29#define MATRIX_COLS 4
30
31/* Keyboard Matrix Assignments */
32#define MATRIX_ROW_PINS { D4, D6, D7, B4, B5 }
33#define MATRIX_COL_PINS { B0, B1, B2, B3 }
34
35/* COL2ROW or ROW2COL */
36#define DIODE_DIRECTION COL2ROW
37
38/* Rotary Encoder Assignment */
39#define ENCODERS_PAD_A { C6 }
40#define ENCODERS_PAD_B { B6 }
41#define ENCODER_RESOLUTION 2
42
43/* Midi Slider */
44#define SLIDER_PIN F6
45
46/* RGB Matrix configuration */
47#ifdef RGB_MATRIX_ENABLE
48# define RGB_MATRIX_KEYPRESSES
49#endif
50
51#define RGB_DI_PIN F7
52#ifdef RGB_DI_PIN
53# define RGBLED_NUM 22
54# define RGBLIGHT_HUE_STEP 8
55# define RGBLIGHT_SAT_STEP 8
56# define RGBLIGHT_VAL_STEP 8
57# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
58# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
59/*== all animations enable ==*/
60# define RGBLIGHT_ANIMATIONS
61// RGB Matrix
62# ifdef RGB_MATRIX_ENABLE
63# define DRIVER_LED_TOTAL RGBLED_NUM
64# endif
65#endif
66
67/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
68#define DEBOUNCE 5
69
70#define LOCKING_RESYNC_ENABLE
71
72#define MIDI_ADVANCED
diff --git a/keyboards/ungodly/launch_pad/keymaps/default/keymap.c b/keyboards/ungodly/launch_pad/keymaps/default/keymap.c
new file mode 100644
index 000000000..4ddec6c42
--- /dev/null
+++ b/keyboards/ungodly/launch_pad/keymaps/default/keymap.c
@@ -0,0 +1,257 @@
1/* Copyright 2020 Ungodly Design <hello@ungodly.design>
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#include "analog.h"
18#include "qmk_midi.h"
19
20// Each layer gets a name for readability, which is then used in the keymap matrix below.
21// The underscores don't mean anything - you can have a layer called STUFF or any other name.
22// Layer names don't all need to be of the same length, obviously, and you can also skip them
23// entirely and just use numbers.
24enum layers {
25_BL = 0,
26_NV,
27_FN
28};
29
30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31/* Keymap _BL: (Base Layer) Default Numpad Layer
32 * ,-------------------.
33 * | NV | / | * |BK/FN|
34 * |----|----|----|-----|
35 * | 7 | 8 | 9 | - |
36 * |----|----|----|-----|
37 * | 4 | 5 | 6 | + |
38 * |----|----|----|-----|
39 * | 1 | 2 | 3 | |
40 * |----|----|----| En |
41 * | 0 | . | |
42 * `--------------------'
43 */
44 [_BL] = LAYOUT_ortho_5x4(
45 TG(_NV), KC_PSLS, KC_PAST, LT(_FN, KC_BSPC),
46 KC_7, KC_8, KC_9, KC_PMNS,
47 KC_4, KC_5, KC_6, KC_PPLS,
48 KC_1, KC_2, KC_3, KC_PENT,
49 KC_0, KC_0, KC_DOT, KC_PENT
50 ),
51
52/* Keymap _NV: Navigation layer
53 * ,-------------------.
54 * |INS |HOME|PGUP| |
55 * |----|----|----|----|
56 * |DEL |END |PGDN| |
57 * |----|----|----|----|
58 * | | UP | | |
59 * |----|----|----|----|
60 * |LEFT|DOWN|RIGH| |
61 * |----|----|----| |
62 * | | | |
63 * `-------------------'
64 */
65 [_NV] = LAYOUT_ortho_5x4(
66 KC_INS, KC_HOME, KC_PGUP, TG(_NV),
67 KC_DEL, KC_END, KC_PGDN, XXXXXXX,
68 XXXXXXX, KC_UP, XXXXXXX, XXXXXXX,
69 KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX,
70 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
71 ),
72
73/* Keymap _FN: RGB Function Layer
74 * ,-------------------.
75 * |RMOD|RGBP|RTOG| FN |
76 * |----|----|----|----|
77 * |HUD |HUI | | |
78 * |----|----|----|----|
79 * |SAD |SAI | | |
80 * |----|----|----|----|
81 * |VAD |VAS | | |
82 * |----|----|----| |
83 * |RST | | | |
84 * `-------------------'
85 */
86 [_FN] = LAYOUT_ortho_5x4(
87 RGB_MOD, RGB_M_P, RGB_TOG, _______,
88 RGB_HUD, RGB_HUI, XXXXXXX, XXXXXXX,
89 RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX,
90 RGB_VAD, RGB_VAI, XXXXXXX, XXXXXXX,
91 RESET, XXXXXXX, XXXXXXX, XXXXXXX
92 ),
93};
94
95void encoder_update_user(uint8_t index, bool clockwise) {
96 if (clockwise) {
97 tap_code(KC_VOLU);
98 } else {
99 tap_code(KC_VOLD);
100 }
101}
102
103uint8_t divisor = 0;
104
105void slider(void) {
106 if (divisor++) { // only run the slider function 1/256 times it's called
107 return;
108 }
109
110 midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
111}
112
113void matrix_scan_user(void) {
114 slider();
115}
116
117// 0.91" OLED, 128x32 resolution
118#ifdef OLED_DRIVER_ENABLE
119
120oled_rotation_t oled_init_user(oled_rotation_t rotation) {
121 return OLED_ROTATION_180; // flips the display 270 degrees
122}
123
124#define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024
125
126layer_state_t layer_state_set_user(layer_state_t state) {
127
128 static const char PROGMEM gui_layers[][ANIM_SIZE] = {
129 {
130 // Home Screen
131 // 'layer_bl', 128x32px
132 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
133 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
134 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
135 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
136 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
137 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
139 0x80, 0x80, 0xc0, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
140 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
141 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
142 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04,
143 0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f,
144 0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
145 0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01,
146 0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6,
147 0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00,
148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
149 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
150 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10,
151 0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40,
152 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f,
153 0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40,
154 0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c,
155 0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00,
156 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
157 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
158 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
159 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
160 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
161 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
163 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
164 },
165 {
166 // Navigation Screen
167 // 'layer_nav', 128x32px
168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40,
175 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
177 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
178 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xc8, 0x28, 0x28, 0x28, 0xc8, 0x10,
179 0xb0, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20,
180 0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0xa1, 0x09, 0xe1,
181 0xf3, 0x29, 0x05, 0x85, 0xe5, 0xe5, 0xc5, 0x89, 0x92, 0xe4, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00,
182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x44,
183 0x44, 0x22, 0xe2, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
184 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
185 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x09, 0x0b, 0x0b, 0x0b, 0x09, 0x04,
187 0x06, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
188 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x42, 0x48, 0x43,
189 0x66, 0x4e, 0x53, 0x51, 0x51, 0x53, 0x53, 0x49, 0x24, 0x13, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x91,
191 0x91, 0x52, 0x53, 0x34, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
193 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
198 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x02,
199 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
200 },
201 {
202 // RGB Screen
203 // 'layer_rgb', 128x32px
204 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
206 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
207 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80,
208 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
210 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
211 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
212 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
213 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
215 0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00,
216 0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 0xc0,
217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
218 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x24, 0x04,
219 0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
220 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
221 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
222 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
223 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
224 0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 0x03,
225 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
226 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x22, 0x24,
227 0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
228 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
229 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
231 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01,
232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
233 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
234 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02,
235 0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
236 }
237 };
238
239 switch (get_highest_layer(state)) {
240 case _BL:
241 oled_write_raw_P(gui_layers[0], sizeof(gui_layers[0]) );
242 break;
243 case _NV:
244 oled_write_raw_P(gui_layers[1], sizeof(gui_layers[1]) );
245 break;
246 case _FN:
247 oled_write_raw_P(gui_layers[2], sizeof(gui_layers[2]) );
248 break;
249 default:
250 // Or use the write_ln shortcut over adding '\n' to the end of your string
251 oled_write_ln_P(PSTR(" UND"), false);
252 break;
253 }
254 return state;
255}
256
257#endif
diff --git a/keyboards/ungodly/launch_pad/launch_pad.c b/keyboards/ungodly/launch_pad/launch_pad.c
new file mode 100644
index 000000000..fde6ed20a
--- /dev/null
+++ b/keyboards/ungodly/launch_pad/launch_pad.c
@@ -0,0 +1,61 @@
1/* Copyright 2020 Ungodly Design <hello@ungodly.design>
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 "launch_pad.h"
17
18#ifdef RGB_MATRIX_ENABLE
19led_config_t g_led_config = { {
20 // Key Matrix to LED Index
21 { 14, 15, 16, 17 },
22 { 13, 12, 11, 10 },
23 { 6, 7, 8, 9 },
24 { 5, 4, 3, 2 },
25 {NO_LED, 0, 1, NO_LED }
26}, { // LED Index to Physical Position
27 { 37, 60 }, { 148, 60 }, // row 5
28 { 222, 54 }, { 148, 45 }, { 74, 45 }, { 0, 45 }, // row 4
29 { 0, 30 }, { 74, 30 }, { 148, 30 }, { 222, 30 }, // row 3
30 { 222, 15 }, { 148, 15 }, { 74, 15 }, { 0, 15 }, // row 2
31 { 0, 0 }, { 74, 0 }, { 148, 0 }, { 222, 0 }, // row 1
32 { 185, 7 }, { 37, 7 }, // top underglow
33 { 37, 52 }, { 185, 52 }, // bottom underglow
34}, {
35 // LED Index to Flag
36 4, 4, // row 5
37 4, 4, 4, 4, // row 4
38 4, 4, 4, 4, // row 3
39 4, 4, 4, 4, // row 2
40 4, 4, 4, 4, // row 1
41 2, 2,
42 2, 2
43} };
44#endif
45
46void eeconfig_init_kb(void) {
47#ifdef RGBLIGHT_ENABLE
48 rgblight_enable(); // Enable RGB by default
49 rgblight_sethsv(0, 255, 255); // Set default HSV - red hue, full saturation, full brightness
50# ifdef RGBLIGHT_ANIMATIONS
51 rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 2); // set to RGB_RAINBOW_SWIRL by default
52# endif
53#endif
54
55#ifdef RGB_MATRIX_ENABLE
56 rgb_matrix_enable(); // Enable RGB by default
57#endif
58
59 eeconfig_update_kb(0);
60 eeconfig_init_user();
61}
diff --git a/keyboards/ungodly/launch_pad/launch_pad.h b/keyboards/ungodly/launch_pad/launch_pad.h
new file mode 100644
index 000000000..7a7815f34
--- /dev/null
+++ b/keyboards/ungodly/launch_pad/launch_pad.h
@@ -0,0 +1,70 @@
1/* Copyright 2020 Ungodly Design <hello@ungodly.design>
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
29/* 4x5 numpad matrix layout
30 * ,-------------------.
31 * | 00 | 01 | 02 | 03 |
32 * |----|----|----|----|
33 * | 10 | 11 | 12 | 13 |
34 * |----|----|----|----|
35 * | 20 | 21 | 22 | 23 |
36 * |----|----|----|----|
37 * | 30 | 31 | 32 | 33 |
38 * |----|----|----|----|
39 * | 40 | 41 | 42 | 43 |
40 * `-------------------'
41 */
42
43 /* Numpad matrix layout
44 * ,-------------------.
45 * | 00 | 01 | 02 | 03 |
46 * |----|----|----|----|
47 * | 10 | 11 | 12 | 13 |
48 * |----|----|----|----|
49 * | 20 | 21 | 22 | 23 |
50 * |----|----|----|----|
51 * | 30 | 31 | 32 | |
52 * |----|----|----| 33 |
53 * | 41 | 42 | |
54 * `-------------------'
55 */
56
57#define LAYOUT_ortho_5x4( \
58 k00, k01, k02, k03, \
59 k10, k11, k12, k13, \
60 k20, k21, k22, k23, \
61 k30, k31, k32, k33, \
62 k40, k41, k42, k43 \
63) \
64{ \
65 {k00, k01, k02, k03}, \
66 {k10, k11, k12, k13}, \
67 {k20, k21, k22, k23}, \
68 {k30, k31, k32, k33}, \
69 {k40, k41, k42, k43} \
70}
diff --git a/keyboards/ungodly/launch_pad/readme.md b/keyboards/ungodly/launch_pad/readme.md
new file mode 100644
index 000000000..89e4b6413
--- /dev/null
+++ b/keyboards/ungodly/launch_pad/readme.md
@@ -0,0 +1,37 @@
1# Launch Pad
2The guidance computer inside the [Launch Pad](https://ungodly.design/products/launch-pad) by Ungodly Design.
3
4**Features:**
5* Onboard atmega32u4 controller, 5V @ 16MHz
6* Kaihl hotswap sockets
7* USB-C connector
8* 18 in-switch RGB LEDs
9* 4 underglow RGB LEDs
10* 100 Ω potentiometer slider
11* (optional) M2 pcb mounting holes
12* (optional) pcb-mount stablizer footprints
13* (optional) pin breakout:
14 * F5, F4, F1, F0, VBUS, GND
15
16PCB Front | PCB Back
17:-------------------------:|:-------------------------:
18![Numpad](https://i.imgur.com/f47ZFZZl.png) | ![5x4](https://i.imgur.com/wZH76Ppl.png)
19
20Numpad Layout | 5x4 Layout
21:-------------------------:|:-------------------------:
22![Numpad](https://i.imgur.com/4XvqCBHl.jpg) | ![5x4](https://i.imgur.com/mwtGnPSl.jpg)
23
24
25|Reset Bootloader| |
26|---|---|
27|Use tweezers to short the two bottom pins of the J-Link pinout.|![Numpad](https://i.imgur.com/ArSIcK0.pngl)|
28
29* Keyboard Maintainer: [Luis Godinez](https://github.com/luis-Godinez)
30* Hardware Supported: Launch Pad PCB
31* Hardware Availability: [Ungodly.Design](https://ungodly.design/products/launch-pad-pcb)
32
33Make example for this keyboard (after setting up your build environment):
34
35 make ungodly/launch_pad:default
36
37See 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/ungodly/launch_pad/rules.mk b/keyboards/ungodly/launch_pad/rules.mk
new file mode 100644
index 000000000..7ec11fd95
--- /dev/null
+++ b/keyboards/ungodly/launch_pad/rules.mk
@@ -0,0 +1,32 @@
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 = lite # Virtual DIP switch configuration
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
15# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
16SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
17# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
18NKRO_ENABLE = yes # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
23MIDI_ENABLE = yes
24OLED_DRIVER_ENABLE = yes
25ENCODER_ENABLE = yes
26RGB_MATRIX_ENABLE = WS2812
27SPACE_CADET_ENABLE = no
28MAGIC_ENABLE = no
29GRAVE_ESC_ENABLE = no
30LTO_ENABLE = yes
31
32SRC += analog.c