aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrashna Jael're <drashna@live.com>2021-08-12 09:18:18 -0700
committerDrashna Jael're <drashna@live.com>2021-08-12 09:18:18 -0700
commit8e8ec6338cf98426680317f796831a19c9a54496 (patch)
treeca082bdae438fb06e91efbe52af6b8d80b5bf10c
parent176bce50e9865c4ad9c483de8e578d413e4af8c7 (diff)
parent80015f7fb023f27ad5307815fd5433694a3bcb4a (diff)
downloadqmk_firmware-8e8ec6338cf98426680317f796831a19c9a54496.tar.gz
qmk_firmware-8e8ec6338cf98426680317f796831a19c9a54496.zip
Merge remote-tracking branch 'origin/master' into develop
-rw-r--r--keyboards/bastardkb/skeletyl/config.h57
-rw-r--r--keyboards/bastardkb/skeletyl/info.json49
-rw-r--r--keyboards/bastardkb/skeletyl/keymaps/default/keymap.c70
-rw-r--r--keyboards/bastardkb/skeletyl/readme.md17
-rw-r--r--keyboards/bastardkb/skeletyl/rules.mk33
-rw-r--r--keyboards/bastardkb/skeletyl/skeletyl.c57
-rw-r--r--keyboards/bastardkb/skeletyl/skeletyl.h37
-rw-r--r--keyboards/custommk/genesis/config.h42
-rw-r--r--keyboards/custommk/genesis/readme.md4
-rw-r--r--keyboards/custommk/genesis/rev1/config.h65
-rw-r--r--keyboards/custommk/genesis/rev1/info.json (renamed from keyboards/custommk/genesis/info.json)2
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/default/keymap.c (renamed from keyboards/custommk/genesis/keymaps/default/keymap.c)0
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/default/readme.md (renamed from keyboards/custommk/genesis/keymaps/default/readme.md)0
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/numpad/keymap.c (renamed from keyboards/custommk/genesis/keymaps/numpad/keymap.c)0
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/numpad/readme.md (renamed from keyboards/custommk/genesis/keymaps/numpad/readme.md)0
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/via/keymap.c (renamed from keyboards/custommk/genesis/keymaps/via/keymap.c)4
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/via/readme.md (renamed from keyboards/custommk/genesis/keymaps/via/readme.md)0
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/via/rules.mk (renamed from keyboards/custommk/genesis/keymaps/via/rules.mk)0
-rw-r--r--keyboards/custommk/genesis/rev1/readme.md19
-rw-r--r--keyboards/custommk/genesis/rev1/rev1.c (renamed from keyboards/custommk/genesis/genesis.c)34
-rw-r--r--keyboards/custommk/genesis/rev1/rev1.h (renamed from keyboards/custommk/genesis/genesis.h)40
-rw-r--r--keyboards/custommk/genesis/rev1/rules.mk0
-rw-r--r--keyboards/custommk/genesis/rev2/config.h66
-rw-r--r--keyboards/custommk/genesis/rev2/info.json76
-rw-r--r--keyboards/custommk/genesis/rev2/keymaps/default/keymap.c76
-rw-r--r--keyboards/custommk/genesis/rev2/keymaps/default/readme.md6
-rw-r--r--keyboards/custommk/genesis/rev2/keymaps/numpad/keymap.c89
-rw-r--r--keyboards/custommk/genesis/rev2/keymaps/numpad/readme.md3
-rw-r--r--keyboards/custommk/genesis/rev2/keymaps/via/keymap.c167
-rw-r--r--keyboards/custommk/genesis/rev2/keymaps/via/readme.md3
-rw-r--r--keyboards/custommk/genesis/rev2/keymaps/via/rules.mk2
-rw-r--r--keyboards/custommk/genesis/rev2/readme.md19
-rw-r--r--keyboards/custommk/genesis/rev2/rev2.c39
-rw-r--r--keyboards/custommk/genesis/rev2/rev2.h66
-rw-r--r--keyboards/custommk/genesis/rev2/rules.mk23
-rw-r--r--keyboards/custommk/genesis/rules.mk4
-rwxr-xr-xkeyboards/kbdfans/kbd67/mkiirgb/v3/config.h2
-rw-r--r--keyboards/keyprez/rhino/config.h115
-rw-r--r--keyboards/keyprez/rhino/info.json179
-rw-r--r--keyboards/keyprez/rhino/keymaps/default/keymap.c116
-rw-r--r--keyboards/keyprez/rhino/keymaps/default/readme.md1
-rw-r--r--keyboards/keyprez/rhino/keymaps/default_7u/keymap.c117
-rw-r--r--keyboards/keyprez/rhino/keymaps/default_7u/readme.md1
-rw-r--r--keyboards/keyprez/rhino/keymaps/default_ergo/keymap.c124
-rw-r--r--keyboards/keyprez/rhino/keymaps/default_ergo/readme.md1
-rw-r--r--keyboards/keyprez/rhino/readme.md22
-rw-r--r--keyboards/keyprez/rhino/rhino.c32
-rw-r--r--keyboards/keyprez/rhino/rhino.h80
-rw-r--r--keyboards/keyprez/rhino/rules.mk23
-rw-r--r--keyboards/moonlander/keymaps/jjerrell/config.h27
-rw-r--r--keyboards/moonlander/keymaps/jjerrell/keymap.c117
-rw-r--r--keyboards/moonlander/keymaps/jjerrell/readme.md3
-rw-r--r--keyboards/moonlander/keymaps/jjerrell/rules.mk1
-rw-r--r--keyboards/peej/tripel/config.h38
-rw-r--r--keyboards/peej/tripel/info.json82
-rw-r--r--keyboards/peej/tripel/keymaps/default/keymap.c54
-rw-r--r--keyboards/peej/tripel/keymaps/via/keymap.c50
-rw-r--r--keyboards/peej/tripel/keymaps/via/rules.mk1
-rw-r--r--keyboards/peej/tripel/left/left.h38
-rw-r--r--keyboards/peej/tripel/left/readme.md21
-rw-r--r--keyboards/peej/tripel/left/rules.mk1
-rw-r--r--keyboards/peej/tripel/middle/middle.h38
-rw-r--r--keyboards/peej/tripel/middle/readme.md21
-rw-r--r--keyboards/peej/tripel/middle/rules.mk1
-rw-r--r--keyboards/peej/tripel/right/readme.md21
-rw-r--r--keyboards/peej/tripel/right/right.h38
-rw-r--r--keyboards/peej/tripel/right/rules.mk1
-rw-r--r--keyboards/peej/tripel/rules.mk24
-rw-r--r--keyboards/planck/keymaps/kuatsure/config.h33
-rw-r--r--keyboards/planck/keymaps/kuatsure/keymap.c318
-rw-r--r--keyboards/planck/keymaps/kuatsure/readme.md1
-rw-r--r--keyboards/planck/keymaps/kuatsure/rules.mk6
-rw-r--r--keyboards/preonic/keymaps/kuatsure/keymap.c2
-rw-r--r--keyboards/spacey/config.h110
-rw-r--r--keyboards/spacey/info.json87
-rw-r--r--keyboards/spacey/keymaps/default/keymap.c47
-rw-r--r--keyboards/spacey/keymaps/default/readme.md1
-rw-r--r--keyboards/spacey/readme.md19
-rw-r--r--keyboards/spacey/rules.mk23
-rw-r--r--keyboards/spacey/spacey.c29
-rw-r--r--keyboards/spacey/spacey.h41
-rw-r--r--keyboards/ungodly/launch_pad/config.h86
-rw-r--r--keyboards/ungodly/launch_pad/info.json60
-rw-r--r--keyboards/ungodly/launch_pad/keymaps/default/keymap.c397
-rw-r--r--keyboards/ungodly/launch_pad/keymaps/via/keymap.c293
-rw-r--r--keyboards/ungodly/launch_pad/keymaps/via/rules.mk1
-rw-r--r--keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c269
-rw-r--r--keyboards/ungodly/launch_pad/keymaps/warzone/rules.mk2
-rw-r--r--keyboards/ungodly/launch_pad/launch_pad.c17
-rw-r--r--keyboards/ungodly/launch_pad/readme.md62
-rw-r--r--layouts/community/ergodox/bocaj/config.h4
-rw-r--r--layouts/community/ergodox/bocaj/keymap.c175
-rw-r--r--layouts/community/ergodox/bocaj/readme.md28
-rw-r--r--layouts/community/ergodox/bocaj/rules.mk14
-rw-r--r--layouts/community/ergodox/jjerrell/config.h21
-rw-r--r--layouts/community/ergodox/jjerrell/keymap.c129
-rw-r--r--layouts/community/ergodox/jjerrell/readme.md5
-rw-r--r--layouts/community/ergodox/jjerrell/rules.mk14
-rw-r--r--layouts/community/ortho_4x12/bocaj/config.h106
-rw-r--r--layouts/community/ortho_4x12/bocaj/keymap.c287
-rw-r--r--layouts/community/ortho_4x12/bocaj/readme.md23
-rw-r--r--layouts/community/ortho_4x12/bocaj/rules.mk43
-rw-r--r--layouts/community/ortho_4x12/jjerrell/config.h57
-rw-r--r--layouts/community/ortho_4x12/jjerrell/keymap.c227
-rw-r--r--layouts/community/ortho_4x12/jjerrell/readme.md7
-rw-r--r--layouts/community/ortho_4x12/jjerrell/rules.mk8
-rw-r--r--users/bocaj/.gitignore1
-rw-r--r--users/bocaj/.gitlab-ci.yml24
-rw-r--r--users/bocaj/bocaj.c210
-rw-r--r--users/bocaj/bocaj.h73
-rw-r--r--users/bocaj/config.h113
-rw-r--r--users/bocaj/process_records.c111
-rw-r--r--users/bocaj/process_records.h44
-rw-r--r--users/bocaj/readme.md5
-rw-r--r--users/bocaj/rgb_matrix_stuff.c106
-rw-r--r--users/bocaj/rgb_matrix_stuff.h10
-rw-r--r--users/bocaj/wrappers.h193
-rw-r--r--users/jjerrell/.gitignore1
-rw-r--r--users/jjerrell/config.h26
-rw-r--r--users/jjerrell/jjerrell.c138
-rw-r--r--users/jjerrell/jjerrell.h53
-rw-r--r--users/jjerrell/process_records.c139
-rw-r--r--users/jjerrell/process_records.h41
-rw-r--r--users/jjerrell/readme.md50
-rw-r--r--users/jjerrell/rules.mk (renamed from users/bocaj/rules.mk)11
-rw-r--r--users/jjerrell/wrappers.h329
-rw-r--r--users/kuatsure/kuatsure.c14
-rw-r--r--users/kuatsure/kuatsure.h10
128 files changed, 5388 insertions, 1925 deletions
diff --git a/keyboards/bastardkb/skeletyl/config.h b/keyboards/bastardkb/skeletyl/config.h
new file mode 100644
index 000000000..2431f59df
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/config.h
@@ -0,0 +1,57 @@
1/*
2 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#pragma once
19#include "config_common.h"
20#define VENDOR_ID 0xA8F8
21#define PRODUCT_ID 0x1830
22#define DEVICE_VER 0x0001
23#define MANUFACTURER Bastard Keyboards
24#define PRODUCT Skeletyl
25
26#define MATRIX_ROWS 8
27#define MATRIX_COLS 5
28#define RGBLIGHT_LIMIT_VAL 180
29#define MATRIX_ROW_PINS { B5, F7, F6, B6 }
30#define MATRIX_COL_PINS { E6, C6, B1, B3, B2 }
31
32#define DIODE_DIRECTION ROW2COL
33
34#define RGB_DI_PIN D2
35#define RGBLED_NUM 36
36#define RGBLED_SPLIT { 18, 18 }
37#define RGBLIGHT_ANIMATIONS
38
39#define DEBOUNCE 5
40
41#define SOFT_SERIAL_PIN D0
42
43#define USB_POLLING_INTERVAL_MS 1
44#define MASTER_RIGHT
45
46// RGB matrix support
47#ifdef RGB_MATRIX_ENABLE
48# define SPLIT_TRANSPORT_MIRROR
49# define DRIVER_LED_TOTAL 36 // Number of LEDs
50# define RGB_MATRIX_SPLIT { 18, 18 }
51# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
52# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
53# ifndef RGB_DISABLE_WHEN_USB_SUSPENDED
54# define RGB_DISABLE_WHEN_USB_SUSPENDED true
55# endif
56# define RGB_MATRIX_KEYPRESSES
57#endif
diff --git a/keyboards/bastardkb/skeletyl/info.json b/keyboards/bastardkb/skeletyl/info.json
new file mode 100644
index 000000000..d7ebf8014
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/info.json
@@ -0,0 +1,49 @@
1{
2 "keyboard_name": "Skeletyl",
3 "url": "https://www.bastardkb.com",
4 "maintainer": "Quentin Lebastard",
5 "width": 17,
6 "height": 4,
7 "layouts": {
8 "LAYOUT_split_3x5_3": {
9 "layout": [
10 {"label":"L00", "x":0, "y":0},
11 {"label":"L01", "x":1, "y":0},
12 {"label":"L02", "x":2, "y":0},
13 {"label":"L03", "x":3, "y":0},
14 {"label":"L04", "x":4, "y":0},
15 {"label":"R00", "x":11, "y":0},
16 {"label":"R01", "x":12, "y":0},
17 {"label":"R02", "x":13, "y":0},
18 {"label":"R03", "x":14, "y":0},
19 {"label":"R04", "x":15, "y":0},
20 {"label":"L10", "x":0, "y":1},
21 {"label":"L11", "x":1, "y":1},
22 {"label":"L12", "x":2, "y":1},
23 {"label":"L13", "x":3, "y":1},
24 {"label":"L14", "x":4, "y":1},
25 {"label":"R10", "x":11, "y":1},
26 {"label":"R11", "x":12, "y":1},
27 {"label":"R12", "x":13, "y":1},
28 {"label":"R13", "x":14, "y":1},
29 {"label":"R14", "x":15, "y":1},
30 {"label":"L20", "x":0, "y":2},
31 {"label":"L21", "x":1, "y":2},
32 {"label":"L22", "x":2, "y":2},
33 {"label":"L23", "x":3, "y":2},
34 {"label":"L24", "x":4, "y":2},
35 {"label":"R20", "x":11, "y":2},
36 {"label":"R21", "x":12, "y":2},
37 {"label":"R22", "x":13, "y":2},
38 {"label":"R23", "x":14, "y":2},
39 {"label":"R24", "x":15, "y":2},
40 {"label":"L33", "x":4, "y":3},
41 {"label":"L34", "x":5, "y":3},
42 {"label":"L31", "x":6, "y":3},
43 {"label":"R33", "x":9, "y":3},
44 {"label":"R34", "x":10, "y":3},
45 {"label":"R31", "x":11, "y":3}
46 ]
47 }
48 }
49}
diff --git a/keyboards/bastardkb/skeletyl/keymaps/default/keymap.c b/keyboards/bastardkb/skeletyl/keymaps/default/keymap.c
new file mode 100644
index 000000000..56e56d9a4
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/keymaps/default/keymap.c
@@ -0,0 +1,70 @@
1/*
2 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include QMK_KEYBOARD_H
19
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21
22 [0] = LAYOUT_split_3x5_3(
23 //,-----------------------------------------------------. ,-----------------------------------------------------.
24 KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
25 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
26 KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
27 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
28 KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
29 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
30 KC_LGUI, KC_SPC , MO(1), MO(2), KC_ENT , KC_RALT
31 //`--------------------------' `--------------------------'
32
33 ),
34
35 [1] = LAYOUT_split_3x5_3(
36 //,-----------------------------------------------------. ,-----------------------------------------------------.
37 KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
38 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
39 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX,
40 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
41 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
42 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
43 KC_LGUI, KC_SPC, _______, MO(3), KC_ENT, KC_RALT
44 //`--------------------------' `--------------------------'
45 ),
46
47 [2] = LAYOUT_split_3x5_3(
48 //,-----------------------------------------------------. ,-----------------------------------------------------.
49 KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
50 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
51 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
52 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
53 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
54 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
55 KC_LGUI, KC_SPC, MO(3), _______, KC_ENT, KC_RALT
56 //`--------------------------' `--------------------------'
57 ),
58
59 [3] = LAYOUT_split_3x5_3(
60 //,-----------------------------------------------------. ,-----------------------------------------------------.
61 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
62 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
63 RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
64 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
65 RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
66 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
67 KC_LGUI, KC_SPC, _______, _______, KC_ENT, KC_RALT
68 //`--------------------------' `--------------------------'
69 )
70};
diff --git a/keyboards/bastardkb/skeletyl/readme.md b/keyboards/bastardkb/skeletyl/readme.md
new file mode 100644
index 000000000..6c36b5835
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/readme.md
@@ -0,0 +1,17 @@
1# Skeletyl
2
3A very small keyboard made for ergonomic enthusiasts.
4
5* Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/)
6* Hardware Supported: elite-C V4
7* Hardware Availability: [Bastardkb.com](https://bastardkb.com/)
8
9Make example for this keyboard (after setting up your build environment):
10
11 make bastardkb/skeletyl:default
12
13This keyboard is made to be used with the Miryoku layout, do not use the default keymap.
14
15See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
16
17See the [keyboard build instructions](http://docs.bastardkb.com/)
diff --git a/keyboards/bastardkb/skeletyl/rules.mk b/keyboards/bastardkb/skeletyl/rules.mk
new file mode 100644
index 000000000..1afabf51c
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/rules.mk
@@ -0,0 +1,33 @@
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 = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
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
21RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE)
22RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
23BLUETOOTH_ENABLE = no # Enable Bluetooth
24AUDIO_ENABLE = no # Audio output
25SPLIT_KEYBOARD = yes
26TAP_DANCE_ENABLE = no
27LTO_ENABLE = yes
28
29AUDIO_SUPPORTED = no
30RGB_MATRIX_SUPPORTED = yes
31RGBLIGHT_SUPPORTED = yes
32
33LAYOUTS = split_3x5_3
diff --git a/keyboards/bastardkb/skeletyl/skeletyl.c b/keyboards/bastardkb/skeletyl/skeletyl.c
new file mode 100644
index 000000000..057465b4a
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/skeletyl.c
@@ -0,0 +1,57 @@
1/*
2 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include "skeletyl.h"
19
20#ifdef RGB_MATRIX_ENABLE
21led_config_t g_led_config = { {
22 // left
23 { 0, 5, 6, 11, 12 },
24 { 1, 4, 7, 10, 13 },
25 { 2, 3, 8, 9, 14 },
26 { 15, NO_LED, 16, 17, NO_LED },
27 // right
28 { 18, 23, 24, 29, 30 },
29 { 19, 22, 25, 28, 31 },
30 { 20, 21, 26, 27, 32 },
31 { 33, NO_LED, 34, 35, NO_LED }
32}, {
33 // left
34 { 0, 0 }, { 0, 21 }, { 0, 42 }, // col 1
35 { 25, 42 }, { 25, 21 }, { 25, 0 }, // col 2
36 { 50, 0 }, { 50, 21 }, { 50, 42 },
37 { 74, 42 }, { 74, 21 }, { 74, 0 },
38 { 99, 0 }, { 99, 21 }, { 99, 42 },
39 { 50, 64 }, { 74, 64 }, { 99, 64 }, // left thumb cluster
40 // right
41 { 224, 0 }, { 224, 21 }, { 224, 42 }, // col 10
42 { 198, 42 }, { 198, 21 }, { 198, 0 }, // col 9
43 { 174, 0 }, { 174, 21 }, { 174, 42 },
44 { 149, 42 }, { 149, 21 }, { 149, 0 },
45 { 124, 0 }, { 124, 21 }, { 124, 42 },
46 { 174, 64 }, { 149, 64 }, { 124, 64 } // right thumb cluster
47}, {
48 // left
49 4, 4, 4, 4, 4, 4, 4,
50 4, 4, 4, 4, 4, 4, 4, 4,
51 2, 2, 2,
52 // right
53 4, 4, 4, 4, 4, 4, 4,
54 4, 4, 4, 4, 4, 4, 4, 4,
55 2, 2, 2
56} };
57#endif
diff --git a/keyboards/bastardkb/skeletyl/skeletyl.h b/keyboards/bastardkb/skeletyl/skeletyl.h
new file mode 100644
index 000000000..36399567f
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/skeletyl.h
@@ -0,0 +1,37 @@
1/*
2 * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18
19#pragma once
20#include "quantum.h"
21
22#define LAYOUT_split_3x5_3( \
23 k00, k01, k02, k03, k04, k44, k43, k42, k41, k40, \
24 k10, k11, k12, k13, k14, k54, k53, k52, k51, k50, \
25 k20, k21, k22, k23, k24, k64, k63, k62, k61, k60, \
26 k33, k34, k31, k71, k74, k73 \
27)\
28{\
29 { k00, k01, k02, k03, k04 }, \
30 { k10, k11, k12, k13, k14 }, \
31 { k20, k21, k22, k23, k24 }, \
32 { k31, KC_NO, k33, k34, KC_NO }, \
33 { k40, k41, k42, k43, k44 }, \
34 { k50, k51, k52, k53, k54 }, \
35 { k60, k61, k62, k63, k64 }, \
36 { k71, KC_NO, k73, k74, KC_NO }, \
37}
diff --git a/keyboards/custommk/genesis/config.h b/keyboards/custommk/genesis/config.h
index a527737f0..72f33c155 100644
--- a/keyboards/custommk/genesis/config.h
+++ b/keyboards/custommk/genesis/config.h
@@ -18,45 +18,3 @@
18 18
19 19
20#include "config_common.h" 20#include "config_common.h"
21
22/* USB Device descriptor parameter */
23#define VENDOR_ID 0xF35B
24#define PRODUCT_ID 0xFAB0
25#define DEVICE_VER 0x0001
26#define MANUFACTURER customMK
27#define PRODUCT Genesis
28
29/* key matrix size */
30#define MATRIX_ROWS 5
31#define MATRIX_COLS 4
32
33/* key matrix pins */
34#define MATRIX_ROW_PINS { F0, C7, C6, B6, B5 }
35#define MATRIX_COL_PINS { F4, F5, D7, B4 }
36#define UNUSED_PINS
37
38/* COL2ROW or ROW2COL */
39#define DIODE_DIRECTION COL2ROW
40
41/* Set 0 if debouncing isn't needed */
42#define DEBOUNCE 5
43
44/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
45#define LOCKING_SUPPORT_ENABLE
46
47/* Locking resynchronize hack */
48#define LOCKING_RESYNC_ENABLE
49
50#define ENCODERS_PAD_A { F6, D2 }
51#define ENCODERS_PAD_B { F7, D1 }
52#define ENCODER_RESOLUTION 4
53#define TAP_CODE_DELAY 10
54
55#define RGB_DI_PIN E6
56#define RGBLIGHT_ANIMATIONS
57#define RGBLED_NUM 13
58#define RGBLIGHT_HUE_STEP 8
59#define RGBLIGHT_SAT_STEP 8
60#define RGBLIGHT_VAL_STEP 8
61#define RGBLIGHT_LIMIT_VAL 128
62
diff --git a/keyboards/custommk/genesis/readme.md b/keyboards/custommk/genesis/readme.md
index 58bd27121..bf967a2bd 100644
--- a/keyboards/custommk/genesis/readme.md
+++ b/keyboards/custommk/genesis/readme.md
@@ -1,10 +1,10 @@
1# Genesis 1# Genesis
2 2
3Genesis is a 5x4 ortholinear macro pad designed and produced by customMK.
4
3![Genesis Macro Pad](https://i.imgur.com/voBjLrM.jpeg) 5![Genesis Macro Pad](https://i.imgur.com/voBjLrM.jpeg)
4![Genesis Macro Pad PCB](https://i.imgur.com/ST2vtkV.jpeg) 6![Genesis Macro Pad PCB](https://i.imgur.com/ST2vtkV.jpeg)
5 7
6Genesis is a 5x4 ortholinear macro pad designed and produced by customMK.
7
8* Keyboard Maintainer: [customMK](https://github.com/customMK) 8* Keyboard Maintainer: [customMK](https://github.com/customMK)
9* Hardware Supported: Genesis Macro Pad 9* Hardware Supported: Genesis Macro Pad
10* Hardware Availability: [customMK](https://shop.custommk.com/products/genesis_macropad) 10* Hardware Availability: [customMK](https://shop.custommk.com/products/genesis_macropad)
diff --git a/keyboards/custommk/genesis/rev1/config.h b/keyboards/custommk/genesis/rev1/config.h
new file mode 100644
index 000000000..3393c5330
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/config.h
@@ -0,0 +1,65 @@
1/* Copyright 2020 customMK
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "config_common.h"
20
21/* USB Device descriptor parameter */
22#define VENDOR_ID 0xF35B
23#define PRODUCT_ID 0xFAB0
24#define DEVICE_VER 0x0001
25#define MANUFACTURER customMK
26#define PRODUCT GenesisRev1
27
28/* key matrix size */
29#define MATRIX_ROWS 5
30#define MATRIX_COLS 4
31
32/* key matrix pins */
33#define MATRIX_ROW_PINS { F0, C7, C6, B6, B5 }
34#define MATRIX_COL_PINS { F4, F5, D7, B4 }
35#define UNUSED_PINS
36
37/* COL2ROW or ROW2COL */
38#define DIODE_DIRECTION COL2ROW
39
40/* Set 0 if debouncing isn't needed */
41#define DEBOUNCE 5
42
43#define ENCODERS_PAD_A { F6, D2 }
44#define ENCODERS_PAD_B { F7, D1 }
45#define ENCODER_RESOLUTION 2
46#define TAP_CODE_DELAY 10
47
48#define RGB_DI_PIN E6
49#define RGBLIGHT_EFFECT_BREATHING
50#define RGBLIGHT_EFFECT_RAINBOW_MOOD
51#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
52#define RGBLIGHT_EFFECT_SNAKE
53#define RGBLIGHT_EFFECT_KNIGHT
54#define RGBLIGHT_EFFECT_CHRISTMAS
55#define RGBLIGHT_EFFECT_STATIC_GRADIENT
56#define RGBLIGHT_EFFECT_RGB_TEST
57#define RGBLIGHT_EFFECT_ALTERNATING
58#define RGBLIGHT_EFFECT_TWINKLE
59#define RGBLED_NUM 13
60#define RGBLIGHT_HUE_STEP 8
61#define RGBLIGHT_SAT_STEP 8
62#define RGBLIGHT_VAL_STEP 8
63#define RGBLIGHT_LIMIT_VAL 128
64#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL + 4
65
diff --git a/keyboards/custommk/genesis/info.json b/keyboards/custommk/genesis/rev1/info.json
index ddba21f99..67bab74be 100644
--- a/keyboards/custommk/genesis/info.json
+++ b/keyboards/custommk/genesis/rev1/info.json
@@ -1,5 +1,5 @@
1{ 1{
2 "keyboard_name": "Genesis", 2 "keyboard_name": "Genesis Rev1",
3 "url": "https://www.customMK.com", 3 "url": "https://www.customMK.com",
4 "maintainer": "customMK", 4 "maintainer": "customMK",
5 "width": 4, 5 "width": 4,
diff --git a/keyboards/custommk/genesis/keymaps/default/keymap.c b/keyboards/custommk/genesis/rev1/keymaps/default/keymap.c
index 1b061b034..1b061b034 100644
--- a/keyboards/custommk/genesis/keymaps/default/keymap.c
+++ b/keyboards/custommk/genesis/rev1/keymaps/default/keymap.c
diff --git a/keyboards/custommk/genesis/keymaps/default/readme.md b/keyboards/custommk/genesis/rev1/keymaps/default/readme.md
index 202402d83..202402d83 100644
--- a/keyboards/custommk/genesis/keymaps/default/readme.md
+++ b/keyboards/custommk/genesis/rev1/keymaps/default/readme.md
diff --git a/keyboards/custommk/genesis/keymaps/numpad/keymap.c b/keyboards/custommk/genesis/rev1/keymaps/numpad/keymap.c
index 97970191d..97970191d 100644
--- a/keyboards/custommk/genesis/keymaps/numpad/keymap.c
+++ b/keyboards/custommk/genesis/rev1/keymaps/numpad/keymap.c
diff --git a/keyboards/custommk/genesis/keymaps/numpad/readme.md b/keyboards/custommk/genesis/rev1/keymaps/numpad/readme.md
index 795e4341a..795e4341a 100644
--- a/keyboards/custommk/genesis/keymaps/numpad/readme.md
+++ b/keyboards/custommk/genesis/rev1/keymaps/numpad/readme.md
diff --git a/keyboards/custommk/genesis/keymaps/via/keymap.c b/keyboards/custommk/genesis/rev1/keymaps/via/keymap.c
index fe3755476..6b795f4c2 100644
--- a/keyboards/custommk/genesis/keymaps/via/keymap.c
+++ b/keyboards/custommk/genesis/rev1/keymaps/via/keymap.c
@@ -20,8 +20,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20 20
21 [0] = LAYOUT_ortho_5x4( 21 [0] = LAYOUT_ortho_5x4(
22 MO(1), KC_PSLS, KC_PAST, KC_PMNS, 22 MO(1), KC_PSLS, KC_PAST, KC_PMNS,
23 KC_P7, KC_P8, KC_P9, KC_PPLS, 23 KC_P7, KC_P8, KC_P9, KC_PGUP,
24 KC_P4, KC_P5, KC_P6, KC_PGUP, 24 KC_P4, KC_P5, KC_P6, KC_PPLS,
25 KC_P1, KC_P2, KC_P3, KC_PGDN, 25 KC_P1, KC_P2, KC_P3, KC_PGDN,
26 KC_P0, KC_SPC, KC_PDOT, KC_PENT), 26 KC_P0, KC_SPC, KC_PDOT, KC_PENT),
27 27
diff --git a/keyboards/custommk/genesis/keymaps/via/readme.md b/keyboards/custommk/genesis/rev1/keymaps/via/readme.md
index aa70d6225..aa70d6225 100644
--- a/keyboards/custommk/genesis/keymaps/via/readme.md
+++ b/keyboards/custommk/genesis/rev1/keymaps/via/readme.md
diff --git a/keyboards/custommk/genesis/keymaps/via/rules.mk b/keyboards/custommk/genesis/rev1/keymaps/via/rules.mk
index 43061db1d..43061db1d 100644
--- a/keyboards/custommk/genesis/keymaps/via/rules.mk
+++ b/keyboards/custommk/genesis/rev1/keymaps/via/rules.mk
diff --git a/keyboards/custommk/genesis/rev1/readme.md b/keyboards/custommk/genesis/rev1/readme.md
new file mode 100644
index 000000000..bba03cceb
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/readme.md
@@ -0,0 +1,19 @@
1# Genesis
2
3Genesis is a 5x4 ortholinear macro pad designed and produced by customMK.
4
5* Keyboard Maintainer: [customMK](https://github.com/customMK)
6* Hardware Supported: Genesis Macro Pad
7* Hardware Availability: [customMK](https://shop.custommk.com/products/genesis_macropad)
8
9Make example for this keyboard (after setting up your build environment):
10
11 make custommk/genesis/rev1:default
12
13Flashing example for this keyboard:
14
15 make custommk/genesis/rev1:default:flash
16
17Genesis Macro Pad has qmk-dfu bootloader preinstalled. To enter the bootloader, run the flashing command above, and then either plug in the USB connection while holding the top-left key, or alternatively, plug in the USB connection and then press the reset button on the PCB
18
19See 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/custommk/genesis/genesis.c b/keyboards/custommk/genesis/rev1/rev1.c
index f684d7ef7..ac40eedbf 100644
--- a/keyboards/custommk/genesis/genesis.c
+++ b/keyboards/custommk/genesis/rev1/rev1.c
@@ -14,25 +14,25 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16 16
17#include "genesis.h" 17#include "rev1.h"
18 18
19bool encoder_update_kb(uint8_t index, bool clockwise) { 19bool encoder_update_kb(uint8_t index, bool clockwise) {
20 if (!encoder_update_user(index, clockwise)) return false; 20 if (!encoder_update_user(index, clockwise)) return false;
21 /* top left encoder */ 21 /* top left encoder */
22 if (index == 0) { 22 if (index == 0) {
23 if (clockwise) { 23 if (clockwise) {
24 tap_code(KC_VOLU); 24 tap_code(KC_VOLU);
25 } else { 25 } else {
26 tap_code(KC_VOLD); 26 tap_code(KC_VOLD);
27 } 27 }
28 } 28 }
29 /* top right encoder */ 29 /* top right encoder */
30 else if (index == 1) { 30 else if (index == 1) {
31 if (clockwise) { 31 if (clockwise) {
32 tap_code(KC_VOLU); 32 tap_code(KC_VOLU);
33 } else { 33 } else {
34 tap_code(KC_VOLD); 34 tap_code(KC_VOLD);
35 } 35 }
36 } 36 }
37 return true; 37 return true;
38} 38}
diff --git a/keyboards/custommk/genesis/genesis.h b/keyboards/custommk/genesis/rev1/rev1.h
index ad1073652..0516b41ad 100644
--- a/keyboards/custommk/genesis/genesis.h
+++ b/keyboards/custommk/genesis/rev1/rev1.h
@@ -19,30 +19,30 @@
19#include "quantum.h" 19#include "quantum.h"
20 20
21#define LAYOUT_numpad_5x4( \ 21#define LAYOUT_numpad_5x4( \
22 K00, K01, K02, K03, \ 22 K00, K01, K02, K03, \
23 K10, K11, K12, \ 23 K10, K11, K12, \
24 K20, K21, K22, K23, \ 24 K20, K21, K22, K23, \
25 K30, K31, K32, \ 25 K30, K31, K32, \
26 K40, K42, K43 \ 26 K40, K42, K43 \
27) { \ 27) { \
28 { K00, K01, K02, K03 }, \ 28 { K00, K01, K02, K03 }, \
29 { K10, K11, K12, KC_NO }, \ 29 { K10, K11, K12, KC_NO }, \
30 { K20, K21, K22, K23 }, \ 30 { K20, K21, K22, K23 }, \
31 { K30, K31, K32, KC_NO }, \ 31 { K30, K31, K32, KC_NO }, \
32 { K40, KC_NO, K42, K43 } \ 32 { K40, KC_NO, K42, K43 } \
33} 33}
34 34
35#define LAYOUT_ortho_5x4( \ 35#define LAYOUT_ortho_5x4( \
36 K00, K01, K02, K03, \ 36 K00, K01, K02, K03, \
37 K10, K11, K12, K13, \ 37 K10, K11, K12, K13, \
38 K20, K21, K22, K23, \ 38 K20, K21, K22, K23, \
39 K30, K31, K32, K33, \ 39 K30, K31, K32, K33, \
40 K40, K41, K42, K43 \ 40 K40, K41, K42, K43 \
41) { \ 41) { \
42 { K00, K01, K02, K03 }, \ 42 { K00, K01, K02, K03 }, \
43 { K10, K11, K12, K13 }, \ 43 { K10, K11, K12, K13 }, \
44 { K20, K21, K22, K23 }, \ 44 { K20, K21, K22, K23 }, \
45 { K30, K31, K32, K33 }, \ 45 { K30, K31, K32, K33 }, \
46 { K40, K41, K42, K43 } \ 46 { K40, K41, K42, K43 } \
47} 47}
48 48
diff --git a/keyboards/custommk/genesis/rev1/rules.mk b/keyboards/custommk/genesis/rev1/rules.mk
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/rules.mk
diff --git a/keyboards/custommk/genesis/rev2/config.h b/keyboards/custommk/genesis/rev2/config.h
new file mode 100644
index 000000000..cbfda53f1
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/config.h
@@ -0,0 +1,66 @@
1/* Copyright 2020 customMK
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "config_common.h"
20
21/* USB Device descriptor parameter */
22#define VENDOR_ID 0xF35B
23#define PRODUCT_ID 0xFAB1
24#define DEVICE_VER 0x0001
25#define MANUFACTURER customMK
26#define PRODUCT GenesisRev2
27
28/* key matrix size */
29#define MATRIX_ROWS 6
30#define MATRIX_COLS 4
31
32/* key matrix pins */
33#define MATRIX_ROW_PINS { F0, C7, C6, B6, B5, B0}
34#define MATRIX_COL_PINS { F4, F5, D7, B4 }
35#define UNUSED_PINS
36
37/* COL2ROW or ROW2COL */
38#define DIODE_DIRECTION COL2ROW
39
40/* Set 0 if debouncing isn't needed */
41#define DEBOUNCE 5
42
43#define ENCODERS_PAD_A { F6, D2 }
44#define ENCODERS_PAD_B { F7, D1 }
45#define ENCODER_RESOLUTION 2
46#define TAP_CODE_DELAY 10
47
48#define RGB_DI_PIN E6
49#define RGBLIGHT_EFFECT_BREATHING
50#define RGBLIGHT_EFFECT_RAINBOW_MOOD
51#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
52#define RGBLIGHT_EFFECT_SNAKE
53#define RGBLIGHT_EFFECT_KNIGHT
54#define RGBLIGHT_EFFECT_CHRISTMAS
55#define RGBLIGHT_EFFECT_STATIC_GRADIENT
56#define RGBLIGHT_EFFECT_RGB_TEST
57#define RGBLIGHT_EFFECT_ALTERNATING
58#define RGBLIGHT_EFFECT_TWINKLE
59#define RGBLED_NUM 13
60#define RGBLIGHT_LAYERS
61#define RGBLIGHT_HUE_STEP 8
62#define RGBLIGHT_SAT_STEP 8
63#define RGBLIGHT_VAL_STEP 8
64#define RGBLIGHT_LIMIT_VAL 128
65#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL + 4
66
diff --git a/keyboards/custommk/genesis/rev2/info.json b/keyboards/custommk/genesis/rev2/info.json
new file mode 100644
index 000000000..8dda87c1a
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/info.json
@@ -0,0 +1,76 @@
1{
2 "keyboard_name": "Genesis Rev2",
3 "url": "https://www.customMK.com",
4 "maintainer": "customMK",
5 "width": 4,
6 "height": 6,
7 "layouts": {
8 "LAYOUT_ortho_5x4": {
9 "layout": [{"label":"MO(1)", "x":0, "y":0},
10 {"label":"/", "x":1, "y":0},
11 {"label":"*", "x":2, "y":0},
12 {"label":"Mute", "x":3, "y":0},
13 {"label":"7", "x":0, "y":1},
14 {"label":"8", "x":1, "y":1},
15 {"label":"9", "x":2, "y":1},
16 {"label":"+", "x":3, "y":1},
17 {"label":"4", "x":0, "y":2},
18 {"label":"5", "x":1, "y":2},
19 {"label":"6", "x":2, "y":2},
20 {"label":"Pg Up", "x":3, "y":2},
21 {"label":"1", "x":0, "y":3},
22 {"label":"2", "x":1, "y":3},
23 {"label":"3", "x":2, "y":3},
24 {"label":"Pg Dn", "x":3, "y":3},
25 {"label":"0", "x":0, "y":4},
26 {"label":"Spc", "x":1, "y":4},
27 {"label":".", "x":2, "y":4},
28 {"label":"Enter", "x":3, "y":4}]
29 },
30 "LAYOUT_numpad_5x4": {
31 "layout": [{"label":"MO(1)", "x":0, "y":0},
32 {"label":"/", "x":1, "y":0},
33 {"label":"*", "x":2, "y":0},
34 {"label":"-", "x":3, "y":0},
35 {"label":"7", "x":0, "y":1},
36 {"label":"8", "x":1, "y":1},
37 {"label":"9", "x":2, "y":1},
38 {"label":"+", "x":3, "y":1, "h":2},
39 {"label":"4", "x":0, "y":2},
40 {"label":"5", "x":1, "y":2},
41 {"label":"6", "x":2, "y":2},
42 {"label":"1", "x":0, "y":3},
43 {"label":"2", "x":1, "y":3},
44 {"label":"3", "x":2, "y":3},
45 {"label":"Enter", "x":3, "y":3, "h":2},
46 {"label":"0", "x":0, "y":4, "w":2},
47 {"label":".", "x":2, "y":4}]
48 },
49 "LAYOUT_via_6x4": {
50 "layout": [{"label":"Vol-", "x":0, "y":0},
51 {"label":"Vol+", "x":1, "y":0},
52 {"label":"Vol-", "x":3, "y":0},
53 {"label":"Vol+", "x":4, "y":0},
54 {"label":"MO(1)", "x":0.5, "y":1.1},
55 {"label":"/", "x":1.5, "y":1.1},
56 {"label":"*", "x":2.5, "y":1.1},
57 {"label":"Mute", "x":3.5, "y":1.1},
58 {"label":"7", "x":0.5, "y":2.1},
59 {"label":"8", "x":1.5, "y":2.1},
60 {"label":"9", "x":2.5, "y":2.1},
61 {"label":"+", "x":3.5, "y":2.1},
62 {"label":"4", "x":0.5, "y":3.1},
63 {"label":"5", "x":1.5, "y":3.1},
64 {"label":"6", "x":2.5, "y":3.1},
65 {"label":"Pg Up", "x":3.5, "y":3.1},
66 {"label":"1", "x":0.5, "y":4.1},
67 {"label":"2", "x":1.5, "y":4.1},
68 {"label":"3", "x":2.5, "y":4.1},
69 {"label":"Pg Dn", "x":3.5, "y":4.1},
70 {"label":"0", "x":0.5, "y":5.1},
71 {"label":"Spc", "x":1.5, "y":5.1},
72 {"label":".", "x":2.5, "y":5.1},
73 {"label":"Enter", "x":3.5, "y":5.1}]
74 }
75 }
76} \ No newline at end of file
diff --git a/keyboards/custommk/genesis/rev2/keymaps/default/keymap.c b/keyboards/custommk/genesis/rev2/keymaps/default/keymap.c
new file mode 100644
index 000000000..7ba558ca9
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/keymaps/default/keymap.c
@@ -0,0 +1,76 @@
1/* Copyright 2020 customMK
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18
19//#define GENESIS_LAYER_COLORS
20#define GENESIS_LAYER1_COLOR HSV_CYAN
21#define GENESIS_LAYER2_COLOR HSV_GREEN
22#define GENESIS_LAYER3_COLOR HSV_WHITE
23
24
25const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
26
27 [0] = LAYOUT_ortho_5x4(
28 MO(1), KC_PSLS, KC_PAST, KC_PMNS,
29 KC_P7, KC_P8, KC_P9, KC_BSPC,
30 KC_P4, KC_P5, KC_P6, KC_PPLS,
31 KC_P1, KC_P2, KC_P3, KC_CAPS,
32 KC_P0, KC_SPC, KC_PDOT, KC_ENT),
33
34 [1] = LAYOUT_ortho_5x4(
35 KC_TRNS, KC_VOLU, RGB_TOG, RGB_MOD,
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
37 RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 RGB_HUI, KC_TRNS, KC_TRNS, RGB_HUD),
40
41};
42
43
44#ifdef GENESIS_LAYER_COLORS
45const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
46 {0,13,GENESIS_LAYER1_COLOR}
47 );
48
49const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
50 {0,13,GENESIS_LAYER2_COLOR}
51 );
52
53const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
54 {0,13,GENESIS_LAYER3_COLOR}
55 );
56
57
58const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
59 my_layer1_layer,
60 my_layer2_layer,
61 my_layer3_layer
62 );
63
64//Set the appropriate layer color
65layer_state_t layer_state_set_user(layer_state_t state) {
66 rgblight_set_layer_state(0, layer_state_cmp(state, 1));
67 rgblight_set_layer_state(1, layer_state_cmp(state, 2));
68 rgblight_set_layer_state(2, layer_state_cmp(state, 3));
69 return state;
70}
71
72void keyboard_post_init_user(void) {
73 //Enable the LED layers
74 rgblight_layers = my_rgb_layers;
75}
76#endif \ No newline at end of file
diff --git a/keyboards/custommk/genesis/rev2/keymaps/default/readme.md b/keyboards/custommk/genesis/rev2/keymaps/default/readme.md
new file mode 100644
index 000000000..202402d83
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/keymaps/default/readme.md
@@ -0,0 +1,6 @@
1# Default Genesis Macro Pad Layout
2
3This is the default layout for the Genesis Macro Pad. It assumes all 1u switches
4and optional rotary encoder in the top-left or top-right corner for media volume
5control. The top left switch activates Layer 1 which enables control of the RGB
6underglow. \ No newline at end of file
diff --git a/keyboards/custommk/genesis/rev2/keymaps/numpad/keymap.c b/keyboards/custommk/genesis/rev2/keymaps/numpad/keymap.c
new file mode 100644
index 000000000..e6b84c3f6
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/keymaps/numpad/keymap.c
@@ -0,0 +1,89 @@
1/* Copyright 2020 customMK
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18
19//#define GENESIS_LAYER_COLORS
20#define GENESIS_LAYER1_COLOR HSV_CYAN
21#define GENESIS_LAYER2_COLOR HSV_GREEN
22#define GENESIS_LAYER3_COLOR HSV_WHITE
23
24const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
25
26 [0] = LAYOUT_numpad_5x4(
27 MO(1), KC_PSLS, KC_PAST, KC_PMNS,
28 KC_P7, KC_P8, KC_P9,
29 KC_P4, KC_P5, KC_P6, KC_PPLS,
30 KC_P1, KC_P2, KC_P3,
31 KC_P0, KC_PDOT, KC_ENT),
32
33 [1] = LAYOUT_numpad_5x4(
34 KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD,
35 KC_TRNS, KC_TRNS, KC_TRNS,
36 RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD,
37 KC_TRNS, KC_TRNS, KC_TRNS,
38 RGB_HUI, KC_TRNS, RGB_HUD),
39
40 [2] = LAYOUT_numpad_5x4(
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS,
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
44 KC_TRNS, KC_TRNS, KC_TRNS,
45 KC_TRNS, KC_TRNS, KC_TRNS),
46
47 [3] = LAYOUT_numpad_5x4(
48 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
49 KC_TRNS, KC_TRNS, KC_TRNS,
50 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
51 KC_TRNS, KC_TRNS, KC_TRNS,
52 KC_TRNS, KC_TRNS, KC_TRNS),
53
54};
55
56
57#ifdef GENESIS_LAYER_COLORS
58const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
59 {0,13,GENESIS_LAYER1_COLOR}
60 );
61
62const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
63 {0,13,GENESIS_LAYER2_COLOR}
64 );
65
66const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
67 {0,13,GENESIS_LAYER3_COLOR}
68 );
69
70
71const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
72 my_layer1_layer,
73 my_layer2_layer,
74 my_layer3_layer
75 );
76
77//Set the appropriate layer color
78layer_state_t layer_state_set_user(layer_state_t state) {
79 rgblight_set_layer_state(0, layer_state_cmp(state, 1));
80 rgblight_set_layer_state(1, layer_state_cmp(state, 2));
81 rgblight_set_layer_state(2, layer_state_cmp(state, 3));
82 return state;
83}
84
85void keyboard_post_init_user(void) {
86 //Enable the LED layers
87 rgblight_layers = my_rgb_layers;
88}
89#endif \ No newline at end of file
diff --git a/keyboards/custommk/genesis/rev2/keymaps/numpad/readme.md b/keyboards/custommk/genesis/rev2/keymaps/numpad/readme.md
new file mode 100644
index 000000000..795e4341a
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/keymaps/numpad/readme.md
@@ -0,0 +1,3 @@
1# Numpad Genesis Macro Pad Layout
2
3This is the numpad layout for the Genesis Macro Pad. It assumes the 0, +, and enter keys are all 2u size, with an optional rotary encoder in the top-left or top-right corner for media volume control. The top left switch activates Layer 1 which enables control of the RGB underglow. \ No newline at end of file
diff --git a/keyboards/custommk/genesis/rev2/keymaps/via/keymap.c b/keyboards/custommk/genesis/rev2/keymaps/via/keymap.c
new file mode 100644
index 000000000..eb0f7772c
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/keymaps/via/keymap.c
@@ -0,0 +1,167 @@
1/* Copyright 2020 customMK
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18
19//#define GENESIS_LAYER_COLORS
20#define GENESIS_LAYER1_COLOR HSV_CYAN
21#define GENESIS_LAYER2_COLOR HSV_GREEN
22#define GENESIS_LAYER3_COLOR HSV_WHITE
23
24
25const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
26
27 [0] = LAYOUT_via_6x4(
28 KC_VOLD, KC_VOLU, KC_VOLD, KC_VOLU,
29 MO(1), KC_PSLS, KC_PAST, KC_PMNS,
30 KC_P7, KC_P8, KC_P9, KC_PGUP,
31 KC_P4, KC_P5, KC_P6, KC_PPLS,
32 KC_P1, KC_P2, KC_P3, KC_PGDN,
33 KC_P0, KC_SPC, KC_PDOT, KC_PENT),
34
35 [1] = LAYOUT_via_6x4(
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
37 KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
41 RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS),
42
43 [2] = LAYOUT_via_6x4(
44 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
45 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
48 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
49 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
50
51 [3] = LAYOUT_via_6x4(
52 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
53 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
54 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
55 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
56 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
57 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
58
59};
60
61#ifdef GENESIS_LAYER_COLORS
62const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
63 {0,13,GENESIS_LAYER1_COLOR}
64 );
65
66const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
67 {0,13,GENESIS_LAYER2_COLOR}
68 );
69
70const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
71 {0,13,GENESIS_LAYER3_COLOR}
72 );
73
74
75const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
76 my_layer1_layer,
77 my_layer2_layer,
78 my_layer3_layer
79 );
80
81//Set the appropriate layer color
82layer_state_t layer_state_set_user(layer_state_t state) {
83 rgblight_set_layer_state(0, layer_state_cmp(state, 1));
84 rgblight_set_layer_state(1, layer_state_cmp(state, 2));
85 rgblight_set_layer_state(2, layer_state_cmp(state, 3));
86 return state;
87}
88
89void keyboard_post_init_user(void) {
90 //Enable the LED layers
91 rgblight_layers = my_rgb_layers;
92}
93#endif
94
95
96keyevent_t encoder_left_ccw = {
97 .key = (keypos_t){.row = 5, .col = 0},
98 .pressed = false
99};
100
101keyevent_t encoder_left_cw = {
102 .key = (keypos_t){.row = 5, .col = 1},
103 .pressed = false
104};
105
106keyevent_t encoder_right_ccw = {
107 .key = (keypos_t){.row = 5, .col = 2},
108 .pressed = false
109};
110
111keyevent_t encoder_right_cw = {
112 .key = (keypos_t){.row = 5, .col = 3},
113 .pressed = false
114};
115
116void matrix_scan_user(void) {
117 if (IS_PRESSED(encoder_left_ccw)) {
118 encoder_left_ccw.pressed = false;
119 encoder_left_ccw.time = (timer_read() | 1);
120 action_exec(encoder_left_ccw);
121 }
122
123 if (IS_PRESSED(encoder_left_cw)) {
124 encoder_left_cw.pressed = false;
125 encoder_left_cw.time = (timer_read() | 1);
126 action_exec(encoder_left_cw);
127 }
128
129 if (IS_PRESSED(encoder_right_ccw)) {
130 encoder_right_ccw.pressed = false;
131 encoder_right_ccw.time = (timer_read() | 1);
132 action_exec(encoder_right_ccw);
133 }
134
135 if (IS_PRESSED(encoder_right_cw)) {
136 encoder_right_cw.pressed = false;
137 encoder_right_cw.time = (timer_read() | 1);
138 action_exec(encoder_right_cw);
139 }
140
141}
142
143
144bool encoder_update_user(uint8_t index, bool clockwise) {
145 if (index == 0) {
146 if (clockwise) {
147 encoder_left_cw.pressed = true;
148 encoder_left_cw.time = (timer_read() | 1);
149 action_exec(encoder_left_cw);
150 } else {
151 encoder_left_ccw.pressed = true;
152 encoder_left_ccw.time = (timer_read() | 1);
153 action_exec(encoder_left_ccw);
154 }
155 } else {
156 if (clockwise) {
157 encoder_right_cw.pressed = true;
158 encoder_right_cw.time = (timer_read() | 1);
159 action_exec(encoder_right_cw);
160 } else {
161 encoder_right_ccw.pressed = true;
162 encoder_right_ccw.time = (timer_read() | 1);
163 action_exec(encoder_right_ccw);
164 }
165 }
166 return false;
167}
diff --git a/keyboards/custommk/genesis/rev2/keymaps/via/readme.md b/keyboards/custommk/genesis/rev2/keymaps/via/readme.md
new file mode 100644
index 000000000..aa70d6225
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/keymaps/via/readme.md
@@ -0,0 +1,3 @@
1# Genesis Macro Pad Layout for VIA
2
3This is the via layout for the Genesis Macro Pad. It is identical to the default 1u layout which assumes all 1u switches and optional rotary encoder in the top-left or top-right corner for media volume control. The top-left switch activates Layer 1 which enables control of the RGB underglow. \ No newline at end of file
diff --git a/keyboards/custommk/genesis/rev2/keymaps/via/rules.mk b/keyboards/custommk/genesis/rev2/keymaps/via/rules.mk
new file mode 100644
index 000000000..43061db1d
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/custommk/genesis/rev2/readme.md b/keyboards/custommk/genesis/rev2/readme.md
new file mode 100644
index 000000000..1b531b29c
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/readme.md
@@ -0,0 +1,19 @@
1# Genesis
2
3Genesis Rev2 is the same as Genesis Rev1 firmware, except Rev2 allows encoder function remapping using VIA.
4
5* Keyboard Maintainer: [customMK](https://github.com/customMK)
6* Hardware Supported: Genesis Macro Pad
7* Hardware Availability: [customMK](https://shop.custommk.com/products/genesis_macropad)
8
9Make example for this keyboard (after setting up your build environment):
10
11 make custommk/genesis/rev2:default
12
13Flashing example for this keyboard:
14
15 make custommk/genesis/rev2:default:flash
16
17Genesis Macro Pad has qmk-dfu bootloader preinstalled. To enter the bootloader, run the flashing command above, and then either plug in the USB connection while holding the top-left key, or alternatively, plug in the USB connection and then press the reset button on the PCB
18
19See 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/custommk/genesis/rev2/rev2.c b/keyboards/custommk/genesis/rev2/rev2.c
new file mode 100644
index 000000000..bfa4cb055
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/rev2.c
@@ -0,0 +1,39 @@
1/* Copyright 2020 customMK
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "rev2.h"
18
19bool encoder_update_kb(uint8_t index, bool clockwise) {
20 if (!encoder_update_user(index, clockwise)) { return false; }
21 /* top left encoder */
22 if (index == 0) {
23 if (clockwise) {
24 tap_code(KC_VOLU);
25 } else {
26 tap_code(KC_VOLD);
27 }
28 }
29 /* top right encoder */
30 else if (index == 1) {
31 if (clockwise) {
32 tap_code(KC_VOLU);
33 } else {
34 tap_code(KC_VOLD);
35 }
36 }
37 return false;
38}
39
diff --git a/keyboards/custommk/genesis/rev2/rev2.h b/keyboards/custommk/genesis/rev2/rev2.h
new file mode 100644
index 000000000..e978e706c
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/rev2.h
@@ -0,0 +1,66 @@
1/* Copyright 2020 customMK
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "quantum.h"
20
21#define LAYOUT_numpad_5x4( \
22 K00, K01, K02, K03, \
23 K10, K11, K12, \
24 K20, K21, K22, K23, \
25 K30, K31, K32, \
26 K40, K42, K43 \
27) { \
28 { K00, K01, K02, K03 }, \
29 { K10, K11, K12, KC_NO }, \
30 { K20, K21, K22, K23 }, \
31 { K30, K31, K32, KC_NO }, \
32 { K40, KC_NO, K42, K43 }, \
33 { KC_NO, KC_NO, KC_NO, KC_NO} \
34}
35
36#define LAYOUT_ortho_5x4( \
37 K00, K01, K02, K03, \
38 K10, K11, K12, K13, \
39 K20, K21, K22, K23, \
40 K30, K31, K32, K33, \
41 K40, K41, K42, K43 \
42) { \
43 { K00, K01, K02, K03 }, \
44 { K10, K11, K12, K13 }, \
45 { K20, K21, K22, K23 }, \
46 { K30, K31, K32, K33 }, \
47 { K40, K41, K42, K43 }, \
48 { KC_NO, KC_NO, KC_NO, KC_NO} \
49}
50
51
52#define LAYOUT_via_6x4( \
53 E00A, E00B, E01A, E01B, \
54 K00, K01, K02, K03, \
55 K10, K11, K12, K13, \
56 K20, K21, K22, K23, \
57 K30, K31, K32, K33, \
58 K40, K41, K42, K43 \
59) { \
60 { K00, K01, K02, K03 }, \
61 { K10, K11, K12, K13 }, \
62 { K20, K21, K22, K23 }, \
63 { K30, K31, K32, K33 }, \
64 { K40, K41, K42, K43 }, \
65 { E00A, E00B, E01A, E01B } \
66}
diff --git a/keyboards/custommk/genesis/rev2/rules.mk b/keyboards/custommk/genesis/rev2/rules.mk
new file mode 100644
index 000000000..1556125ec
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/rules.mk
@@ -0,0 +1,23 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = qmk-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
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 = yes # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output
23ENCODER_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/custommk/genesis/rules.mk b/keyboards/custommk/genesis/rules.mk
index c7cf04f87..43a13f1aa 100644
--- a/keyboards/custommk/genesis/rules.mk
+++ b/keyboards/custommk/genesis/rules.mk
@@ -20,4 +20,6 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow 20RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth 21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = no # Audio output 22AUDIO_ENABLE = no # Audio output
23ENCODER_ENABLE = yes \ No newline at end of file 23ENCODER_ENABLE = yes
24
25DEFAULT_FOLDER = custommk/genesis/rev2
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h
index 1ee83cdc9..6a783f55a 100755
--- a/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h
@@ -42,7 +42,7 @@
42#define NO_ACTION_FUNCTION 42#define NO_ACTION_FUNCTION
43#ifdef RGB_MATRIX_ENABLE 43#ifdef RGB_MATRIX_ENABLE
44#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects 44#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
45#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended 45#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
46#define USB_SUSPEND_WAKEUP_DELAY 5000 46#define USB_SUSPEND_WAKEUP_DELAY 5000
47#define RGB_MATRIX_KEYPRESSES 47#define RGB_MATRIX_KEYPRESSES
48#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN 48#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
diff --git a/keyboards/keyprez/rhino/config.h b/keyboards/keyprez/rhino/config.h
new file mode 100644
index 000000000..b89be8fdc
--- /dev/null
+++ b/keyboards/keyprez/rhino/config.h
@@ -0,0 +1,115 @@
1/*
2Copyright 2021 Christian Sandven
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 Christian Sandven
27#define PRODUCT rhino
28
29/* key matrix size */
30#define MATRIX_ROWS 8
31#define MATRIX_COLS 7
32
33/*
34 * Keyboard Matrix Assignments
35 *
36 * Change this to how you wired your keyboard
37 * COLS: AVR pins used for columns, left to right
38 * ROWS: AVR pins used for rows, top to bottom
39 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
40 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
41 *
42 */
43#define MATRIX_ROW_PINS { B3, B2, B6, B1, F4, F5, F6, F7 }
44#define MATRIX_COL_PINS { D3, D2, D4, D7, E6, B4, B5 }
45
46/* COL2ROW, ROW2COL */
47#define DIODE_DIRECTION COL2ROW
48
49#define ENCODERS_PAD_A { D1 }
50#define ENCODERS_PAD_B { D0 }
51#define ENCODER_RESOLUTION 4
52
53#define AUDIO_PIN C6
54#define MUSIC_MAP
55
56/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
57#define DEBOUNCE 2
58
59/* define if matrix has ghost (lacks anti-ghosting diodes) */
60//#define MATRIX_HAS_GHOST
61
62/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
63#define LOCKING_SUPPORT_ENABLE
64/* Locking resynchronize hack */
65#define LOCKING_RESYNC_ENABLE
66
67/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
68 * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
69 */
70//#define GRAVE_ESC_CTRL_OVERRIDE
71
72/*
73 * Force NKRO
74 *
75 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
76 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
77 * makefile for this to work.)
78 *
79 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
80 * until the next keyboard reset.
81 *
82 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
83 * fully operational during normal computer usage.
84 *
85 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
86 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
87 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
88 * power-up.
89 *
90 */
91//#define FORCE_NKRO
92
93/*
94 * Feature disable options
95 * These options are also useful to firmware size reduction.
96 */
97
98/* disable debug print */
99//#define NO_DEBUG
100
101/* disable print */
102//#define NO_PRINT
103
104/* disable action features */
105//#define NO_ACTION_LAYER
106//#define NO_ACTION_TAPPING
107//#define NO_ACTION_ONESHOT
108
109/* disable these deprecated features by default */
110#define NO_ACTION_MACRO
111#define NO_ACTION_FUNCTION
112
113/* Bootmagic Lite key configuration */
114//#define BOOTMAGIC_LITE_ROW 0
115//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/keyprez/rhino/info.json b/keyboards/keyprez/rhino/info.json
new file mode 100644
index 000000000..5bf37e06b
--- /dev/null
+++ b/keyboards/keyprez/rhino/info.json
@@ -0,0 +1,179 @@
1{
2 "keyboard_name": "rhino",
3 "url": "",
4 "maintainer": "Christian Sandven",
5 "width": 14,
6 "height": 4,
7 "layouts": {
8 "LAYOUT_ortho_2x2u": {
9 "layout": [
10 {"x": 0, "y": 0, "w": 1.5},
11 {"x": 1.5, "y": 0},
12 {"x": 2.5, "y": 0},
13 {"x": 3.5, "y": 0},
14 {"x": 4.5, "y": 0},
15 {"x": 5.5, "y": 0},
16 {"x": 6.5, "y": 0},
17 {"x": 7.5, "y": 0},
18 {"x": 8.5, "y": 0},
19 {"x": 9.5, "y": 0},
20 {"x": 10.5, "y": 0},
21 {"x": 11.5, "y": 0},
22 {"x": 12.5, "y": 0},
23 {"x": 13.5, "y": 0, "w": 1.5},
24
25 {"x": 0, "y": 1, "w": 1.5},
26 {"x": 1.5, "y": 1},
27 {"x": 2.5, "y": 1},
28 {"x": 3.5, "y": 1},
29 {"x": 4.5, "y": 1},
30 {"x": 5.5, "y": 1},
31 {"x": 6.5, "y": 1},
32 {"x": 7.5, "y": 1},
33 {"x": 8.5, "y": 1},
34 {"x": 9.5, "y": 1},
35 {"x": 10.5, "y": 1},
36 {"x": 11.5, "y": 1},
37 {"x": 12.5, "y": 1},
38 {"x": 13.5, "y": 1, "w": 1.5},
39
40 {"x": 0, "y": 2, "w": 1.5},
41 {"x": 1.5, "y": 2},
42 {"x": 2.5, "y": 2},
43 {"x": 3.5, "y": 2},
44 {"x": 4.5, "y": 2},
45 {"x": 5.5, "y": 2},
46 {"x": 6.5, "y": 2},
47 {"x": 7.5, "y": 2},
48 {"x": 8.5, "y": 2},
49 {"x": 9.5, "y": 2},
50 {"x": 10.5, "y": 2},
51 {"x": 11.5, "y": 2},
52 {"x": 12.5, "y": 2},
53 {"x": 13.5, "y": 2, "w": 1.5},
54
55 {"x": 1.5, "y": 4},
56 {"x": 2.5, "y": 4},
57 {"x": 3.5, "y": 4},
58 {"x": 4.5, "y": 4},
59 {"x": 5.5, "y": 4, "w": 2},
60 {"x": 7.5, "y": 4, "w": 2},
61 {"x": 9.5, "y": 4},
62 {"x": 10.5, "y": 4},
63 {"x": 11.5, "y": 4},
64 {"x": 12.5, "y": 4}
65 ]
66 },
67
68 "LAYOUT_ergo_2x2u": {
69 "layout": [
70 {"x": 0, "y": 0, "w": 1.5},
71 {"x": 1.5, "y": 0},
72 {"x": 2.5, "y": 0},
73 {"x": 3.5, "y": 0},
74 {"x": 4.5, "y": 0},
75 {"x": 5.5, "y": 0},
76 {"x": 6.5, "y": 0, "h": 1.5},
77 {"x": 7.5, "y": 0, "h": 1.5},
78 {"x": 8.5, "y": 0},
79 {"x": 9.5, "y": 0},
80 {"x": 10.5, "y": 0},
81 {"x": 11.5, "y": 0},
82 {"x": 12.5, "y": 0},
83 {"x": 13.5, "y": 0, "w": 1.5},
84
85 {"x": 0, "y": 1, "w": 1.5},
86 {"x": 1.5, "y": 1},
87 {"x": 2.5, "y": 1},
88 {"x": 3.5, "y": 1},
89 {"x": 4.5, "y": 1},
90 {"x": 5.5, "y": 1},
91 {"x": 6.5, "y": 1.5, "h": 1.5},
92 {"x": 7.5, "y": 1.5, "h": 1.5},
93 {"x": 8.5, "y": 1},
94 {"x": 9.5, "y": 1},
95 {"x": 10.5, "y": 1},
96 {"x": 11.5, "y": 1},
97 {"x": 12.5, "y": 1},
98 {"x": 13.5, "y": 1, "w": 1.5},
99
100 {"x": 0, "y": 2, "w": 1.5},
101 {"x": 1.5, "y": 2},
102 {"x": 2.5, "y": 2},
103 {"x": 3.5, "y": 2},
104 {"x": 4.5, "y": 2},
105 {"x": 5.5, "y": 2},
106 {"x": 8.5, "y": 2},
107 {"x": 9.5, "y": 2},
108 {"x": 10.5, "y": 2},
109 {"x": 11.5, "y": 2},
110 {"x": 12.5, "y": 2},
111 {"x": 13.5, "y": 2, "w": 1.5},
112
113 {"x": 1.5, "y": 4},
114 {"x": 2.5, "y": 4},
115 {"x": 3.5, "y": 4},
116 {"x": 4.5, "y": 4},
117 {"x": 5.5, "y": 4, "w": 2},
118 {"x": 7.5, "y": 4, "w": 2},
119 {"x": 9.5, "y": 4},
120 {"x": 10.5, "y": 4},
121 {"x": 11.5, "y": 4},
122 {"x": 12.5, "y": 4}
123 ]
124 },
125
126 "LAYOUT_ortho_7u": {
127 "layout": [
128 {"x": 0, "y": 0, "w": 1.5},
129 {"x": 1.5, "y": 0},
130 {"x": 2.5, "y": 0},
131 {"x": 3.5, "y": 0},
132 {"x": 4.5, "y": 0},
133 {"x": 5.5, "y": 0},
134 {"x": 6.5, "y": 0, "h": 1.5},
135 {"x": 7.5, "y": 0, "h": 1.5},
136 {"x": 8.5, "y": 0},
137 {"x": 9.5, "y": 0},
138 {"x": 10.5, "y": 0},
139 {"x": 11.5, "y": 0},
140 {"x": 12.5, "y": 0},
141 {"x": 13.5, "y": 0, "w": 1.5},
142
143 {"x": 0, "y": 1, "w": 1.5},
144 {"x": 1.5, "y": 1},
145 {"x": 2.5, "y": 1},
146 {"x": 3.5, "y": 1},
147 {"x": 4.5, "y": 1},
148 {"x": 5.5, "y": 1},
149 {"x": 6.5, "y": 1.5, "h": 1.5},
150 {"x": 7.5, "y": 1.5, "h": 1.5},
151 {"x": 8.5, "y": 1},
152 {"x": 9.5, "y": 1},
153 {"x": 10.5, "y": 1},
154 {"x": 11.5, "y": 1},
155 {"x": 12.5, "y": 1, "w": 1.5},
156 {"x": 14, "y": 1},
157
158 {"x": 0, "y": 2, "w": 1.5},
159 {"x": 1.5, "y": 2},
160 {"x": 2.5, "y": 2},
161 {"x": 3.5, "y": 2},
162 {"x": 4.5, "y": 2},
163 {"x": 5.5, "y": 2},
164 {"x": 8.5, "y": 2},
165 {"x": 9.5, "y": 2},
166 {"x": 10.5, "y": 2},
167 {"x": 11.5, "y": 2, "w": 1.5},
168 {"x": 13, "y": 2},
169 {"x": 14, "y": 2},
170
171 {"x": 1.5, "y": 4},
172 {"x": 2.5, "y": 4, "w": 1.5},
173 {"x": 4, "y": 4, "w": 7},
174 {"x": 11, "y": 4, "w": 1.5},
175 {"x": 12.5, "y": 4}
176 ]
177 }
178 }
179}
diff --git a/keyboards/keyprez/rhino/keymaps/default/keymap.c b/keyboards/keyprez/rhino/keymaps/default/keymap.c
new file mode 100644
index 000000000..c58c3e8cc
--- /dev/null
+++ b/keyboards/keyprez/rhino/keymaps/default/keymap.c
@@ -0,0 +1,116 @@
1/* Copyright 2021 Christian Sandven
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18// Defines names for use in layer keycodes and the keymap
19enum layer_names {
20 _BASE,
21 _FN,
22 _LOWER,
23 _RAISE
24};
25
26#define LOWER MO(_LOWER)
27#define FN MO(_FN)
28#define TAB_CTL MT(MOD_LCTL, KC_TAB)
29#define SPC_RAISE LT(_RAISE, KC_SPC)
30
31const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
32
33 /* Base Layer
34 * .-----------------------------------------------------------------------------------------------------------------------------.
35 * | KC_MUTE |
36 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
37 * | GESC | Q | W | E | R | T | [ | ] | Y | U | I | O | P | ' |
38 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
39 * | TAB | A | S | D | F | G | HOME | PG UP | H | J | K | L | ; | BACKSP |
40 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
41 * | LSHIFT | Z | X | C | V | B | END | PG DN | N | M | , | . | / | ENTER |
42 * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
43 * | | LGUI | FN | LALT | LOWER | SPACE | SPACE | LEFT | UP | DOWN | RIGHT | |
44 * '-----------------------------------------------------------------------------------------------------------------------------'
45 */
46 [_BASE] = LAYOUT_ortho_2x2u(
47 KC_MUTE,
48 KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT,
49 TAB_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSPC,
50 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_END, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
51 KC_LGUI, FN, KC_LALT, LOWER, KC_SPC, KC_SPC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT
52 ),
53
54 /* FN Layer
55 * .-----------------------------------------------------------------------------------------------------------------------------.
56 * | KC_APP |
57 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
58 * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
59 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
60 * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | | DEL | PRT SC |
61 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
62 * | | | | | | | | | | | | | | RESET |
63 * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
64 * | | | | | | | | MUTE | VOL UP |VOL DOWN| PAUSE | |
65 * '-----------------------------------------------------------------------------------------------------------------------------'
66 */
67 [_FN] = LAYOUT_ortho_2x2u(
68 KC_APP,
69 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
70 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, KC_DEL, KC_PSCR,
71 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
72 MU_TOG, MU_MOD, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPLY
73 ),
74
75 /* LOWER Layer
76 * .-----------------------------------------------------------------------------------------------------------------------------.
77 * | KC_APP |
78 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
79 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | DEL |
80 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
81 * | | F1 | F2 | F3 | F4 | F5 | F6 | | | | | | | INSERT |
82 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
83 * | | F7 | F8 | F9 | F10 | F11 | F12 | ISO # | ISO / | | | | \ | |
84 * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
85 * | | | | | | | | HOME | PG UP | PG DN | END | |
86 * '-----------------------------------------------------------------------------------------------------------------------------'
87 */
88 [_LOWER] = LAYOUT_ortho_2x2u(
89 KC_APP,
90 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL,
91 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, _______, _______, _______, KC_INS,
92 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, KC_BSLS, _______,
93 _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_PGDOWN, KC_END
94 ),
95
96 /* RAISE Layer
97 * .-----------------------------------------------------------------------------------------------------------------------------.
98 * | KC_APP |
99 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
100 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | - | = | | |
101 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
102 * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | { | } | | | DEL |
103 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
104 * | | F7 | F8 | F9 | F10 | F11 | F12 | ISO ~ | ISO | | | | | | INSERT |
105 * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
106 * | | | | | | | | | | | | |
107 * '-----------------------------------------------------------------------------------------------------------------------------'
108 */
109 [_RAISE] = LAYOUT_ortho_2x2u(
110 KC_APP,
111 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MINS, KC_EQL, KC_PIPE,
112 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_DEL,
113 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), _______, _______, _______, _______, KC_INS,
114 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
115 ),
116};
diff --git a/keyboards/keyprez/rhino/keymaps/default/readme.md b/keyboards/keyprez/rhino/keymaps/default/readme.md
new file mode 100644
index 000000000..2a9de9d74
--- /dev/null
+++ b/keyboards/keyprez/rhino/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for rhino
diff --git a/keyboards/keyprez/rhino/keymaps/default_7u/keymap.c b/keyboards/keyprez/rhino/keymaps/default_7u/keymap.c
new file mode 100644
index 000000000..a24f45db6
--- /dev/null
+++ b/keyboards/keyprez/rhino/keymaps/default_7u/keymap.c
@@ -0,0 +1,117 @@
1/* Copyright 2021 Christian Sandven
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18// Defines names for use in layer keycodes and the keymap
19enum layer_names {
20 _BASE,
21 _FN,
22 _LOWER,
23 _RAISE
24};
25
26#define LOWER MO(_LOWER)
27#define RAISE MO(_RAISE)
28#define FN MO(_FN)
29#define ESC_CTL MT(MOD_LCTL, KC_ESC)
30
31const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
32
33 /* Base Layer
34 * .-----------------------------------------------------------------------------------------------------------------------------.
35 * | KC_MUTE |
36 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
37 * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
38 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
39 * | ESC | A | S | D | F | G | H | J | K | L | ; | ' | BACKSP | PG UP |
40 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
41 * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | ENTER | FN | PG DN |
42 * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
43 * | | LGUI | LALT | SPACE | RALT | RGUI | |
44 * '-----------------------------------------------------------------------------------------------------------------------------'
45 */
46 [_BASE] = LAYOUT_ortho_7u(
47 KC_MUTE,
48 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
49 ESC_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSPC, KC_PGUP,
50 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, FN, KC_PGDN,
51 LOWER, KC_LALT, KC_SPC, RAISE, KC_RGUI
52 ),
53
54 /* FN Layer
55 * .-----------------------------------------------------------------------------------------------------------------------------.
56 * | KC_APP |
57 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
58 * | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
59 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
60 * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | | DEL | PRT SC |
61 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
62 * | | | | | | | | | | | | | | RESET |
63 * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
64 * | | MU TOG | MU MOD | | | | |
65 * '-----------------------------------------------------------------------------------------------------------------------------'
66 */
67 [_FN] = LAYOUT_ortho_7u(
68 KC_APP,
69 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, _______, KC_UP, _______, _______, _______,
70 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_PSCR,
71 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
72 MU_TOG, MU_MOD, _______, _______, _______
73 ),
74
75 /* LOWER Layer
76 * .-----------------------------------------------------------------------------------------------------------------------------.
77 * | KC_APP |
78 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
79 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | | |
80 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
81 * | | F1 | F2 | F3 | F4 | F5 | LEFT | DOWN | UP | RIGHT | | | DEL | INSERT |
82 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
83 * | | F7 | F8 | F9 | F10 | F11 | F12 | ISO # | ISO / | | | | | \ | |
84 * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
85 * | | | F6 | | | | |
86 * '-----------------------------------------------------------------------------------------------------------------------------'
87 */
88 [_LOWER] = LAYOUT_ortho_7u(
89 KC_APP,
90 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_PIPE,
91 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, KC_DEL, KC_INS,
92 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, _______, KC_BSLS,
93 _______, KC_F6, _______, _______, _______
94 ),
95
96 /* RAISE Layer
97 * .-----------------------------------------------------------------------------------------------------------------------------.
98 * | KC_APP |
99 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
100 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | - | = | | |
101 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
102 * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | { | } | | DEL | INSERT |
103 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
104 * | | F7 | F8 | F9 | F10 | F11 | F12 | ISO ~ | ISO | | | | | | \ | |
105 * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
106 * | | | | | | | |
107 * '-----------------------------------------------------------------------------------------------------------------------------'
108 */
109 [_RAISE] = LAYOUT_ortho_7u(
110 KC_APP,
111 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MINS, KC_EQL, KC_PIPE,
112 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, KC_DEL, KC_INS,
113 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), _______, _______, _______, _______, KC_BSLS,
114 _______, _______, _______, _______, _______
115 ),
116};
117
diff --git a/keyboards/keyprez/rhino/keymaps/default_7u/readme.md b/keyboards/keyprez/rhino/keymaps/default_7u/readme.md
new file mode 100644
index 000000000..1b930c1e7
--- /dev/null
+++ b/keyboards/keyprez/rhino/keymaps/default_7u/readme.md
@@ -0,0 +1 @@
# The default 7u keymap for rhino
diff --git a/keyboards/keyprez/rhino/keymaps/default_ergo/keymap.c b/keyboards/keyprez/rhino/keymaps/default_ergo/keymap.c
new file mode 100644
index 000000000..ac73e3d79
--- /dev/null
+++ b/keyboards/keyprez/rhino/keymaps/default_ergo/keymap.c
@@ -0,0 +1,124 @@
1/* Copyright 2021 Christian Sandven
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18// Defines names for use in layer keycodes and the keymap
19enum layer_names {
20 _BASE,
21 _FN,
22 _LOWER,
23 _RAISE
24};
25
26#define LOWER MO(_LOWER)
27#define FN MO(_FN)
28#define TAB_CTL MT(MOD_LCTL, KC_TAB)
29#define SPC_RAISE LT(_RAISE, KC_SPC)
30
31const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
32
33 /* Base Layer
34 * .-----------------------------------------------------------------------------------------------------------------------------.
35 * | KC_MUTE |
36 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
37 * | GESC | Q | W | E | R | T | | | Y | U | I | O | P | ' |
38 * |--------+--------+--------+--------+--------+--------+ [ + ] +--------+--------+--------+-----------------+--------|
39 * | TAB | A | S | D | F | G |--------|--------| H | J | K | L | ; | BACKSP |
40 * |--------+--------+--------+--------+--------+--------+ HOME + END +--------+--------+--------------------------+--------|
41 * | LSHIFT | Z | X | C | V | B | | | N | M | , | . | / | ENTER |
42 * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
43 * | | LGUI | FN | LALT | LOWER | SPACE | SPACE | LEFT | UP | DOWN | RIGHT | |
44 * '-----------------------------------------------------------------------------------------------------------------------------'
45 */
46 [_BASE] = LAYOUT_ergo_2x2u(
47 KC_MUTE,
48 KC_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_QUOT,
49 TAB_CTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_END, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_BSPC,
50 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
51 KC_LGUI, FN, KC_LALT, LOWER, KC_SPC, SPC_RAISE, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT
52 ),
53
54 /* FN Layer
55 * .-----------------------------------------------------------------------------------------------------------------------------.
56 * | KC_APP |
57 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
58 * | ` | F1 | F2 | F3 | F4 | F5 | | | F8 | F9 | F10 | F11 | F12 | |
59 * |--------+--------+--------+--------+--------+--------+ F6 + F7 +--------+--------+--------+-----------------+---------|
60 * | | F7 | F8 | F9 | F10 | F11 |--------|--------| | | | | | PRT SC |
61 * |--------+--------+--------+--------+--------+--------+ F12 + +--------+--------+--------------------------+--------|
62 * | | | | | | | | | | | | | | RESET |
63 * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
64 * | | MU TOG | MU MOD | | | | | MUTE | VOL UP |VOL DOWN| PAUSE | |
65 * '-----------------------------------------------------------------------------------------------------------------------------'
66 */
67 [_FN] = LAYOUT_ergo_2x2u(
68 KC_APP,
69 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
70 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, KC_PSCR,
71 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
72 MU_TOG, MU_MOD, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPLY
73 ),
74
75 /* LOWER Layer
76 * .-----------------------------------------------------------------------------------------------------------------------------.
77 * | KC_APP |
78 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
79 * | ` | 1 | 2 | 3 | 4 | 5 | | | 8 | 9 | 0 | - | = | | |
80 * |--------+--------+--------+--------+--------+--------+ 6 + 7 +--------+--------+--------+-----------------+--------|
81 * | | F1 | F2 | F3 | F4 | F5 |--------|--------| | | | | DEL | INSERT |
82 * |--------+--------+--------+--------+--------+--------+ F12 + +--------+--------+--------------------------+--------|
83 * | | F7 | F8 | F9 | F10 | F11 | | | | | | | \ | |
84 * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
85 * | | | | | | | | HOME | PG UP | PG DN | END | |
86 * '-----------------------------------------------------------------------------------------------------------------------------'
87 */
88 [_LOWER] = LAYOUT_ergo_2x2u(
89 KC_APP,
90 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_PIPE,
91 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F12, _______, _______, _______, _______, _______, KC_DEL, KC_INS,
92 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, _______, KC_BSLS, _______,
93 _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_PGDOWN, KC_END
94 ),
95
96 /* RAISE Layer
97 * .-----------------------------------------------------------------------------------------------------------------------------.
98 * | KC_APP |
99 * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
100 * | ~ | ! | @ | # | $ | % | | | * | ( | ) | - | = | | |
101 * |--------+--------+--------+--------+--------+--------+ ^ + & +--------+--------+--------+-----------------+--------|
102 * | | F1 | F2 | F3 | F4 | F5 |--------|--------| = | { | } | | DEL | INSERT |
103 * |--------+--------+--------+--------+--------+--------+ F12 + _ +--------+--------+--------------------------+--------|
104 * | | F7 | F8 | F9 | F10 | F11 | | | ISO ~ | ISO | | | | \ | |
105 * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+--------|
106 * | | | | | | | | | | | | |
107 * '-----------------------------------------------------------------------------------------------------------------------------'
108 */
109 [_RAISE] = LAYOUT_ergo_2x2u(
110 KC_APP,
111 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_MINS, KC_EQL, KC_PIPE,
112 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F12, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______, KC_DEL, KC_INS,
113 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, S(KC_NUHS), S(KC_NUBS), _______, _______, _______, KC_BSLS,
114 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
115 ),
116};
117
118const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_ergo_2x2u(
119 0,
120 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0,
121 0, 1, 3, 0, 6, 8, 9, 11, 13, 15, 0, 18, 20, 0,
122 0, 0, 2, 4, 5, 7, 12, 14, 16, 17, 19, 0,
123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
124);
diff --git a/keyboards/keyprez/rhino/keymaps/default_ergo/readme.md b/keyboards/keyprez/rhino/keymaps/default_ergo/readme.md
new file mode 100644
index 000000000..2a9de9d74
--- /dev/null
+++ b/keyboards/keyprez/rhino/keymaps/default_ergo/readme.md
@@ -0,0 +1 @@
# The default keymap for rhino
diff --git a/keyboards/keyprez/rhino/readme.md b/keyboards/keyprez/rhino/readme.md
new file mode 100644
index 000000000..d63c1b23b
--- /dev/null
+++ b/keyboards/keyprez/rhino/readme.md
@@ -0,0 +1,22 @@
1# rhino
2
3Rhino is a 50 percent keyboard taking inspiration from the Boardwalk keyboard. It supports some of the layouts the bordwalk does, but in a smaller form factor. The number row is removed and replaced with through hole components.
4
5![](https://i.imgur.com/OqCJZWah.jpg)
6
7
8* Keyboard Maintainer: [Christian Sandven](https://github.com/csandven)
9* Hardware Supported: *Pro micro compatible boards*
10* Hardware Availability: *TBA*
11
12Make example for this keyboard (after setting up your build environment):
13
14 make keyprez/rhino:default
15
16Flashing example for this keyboard:
17
18 make keyprez/rhino:default:flash
19
20You can then press the reset button on the top right to flash the keyboard.
21
22See 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/keyprez/rhino/rhino.c b/keyboards/keyprez/rhino/rhino.c
new file mode 100644
index 000000000..31302eff5
--- /dev/null
+++ b/keyboards/keyprez/rhino/rhino.c
@@ -0,0 +1,32 @@
1/* Copyright 2021 Christian Sandven
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "rhino.h"
18
19bool encoder_update_kb(uint8_t index, bool clockwise) {
20 if (!encoder_update_user(index, clockwise)) { return false; }
21 tap_code(clockwise ? KC_VOLU : KC_VOLD);
22 return true;
23}
24
25__attribute__ ((weak))
26const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_ortho_2x2u(
27 0,
28 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
29 0, 1, 3, 0, 6, 8, 10, 0, 13, 15, 0, 18, 20, 0,
30 0, 0, 2, 4, 5, 7, 9, 11, 12, 14, 16, 17, 19, 0,
31 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
32);
diff --git a/keyboards/keyprez/rhino/rhino.h b/keyboards/keyprez/rhino/rhino.h
new file mode 100644
index 000000000..30ebb94cb
--- /dev/null
+++ b/keyboards/keyprez/rhino/rhino.h
@@ -0,0 +1,80 @@
1/* Copyright 2021 Christian Sandven
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "quantum.h"
20
21
22/* This is a shortcut to help you visually see your layout.
23 *
24 * The first section contains all of the arguments representing the physical
25 * layout of the board and position of the keys.
26 *
27 * The second converts the arguments into a two-dimensional array which
28 * represents the switch matrix.
29 */
30#define LAYOUT_ortho_2x2u( \
31 k70, \
32 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
33 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, \
34 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, \
35 k60, k61, k62, k63, k64, k65, k66, k67, k68, k69 \
36) { \
37 { k00, k01, k02, k03, k04, k05, k06 }, \
38 { k20, k21, k22, k23, k24, k25, k26 }, \
39 { k40, k41, k42, k43, k44, k45, k46 }, \
40 { KC_NO, k60, k61, k62, k63, KC_NO, k64 }, \
41 { k07, k08, k09, k10, k11, k12, k13 }, \
42 { k27, k28, k29, k30, k31, k32, k33 }, \
43 { k47, k48, k49, k50, k51, k52, k53 }, \
44 { k65, KC_NO, k66, k67, k68, k69, k70 } \
45}
46
47#define LAYOUT_ergo_2x2u( \
48 k70, \
49 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
50 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, \
51 k40, k41, k42, k43, k44, k45, k48, k49, k50, k51, k52, k53, \
52 k60, k61, k62, k63, k64, k65, k66, k67, k68, k69 \
53) { \
54 { k00, k01, k02, k03, k04, k05, k06 }, \
55 { k20, k21, k22, k23, k24, k25, k26 }, \
56 { k40, k41, k42, k43, k44, k45, KC_NO }, \
57 { KC_NO, k60, k61, k62, k63, KC_NO, k64 }, \
58 { k07, k08, k09, k10, k11, k12, k13 }, \
59 { k27, k28, k29, k30, k31, k32, k33 }, \
60 { KC_NO, k48, k49, k50, k51, k52, k53 }, \
61 { k65, KC_NO, k66, k67, k68, k69, k70 } \
62}
63
64#define LAYOUT_ortho_7u( \
65 k65, \
66 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11, k12, k13, \
67 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k30, k31, k32, k33, \
68 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, \
69 k60, k61, k62, k63, k64 \
70) { \
71 { k00, k01, k02, k03, k04, k05, k06 }, \
72 { k20, k21, k22, k23, k24, k25, k26 }, \
73 { k40, k41, k42, k43, k44, k45, k46 }, \
74 { KC_NO, k60, k61, KC_NO, KC_NO, KC_NO, k62 }, \
75 { k07, k08, k09, k10, k11, k12, k13 }, \
76 { k27, k28, k29, k30, k31, k32, k33 }, \
77 { k47, k48, k49, k50, k51, k52, k53 }, \
78 { KC_NO, KC_NO, KC_NO, KC_NO, k63, k64, k65 } \
79}
80
diff --git a/keyboards/keyprez/rhino/rules.mk b/keyboards/keyprez/rhino/rules.mk
new file mode 100644
index 000000000..745d1e372
--- /dev/null
+++ b/keyboards/keyprez/rhino/rules.mk
@@ -0,0 +1,23 @@
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 = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
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 = no # USB Nkey Rollover
19BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
20RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
21BLUETOOTH_ENABLE = no # Enable Bluetooth
22AUDIO_ENABLE = yes # Audio output
23ENCODER_ENABLE = yes
diff --git a/keyboards/moonlander/keymaps/jjerrell/config.h b/keyboards/moonlander/keymaps/jjerrell/config.h
new file mode 100644
index 000000000..1fd17fbbe
--- /dev/null
+++ b/keyboards/moonlander/keymaps/jjerrell/config.h
@@ -0,0 +1,27 @@
1/* Copyright 2020 ZSA Technology Labs, Inc <@zsa>
2 * Copyright 2020 Jack Humbert <jack.humb@gmail.com>
3 * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
4 * Copyright 2021 Jacob Jerrell <@jjerrell>
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#pragma once
21
22#define ORYX_CONFIGURATOR
23
24#undef PRODUCT
25#define PRODUCT Moonlander Mark I - Modified by <@jjerrell>
26
27#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/keyboards/moonlander/keymaps/jjerrell/keymap.c b/keyboards/moonlander/keymaps/jjerrell/keymap.c
new file mode 100644
index 000000000..012b77367
--- /dev/null
+++ b/keyboards/moonlander/keymaps/jjerrell/keymap.c
@@ -0,0 +1,117 @@
1/**
2 * Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
3 *
4 * This file is part of qmk_firmware.
5 *
6 * qmk_firmware is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * qmk_firmware is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#include "jjerrell.h"
21
22enum moonlander_layers {
23 _GAME_LOWER = LAYER_SAFE_RANGE,
24 // _GAME_RAISE,
25};
26
27// clang-format off
28const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
29 [_WORKMAN] = LAYOUT_moonlander_mods(
30 __________________WORKMN_L1__________________, __________________WORKMN_R1__________________,
31 __________________WORKMN_L2__________________, __________________WORKMN_R2__________________,
32 __________________WORKMN_L3__________________, __________________WORKMN_R3__________________,
33 XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX
34 ),
35
36 [_LOWER] = LAYOUT_moonlander_mods(
37 __________________LOWER_L1___________________, __________________LOWER_R1___________________,
38 __________________LOWER_L2___________________, __________________LOWER_R2___________________,
39 __________________LOWER_L3___________________, __________________LOWER_R3___________________,
40 XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_0, KC_DOT, KC_COMM, KC_PLUS
41 ),
42
43 [_RAISE] = LAYOUT_moonlander_common(
44 __________________RAISE_L1___________________, __________________RAISE_R1___________________,
45 __________________RAISE_L2___________________, __________________RAISE_R2___________________,
46 __________________RAISE_L3___________________, __________________RAISE_R3___________________,
47 XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX
48 ),
49
50 [_ADJUST] = LAYOUT_moonlander_common(
51 __________________ADJUST_L1__________________, __________________ADJUST_R1__________________,
52 __________________ADJUST_L2__________________, __________________ADJUST_R2__________________,
53 __________________ADJUST_L3__________________, __________________ADJUST_R3__________________,
54 XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX
55 ),
56
57 [_SPECIAL] = LAYOUT_moonlander_common(
58 XXXXXXX, XXXXXXX, KC_WH_D, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
59 XXXXXXX, KC_WH_L, KC_WH_U, KC_WH_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
60 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
61 XXXXXXX, XXXXXXX, XXXXXXX, KC_LALT, KC_RALT, XXXXXXX, XXXXXXX, XXXXXXX
62 ),
63
64 [_GAME] = LAYOUT_moonlander_gamepad(
65 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
66 KC_TAB, __________________QWERTY_L1__________________, KC_SLSH,
67 KC_LALT, __________________QWERTY_L2__________________, KC_BSLS,
68 KC_LSFT, __________________QWERTY_L3__________________,
69 KC_LGUI, MACRO_1, MACRO_2, MACRO_3, MACRO_4, KC_LOCK,
70 KC_SPC, KC_BTN2, MO(_LOWER)
71 ),
72 [_GAME_LOWER] = LAYOUT_moonlander_gamepad(
73 KC_GRV, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
74 KC_TAB, __________________QWERTY_L1__________________, KC_SLSH,
75 KC_LALT, __________________QWERTY_L2__________________, KC_BSLS,
76 KC_LSFT, __________________QWERTY_L3__________________,
77 KC_LGUI, MACRO_5, MACRO_6, MACRO_7, MACRO_8, KC_LOCK,
78 KC_SPC, KC_BTN2, MO(_LOWER)
79 )
80};
81// clang-format on
82
83layer_state_t layer_state_set_keymap(layer_state_t state) {
84 ML_LED_1(0);
85 ML_LED_2(0);
86 ML_LED_3(0);
87 ML_LED_4(0);
88 ML_LED_5(0);
89 ML_LED_6(0);
90 state = update_tri_layer_state(state, _GAME, _LOWER, _GAME_LOWER);
91 switch (get_highest_layer(state)) {
92 case 1:
93 ML_LED_1(1);
94 ML_LED_4(1);
95 break;
96 case 2:
97 ML_LED_2(1);
98 ML_LED_5(1);
99 break;
100 case 3:
101 ML_LED_3(1);
102 break;
103 case 4:
104 ML_LED_4(1);
105 break;
106 case 5:
107 ML_LED_5(1);
108 break;
109 case 6:
110 ML_LED_6(1);
111 break;
112 default:
113 break;
114 }
115
116 return state;
117}
diff --git a/keyboards/moonlander/keymaps/jjerrell/readme.md b/keyboards/moonlander/keymaps/jjerrell/readme.md
new file mode 100644
index 000000000..51476f8ab
--- /dev/null
+++ b/keyboards/moonlander/keymaps/jjerrell/readme.md
@@ -0,0 +1,3 @@
1# Jacob Jerrell's Moonlander Keymap
2
3Concrete proof and acceptance of a problem. There is some not so custom Moonlander LED control in here but everything else is implemented in [my userspace](../../../../users/jjerrell/).
diff --git a/keyboards/moonlander/keymaps/jjerrell/rules.mk b/keyboards/moonlander/keymaps/jjerrell/rules.mk
new file mode 100644
index 000000000..ef72559a0
--- /dev/null
+++ b/keyboards/moonlander/keymaps/jjerrell/rules.mk
@@ -0,0 +1 @@
AUDIO_ENABLE = yes
diff --git a/keyboards/peej/tripel/config.h b/keyboards/peej/tripel/config.h
new file mode 100644
index 000000000..50b0cc882
--- /dev/null
+++ b/keyboards/peej/tripel/config.h
@@ -0,0 +1,38 @@
1/*
2This program is free software: you can redistribute it and/or modify
3it under the terms of the GNU General Public License as published by
4the Free Software Foundation, either version 2 of the License, or
5(at your option) any later version.
6
7This program is distributed in the hope that it will be useful,
8but WITHOUT ANY WARRANTY; without even the implied warranty of
9MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10GNU General Public License for more details.
11
12You should have received a copy of the GNU General Public License
13along with this program. If not, see <http://www.gnu.org/licenses/>.
14*/
15
16#pragma once
17
18#include "config_common.h"
19
20/* USB Device descriptor parameter */
21#define VENDOR_ID 0x706A
22#define PRODUCT_ID 0x0001
23#define DEVICE_VER 0x0001
24#define MANUFACTURER Peej
25#define PRODUCT Tripel
26
27/* key matrix size */
28#define MATRIX_ROWS 9
29#define MATRIX_COLS 8
30#define MATRIX_ROW_PINS { C6, D4, D0, B4, E6, D7, D1, D2, D3 }
31#define MATRIX_COL_PINS { B5, B6, B2, B3, B1, F7, F6, F5 }
32#define UNUSED_PINS { F4 }
33
34/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
35#define DIODE_DIRECTION COL2ROW
36
37/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
38#define DEBOUNCE 5
diff --git a/keyboards/peej/tripel/info.json b/keyboards/peej/tripel/info.json
new file mode 100644
index 000000000..2ad9480ff
--- /dev/null
+++ b/keyboards/peej/tripel/info.json
@@ -0,0 +1,82 @@
1{
2 "keyboard_name": "Tripel",
3 "url": "https://github.com/peej/tripel-keyboard",
4 "maintainer": "Peej",
5 "width": 15,
6 "height": 5,
7 "layouts": {
8 "LAYOUT_ortho_7u": {
9 "layout": [
10 { "x":0, "y":0 },
11 { "x":1, "y":0 },
12 { "x":2, "y":0 },
13 { "x":3, "y":0 },
14 { "x":4, "y":0 },
15 { "x":5, "y":0 },
16 { "x":6, "y":0 },
17 { "x":7, "y":0 },
18 { "x":8, "y":0 },
19 { "x":9, "y":0 },
20 { "x":10, "y":0 },
21 { "x":11, "y":0 },
22 { "x":12, "y":0 },
23 { "x":13, "y":0 },
24 { "x":14, "y":0 },
25 { "x":0, "y":1 },
26 { "x":1, "y":1 },
27 { "x":2, "y":1 },
28 { "x":3, "y":1 },
29 { "x":4, "y":1 },
30 { "x":5, "y":1 },
31 { "x":6, "y":1 },
32 { "x":7, "y":1 },
33 { "x":8, "y":1 },
34 { "x":9, "y":1 },
35 { "x":10, "y":1 },
36 { "x":11, "y":1 },
37 { "x":12, "y":1 },
38 { "x":13, "y":1 },
39 { "x":14, "y":1 },
40 { "x":0, "y":2 },
41 { "x":1, "y":2 },
42 { "x":2, "y":2 },
43 { "x":3, "y":2 },
44 { "x":4, "y":2 },
45 { "x":5, "y":2 },
46 { "x":6, "y":2 },
47 { "x":7, "y":2 },
48 { "x":8, "y":2 },
49 { "x":9, "y":2 },
50 { "x":10, "y":2 },
51 { "x":11, "y":2 },
52 { "x":12, "y":2 },
53 { "x":13, "y":2 },
54 { "x":14, "y":2 },
55 { "x":0, "y":3 },
56 { "x":1, "y":3 },
57 { "x":2, "y":3 },
58 { "x":3, "y":3 },
59 { "x":4, "y":3 },
60 { "x":5, "y":3 },
61 { "x":6, "y":3 },
62 { "x":7, "y":3 },
63 { "x":8, "y":3 },
64 { "x":9, "y":3 },
65 { "x":10, "y":3 },
66 { "x":11, "y":3 },
67 { "x":12, "y":3 },
68 { "x":13, "y":3 },
69 { "x":14, "y":3 },
70 { "x":0, "y":4 },
71 { "x":1, "y":4 },
72 { "x":2, "y":4 },
73 { "x":3, "y":4 },
74 { "x":7, "y":4, "w":7 },
75 { "x":11, "y":4 },
76 { "x":12, "y":4 },
77 { "x":13, "y":4 },
78 { "x":14, "y":4 }
79 ]
80 }
81 }
82}
diff --git a/keyboards/peej/tripel/keymaps/default/keymap.c b/keyboards/peej/tripel/keymaps/default/keymap.c
new file mode 100644
index 000000000..2b08adf77
--- /dev/null
+++ b/keyboards/peej/tripel/keymaps/default/keymap.c
@@ -0,0 +1,54 @@
1/*
2 * This program is free software: you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation, either version 2 of the License, or
5 * (at your option) any later version.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 */
15
16#include QMK_KEYBOARD_H
17
18// Layer shorthand
19enum layer {
20 _BASE,
21 _FN,
22};
23
24const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
25
26/*
27 * ,-----------------------------------------------------------------------------------------------------------------------.
28 * | Gesc | 1 | 2 | 3 | 4 | 5 | - | Num | = | 6 | 7 | 8 | 9 | 0 | Bksp |
29 * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
30 * | Tab | Q | W | E | R | T | 7 | 8 | 9 | Y | U | I | O | P | Del |
31 * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
32 * | Ctrl | A | S | D | F | G | 4 | 5 | 6 | H | J | K | L | ; | ' |
33 * |-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-------|
34 * | Shift | Z | X | C | V | B | 1 | 2 | 3 | N | M | , | . | / | Enter |
35 * |-------+-------+---------------------------------------------------------------------------------------+-------+-------|
36 * | Ctrl | Fn | Alt | Cmd | Space | Left | Down | Up | Right |
37 * `-----------------------------------------------------------------------------------------------------------------------'
38 */
39 [_BASE] = LAYOUT_ortho_7u(
40 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_NLCK, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
41 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_DEL,
42 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
43 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_ENT,
44 KC_LCTL, MO(_FN), KC_LALT, KC_LGUI, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
45 ),
46
47 [_FN] = LAYOUT_ortho_7u(
48 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F13, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
49 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______,
50 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
51 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
52 _______, _______, _______, _______, _______, _______, _______, _______, _______
53 )
54};
diff --git a/keyboards/peej/tripel/keymaps/via/keymap.c b/keyboards/peej/tripel/keymaps/via/keymap.c
new file mode 100644
index 000000000..7c2664ee0
--- /dev/null
+++ b/keyboards/peej/tripel/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
1/* Copyright 2021 Paul James
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21[0] = LAYOUT_ortho_7u(
22 KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_NLCK, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
23 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_DEL,
24 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_P4, KC_P5, KC_P6, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
25 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_ENT,
26 KC_LCTL, MO(1), KC_LALT, KC_LGUI, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
27),
28[1] = LAYOUT_ortho_7u(
29 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F13, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
30 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______,
31 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
32 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
33 _______, _______, _______, _______, _______, _______, _______, _______, _______
34),
35[2] = LAYOUT_ortho_7u(
36 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
39 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
40 _______, _______, _______, _______, _______, _______, _______, _______, _______
41),
42[3] = LAYOUT_ortho_7u(
43 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
44 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
45 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
46 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
47 _______, _______, _______, _______, _______, _______, _______, _______, _______
48)
49
50};
diff --git a/keyboards/peej/tripel/keymaps/via/rules.mk b/keyboards/peej/tripel/keymaps/via/rules.mk
new file mode 100644
index 000000000..1e5b99807
--- /dev/null
+++ b/keyboards/peej/tripel/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes
diff --git a/keyboards/peej/tripel/left/left.h b/keyboards/peej/tripel/left/left.h
new file mode 100644
index 000000000..852a503e6
--- /dev/null
+++ b/keyboards/peej/tripel/left/left.h
@@ -0,0 +1,38 @@
1/* Copyright 2021 Paul James
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "quantum.h"
20
21#define LAYOUT_ortho_7u( \
22 l11, l12, l13, l14, l15, m11, m12, m13, m14, m15, r11, r12, r13, r14, r15, \
23 l21, l22, l23, l24, l25, m21, m22, m23, m24, m25, r21, r22, r23, r24, r25, \
24 l31, l32, l33, l34, l35, m31, m32, m33, m34, m35, r31, r32, r33, r34, r35, \
25 l41, l42, l43, l44, l45, m41, m42, m43, m44, m45, r41, r42, r43, r44, r45, \
26 l51, l52, l53, l54, m53, r52, r53, r54, r51 \
27) \
28{ \
29 { r11, r12, r13, r14, r15, r25, r35, r45 }, \
30 { r21, r22, r23, r24, r34, r44, r53, r54 }, \
31 { r31, r32, r33, r43, r42, r41, r51, r52 }, \
32 { l11, l12, l13, l14, l15, l25, l35, l45 }, \
33 { l21, l22, l23, l24, l34, l44, l53, l54 }, \
34 { l31, l32, l33, l43, l42, l41, l51, l52 }, \
35 { m11, m12, m13, m14, m15, m25, m35, m45 }, \
36 { m21, m22, m23, m24, m34, m44, m53, KC_NO }, \
37 { m31, m32, m33, m43, m42, m41, KC_NO, KC_NO } \
38}
diff --git a/keyboards/peej/tripel/left/readme.md b/keyboards/peej/tripel/left/readme.md
new file mode 100644
index 000000000..256622475
--- /dev/null
+++ b/keyboards/peej/tripel/left/readme.md
@@ -0,0 +1,21 @@
1# Tripel
2## Sub-100x100mm modula 60% ortholinear 7u PCB
3
4![tripel](https://github.com/peej/tripel-keyboard/raw/master/images/3pcbs.jpg)
5
615x5 ortholinear PCB for 60% tray mount cases using only prototype sized PCBs.
7
8This revision is for when the Pro-Micro is mounted on the left most PCB.
9
10* Keyboard Maintainer: [Paul James](https://github.com/peej)
11* Hardware Supported: Pro-Micro [PCB](https://github.com/peej/tripel-keyboard)
12
13Make example for this keyboard (after setting up your build environment):
14
15 make peej/tripel/left:default
16
17Flashing example for this keyboard:
18
19 make peej/tripel/left:default:flash
20
21See 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/peej/tripel/left/rules.mk b/keyboards/peej/tripel/left/rules.mk
new file mode 100644
index 000000000..6e7633bfe
--- /dev/null
+++ b/keyboards/peej/tripel/left/rules.mk
@@ -0,0 +1 @@
# This file intentionally left blank
diff --git a/keyboards/peej/tripel/middle/middle.h b/keyboards/peej/tripel/middle/middle.h
new file mode 100644
index 000000000..450eb095c
--- /dev/null
+++ b/keyboards/peej/tripel/middle/middle.h
@@ -0,0 +1,38 @@
1/* Copyright 2021 Paul James
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "quantum.h"
20
21#define LAYOUT_ortho_7u( \
22 l11, l12, l13, l14, l15, m11, m12, m13, m14, m15, r11, r12, r13, r14, r15, \
23 l21, l22, l23, l24, l25, m21, m22, m23, m24, m25, r21, r22, r23, r24, r25, \
24 l31, l32, l33, l34, l35, m31, m32, m33, m34, m35, r31, r32, r33, r34, r35, \
25 l41, l42, l43, l44, l45, m41, m42, m43, m44, m45, r41, r42, r43, r44, r45, \
26 l51, l52, l53, l54, m53, r52, r53, r54, r51 \
27) \
28{ \
29 { l11, l12, l13, l14, l15, l25, l35, l45 }, \
30 { l21, l22, l23, l24, l34, l44, l53, l54 }, \
31 { l31, l32, l33, l43, l42, l41, l51, l52 }, \
32 { m11, m12, m13, m14, m15, m25, m35, m45 }, \
33 { m21, m22, m23, m24, m34, m44, m53, KC_NO }, \
34 { m31, m32, m33, m43, m42, m41, KC_NO, KC_NO }, \
35 { r11, r12, r13, r14, r15, r25, r35, r45 }, \
36 { r21, r22, r23, r24, r34, r44, r53, r54 }, \
37 { r31, r32, r33, r43, r42, r41, r51, r52 } \
38}
diff --git a/keyboards/peej/tripel/middle/readme.md b/keyboards/peej/tripel/middle/readme.md
new file mode 100644
index 000000000..25b11a671
--- /dev/null
+++ b/keyboards/peej/tripel/middle/readme.md
@@ -0,0 +1,21 @@
1# Tripel
2## Sub-100x100mm modula 60% ortholinear 7u PCB
3
4![tripel](https://github.com/peej/tripel-keyboard/raw/master/images/3pcbs.jpg)
5
615x5 ortholinear PCB for 60% tray mount cases using only prototype sized PCBs.
7
8This revision is for when the Pro-Micro is mounted on the middle PCB.
9
10* Keyboard Maintainer: [Paul James](https://github.com/peej)
11* Hardware Supported: Pro-Micro [PCB](https://github.com/peej/tripel-keyboard)
12
13Make example for this keyboard (after setting up your build environment):
14
15 make peej/tripel/middle:default
16
17Flashing example for this keyboard:
18
19 make peej/tripel/middle:default:flash
20
21See 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/peej/tripel/middle/rules.mk b/keyboards/peej/tripel/middle/rules.mk
new file mode 100644
index 000000000..6e7633bfe
--- /dev/null
+++ b/keyboards/peej/tripel/middle/rules.mk
@@ -0,0 +1 @@
# This file intentionally left blank
diff --git a/keyboards/peej/tripel/right/readme.md b/keyboards/peej/tripel/right/readme.md
new file mode 100644
index 000000000..f965a74de
--- /dev/null
+++ b/keyboards/peej/tripel/right/readme.md
@@ -0,0 +1,21 @@
1# Tripel
2## Sub-100x100mm modula 60% ortholinear 7u PCB
3
4![tripel](https://github.com/peej/tripel-keyboard/raw/master/images/3pcbs.jpg)
5
615x5 ortholinear PCB for 60% tray mount cases using only prototype sized PCBs.
7
8This revision is for when the Pro-Micro is mounted on the right most PCB.
9
10* Keyboard Maintainer: [Paul James](https://github.com/peej)
11* Hardware Supported: Pro-Micro [PCB](https://github.com/peej/tripel-keyboard)
12
13Make example for this keyboard (after setting up your build environment):
14
15 make peej/tripel/right:default
16
17Flashing example for this keyboard:
18
19 make peej/tripel/right:default:flash
20
21See 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/peej/tripel/right/right.h b/keyboards/peej/tripel/right/right.h
new file mode 100644
index 000000000..5fa38270c
--- /dev/null
+++ b/keyboards/peej/tripel/right/right.h
@@ -0,0 +1,38 @@
1/* Copyright 2021 Paul James
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "quantum.h"
20
21#define LAYOUT_ortho_7u( \
22 l11, l12, l13, l14, l15, m11, m12, m13, m14, m15, r11, r12, r13, r14, r15, \
23 l21, l22, l23, l24, l25, m21, m22, m23, m24, m25, r21, r22, r23, r24, r25, \
24 l31, l32, l33, l34, l35, m31, m32, m33, m34, m35, r31, r32, r33, r34, r35, \
25 l41, l42, l43, l44, l45, m41, m42, m43, m44, m45, r41, r42, r43, r44, r45, \
26 l51, l52, l53, l54, m53, r52, r53, r54, r51 \
27) \
28{ \
29 { m11, m12, m13, m14, m15, m25, m35, m45 }, \
30 { m21, m22, m23, m24, m34, m44, m53, KC_NO }, \
31 { m31, m32, m33, m43, m42, m41, KC_NO, KC_NO }, \
32 { r11, r12, r13, r14, r15, r25, r35, r45 }, \
33 { r21, r22, r23, r24, r34, r44, r53, r54 }, \
34 { r31, r32, r33, r43, r42, r41, r51, r52 }, \
35 { l11, l12, l13, l14, l15, l25, l35, l45 }, \
36 { l21, l22, l23, l24, l34, l44, l53, l54 }, \
37 { l31, l32, l33, l43, l42, l41, l51, l52 } \
38}
diff --git a/keyboards/peej/tripel/right/rules.mk b/keyboards/peej/tripel/right/rules.mk
new file mode 100644
index 000000000..6e7633bfe
--- /dev/null
+++ b/keyboards/peej/tripel/right/rules.mk
@@ -0,0 +1 @@
# This file intentionally left blank
diff --git a/keyboards/peej/tripel/rules.mk b/keyboards/peej/tripel/rules.mk
new file mode 100644
index 000000000..2de6deef4
--- /dev/null
+++ b/keyboards/peej/tripel/rules.mk
@@ -0,0 +1,24 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = caterina
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = no # 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 = yes # 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
23
24DEFAULT_FOLDER = peej/tripel/left
diff --git a/keyboards/planck/keymaps/kuatsure/config.h b/keyboards/planck/keymaps/kuatsure/config.h
new file mode 100644
index 000000000..8d832285b
--- /dev/null
+++ b/keyboards/planck/keymaps/kuatsure/config.h
@@ -0,0 +1,33 @@
1/* Copyright 2020 kuatsure
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#ifdef AUDIO_ENABLE
20 #define STARTUP_SONG SONG(PLANCK_SOUND)
21 // #define STARTUP_SONG SONG(NO_SOUND)
22
23 #define GAME_SOUND DVORAK_SOUND
24
25 #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
26 SONG(GAME_SOUND) \
27 }
28#endif
29
30#define MIDI_BASIC
31
32// Most tactile encoders have detents every 4 stages
33#define ENCODER_RESOLUTION 4
diff --git a/keyboards/planck/keymaps/kuatsure/keymap.c b/keyboards/planck/keymaps/kuatsure/keymap.c
new file mode 100644
index 000000000..6ce1049b8
--- /dev/null
+++ b/keyboards/planck/keymaps/kuatsure/keymap.c
@@ -0,0 +1,318 @@
1/* Copyright 2015-2017 Jack Humbert
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include QMK_KEYBOARD_H
18#include "muse.h"
19#include "kuatsure.h"
20
21#define LAYOUT_planck_grid_wrapper(...) LAYOUT_planck_grid(__VA_ARGS__)
22
23enum planck_layers {
24 _QWERTY,
25 _GAME,
26 _GAME_LOWER,
27 _GAME_RAISE,
28 _MOUSE,
29 _LOWER,
30 _RAISE,
31 _ADJUST
32};
33
34enum planck_keycodes {
35 QWERTY = USER_SAFE_RANGE,
36 GAME,
37};
38
39#define LOWER MO(_LOWER)
40#define RAISE MO(_RAISE)
41#define MOUSE TG(_MOUSE)
42#define G_LOWER MO(_GAME_LOWER)
43#define G_RAISE MO(_GAME_RAISE)
44
45const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
46
47/* Qwerty
48 * ,-----------------------------------------------------------------------------------.
49 * | Tab/M| Q | W | E | R | T | Y | U | I | O | P | Bksp |
50 * |------+------+------+------+------+-------------+------+------+------+------+------|
51 * | Esc/C| A | S | D | F | G | H | J | K | L | ; | ' |
52 * |------+------+------+------+------+------|------+------+------+------+------+------|
53 * | Shift| Z | X | C | V | B | N | M | , | . | / | Ent |
54 * |------+------+------+------+------+------+------+------+------+------+------+------|
55 * | Mute | Ldr | Alt | GUI |Lower | RSE | SPC | Left | Down | Up |Right |
56 * `-----------------------------------------------------------------------------------'
57 */
58[_QWERTY] = LAYOUT_planck_grid_wrapper(
59 KT_MTAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC,
60 KT_CESC, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT,
61 KT_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_ENT,
62 KC_MPLY, KC_LEAD, KC_LALT, KC_LGUI, LOWER, RAISE, KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
63),
64
65/* Lower
66 * ,-----------------------------------------------------------------------------------.
67 * | | ! | & | Up | | ` | | { | } | _ | | | |
68 * |------+------+------+------+------+-------------+------+------+------+------+------|
69 * | | Del | Left | Down | Right| ~ | = | ( | ) | + | : | " |
70 * |------+------+------+------+------+------|------+------+------+------+------+------|
71 * | | VolD | Prev | Play | Next | VolU | - | [ | ] | | ? |Mouse |
72 * |------+------+------+------+------+------+------+------+------+------+------+------|
73 * | | | | | | | | | Home | PgDn | PgUp | End |
74 * `-----------------------------------------------------------------------------------'
75 */
76[_LOWER] = LAYOUT_planck_grid_wrapper(
77 _______, KC_EXLM, KC_AMPR, KC_UP, _______, KC_GRV, _______, ____CRBRACES____, KC_UNDS, _______, KC_PIPE,
78 _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TILD, KC_EQL, _____PARENS_____, KC_PLUS, KC_COLN, KC_DQT ,
79 _______, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU, KC_MINS, ___SQBRACKETS___, _______, KC_QUES, MOUSE ,
80 _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
81),
82
83/* Raise
84 * ,-----------------------------------------------------------------------------------.
85 * | | F9 | F10 | F11 | F12 | | * | 7 | 8 | 9 | 0 | \ |
86 * |------+------+------+------+------+-------------+------+------+------+------+------|
87 * | | F5 | F6 | F7 | F8 | | = | 4 | 5 | 6 | + | |
88 * |------+------+------+------+------+------|------+------+------+------+------+------|
89 * | | F1 | F2 | F3 | F4 | | - | 1 | 2 | 3 | / | |
90 * |------+------+------+------+------+------+------+------+------+------+------+------|
91 * | | | | | | | | | 0 | 0 | | |
92 * `-----------------------------------------------------------------------------------'
93 */
94[_RAISE] = LAYOUT_planck_grid_wrapper(
95 _______, ____________FUNCTION_3____________, _______, KC_ASTR, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
96 _______, ____________FUNCTION_2____________, _______, KC_EQL, KC_4, KC_5, KC_6, KC_PLUS, _______,
97 _______, ____________FUNCTION_1____________, _______, KC_MINS, KC_1, KC_2, KC_3, KC_SLASH, _______,
98 _______, _______, _______, _______, _______, _______, _______, KC_0, KC_0, _______, _______, _______
99),
100
101/* Mouse
102 * ,-----------------------------------------------------------------------------------.
103 * | | | Btn1 | mUP | Btn2 | | | | | | | |
104 * |------+------+------+------+------+------+------+------+------+------+------+------|
105 * | | | mLEFT| mDWN | mRGHT| | | | | | | |
106 * |------+------+------+------+------+------+------+------+------+------+------+------|
107 * | | | Btn3 | Btn4 | Btn5 | | | | | | |Mouse |
108 * |------+------+------+------+------+------+------+------+------+------+------+------|
109 * | | | | | | | | | | | | |
110 * `-----------------------------------------------------------------------------------'
111 */
112[_MOUSE] = LAYOUT_planck_grid_wrapper(
113 _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______,
114 _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______,
115 _______, _______, KC_BTN3, KC_BTN4, KC_BTN5, _______, _______, _______, _______, _______, _______, MOUSE ,
116 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
117),
118
119/* Adjust (Lower + Raise)
120 * ,-----------------------------------------------------------------------------------.
121 * | | MAKE | FLSH | | | | | | | | | Del |
122 * |------+------+------+------+------+-------------+------+------+------+------+------|
123 * | | RESET| DEBUG| | |Aud on|AudOff| Game |Mouse | | | |
124 * |------+------+------+------+------+------|------+------+------+------+------+------|
125 * | | VRSN | | |MusMod|Mus on|MusOff| | | | | |
126 * |------+------+------+------+------+------+------+------+------+------+------+------|
127 * | | | | | | | | | | | | |
128 * `-----------------------------------------------------------------------------------'
129 */
130[_ADJUST] = LAYOUT_planck_grid_wrapper(
131 _______, KB_MAKE, KB_FLSH, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
132 _______, RESET, DEBUG, _______, _______, AU_ON, AU_OFF, GAME, MOUSE, _______, _______, _______,
133 _______, KB_VRSN, _______, _______, MU_MOD, MU_ON, MU_OFF, _______, _______, _______, _______, _______,
134 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
135),
136
137/* Game
138 *
139 * Mostly transparent, but wanted to disable gui key.
140 * Also give a key to get back to qwerty layout.
141 *
142 * Disabling the `Controlled ESC` key is also plus.
143 * Think BDO / Monster Hunter / D2
144 *
145 * ,-----------------------------------------------------------------------------------.
146 * | Tab | | | | | | | | | | | |
147 * |------+------+------+------+------+-------------+------+------+------+------+------|
148 * | Ctrl | | | | | | | | | | | |
149 * |------+------+------+------+------+------|------+------+------+------+------+------|
150 * | Shft | | | | | | | | | | | |
151 * |------+------+------+------+------+------+------+------+------+------+------+------|
152 * | |Qwerty| F14 | Spc | gLWR | gRSE | ESC | | | | |
153 * `-----------------------------------------------------------------------------------'
154 */
155[_GAME] = LAYOUT_planck_grid_wrapper(
156 KC_TAB, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
157 KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
158 KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
159 _______, QWERTY, KC_F14, KC_SPC, G_LOWER, G_RAISE, KC_ESC, KC_ESC, _______, _______, _______, _______
160),
161
162/* Game Lower
163 * ,-----------------------------------------------------------------------------------.
164 * | | 1 | 2 | 3 | 4 | ` | | F9 | F10 | F11 | F12 | |
165 * |------+------+------+------+------+-------------+------+------+------+------+------|
166 * | | 5 | 6 | 7 | 8 | | | F5 | F6 | F7 | F8 | |
167 * |------+------+------+------+------+------|------+------+------+------+------+------|
168 * | | 9 | 0 | - | = | | | F1 | F2 | F3 | F4 | |
169 * |------+------+------+------+------+------+------+------+------+------+------+------|
170 * | | | | | | | | | | | | |
171 * `-----------------------------------------------------------------------------------'
172 */
173[_GAME_LOWER] = LAYOUT_planck_grid_wrapper(
174 _______, KC_1, KC_2, KC_3, KC_4, KC_GRV, _______, ____________FUNCTION_3____________, _______,
175 _______, KC_5, KC_6, KC_7, KC_8, _______, _______, ____________FUNCTION_2____________, _______,
176 _______, KC_9, KC_0, KC_MINS, KC_EQL, _______, _______, ____________FUNCTION_1____________, _______,
177 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
178),
179
180/* Game Raise
181 * ,-----------------------------------------------------------------------------------.
182 * | | p7 | p8 | p9 | p0 | ` | | F9 | F10 | F11 | F12 | |
183 * |------+------+------+------+------+-------------+------+------+------+------+------|
184 * | | p4 | p5 | p6 | p+ | | | F5 | F6 | F7 | F8 | |
185 * |------+------+------+------+------+------|------+------+------+------+------+------|
186 * | | p1 | p2 | p3 | pE | | | F1 | F2 | F3 | F4 | |
187 * |------+------+------+------+------+------+------+------+------+------+------+------|
188 * | | | | | | | | | | | | |
189 * `-----------------------------------------------------------------------------------'
190 */
191[_GAME_RAISE] = LAYOUT_planck_grid_wrapper(
192 _______, KC_P7, KC_P8, KC_P9, KC_P0, KC_GRV, _______, ____________FUNCTION_3____________, _______,
193 _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, ____________FUNCTION_2____________, _______,
194 _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______, ____________FUNCTION_1____________, _______,
195 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
196),
197
198};
199
200#ifdef AUDIO_ENABLE
201 float plover_song[][2] = SONG(PLOVER_SOUND);
202 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
203#endif
204
205layer_state_t layer_state_set_user(layer_state_t state) {
206 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
207}
208
209bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
210 switch (keycode) {
211 case QWERTY:
212 if (record->event.pressed) {
213 print("mode just switched to qwerty and this is a huge string\n");
214 set_single_persistent_default_layer(_QWERTY);
215 }
216 return false;
217 break;
218
219 case GAME:
220 if (record->event.pressed) {
221 set_single_persistent_default_layer(_GAME);
222 }
223 return false;
224 break;
225 }
226 return true;
227}
228
229bool muse_mode = false;
230uint8_t last_muse_note = 0;
231uint16_t muse_counter = 0;
232uint8_t muse_offset = 70;
233uint16_t muse_tempo = 50;
234
235void encoder_update(bool clockwise) {
236 if (muse_mode) {
237 if (IS_LAYER_ON(_RAISE)) {
238 if (clockwise) {
239 muse_offset++;
240 } else {
241 muse_offset--;
242 }
243 } else {
244 if (clockwise) {
245 muse_tempo+=1;
246 } else {
247 muse_tempo-=1;
248 }
249 }
250 } else {
251 if (clockwise) {
252 if (IS_LAYER_ON(_MOUSE)) {
253 tap_code(KC_MS_WH_UP);
254 } else {
255 tap_code(KC_VOLU);
256 }
257 } else {
258 if (IS_LAYER_ON(_MOUSE)) {
259 tap_code(KC_MS_WH_DOWN);
260 } else {
261 tap_code(KC_VOLD);
262 }
263 }
264 }
265}
266
267void dip_update(uint8_t index, bool active) {
268 switch (index) {
269 case 0:
270 if (active) {
271 #ifdef AUDIO_ENABLE
272 PLAY_SONG(plover_song);
273 #endif
274 layer_on(_ADJUST);
275 } else {
276 #ifdef AUDIO_ENABLE
277 PLAY_SONG(plover_gb_song);
278 #endif
279 layer_off(_ADJUST);
280 }
281 break;
282 case 1:
283 if (active) {
284 muse_mode = true;
285 } else {
286 muse_mode = false;
287 #ifdef AUDIO_ENABLE
288 stop_all_notes();
289 #endif
290 }
291 }
292}
293
294void matrix_scan_keymap(void) {
295 #ifdef AUDIO_ENABLE
296 if (muse_mode) {
297 if (muse_counter == 0) {
298 uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
299 if (muse_note != last_muse_note) {
300 stop_note(compute_freq_for_midi_note(last_muse_note));
301 play_note(compute_freq_for_midi_note(muse_note), 0xF);
302 last_muse_note = muse_note;
303 }
304 }
305 muse_counter = (muse_counter + 1) % muse_tempo;
306 }
307 #endif
308}
309
310bool music_mask_user(uint16_t keycode) {
311 switch (keycode) {
312 case RAISE:
313 case LOWER:
314 return false;
315 default:
316 return true;
317 }
318}
diff --git a/keyboards/planck/keymaps/kuatsure/readme.md b/keyboards/planck/keymaps/kuatsure/readme.md
new file mode 100644
index 000000000..b1e5c6423
--- /dev/null
+++ b/keyboards/planck/keymaps/kuatsure/readme.md
@@ -0,0 +1 @@
# The kuatsure Planck layout - largely based on the Preonic's & Keyboard Paradise V60's layout
diff --git a/keyboards/planck/keymaps/kuatsure/rules.mk b/keyboards/planck/keymaps/kuatsure/rules.mk
new file mode 100644
index 000000000..f9fba61d3
--- /dev/null
+++ b/keyboards/planck/keymaps/kuatsure/rules.mk
@@ -0,0 +1,6 @@
1SRC += muse.c
2
3BACKLIGHT_ENABLE = no
4LEADER_ENABLE = yes
5ENCODER_ENABLE = yes
6MOUSEKEY_ENABLE = yes
diff --git a/keyboards/preonic/keymaps/kuatsure/keymap.c b/keyboards/preonic/keymaps/kuatsure/keymap.c
index 907360d0c..5bd7321d4 100644
--- a/keyboards/preonic/keymaps/kuatsure/keymap.c
+++ b/keyboards/preonic/keymaps/kuatsure/keymap.c
@@ -17,6 +17,8 @@
17#include QMK_KEYBOARD_H 17#include QMK_KEYBOARD_H
18#include "kuatsure.h" 18#include "kuatsure.h"
19 19
20#define LAYOUT_preonic_grid_wrapper(...) LAYOUT_preonic_grid(__VA_ARGS__)
21
20enum preonic_layers { 22enum preonic_layers {
21 _QWERTY, 23 _QWERTY,
22 _GAME, 24 _GAME,
diff --git a/keyboards/spacey/config.h b/keyboards/spacey/config.h
new file mode 100644
index 000000000..58249d4f1
--- /dev/null
+++ b/keyboards/spacey/config.h
@@ -0,0 +1,110 @@
1/*
2Copyright 2021 vanilla
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 vanilla
27#define PRODUCT spacey
28
29/* key matrix size */
30#define MATRIX_ROWS 5
31#define MATRIX_COLS 14
32
33
34#define ENCODERS_PAD_A { D0 }
35#define ENCODERS_PAD_B { D1 }
36#define ENCODER_RESOLUTION 4
37
38/*
39 * Keyboard Matrix Assignments
40 *
41 * Change this to how you wired your keyboard
42 * COLS: AVR pins used for columns, left to right
43 * ROWS: AVR pins used for rows, top to bottom
44 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
45 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
46 */
47#define MATRIX_ROW_PINS { D4, C6, F6, F5, F4 }
48#define MATRIX_COL_PINS { D5, B7, B5, B4, E6, D7, C7, B3, B2, B6, F0, F1, B1, F7 }
49
50/* COL2ROW, ROW2COL*/
51#define DIODE_DIRECTION COL2ROW
52
53
54/*
55 * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
56 */
57#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
58
59//#define LED_NUM_LOCK_PIN B0
60//#define LED_CAPS_LOCK_PIN B1
61//#define LED_SCROLL_LOCK_PIN B2
62//#define LED_COMPOSE_PIN B3
63//#define LED_KANA_PIN B4
64
65//#define BACKLIGHT_PIN B7
66//#define BACKLIGHT_LEVELS 3
67//#define BACKLIGHT_BREATHING
68
69//#define RGB_DI_PIN E2
70//#ifdef RGB_DI_PIN
71//# define RGBLED_NUM 16
72//# define RGBLIGHT_HUE_STEP 8
73//# define RGBLIGHT_SAT_STEP 8
74//# define RGBLIGHT_VAL_STEP 8
75//# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
76//# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
77/*== all animations enable ==*/
78//# define RGBLIGHT_ANIMATIONS
79/*== or choose animations ==*/
80//# define RGBLIGHT_EFFECT_BREATHING
81//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
82//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
83//# define RGBLIGHT_EFFECT_SNAKE
84//# define RGBLIGHT_EFFECT_KNIGHT
85//# define RGBLIGHT_EFFECT_CHRISTMAS
86//# define RGBLIGHT_EFFECT_STATIC_GRADIENT
87//# define RGBLIGHT_EFFECT_RGB_TEST
88//# define RGBLIGHT_EFFECT_ALTERNATING
89/*== customize breathing effect ==*/
90/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
91//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
92/*==== use exp() and sin() ====*/
93//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
94//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
95//#endif
96
97/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
98#define DEBOUNCE 5
99
100/* define if matrix has ghost (lacks anti-ghosting diodes) */
101//#define MATRIX_HAS_GHOST
102
103
104/* disable these deprecated features by default */
105#define NO_ACTION_MACRO
106#define NO_ACTION_FUNCTION
107
108/* Bootmagic Lite key configuration */
109//#define BOOTMAGIC_LITE_ROW 0
110//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/spacey/info.json b/keyboards/spacey/info.json
new file mode 100644
index 000000000..39a4e46b5
--- /dev/null
+++ b/keyboards/spacey/info.json
@@ -0,0 +1,87 @@
1{
2 "keyboard_name": "spacey",
3 "url": "",
4 "maintainer": "vanilla",
5 "width": 14,
6 "height": 5,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [
10 {"label":"k00", "x":0, "y":0},
11 {"label":"k01", "x":1, "y":0},
12 {"label":"k02", "x":2, "y":0},
13 {"label":"k03", "x":3, "y":0},
14 {"label":"k04", "x":4, "y":0},
15 {"label":"k05", "x":5, "y":0},
16 {"label":"k06", "x":6, "y":0},
17 {"label":"k07", "x":7, "y":0},
18 {"label":"k08", "x":8, "y":0},
19 {"label":"k09", "x":9, "y":0},
20 {"label":"k0A", "x":10, "y":0},
21 {"label":"k0B", "x":11, "y":0},
22 {"label":"k0C", "x":12, "y":0},
23 {"label":"k0D", "x":13, "y":0},
24
25 {"label":"k10", "x":0, "y":1},
26 {"label":"k11", "x":1, "y":1},
27 {"label":"k12", "x":2, "y":1},
28 {"label":"k13", "x":3, "y":1},
29 {"label":"k14", "x":4, "y":1},
30 {"label":"k15", "x":5, "y":1},
31 {"label":"k16", "x":6, "y":1},
32 {"label":"k17", "x":7, "y":1},
33 {"label":"k18", "x":8, "y":1},
34 {"label":"k19", "x":9, "y":1},
35 {"label":"k1A", "x":10, "y":1},
36 {"label":"k1B", "x":11, "y":1},
37 {"label":"k1C", "x":12, "y":1},
38 {"label":"k1D", "x":13, "y":1},
39
40 {"label":"k20", "x":0, "y":2},
41 {"label":"k21", "x":1, "y":2},
42 {"label":"k22", "x":2, "y":2},
43 {"label":"k23", "x":3, "y":2},
44 {"label":"k24", "x":4, "y":2},
45 {"label":"k25", "x":5, "y":2},
46 {"label":"k26", "x":6, "y":2},
47 {"label":"k27", "x":7, "y":2},
48 {"label":"k28", "x":8, "y":2},
49 {"label":"k29", "x":9, "y":2},
50 {"label":"k2A", "x":10, "y":2},
51 {"label":"k2B", "x":11, "y":2},
52 {"label":"k2C", "x":12, "y":2},
53 {"label":"k2D", "x":13, "y":2},
54
55 {"label":"k30", "x":0, "y":3},
56 {"label":"k31", "x":1, "y":3},
57 {"label":"k32", "x":2, "y":3},
58 {"label":"k33", "x":3, "y":3},
59 {"label":"k34", "x":4, "y":3},
60 {"label":"k35", "x":5, "y":3},
61 {"label":"k36", "x":6, "y":3},
62 {"label":"k37", "x":7, "y":3},
63 {"label":"k38", "x":8, "y":3},
64 {"label":"k39", "x":9, "y":3},
65 {"label":"k3A", "x":10, "y":3},
66 {"label":"k3B", "x":11, "y":3},
67 {"label":"k3C", "x":12, "y":3},
68 {"label":"k3D", "x":13, "y":3},
69
70 {"label":"k40", "x":0, "y":4},
71 {"label":"k41", "x":1, "y":4},
72 {"label":"k42", "x":2, "y":4},
73 {"label":"k43", "x":3, "y":4},
74 {"label":"k44", "x":4, "y":4},
75 {"label":"k45", "x":5, "y":4},
76
77 {"label":"k47", "x":7, "y":4},
78 {"label":"k48", "x":8, "y":4},
79
80 {"label":"k4A", "x":10, "y":4},
81 {"label":"k4B", "x":11, "y":4},
82 {"label":"k4C", "x":12, "y":4},
83 {"label":"k4D", "x":13, "y":4}
84 ]
85 }
86 }
87}
diff --git a/keyboards/spacey/keymaps/default/keymap.c b/keyboards/spacey/keymaps/default/keymap.c
new file mode 100644
index 000000000..4d08a279e
--- /dev/null
+++ b/keyboards/spacey/keymaps/default/keymap.c
@@ -0,0 +1,47 @@
1/* Copyright 2021 vanilla
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#define FN MO(_FN)
18
19// Defines names for use in layer keycodes and the keymap
20enum layer_names {
21 _BASE = 0,
22 _FN
23};
24
25// Defines the keycodes used by our macros in process_record_user
26enum custom_keycodes {
27 QMKBEST = SAFE_RANGE,
28 QMKURL
29};
30
31const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
32 /* Base */
33 [_BASE] = LAYOUT(
34 KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
35 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
36 KC_CLCK,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_UP,
37 KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, KC_LEFT, KC_DOWN,
38 KC_LCTL, KC_LGUI, FN, KC_MUTE, KC_LALT, KC_SPC, KC_NO, KC_BSPC, KC_DEL, KC_NO, KC_RALT, KC_RGUI, KC_RCTL, KC_RGHT
39 ),
40 [_FN] = LAYOUT(
41 KC_GRV, 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_BSPC,
42 KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_DEL,
43 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_ENT, KC_MS_U,
44 KC_LSFT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_COMM,KC_DOT,KC_SLSH,KC_RSFT, KC_MS_L, KC_MS_D,
45 KC_LCTL, KC_LGUI, KC_NO, KC_ESC, KC_LALT, KC_SPC, KC_NO, KC_BSPC, KC_RALT, KC_NO, KC_APP, KC_RGUI, KC_RCTL, KC_MS_R
46 )
47};
diff --git a/keyboards/spacey/keymaps/default/readme.md b/keyboards/spacey/keymaps/default/readme.md
new file mode 100644
index 000000000..808ab6826
--- /dev/null
+++ b/keyboards/spacey/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for spacey
diff --git a/keyboards/spacey/readme.md b/keyboards/spacey/readme.md
new file mode 100644
index 000000000..e61585269
--- /dev/null
+++ b/keyboards/spacey/readme.md
@@ -0,0 +1,19 @@
1# spacey
2
3![spacey](https://i.imgur.com/Dzon2hbh.jpeg)
4
5Spacey, designed by Vanilla Keyboards is a 45/65% keyboard with a little personality. Hosting ortholinear alphas with traditional modifiers, diamond shaped arrows, rotary encoder, and a couple optional spacebars at the top of the board, it's a balance between functional and unique.
6
7* Keyboard Maintainer: [vanilla](https://github.com/vanillakeyboards)
8* Hardware Supported: Elite C, Spacey PCB plates and acrylic drop_in case
9* Hardware Availability: https://p3dstore.com/collections/ended-group-buys/products/spacey?variant=37742593147064 and https://keeb.io/products/elite-c-low-profile-version-usb-c-pro-micro-replacement-atmega32u4
10
11Make example for this keyboard (after setting up your build environment):
12
13 make spacey:default
14
15Flashing example for this keyboard:
16
17 make spacey:default:flash
18
19See 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/spacey/rules.mk b/keyboards/spacey/rules.mk
new file mode 100644
index 000000000..fb12719ce
--- /dev/null
+++ b/keyboards/spacey/rules.mk
@@ -0,0 +1,23 @@
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 = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
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 = no # 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
23ENCODER_ENABLE = yes
diff --git a/keyboards/spacey/spacey.c b/keyboards/spacey/spacey.c
new file mode 100644
index 000000000..32f1e4dd9
--- /dev/null
+++ b/keyboards/spacey/spacey.c
@@ -0,0 +1,29 @@
1/* Copyright 2021 vanilla
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include "spacey.h"
18
19bool encoder_update_kb(uint8_t index, bool clockwise){
20 if (!encoder_update_user(index, clockwise)) { return false; }
21 if (index == 0) {
22 if(clockwise) {
23 tap_code(KC_VOLD);
24 } else {
25 tap_code(KC_VOLU);
26 }
27 }
28 return true;
29}
diff --git a/keyboards/spacey/spacey.h b/keyboards/spacey/spacey.h
new file mode 100644
index 000000000..5a288fae8
--- /dev/null
+++ b/keyboards/spacey/spacey.h
@@ -0,0 +1,41 @@
1/* Copyright 2021 vanilla
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19#include "quantum.h"
20
21/* This is a shortcut to help you visually see your layout.
22 *
23 * The first section contains all of the arguments representing the physical
24 * layout of the board and position of the keys.
25 *
26 * The second converts the arguments into a two-dimensional array which
27 * represents the switch matrix.
28 */
29#define LAYOUT( \
30 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, \
31 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, \
32 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, \
33 k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
34 k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D \
35) { \
36 { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D }, \
37 { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D }, \
38 { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D }, \
39 { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D }, \
40 { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D } \
41}
diff --git a/keyboards/ungodly/launch_pad/config.h b/keyboards/ungodly/launch_pad/config.h
index 0b6d03801..b16b0df97 100644
--- a/keyboards/ungodly/launch_pad/config.h
+++ b/keyboards/ungodly/launch_pad/config.h
@@ -18,30 +18,35 @@
18#include "config_common.h" 18#include "config_common.h"
19 19
20/* USB Device descriptor parameter */ 20/* USB Device descriptor parameter */
21#define VENDOR_ID 0x5544 // "UD" = Ungodly Design 21#define VENDOR_ID 0x5544 // "UD" = Ungodly Design
22#define PRODUCT_ID 0x4C50 // "LP" = Launch Pad 22#define PRODUCT_ID 0x4C50 // "LP" = Launch Pad
23#define DEVICE_VER 0x9999 23#define DEVICE_VER 0x9999
24#define MANUFACTURER Ungodly Design 24#define MANUFACTURER Ungodly Design
25#define PRODUCT Launch Pad 25#define PRODUCT Launch Pad
26 26
27/* key matrix size */ 27/* key matrix size */
28#define MATRIX_ROWS 5 28#define MATRIX_ROWS 5
29#define MATRIX_COLS 4 29#define MATRIX_COLS 4
30 30
31/* Keyboard Matrix Assignments */ 31/* Keyboard Matrix Assignments */
32#define MATRIX_ROW_PINS { D4, D6, D7, B4, B5 } 32#define MATRIX_ROW_PINS \
33#define MATRIX_COL_PINS { B0, B1, B2, B3 } 33 { D4, D6, D7, B4, B5 }
34#define MATRIX_COL_PINS \
35 { B0, B1, B2, B3 }
34 36
35/* COL2ROW or ROW2COL */ 37/* COL2ROW or ROW2COL */
36#define DIODE_DIRECTION COL2ROW 38#define DIODE_DIRECTION COL2ROW
37 39
38/* Rotary Encoder Assignment */ 40/* Rotary Encoder Assignment */
39#define ENCODERS_PAD_A { C6 } 41#define ENCODERS_PAD_A \
40#define ENCODERS_PAD_B { B6 } 42 { C6 }
43#define ENCODERS_PAD_B \
44 { B6 }
41#define ENCODER_RESOLUTION 2 45#define ENCODER_RESOLUTION 2
42 46
43/* Midi Slider */ 47/* Midi Slider */
44#define SLIDER_PIN F6 48#define SLIDER_PIN F6
49#define MIDI_ADVANCED
45 50
46/* RGB Matrix configuration */ 51/* RGB Matrix configuration */
47#ifdef RGB_MATRIX_ENABLE 52#ifdef RGB_MATRIX_ENABLE
@@ -61,20 +66,63 @@
61#endif 66#endif
62 67
63#define RGB_DI_PIN F7 68#define RGB_DI_PIN F7
64#ifdef RGB_DI_PIN 69#ifdef RGB_MATRIX_ENABLE
65# define RGBLED_NUM 22 70# define RGBLED_NUM 22
66# define RGBLIGHT_HUE_STEP 8 71# define DRIVER_LED_TOTAL RGBLED_NUM
67# define RGBLIGHT_SAT_STEP 8 72# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
68# define RGBLIGHT_VAL_STEP 8 73// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
69# define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ 74// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
70# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ 75# define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
71/*== all animations enable ==*/ 76# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
72# define RGBLIGHT_ANIMATIONS 77// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
78// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
79# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
80# define RGB_MATRIX_HUE_STEP 8
81# define RGB_MATRIX_SAT_STEP 8
82# define RGB_MATRIX_VAL_STEP 8
83# define RGB_MATRIX_SPD_STEP 10
84# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_PINWHEEL // default mode
85
86/* Reduce the firmware size by only enabling the rgb animations you desire. */
87# define DISABLE_RGB_MATRIX_ALPHAS_MODS
88# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
89# define DISABLE_RGB_MATRIX_BREATHING
90# define DISABLE_RGB_MATRIX_BAND_SAT
91# define DISABLE_RGB_MATRIX_BAND_VAL
92# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
93# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
94# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
95# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
96# define DISABLE_RGB_MATRIX_CYCLE_ALL
97# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
98# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
99# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
100# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
101# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
102# define DISABLE_RGB_MATRIX_DUAL_BEACON
103// # define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
104# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
105# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
106# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
107# define DISABLE_RGB_MATRIX_RAINDROPS
108# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
109# define DISABLE_RGB_MATRIX_TYPING_HEATMAP
110# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
111# define DISABLE_RGB_MATRIX_SOLID_REACTIVE
112# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
113# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
114# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
115# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
116# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
117# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
118# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
119# define DISABLE_RGB_MATRIX_SPLASH
120# define DISABLE_RGB_MATRIX_MULTISPLASH
121# define DISABLE_RGB_MATRIX_SOLID_SPLASH
122# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
73#endif 123#endif
74 124
75/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ 125/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
76#define DEBOUNCE 5 126#define DEBOUNCE 5
77 127
78#define LOCKING_RESYNC_ENABLE 128#define LOCKING_RESYNC_ENABLE
79
80#define MIDI_ADVANCED
diff --git a/keyboards/ungodly/launch_pad/info.json b/keyboards/ungodly/launch_pad/info.json
index b766c0721..bcf9ba8a8 100644
--- a/keyboards/ungodly/launch_pad/info.json
+++ b/keyboards/ungodly/launch_pad/info.json
@@ -1,37 +1,37 @@
1{ 1{
2 "keyboard_name": "Launch Pad", 2 "keyboard_name": "Launch Pad",
3 "url": "", 3 "url": "https://ungodly.design/products/launch-pad",
4 "maintainer": "luis-godinez", 4 "maintainer": "Ungodly Design",
5 "width": 4, 5 "width": 4,
6 "height": 5, 6 "height": 5,
7 "layouts": { 7 "layouts": {
8 "LAYOUT_ortho_5x4": { 8 "LAYOUT_ortho_5x4": {
9 "layout": [ 9 "layout": [
10 {"x":0, "y":0}, 10 {"x":0, "y":0},
11 {"x":1, "y":0}, 11 {"x":1, "y":0},
12 {"x":2, "y":0}, 12 {"x":2, "y":0},
13 {"x":3, "y":0}, 13 {"x":3, "y":0},
14 14
15 {"x":0, "y":1}, 15 {"x":0, "y":1},
16 {"x":1, "y":1}, 16 {"x":1, "y":1},
17 {"x":2, "y":1}, 17 {"x":2, "y":1},
18 {"x":3, "y":1}, 18 {"x":3, "y":1},
19 19
20 {"x":0, "y":2}, 20 {"x":0, "y":2},
21 {"x":1, "y":2}, 21 {"x":1, "y":2},
22 {"x":2, "y":2}, 22 {"x":2, "y":2},
23 {"x":3, "y":2}, 23 {"x":3, "y":2},
24 24
25 {"x":0, "y":3}, 25 {"x":0, "y":3},
26 {"x":1, "y":3}, 26 {"x":1, "y":3},
27 {"x":2, "y":3}, 27 {"x":2, "y":3},
28 {"x":3, "y":3}, 28 {"x":3, "y":3},
29 29
30 {"x":0, "y":4}, 30 {"x":0, "y":4},
31 {"x":1, "y":4}, 31 {"x":1, "y":4},
32 {"x":2, "y":4}, 32 {"x":2, "y":4},
33 {"x":3, "y":4} 33 {"x":3, "y":4}
34 ] 34 ]
35 }
36 } 35 }
36 }
37} 37}
diff --git a/keyboards/ungodly/launch_pad/keymaps/default/keymap.c b/keyboards/ungodly/launch_pad/keymaps/default/keymap.c
index 880b225d4..a401be7e8 100644
--- a/keyboards/ungodly/launch_pad/keymaps/default/keymap.c
+++ b/keyboards/ungodly/launch_pad/keymaps/default/keymap.c
@@ -17,242 +17,277 @@
17#include "analog.h" 17#include "analog.h"
18#include "qmk_midi.h" 18#include "qmk_midi.h"
19 19
20// Each layer gets a name for readability, which is then used in the keymap matrix below. 20/* Force Numlock on */
21// The underscores don't mean anything - you can have a layer called STUFF or any other name. 21void matrix_init_user (void) {
22// Layer names don't all need to be of the same length, obviously, and you can also skip them 22 if (!host_keyboard_led_state().num_lock) {
23// entirely and just use numbers. 23 tap_code(KC_NUMLOCK);
24enum layers { 24 }
25_BL = 0, 25}
26_NV, 26
27_FN 27/* Custom Layer Up/Down Keystrokes */
28enum custom_keycodes {
29 KC_LUP = SAFE_RANGE, //cycle layers in up direction
30 KC_LDN //cycle layers in down direction
28}; 31};
32#define HIGHEST_LAYER 2 //replace X with your highest layer
33static uint8_t current_layer = 0;
34
35bool process_record_user(uint16_t keycode, keyrecord_t *record) {
36 switch (keycode) {
37 case KC_LUP:
38 if(record->event.pressed) {
39 if (current_layer == HIGHEST_LAYER){
40 current_layer=0;
41 } else {
42 current_layer++;
43 }
44 layer_clear();
45 layer_on(current_layer);
46 }
47 return false;
48 case KC_LDN:
49 if(record->event.pressed) {
50 if (current_layer == 0){
51 current_layer=HIGHEST_LAYER;
52 } else {
53 current_layer--;
54 }
55 layer_clear();
56 layer_on(current_layer);
57 }
58 return false;
59 default:
60 return true;
61 }
62}
29 63
30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 64const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31/* Keymap _BL: (Base Layer) Default Numpad Layer 65/* Keymap _BL: (Base Layer) Default Numpad Layer
32 * ,-------------------. 66 * ,-------------------.
33 * | NV | / | * |BK/FN| 67 * |LAYR| / | * |BACK |
34 * |----|----|----|-----| 68 * |----|----|----|-----|
35 * | 7 | 8 | 9 | - | 69 * | 7 | 8 | 9 | - |
36 * |----|----|----|-----| 70 * |----|----|----|-----|
37 * | 4 | 5 | 6 | + | 71 * | 4 | 5 | 6 | + |
38 * |----|----|----|-----| 72 * |----|----|----|-----|
39 * | 1 | 2 | 3 | | 73 * | 1 | 2 | 3 | En |
40 * |----|----|----| En | 74 * |----|----|----|-----|
41 * | 0 | . | | 75 * | 0 | 0 | . | En |
42 * `--------------------' 76 * `--------------------'
43 */ 77 */
44 [_BL] = LAYOUT_ortho_5x4( 78 [0] = LAYOUT_ortho_5x4(
45 TG(_NV), KC_PSLS, KC_PAST, LT(_FN, KC_BSPC), 79 KC_LUP, KC_PSLS, KC_PAST, LT(2, KC_BSPC),
46 KC_7, KC_8, KC_9, KC_PMNS, 80 KC_P7, KC_P8, KC_P9, KC_PMNS,
47 KC_4, KC_5, KC_6, KC_PPLS, 81 KC_P4, KC_P5, KC_P6, KC_PPLS,
48 KC_1, KC_2, KC_3, KC_PENT, 82 KC_P1, KC_P2, KC_P3, KC_PENT,
49 KC_0, KC_0, KC_DOT, KC_PENT 83 KC_P0, KC_P0, KC_PDOT, KC_PENT
50 ), 84 ),
51 85
52/* Keymap _NV: Navigation layer 86/* Keymap _NV: Navigation layer
53 * ,-------------------. 87* ,-------------------.
54 * |INS |HOME|PGUP| | 88* |LAYR| | |NUM |
55 * |----|----|----|----| 89* |----|----|----|----|
56 * |DEL |END |PGDN| | 90* |HOME| UP |PGUP| |
57 * |----|----|----|----| 91* |----|----|----|----|
58 * | | UP | | | 92* |LEFT| |RIGH| |
59 * |----|----|----|----| 93* |----|----|----|----|
60 * |LEFT|DOWN|RIGH| | 94* |END |DOWN|PGDN| En |
61 * |----|----|----| | 95* |----|----|----|----|
62 * | | | | 96* |INS |INS |DEL | En |
63 * `-------------------' 97* `-------------------'
64 */ 98*/
65 [_NV] = LAYOUT_ortho_5x4( 99[1] = LAYOUT_ortho_5x4(
66 KC_INS, KC_HOME, KC_PGUP, TG(_NV), 100 KC_LUP, KC_NUMLOCK, XXXXXXX, XXXXXXX,
67 KC_DEL, KC_END, KC_PGDN, XXXXXXX, 101 KC_HOME, KC_UP, KC_PGUP, XXXXXXX,
68 XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, 102 KC_LEFT, XXXXXXX, KC_RGHT, XXXXXXX,
69 KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, 103 KC_END, KC_DOWN, KC_PGDN, KC_PENT,
70 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX 104 KC_INS, KC_INS, KC_DEL, KC_PENT
71 ), 105),
72 106
73/* Keymap _FN: RGB Function Layer 107/* Keymap _FN: RGB Function Layer
74 * ,-------------------. 108 * ,-------------------.
75 * |RMOD|RGBP|RTOG| FN | 109 * |LAYR| | |RTOG|
76 * |----|----|----|----| 110 * |----|----|----|----|
77 * |HUD |HUI | | | 111 * |HUD |HUI | |RGBP|
78 * |----|----|----|----| 112 * |----|----|----|----|
79 * |SAD |SAI | | | 113 * |SAD |SAI | |RMOD|
80 * |----|----|----|----| 114 * |----|----|----|----|
81 * |VAD |VAS | | | 115 * |VAD |VAS | | |
82 * |----|----|----| | 116 * |----|----|----|----|
83 * |RST | | | | 117 * |RST |RST | | |
84 * `-------------------' 118 * `-------------------'
85 */ 119 */
86 [_FN] = LAYOUT_ortho_5x4( 120 [2] = LAYOUT_ortho_5x4(
87 RGB_MOD, RGB_M_P, RGB_TOG, _______, 121 KC_LUP, XXXXXXX, XXXXXXX, RGB_TOG,
88 RGB_HUD, RGB_HUI, XXXXXXX, XXXXXXX, 122 RGB_HUD, RGB_HUI, XXXXXXX, RGB_M_P,
89 RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, 123 RGB_SAD, RGB_SAI, XXXXXXX, RGB_MOD,
90 RGB_VAD, RGB_VAI, XXXXXXX, XXXXXXX, 124 RGB_VAD, RGB_VAI, XXXXXXX, XXXXXXX,
91 RESET, XXXXXXX, XXXXXXX, XXXXXXX 125 RESET, RESET, XXXXXXX, XXXXXXX
92 ), 126 ),
93}; 127};
94 128
129// (Optional) Rotary Encoder, Volume Control
95bool encoder_update_user(uint8_t index, bool clockwise) { 130bool encoder_update_user(uint8_t index, bool clockwise) {
96 if (clockwise) { 131 if (clockwise) {
97 tap_code(KC_VOLU); 132 tap_code(KC_VOLU);
98 } else { 133 } else {
99 tap_code(KC_VOLD); 134 tap_code(KC_VOLD);
100 } 135 }
101 return true; 136 return true;
102} 137}
103 138
139// Potentiometer Slider, MIDI Control
104uint8_t divisor = 0; 140uint8_t divisor = 0;
105 141void slider(void){
106void slider(void) { 142 if (divisor++) { // only run the slider function 1/256 times it's called
107 if (divisor++) { // only run the slider function 1/256 times it's called 143 return;
108 return; 144 }
109 } 145 midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
110
111 midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
112} 146}
113 147
114void matrix_scan_user(void) { 148void matrix_scan_user(void) {
115 slider(); 149 slider();
116} 150}
117 151
118// 0.91" OLED, 128x32 resolution 152// 0.91" OLED, 128x32 resolution
119#ifdef OLED_DRIVER_ENABLE 153#ifdef OLED_DRIVER_ENABLE
120
121oled_rotation_t oled_init_user(oled_rotation_t rotation) { 154oled_rotation_t oled_init_user(oled_rotation_t rotation) {
122 return OLED_ROTATION_180; // flips the display 270 degrees 155 return OLED_ROTATION_180;
123} 156}
124 157
125#define ANIM_SIZE 636 // number of bytes in array, minimize for adequate firmware size, max is 1024 158static void render_rocket_logo(void) {
126 159 static const char PROGMEM rocket_logo[]={
127layer_state_t layer_state_set_user(layer_state_t state) { 160 // Rocket Screen
128 161 // 'home', 128x32px
129 static const char PROGMEM gui_layers[][ANIM_SIZE] = { 162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
130 { 163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
131 // Home Screen 164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
132 // 'layer_bl', 128x32px 165 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, 166 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, 167 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, 168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
136 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 169 0x80, 0x80, 0xc0, 0x40, 0xc0, 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, 170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 171 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 172 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04,
140 0x80, 0x80, 0xc0, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 173 0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f,
141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90, 174 0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
142 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 175 0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01,
143 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 176 0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6,
144 0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f, 177 0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00,
145 0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 178 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
146 0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01, 179 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
147 0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6, 180 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10,
148 0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00, 181 0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40,
149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 182 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f,
150 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 183 0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40,
151 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 184 0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c,
152 0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40, 185 0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00,
153 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
154 0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40, 187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
155 0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c, 188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
156 0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00, 189 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, 190 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, 191 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, 192 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, 193 0x00, 0x00, 0x01, 0x01, 0x01, 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, 194 };
162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 195 oled_write_raw_P(rocket_logo, sizeof(rocket_logo));
163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 196}
164 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 197static void render_nav_logo(void) {
165 }, 198 static const char PROGMEM nav_logo[]={
166 { 199 // Navigation Screen
167 // Navigation Screen 200 // 'navigation', 128x32px
168 // 'layer_nav', 128x32px 201 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, 202 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, 203 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, 204 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, 205 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, 206 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, 0x00, 0x00, 0x00, 207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40,
175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40, 208 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
176 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
177 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90, 210 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
178 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xc8, 0x28, 0x28, 0x28, 0xc8, 0x10,
179 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xc8, 0x28, 0x28, 0x28, 0xc8, 0x10, 212 0xb0, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20,
180 0xb0, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 213 0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0xa1, 0x09, 0xe1,
181 0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0xa1, 0x09, 0xe1, 214 0xf3, 0x29, 0x05, 0x85, 0xe5, 0xe5, 0xc5, 0x89, 0x92, 0xe4, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00,
182 0xf3, 0x29, 0x05, 0x85, 0xe5, 0xe5, 0xc5, 0x89, 0x92, 0xe4, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00, 215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x44,
183 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x44, 216 0x44, 0x22, 0xe2, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
184 0x44, 0x22, 0xe2, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 218 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
186 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 219 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x09, 0x0b, 0x0b, 0x0b, 0x09, 0x04,
187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x09, 0x0b, 0x0b, 0x0b, 0x09, 0x04, 220 0x06, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
188 0x06, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 221 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x42, 0x48, 0x43,
189 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x42, 0x48, 0x43, 222 0x66, 0x4e, 0x53, 0x51, 0x51, 0x53, 0x53, 0x49, 0x24, 0x13, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
190 0x66, 0x4e, 0x53, 0x51, 0x51, 0x53, 0x53, 0x49, 0x24, 0x13, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00, 223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x91,
191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x91, 224 0x91, 0x52, 0x53, 0x34, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
192 0x91, 0x52, 0x53, 0x34, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 225 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, 226 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, 227 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, 228 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, 229 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, 230 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, 0x00, 0x00, 0x00, 231 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x02,
199 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x02, 232 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
200 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 233 };
201 }, 234 oled_write_raw_P(nav_logo, sizeof(nav_logo));
202 { 235}
203 // RGB Screen 236static void render_light_logo(void) {
204 // 'layer_rgb', 128x32px 237 static const char PROGMEM light_logo[]={
205 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 238 // RGB Screen
206 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 239 // 'rgb', 128x32px
207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
208 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80, 241 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
209 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 242 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, 0x00, 0x00, 243 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80,
211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 244 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
212 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90, 246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
214 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 247 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
216 0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00, 249 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
217 0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 0xc0, 250 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, 0x00, 0x00, 0x00, 251 0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00,
219 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x24, 0x04, 252 0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 0xc0,
220 0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 253 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
221 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04, 254 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x24, 0x04,
222 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 255 0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
224 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 257 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
225 0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 0x03, 258 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, 0x00, 0x00, 0x00, 259 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
227 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x22, 0x24, 260 0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 0x03,
228 0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 261 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, 262 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x22, 0x24,
230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 263 0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
231 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 264 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
232 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01, 265 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
233 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 266 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, 0x00, 0x00, 0x00, 267 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01,
235 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02, 268 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
236 0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 269 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
237 } 270 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02,
238 }; 271 0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
272 };
273 oled_write_raw_P(light_logo, sizeof(light_logo));
274}
239 275
240 switch (get_highest_layer(state)) { 276void oled_task_user(void) {
241 case _BL: 277 switch (get_highest_layer(layer_state)) {
242 oled_write_raw_P(gui_layers[0], sizeof(gui_layers[0]) ); 278 case 0:
279 render_rocket_logo();
243 break; 280 break;
244 case _NV: 281 case 1:
245 oled_write_raw_P(gui_layers[1], sizeof(gui_layers[1]) ); 282 render_nav_logo();
246 break; 283 break;
247 case _FN: 284 case 2:
248 oled_write_raw_P(gui_layers[2], sizeof(gui_layers[2]) ); 285 render_light_logo();
249 break; 286 break;
250 default: 287 default:
251 // Or use the write_ln shortcut over adding '\n' to the end of your string 288 // Or use the write_ln shortcut over adding '\n' to the end of your string
252 oled_write_ln_P(PSTR(" UND"), false); 289 oled_write_ln_P(PSTR(" UND"), false);
253 break; 290 break;
254 } 291 }
255 return state;
256} 292}
257
258#endif 293#endif
diff --git a/keyboards/ungodly/launch_pad/keymaps/via/keymap.c b/keyboards/ungodly/launch_pad/keymaps/via/keymap.c
new file mode 100644
index 000000000..a401be7e8
--- /dev/null
+++ b/keyboards/ungodly/launch_pad/keymaps/via/keymap.c
@@ -0,0 +1,293 @@
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/* Force Numlock on */
21void matrix_init_user (void) {
22 if (!host_keyboard_led_state().num_lock) {
23 tap_code(KC_NUMLOCK);
24 }
25}
26
27/* Custom Layer Up/Down Keystrokes */
28enum custom_keycodes {
29 KC_LUP = SAFE_RANGE, //cycle layers in up direction
30 KC_LDN //cycle layers in down direction
31};
32#define HIGHEST_LAYER 2 //replace X with your highest layer
33static uint8_t current_layer = 0;
34
35bool process_record_user(uint16_t keycode, keyrecord_t *record) {
36 switch (keycode) {
37 case KC_LUP:
38 if(record->event.pressed) {
39 if (current_layer == HIGHEST_LAYER){
40 current_layer=0;
41 } else {
42 current_layer++;
43 }
44 layer_clear();
45 layer_on(current_layer);
46 }
47 return false;
48 case KC_LDN:
49 if(record->event.pressed) {
50 if (current_layer == 0){
51 current_layer=HIGHEST_LAYER;
52 } else {
53 current_layer--;
54 }
55 layer_clear();
56 layer_on(current_layer);
57 }
58 return false;
59 default:
60 return true;
61 }
62}
63
64const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
65/* Keymap _BL: (Base Layer) Default Numpad Layer
66 * ,-------------------.
67 * |LAYR| / | * |BACK |
68 * |----|----|----|-----|
69 * | 7 | 8 | 9 | - |
70 * |----|----|----|-----|
71 * | 4 | 5 | 6 | + |
72 * |----|----|----|-----|
73 * | 1 | 2 | 3 | En |
74 * |----|----|----|-----|
75 * | 0 | 0 | . | En |
76 * `--------------------'
77 */
78 [0] = LAYOUT_ortho_5x4(
79 KC_LUP, KC_PSLS, KC_PAST, LT(2, KC_BSPC),
80 KC_P7, KC_P8, KC_P9, KC_PMNS,
81 KC_P4, KC_P5, KC_P6, KC_PPLS,
82 KC_P1, KC_P2, KC_P3, KC_PENT,
83 KC_P0, KC_P0, KC_PDOT, KC_PENT
84 ),
85
86/* Keymap _NV: Navigation layer
87* ,-------------------.
88* |LAYR| | |NUM |
89* |----|----|----|----|
90* |HOME| UP |PGUP| |
91* |----|----|----|----|
92* |LEFT| |RIGH| |
93* |----|----|----|----|
94* |END |DOWN|PGDN| En |
95* |----|----|----|----|
96* |INS |INS |DEL | En |
97* `-------------------'
98*/
99[1] = LAYOUT_ortho_5x4(
100 KC_LUP, KC_NUMLOCK, XXXXXXX, XXXXXXX,
101 KC_HOME, KC_UP, KC_PGUP, XXXXXXX,
102 KC_LEFT, XXXXXXX, KC_RGHT, XXXXXXX,
103 KC_END, KC_DOWN, KC_PGDN, KC_PENT,
104 KC_INS, KC_INS, KC_DEL, KC_PENT
105),
106
107/* Keymap _FN: RGB Function Layer
108 * ,-------------------.
109 * |LAYR| | |RTOG|
110 * |----|----|----|----|
111 * |HUD |HUI | |RGBP|
112 * |----|----|----|----|
113 * |SAD |SAI | |RMOD|
114 * |----|----|----|----|
115 * |VAD |VAS | | |
116 * |----|----|----|----|
117 * |RST |RST | | |
118 * `-------------------'
119 */
120 [2] = LAYOUT_ortho_5x4(
121 KC_LUP, XXXXXXX, XXXXXXX, RGB_TOG,
122 RGB_HUD, RGB_HUI, XXXXXXX, RGB_M_P,
123 RGB_SAD, RGB_SAI, XXXXXXX, RGB_MOD,
124 RGB_VAD, RGB_VAI, XXXXXXX, XXXXXXX,
125 RESET, RESET, XXXXXXX, XXXXXXX
126 ),
127};
128
129// (Optional) Rotary Encoder, Volume Control
130bool encoder_update_user(uint8_t index, bool clockwise) {
131 if (clockwise) {
132 tap_code(KC_VOLU);
133 } else {
134 tap_code(KC_VOLD);
135 }
136 return true;
137}
138
139// Potentiometer Slider, MIDI Control
140uint8_t divisor = 0;
141void slider(void){
142 if (divisor++) { // only run the slider function 1/256 times it's called
143 return;
144 }
145 midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
146}
147
148void matrix_scan_user(void) {
149 slider();
150}
151
152// 0.91" OLED, 128x32 resolution
153#ifdef OLED_DRIVER_ENABLE
154oled_rotation_t oled_init_user(oled_rotation_t rotation) {
155 return OLED_ROTATION_180;
156}
157
158static void render_rocket_logo(void) {
159 static const char PROGMEM rocket_logo[]={
160 // Rocket Screen
161 // 'home', 128x32px
162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
169 0x80, 0x80, 0xc0, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
171 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
172 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04,
173 0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f,
174 0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
175 0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01,
176 0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6,
177 0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00,
178 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
179 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
180 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10,
181 0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40,
182 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f,
183 0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40,
184 0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c,
185 0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00,
186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
187 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
188 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
189 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
191 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
194 };
195 oled_write_raw_P(rocket_logo, sizeof(rocket_logo));
196}
197static void render_nav_logo(void) {
198 static const char PROGMEM nav_logo[]={
199 // Navigation Screen
200 // 'navigation', 128x32px
201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
203 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x40,
208 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
209 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
210 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
211 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0xc8, 0x28, 0x28, 0x28, 0xc8, 0x10,
212 0xb0, 0x10, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20,
213 0x20, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0xa1, 0x09, 0xe1,
214 0xf3, 0x29, 0x05, 0x85, 0xe5, 0xe5, 0xc5, 0x89, 0x92, 0xe4, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00,
215 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x44,
216 0x44, 0x22, 0xe2, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
217 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
218 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
219 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x09, 0x0b, 0x0b, 0x0b, 0x09, 0x04,
220 0x06, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
221 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x42, 0x48, 0x43,
222 0x66, 0x4e, 0x53, 0x51, 0x51, 0x53, 0x53, 0x49, 0x24, 0x13, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00,
223 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x91,
224 0x91, 0x52, 0x53, 0x34, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
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, 0x00, 0x00, 0x00,
227 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x02,
232 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
233 };
234 oled_write_raw_P(nav_logo, sizeof(nav_logo));
235}
236static void render_light_logo(void) {
237 static const char PROGMEM light_logo[]={
238 // RGB Screen
239 // 'rgb', 128x32px
240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
241 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
242 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
243 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80,
244 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
247 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
249 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
250 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
251 0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00,
252 0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 0xc0,
253 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
254 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x24, 0x04,
255 0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
256 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
257 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
258 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
259 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
260 0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 0x03,
261 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
262 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x22, 0x24,
263 0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
264 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
265 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
266 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
267 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01,
268 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
269 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
270 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02,
271 0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
272 };
273 oled_write_raw_P(light_logo, sizeof(light_logo));
274}
275
276void oled_task_user(void) {
277 switch (get_highest_layer(layer_state)) {
278 case 0:
279 render_rocket_logo();
280 break;
281 case 1:
282 render_nav_logo();
283 break;
284 case 2:
285 render_light_logo();
286 break;
287 default:
288 // Or use the write_ln shortcut over adding '\n' to the end of your string
289 oled_write_ln_P(PSTR(" UND"), false);
290 break;
291 }
292}
293#endif
diff --git a/keyboards/ungodly/launch_pad/keymaps/via/rules.mk b/keyboards/ungodly/launch_pad/keymaps/via/rules.mk
new file mode 100644
index 000000000..1e5b99807
--- /dev/null
+++ b/keyboards/ungodly/launch_pad/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes
diff --git a/keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c b/keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c
new file mode 100644
index 000000000..04270bcf3
--- /dev/null
+++ b/keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c
@@ -0,0 +1,269 @@
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/* Force Numlock on */
21void matrix_init_user (void) {
22 if (!host_keyboard_led_state().num_lock) {
23 tap_code(KC_NUMLOCK);
24 }
25}
26
27// Tap Dance declarations
28enum {
29 TD_ESC_TAB,
30 TD_NUMLOCK_L1,
31 TD_3_L0
32};
33
34// Tap Dance definitions
35qk_tap_dance_action_t tap_dance_actions[] = {
36 // Tap once for Escape, twice for Number 4 (armor plates in warzone)
37 [TD_ESC_TAB] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_TAB),
38 [TD_3_L0] = ACTION_TAP_DANCE_LAYER_TOGGLE(KC_3, 1),
39 [TD_NUMLOCK_L1] = ACTION_TAP_DANCE_LAYER_TOGGLE(KC_NUMLOCK, 1),
40};
41
42const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
43 /* Keymap _BL: (Base Layer) Default Numpad Layer
44 * ,-------------------.
45 * | NV | / | * |BK/FN|
46 * |----|----|----|-----|
47 * | 7 | 8 | 9 | - |
48 * |----|----|----|-----|
49 * | 4 | 5 | 6 | + |
50 * |----|----|----|-----|
51 * | 1 | 2 | 3 | En |
52 * |----|----|----|-----|
53 * | 0 | 0 | . | En |
54 * `--------------------'
55 */
56 [0] = LAYOUT_ortho_5x4(
57 TD(TD_NUMLOCK_L1), KC_PSLS, KC_PAST, LT(2, KC_BSPC),
58 KC_P7, KC_P8, KC_P9, KC_PMNS,
59 KC_P4, KC_P5, KC_P6, KC_PPLS,
60 KC_P1, KC_P2, KC_P3, KC_PENT,
61 KC_P0, KC_P0, KC_PDOT, KC_PENT
62 ),
63 /* Keymap _WAR: (Warzone Layer) Default Numpad Layer for COD Warzone N00BS
64 * ,-------------------.
65 * | R | F | V | Spc |
66 * |----|----|----|-----|
67 * | E | D | C | Alt |
68 * |----|----|----|-----|
69 * | W | S | X | 4 |
70 * |----|----|----|-----|
71 * | Q | A | Z | 3 |
72 * |----|----|----|-----|
73 * | Esc|Ctrl|Shift| M |
74 * `--------------------'
75 */
76 [1] = LAYOUT_ortho_5x4(
77 KC_R, KC_F, KC_V, KC_SPACE,
78 KC_E, KC_D, KC_C, KC_LALT,
79 KC_W, KC_S, KC_X, KC_4,
80 KC_Q, KC_A, KC_Z, TD(TD_3_L0),
81 TD(TD_ESC_TAB), KC_LCTRL, KC_LSHIFT, KC_M
82 ),
83 /* Keymap _FN: RGB Function Layer
84 * ,-------------------.
85 * |LAYR| | |RTOG|
86 * |----|----|----|----|
87 * |HUD |HUI | |RGBP|
88 * |----|----|----|----|
89 * |SAD |SAI | |RMOD|
90 * |----|----|----|----|
91 * |VAD |VAS | | |
92 * |----|----|----|----|
93 * |RST |RST | | |
94 * `-------------------'
95 */
96 [2] = LAYOUT_ortho_5x4(
97 KC_LUP, XXXXXXX, XXXXXXX, RGB_TOG,
98 RGB_HUD, RGB_HUI, XXXXXXX, RGB_M_P,
99 RGB_SAD, RGB_SAI, XXXXXXX, RGB_MOD,
100 RGB_VAD, RGB_VAI, XXXXXXX, XXXXXXX,
101 RESET, RESET, XXXXXXX, XXXXXXX
102 ),
103};
104
105// (Optional) Rotary Encoder, Volume Control
106bool encoder_update_user(uint8_t index, bool clockwise) {
107 if (clockwise) {
108 tap_code(KC_VOLU);
109 } else {
110 tap_code(KC_VOLD);
111 }
112 return true;
113}
114
115// Potentiometer Slider, MIDI Control
116uint8_t divisor = 0;
117void slider(void){
118 if (divisor++) { // only run the slider function 1/256 times it's called
119 return;
120 }
121 midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
122}
123
124void matrix_scan_user(void) {
125 slider();
126}
127
128// 0.91" OLED, 128x32 resolution
129#ifdef OLED_DRIVER_ENABLE
130oled_rotation_t oled_init_user(oled_rotation_t rotation) {
131 return OLED_ROTATION_180;
132}
133
134static void render_rocket_logo(void) {
135 static const char PROGMEM rocket_logo[]={
136 // Rocket Screen
137 // 'home', 128x32px
138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
139 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
140 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
145 0x80, 0x80, 0xc0, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
146 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
147 0x10, 0x10, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80,
148 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04,
149 0x04, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xfc, 0x7c, 0x7e, 0x7e, 0x7f,
150 0x81, 0x81, 0x81, 0x81, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff,
151 0xff, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0x01, 0x01, 0x01, 0xf9, 0x01, 0xf9, 0x01,
152 0xf9, 0x01, 0xf9, 0x01, 0x01, 0x01, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe6,
153 0xe6, 0xe6, 0xe6, 0xe6, 0xff, 0x8c, 0x52, 0x52, 0x52, 0xde, 0x84, 0x08, 0x84, 0x08, 0x00, 0x00,
154 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
155 0x05, 0x05, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
156 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x04, 0x04, 0x07, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10,
157 0x10, 0x1f, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x10, 0x20, 0x20, 0x40,
158 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f,
159 0x7f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x40, 0x40, 0x40, 0x4a, 0x44, 0x4a, 0x40,
160 0x4f, 0x40, 0x4f, 0x40, 0x40, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x9c,
161 0x9c, 0x9c, 0x9c, 0x1c, 0xff, 0x31, 0x4a, 0x4a, 0x4a, 0x7b, 0x10, 0x21, 0x10, 0x21, 0x00, 0x00,
162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
169 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
170 };
171 oled_write_raw_P(rocket_logo, sizeof(rocket_logo));
172}
173static void render_warzone_logo(void) {
174 static const char PROGMEM warzone_logo[]={
175 // Home Screen
176 // 'warzone_bit', 128x32px
177 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
178 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xe0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
179 0x00, 0xe0, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfe,
180 0xfc, 0xf0, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
181 0xff, 0xff, 0x7f, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x80, 0x00, 0x00, 0xff, 0xff,
182 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xc0,
183 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
184 0xf8, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00,
185 0x00, 0x00, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
186 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
187 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
188 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0x1f,
189 0x07, 0x01, 0x00, 0x00, 0x00, 0x03, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf0, 0xff, 0xff,
190 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x1f, 0xff,
191 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff,
192 0xff, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00,
193 0x00, 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
194 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
195 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,
196 0xff, 0xff, 0x00, 0x80, 0xe0, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x07, 0x01, 0x00, 0x00,
197 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0xff, 0xff,
198 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xfe, 0xff,
199 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0xff, 0xff, 0xff,
200 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
201 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00,
202 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x01, 0x0f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
203 0x00, 0x03, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f,
204 0x1f, 0x07, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
205 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f,
206 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
207 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x07, 0x7f, 0x7f,
208 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x0f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7e, 0x00
209 };
210 oled_write_raw_P(warzone_logo, sizeof(warzone_logo));
211}
212static void render_light_logo(void) {
213 static const char PROGMEM light_logo[]={
214 // RGB Screen
215 // 'rgb', 128x32px
216 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
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, 0x00, 0x00, 0x00,
219 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x9c, 0x80, 0x80,
220 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
221 0x00, 0x00, 0x00, 0x00, 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, 0x80, 0x80,
223 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x20, 0x50, 0x50, 0x90,
225 0x10, 0x10, 0x20, 0xc0, 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, 0x00, 0x00, 0x00,
227 0x80, 0x80, 0x80, 0x00, 0x00, 0xe0, 0x19, 0x04, 0x62, 0x11, 0x09, 0x04, 0x04, 0x00, 0x00, 0x00,
228 0x00, 0x01, 0x01, 0x02, 0x04, 0x19, 0x10, 0x10, 0xf0, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0xe0, 0xc0,
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, 0xc7, 0x24, 0x04,
231 0x07, 0xe4, 0x24, 0x24, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
232 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x04,
233 0x05, 0x05, 0x02, 0x05, 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, 0x00, 0x00, 0x00,
235 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x88, 0x30, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
236 0x80, 0x80, 0x40, 0x60, 0x30, 0x98, 0x08, 0x08, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x07, 0x03,
237 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
238 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x22, 0x24,
239 0x24, 0xc4, 0x44, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
240 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
241 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
242 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
243 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1d, 0x01, 0x01,
244 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
245 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
246 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x02,
247 0x02, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
248 };
249 oled_write_raw_P(light_logo, sizeof(light_logo));
250}
251
252void oled_task_user(void) {
253 switch (get_highest_layer(layer_state)) {
254 case 0:
255 render_rocket_logo();
256 break;
257 case 1:
258 render_warzone_logo();
259 break;
260 case 2:
261 render_light_logo();
262 break;
263 default:
264 // Or use the write_ln shortcut over adding '\n' to the end of your string
265 oled_write_ln_P(PSTR(" UND"), false);
266 break;
267 }
268}
269#endif
diff --git a/keyboards/ungodly/launch_pad/keymaps/warzone/rules.mk b/keyboards/ungodly/launch_pad/keymaps/warzone/rules.mk
new file mode 100644
index 000000000..791d5ab50
--- /dev/null
+++ b/keyboards/ungodly/launch_pad/keymaps/warzone/rules.mk
@@ -0,0 +1,2 @@
1VIA_ENABLE = yes
2TAP_DANCE_ENABLE = yes
diff --git a/keyboards/ungodly/launch_pad/launch_pad.c b/keyboards/ungodly/launch_pad/launch_pad.c
index fde6ed20a..e5ec112f9 100644
--- a/keyboards/ungodly/launch_pad/launch_pad.c
+++ b/keyboards/ungodly/launch_pad/launch_pad.c
@@ -42,20 +42,3 @@ led_config_t g_led_config = { {
42 2, 2 42 2, 2
43} }; 43} };
44#endif 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/readme.md b/keyboards/ungodly/launch_pad/readme.md
index 89e4b6413..5a449bcab 100644
--- a/keyboards/ungodly/launch_pad/readme.md
+++ b/keyboards/ungodly/launch_pad/readme.md
@@ -22,11 +22,9 @@ Numpad Layout | 5x4 Layout
22![Numpad](https://i.imgur.com/4XvqCBHl.jpg) | ![5x4](https://i.imgur.com/mwtGnPSl.jpg) 22![Numpad](https://i.imgur.com/4XvqCBHl.jpg) | ![5x4](https://i.imgur.com/mwtGnPSl.jpg)
23 23
24 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 25
29* Keyboard Maintainer: [Luis Godinez](https://github.com/luis-Godinez) 26
27* Keyboard Maintainer: [Luis Godinez](https://github.com/luis-godinez)
30* Hardware Supported: Launch Pad PCB 28* Hardware Supported: Launch Pad PCB
31* Hardware Availability: [Ungodly.Design](https://ungodly.design/products/launch-pad-pcb) 29* Hardware Availability: [Ungodly.Design](https://ungodly.design/products/launch-pad-pcb)
32 30
@@ -35,3 +33,59 @@ Make example for this keyboard (after setting up your build environment):
35 make ungodly/launch_pad:default 33 make ungodly/launch_pad:default
36 34
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). 35See 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).
36
37# Firmware
38- [v1.0](https://github.com/luis-godinez/qmk_firmware/releases/tag/launch_pad)
39
40# Reset Bootloader
41
42<table>
43 <tr>
44 <td>Use tweezers to short the two bottom pins of the J-Link pinout.</td>
45 <td><img src="https://i.imgur.com/ArSIcK0.pngl" width="300"/></td>
46 </tr>
47</table>
48
49# Midi Setup
50
51<table>
52 <tr>
53 <th>Windows</th>
54 <th>Mac</th>
55 </tr>
56 <tr>
57 <td valign="top">
58 <ul>
59 <li>Midi Mixer</li>
60 <ul>
61 <li><a href="https://github.com/jpwilliams/midi-mixer-releases/releases">Download the latest version of Midi Mixer</a></li>
62 <li>Run the exe to install the application.</li><li>Launch the MIDI Mixer application.</li>
63 <li>Navigate to the "Profiles" tab and select the "Ungodly Design Launch Pad" preset.</li>
64 <li>Navigate to the "Groups" tab and select the audio source you would like to control.
65 <br><img src="https://imgur.com/MmdDcTm.pngl" alt="Midi Mixer" width="800"></li>
66 <li>Optionally, Navigate to the "Settings" tab and enable/disable "Logarithmic volume curve".</li>
67 </ul>
68 </ul>
69 </td>
70 <td valign="top">
71 <ul>
72 <li><a href="https://rsjaffe.github.io/MIDI2LR/">Midi2Lightroom</a></li>
73 <li><a href="https://www.orderedbytes.com/controllermate/">ControllerMate</a></li>
74 </ul>
75 </td>
76 </tr>
77</table>
78
79# Custom OLED Displays
80
81Layer | Graphic
82:----:|:----:
83home | ![home](https://i.imgur.com/tK3u7ZU.png)
84nav | ![nav](https://i.imgur.com/J0FNZfR.png)
85rgb | ![rgb](https://i.imgur.com/XK6r6KL.png)
86
87* These instructions require compiling your own firmware. [Ensure that your build environenment is setup](https://beta.docs.qmk.fm/tutorial/newbs_getting_started).
88* Use [QMK Logo Editor](https://joric.github.io/qle/) to create your own LCD graphics.
89* Copy the generated output into your keymap ([sample code](https://github.com/qmk/qmk_firmware/blob/master/keyboards/ungodly/launch_pad/keymaps/default/keymap.c))
90 * Note: By default, the LCD is configured as a vertical display with a 180 degree rotation. You may need to change the `OLED_ROTATION` value in the `keymap.c` to achieve your desired effect.
91* Compile the firmware and flash it to your launch pad.
diff --git a/layouts/community/ergodox/bocaj/config.h b/layouts/community/ergodox/bocaj/config.h
deleted file mode 100644
index 621ae784c..000000000
--- a/layouts/community/ergodox/bocaj/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
1#pragma once
2
3#define LEADER_TIMEOUT 250
4#define LEADER_PER_KEY_TIMING
diff --git a/layouts/community/ergodox/bocaj/keymap.c b/layouts/community/ergodox/bocaj/keymap.c
deleted file mode 100644
index ba105a8f1..000000000
--- a/layouts/community/ergodox/bocaj/keymap.c
+++ /dev/null
@@ -1,175 +0,0 @@
1/*
2Copyright 2020 Jacob Jerrell <jacob.jerrell@gmail.com> @JacobJerrell
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#include "bocaj.h"
19
20/*
21 * The `LAYOUT_ergodox_pretty_base` macro is a template to allow the use of
22 * identical modifiers for the default layouts (eg QWERTY, Colemak, Dvorak,
23 * etc), so that there is no need to set them up for each layout, and modify
24 * all of them if I want to change them. This helps to keep consistency and
25 * ease of use. K## is a placeholder to pass through the individual keycodes
26 */
27#define LAYOUT_ergodox_bocaj(...) WRAPPER_ergodox_bocaj(__VA_ARGS__)
28#define LAYOUT_ergodox_bocaj_WIN(...) WRAPPER_ergodox_bocaj_WIN(__VA_ARGS__)
29
30const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
31
32 [_WORKMAN] = LAYOUT_ergodox_bocaj(
33 KC_ESC, ________________NUMBER_LEFT________________, KC_ARRW, KC_MINS, ________________NUMBER_RIGHT_______________, KC_EQUAL,
34 KC_DEL, _________________WORKMAN_L1________________, KC_LPRN, KC_RPRN, _________________WORKMAN_R1________________, KC_BSLS,
35 _______, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT,
36 KC_LSFT, _________________WORKMAN_L3________________, KC_LBRC, KC_RBRC, _________________WORKMAN_R3________________, _______,
37 MO_MOD, KC_PGUP, KC_HOME, KC_UP, KC_LEFT, KC_RIGHT, KC_DOWN, KC_END, KC_PGDN, WORKMAN,
38 KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC,
39 KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN,
40 KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER
41 ),
42
43 [_WWORKMAN] = LAYOUT_ergodox_bocaj_WIN(
44 KC_ESC, ________________NUMBER_LEFT________________, KC_ARRW, KC_MINS, ________________NUMBER_RIGHT_______________, KC_EQUAL,
45 KC_DEL, _________________WORKMAN_L1________________, KC_LPRN, KC_RPRN, _________________WORKMAN_R1________________, KC_BSLS,
46 _______, _________________WORKMAN_L2________________, _________________WORKMAN_R2________________, KC_QUOT,
47 KC_LSFT, _________________WORKMAN_L3________________, KC_LBRC, KC_RBRC, _________________WORKMAN_R3________________, _______,
48 MO_MOD, KC_PGUP, KC_HOME, KC_UP, KC_LEFT, KC_RIGHT, KC_DOWN, KC_END, KC_PGDN, WORKMAN,
49 KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC,
50 KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN,
51 KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER
52 ),
53
54 [_LOWER] = LAYOUT_ergodox_bocaj(
55 KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
56 _______, _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, KC_BSLS, _______,
57 _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_4, KC_5, KC_6, KC_ASTR, _______,
58 _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, KC_PLUS, _______,
59 _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, KC_MINS, _______,
60 KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC,
61 KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN,
62 KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER
63 ),
64
65 [_RAISE] = LAYOUT_ergodox_bocaj(
66 KC_TILD, _________________RAISE_L1__________________, _______, _______, _________________RAISE_R1__________________, _______,
67 KC_F11, _________________RAISE_L2__________________, _______, _______, _________________RAISE_R2__________________, KC_F12,
68 _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
69 _______, _______, KC_MRWD, KC_MPLY, KC_MFFD, _______, _______, _______, ___________________BLANK___________________, _______,
70 ___________________BLANK___________________, ___________________BLANK___________________,
71 KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC,
72 KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN,
73 KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER
74 ),
75
76 [_ADJUST] = LAYOUT_ergodox_pretty(
77 KC_MAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RST,
78 VRSN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST,
79 _______, KC__MUTE, KC__VOLDOWN, KC__VOLUP, _______, KC_MNXT, _______, _______, _______, _______, _______, _______,
80 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
81 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
82 KC_APP,KC_HOME, /* <- LHS/RHS -> */ KC_END,KC_ESC,
83 KC_PGUP, /* <- LHS/RHS -> */ KC_PGDN,
84 KC_SPACE,KC_BSPACE,KC_LEAD, /* <- LHS/RHS -> */ KC_LOCK,KC_TAB,KC_ENTER
85 ),
86
87 // Wrapping Mouse-Wheel Keys with `X_T()` style functions seems
88 // to break the mouse button. So we can't use the wrapper here.
89 [_MOD] = LAYOUT_ergodox_pretty(
90 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
91 _______, _______, _______, KC_WH_D, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______,
92 _______, _______, KC_WH_L, KC_WH_U, KC_WH_R, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______,
93 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
94 _______, _______, _______, _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______,
95 _______,_______, /* <- LHS/RHS -> */ _______,_______,
96 _______, /* <- LHS/RHS -> */ _______,
97 KC_BTN1,KC_BTN2,_______, /* <- LHS/RHS -> */ _______,KC_BTN3,KC_BTN4
98 )
99
100};
101// clang-format on
102
103bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
104 return true;
105}
106
107void matrix_init_keymap(void) {};
108
109// Runs whenever there is a layer state change.
110layer_state_t layer_state_set_keymap(layer_state_t state) {
111 ergodox_board_led_off();
112 ergodox_right_led_1_off();
113 ergodox_right_led_2_off();
114 ergodox_right_led_3_off();
115
116 uint8_t layer = get_highest_layer(state);
117 switch (layer) {
118 case _LOWER:
119 ergodox_right_led_3_on();
120 break;
121 case _MOD:
122 ergodox_right_led_2_on();
123 break;
124 case _RAISE:
125 ergodox_right_led_1_on();
126 break;
127 case _ADJUST:
128 ergodox_right_led_1_on();
129 ergodox_right_led_2_on();
130 break;
131 default:
132 break;
133 }
134
135 ergodox_right_led_1_set(25);
136 ergodox_right_led_2_set(25);
137 ergodox_right_led_3_set(25);
138
139 return state;
140};
141
142void matrix_scan_keymap(void) {
143 uint8_t modifiers = get_mods();
144 uint8_t led_usb_state = host_keyboard_leds();
145 uint8_t one_shot = get_oneshot_mods();
146 uint8_t layer_is_workman = layer_state_is(_WORKMAN);
147
148 if ((modifiers) && (layer_is_workman)) {
149 if (modifiers & MODS_SHIFT_MASK || led_usb_state & (1<<USB_LED_CAPS_LOCK) || one_shot & MODS_SHIFT_MASK) {
150 ergodox_right_led_1_on();
151 ergodox_right_led_1_set( 25 );
152 } else {
153 ergodox_right_led_1_off();
154 }
155 if ((modifiers & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) && (modifiers & MODS_GUI_MASK || one_shot & MODS_GUI_MASK)) {
156 ergodox_right_led_2_on();
157 ergodox_right_led_2_set( 50 );
158 } else if ((modifiers & MODS_CTRL_MASK || one_shot & MODS_CTRL_MASK) || (modifiers & MODS_GUI_MASK || one_shot & MODS_GUI_MASK)) {
159 ergodox_right_led_2_on();
160 ergodox_right_led_2_set( 10 );
161 } else {
162 ergodox_right_led_2_off();
163 }
164 if (modifiers & MODS_ALT_MASK || one_shot & MODS_ALT_MASK) {
165 ergodox_right_led_3_on();
166 ergodox_right_led_3_set( 10 );
167 } else {
168 ergodox_right_led_3_off();
169 }
170 } else if (!(modifiers) && (layer_is_workman)) {
171 ergodox_right_led_1_off();
172 ergodox_right_led_2_off();
173 ergodox_right_led_3_off();
174 }
175};
diff --git a/layouts/community/ergodox/bocaj/readme.md b/layouts/community/ergodox/bocaj/readme.md
deleted file mode 100644
index f8bce4e57..000000000
--- a/layouts/community/ergodox/bocaj/readme.md
+++ /dev/null
@@ -1,28 +0,0 @@
1# Overview
2
3This is my personal Ergodox EZ configuration, and my daily driver.
4
5Most of the code resides in my userspace and is heavily based upon [Drashna's work](https://github.com/qmk/qmk_firmware/tree/master/users/drashna)... although considerably slimmed down.
6
7## How to build
8
9Put simply:
10`make ergodox_ez:bocaj`
11
12On that note, I use a separate workspace when making changes to my layouts or userspace. In that repo, there is a tool that does this for me. See [JacobJerrell/qmk_layouts/tools/](https://github.com/JacobJerrell/qmk_layouts/tree/master/tools)
13
14## Layers
15
16* WORKMAN: No one uses this board but me and I've never had a reason to switch to QWERTY
17* LOWER:
18 * Left: Grave and navigation arrows
19 * Right: Numpad
20* RAISE:
21 * Symbols across the top, F-Keys on the second row
22* ADJUST
23 * Audio control, make/reset/version macros
24* MOD: mouse navigation
25
26## Ergodox Specifics
27
28I don't have the underglow or backlit versions so the 3 LEDs on the right board are used for layer indication if not on the base layer. If you're on the base layer, they're used for mod-key indicators.
diff --git a/layouts/community/ergodox/bocaj/rules.mk b/layouts/community/ergodox/bocaj/rules.mk
deleted file mode 100644
index f7d387031..000000000
--- a/layouts/community/ergodox/bocaj/rules.mk
+++ /dev/null
@@ -1,14 +0,0 @@
1BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
2TAP_DANCE_ENABLE = no
3COMMAND_ENABLE = no # Commands for debug and configuration
4CONSOLE_ENABLE = yes
5SPACE_CADET_ENABLE = no
6KEY_LOCK_ENABLE = yes
7MOUSEKEY_ENABLE = yes
8EXTRAKEY_ENABLE = yes
9LEADER_ENABLE = yes
10
11UNICODE_ENABLE = no
12UNICODEMAP_ENABLE = no
13RGB_MATRIX_ENABLE = no
14RGBLIGHT_ENABLE = no
diff --git a/layouts/community/ergodox/jjerrell/config.h b/layouts/community/ergodox/jjerrell/config.h
new file mode 100644
index 000000000..8223108d1
--- /dev/null
+++ b/layouts/community/ergodox/jjerrell/config.h
@@ -0,0 +1,21 @@
1// Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
2//
3// This file is part of qmk_firmware.
4//
5// qmk_firmware is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// qmk_firmware is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
17
18#ifdef KEYBOARD_ergodox_ez
19#undef PRODUCT
20#define PRODUCT ErgoDox EZ - Modified by <@jjerrell>
21#endif
diff --git a/layouts/community/ergodox/jjerrell/keymap.c b/layouts/community/ergodox/jjerrell/keymap.c
new file mode 100644
index 000000000..110a8aba6
--- /dev/null
+++ b/layouts/community/ergodox/jjerrell/keymap.c
@@ -0,0 +1,129 @@
1/**
2 * Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
3 *
4 * This file is part of qmk_firmware.
5 *
6 * qmk_firmware is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * qmk_firmware is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#include "jjerrell.h"
21
22const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
23 // clang-format off
24 [_WORKMAN] = LAYOUT_ergodox_mods(
25 __________________WORKMN_L1__________________, __________________WORKMN_R1__________________,
26 __________________WORKMN_L2__________________, __________________WORKMN_R2__________________,
27 __________________WORKMN_L3__________________, __________________WORKMN_R3__________________,
28 XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX
29 ),
30 /* Lower - Nav/Select/Nums */
31 [_LOWER] = LAYOUT_ergodox_mods(
32 __________________LOWER_L1___________________, __________________LOWER_R1___________________,
33 __________________LOWER_L2___________________, __________________LOWER_R2___________________,
34 __________________LOWER_L3___________________, __________________LOWER_R3___________________,
35 XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_0, KC_DOT, KC_COMM, KC_PLUS
36 ),
37 /* Raise - Symbols */
38 [_RAISE] = LAYOUT_ergodox_common(
39 __________________RAISE_L1___________________, __________________RAISE_R1___________________,
40 __________________RAISE_L2___________________, __________________RAISE_R2___________________,
41 __________________RAISE_L3___________________, __________________RAISE_R3___________________,
42 XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX
43 ),
44 /* Adjust (Lower + Raise) */
45 [_ADJUST] = LAYOUT_ergodox_common(
46 __________________ADJUST_L1__________________, __________________ADJUST_R1__________________,
47 __________________ADJUST_L2__________________, __________________ADJUST_R2__________________,
48 __________________ADJUST_L3__________________, __________________ADJUST_R3__________________,
49 XXXXXXX, XXXXXXX, XXXXXXX, KC_LSFT, KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX
50 ),
51 [_SPECIAL] = LAYOUT_ergodox_common(
52 XXXXXXX, XXXXXXX, KC_WH_D, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
53 XXXXXXX, KC_WH_L, KC_WH_U, KC_WH_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
54 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
55 XXXXXXX, XXXXXXX, XXXXXXX, KC_LALT, KC_RALT, XXXXXXX, XXXXXXX, XXXXXXX
56 )
57// clang-format on
58};
59
60#ifdef KEYBOARD_ergodox_ez
61// Runs whenever there is a layer state change.
62layer_state_t layer_state_set_keymap(layer_state_t state) {
63 ergodox_board_led_off();
64 ergodox_right_led_1_off();
65 ergodox_right_led_2_off();
66 ergodox_right_led_3_off();
67
68 uint8_t layer = get_highest_layer(state);
69 switch (layer) {
70 case _LOWER:
71 ergodox_right_led_3_on();
72 break;
73 case _RAISE:
74 ergodox_right_led_1_on();
75 break;
76 case _ADJUST:
77 ergodox_right_led_1_on();
78 ergodox_right_led_2_on();
79 ergodox_right_led_3_on();
80 break;
81 case _SPECIAL:
82 ergodox_right_led_2_on();
83 break;
84 default:
85 break;
86 }
87
88 ergodox_right_led_1_set(25);
89 ergodox_right_led_2_set(25);
90 ergodox_right_led_3_set(25);
91
92 return state;
93};
94
95void matrix_scan_keymap(void) {
96 uint8_t modifiers = get_mods();
97 uint8_t led_usb_state = host_keyboard_leds();
98 uint8_t one_shot = get_oneshot_mods();
99 uint8_t layer_is_workman = layer_state_is(_WORKMAN);
100
101 if ((modifiers) && (layer_is_workman)) {
102 if (modifiers & MOD_MASK_SHIFT || led_usb_state & (1<<USB_LED_CAPS_LOCK) || one_shot & MOD_MASK_SHIFT) {
103 ergodox_right_led_1_on();
104 ergodox_right_led_1_set( 25 );
105 } else {
106 ergodox_right_led_1_off();
107 }
108 if ((modifiers & MOD_MASK_CTRL || one_shot & MOD_MASK_CTRL) && (modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI)) {
109 ergodox_right_led_2_on();
110 ergodox_right_led_2_set( 50 );
111 } else if ((modifiers & MOD_MASK_CTRL || one_shot & MOD_MASK_CTRL) || (modifiers & MOD_MASK_GUI || one_shot & MOD_MASK_GUI)) {
112 ergodox_right_led_2_on();
113 ergodox_right_led_2_set( 10 );
114 } else {
115 ergodox_right_led_2_off();
116 }
117 if (modifiers & MOD_MASK_ALT || one_shot & MOD_MASK_ALT) {
118 ergodox_right_led_3_on();
119 ergodox_right_led_3_set( 10 );
120 } else {
121 ergodox_right_led_3_off();
122 }
123 } else if (layer_is_workman) {
124 ergodox_right_led_1_off();
125 ergodox_right_led_2_off();
126 ergodox_right_led_3_off();
127 }
128};
129#endif
diff --git a/layouts/community/ergodox/jjerrell/readme.md b/layouts/community/ergodox/jjerrell/readme.md
new file mode 100644
index 000000000..6b89134c2
--- /dev/null
+++ b/layouts/community/ergodox/jjerrell/readme.md
@@ -0,0 +1,5 @@
1# Jacob Jerrell's Ergodox Layout
2
3This is my original QMK keyboard. There isn't much to see here aside from some control over the 3 ergodox_right LEDs for layer & modifier indication.
4
5The bulk of the functionality is implemented in [my userspace](../../../../users/jjerrell) so it can be shared among my other keyboards.
diff --git a/layouts/community/ergodox/jjerrell/rules.mk b/layouts/community/ergodox/jjerrell/rules.mk
new file mode 100644
index 000000000..4288a264c
--- /dev/null
+++ b/layouts/community/ergodox/jjerrell/rules.mk
@@ -0,0 +1,14 @@
1BOOTMAGIC_ENABLE = lite
2TAP_DANCE_ENABLE = no
3COMMAND_ENABLE = no
4CONSOLE_ENABLE = yes
5SPACE_CADET_ENABLE = no
6KEY_LOCK_ENABLE = no
7MOUSEKEY_ENABLE = yes
8EXTRAKEY_ENABLE = yes
9LEADER_ENABLE = yes
10
11UNICODE_ENABLE = no
12UNICODEMAP_ENABLE = no
13RGB_MATRIX_ENABLE = no
14RGBLIGHT_ENABLE = no
diff --git a/layouts/community/ortho_4x12/bocaj/config.h b/layouts/community/ortho_4x12/bocaj/config.h
deleted file mode 100644
index c9d297f92..000000000
--- a/layouts/community/ortho_4x12/bocaj/config.h
+++ /dev/null
@@ -1,106 +0,0 @@
1#pragma once
2
3#define LEADER_TIMEOUT 250
4#define LEADER_PER_KEY_TIMING
5
6#if defined(RGBLIGHT_ENABLE) && !defined(RGBLED_NUM)
7# if defined(KEYBOARD_planck_light)
8# define RGB_DI_PIN A0
9# define RGBLED_NUM 13 // Number of LEDs
10# endif
11# define RGBLIGHT_HUE_STEP 12
12# define RGBLIGHT_SAT_STEP 12
13# define RGBLIGHT_VAL_STEP 12
14# define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
15# define RGBLIGHT_EFFECT_SNAKE_LENGTH 2
16# ifdef RGB_MATRIX_ENABLE
17# define RGBLIGHT_DISABLE_KEYCODES
18# endif
19#endif // RGBLIGHT_ENABLE
20
21#ifdef RGB_MATRIX_ENABLE
22# define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
23// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
24# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
25// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
26// #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
27# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
28# undef RGB_MATRIX_LED_PROCESS_LIMIT
29# undef RGB_MATRIX_LED_FLUSH_LIMIT
30#endif
31
32#if defined(KEYBOARD_planck_ez)
33# undef PRODUCT
34# define PRODUCT Bocaj Hacked Planck EZ
35#endif
36
37#define EEPROM_I2C_RM24C512C
38
39#define ENCODER_DIRECTION_FLIP
40/*
41 * MIDI options
42 */
43
44/* enable basic MIDI features:
45 - MIDI notes can be sent when in Music mode is on
46*/
47
48// #define MIDI_BASIC
49
50/* enable advanced MIDI features:
51 - MIDI notes can be added to the keymap
52 - Octave shift and transpose
53 - Virtual sustain, portamento, and modulation wheel
54 - etc.
55*/
56//#define MIDI_ADVANCED
57
58/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
59//#define MIDI_TONE_KEYCODE_OCTAVES 2
60
61#define FB_ERM_LRA 1 /* For ERM:0 or LRA:1*/
62#define FB_BRAKEFACTOR 6 /* For 1x:0, 2x:1, 3x:2, 4x:3, 6x:4, 8x:5, 16x:6, Disable Braking:7 */
63#define FB_LOOPGAIN 1 /* For Low:0, Medium:1, High:2, Very High:3 */
64
65/* default 3V ERM vibration motor voltage and library*/
66#if FB_ERM_LRA == 0
67# define RATED_VOLTAGE 3
68# define V_RMS 2.3
69# define V_PEAK 3.30
70/* Library Selection */
71# define LIB_SELECTION 4 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */
72
73/* default 2V LRA voltage and library */
74#elif FB_ERM_LRA == 1
75# define RATED_VOLTAGE 2
76# define V_RMS 2.0
77# define V_PEAK 2.85
78# define F_LRA 200
79/* Library Selection */
80# define LIB_SELECTION 6 /* For Empty:0' TS2200 library A to D:1-5, LRA Library: 6 */
81
82#endif
83
84/* Control 1 register settings */
85#define DRIVE_TIME 25
86#define AC_COUPLE 0
87#define STARTUP_BOOST 1
88
89/* Control 2 Settings */
90#define BIDIR_INPUT 1
91#define BRAKE_STAB 1 /* Loopgain is reduced when braking is almost complete to improve stability */
92#define SAMPLE_TIME 3
93#define BLANKING_TIME 1
94#define IDISS_TIME 1
95
96/* Control 3 settings */
97#define NG_THRESH 2
98#define ERM_OPEN_LOOP 1
99#define SUPPLY_COMP_DIS 0
100#define DATA_FORMAT_RTO 0
101#define LRA_DRIVE_MODE 0
102#define N_PWM_ANALOG 0
103#define LRA_OPEN_LOOP 0
104/* Control 4 settings */
105#define ZC_DET_TIME 0
106#define AUTO_CAL_TIME 3
diff --git a/layouts/community/ortho_4x12/bocaj/keymap.c b/layouts/community/ortho_4x12/bocaj/keymap.c
deleted file mode 100644
index 6adbb6d61..000000000
--- a/layouts/community/ortho_4x12/bocaj/keymap.c
+++ /dev/null
@@ -1,287 +0,0 @@
1/*
2Copyright 2020 Jacob Jerrell <jacob.jerrell@gmail.com> @JacobJerrell
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#include "bocaj.h"
19
20#ifdef BACKLIGHT_ENABLE
21enum planck_keycodes {
22 BACKLIT = NEW_SAFE_RANGE,
23 TH_LVL,
24};
25
26#else
27# define BACKLIT OSM(MOD_LSFT)
28enum planck_keycodes {
29 TH_LVL = NEW_SAFE_RANGE,
30};
31#endif
32
33/*
34 * Tap/Hold Wrapper
35 * ,-----------------------------------------------------------------------------------.
36 * | | | | | | | | | | | | |
37 * |------+------+------+------+------+------+------+------+------+------+------+------|
38 * | | |Shift | Cmd | Alt | | | Alt | Cmd |Shift | | |
39 * |------+------+------+------+------+------+------+------+------+------+------+------|
40 * | | Ctrl | | | | | | | | | Ctrl | |
41 * |------+------+------+------+------+------+------+------+------+------+------+------|
42 * | | | | |Lower | |Raise | | | | |
43 * `-----------------------------------------------------------------------------------'
44 */
45#define LAYOUT_ortho_4x12_bocaj(...) WRAPPER_planck_bocaj(__VA_ARGS__)
46
47/*
48 * Base Alphanumeric Wrapper + Tap/Hold Wrapper
49 * ,-----------------------------------------------------------------------------------.
50 * | Esc | | | | | | | | | | | - |
51 * |------+------+------+------+------+------+------+------+------+------+------+------|
52 * | Tab | | | | | HYPR | MEH | | | | | ' |
53 * |------+------+------+------+------+------+------+------+------+------+------+------|
54 * | Shift| | | | | | | | | | | TTMOD|
55 * |------+------+------+------+------+------+------+------+------+------+------+------|
56 * | MOMOD| Lead | Up | Left |BkSpc | Space |Enter |Right | Down | XXX | XXX |
57 * `-----------------------------------------------------------------------------------'
58 */
59#define LAYOUT_ortho_4x12_bocaj_base(...) WRAPPER_planck_bocaj_base(__VA_ARGS__)
60#define LAYOUT_ortho_4x12_bocaj_base_WIN(...) WRAPPER_planck_bocaj_base_WIN(__VA_ARGS__)
61
62const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
63
64 [_WORKMAN] = LAYOUT_ortho_4x12_bocaj_base(
65 _________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
66 _________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
67 _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
68 ),
69 [_WWORKMAN] = LAYOUT_ortho_4x12_bocaj_base_WIN(
70 _________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
71 _________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
72 _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
73 ),
74
75 [_QWERTY] = LAYOUT_ortho_4x12_bocaj_base(
76 _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
77 _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
78 _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
79 ),
80 [_WQWERTY] = LAYOUT_ortho_4x12_bocaj_base_WIN(
81 _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
82 _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
83 _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
84 ),
85
86 [_LOWER] = LAYOUT_ortho_4x12_bocaj(
87 ___________________LOWER_L1_EXT____________________, ___________________LOWER_R1_EXT____________________,
88 ___________________LOWER_L2_EXT____________________, ___________________LOWER_R2_EXT____________________,
89 ___________________LOWER_L3_EXT____________________, ___________________LOWER_R3_EXT____________________,
90 _______, _______, _______, _______, _______, _______, _______, KC_0, KC_DOT, KC_COMM, _______, _______
91 ),
92
93 [_RAISE] = LAYOUT_ortho_4x12_bocaj(
94 KC_TILD, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_EQUAL,
95 KC_F11, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_F12,
96 _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
97 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
98 ),
99
100 [_ADJUST] = WRAPPER_ortho_4x12(
101 KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RST,
102 VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EEP_RST,
103 TH_LVL, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, RGB_IDL,
104 HPT_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
105 )
106
107};
108// clang-format on
109
110bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
111 switch (keycode) {
112#ifdef BACKLIGHT_ENABLE
113 case BACKLIT:
114 if (record->event.pressed) {
115 register_code(KC_RSFT);
116# ifdef BACKLIGHT_ENABLE
117 backlight_step();
118# endif
119 } else {
120 unregister_code(KC_RSFT);
121 }
122 break;
123#endif
124#ifdef KEYBOARD_planck_ez
125 case TH_LVL:
126 if (record->event.pressed) {
127 keyboard_config.led_level++;
128 if (keyboard_config.led_level > 4) {
129 keyboard_config.led_level = 0;
130 }
131 planck_ez_right_led_level((uint8_t)keyboard_config.led_level * 255 / 4);
132 planck_ez_left_led_level((uint8_t)keyboard_config.led_level * 255 / 4);
133 eeconfig_update_kb(keyboard_config.raw);
134 layer_state_set_kb(layer_state);
135 }
136 break;
137#endif
138 }
139 return true;
140}
141
142bool music_mask_user(uint16_t keycode) {
143 switch (keycode) {
144 default:
145 return true;
146 }
147}
148
149#ifdef RGB_MATRIX_ENABLE
150
151// clang-format off
152void suspend_power_down_keymap(void) {
153 rgb_matrix_set_suspend_state(true);
154}
155
156void suspend_wakeup_init_keymap(void) {
157 rgb_matrix_set_suspend_state(false);
158}
159// clang-format on
160
161void rgb_matrix_indicators_user(void) {
162 uint8_t this_mod = get_mods();
163 uint8_t this_led = host_keyboard_leds();
164 uint8_t this_osm = get_oneshot_mods();
165 bool is_ez;
166# ifdef KEYBOARD_planck_ez
167 is_ez = true;
168# endif
169
170 if (g_suspend_state || !rgb_matrix_config.enable) return;
171
172# if defined(RGBLIGHT_ENABLE)
173 if (!userspace_config.rgb_layer_change)
174# else
175 if (userspace_config.rgb_layer_change)
176# endif
177 {
178 switch (get_highest_layer(layer_state)) {
179 case _MOD:
180 rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
181 break;
182 case _RAISE:
183 rgb_matrix_layer_helper(HSV_BLUE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
184 break;
185 case _LOWER:
186 rgb_matrix_layer_helper(HSV_GREEN, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
187 break;
188 case _ADJUST:
189 rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
190 break;
191 default: {
192 bool mods_enabled = false;
193 switch (get_highest_layer(default_layer_state)) {
194 case _QWERTY:
195 rgb_matrix_layer_helper(HSV_CYAN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
196 break;
197 case _WQWERTY:
198 rgb_matrix_layer_helper(HSV_BLUE, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
199 break;
200 case _WORKMAN:
201 rgb_matrix_layer_helper(HSV_SPRINGGREEN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
202 break;
203 case _WWORKMAN:
204 rgb_matrix_layer_helper(HSV_GREEN, mods_enabled, rgb_matrix_config.speed, LED_FLAG_MODIFIER);
205 break;
206 }
207 break;
208 }
209 }
210 }
211
212 switch (get_highest_layer(default_layer_state)) {
213 case _QWERTY:
214 rgb_matrix_set_color(is_ez ? 41 : 42, 0x00, 0xFF, 0xFF);
215 break;
216 case _WORKMAN:
217 rgb_matrix_set_color(is_ez ? 41 : 42, 0xD9, 0xA5, 0x21);
218 break;
219 }
220
221 if ((this_mod | this_osm) & MODS_SHIFT_MASK || this_led & (1 << USB_LED_CAPS_LOCK)) {
222 rgb_matrix_set_color_row(0, 0x00, 0xFF, 0x00);
223 }
224 if ((this_mod | this_osm) & MODS_CTRL_MASK && (this_mod | this_osm) & MODS_GUI_MASK) {
225 rgb_matrix_set_color_row(1, 0xFF, 0xD9, 0xFF);
226 } else if ((this_mod | this_osm) & MODS_CTRL_MASK) {
227 rgb_matrix_set_color_row(1, 0xFF, 0x00, 0x00);
228 } else if ((this_mod | this_osm) & MODS_GUI_MASK) {
229 rgb_matrix_set_color_row(1, 0xFF, 0xD9, 0x00);
230 }
231 if ((this_mod | this_osm) & MODS_ALT_MASK) {
232 rgb_matrix_set_color_row(2, 0x00, 0x00, 0xFF);
233 }
234}
235#endif // RGB_MATRIX_INIT
236
237void matrix_init_keymap(void) {}
238
239#ifdef ENCODER_ENABLE
240bool encoder_update_user(uint8_t index, bool clockwise) {
241 switch (get_highest_layer(layer_state)) {
242 case _RAISE:
243 clockwise ? tap_code(KC_VOLD) : tap_code(KC_VOLU);
244 break;
245 case _LOWER:
246# ifdef RGB_MATRIX_ENABLE
247 clockwise ? rgb_matrix_step() : rgb_matrix_step_reverse();
248# else
249 clockwise ? tap_code(KC_PGDN) : tap_code(KC_PGUP);
250# endif
251 break;
252 case _ADJUST:
253# ifdef AUDIO_CLICKY
254 clockwise ? clicky_freq_up() : clicky_freq_down();
255# endif
256 break;
257 default:
258 clockwise ? tap_code(KC_DOWN) : tap_code(KC_UP);
259 }
260# ifdef AUDIO_CLICKY
261 clicky_play();
262# endif
263 return true;
264}
265#endif // ENCODER_ENABLE
266
267#ifdef KEYBOARD_planck_ez
268layer_state_t layer_state_set_keymap(layer_state_t state) {
269 planck_ez_left_led_off();
270 planck_ez_right_led_off();
271 switch (get_highest_layer(state)) {
272 case _LOWER:
273 planck_ez_left_led_on();
274 break;
275 case _RAISE:
276 planck_ez_right_led_on();
277 break;
278 case _ADJUST:
279 planck_ez_right_led_on();
280 planck_ez_left_led_on();
281 break;
282 default:
283 break;
284 }
285 return state;
286}
287#endif
diff --git a/layouts/community/ortho_4x12/bocaj/readme.md b/layouts/community/ortho_4x12/bocaj/readme.md
deleted file mode 100644
index a3716b8dc..000000000
--- a/layouts/community/ortho_4x12/bocaj/readme.md
+++ /dev/null
@@ -1,23 +0,0 @@
1# Overview
2
3This is my Planck EZ layout, heavily based upon [my ergodox layout](../../ergodox/bocaj/).
4
5I got this keyboard for two reasons:
6
71. QMK spoiled me and the Ergodox isn't incredibly portable (ok 3 reasons)
82. This can sit ontop of my janky Macbook Pro keyboard (disabled with Karabiner if the planck is connected) when I want to work from the couch.
9
10## How to Build
11
12Put simply:
13`make planck/ez:bocaj`
14
15On that note, I use a separate workspace when making changes to my layouts or userspace. In that repo, there is a tool that does this for me. See [JacobJerrell/qmk_layouts/tools/](https://github.com/JacobJerrell/qmk_layouts/tree/master/tools) until I get documentation finished (Write code first, define requirements second... right?).
16
17## Layers
18
19* WORKMAN/QWERTY: Default is workman, can be switched via the ADJUST layer. Idk why you would though.
20* LOWER: Nums across the top, switches enter key to tab and tab key to delete. Symbols in the middle, remenascent of the ergodox
21* RAISE: Symbols across the top, F-Keys on the 2nd row. Switches backspace to delete
22* ADJUST: Computer Audio controls, RGB controls, Sound controls, macros, etc.
23* MOD: Mouse controls under the left hand. Numpad under the right hand \ No newline at end of file
diff --git a/layouts/community/ortho_4x12/bocaj/rules.mk b/layouts/community/ortho_4x12/bocaj/rules.mk
deleted file mode 100644
index 58ff4d724..000000000
--- a/layouts/community/ortho_4x12/bocaj/rules.mk
+++ /dev/null
@@ -1,43 +0,0 @@
1BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
2MOUSEKEY_ENABLE = no # Mouse keys(+4700)
3EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
4TAP_DANCE_ENABLE = no
5SPACE_CADET_ENABLE = no
6NKRO_ENABLE = yes
7
8ifneq ($(strip $(KEYBOARD)), planck/rev6)
9 CONSOLE_ENABLE = no
10 COMMAND_ENABLE = no
11 ifeq ($(strip $(LAYOUT_HAS_RGB)), yes)
12 RGBLIGHT_ENABLE = yes
13 INDICATOR_LIGHTS = yes
14 RGBLIGHT_TWINKLE = yes
15 RGBLIGHT_STARTUP_ANIMATION = yes
16 endif
17else
18 CONSOLE_ENABLE = yes
19 COMMAND_ENABLE = yes
20 RGBLIGHT_ENABLE = yes
21 RGBLIGHT_STARTUP_ANIMATION = yes
22 RGB_MATRIX_ENABLE = no
23 AUDIO_ENABLE = yes
24 EEPROM_DRIVER = i2c
25endif
26ifeq ($(strip $(KEYBOARD)), planck/light)
27 RGB_MATRIX_ENABLE = yes
28 RGBLIGHT_ENABLE = yes
29 RGBLIGHT_STARTUP_ANIMATION = yes
30 AUDIO_ENABLE = yes
31 # HAPTIC_ENABLE += SOLENOID
32endif
33ifeq ($(strip $(KEYBOARD)), planck/ez)
34 RGBLIGHT_ENABLE = no
35 ENCODER_ENABLE = yes
36 RGB_MATRIX_ENABLE = IS31FL3737
37 INDICATOR_LIGHTS = yes
38 RGBLIGHT_TWINKLE = yes
39 RGBLIGHT_STARTUP_ANIMATION = yes
40 CONSOLE_ENABLE = yes
41 COMMAND_ENABLE = yes
42 AUDIO_ENABLE = yes
43endif
diff --git a/layouts/community/ortho_4x12/jjerrell/config.h b/layouts/community/ortho_4x12/jjerrell/config.h
new file mode 100644
index 000000000..aee885b8d
--- /dev/null
+++ b/layouts/community/ortho_4x12/jjerrell/config.h
@@ -0,0 +1,57 @@
1// Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
2//
3// This file is part of qmk_firmware.
4//
5// qmk_firmware is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// qmk_firmware is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
17
18#pragma once
19
20// Allows time for repositioning hands due to awkward key placement
21#define LEADER_NO_TIMEOUT
22
23#ifdef AUDIO_ENABLE
24 #define STARTUP_SONG SONG(PLANCK_SOUND)
25 // #define STARTUP_SONG SONG(NO_SOUND)
26
27 #define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \
28 SONG(COLEMAK_SOUND), \
29 SONG(DVORAK_SOUND) \
30 }
31#endif
32
33#ifdef KEYBOARD_planck_ez_glow
34#undef PRODUCT
35#define PRODUCT Planck EZ Glow - Modified by <@jjerrell>
36#endif
37
38/*
39 * MIDI options
40 */
41
42/* enable basic MIDI features:
43 - MIDI notes can be sent when in Music mode is on
44*/
45
46#define MIDI_BASIC
47
48/* enable advanced MIDI features:
49 - MIDI notes can be added to the keymap
50 - Octave shift and transpose
51 - Virtual sustain, portamento, and modulation wheel
52 - etc.
53*/
54//#define MIDI_ADVANCED
55
56// Most tactile encoders have detents every 4 stages
57#define ENCODER_RESOLUTION 4
diff --git a/layouts/community/ortho_4x12/jjerrell/keymap.c b/layouts/community/ortho_4x12/jjerrell/keymap.c
new file mode 100644
index 000000000..d873907e9
--- /dev/null
+++ b/layouts/community/ortho_4x12/jjerrell/keymap.c
@@ -0,0 +1,227 @@
1/* Copyright 2015-2017 Jack Humbert
2 * Copyright 2021 Jacob Jerrell <@jjerrell>
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include "jjerrell.h"
19
20enum planck_layers {
21 _GAME_LOWER = LAYER_SAFE_RANGE,
22 // _GAME_RAISE,
23};
24
25#define LAYOUT_planck_plain(...) WRAPPER_ortho_4x12(__VA_ARGS__)
26
27// clang-format off
28const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
29 [_WORKMAN] = LAYOUT_planck_base(
30 __________________WORKMN_L1__________________, __________________WORKMN_R1__________________,
31 __________________WORKMN_L2__________________, __________________WORKMN_R2__________________,
32 __________________WORKMN_L3__________________, __________________WORKMN_R3__________________
33 ),
34 /* Lower - Nav/Select/Nums
35 * ,-----------------------------------------------------------------------------------.
36 * | PGUP | BSPC | UP | DEL | PGDN | | | | 7 | 8 | 9 | * |
37 * |------+------+------+------+------+------+------+------+------+------+------+------|
38 * | HOME | LEFT | DOWN | RGHT | END | | | | 4 | 5 | 6 | / |
39 * |------+------+------+------+------+------+------+------+------+------+------+------|
40 * | ESC | TAB | | ENTR | | | | | 1 | 2 | 3 | - |
41 * |------+------+------+------+------+------+------+------+------+------+------+------|
42 * | | | | | held | SPACE | ENTR | 0 | . | , | + |
43 * `-----------------------------------------------------------------------------------'
44 */
45 [_LOWER] = LAYOUT_planck_mods(
46 __________________LOWER_L1___________________, XXXXXXX, XXXXXXX, __________________LOWER_R1___________________,
47 __________________LOWER_L2___________________, XXXXXXX, XXXXXXX, __________________LOWER_R2___________________,
48 __________________LOWER_L3___________________, XXXXXXX, XXXXXXX, __________________LOWER_R3___________________,
49 _________________________________________PLANCK_LOWER_BOTTOM_ROW_________________________________________
50 ),
51 /* Raise - Symbols
52 * ,-----------------------------------------------------------------------------------.
53 * | % | _ | [ | ] | ^ | | | ! | < | > | = | : |
54 * |------+------+------+------+------+------+------+------+------+------+------+------|
55 * | \ | / | { | } | * | | | ? | ( | ) | - | ; |
56 * |------+------+------+------+------+------+------+------+------+------+------+------|
57 * | # | $ | | | ~ | ` | | | @ | " | ' | + | & |
58 * |------+------+------+------+------+------+------+------+------+------+------+------|
59 * | | LEAD | | | BSPC | SPACE | held | | | | |
60 * `-----------------------------------------------------------------------------------'
61 */
62 [_RAISE] = LAYOUT_planck_common(
63 __________________RAISE_L1___________________, __________________RAISE_R1___________________,
64 __________________RAISE_L2___________________, __________________RAISE_R2___________________,
65 __________________RAISE_L3___________________, __________________RAISE_R3___________________
66 ),
67 /* Adjust (Lower + Raise)
68 * ,-----------------------------------------------------------------------------------.
69 * | Make | Debug|Reset |TermOn|TrmOff| | |MusMod|Mus On|MusOff|MidiOn|MidOff|
70 * |------+------+------+------+------+------+------+------+------+------+------+------|
71 * | Mute | Vol- | Vol+ | Play | Skip | | |Voice-| HUE+ | HUE- | SAT+ | SAT- |
72 * |------+------+------+------+------+------+------+------+------+------+------+------|
73 * | Vrsn | AudOn|AudOff|CGswap|CGnorm| | |Voice+|RGBTog|RGBMod|BRGHT+|BRGHT-|
74 * |------+------+------+------+------+------+------+------+------+------+------+------|
75 * | | | | | held | | held | | | | |
76 * `-----------------------------------------------------------------------------------'
77 */
78 [_ADJUST] = LAYOUT_planck_common(
79 __________________ADJUST_L1__________________, __________________ADJUST_R1__________________,
80 __________________ADJUST_L2__________________, __________________ADJUST_R2__________________,
81 __________________ADJUST_L3__________________, __________________ADJUST_R3__________________
82 ),
83 [_GAME] = LAYOUT_planck_plain(
84 __________________QWERTY_L1__________________, _______, _______, XXXXXXX, KC_9, KC_0, KC_MINS, KC_EQL,
85 __________________QWERTY_L2__________________, XXXXXXX, XXXXXXX, XXXXXXX, KC_5, KC_6, KC_7, KC_8,
86 __________________QWERTY_L3__________________, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_4,
87 KC_LSFT, KC_LGUI, KC_LALT, KC_LCTL, LT(_LOWER, KC_BSPC), KC_SPC, XXXXXXX, LT(_WORKMAN, KC_ENT), MACRO_1, MACRO_2, MACRO_3, MACRO_4
88 ),
89 [_GAME_LOWER] = LAYOUT_planck_plain(
90 _______, _______, _______, _______, _______, _______, _______, _______, C(_______), C(_______), C(_______), C(_______),
91 _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, C(_______), C(_______), C(_______), C(_______),
92 _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, C(_______), C(_______), C(_______), C(_______),
93 MACRO_1, MACRO_2, MACRO_3, MACRO_4, _______, _______, XXXXXXX, _______, MACRO_5, MACRO_6, MACRO_7, MACRO_8
94 )
95
96};
97// clang-format on
98
99bool muse_mode = false;
100uint8_t last_muse_note = 0;
101uint16_t muse_counter = 0;
102uint8_t muse_offset = 70;
103uint16_t muse_tempo = 50;
104
105#ifdef KEYBOARD_planck_ez
106void planck_ez_teeth_set(layer_state_t state) {
107 switch (get_highest_layer(state)) {
108 case _LOWER:
109 planck_ez_left_led_level(40);
110 break;
111 case _RAISE:
112 planck_ez_right_led_level(40);
113 break;
114 case _ADJUST:
115 planck_ez_left_led_level(40);
116 planck_ez_right_led_level(40);
117 break;
118 case _GAME_LOWER:
119 planck_ez_left_led_level(20);
120 break;
121// todo case _GAME_RAISE:
122 // planck_ez_right_led_level(20);
123 // break;
124 case _WORKMAN:
125 if (IS_LAYER_ON(_GAME)) {
126 planck_ez_left_led_level(60);
127 planck_ez_right_led_level(60);
128 break;
129 }
130 default:
131 planck_ez_left_led_off();
132 planck_ez_right_led_off();
133 break;
134 }
135}
136
137layer_state_t layer_state_set_keymap(layer_state_t state) {
138 planck_ez_left_led_off();
139 planck_ez_right_led_off();
140 state = update_tri_layer_state(state, _GAME, _LOWER, _GAME_LOWER);
141 planck_ez_teeth_set(state);
142 return state;
143}
144#endif
145
146bool encoder_update(bool clockwise) {
147 if (muse_mode) {
148 if (IS_LAYER_ON(_RAISE)) {
149 if (clockwise) {
150 muse_offset++;
151 } else {
152 muse_offset--;
153 }
154 } else {
155 if (clockwise) {
156 muse_tempo+=1;
157 } else {
158 muse_tempo-=1;
159 }
160 }
161 } else {
162 if (clockwise) {
163# ifdef MOUSEKEY_ENABLE
164 tap_code(KC_MS_WH_DOWN);
165# else
166 tap_code(KC_PGDN);
167# endif
168 } else {
169# ifdef MOUSEKEY_ENABLE
170 tap_code(KC_MS_WH_UP);
171# else
172 tap_code(KC_PGUP);
173# endif
174 }
175 }
176 return true;
177}
178
179void dip_switch_update_keymap(uint8_t index, bool active) {
180 switch (index) {
181 case 0: {
182 if (active) {
183 layer_on(_ADJUST);
184 } else {
185 layer_off(_ADJUST);
186 }
187 break;
188 }
189 case 1:
190 if (active) {
191 muse_mode = true;
192 } else {
193 muse_mode = false;
194 }
195 }
196}
197
198#ifdef AUDIO_ENABLE
199void matrix_scan_keymap(void) {
200 if (muse_mode) {
201 if (muse_counter == 0) {
202 uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
203 if (muse_note != last_muse_note) {
204 stop_note(compute_freq_for_midi_note(last_muse_note));
205 play_note(compute_freq_for_midi_note(muse_note), 0xF);
206 last_muse_note = muse_note;
207 }
208 }
209 muse_counter = (muse_counter + 1) % muse_tempo;
210 } else {
211 if (muse_counter) {
212 stop_all_notes();
213 muse_counter = 0;
214 }
215 }
216}
217#endif
218
219bool music_mask_keymap(uint16_t keycode) {
220 switch (keycode) {
221 case _RAISE:
222 case _LOWER:
223 return false;
224 default:
225 return true;
226 }
227}
diff --git a/layouts/community/ortho_4x12/jjerrell/readme.md b/layouts/community/ortho_4x12/jjerrell/readme.md
new file mode 100644
index 000000000..ec947ea35
--- /dev/null
+++ b/layouts/community/ortho_4x12/jjerrell/readme.md
@@ -0,0 +1,7 @@
1# JJerrell's Planck EZ Layout
2
3As with my other keymaps, this layout is a close adaptation of the Neo keyboard. Obvious differences are that the alpha keymap is Workman and if you're already used to the secondary layers of the Neo keymap, this might be very uncomfortable for you because of slight variations.
4
5The keymap has been setup to pretty much remove the center columns above the spacebar and limit use of the bottom row by supplying paths to removed functionality that are simpler to process mentally and require less finger acrobatics.
6
7My ownership of this keyboard could not have been easily predicted because my original justification of this hobby was health related. I found QMK through the Ergodox EZ and this keyboard is a result of that discovery -- I could not live without some QMK features. As you can see, my problem has come full circle... now I use this keyboard when I'm not at a desk and it's tiny. This is offset by eliminating use of the center columns, relying on a symbol layer almost exclusively, and relying on a navigation layer instead of getting by with the minimum on the alpha layers which became uncomfortable even with the thumbs doing the heavy lifting and mods being comfortably placed on the home row.
diff --git a/layouts/community/ortho_4x12/jjerrell/rules.mk b/layouts/community/ortho_4x12/jjerrell/rules.mk
new file mode 100644
index 000000000..39f31a266
--- /dev/null
+++ b/layouts/community/ortho_4x12/jjerrell/rules.mk
@@ -0,0 +1,8 @@
1SRC += muse.c
2
3BOOTMAGIC_ENABLE = lite
4MOUSEKEY_ENABLE = no
5EXTRAKEY_ENABLE = yes
6TAP_DANCE_ENABLE = no
7SPACE_CADET_ENABLE = no
8NKRO_ENABLE = no
diff --git a/users/bocaj/.gitignore b/users/bocaj/.gitignore
deleted file mode 100644
index c6df8c013..000000000
--- a/users/bocaj/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
1secrets.c
diff --git a/users/bocaj/.gitlab-ci.yml b/users/bocaj/.gitlab-ci.yml
deleted file mode 100644
index 71e3d26eb..000000000
--- a/users/bocaj/.gitlab-ci.yml
+++ /dev/null
@@ -1,24 +0,0 @@
1stages:
2 - test
3
4QMK Firmware:
5 stage: test
6 variables:
7 GIT_SUBMODULE_STRATEGY: recursive
8 tags:
9 - linux
10 image: qmkfm/base_container
11 before_script:
12 - apt-get update -qy
13 - apt-get install -y build-essential avr-libc binutils-arm-none-eabi binutils-avr dfu-programmer dfu-util gcc gcc-arm-none-eabi git libnewlib-arm-none-eabi gcc-avr python3 unzip wget zip
14 - avr-gcc --version
15 - uname -a
16 script:
17 - make planck/rev6:default planck/rev5:default
18 - make all:bocaj -j2
19 artifacts:
20 name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
21 paths:
22 - ./*.hex
23 - ./*.bin
24 expire_in: 1 month
diff --git a/users/bocaj/bocaj.c b/users/bocaj/bocaj.c
deleted file mode 100644
index 83fe81231..000000000
--- a/users/bocaj/bocaj.c
+++ /dev/null
@@ -1,210 +0,0 @@
1/*
2Copyright 2020 Jacob Jerrell <jacob.jerrell@gmail.com> @JacobJerrell
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#include "bocaj.h"
19
20#ifdef KEYBOARD_planck_ez
21userspace_config_t userspace_config;
22#endif
23
24bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed) {
25 static uint16_t this_timer;
26 if (pressed) {
27 this_timer = timer_read();
28 } else {
29 if (timer_elapsed(this_timer) < TAPPING_TERM) {
30 tap_code(code);
31 } else {
32 register_code(mod_code);
33 tap_code(code);
34 unregister_code(mod_code);
35 }
36 }
37 return false;
38}
39
40bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer) {
41 if (pressed) {
42 this_timer = timer_read();
43 } else {
44 if (timer_elapsed(this_timer) < TAPPING_TERM) {
45 tap_code(code);
46 } else {
47 register_code(mod_code);
48 tap_code(code);
49 unregister_code(mod_code);
50 }
51 }
52 return false;
53}
54
55void bootmagic_lite(void) {
56 matrix_scan();
57#if defined(DEBOUNCING_DELAY) && DEBOUNCING_DELAY > 0
58 wait_ms(DEBOUNCING_DELAY * 2);
59#elif defined(DEBOUNCE) && DEBOUNCE > 0
60 wait_ms(DEBOUNCE * 2);
61#else
62 wait_ms(30);
63#endif
64 matrix_scan();
65 if (matrix_get_row(BOOTMAGIC_LITE_ROW) & (1 << BOOTMAGIC_LITE_COLUMN)) {
66 bootloader_jump();
67 }
68}
69
70__attribute__((weak)) void keyboard_pre_init_keymap(void) {}
71
72void keyboard_pre_init_user(void) {
73#ifdef KEYBOARD_planck_ez
74 userspace_config.raw = eeconfig_read_user();
75#endif
76 keyboard_pre_init_keymap();
77}
78// Add reconfigurable functions here, for keymap customization
79// This allows for a global, userspace functions, and continued
80// customization of the keymap. Use _keymap instead of _user
81// functions in the keymaps
82__attribute__((weak)) void matrix_init_keymap(void) {}
83
84// Call user matrix init, set default RGB colors and then
85// call the keymap's init function
86void matrix_init_user(void) {
87 matrix_init_keymap();
88}
89
90__attribute__((weak)) void keyboard_post_init_keymap(void) {}
91
92void keyboard_post_init_user(void) {
93#if defined(RGB_MATRIX_ENABLE)
94 keyboard_post_init_rgb_matrix();
95#endif
96 keyboard_post_init_keymap();
97}
98
99__attribute__((weak)) void shutdown_keymap(void) {}
100
101void rgb_matrix_update_pwm_buffers(void);
102
103void shutdown_user(void) {
104#ifdef RGB_MATRIX_ENABLE
105 rgb_matrix_set_color_all(0xFF, 0x00, 0x00);
106 rgb_matrix_update_pwm_buffers();
107
108#endif // RGB_MATRIX_ENABLE
109 shutdown_keymap();
110}
111
112__attribute__((weak)) void suspend_power_down_keymap(void) {}
113
114void suspend_power_down_user(void) { suspend_power_down_keymap(); }
115
116__attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
117
118void suspend_wakeup_init_user(void) { suspend_wakeup_init_keymap(); }
119
120__attribute__((weak)) void matrix_scan_secrets(void) {}
121__attribute__((weak)) void matrix_scan_keymap(void) {}
122
123LEADER_EXTERNS();
124
125// No global matrix scan code, so just run keymap's matrix
126// scan function
127void matrix_scan_user(void) {
128 static bool has_ran_yet;
129 if (!has_ran_yet) {
130 has_ran_yet = true;
131 startup_user();
132 }
133
134 LEADER_DICTIONARY() {
135 leading = false;
136 leader_end();
137
138 // Website Refresh / XCode "Run"
139 SEQ_ONE_KEY(KC_R) {
140 SEND_STRING(SS_LGUI("r"));
141 }
142
143 SEQ_TWO_KEYS(KC_B, KC_D) {
144 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " Built at: " QMK_BUILDDATE);
145 }
146
147 #ifndef NO_SECRETS
148 matrix_scan_secrets();
149 #endif // !NO_SECRETS
150 }
151
152#if defined(RGB_MATRIX_ENABLE)
153 matrix_scan_rgb_matrix();
154#endif
155
156 matrix_scan_keymap();
157}
158
159__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
160
161// on layer change, no matter where the change was initiated
162// Then runs keymap's layer change check
163layer_state_t layer_state_set_user(layer_state_t state) {
164 state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
165#if defined(RGBLIGHT_ENABLE)
166 state = layer_state_set_rgb_light(state);
167#endif // RGBLIGHT_ENABLE
168 return layer_state_set_keymap(state);
169}
170
171__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; }
172
173// Runs state check and changes underglow color and animation
174layer_state_t default_layer_state_set_user(layer_state_t state) {
175 state = default_layer_state_set_keymap(state);
176#if 0
177# if defined(RGB_MATRIX_ENABLE)
178 state = default_layer_state_set_rgb(state);
179# endif // RGB_MATRIX_ENABLE
180#endif
181 return state;
182}
183
184__attribute__((weak)) void led_set_keymap(uint8_t usb_led) {}
185
186// Any custom LED code goes here.
187// So far, I only have keyboard specific code,
188// So nothing goes here.
189void led_set_user(uint8_t usb_led) { led_set_keymap(usb_led); }
190
191__attribute__((weak)) void eeconfig_init_keymap(void) {}
192
193void eeconfig_init_user(void) {
194#ifdef KEYBOARD_planck_ez
195 userspace_config.raw = 0;
196# if defined(RGB_MATRIX_ENABLE)
197 userspace_config.rgb_layer_change = true;
198# endif
199 eeconfig_update_user(userspace_config.raw);
200#endif
201 eeconfig_init_keymap();
202 keyboard_init();
203}
204
205bool hasAllBitsInMask(uint8_t value, uint8_t mask) {
206 value &= 0xF;
207 mask &= 0xF;
208
209 return (value & mask) == mask;
210}
diff --git a/users/bocaj/bocaj.h b/users/bocaj/bocaj.h
deleted file mode 100644
index e69be74da..000000000
--- a/users/bocaj/bocaj.h
+++ /dev/null
@@ -1,73 +0,0 @@
1/*
2Copyright 2017 Christopher Courtney <drashna@live.com> @drashna
3Copyright 2020 Jacob Jerrell <jacob.jerrell@gmail.com> @JacobJerrell
4
5This program is free software: you can redistribute it and/or modify
6it under the terms of the GNU General Public License as published by
7the Free Software Foundation, either version 2 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#pragma once
20#include QMK_KEYBOARD_H
21
22#include "version.h"
23#include "eeprom.h"
24#include "process_records.h"
25#include "wrappers.h"
26#if defined(RGB_MATRIX_ENABLE)
27# include "rgb_matrix_stuff.h"
28#endif
29
30/* Define layer names */
31enum userspace_layers {
32 _WORKMAN = 0,
33 _QWERTY,
34 _WWORKMAN,
35 _WQWERTY,
36 _LOWER,
37 _RAISE,
38 _ADJUST,
39 _MOD,
40 LAYER_SAFE_RANGE,
41};
42
43#define MODS_SHIFT_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT))
44#define MODS_CTRL_MASK (MOD_BIT(KC_LCTL)|MOD_BIT(KC_RCTRL))
45#define MODS_ALT_MASK (MOD_BIT(KC_LALT)|MOD_BIT(KC_RALT))
46#define MODS_GUI_MASK (MOD_BIT(KC_LGUI)|MOD_BIT(KC_RGUI))
47
48bool mod_key_press_timer(uint16_t code, uint16_t mod_code, bool pressed);
49bool mod_key_press(uint16_t code, uint16_t mod_code, bool pressed, uint16_t this_timer);
50void matrix_init_keymap(void);
51void shutdown_keymap(void);
52void suspend_power_down_keymap(void);
53void suspend_wakeup_init_keymap(void);
54void matrix_scan_keymap(void);
55layer_state_t layer_state_set_keymap(layer_state_t state);
56layer_state_t default_layer_state_set_keymap(layer_state_t state);
57void led_set_keymap(uint8_t usb_led);
58void eeconfig_init_keymap(void);
59bool hasAllBitsInMask(uint8_t value, uint8_t mask);
60
61// clang-format off
62#ifdef KEYBOARD_planck_ez
63typedef union {
64 uint32_t raw;
65 struct {
66 bool rgb_layer_change :1;
67 bool rgb_matrix_idle_anim :1;
68 };
69} userspace_config_t;
70// clang-format on
71
72extern userspace_config_t userspace_config;
73#endif
diff --git a/users/bocaj/config.h b/users/bocaj/config.h
deleted file mode 100644
index ecfb09c6f..000000000
--- a/users/bocaj/config.h
+++ /dev/null
@@ -1,113 +0,0 @@
1#pragma once
2
3// Use custom magic number so that when switching branches, EEPROM always gets reset
4#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1339
5
6/* Set Polling rate to 1000Hz */
7#define USB_POLLING_INTERVAL_MS 1
8
9#ifdef AUDIO_ENABLE
10
11# define AUDIO_CLICKY
12# define STARTUP_SONG SONG(RICK_ROLL)
13# define GOODBYE_SONG SONG(SONIC_RING)
14# define DEFAULT_LAYER_SONGS \
15 { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) }
16
17# define AUDIO_CLICKY_FREQ_RANDOMNESS 1.5f
18
19# define UNICODE_SONG_MAC SONG(RICK_ROLL)
20# define UNICODE_SONG_LNX SONG(RICK_ROLL)
21# define UNICODE_SONG_WIN SONG(RICK_ROLL)
22# define UNICODE_SONG_BSD SONG(RICK_ROLL)
23# define UNICODE_SONG_WINC SONG(RICK_ROLL)
24#endif // !AUDIO_ENABLE
25
26#ifdef RGB_MATRIX_ENABLE
27# define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
28// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
29# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
30// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
31# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
32// # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
33// # define EECONFIG_RGB_MATRIX (uint32_t *)16
34
35# if defined(__AVR__) && !defined(__AVR_AT90USB1286__)
36# define DISABLE_RGB_MATRIX_ALPHAS_MODS
37# define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN
38# define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
39# define DISABLE_RGB_MATRIX_BREATHING
40# define DISABLE_RGB_MATRIX_BAND_SAT
41# define DISABLE_RGB_MATRIX_BAND_VAL
42# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
43# define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
44# define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT
45# define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL
46# define DISABLE_RGB_MATRIX_CYCLE_ALL
47# define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
48# define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN
49# define DISABLE_RGB_MATRIX_CYCLE_OUT_IN
50// # define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
51# define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
52# define DISABLE_RGB_MATRIX_DUAL_BEACON
53# define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL
54# define DISABLE_RGB_MATRIX_CYCLE_SPIRAL
55# define DISABLE_RGB_MATRIX_RAINBOW_BEACON
56# define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS
57# define DISABLE_RGB_MATRIX_RAINDROPS
58# define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
59// # define DISABLE_RGB_MATRIX_TYPING_HEATMAP
60# define DISABLE_RGB_MATRIX_DIGITAL_RAIN
61# define DISABLE_RGB_MATRIX_SOLID_REACTIVE
62# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
63# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
64# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
65# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
66# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
67# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
68# define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
69# define DISABLE_RGB_MATRIX_SPLASH
70# define DISABLE_RGB_MATRIX_MULTISPLASH
71# define DISABLE_RGB_MATRIX_SOLID_SPLASH
72# define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
73# endif // AVR
74#endif // RGB_MATRIX_ENABLE
75
76#ifdef QMK_KEYS_PER_SCAN
77# undef QMK_KEYS_PER_SCAN
78# define QMK_KEYS_PER_SCAN 1
79#endif // !QMK_KEYS_PER_SCAN
80
81// this makes it possible to do rolling combos (zx) with keys that
82// convert to other keys on hold (z becomes ctrl when you hold it,
83// and when this option isn't enabled, z rapidly followed by x
84// actually sends Ctrl-x. That's bad.)
85#define IGNORE_MOD_TAP_INTERRUPT
86#undef PERMISSIVE_HOLD
87//#define TAPPING_FORCE_HOLD
88//#define RETRO_TAPPING
89
90#define FORCE_NKRO
91
92#ifndef TAPPING_TOGGLE
93# define TAPPING_TOGGLE 1
94#endif
95
96#ifdef TAPPING_TERM
97# undef TAPPING_TERM
98#endif // TAPPING_TERM
99#if defined(KEYBOARD_ergodox_ez)
100# define TAPPING_TERM 185
101#else
102# define TAPPING_TERM 175
103#endif
104
105#define TAP_CODE_DELAY 5
106
107/* Disable unused and unneeded features to reduce on firmware size */
108#ifdef LOCKING_SUPPORT_ENABLE
109# undef LOCKING_SUPPORT_ENABLE
110#endif
111#ifdef LOCKING_RESYNC_ENABLE
112# undef LOCKING_RESYNC_ENABLE
113#endif
diff --git a/users/bocaj/process_records.c b/users/bocaj/process_records.c
deleted file mode 100644
index 9eb181ad4..000000000
--- a/users/bocaj/process_records.c
+++ /dev/null
@@ -1,111 +0,0 @@
1#include "bocaj.h"
2#include <print.h>
3
4__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
5
6__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) { return true; }
7
8// Defines actions tor my global custom keycodes. Defined in bocaj.h file
9// Then runs the _keymap's record handler if not processed here
10bool process_record_user(uint16_t keycode, keyrecord_t *record) {
11
12 if (process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
13#ifdef RGB_MATRIX_ENABLE
14 && process_record_user_rgb_matrix(keycode, record)
15#endif
16 ) {
17 switch (keycode) {
18 case KC_WORKMAN:
19 if (!record->event.pressed) {
20 uint8_t mods = mod_config(get_mods());
21 if (!mods) {
22 set_single_persistent_default_layer(_WORKMAN);
23
24 } else if (mods & (MODS_GUI_MASK | MODS_CTRL_MASK)) {
25 set_single_persistent_default_layer(_WWORKMAN);
26 }
27 }
28 return false;
29 break;
30 case KC_QWERTY:
31 if (!record->event.pressed) {
32 uint8_t mods = mod_config(get_mods());
33 if (!mods) {
34 set_single_persistent_default_layer(_QWERTY);
35 } else if (mods & (MODS_GUI_MASK | MODS_CTRL_MASK)) {
36 set_single_persistent_default_layer(_WQWERTY);
37 }
38 }
39 return false;
40 break;
41
42 case MC_ARRW:
43 if (!record->event.pressed) {
44 clear_mods();
45 send_string_with_delay_P(PSTR("->"), TAP_CODE_DELAY);
46 }
47 return false;
48 break;
49
50 case KC_MAKE: // Compiles the firmware, and adds the flash command based on keyboard bootloader
51 if (!record->event.pressed) {
52 clear_mods();
53 send_string_with_delay_P(PSTR("qmk compile "), TAP_CODE_DELAY);
54 send_string_with_delay_P(PSTR("-kb " QMK_KEYBOARD), TAP_CODE_DELAY);
55 send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
56 }
57 return false;
58 break;
59
60 case VRSN: // Prints firmware version
61 if (!record->event.pressed) {
62 send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE), TAP_CODE_DELAY);
63 }
64 break;
65#if defined(RGB_MATRIX_ENABLE)
66 case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
67 if (!record->event.pressed) {
68 userspace_config.rgb_layer_change ^= 1;
69 dprintf("rgblight layer change [EEPROM]: %u\n", userspace_config.rgb_layer_change);
70 eeconfig_update_user(userspace_config.raw);
71 if (userspace_config.rgb_layer_change) {
72 rgblight_enable_noeeprom();
73 layer_state_set(layer_state); // This is needed to immediately set the layer color (looks better)
74 } else {
75 rgblight_disable_noeeprom();
76 }
77 }
78 return false;
79 break;
80 case RGB_TOG:
81 if (!record->event.pressed) {
82# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
83 rgb_matrix_toggle();
84# endif
85 }
86 return false;
87 break;
88 case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
89 if (!record->event.pressed) {
90 bool is_eeprom_updated;
91# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
92 if (userspace_config.rgb_matrix_idle_anim) {
93 userspace_config.rgb_matrix_idle_anim = false;
94 dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
95 is_eeprom_updated = true;
96 }
97# endif
98 if (is_eeprom_updated) {
99 eeconfig_update_user(userspace_config.raw);
100 }
101 }
102 return false;
103 break;
104#endif
105 }
106 }
107#ifdef CONSOLE_ENABLE
108 uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
109#endif
110 return true;
111}
diff --git a/users/bocaj/process_records.h b/users/bocaj/process_records.h
deleted file mode 100644
index c17e2ffdc..000000000
--- a/users/bocaj/process_records.h
+++ /dev/null
@@ -1,44 +0,0 @@
1#pragma once
2#include "bocaj.h"
3
4#if defined(KEYMAP_SAFE_RANGE)
5# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
6#else
7# define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
8#endif
9
10enum userspace_custom_keycodes {
11 VRSN = PLACEHOLDER_SAFE_RANGE, // Prints QMK Firmware and board info
12 KC_WORKMAN, // Sets default layer to WORKMAN
13 KC_QWERTY, // Sets default layer to QWERTY
14 // KC_COLEMAK, // Sets default layer to COLEMAK
15 // KC_DVORAK, // Sets default layer to DVORAK
16 KC_MAKE, // Run keyboard's customized make command
17 KC_RGB_T, // Toggles RGB Layer Indication mode
18 RGB_IDL, // RGB Idling animations
19 MC_ARRW, // ->
20 UC_FLIP, // (ಠ痊ಠ)┻━┻
21 UC_TABL, // ┬─┬ノ( º _ ºノ)
22 UC_SHRG, // ¯\_(ツ)_/¯
23 UC_DISA, // ಠ_ಠ
24 NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes
25};
26
27bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
28bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
29
30#define QWERTY KC_QWERTY
31#define WORKMAN KC_WORKMAN
32
33#define KC_ARRW MC_ARRW
34
35#define KC_RST RESET
36
37#define MO_MOD MO(_MOD)
38#define ALT_APP ALT_T(KC_APP)
39#define HYP_LBK ALL_T(KC_LBRACKET)
40#define MEH_RBK MEH_T(KC_RBRACKET)
41#define HYP_LPR ALL_T(KC_LPRN)
42#define MEH_RPR MEH_T(KC_RPRN)
43
44#define MG_NKRO MAGIC_TOGGLE_NKRO
diff --git a/users/bocaj/readme.md b/users/bocaj/readme.md
deleted file mode 100644
index 120635967..000000000
--- a/users/bocaj/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
1# Overview
2
3This is my personal userspace file. Most of my code exists here, as it's heavily shared.
4
5The template was taken from [Drashna's userspace](https://github.com/qmk/qmk_firmware/tree/master/users/drashna). There isn't much if anything in this userspace that warrants documentation he hasn't already covered.
diff --git a/users/bocaj/rgb_matrix_stuff.c b/users/bocaj/rgb_matrix_stuff.c
deleted file mode 100644
index bc50349d2..000000000
--- a/users/bocaj/rgb_matrix_stuff.c
+++ /dev/null
@@ -1,106 +0,0 @@
1#include "bocaj.h"
2
3#include "lib/lib8tion/lib8tion.h"
4extern led_config_t g_led_config;
5
6static uint32_t hypno_timer;
7#if defined(SPLIT_KEYBOARD) || defined(KEYBOARD_ergodox_ez) || defined(KEYBOARD_crkbd)
8# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL
9#else
10# define RGB_MATRIX_REST_MODE RGB_MATRIX_CYCLE_OUT_IN
11#endif
12
13void rgb_matrix_set_color_row(uint8_t row, uint8_t red, uint8_t green, uint8_t blue) {
14#ifdef KEYBOARD_planck_ez
15 if (row > 2) {
16 row = 0;
17 }
18 uint8_t row_multiplier = row * 12;
19
20 rgb_matrix_set_color(1 + row_multiplier, red, green, blue);
21 rgb_matrix_set_color(2 + row_multiplier, red, green, blue);
22 rgb_matrix_set_color(3 + row_multiplier, red, green, blue);
23 rgb_matrix_set_color(4 + row_multiplier, red, green, blue);
24 rgb_matrix_set_color(5 + row_multiplier, red, green, blue);
25 rgb_matrix_set_color(6 + row_multiplier, red, green, blue);
26 rgb_matrix_set_color(7 + row_multiplier, red, green, blue);
27 rgb_matrix_set_color(8 + row_multiplier, red, green, blue);
28 rgb_matrix_set_color(9 + row_multiplier, red, green, blue);
29 rgb_matrix_set_color(10 + row_multiplier, red, green, blue);
30#endif
31}
32
33void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type) {
34 HSV hsv = {hue, sat, val};
35 if (hsv.v > rgb_matrix_get_val()) {
36 hsv.v = rgb_matrix_get_val();
37 }
38
39 switch (mode) {
40 case 1: // breathing
41 {
42 uint16_t time = scale16by8(g_rgb_timer, speed / 8);
43 hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
44 RGB rgb = hsv_to_rgb(hsv);
45 for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
46 if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
47 rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
48 }
49 }
50 break;
51 }
52 default: // Solid Color
53 {
54 RGB rgb = hsv_to_rgb(hsv);
55 for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
56 if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
57 rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
58 }
59 }
60 break;
61 }
62 }
63}
64
65__attribute__((weak)) void rgb_matrix_indicator_keymap(void) {}
66
67void matrix_scan_rgb_matrix(void) {
68#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
69 if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && timer_elapsed32(hypno_timer) > 15000) {
70 rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
71 }
72#endif
73 rgb_matrix_indicator_keymap();
74}
75
76void keyboard_post_init_rgb_matrix(void) {
77#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
78 if (userspace_config.rgb_matrix_idle_anim) {
79 rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
80 }
81#endif
82}
83
84bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) {
85#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
86 hypno_timer = timer_read32();
87 if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) {
88 rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
89 }
90#endif
91 switch (keycode) {
92 case RGB_IDL:
93#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
94 if (record->event.pressed) {
95 userspace_config.rgb_matrix_idle_anim ^= 1;
96 dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
97 eeconfig_update_user(userspace_config.raw);
98 if (userspace_config.rgb_matrix_idle_anim) {
99 rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
100 }
101 }
102#endif
103 break;
104 }
105 return true;
106}
diff --git a/users/bocaj/rgb_matrix_stuff.h b/users/bocaj/rgb_matrix_stuff.h
deleted file mode 100644
index e48add218..000000000
--- a/users/bocaj/rgb_matrix_stuff.h
+++ /dev/null
@@ -1,10 +0,0 @@
1#pragma once
2#include "quantum.h"
3
4bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record);
5void keyboard_post_init_rgb_matrix(void);
6void matrix_scan_rgb_matrix(void);
7
8void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue);
9void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type);
10void rgb_matrix_set_color_row(uint8_t row, uint8_t red, uint8_t green, uint8_t blue);
diff --git a/users/bocaj/wrappers.h b/users/bocaj/wrappers.h
deleted file mode 100644
index 0f18d346a..000000000
--- a/users/bocaj/wrappers.h
+++ /dev/null
@@ -1,193 +0,0 @@
1#pragma once
2#include "bocaj.h"
3
4/*
5Since our quirky block definitions are basically a list of comma separated
6arguments, we need a wrapper in order for these definitions to be
7expanded before being used as arguments to the LAYOUT_xxx macro.
8*/
9#if (!defined(LAYOUT) && defined(KEYMAP))
10# define LAYOUT KEYMAP
11#endif
12
13// clang-format off
14#define WRAPPER_ergodox_pretty(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
15#define WRAPPER_ortho_4x12(...) LAYOUT_ortho_4x12(__VA_ARGS__)
16
17/* ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- */
18#define WRAPPER_ergodox_bocaj( \
19 L00,L01,L02,L03,L04,L05,L06, R00,R01,R02,R03,R04,R05,R06, \
20 L10,L11,L12,L13,L14,L15,L16, R10,R11,R12,R13,R14,R15,R16, \
21 L20,L21,L22,L23,L24,L25, R21,R22,R23,R24,R25,R26, \
22 L30,L31,L32,L33,L34,L35,L36, R30,R31,R32,R33,R34,R35,R36, \
23 L40,L41,L42,L43,L44, R42,R43,R44,R45,R46, \
24 L55,L56, R50,R51, \
25 L54, R52, \
26 L53,L52,L51, R55,R54,R53 ) \
27 WRAPPER_ergodox_pretty( \
28 L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
29 L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
30 L20, L21, SFT_T(L22), GUI_T(L23), ALT_T(L24), L25, R21, ALT_T(R22), GUI_T(R23), SFT_T(R24), R25, R26, \
31 L30, CTL_T(L31), L32, L33, L34, L35, ALL_T(L36), MEH_T(R30), R31, R32, R33, R34, CTL_T(R35), R36, \
32 L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \
33 L55,L56, /* <- LHS/RHS -> */ R50,R51, \
34 L54, /* <- LHS/RHS -> */ R52, \
35 LT(_LOWER, L53),L52,L51, /* <- LHS/RHS -> */ R55,R54,LT(_RAISE, R53) \
36)
37
38#define WRAPPER_ergodox_bocaj_WIN( \
39 L00,L01,L02,L03,L04,L05,L06, R00,R01,R02,R03,R04,R05,R06, \
40 L10,L11,L12,L13,L14,L15,L16, R10,R11,R12,R13,R14,R15,R16, \
41 L20,L21,L22,L23,L24,L25, R21,R22,R23,R24,R25,R26, \
42 L30,L31,L32,L33,L34,L35,L36, R30,R31,R32,R33,R34,R35,R36, \
43 L40,L41,L42,L43,L44, R42,R43,R44,R45,R46, \
44 L55,L56, R50,R51, \
45 L54, R52, \
46 L53,L52,L51, R55,R54,R53 ) \
47 WRAPPER_ergodox_pretty( \
48 L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
49 L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, \
50 L20, L21, SFT_T(L22), CTL_T(L23), ALT_T(L24), L25, R21, ALT_T(R22), CTL_T(R23), SFT_T(R24), R25, R26, \
51 L30, GUI_T(L31), L32, L33, L34, L35, ALL_T(L36), MEH_T(R30), R31, R32, R33, R34, GUI_T(R35), R36, \
52 L40, L41, L42, L43, L44, R42, R43, R44, R45, R46, \
53 L55,L56, /* <- LHS/RHS -> */ R50,R51, \
54 L54, /* <- LHS/RHS -> */ R52, \
55 LT(_LOWER, L53),L52,L51, /* <- LHS/RHS -> */ R55,R54,LT(_RAISE, R53) \
56)
57
58/*
59 Planck EZ Wrappers
60*/
61#define WRAPPER_planck_bocaj( \
62 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
63 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
64 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
65 K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C \
66)\
67 WRAPPER_ortho_4x12( \
68 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
69 K11, K12, SFT_T(K13), GUI_T(K14), ALT_T(K15), K16, K17, ALT_T(K18), GUI_T(K19), SFT_T(K1A), K1B, K1C, \
70 K21, CTL_T(K22), K23, K24, K25, K26, K27, K28, K29, K2A, CTL_T(K2B), K2C, \
71 K31, K32, K33, K34, LT(_LOWER, K35), K36, K37, LT(_RAISE, K38), K39, K3A, K3B, K3C )
72
73#define WRAPPER_planck_bocaj_WIN( \
74 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
75 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
76 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
77 K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C \
78)\
79 WRAPPER_ortho_4x12( \
80 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
81 K11, K12, SFT_T(K13), CTL_T(K14), ALT_T(K15), K16, K17, ALT_T(K18), CTL_T(K19), SFT_T(K1A), K1B, K1C, \
82 K21, GUI_T(K22), K23, K24, K25, K26, K27, K28, K29, K2A, GUI_T(K2B), K2C, \
83 K31, K32, K33, K34, LT(_LOWER, K35), K36, K37, LT(_RAISE, K38), K39, K3A, K3B, K3C )
84
85#define WRAPPER_planck_bocaj_base( \
86 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
87 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
88 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
89) \
90 WRAPPER_planck_bocaj( \
91 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
92 KC_TAB, K11, K12, K13, K14, ALL_T(K15), MEH_T(K16), K17, K18, K19, K1A, KC_QUOT, \
93 KC_LSFT, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, _______, \
94 _______, KC_LEAD, KC_UP, KC_LEFT, KC_BSPC, KC_SPC, KC_SPC, KC_ENTER, KC_RIGHT, KC_DOWN, QWERTY, WORKMAN \
95 )
96
97#define WRAPPER_planck_bocaj_base_WIN( \
98 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
99 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
100 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
101) \
102 WRAPPER_planck_bocaj_WIN( \
103 KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_MINS, \
104 KC_TAB, K11, K12, K13, K14, ALL_T(K15), MEH_T(K16), K17, K18, K19, K1A, KC_QUOT, \
105 KC_LSFT, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, _______, \
106 _______, KC_LEAD, KC_UP, KC_LEFT, KC_BSPC, KC_SPC, KC_SPC, KC_ENTER, KC_RIGHT, KC_DOWN, QWERTY, WORKMAN \
107 )
108
109/*
110Blocks for each of the four major keyboard layouts
111Organized so we can quickly adapt and modify all of them
112at once, rather than for each keyboard, one at a time.
113And this allows for much cleaner blocks in the keymaps.
114For instance Tap/Hold for Control on all of the layouts
115
116NOTE: These are all the same length. If you do a search/replace
117 then you need to add/remove underscores to keep the
118 lengths consistent.
119*/
120
121#define _________________QWERTY_L1_________________ KC_Q, KC_W, KC_E, KC_R, KC_T
122#define _________________QWERTY_L2_________________ KC_A, KC_S, KC_D, KC_F, KC_G
123#define _________________QWERTY_L3_________________ KC_Z, KC_X, KC_C, KC_V, KC_B
124
125#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P
126#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN
127#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH
128
129#define _________________COLEMAK_L1________________ KC_Q, KC_W, KC_F, KC_P, KC_G
130#define _________________COLEMAK_L2________________ KC_A, KC_R, KC_S, KC_T, KC_D
131#define _________________COLEMAK_L3________________ KC_Z, KC_X, KC_C, KC_V, KC_B
132
133#define _________________COLEMAK_R1________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
134#define _________________COLEMAK_R2________________ KC_H, KC_N, KC_E, KC_I, KC_O
135#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLASH
136
137#define _________________DVORAK_L1_________________ KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y
138#define _________________DVORAK_L2_________________ KC_A, KC_O, KC_E, KC_U, KC_I
139#define _________________DVORAK_L3_________________ KC_SCLN, KC_Q, KC_J, KC_K, KC_X
140
141#define _________________DVORAK_R1_________________ KC_F, KC_G, KC_C, KC_R, KC_L
142#define _________________DVORAK_R2_________________ KC_D, KC_H, KC_T, KC_N, KC_S
143#define _________________DVORAK_R3_________________ KC_B, KC_M, KC_W, KC_V, KC_Z
144
145#define _________________WORKMAN_L1________________ KC_Q, KC_D, KC_R, KC_W, KC_B
146#define _________________WORKMAN_L2________________ KC_A, KC_S, KC_H, KC_T, KC_G
147#define _________________WORKMAN_L3________________ KC_Z, KC_X, KC_M, KC_C, KC_V
148
149#define _________________WORKMAN_R1________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN
150#define _________________WORKMAN_R2________________ KC_Y, KC_N, KC_E, KC_O, KC_I
151#define _________________WORKMAN_R3________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLASH
152
153#define ________________NUMBER_LEFT________________ KC_1, KC_2, KC_3, KC_4, KC_5
154#define ________________NUMBER_RIGHT_______________ KC_6, KC_7, KC_8, KC_9, KC_0
155#define _________________FUNC_LEFT_________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
156#define _________________FUNC_RIGHT________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
157
158#define ___________________BLANK___________________ _______, _______, _______, _______, _______
159#define _________________UNDEFINED_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
160
161#define ___________________LOWER_L1_EXT____________________ KC_GRV, _______, _______, KC_UP, _______, KC_ARRW
162#define ___________________LOWER_L2_EXT____________________ KC_DEL, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_LPRN
163#define ___________________LOWER_L3_EXT____________________ _______, _______, _______, _______, _______, KC_LBRC
164
165#define ___________________LOWER_R1_EXT____________________ KC_MINS, KC_7, KC_8, KC_9, KC_PLUS, KC_EQUAL
166#define ___________________LOWER_R2_EXT____________________ KC_RPRN, KC_4, KC_5, KC_6, KC_ASTR, KC_BSLS
167#define ___________________LOWER_R3_EXT____________________ KC_RBRC, KC_1, KC_2, KC_3, KC_SLSH, _______
168
169// #define _________________LOWER_L1__________________ ________________NUMBER_LEFT________________
170// #define _________________LOWER_L2__________________ _______, _______, _______, _______, KC_LPRN
171// #define _________________LOWER_L3__________________ _______, _______, _______, KC_ARRW, KC_LBRC
172
173// #define _________________LOWER_R1__________________ ________________NUMBER_RIGHT_______________
174// #define _________________LOWER_R2__________________ KC_RPRN, _______, _______, _______, _______
175// #define _________________LOWER_R3__________________ KC_RBRC, _______, _______, _______, _______
176
177#define _________________RAISE_L1__________________ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC
178#define _________________RAISE_L2__________________ _________________FUNC_LEFT_________________
179#define _________________RAISE_L3__________________ ___________________BLANK___________________
180
181#define _________________RAISE_R1__________________ KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN
182#define _________________RAISE_R2__________________ _________________FUNC_RIGHT________________
183#define _________________RAISE_R3__________________ ___________________BLANK___________________
184
185#define _________________ADJUST_L1_________________ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG
186#define _________________ADJUST_L2_________________ KC__MUTE, KC__VOLDOWN, KC__VOLUP, _______, KC_MNXT
187#define _________________ADJUST_L3_________________ RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_RGB_T
188
189#define _________________ADJUST_R1_________________ ___________________BLANK___________________
190#define _________________ADJUST_R2_________________ CG_SWAP, WORKMAN, QWERTY, _______, _______
191#define _________________ADJUST_R3_________________ MU_TOG , CK_TOGG, AU_ON, AU_OFF, CG_NORM
192
193// clang-format on
diff --git a/users/jjerrell/.gitignore b/users/jjerrell/.gitignore
new file mode 100644
index 000000000..1753bf931
--- /dev/null
+++ b/users/jjerrell/.gitignore
@@ -0,0 +1 @@
secrets.*
diff --git a/users/jjerrell/config.h b/users/jjerrell/config.h
new file mode 100644
index 000000000..bddafe155
--- /dev/null
+++ b/users/jjerrell/config.h
@@ -0,0 +1,26 @@
1// Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
2//
3// This file is part of jjerrell.
4//
5// jjerrell is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// jjerrell is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with jjerrell. If not, see <http://www.gnu.org/licenses/>.
17
18#pragma once
19
20#define LEADER_TIMEOUT 250
21#define LEADER_PER_KEY_TIMING
22
23#if defined(TAP_CODE_DELAY)
24# undef TAP_CODE_DELAY
25#endif
26#define TAP_CODE_DELAY 20
diff --git a/users/jjerrell/jjerrell.c b/users/jjerrell/jjerrell.c
new file mode 100644
index 000000000..95c2acba5
--- /dev/null
+++ b/users/jjerrell/jjerrell.c
@@ -0,0 +1,138 @@
1/**
2 * Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
3 *
4 * This file is part of qmk_firmware.
5 *
6 * qmk_firmware is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * qmk_firmware is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#include "jjerrell.h"
21
22__attribute__((weak)) void matrix_scan_keymap(void) {}
23__attribute__((weak)) void leader_scan_secrets(void) {}
24
25#ifdef LEADER_ENABLE
26 LEADER_EXTERNS();
27 void matrix_scan_leader(void) {
28 static uint8_t mods = 0;
29 mods = get_mods();
30 LEADER_DICTIONARY() {
31 leading = false;
32 leader_end();
33 clear_mods();
34
35 // Website Refresh / XCode "Run"
36 SEQ_ONE_KEY(KC_R) {
37 SEND_STRING(SS_LGUI("r"));
38 }
39
40 SEQ_TWO_KEYS(KC_B, KC_D) {
41 send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " Built at: " QMK_BUILDDATE), TAP_CODE_DELAY);
42 }
43
44 SEQ_TWO_KEYS(KC_L, KC_C) {
45 send_string_with_delay("/** */", TAP_CODE_DELAY);
46 wait_ms(TAPPING_TERM);
47 tap_code(KC_LEFT);
48 tap_code(KC_LEFT);
49 tap_code(KC_LEFT);
50 if (!(mods & MOD_MASK_SHIFT)) {
51 tap_code(KC_ENT);
52 }
53 }
54
55 set_mods(mods);
56 #ifndef NO_SECRETS
57 leader_scan_secrets();
58 #endif // !NO_SECRETS
59 }
60 }
61#endif
62
63static bool is_first_run = true;
64void matrix_scan_user(void) {
65 if (is_first_run) {
66 is_first_run = false;
67 startup_user();
68 }
69 #ifdef LEADER_ENABLE
70 matrix_scan_leader();
71 #endif
72 matrix_scan_keymap();
73}
74
75__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
76
77// on layer change, no matter where the change was initiated
78// Then runs keymap's layer change check
79layer_state_t layer_state_set_user(layer_state_t state) {
80 if (!is_keyboard_master()) {
81 return state;
82 }
83
84 state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
85 state = layer_state_set_keymap(state);
86#if defined(RGBLIGHT_ENABLE)
87 state = layer_state_set_rgb_light(state);
88#endif // RGBLIGHT_ENABLE
89 return state;
90}
91
92__attribute__((weak)) void dip_switch_update_keymap(uint8_t index, bool active) {}
93void dip_switch_update_user(uint8_t index, bool active) {
94 dip_switch_update_keymap(index, active);
95}
96
97__attribute__((weak)) bool music_mask_keymap(uint16_t keycode) { return true; }
98bool music_mask_user(uint16_t keycode) {
99 switch (keycode){
100 default:
101 return music_mask_keymap(keycode);
102 break;
103 }
104}
105
106__attribute__((weak)) layer_state_t default_layer_state_set_keymap(layer_state_t state) { return state; }
107
108// Runs state check and changes underglow color and animation
109layer_state_t default_layer_state_set_user(layer_state_t state) {
110 if (!is_keyboard_master()) {
111 return state;
112 }
113 return default_layer_state_set_keymap(state);
114}
115
116#ifdef AUDIO_ENABLE
117__attribute__((weak)) void startup_keymap(void) {}
118void startup_user(void)
119{
120 wait_ms(TAP_CODE_DELAY); // gets rid of tick
121 startup_keymap();
122}
123
124__attribute__((weak)) void shutdown_keymap(void) {}
125void shutdown_user(void)
126{
127 wait_ms(TAP_CODE_DELAY);
128 stop_all_notes();
129 shutdown_keymap();
130}
131
132__attribute__((weak)) void music_on_keymap(void) {}
133void music_on_user(void)
134{
135 music_scale_user();
136 music_on_keymap();
137}
138#endif // AUDIO_ENABLE
diff --git a/users/jjerrell/jjerrell.h b/users/jjerrell/jjerrell.h
new file mode 100644
index 000000000..92b95ccc0
--- /dev/null
+++ b/users/jjerrell/jjerrell.h
@@ -0,0 +1,53 @@
1/**
2 * Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
3 *
4 * This file is part of qmk_firmware.
5 *
6 * qmk_firmware is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * qmk_firmware is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#pragma once
21#include QMK_KEYBOARD_H
22
23/** QMK Includes **/
24#include "version.h"
25#include "eeprom.h"
26#include "muse.h"
27
28#include "process_records.h"
29#include "wrappers.h"
30
31/************************* Userspace Layers *************************
32 * Keymaps can define additional layers by making the first case
33 * equal to `LAYER_SAFE_RANGE`
34 ********************************************************************/
35enum userspace_layers {
36 _WORKMAN,
37 _QWERTY,
38 _LOWER,
39 _RAISE,
40 _ADJUST,
41 _SPECIAL,
42 _GAME,
43 LAYER_SAFE_RANGE,
44};
45
46void matrix_scan_keymap(void);
47layer_state_t layer_state_set_keymap(layer_state_t state);
48void dip_switch_update_keymap(uint8_t index, bool active);
49bool music_mask_keymap(uint16_t keycode);
50layer_state_t default_layer_state_set_keymap(layer_state_t state);
51void startup_keymap(void);
52void shutdown_keymap(void);
53void music_on_keymap(void);
diff --git a/users/jjerrell/process_records.c b/users/jjerrell/process_records.c
new file mode 100644
index 000000000..abdcd0934
--- /dev/null
+++ b/users/jjerrell/process_records.c
@@ -0,0 +1,139 @@
1/**
2 * Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
3 *
4 * This file is part of qmk_firmware.
5 *
6 * qmk_firmware is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * qmk_firmware is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#include "jjerrell.h"
21
22float game_song[][2] = SONG(TO_BOLDLY_GO);
23float work_song[][2] = SONG(MARIO_GAMEOVER);
24float doom_song[][2] = SONG(E1M1_DOOM);
25
26__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
27
28static uint16_t key_timer;
29
30bool process_record_user(uint16_t keycode, keyrecord_t *record) {
31 if (process_record_keymap(keycode, record)) {
32 static uint8_t mods = 0;
33 // static uint8_t layer = 0;
34 mods = get_mods();
35 switch (keycode) {
36 case KC_QWERTY:
37 if (record->event.pressed) {
38 set_single_persistent_default_layer(_QWERTY);
39 }
40 return false;
41 break;
42 case KC_WORKMAN:
43 if (record->event.pressed) {
44 set_single_persistent_default_layer(_WORKMAN);
45 }
46 return false;
47 break;
48 case KC_CCCV:
49 if (record->event.pressed) {
50 key_timer = timer_read();
51 } else {
52 clear_mods();
53 if (timer_elapsed(key_timer) > TAPPING_TERM) { // Hold, copy
54 tap_code16(G(KC_C));
55 } else if (mods & MOD_MASK_SHIFT) {
56 // Tap w/ shift held, open [Paste App](https://pasteapp.io) (no affiliation)
57 // Shift + Command(GUI) + V
58 tap_code16(S(G(KC_V)));
59 } else { // Regular tap, do paste
60 tap_code16(G(KC_V));
61 }
62 set_mods(mods);
63 }
64 return false;
65 break;
66 case KC_ARROW:
67 if (record->event.pressed) {
68 clear_mods();
69 if (mods & MOD_MASK_SHIFT) {
70 SEND_STRING("=>");
71 } else {
72 SEND_STRING("->");
73 }
74 set_mods(mods);
75 }
76 return false;
77 break;
78 case KC_MAKE:
79 if (!record->event.pressed) {
80#ifndef MAKE_BOOTLOADER
81 uint8_t temp_mod = mod_config(get_mods());
82 uint8_t temp_osm = mod_config(get_oneshot_mods());
83 clear_mods();
84 clear_oneshot_mods();
85#endif
86 send_string_with_delay_P(PSTR("qmk"), TAP_CODE_DELAY);
87#ifndef MAKE_BOOTLOADER
88 if ((temp_mod | temp_osm) & MOD_MASK_SHIFT)
89#endif
90 {
91 send_string_with_delay_P(PSTR(" flash "), TAP_CODE_DELAY);
92#ifndef MAKE_BOOTLOADER
93 } else {
94 send_string_with_delay_P(PSTR(" compile "), TAP_CODE_DELAY);
95#endif
96 }
97 send_string_with_delay_P(PSTR("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP), TAP_CODE_DELAY);
98 send_string_with_delay_P(PSTR(SS_TAP(X_ENTER)), TAP_CODE_DELAY);
99 }
100 return false;
101 break;
102 case KC_VRSN:
103 if (!record->event.pressed) {
104 send_string_with_delay_P(PSTR(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " Built at: " QMK_BUILDDATE), TAP_CODE_DELAY);
105 }
106 return false;
107 break;
108 case KC_GAME:
109 if (record->event.pressed) {
110 key_timer = timer_read();
111 } else {
112 if (IS_LAYER_OFF(_GAME)) {
113 if (timer_elapsed(key_timer) > TAPPING_TERM) {
114 layer_move(_GAME);
115#ifdef AUDIO_ENABLE
116PLAY_SONG(game_song);
117#endif
118 }
119 break;
120 // todo: cycle game layers
121 // } else if (mods & MOD_MASK_SHIFT) {
122// #ifdef AUDIO_ENABLE
123// PLAY_SONG(doom_song);
124// #endif
125// break;
126 } else {
127 layer_move(_WORKMAN);
128#ifdef AUDIO_ENABLE
129PLAY_SONG(work_song);
130#endif
131 break;
132 }
133 }
134 return false;
135 break;
136 }
137 }
138 return true;
139}
diff --git a/users/jjerrell/process_records.h b/users/jjerrell/process_records.h
new file mode 100644
index 000000000..de37421b1
--- /dev/null
+++ b/users/jjerrell/process_records.h
@@ -0,0 +1,41 @@
1// Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
2//
3// This file is part of qmk_firmware.
4//
5// qmk_firmware is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// qmk_firmware is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
17
18#pragma once
19#include "jjerrell.h"
20
21#if defined(KEYMAP_SAFE_RANGE)
22# define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
23#else
24# define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
25#endif
26
27enum userspace_keycodes {
28 KC_ARROW = PLACEHOLDER_SAFE_RANGE, // `->`
29 KC_MAKE, // Runs the keyboard's make command
30 KC_QWERTY, // Default Layer -> QWERTY
31 KC_WORKMAN, // Default Layer -> Workman
32 KC_VRSN, // Print QMK Firmware and board info
33 RGB_IDL, // Toggle RGB Idle animations
34 RGB_TGL, // Toggle RGB Layer Indication
35 KC_CCCV, // One key copy/paste,
36 KC_GAME, // To game layer. If on game layer, cycle game layers
37 NEW_SAFE_RANGE // use NEW_SAFE_RANGE for keymap specific codes
38};
39
40bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
41
diff --git a/users/jjerrell/readme.md b/users/jjerrell/readme.md
new file mode 100644
index 000000000..a382524f2
--- /dev/null
+++ b/users/jjerrell/readme.md
@@ -0,0 +1,50 @@
1<!--
2 Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
3
4 This file is part of qmk_firmware.
5
6 qmk_firmware is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 qmk_firmware is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
18-->
19
20# JJerrell's QMK Userspace
21
22This userspace showcases my personal journey with QMK keyboards and aims to simplify additional development, reduce code duplication, and maintain a consistent experience across my current keyboards. My original userspace has been archived because I wanted to take the time to grasp _how_ what I was doing worked -- rather than copy/pasta and blind luck.
23
24Some keyboard specific code is stored here because it's contextually relevant. It may be somewhat pedantic, but an effort has been made to wrap this code with preprocessor checks. i.e. `#if (defined(KEYBOARD_planck_ez))`.
25
26## Daily Drivers
27
281. Ergodox EZ - My first mechanical love. Now the office keyboard (if we go back). After finding inferior travel cases for exorbitant amounts of money, I built a custom travel case out of a case designed for drones and maticulous work cutting guncase foam. Around $50 with plenty of foam left over for family LARPing weapons. I'll post a picture one of these days. It also has a spot for my wireless touchpad.
292. Planck EZ - The solution to not being able to sit at a desk 100% of the time and not being able to live without QMK for any amount of time. Karabiner-Elements disables the Macbook keyboard when this is plugged in and the planck sits ontop of it with a very short usb-c cable. Probably terrible for the built in keyboard but they screwed up this generation anyway.
303. Moonlander - Just when I thought it was over, the lovely people with ZSA did it again. This one stays at home on my desk.
31
32## Features
33
34- Keymap level customization
35 - User methods implemented here will give the keymaps a chance to override functionality by optionally implementing relevant _keymap methods
36- Layer Macros
37 - WRAPPER defines in [wrapper.c] simplify consistent keymaps
38- Leader key secrets
39 - [jjerrell.c] sets up the functionality for this feature and calls into the leader_scan_secrets method.
40 - TODO: add documentation for leader_scan_secrets implementation
41
42## Issues
43
44### Tap/hold keys and shifted keycodes
45
46An immediate part of my love for QMK was it's ability to differentiate between holds and presses to a level where you can apply modifiers when a normal alpha code is held. This feature was the single-most health related improvement to adopting QMK, in my opinion.
47
48Beloved as it may be it comes with some baggage; shifted keycodes will be applied as their unshifted counterparts. I've worked around this in the past but the solution this time is a close adoption of the symbol layer inspired by the Neo keyboard.
49
50There is also a problem with relying on SFT_T() for all of your shifting needs because if you attempt to swap which fingers are holding it and don't release the first before pressing the second, shift won't register anymore. This could probably be fixed but it discourages typing in all caps because it becomes too tedious. However, most layers do have a dedicated shift key to counteract this when necessary.
diff --git a/users/bocaj/rules.mk b/users/jjerrell/rules.mk
index a0e7e93bc..db359a575 100644
--- a/users/bocaj/rules.mk
+++ b/users/jjerrell/rules.mk
@@ -1,4 +1,4 @@
1SRC += bocaj.c \ 1SRC += jjerrell.c \
2 process_records.c 2 process_records.c
3 3
4LEADER_ENABLE = yes 4LEADER_ENABLE = yes
@@ -20,7 +20,8 @@ ifneq ($(strip $(NO_SECRETS)), yes)
20 endif 20 endif
21endif 21endif
22 22
23RGB_MATRIX_ENABLE ?= no 23# TODO: RGB is next
24ifneq ($(strip $(RGB_MATRIX_ENABLE)), no) 24# RGB_MATRIX_ENABLE ?= no
25 SRC += rgb_matrix_stuff.c 25# ifneq ($(strip $(RGB_MATRIX_ENABLE)), no)
26endif 26# SRC += rgb_matrix_stuff.c
27# endif
diff --git a/users/jjerrell/wrappers.h b/users/jjerrell/wrappers.h
new file mode 100644
index 000000000..cc0f963e8
--- /dev/null
+++ b/users/jjerrell/wrappers.h
@@ -0,0 +1,329 @@
1// Copyright (C) 2021 Jerrell, Jacob <@jjerrell>
2//
3// This file is part of qmk_firmware.
4//
5// qmk_firmware is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// qmk_firmware is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with qmk_firmware. If not, see <http://www.gnu.org/licenses/>.
17
18#pragma once
19#include "jjerrell.h"
20
21#define QWERTY KC_QWERTY
22#define WORKMN KC_WORKMAN
23
24#define KC_CUT LGUI(KC_X)
25
26// Non-sane shortcuts for software macros or keybindings
27#define MACRO_1 ALL_T(KC_F12)
28#define MACRO_2 ALL_T(KC_F13)
29#define MACRO_3 ALL_T(KC_F14)
30#define MACRO_4 ALL_T(KC_F15)
31
32#define MACRO_5 ALL_T(KC_F16)
33#define MACRO_6 ALL_T(KC_F17)
34#define MACRO_7 ALL_T(KC_F18)
35#define MACRO_8 ALL_T(KC_F19)
36
37// clang-format off
38#if (!defined(LAYOUT) && defined(KEYMAP))
39# define LAYOUT KEYMAP
40#endif
41
42#if (defined(KEYBOARD_planck_ez))
43/** Planck EZ Empty
44 * ,-----------------------------------------------------------------------------------.
45 * | | | | | | | | | | | | |
46 * |------+------+------+------+------+------+------+------+------+------+------+------|
47 * | | | | | | | | | | | | |
48 * |------+------+------+------+------+------+------+------+------+------+------+------|
49 * | | | | | | | | | | | | |
50 * |------+------+------+------+------+------+------+------+------+------+------+------|
51 * | | | | | | | | | | | |
52 * `-----------------------------------------------------------------------------------'
53 */
54
55# define ____________________________________________________________PLANCK_VERBOSE_BOTTOM_ROW_____________________________________________________________ \
56 KC_LEAD, KC_LSFT, KC_CCCV, KC_HYPR, LT(_LOWER, KC_BSPC), SFT_T(KC_SPC), XXXXXXX, LT(_RAISE, KC_ENT), KC_MEH, RGB_TOG, RGB_IDL, LED_LEVEL
57
58# define _________________________________________PLANCK_LOWER_BOTTOM_ROW_________________________________________ \
59 KC_LEAD, KC_LSFT, KC_CCCV, KC_HYPR, KC_BSPC, KC_SPC, XXXXXXX, KC_ENT, KC_0, KC_DOT, KC_COMM, LED_LEVEL
60// TODO: It would be nice to find a way to apply the bottom row with optional left/right varargs.
61// I'm completely unsure if this language can support something like that though.
62
63/**
64 * Basic Planck EZ Wrapper to expand "block" defines before sending
65 * to LAYOUT_ortho_4x12
66 */
67# define WRAPPER_ortho_4x12(...) LAYOUT_ortho_4x12(__VA_ARGS__)
68
69# define WRAPPER_planck_common( \
70 K01, K02, K03, K04, K05, K08, K09, K0A, K0B, K0C, \
71 K11, K12, K13, K14, K15, K18, K19, K1A, K1B, K1C, \
72 K21, K22, K23, K24, K25, K28, K29, K2A, K2B, K2C \
73 ) WRAPPER_ortho_4x12( \
74 K01, K02, K03, K04, K05 , XXXXXXX , XXXXXXX, K08, K09, K0A, K0B, K0C, \
75 K11, K12, K13, K14, K15 , XXXXXXX , XXXXXXX, K18, K19, K1A, K1B, K1C, \
76 K21, K22, K23, K24, K25 , XXXXXXX , XXXXXXX, K28, K29, K2A, K2B, K2C, \
77 ____________________________________________________________PLANCK_VERBOSE_BOTTOM_ROW_____________________________________________________________ )
78
79/**
80 * Shifted Key conflicts:
81 * K12, K13, K14, K19, K1A, K1B, K21, K2C
82 */
83# define WRAPPER_planck_base( \
84 K01, K02, K03, K04, K05, K08, K09, K0A, K0B, K0C, \
85 K11, K12, K13, K14, K15, K18, K19, K1A, K1B, K1C, \
86 K21, K22, K23, K24, K25, K28, K29, K2A, K2B, K2C \
87 ) WRAPPER_ortho_4x12( \
88 K01 , K02 , K03 , K04 , K05 , KC_GAME , KC_GAME, K08, K09 , K0A , K0B , K0C, \
89 K11 , SFT_T(K12), GUI_T(K13), ALT_T(K14), K15 , XXXXXXX , XXXXXXX, K18, ALT_T(K19), GUI_T(K1A), SFT_T(K1B), K1C, \
90 CTL_T(K21), K22 , K23 , K24 , K25 , XXXXXXX , XXXXXXX, K28, K29 , K2A , K2B , CTL_T(K2C), \
91 ____________________________________________________________PLANCK_VERBOSE_BOTTOM_ROW_____________________________________________________________ )
92
93# define WRAPPER_planck_mods( \
94 K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, \
95 K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, \
96 K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
97 K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C \
98 ) WRAPPER_ortho_4x12( \
99 K01 , K02 , K03 , K04 , K05 , K06 , K07, K08, K09 , K0A , K0B , K0C, \
100 K11 , SFT_T(K12), GUI_T(K13), ALT_T(K14), K15 , K16 , K17, K18, ALT_T(K19), GUI_T(K1A), SFT_T(K1B), K1C, \
101 CTL_T(K21), K22 , K23 , K24 , K25 , K26 , K27, K28, K29 , K2A , K2B , CTL_T(K2C), \
102 K31, K32 , K33 , K34 , LT(_LOWER, K35), SFT_T(K36), XXXXXXX, LT(_RAISE, K38), K39 , K3A , K3B, K3C )
103
104
105
106// These macros are used when defining layouts in keymap.c
107# define LAYOUT_planck_base(...) WRAPPER_planck_base(__VA_ARGS__)
108# define LAYOUT_planck_common(...) WRAPPER_planck_common(__VA_ARGS__)
109# define LAYOUT_planck_mods(...) WRAPPER_planck_mods(__VA_ARGS__)
110
111#elif defined(KEYBOARD_moonlander)
112/** Moonlander Empty
113 * ( \
114 k00, k01, k02, k03, k04, k05, k06, k60, k61, k62, k63, k64, k65, k66, \
115 k10, k11, k12, k13, k14, k15, k16, k70, k71, k72, k73, k74, k75, k76, \
116 k20, k21, k22, k23, k24, k25, k26, k80, k81, k82, k83, k84, k85, k86, \
117 k30, k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, k96, \
118 k40, k41, k42, k43, k44, k53, kb3, ka2, ka3, ka4, ka5, ka6, \
119 k50, k51, k52, kb4, kb5, kb6 \
120 ) \
121 */
122# define WRAPPER_moonlander(...) LAYOUT_moonlander(__VA_ARGS__)
123# define WRAPPER_moonlander_common( \
124 k11, k12, k13, k14, k15, k71, k72, k73, k74, k75, \
125 k21, k22, k23, k24, k25, k81, k82, k83, k84, k85, \
126 k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, \
127 k41, k42, k43, k44, ka2, ka3, ka4, ka5 \
128 ) WRAPPER_moonlander( \
129 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
130 XXXXXXX, k11, k12, k13, k14, k15, XXXXXXX, XXXXXXX, k71, k72, k73, k74, k75, XXXXXXX, \
131 XXXXXXX, k21, k22, k23, k24, k25, XXXXXXX, XXXXXXX, k81, k82, k83, k84, k85, XXXXXXX, \
132 KC_LSFT, k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, KC_RSFT, \
133 MO(_SPECIAL), k41, k42, k43, k44, TO(_GAME), XXXXXXX, ka2, ka3, ka4, ka5, MO(_SPECIAL), \
134 LT(_LOWER, KC_SPC),HYPR_T(KC_BSPC),KC_LEAD, KC_CCCV,SFT_T(KC_TAB),LT(_RAISE, KC_ENT) )
135
136# define WRAPPER_moonlander_mods( \
137 k11, k12, k13, k14, k15, k71, k72, k73, k74, k75, \
138 k21, k22, k23, k24, k25, k81, k82, k83, k84, k85, \
139 k31, k32, k33, k34, k35, k91, k92, k93, k94, k95, \
140 k41, k42, k43, k44, ka2, ka3, ka4, ka5 \
141 ) WRAPPER_moonlander_common( \
142 k11 , k12 , k13 , k14 , k15, k71, k72, k73, k74, k75, \
143 k21 , SFT_T(k22), GUI_T(k23), ALT_T(k24), k25, k81, ALT_T(k82), GUI_T(k83), SFT_T(k84), k85, \
144 CTL_T(k31), k32 , k33 , k34 , k35, k91, k92, k93, k94, CTL_T(k95), \
145 k41 , k42 , k43 , k44 , ka2, ka3, ka4, ka5 \
146 )
147# define WRAPPER_moonlander_gamepad( \
148 k00, k01, k02, k03, k04, k05, k06, \
149 k10, k11, k12, k13, k14, k15, k16, \
150 k20, k21, k22, k23, k24, k25, k26, \
151 k30, k31, k32, k33, k34, k35, \
152 k40, k41, k42, k43, k44, k53, \
153 k50, k51, k52 \
154 ) WRAPPER_moonlander( \
155 k00, k01, k02, k03, k04, k05, k06, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
156 k10, k11, k12, k13, k14, k15, k16, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
157 k20, k21, k22, k23, k24, k25, k26, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
158 k30, k31, k32, k33, k34, k35, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
159 k40, k41, k42, k43, k44, k53, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
160 k50, k51, k52, XXXXXXX, XXXXXXX, TO(_WORKMAN) \
161 )
162
163# define LAYOUT_moonlander_common(...) WRAPPER_moonlander_common(__VA_ARGS__)
164# define LAYOUT_moonlander_mods(...) WRAPPER_moonlander_mods(__VA_ARGS__)
165# define LAYOUT_moonlander_gamepad(...) WRAPPER_moonlander_gamepad(__VA_ARGS__)
166#elif defined(KEYBOARD_ergodox_ez)
167/** Ergodox EZ Empty
168 .---------------------------------------------. .---------------------------------------------.
169 | | | | | | | | ! | | | | | | |
170 !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
171 | | | | | | | | ! | | | | | | |
172 !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------!
173 | | | | | | |-------! !-------! | | | | | |
174 !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------!
175 | | | | | | | | ! | | | | | | |
176 '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
177 | | | | | | ! | | | | |
178 '------------------------------' '------------------------------'
179 .---------------. .---------------.
180 | | | ! | |
181 .-------+-------+-------! !-------+-------+-------.
182 ! ! | | ! | ! !
183 ! ! !-------! !-------! ! !
184 | | | | ! | | |
185 '-----------------------' '-----------------------'
186
187 ---------- LEFT HAND ----------- ---------- RIGHT HAND ----------
188 ( \
189 L00,L01,L02,L03,L04,L05,L06, R00,R01,R02,R03,R04,R05,R06, \
190 L10,L11,L12,L13,L14,L15,L16, R10,R11,R12,R13,R14,R15,R16, \
191 L20,L21,L22,L23,L24,L25, R21,R22,R23,R24,R25,R26, \
192 L30,L31,L32,L33,L34,L35,L36, R30,R31,R32,R33,R34,R35,R36, \
193 L40,L41,L42,L43,L44, R42,R43,R44,R45,R46, \
194 L55,L56, R50,R51, \
195 L54, R52, \
196 L53,L52,L51, R55,R54,R53 \
197 )
198*/
199# define WRAPPER_ergodox_ez(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
200
201/** Common Wrapper
202 .---------------------------------------------. .---------------------------------------------.
203 | X | X | X | X | X | X | X | ! X | X | X | X | X | X | X |
204 !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
205 | X | | | | | | X | ! X | | | | | | X |
206 !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------!
207 | X | | | | | |-------! !-------! | | | | | X |
208 !-------+-----+-----+-----x-----x-----! X ! ! X !-----x-----x-----+-----+-----+-------!
209 | X | | | | | | | ! | | | | | | X |
210 '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
211 | SPCL | | | | | ! | | | | SPCL |
212 '------------------------------' '------------------------------'
213 .---------------. .---------------.
214 | X | X | ! X | X |
215 .-------+-------+-------! !-------+-------+-------.
216 ! Space ! BSpace| X | ! X | Tab ! Enter !
217 ! / ! / !-------! !-------! / ! / !
218 | LOWER | Hyper | LEAD | ! CCCV | Meh | RAISE |
219 '-----------------------' '-----------------------'
220*/
221# define WRAPPER_ergodox_common( \
222 L11,L12,L13,L14,L15, R11,R12,R13,R14,R15, \
223 L21,L22,L23,L24,L25, R21,R22,R23,R24,R25, \
224 L31,L32,L33,L34,L35, R31,R32,R33,R34,R35, \
225 L41,L42,L43,L44, R42,R43,R44,R45 \
226 ) WRAPPER_ergodox_ez( \
227 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
228 XXXXXXX, L11, L12, L13, L14, L15, XXXXXXX, XXXXXXX, R11, R12, R13, R14, R15, XXXXXXX, \
229 XXXXXXX, L21, L22, L23, L24, L25, R21, R22, R23, R24, R25, XXXXXXX, \
230 KC_LSFT, L31, L32, L33, L34, L35, XXXXXXX, XXXXXXX, R31, R32, R33, R34, R35, KC_RSFT, \
231 MO(_SPECIAL), L41, L42, L43, L44, R42, R43, R44, R45, MO(_SPECIAL), \
232 \
233 XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX, \
234 XXXXXXX, XXXXXXX, \
235 LT(_LOWER, KC_SPC),HYPR_T(KC_BSPC),KC_LEAD, KC_CCCV,SFT_T(KC_TAB),LT(_RAISE, KC_ENT) )
236
237/** Common Wrapper with Mod Tap/Hold overlay
238 .---------------------------------------------. .---------------------------------------------.
239 | X | X | X | X | X | X | X | ! X | X | X | X | X | X | X |
240 !-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
241 | X | | | | | | X | ! X | | | | | | X |
242 !-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------!
243 | X | |Shift| Cmd | Alt | |-------! !-------! | Alt | Cmd |Shift| | X |
244 !-------+-----+-----+-----x-----x-----! X ! ! X !-----x-----x-----+-----+-----+-------!
245 | Sft | Ctl | | | | | | ! | | | | | Ctl | Sft |
246 '-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
247 | SPCL | | | | | ! | | | | SPCL |
248 '------------------------------' '------------------------------'
249 .---------------. .---------------.
250 | X | X | ! X | X |
251 .-------+-------+-------! !-------+-------+-------.
252 ! Space ! BSpace| X | ! X | Tab ! Enter !
253 ! / ! / !-------! !-------! / ! / !
254 | LOWER | Hyper | LEAD | ! CCCV | Meh | RAISE |
255 '-----------------------' '-----------------------'
256*/
257# define WRAPPER_ergodox_mods( \
258 L11,L12,L13,L14,L15, R11,R12,R13,R14,R15, \
259 L21,L22,L23,L24,L25, R21,R22,R23,R24,R25, \
260 L31,L32,L33,L34,L35, R31,R32,R33,R34,R35, \
261 L41,L42,L43,L44, R42,R43,R44,R45 \
262 ) WRAPPER_ergodox_common( \
263 L11 , L12 , L13 , L14 , L15, R11, R12 , R13 , R14 , R15, \
264 L21 , SFT_T(L22), GUI_T(L23), ALT_T(L24), L25, R21, ALT_T(R22), GUI_T(R23), SFT_T(R24), R25, \
265 CTL_T(L31), L32 , L33 , L34 , L35, R31, R32 , R33 , R34 , CTL_T(R35), \
266 L41 , L42 , L43 , L44 , R42 , R43 , R44 , R45 )
267
268// These macros are used when defining layouts in keymap.c
269# define LAYOUT_ergodox_common(...) WRAPPER_ergodox_common(__VA_ARGS__)
270# define LAYOUT_ergodox_mods(...) WRAPPER_ergodox_mods(__VA_ARGS__)
271#endif // END Keyboard specific wrapper defines
272/**
273 * Alpha/Num key wrappers for portability
274 */
275
276// Workman
277#define __________________WORKMN_L1__________________ KC_Q, KC_D, KC_R, KC_W, KC_B
278#define __________________WORKMN_L2__________________ KC_A, KC_S, KC_H, KC_T, KC_G
279#define __________________WORKMN_L3__________________ KC_Z, KC_X, KC_M, KC_C, KC_V
280
281#define __________________WORKMN_R1__________________ KC_J, KC_F, KC_U, KC_P, KC_SCLN
282#define __________________WORKMN_R2__________________ KC_Y, KC_N, KC_E, KC_O, KC_I
283#define __________________WORKMN_R3__________________ KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH
284
285// QWERTY
286#define __________________QWERTY_L1__________________ KC_Q, KC_W, KC_E, KC_R, KC_T
287#define __________________QWERTY_L2__________________ KC_A, KC_S, KC_D, KC_F, KC_G
288#define __________________QWERTY_L3__________________ KC_Z, KC_X, KC_C, KC_V, KC_B
289
290#define __________________QWERTY_R1__________________ KC_Y, KC_U, KC_I, KC_O, KC_P
291#define __________________QWERTY_R2__________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN
292#define __________________QWERTY_R3__________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
293
294#define ________________QWERTY_R1_LHS________________ KC_P, KC_O, KC_I, KC_U, KC_Y
295#define ________________QWERTY_R2_LHS________________ KC_SCLN, KC_L, KC_K, KC_J, KC_H
296#define ________________QWERTY_R3_LHS________________ KC_SLSH, KC_DOT, KC_COMM, KC_M, KC_N
297
298// Nums
299#define ___________________NUMS_L____________________ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6
300#define ___________________NUMS_R____________________ KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL
301
302// Lower
303#define __________________LOWER_L1___________________ KC_PGUP, KC_TAB, KC_UP, KC_ENT, KC_PGDN
304#define __________________LOWER_L2___________________ KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END
305#define __________________LOWER_L3___________________ KC_ESC, KC_BSPC, KC_CUT, KC_DEL, KC_CCCV
306
307#define __________________LOWER_R1___________________ XXXXXXX, KC_7, KC_8, KC_9, KC_ASTR
308#define __________________LOWER_R2___________________ XXXXXXX, KC_4, KC_5, KC_6, KC_SLSH
309#define __________________LOWER_R3___________________ XXXXXXX, KC_1, KC_2, KC_3, KC_MINS
310// Relevant keys: -> KC_0, KC_DOT, KC_COMM, KC_PLUS <- these keys break our lovely wrapper pattern
311
312// Raise
313#define __________________RAISE_L1___________________ KC_PIPE, KC_UNDS, KC_LBRC, KC_RBRC, KC_AMPR
314#define __________________RAISE_L2___________________ KC_BSLS, KC_SLSH, KC_LCBR, KC_RCBR, KC_ASTR
315#define __________________RAISE_L3___________________ KC_HASH, KC_DLR , KC_PERC, KC_TILD, KC_GRV
316
317#define __________________RAISE_R1___________________ KC_EXLM, KC_LABK, KC_RABK, KC_MINS, KC_SCLN
318#define __________________RAISE_R2___________________ KC_QUES, KC_LPRN, KC_RPRN, KC_EQL, KC_COLN
319#define __________________RAISE_R3___________________ KC_AT, KC_QUOT, KC_DQUO, KC_PLUS, KC_CIRC
320
321// Adjust
322#define __________________ADJUST_L1__________________ KC_MAKE, DEBUG, RESET, TERM_ON, TERM_OFF
323#define __________________ADJUST_L2__________________ KC__MUTE, KC__VOLDOWN, KC__VOLUP, KC_MPLY, KC_MNXT
324#define __________________ADJUST_L3__________________ KC_VRSN, AU_ON, AU_OFF, CG_SWAP, CG_NORM
325
326#define __________________ADJUST_R1__________________ MU_MOD, MU_ON, MU_OFF, MI_ON, MI_OFF
327#define __________________ADJUST_R2__________________ MUV_IN, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD
328#define __________________ADJUST_R3__________________ MUV_DE, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD
329// clang-format on
diff --git a/users/kuatsure/kuatsure.c b/users/kuatsure/kuatsure.c
index f935e83c7..88bf6790a 100644
--- a/users/kuatsure/kuatsure.c
+++ b/users/kuatsure/kuatsure.c
@@ -3,7 +3,8 @@
3 3
4qk_tap_dance_action_t tap_dance_actions[] = { 4qk_tap_dance_action_t tap_dance_actions[] = {
5 [TD_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LT), 5 [TD_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LT),
6 [TD_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_GT) 6 [TD_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_GT),
7 [TD_SLSH] = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_BSLS),
7}; 8};
8 9
9__attribute__ ((weak)) 10__attribute__ ((weak))
@@ -29,15 +30,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
29 30
30 case KB_FLSH: 31 case KB_FLSH:
31 if (!record->event.pressed) { 32 if (!record->event.pressed) {
32 SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP 33 SEND_STRING(
33 #if (defined(BOOTLOADER_DFU) || defined(BOOTLOADER_LUFA_DFU) || defined(BOOTLOADER_QMK_DFU)) 34 "qmk flash -kb " QMK_KEYBOARD " -km " QMK_KEYMAP
34 ":dfu "
35 #elif defined(BOOTLOADER_HALFKAY)
36 ":teensy "
37 #elif defined(BOOTLOADER_CATERINA)
38 ":avrdude "
39 #endif
40 SS_TAP(X_ENTER)
41 ); 35 );
42 36
43 reset_keyboard(); 37 reset_keyboard();
diff --git a/users/kuatsure/kuatsure.h b/users/kuatsure/kuatsure.h
index 8961d5621..ca2c91c9b 100644
--- a/users/kuatsure/kuatsure.h
+++ b/users/kuatsure/kuatsure.h
@@ -11,13 +11,18 @@ enum kuatsure_keycodes {
11 USER_SAFE_RANGE, 11 USER_SAFE_RANGE,
12}; 12};
13 13
14#define ONESHOT_TAP_TOGGLE 2
15#define KT_LSFT OSM(MOD_LSFT)
16
14enum { 17enum {
15 TD_LBRC = 0, 18 TD_LBRC = 0,
16 TD_RBRC, 19 TD_RBRC,
20 TD_SLSH
17}; 21};
18 22
19#define KT_LBRC TD(TD_LBRC) 23#define KT_LBRC TD(TD_LBRC)
20#define KT_RBRC TD(TD_RBRC) 24#define KT_RBRC TD(TD_RBRC)
25#define KT_SLSH TD(TD_SLSH)
21 26
22#define TAPPING_TERM 200 27#define TAPPING_TERM 200
23 28
@@ -33,8 +38,6 @@ void tmux_pane_zoom(void);
33#undef LEADER_TIMEOUT 38#undef LEADER_TIMEOUT
34#define LEADER_TIMEOUT 300 39#define LEADER_TIMEOUT 300
35 40
36#define LAYOUT_preonic_grid_wrapper(...) LAYOUT_preonic_grid(__VA_ARGS__)
37
38#define _________________NUMBER_L1_________________ KC_1, KC_2, KC_3, KC_4, KC_5 41#define _________________NUMBER_L1_________________ KC_1, KC_2, KC_3, KC_4, KC_5
39#define _________________NUMBER_R1_________________ KC_6, KC_7, KC_8, KC_9, KC_0 42#define _________________NUMBER_R1_________________ KC_6, KC_7, KC_8, KC_9, KC_0
40 43
@@ -47,7 +50,8 @@ void tmux_pane_zoom(void);
47 50
48#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P 51#define _________________QWERTY_R1_________________ KC_Y, KC_U, KC_I, KC_O, KC_P
49#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN 52#define _________________QWERTY_R2_________________ KC_H, KC_J, KC_K, KC_L, KC_SCLN
50#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH 53#define _________________QWERTY_R3_________________ KC_N, KC_M, KC_COMM, KC_DOT, KT_SLSH
54#define _________________QWERTY_R3_M_______________ KC_N, KC_M, KC_COMM, KC_DOT, KC_UP
51 55
52#define ____________FUNCTION_1____________ KC_F1, KC_F2, KC_F3, KC_F4 56#define ____________FUNCTION_1____________ KC_F1, KC_F2, KC_F3, KC_F4
53#define ____________FUNCTION_2____________ KC_F5, KC_F6, KC_F7, KC_F8 57#define ____________FUNCTION_2____________ KC_F5, KC_F6, KC_F7, KC_F8