aboutsummaryrefslogtreecommitdiff
path: root/keyboards/custommk/genesis
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/custommk/genesis')
-rw-r--r--keyboards/custommk/genesis/config.h20
-rw-r--r--keyboards/custommk/genesis/readme.md22
-rw-r--r--keyboards/custommk/genesis/rev1/config.h65
-rw-r--r--keyboards/custommk/genesis/rev1/info.json14
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/default/keymap.c37
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/default/readme.md6
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/numpad/keymap.c51
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/numpad/readme.md3
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/via/keymap.c51
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/via/readme.md3
-rw-r--r--keyboards/custommk/genesis/rev1/keymaps/via/rules.mk2
-rw-r--r--keyboards/custommk/genesis/rev1/readme.md19
-rw-r--r--keyboards/custommk/genesis/rev1/rev1.c38
-rw-r--r--keyboards/custommk/genesis/rev1/rev1.h48
-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.json74
-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.mk19
-rw-r--r--keyboards/custommk/genesis/rules.mk21
29 files changed, 1029 insertions, 0 deletions
diff --git a/keyboards/custommk/genesis/config.h b/keyboards/custommk/genesis/config.h
new file mode 100644
index 000000000..72f33c155
--- /dev/null
+++ b/keyboards/custommk/genesis/config.h
@@ -0,0 +1,20 @@
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
20#include "config_common.h"
diff --git a/keyboards/custommk/genesis/readme.md b/keyboards/custommk/genesis/readme.md
new file mode 100644
index 000000000..bf967a2bd
--- /dev/null
+++ b/keyboards/custommk/genesis/readme.md
@@ -0,0 +1,22 @@
1# Genesis
2
3Genesis is a 5x4 ortholinear macro pad designed and produced by customMK.
4
5![Genesis Macro Pad](https://i.imgur.com/voBjLrM.jpeg)
6![Genesis Macro Pad PCB](https://i.imgur.com/ST2vtkV.jpeg)
7
8* Keyboard Maintainer: [customMK](https://github.com/customMK)
9* Hardware Supported: Genesis Macro Pad
10* Hardware Availability: [customMK](https://shop.custommk.com/products/genesis_macropad)
11
12Make example for this keyboard (after setting up your build environment):
13
14 make custommk/genesis:default
15
16Flashing example for this keyboard:
17
18 make custommk/genesis:default:flash
19
20Genesis 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
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/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/rev1/info.json b/keyboards/custommk/genesis/rev1/info.json
new file mode 100644
index 000000000..a000b9cfb
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/info.json
@@ -0,0 +1,14 @@
1{
2 "keyboard_name": "Genesis Rev1",
3 "url": "https://www.customMK.com",
4 "maintainer": "customMK",
5 "layouts": {
6 "LAYOUT_ortho_5x4": {
7 "layout": [{"label":"MO(1)", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"Mute", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"Pg Up", "x":3, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Pg Dn", "x":3, "y":3}, {"label":"0", "x":0, "y":4}, {"label":"Spc", "x":1, "y":4}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}]
8 },
9 "LAYOUT_numpad_5x4": {
10 "layout": [{"label":"MO(1)", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Enter", "x":3, "y":3, "h":2}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}]
11 }
12
13 }
14}
diff --git a/keyboards/custommk/genesis/rev1/keymaps/default/keymap.c b/keyboards/custommk/genesis/rev1/keymaps/default/keymap.c
new file mode 100644
index 000000000..1b061b034
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
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
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 [0] = LAYOUT_ortho_5x4(
22 MO(1), KC_PSLS, KC_PAST, KC_PMNS,
23 KC_P7, KC_P8, KC_P9, KC_BSPC,
24 KC_P4, KC_P5, KC_P6, KC_PPLS,
25 KC_P1, KC_P2, KC_P3, KC_CAPS,
26 KC_P0, KC_SPC, KC_PDOT, KC_ENT),
27
28 [1] = LAYOUT_ortho_5x4(
29 KC_TRNS, KC_VOLU, RGB_TOG, RGB_MOD,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33 RGB_HUI, KC_TRNS, KC_TRNS, RGB_HUD),
34
35};
36
37
diff --git a/keyboards/custommk/genesis/rev1/keymaps/default/readme.md b/keyboards/custommk/genesis/rev1/keymaps/default/readme.md
new file mode 100644
index 000000000..202402d83
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/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/rev1/keymaps/numpad/keymap.c b/keyboards/custommk/genesis/rev1/keymaps/numpad/keymap.c
new file mode 100644
index 000000000..97970191d
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/keymaps/numpad/keymap.c
@@ -0,0 +1,51 @@
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
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 [0] = LAYOUT_numpad_5x4(
22 MO(1), KC_PSLS, KC_PAST, KC_PMNS,
23 KC_P7, KC_P8, KC_P9,
24 KC_P4, KC_P5, KC_P6, KC_PPLS,
25 KC_P1, KC_P2, KC_P3,
26 KC_P0, KC_PDOT, KC_ENT),
27
28 [1] = LAYOUT_numpad_5x4(
29 KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD,
30 KC_TRNS, KC_TRNS, KC_TRNS,
31 RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD,
32 KC_TRNS, KC_TRNS, KC_TRNS,
33 RGB_HUI, KC_TRNS, RGB_HUD),
34
35 [2] = LAYOUT_numpad_5x4(
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
37 KC_TRNS, KC_TRNS, KC_TRNS,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS),
41
42 [3] = LAYOUT_numpad_5x4(
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
44 KC_TRNS, KC_TRNS, KC_TRNS,
45 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
46 KC_TRNS, KC_TRNS, KC_TRNS,
47 KC_TRNS, KC_TRNS, KC_TRNS),
48
49};
50
51
diff --git a/keyboards/custommk/genesis/rev1/keymaps/numpad/readme.md b/keyboards/custommk/genesis/rev1/keymaps/numpad/readme.md
new file mode 100644
index 000000000..795e4341a
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/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/rev1/keymaps/via/keymap.c b/keyboards/custommk/genesis/rev1/keymaps/via/keymap.c
new file mode 100644
index 000000000..6b795f4c2
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
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
19const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
20
21 [0] = LAYOUT_ortho_5x4(
22 MO(1), KC_PSLS, KC_PAST, KC_PMNS,
23 KC_P7, KC_P8, KC_P9, KC_PGUP,
24 KC_P4, KC_P5, KC_P6, KC_PPLS,
25 KC_P1, KC_P2, KC_P3, KC_PGDN,
26 KC_P0, KC_SPC, KC_PDOT, KC_PENT),
27
28 [1] = LAYOUT_ortho_5x4(
29 KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33 RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS),
34
35 [2] = LAYOUT_ortho_5x4(
36 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
37 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
41
42 [3] = LAYOUT_ortho_5x4(
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
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
49};
50
51
diff --git a/keyboards/custommk/genesis/rev1/keymaps/via/readme.md b/keyboards/custommk/genesis/rev1/keymaps/via/readme.md
new file mode 100644
index 000000000..aa70d6225
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/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/rev1/keymaps/via/rules.mk b/keyboards/custommk/genesis/rev1/keymaps/via/rules.mk
new file mode 100644
index 000000000..43061db1d
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/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/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/rev1/rev1.c b/keyboards/custommk/genesis/rev1/rev1.c
new file mode 100644
index 000000000..ac40eedbf
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/rev1.c
@@ -0,0 +1,38 @@
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 "rev1.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 true;
38}
diff --git a/keyboards/custommk/genesis/rev1/rev1.h b/keyboards/custommk/genesis/rev1/rev1.h
new file mode 100644
index 000000000..0516b41ad
--- /dev/null
+++ b/keyboards/custommk/genesis/rev1/rev1.h
@@ -0,0 +1,48 @@
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}
34
35#define LAYOUT_ortho_5x4( \
36 K00, K01, K02, K03, \
37 K10, K11, K12, K13, \
38 K20, K21, K22, K23, \
39 K30, K31, K32, K33, \
40 K40, K41, K42, K43 \
41) { \
42 { K00, K01, K02, K03 }, \
43 { K10, K11, K12, K13 }, \
44 { K20, K21, K22, K23 }, \
45 { K30, K31, K32, K33 }, \
46 { K40, K41, K42, K43 } \
47}
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..16501ca1d
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/info.json
@@ -0,0 +1,74 @@
1{
2 "keyboard_name": "Genesis Rev2",
3 "url": "https://www.customMK.com",
4 "maintainer": "customMK",
5 "layouts": {
6 "LAYOUT_ortho_5x4": {
7 "layout": [{"label":"MO(1)", "x":0, "y":0},
8 {"label":"/", "x":1, "y":0},
9 {"label":"*", "x":2, "y":0},
10 {"label":"Mute", "x":3, "y":0},
11 {"label":"7", "x":0, "y":1},
12 {"label":"8", "x":1, "y":1},
13 {"label":"9", "x":2, "y":1},
14 {"label":"+", "x":3, "y":1},
15 {"label":"4", "x":0, "y":2},
16 {"label":"5", "x":1, "y":2},
17 {"label":"6", "x":2, "y":2},
18 {"label":"Pg Up", "x":3, "y":2},
19 {"label":"1", "x":0, "y":3},
20 {"label":"2", "x":1, "y":3},
21 {"label":"3", "x":2, "y":3},
22 {"label":"Pg Dn", "x":3, "y":3},
23 {"label":"0", "x":0, "y":4},
24 {"label":"Spc", "x":1, "y":4},
25 {"label":".", "x":2, "y":4},
26 {"label":"Enter", "x":3, "y":4}]
27 },
28 "LAYOUT_numpad_5x4": {
29 "layout": [{"label":"MO(1)", "x":0, "y":0},
30 {"label":"/", "x":1, "y":0},
31 {"label":"*", "x":2, "y":0},
32 {"label":"-", "x":3, "y":0},
33 {"label":"7", "x":0, "y":1},
34 {"label":"8", "x":1, "y":1},
35 {"label":"9", "x":2, "y":1},
36 {"label":"+", "x":3, "y":1, "h":2},
37 {"label":"4", "x":0, "y":2},
38 {"label":"5", "x":1, "y":2},
39 {"label":"6", "x":2, "y":2},
40 {"label":"1", "x":0, "y":3},
41 {"label":"2", "x":1, "y":3},
42 {"label":"3", "x":2, "y":3},
43 {"label":"Enter", "x":3, "y":3, "h":2},
44 {"label":"0", "x":0, "y":4, "w":2},
45 {"label":".", "x":2, "y":4}]
46 },
47 "LAYOUT_via_6x4": {
48 "layout": [{"label":"Vol-", "x":0, "y":0},
49 {"label":"Vol+", "x":1, "y":0},
50 {"label":"Vol-", "x":3, "y":0},
51 {"label":"Vol+", "x":4, "y":0},
52 {"label":"MO(1)", "x":0.5, "y":1.1},
53 {"label":"/", "x":1.5, "y":1.1},
54 {"label":"*", "x":2.5, "y":1.1},
55 {"label":"Mute", "x":3.5, "y":1.1},
56 {"label":"7", "x":0.5, "y":2.1},
57 {"label":"8", "x":1.5, "y":2.1},
58 {"label":"9", "x":2.5, "y":2.1},
59 {"label":"+", "x":3.5, "y":2.1},
60 {"label":"4", "x":0.5, "y":3.1},
61 {"label":"5", "x":1.5, "y":3.1},
62 {"label":"6", "x":2.5, "y":3.1},
63 {"label":"Pg Up", "x":3.5, "y":3.1},
64 {"label":"1", "x":0.5, "y":4.1},
65 {"label":"2", "x":1.5, "y":4.1},
66 {"label":"3", "x":2.5, "y":4.1},
67 {"label":"Pg Dn", "x":3.5, "y":4.1},
68 {"label":"0", "x":0.5, "y":5.1},
69 {"label":"Spc", "x":1.5, "y":5.1},
70 {"label":".", "x":2.5, "y":5.1},
71 {"label":"Enter", "x":3.5, "y":5.1}]
72 }
73 }
74}
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..00195cec9
--- /dev/null
+++ b/keyboards/custommk/genesis/rev2/rules.mk
@@ -0,0 +1,19 @@
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 = yes # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = yes # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
18AUDIO_ENABLE = no # Audio output
19ENCODER_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/custommk/genesis/rules.mk b/keyboards/custommk/genesis/rules.mk
new file mode 100644
index 000000000..dabe21110
--- /dev/null
+++ b/keyboards/custommk/genesis/rules.mk
@@ -0,0 +1,21 @@
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 = yes # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = yes # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
18AUDIO_ENABLE = no # Audio output
19ENCODER_ENABLE = yes
20
21DEFAULT_FOLDER = custommk/genesis/rev2