aboutsummaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
authormechlovin <57231893+mechlovin@users.noreply.github.com>2021-04-09 11:48:30 -0700
committerGitHub <noreply@github.com>2021-04-09 20:48:30 +0200
commitf744e22b4944c4e8e5e71a4eb424dd4619c3e57d (patch)
tree71dd02ac6eda2304e6acabd902b94abdd9bd568a /keyboards
parent1a913aa12eda0c62faba160dad55befeafdf4dc0 (diff)
downloadqmk_firmware-f744e22b4944c4e8e5e71a4eb424dd4619c3e57d.tar.gz
qmk_firmware-f744e22b4944c4e8e5e71a4eb424dd4619c3e57d.zip
Add TH1800 PCB, Hex6C PCB, Rogue87 PCB, Rouge87 PCB, Infinity87 series (#11977)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Erovia <Erovia@users.noreply.github.com> Co-authored-by: vuhopkep <boy9x0@gmail.com>
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/mechlovin/hex6c/config.h65
-rw-r--r--keyboards/mechlovin/hex6c/hex6c.c17
-rw-r--r--keyboards/mechlovin/hex6c/hex6c.h35
-rw-r--r--keyboards/mechlovin/hex6c/info.json128
-rw-r--r--keyboards/mechlovin/hex6c/keymaps/default/keymap.c40
-rw-r--r--keyboards/mechlovin/hex6c/keymaps/default/readme.md1
-rw-r--r--keyboards/mechlovin/hex6c/keymaps/via/keymap.c68
-rw-r--r--keyboards/mechlovin/hex6c/keymaps/via/rules.mk1
-rw-r--r--keyboards/mechlovin/hex6c/readme.md21
-rw-r--r--keyboards/mechlovin/hex6c/rules.mk20
-rw-r--r--keyboards/mechlovin/infinity87/config.h81
-rw-r--r--keyboards/mechlovin/infinity87/infinity87.h13
-rw-r--r--keyboards/mechlovin/infinity87/keymaps/via/rules.mk3
-rw-r--r--keyboards/mechlovin/infinity87/rev1/config.h31
-rw-r--r--keyboards/mechlovin/infinity87/rev1/readme.md16
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rev1.c17
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rev1.h19
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/config.h21
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/info.json99
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/keymap.c27
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/readme.md1
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/keymap.c53
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/readme.md1
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/rules.mk2
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/readme.md19
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/rogue87.h34
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/rules.mk1
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/config.h21
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/info.json101
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/keymap.c27
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/readme.md1
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/keymap.c53
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/readme.md1
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/rules.mk2
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/readme.md19
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/rouge87.h35
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/rules.mk1
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rules.mk6
-rw-r--r--keyboards/mechlovin/infinity87/rev1/standard/config.h40
-rw-r--r--keyboards/mechlovin/infinity87/rev1/standard/info.json (renamed from keyboards/mechlovin/infinity87/info.json)0
-rw-r--r--keyboards/mechlovin/infinity87/rev1/standard/readme.md15
-rw-r--r--keyboards/mechlovin/infinity87/rev1/standard/rules.mk1
-rw-r--r--keyboards/mechlovin/infinity87/rev2/config.h48
-rw-r--r--keyboards/mechlovin/infinity87/rev2/info.json105
-rw-r--r--keyboards/mechlovin/infinity87/rev2/matrix.c442
-rw-r--r--keyboards/mechlovin/infinity87/rev2/readme.md23
-rw-r--r--keyboards/mechlovin/infinity87/rev2/rev2.c57
-rw-r--r--keyboards/mechlovin/infinity87/rev2/rev2.h19
-rw-r--r--keyboards/mechlovin/infinity87/rev2/rules.mk19
-rw-r--r--keyboards/mechlovin/infinity87/rgb_rev1/config.h51
-rw-r--r--keyboards/mechlovin/infinity87/rgb_rev1/info.json105
-rw-r--r--keyboards/mechlovin/infinity87/rgb_rev1/readme.md21
-rw-r--r--keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c159
-rw-r--r--keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.h19
-rw-r--r--keyboards/mechlovin/infinity87/rgb_rev1/rules.mk5
-rw-r--r--keyboards/mechlovin/infinity87/rules.mk14
-rw-r--r--keyboards/mechlovin/th1800/config.h53
-rw-r--r--keyboards/mechlovin/th1800/info.json119
-rw-r--r--keyboards/mechlovin/th1800/keymaps/default/keymap.c29
-rw-r--r--keyboards/mechlovin/th1800/keymaps/default/readme.md1
-rw-r--r--keyboards/mechlovin/th1800/keymaps/via/keymap.c56
-rw-r--r--keyboards/mechlovin/th1800/keymaps/via/readme.md2
-rw-r--r--keyboards/mechlovin/th1800/keymaps/via/rules.mk1
-rw-r--r--keyboards/mechlovin/th1800/readme.md23
-rw-r--r--keyboards/mechlovin/th1800/rules.mk25
-rw-r--r--keyboards/mechlovin/th1800/th1800.c17
-rw-r--r--keyboards/mechlovin/th1800/th1800.h36
67 files changed, 2526 insertions, 80 deletions
diff --git a/keyboards/mechlovin/hex6c/config.h b/keyboards/mechlovin/hex6c/config.h
new file mode 100644
index 000000000..b79b5211c
--- /dev/null
+++ b/keyboards/mechlovin/hex6c/config.h
@@ -0,0 +1,65 @@
1/*
2Copyright 2021 Mechlovin' Studio
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 0x4D4C
24#define PRODUCT_ID 0x6C01
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Mechlovin Studio and Hex Keyboard
27#define PRODUCT Hex6C
28
29/* key matrix size */
30#define MATRIX_ROWS 6
31#define MATRIX_COLS 21
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 { A10, B13, B12, B11, C14, C15 }
44#define MATRIX_COL_PINS { A13, A14, A1, A0, C13, B9, B4, B7, B8, B5, B6, A9, A5, A6, A7, B1, B2, B10, B3, B14, B15 }
45#define UNUSED_PINS
46
47/* COL2ROW, ROW2COL */
48#define DIODE_DIRECTION COL2ROW
49
50#define LED_NUM_LOCK_PIN A3
51#define LED_CAPS_LOCK_PIN A4
52#define LED_SCROLL_LOCK_PIN A8
53#define LED_PIN_ON_STATE 0
54
55#define BACKLIGHT_PIN B0
56#define BACKLIGHT_BREATHING
57#define BACKLIGHT_PWM_DRIVER PWMD3
58#define BACKLIGHT_PWM_CHANNEL 3
59
60#define ENCODERS_PAD_A { A15 }
61#define ENCODERS_PAD_B { A2 }
62#define ENCODER_RESOLUTION 4
63
64#define TAP_CODE_DELAY 10
65#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 2047 \ No newline at end of file
diff --git a/keyboards/mechlovin/hex6c/hex6c.c b/keyboards/mechlovin/hex6c/hex6c.c
new file mode 100644
index 000000000..255121dc1
--- /dev/null
+++ b/keyboards/mechlovin/hex6c/hex6c.c
@@ -0,0 +1,17 @@
1/* Copyright 2021 Mechlovin' Studio
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 "hex6c.h"
diff --git a/keyboards/mechlovin/hex6c/hex6c.h b/keyboards/mechlovin/hex6c/hex6c.h
new file mode 100644
index 000000000..eb5cd735c
--- /dev/null
+++ b/keyboards/mechlovin/hex6c/hex6c.h
@@ -0,0 +1,35 @@
1/* Copyright 2021 Mechlovin' Studio
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_all( \
22 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, K0J, K0K, \
23 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K2H, K1I, K1J, K1K, \
24 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K3G, K2I, K2J, K2K, \
25 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3H, \
26 K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4J, \
27 K50, K51, K52, K53, K54, K55, K56, K5A, K5E, K5F, K5G, K5H, K5I, K5J, K5K \
28) { \
29 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, K0J, K0K }, \
30 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K }, \
31 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K }, \
32 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, KC_NO, KC_NO, KC_NO }, \
33 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, KC_NO, K4J, KC_NO }, \
34 { K50, K51, K52, K53, K54, K55, K56, KC_NO, KC_NO, KC_NO, K5A, KC_NO, KC_NO, KC_NO, K5E, K5F, K5G, K5H, K5I, K5J, K5K }, \
35}
diff --git a/keyboards/mechlovin/hex6c/info.json b/keyboards/mechlovin/hex6c/info.json
new file mode 100644
index 000000000..f7692bb80
--- /dev/null
+++ b/keyboards/mechlovin/hex6c/info.json
@@ -0,0 +1,128 @@
1{
2 "keyboard_name": "hex-6C",
3 "url": "",
4 "maintainer": "Mechlovin' Studio",
5 "width": 22.5,
6 "height": 6.25,
7 "layouts": {
8 "LAYOUT_all": {
9 "layout": [
10 {"label":"K00 (B0,B6)", "x":0, "y":0},
11 {"label":"K01 (B0,B7)", "x":1, "y":0},
12 {"label":"K02 (B0,C0)", "x":2, "y":0},
13 {"label":"K03 (B0,C1)", "x":3, "y":0},
14 {"label":"K04 (B0,C2)", "x":4.25, "y":0},
15 {"label":"K05 (B0,C3)", "x":5.5, "y":0},
16 {"label":"K06 (B0,C4)", "x":6.5, "y":0},
17 {"label":"K07 (B0,C5)", "x":7.5, "y":0},
18 {"label":"K08 (B0,C6)", "x":8.5, "y":0},
19 {"label":"K09 (B0,C7)", "x":9.75, "y":0},
20 {"label":"K0A (B0,D0)", "x":10.75, "y":0},
21 {"label":"K0B (B0,D1)", "x":11.75, "y":0},
22 {"label":"K0C (B0,D2)", "x":12.75, "y":0},
23 {"label":"K0D (B0,D3)", "x":14, "y":0},
24 {"label":"K0E (B0,D4)", "x":15, "y":0},
25 {"label":"K0F (B0,D5)", "x":16, "y":0},
26 {"label":"K0G (B0,D6)", "x":17, "y":0},
27 {"label":"K0H (B0,D7)", "x":18.25, "y":0},
28 {"label":"K0I (B0,E0)", "x":19.5, "y":0},
29 {"label":"K0J (B0,E1)", "x":20.5, "y":0},
30 {"label":"K0K (B0,E2)", "x":21.5, "y":0},
31 {"label":"K10 (B1,B6)", "x":0, "y":1.25},
32 {"label":"K11 (B1,B7)", "x":1, "y":1.25},
33 {"label":"K12 (B1,C0)", "x":2, "y":1.25},
34 {"label":"K13 (B1,C1)", "x":3, "y":1.25},
35 {"label":"K14 (B1,C2)", "x":4.25, "y":1.25},
36 {"label":"K15 (B1,C3)", "x":5.25, "y":1.25},
37 {"label":"K16 (B1,C4)", "x":6.25, "y":1.25},
38 {"label":"K17 (B1,C5)", "x":7.25, "y":1.25},
39 {"label":"K18 (B1,C6)", "x":8.25, "y":1.25},
40 {"label":"K19 (B1,C7)", "x":9.25, "y":1.25},
41 {"label":"K1A (B1,D0)", "x":10.25, "y":1.25},
42 {"label":"K1B (B1,D1)", "x":11.25, "y":1.25},
43 {"label":"K1C (B1,D2)", "x":12.25, "y":1.25},
44 {"label":"K1D (B1,D3)", "x":13.25, "y":1.25},
45 {"label":"K1E (B1,D4)", "x":14.25, "y":1.25},
46 {"label":"K1F (B1,D5)", "x":15.25, "y":1.25},
47 {"label":"K1G (B1,D6)", "x":16.25, "y":1.25},
48 {"label":"K1H (B1,D7)", "x":17.25, "y":1.25},
49 {"label":"K2H (B2,D7)", "x":18.25, "y":1.25},
50 {"label":"K1I (B1,E0)", "x":19.5, "y":1.25},
51 {"label":"K1J (B1,E1)", "x":20.5, "y":1.25},
52 {"label":"K1K (B1,E2)", "x":21.5, "y":1.25},
53 {"label":"K20 (B2,B6)", "x":0, "y":2.25},
54 {"label":"K21 (B2,B7)", "x":1, "y":2.25},
55 {"label":"K22 (B2,C0)", "x":2, "y":2.25},
56 {"label":"K23 (B2,C1)", "x":3, "y":2.25},
57 {"label":"K24 (B2,C2)", "x":4.25, "y":2.25, "w":1.5},
58 {"label":"K25 (B2,C3)", "x":5.75, "y":2.25},
59 {"label":"K26 (B2,C4)", "x":6.75, "y":2.25},
60 {"label":"K27 (B2,C5)", "x":7.75, "y":2.25},
61 {"label":"K28 (B2,C6)", "x":8.75, "y":2.25},
62 {"label":"K29 (B2,C7)", "x":9.75, "y":2.25},
63 {"label":"K2A (B2,D0)", "x":10.75, "y":2.25},
64 {"label":"K2B (B2,D1)", "x":11.75, "y":2.25},
65 {"label":"K2C (B2,D2)", "x":12.75, "y":2.25},
66 {"label":"K2D (B2,D3)", "x":13.75, "y":2.25},
67 {"label":"K2E (B2,D4)", "x":14.75, "y":2.25},
68 {"label":"K2F (B2,D5)", "x":15.75, "y":2.25},
69 {"label":"K2G (B2,D6)", "x":16.75, "y":2.25},
70 {"label":"K3G (B3,D6)", "x":17.75, "y":2.25, "w":1.5},
71 {"label":"K2I (B2,E0)", "x":19.5, "y":2.25},
72 {"label":"K2J (B2,E1)", "x":20.5, "y":2.25},
73 {"label":"K2K (B2,E2)", "x":21.5, "y":2.25},
74 {"label":"K30 (B3,B6)", "x":0, "y":3.25},
75 {"label":"K31 (B3,B7)", "x":1, "y":3.25},
76 {"label":"K32 (B3,C0)", "x":2, "y":3.25},
77 {"label":"K33 (B3,C1)", "x":3, "y":3.25},
78 {"label":"K34 (B3,C2)", "x":4.25, "y":3.25, "w":1.75},
79 {"label":"K35 (B3,C3)", "x":6, "y":3.25},
80 {"label":"K36 (B3,C4)", "x":7, "y":3.25},
81 {"label":"K37 (B3,C5)", "x":8, "y":3.25},
82 {"label":"K38 (B3,C6)", "x":9, "y":3.25},
83 {"label":"K39 (B3,C7)", "x":10, "y":3.25},
84 {"label":"K3A (B3,D0)", "x":11, "y":3.25},
85 {"label":"K3B (B3,D1)", "x":12, "y":3.25},
86 {"label":"K3C (B3,D2)", "x":13, "y":3.25},
87 {"label":"K3D (B3,D3)", "x":14, "y":3.25},
88 {"label":"K3E (B3,D4)", "x":15, "y":3.25},
89 {"label":"K3F (B3,D5)", "x":16, "y":3.25},
90 {"label":"K3H (B3,D7)", "x":17, "y":3.25, "w":2.25},
91 {"label":"K40 (B4,B6)", "x":0, "y":4.25},
92 {"label":"K41 (B4,B7)", "x":1, "y":4.25},
93 {"label":"K42 (B4,C0)", "x":2, "y":4.25},
94 {"label":"K43 (B4,C1)", "x":3, "y":4.25},
95 {"label":"K44 (B4,C2)", "x":4.25, "y":4.25, "w":1.25},
96 {"label":"K45 (B4,C3)", "x":5.5, "y":4.25},
97 {"label":"K46 (B4,C4)", "x":6.5, "y":4.25},
98 {"label":"K47 (B4,C5)", "x":7.5, "y":4.25},
99 {"label":"K48 (B4,C6)", "x":8.5, "y":4.25},
100 {"label":"K49 (B4,C7)", "x":9.5, "y":4.25},
101 {"label":"K4A (B4,D0)", "x":10.5, "y":4.25},
102 {"label":"K4B (B4,D1)", "x":11.5, "y":4.25},
103 {"label":"K4C (B4,D2)", "x":12.5, "y":4.25},
104 {"label":"K4D (B4,D3)", "x":13.5, "y":4.25},
105 {"label":"K4E (B4,D4)", "x":14.5, "y":4.25},
106 {"label":"K4F (B4,D5)", "x":15.5, "y":4.25},
107 {"label":"K4G (B4,D6)", "x":16.5, "y":4.25, "w":1.75},
108 {"label":"K4H (B4,D7)", "x":18.25, "y":4.25},
109 {"label":"K4J (B4,E1)", "x":20.5, "y":4.25},
110 {"label":"K50 (B5,B6)", "x":0, "y":5.25},
111 {"label":"K51 (B5,B7)", "x":1, "y":5.25},
112 {"label":"K52 (B5,C0)", "x":2, "y":5.25},
113 {"label":"K53 (B5,C1)", "x":3, "y":5.25},
114 {"label":"K54 (B5,C2)", "x":4.25, "y":5.25, "w":1.25},
115 {"label":"K55 (B5,C3)", "x":5.5, "y":5.25, "w":1.25},
116 {"label":"K56 (B5,C4)", "x":6.75, "y":5.25, "w":1.25},
117 {"label":"K5A (B5,D0)", "x":8, "y":5.25, "w":6.25},
118 {"label":"K5E (B5,D4)", "x":14.25, "y":5.25, "w":1.25},
119 {"label":"K5F (B5,D5)", "x":15.5, "y":5.25, "w":1.25},
120 {"label":"K5G (B5,D6)", "x":16.75, "y":5.25, "w":1.25},
121 {"label":"K5H (B5,D7)", "x":18, "y":5.25, "w":1.25},
122 {"label":"K5I (B5,E0)", "x":19.5, "y":5.25},
123 {"label":"K5J (B5,E1)", "x":20.5, "y":5.25},
124 {"label":"K5K (B5,E2)", "x":21.5, "y":5.25}
125 ]
126 }
127 }
128}
diff --git a/keyboards/mechlovin/hex6c/keymaps/default/keymap.c b/keyboards/mechlovin/hex6c/keymaps/default/keymap.c
new file mode 100644
index 000000000..c8ff6dad1
--- /dev/null
+++ b/keyboards/mechlovin/hex6c/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
1/* Copyright 2021 Mechlovin' Studio
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT_all(
20 KC_CALC, KC_MAIL, KC_MYCM, KC_MUTE, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
21 KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, 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_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
22 KC_P7, KC_P8, KC_P9, KC_PPLS, 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, KC_DEL, KC_END, KC_PGDN,
23 KC_P4, KC_P5, KC_P6, KC_PPLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
24 KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_SPC, KC_UP,
25 KC_0, KC_PCMM, KC_PDOT, KC_PEQL, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
26 ),
27
28};
29
30#ifdef ENCODER_ENABLE
31void encoder_update_user(uint8_t index, bool clockwise) {
32 if (index == 0) {
33 if (clockwise) {
34 tap_code(KC_VOLU);
35 } else {
36 tap_code(KC_VOLD);
37 }
38 }
39}
40#endif
diff --git a/keyboards/mechlovin/hex6c/keymaps/default/readme.md b/keyboards/mechlovin/hex6c/keymaps/default/readme.md
new file mode 100644
index 000000000..5d2f472b0
--- /dev/null
+++ b/keyboards/mechlovin/hex6c/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for hex6c
diff --git a/keyboards/mechlovin/hex6c/keymaps/via/keymap.c b/keyboards/mechlovin/hex6c/keymaps/via/keymap.c
new file mode 100644
index 000000000..6fa6045a6
--- /dev/null
+++ b/keyboards/mechlovin/hex6c/keymaps/via/keymap.c
@@ -0,0 +1,68 @@
1/* Copyright 2021 Mechlovin' Studio
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT_all(
20 KC_CALC, KC_MAIL, KC_MYCM, KC_MUTE, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
21 KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, 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_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
22 KC_P7, KC_P8, KC_P9, KC_PPLS, 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, KC_DEL, KC_END, KC_PGDN,
23 KC_P4, KC_P5, KC_P6, KC_PPLS, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
24 KC_P1, KC_P2, KC_P3, KC_PENT, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_SPC, KC_UP,
25 KC_0, KC_PCMM, KC_PDOT, KC_PEQL, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
26 ),
27
28 [1] = LAYOUT_all(
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
35 ),
36
37 [2] = LAYOUT_all(
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
44 ),
45
46 [3] = LAYOUT_all(
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
48 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
49 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
50 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
51 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
52 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
53 ),
54
55
56};
57
58#ifdef ENCODER_ENABLE
59void encoder_update_user(uint8_t index, bool clockwise) {
60 if (index == 0) {
61 if (clockwise) {
62 tap_code(KC_VOLU);
63 } else {
64 tap_code(KC_VOLD);
65 }
66 }
67}
68#endif
diff --git a/keyboards/mechlovin/hex6c/keymaps/via/rules.mk b/keyboards/mechlovin/hex6c/keymaps/via/rules.mk
new file mode 100644
index 000000000..036bd6d1c
--- /dev/null
+++ b/keyboards/mechlovin/hex6c/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/mechlovin/hex6c/readme.md b/keyboards/mechlovin/hex6c/readme.md
new file mode 100644
index 000000000..9b81afd7f
--- /dev/null
+++ b/keyboards/mechlovin/hex6c/readme.md
@@ -0,0 +1,21 @@
1# hex6c
2
3![hex6c](https://i.imgur.com/uYxCTiTl.jpeg)
4
5A Southpaw Fullsize Keyboard with encoder.
6
7* Keyboard Maintainer: [Mechlovin' Studio](https://github.com/mechlovin)
8* Hardware Supported: Hex6C Keyboard, STM32F303
9* Hardware Availability: [Hex Keyboard](https://hexkeyboards.com/)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make mechlovin/hex6c:default
14
15Flashing example for this keyboard:
16
17 make mechlovin/hex6c: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).
20
21**Reset Key:** To put the Hex6C into bootloader, hold esc key while plugging in (bootmagic) or push reset swith on the bottom of the PCB.
diff --git a/keyboards/mechlovin/hex6c/rules.mk b/keyboards/mechlovin/hex6c/rules.mk
new file mode 100644
index 000000000..99aa532c2
--- /dev/null
+++ b/keyboards/mechlovin/hex6c/rules.mk
@@ -0,0 +1,20 @@
1# MCU name
2MCU = STM32F303
3
4BOARD = QMK_PROTON_C
5
6# Build Options
7# change yes to no to disable
8#
9BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
10MOUSEKEY_ENABLE = yes # Mouse keys
11EXTRAKEY_ENABLE = yes # Audio control and System control
12CONSOLE_ENABLE = yes # Console for debug
13COMMAND_ENABLE = yes # Commands for debug and configuration
14# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
15SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
16# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
17NKRO_ENABLE = yes # USB Nkey Rollover
18BLUETOOTH_ENABLE = no # Enable Bluetooth
19AUDIO_ENABLE = no # Audio output
20ENCODER_ENABLE = yes
diff --git a/keyboards/mechlovin/infinity87/config.h b/keyboards/mechlovin/infinity87/config.h
index ccb9f6756..a344c98b8 100644
--- a/keyboards/mechlovin/infinity87/config.h
+++ b/keyboards/mechlovin/infinity87/config.h
@@ -1,19 +1,18 @@
1/* 1/* Copyright 2020 Team Mechlovin'
2Copyright 2020 Team Mechlovin' 2 *
3 3 * This program is free software: you can redistribute it and/or modify
4This 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
5it under the terms of the GNU General Public License as published by 5 * the Free Software Foundation, either version 2 of the License, or
6the Free Software Foundation, either version 2 of the License, or 6 * (at your option) any later version.
7(at your option) any later version. 7 *
8 8 * This program is distributed in the hope that it will be useful,
9This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details.
12GNU General Public License for more details. 12 *
13 13 * You should have received a copy of the GNU General Public License
14You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15along with this program. If not, see <http://www.gnu.org/licenses/>. 15 */
16*/
17 16
18#pragma once 17#pragma once
19 18
@@ -21,54 +20,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
21 20
22/* USB Device descriptor parameter */ 21/* USB Device descriptor parameter */
23#define VENDOR_ID 0x4D4C // ML 22#define VENDOR_ID 0x4D4C // ML
24#define PRODUCT_ID 0x8701 23
25#define DEVICE_VER 0x0001 24#define MANUFACTURER Mechlovin.Studio
26#define MANUFACTURER Team.Mechlovin
27#define PRODUCT Infinity 87
28 25
29/* key matrix size */ 26/* key matrix size */
30#define MATRIX_ROWS 6 27#define MATRIX_ROWS 6
31#define MATRIX_COLS 17 28#define MATRIX_COLS 17
32 29
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 { A10, B13, B12, B11, C14, C15 }
44#define MATRIX_COL_PINS { C13, B9, B4, B7, B8, B5, B6, A9, A5, A6, A7,B1, B2, B10, B3, B14, B15 }
45
46#define DIODE_DIRECTION COL2ROW
47
48#define LED_NUM_LOCK_PIN A3
49#define LED_CAPS_LOCK_PIN A4
50
51#define BACKLIGHT_PIN B0
52#define BACKLIGHT_BREATHING
53#define BACKLIGHT_PWM_DRIVER PWMD3
54#define BACKLIGHT_PWM_CHANNEL 3
55
56#define RGB_DI_PIN A15
57#define RGBLED_NUM 26
58#define RGBLIGHT_LIMIT_VAL 255
59#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
60/*== all animations enable ==*/
61#define RGBLIGHT_ANIMATIONS
62// /*== or choose animations ==*/
63// #define RGBLIGHT_EFFECT_BREATHING
64// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
65// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
66// #define RGBLIGHT_EFFECT_SNAKE
67// #define RGBLIGHT_EFFECT_KNIGHT
68// #define RGBLIGHT_EFFECT_CHRISTMAS
69// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
70// #define RGBLIGHT_EFFECT_RGB_TEST
71// #define RGBLIGHT_EFFECT_ALTERNATING
72
73// generated by KBFirmware JSON to QMK Parser
74// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file
diff --git a/keyboards/mechlovin/infinity87/infinity87.h b/keyboards/mechlovin/infinity87/infinity87.h
index 4810d9d86..f56d960e9 100644
--- a/keyboards/mechlovin/infinity87/infinity87.h
+++ b/keyboards/mechlovin/infinity87/infinity87.h
@@ -18,12 +18,12 @@
18#include "quantum.h" 18#include "quantum.h"
19 19
20#define LAYOUT_all( \ 20#define LAYOUT_all( \
21 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \ 21 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \
22 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K0D, K1E, K1F, K1G, \ 22 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K0D, K1E, K1F, K1G, \
23 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \ 23 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
24 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ 24 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
25 K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \ 25 K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \
26 K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \ 26 K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K5G \
27) { \ 27) { \
28 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \ 28 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
29 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \ 29 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
@@ -32,6 +32,3 @@
32 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \ 32 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \
33 { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \ 33 { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
34} 34}
35
36// generated by KBFirmware JSON to QMK Parser
37// https://noroadsleft.github.io/kbf_qmk_converter/ \ No newline at end of file
diff --git a/keyboards/mechlovin/infinity87/keymaps/via/rules.mk b/keyboards/mechlovin/infinity87/keymaps/via/rules.mk
index 036bd6d1c..36b7ba9cb 100644
--- a/keyboards/mechlovin/infinity87/keymaps/via/rules.mk
+++ b/keyboards/mechlovin/infinity87/keymaps/via/rules.mk
@@ -1 +1,2 @@
1VIA_ENABLE = yes \ No newline at end of file 1VIA_ENABLE = yes
2LTO_ENABLE = yes
diff --git a/keyboards/mechlovin/infinity87/rev1/config.h b/keyboards/mechlovin/infinity87/rev1/config.h
new file mode 100644
index 000000000..467d47c6f
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/config.h
@@ -0,0 +1,31 @@
1/* Copyright 2020 Team Mechlovin'
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#define MATRIX_ROW_PINS { A10, B13, B12, B11, C14, C15 }
20#define MATRIX_COL_PINS { C13, B9, B4, B7, B8, B5, B6, A9, A5, A6, A7, B1, B2, B10, B3, B14, B15 }
21
22#define BACKLIGHT_PIN B0
23#define BACKLIGHT_BREATHING
24#define BACKLIGHT_PWM_DRIVER PWMD3
25#define BACKLIGHT_PWM_CHANNEL 3
26
27
28#define LED_CAPS_LOCK_PIN A4
29#define LED_SCROLL_LOCK_PIN A8
30
31#define DIODE_DIRECTION COL2ROW \ No newline at end of file
diff --git a/keyboards/mechlovin/infinity87/rev1/readme.md b/keyboards/mechlovin/infinity87/rev1/readme.md
new file mode 100644
index 000000000..448d69ca7
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/readme.md
@@ -0,0 +1,16 @@
1# infinity87
2
3![infinity87](https://i.imgur.com/QuK1EnNl.png)
4
5A replacement PCB for TKL keyboard
6
7* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin)
8* Hardware Supported: Infinity87 rev.1 (1.6mm & 1.2mm). Rouge87 for OTD, Rogue87 for UTD
9
10Make example for this keyboard (after setting up your build environment):
11
12 make mechlovin/infinity87:default
13
14See 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).
15
16**Reset Key:** To put the IF87_rev1, rouge87, rogue87 into bootloader, hold esc key while plugging in (bootmagic) or push reset swith on the bottom of the PCB. \ No newline at end of file
diff --git a/keyboards/mechlovin/infinity87/rev1/rev1.c b/keyboards/mechlovin/infinity87/rev1/rev1.c
new file mode 100644
index 000000000..c65ff1983
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rev1.c
@@ -0,0 +1,17 @@
1/* Copyright 2020 Team Mechlovin'
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"
diff --git a/keyboards/mechlovin/infinity87/rev1/rev1.h b/keyboards/mechlovin/infinity87/rev1/rev1.h
new file mode 100644
index 000000000..16cdf9ed8
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rev1.h
@@ -0,0 +1,19 @@
1/* Copyright 2020 Team Mechlovin
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"
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/config.h b/keyboards/mechlovin/infinity87/rev1/rogue87/config.h
new file mode 100644
index 000000000..3415f3add
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rogue87/config.h
@@ -0,0 +1,21 @@
1/* Copyright 2020 Team Mechlovin'
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#define PRODUCT_ID 0x8704
20#define DEVICE_VER 0x0001
21#define PRODUCT Rogue87 Rev.1 \ No newline at end of file
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/info.json b/keyboards/mechlovin/infinity87/rev1/rogue87/info.json
new file mode 100644
index 000000000..3d541cfb7
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rogue87/info.json
@@ -0,0 +1,99 @@
1{
2 "keyboard_name": "Rogue87",
3 "url": "",
4 "maintainer": "Mechlovin' Studio",
5 "width": 18.25,
6 "height": 6.25,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [
10 {"label":"K00", "x":0, "y":0},
11 {"label":"K01", "x":2, "y":0},
12 {"label":"K02", "x":3, "y":0},
13 {"label":"K03", "x":4, "y":0},
14 {"label":"K04", "x":5, "y":0},
15 {"label":"K05", "x":6.5, "y":0},
16 {"label":"K06", "x":7.5, "y":0},
17 {"label":"K07", "x":8.5, "y":0},
18 {"label":"K08", "x":9.5, "y":0},
19 {"label":"K09", "x":11, "y":0},
20 {"label":"K0A", "x":12, "y":0},
21 {"label":"K0B", "x":13, "y":0},
22 {"label":"K0C", "x":14, "y":0},
23 {"label":"K0E", "x":15.25, "y":0},
24 {"label":"K0F", "x":16.25, "y":0},
25 {"label":"K0G", "x":17.25, "y":0},
26 {"label":"K10", "x":0, "y":1.25},
27 {"label":"K11", "x":1, "y":1.25},
28 {"label":"K12", "x":2, "y":1.25},
29 {"label":"K13", "x":3, "y":1.25},
30 {"label":"K14", "x":4, "y":1.25},
31 {"label":"K15", "x":5, "y":1.25},
32 {"label":"K16", "x":6, "y":1.25},
33 {"label":"K17", "x":7, "y":1.25},
34 {"label":"K18", "x":8, "y":1.25},
35 {"label":"K19", "x":9, "y":1.25},
36 {"label":"K1A", "x":10, "y":1.25},
37 {"label":"K1B", "x":11, "y":1.25},
38 {"label":"K1C", "x":12, "y":1.25},
39 {"label":"K1D", "x":13, "y":1.25, "w":2},
40 {"label":"K1E", "x":15.25, "y":1.25},
41 {"label":"K1F", "x":16.25, "y":1.25},
42 {"label":"K1G", "x":17.25, "y":1.25},
43 {"label":"K20", "x":0, "y":2.25, "w":1.5},
44 {"label":"K21", "x":1.5, "y":2.25},
45 {"label":"K22", "x":2.5, "y":2.25},
46 {"label":"K23", "x":3.5, "y":2.25},
47 {"label":"K24", "x":4.5, "y":2.25},
48 {"label":"K25", "x":5.5, "y":2.25},
49 {"label":"K26", "x":6.5, "y":2.25},
50 {"label":"K27", "x":7.5, "y":2.25},
51 {"label":"K28", "x":8.5, "y":2.25},
52 {"label":"K29", "x":9.5, "y":2.25},
53 {"label":"K2A", "x":10.5, "y":2.25},
54 {"label":"K2B", "x":11.5, "y":2.25},
55 {"label":"K2C", "x":12.5, "y":2.25},
56 {"label":"K2D", "x":13.5, "y":2.25, "w":1.5},
57 {"label":"K2E", "x":15.25, "y":2.25},
58 {"label":"K2F", "x":16.25, "y":2.25},
59 {"label":"K2G", "x":17.25, "y":2.25},
60 {"label":"K30", "x":0, "y":3.25, "w":1.75},
61 {"label":"K31", "x":1.75, "y":3.25},
62 {"label":"K32", "x":2.75, "y":3.25},
63 {"label":"K33", "x":3.75, "y":3.25},
64 {"label":"K34", "x":4.75, "y":3.25},
65 {"label":"K35", "x":5.75, "y":3.25},
66 {"label":"K36", "x":6.75, "y":3.25},
67 {"label":"K37", "x":7.75, "y":3.25},
68 {"label":"K38", "x":8.75, "y":3.25},
69 {"label":"K39", "x":9.75, "y":3.25},
70 {"label":"K3A", "x":10.75, "y":3.25},
71 {"label":"K3B", "x":11.75, "y":3.25},
72 {"label":"K3C", "x":12.75, "y":3.25},
73 {"label":"K3D", "x":13.75, "y":3.25, "w":1.25},
74 {"label":"K40", "x":0, "y":4.25, "w":1.25},
75 {"label":"K41", "x":1.25, "y":4.25},
76 {"label":"K42", "x":2.25, "y":4.25},
77 {"label":"K43", "x":3.25, "y":4.25},
78 {"label":"K44", "x":4.25, "y":4.25},
79 {"label":"K45", "x":5.25, "y":4.25},
80 {"label":"K46", "x":6.25, "y":4.25},
81 {"label":"K47", "x":7.25, "y":4.25},
82 {"label":"K48", "x":8.25, "y":4.25},
83 {"label":"K49", "x":9.25, "y":4.25},
84 {"label":"K4A", "x":10.25, "y":4.25},
85 {"label":"K4B", "x":11.25, "y":4.25},
86 {"label":"K4D", "x":12.25, "y":4.25, "w":2.75},
87 {"label":"K4F", "x":16.25, "y":4.25},
88 {"label":"K50", "x":0, "y":5.25, "w":1.5},
89 {"label":"K52", "x":2.5, "y":5.25, "w":1.5},
90 {"label":"K56", "x":4, "y":5.25, "w":7},
91 {"label":"K5B", "x":11, "y":5.25, "w":1.5},
92 {"label":"K5D", "x":13.5, "y":5.25, "w":1.5},
93 {"label":"K5E", "x":15.25, "y":5.25},
94 {"label":"K5F", "x":16.25, "y":5.25},
95 {"label":"K5G", "x":17.25, "y":5.25}
96 ]
97 }
98 }
99}
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/keymap.c b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/keymap.c
new file mode 100644
index 000000000..7e0bcb49d
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
1/* Copyright 2020 Team Mechlovin'
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT_all(
20 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
21 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
22 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, KC_DEL, KC_END, KC_PGDN,
23 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT,
24 KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
25 KC_LCTL, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
26 ),
27};
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/readme.md b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/readme.md
new file mode 100644
index 000000000..01ef55505
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for infinity87
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/keymap.c b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/keymap.c
new file mode 100644
index 000000000..0c1aa67f4
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
1/* Copyright 2020 Team Mechlovin'
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT_all(
20 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
21 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
22 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, KC_DEL, KC_END, KC_PGDN,
23 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT,
24 KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
25 KC_LCTL, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
26 ),
27
28 [1] = LAYOUT_all(
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
35 ),
36 [2] = LAYOUT_all(
37 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
43 ),
44 [3] = LAYOUT_all(
45 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
48 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
49 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
50 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
51 ),
52
53};
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/readme.md b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/readme.md
new file mode 100644
index 000000000..8867d290c
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/readme.md
@@ -0,0 +1 @@
# The via keymap for infinity87
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/rules.mk b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/rules.mk
new file mode 100644
index 000000000..36b7ba9cb
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rogue87/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/readme.md b/keyboards/mechlovin/infinity87/rev1/rogue87/readme.md
new file mode 100644
index 000000000..a3fb9ef55
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rogue87/readme.md
@@ -0,0 +1,19 @@
1# Rogue87 PCB
2
3![infinity87](https://i.imgur.com/DBquKMBl.jpeg)
4
5A replacement PCB for UTD keyboard.
6
7* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin)
8* Hardware Supported: UTD Keyboard, Rogue87, STM32F303
9* Hardware Availability: [Reddit GB](https://www.reddit.com/r/mechmarket/comments/ll6e5x/gb_mechlovin_rouge_otd_compatible_pcb_plates/)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make mechlovin/infinity87/rev1/rogue87:default
14
15Flashing example for this keyboard:
16
17 make mechlovin/infinity87/rev1/rogue87: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/mechlovin/infinity87/rev1/rogue87/rogue87.h b/keyboards/mechlovin/infinity87/rev1/rogue87/rogue87.h
new file mode 100644
index 000000000..70a50b962
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rogue87/rogue87.h
@@ -0,0 +1,34 @@
1/* Copyright 2020 Team Mechlovin'
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#include "quantum.h"
19
20#define LAYOUT_all( \
21 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \
22 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
23 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
24 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
25 K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \
26 K50, K52, K56, K5B, K5D, K5E, K5F, K5G \
27) { \
28 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F, K0G }, \
29 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
30 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
31 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO}, \
32 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, KC_NO, K4F, KC_NO}, \
33 { K50, KC_NO, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, KC_NO, K5B, KC_NO, K5D, K5E, K5F, K5G }, \
34}
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/rules.mk b/keyboards/mechlovin/infinity87/rev1/rogue87/rules.mk
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rogue87/rules.mk
@@ -0,0 +1 @@
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/config.h b/keyboards/mechlovin/infinity87/rev1/rouge87/config.h
new file mode 100644
index 000000000..786da387b
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rouge87/config.h
@@ -0,0 +1,21 @@
1/* Copyright 2020 Team Mechlovin'
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#define PRODUCT_ID 0x8703
20#define DEVICE_VER 0x0001
21#define PRODUCT Rouge87 Rev.1
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/info.json b/keyboards/mechlovin/infinity87/rev1/rouge87/info.json
new file mode 100644
index 000000000..8317e9351
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rouge87/info.json
@@ -0,0 +1,101 @@
1{
2 "keyboard_name": "Rouge87",
3 "url": "",
4 "maintainer": "Mechlovin' Studio",
5 "width": 18.25,
6 "height": 6.25,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [
10 {"label":"K00", "x":0, "y":0},
11 {"label":"K01", "x":2, "y":0},
12 {"label":"K02", "x":3, "y":0},
13 {"label":"K03", "x":4, "y":0},
14 {"label":"K04", "x":5, "y":0},
15 {"label":"K05", "x":6.5, "y":0},
16 {"label":"K06", "x":7.5, "y":0},
17 {"label":"K07", "x":8.5, "y":0},
18 {"label":"K08", "x":9.5, "y":0},
19 {"label":"K09", "x":11, "y":0},
20 {"label":"K0A", "x":12, "y":0},
21 {"label":"K0B", "x":13, "y":0},
22 {"label":"K0C", "x":14, "y":0},
23 {"label":"K0E", "x":15.25, "y":0},
24 {"label":"K0F", "x":16.25, "y":0},
25 {"label":"K0G", "x":17.25, "y":0},
26 {"label":"K10", "x":0, "y":1.25},
27 {"label":"K11", "x":1, "y":1.25},
28 {"label":"K12", "x":2, "y":1.25},
29 {"label":"K13", "x":3, "y":1.25},
30 {"label":"K14", "x":4, "y":1.25},
31 {"label":"K15", "x":5, "y":1.25},
32 {"label":"K16", "x":6, "y":1.25},
33 {"label":"K17", "x":7, "y":1.25},
34 {"label":"K18", "x":8, "y":1.25},
35 {"label":"K19", "x":9, "y":1.25},
36 {"label":"K1A", "x":10, "y":1.25},
37 {"label":"K1B", "x":11, "y":1.25},
38 {"label":"K1C", "x":12, "y":1.25},
39 {"label":"K1D", "x":13, "y":1.25, "w":2},
40 {"label":"K1E", "x":15.25, "y":1.25},
41 {"label":"K1F", "x":16.25, "y":1.25},
42 {"label":"K1G", "x":17.25, "y":1.25},
43 {"label":"K20", "x":0, "y":2.25, "w":1.5},
44 {"label":"K21", "x":1.5, "y":2.25},
45 {"label":"K22", "x":2.5, "y":2.25},
46 {"label":"K23", "x":3.5, "y":2.25},
47 {"label":"K24", "x":4.5, "y":2.25},
48 {"label":"K25", "x":5.5, "y":2.25},
49 {"label":"K26", "x":6.5, "y":2.25},
50 {"label":"K27", "x":7.5, "y":2.25},
51 {"label":"K28", "x":8.5, "y":2.25},
52 {"label":"K29", "x":9.5, "y":2.25},
53 {"label":"K2A", "x":10.5, "y":2.25},
54 {"label":"K2B", "x":11.5, "y":2.25},
55 {"label":"K2C", "x":12.5, "y":2.25},
56 {"label":"K2D", "x":13.5, "y":2.25, "w":1.5},
57 {"label":"K2E", "x":15.25, "y":2.25},
58 {"label":"K2F", "x":16.25, "y":2.25},
59 {"label":"K2G", "x":17.25, "y":2.25},
60 {"label":"K30", "x":0, "y":3.25, "w":1.75},
61 {"label":"K31", "x":1.75, "y":3.25},
62 {"label":"K32", "x":2.75, "y":3.25},
63 {"label":"K33", "x":3.75, "y":3.25},
64 {"label":"K34", "x":4.75, "y":3.25},
65 {"label":"K35", "x":5.75, "y":3.25},
66 {"label":"K36", "x":6.75, "y":3.25},
67 {"label":"K37", "x":7.75, "y":3.25},
68 {"label":"K38", "x":8.75, "y":3.25},
69 {"label":"K39", "x":9.75, "y":3.25},
70 {"label":"K3A", "x":10.75, "y":3.25},
71 {"label":"K3B", "x":11.75, "y":3.25},
72 {"label":"K3C", "x":12.75, "y":3.25},
73 {"label":"K3D", "x":13.75, "y":3.25, "w":1.25},
74 {"label":"K40", "x":0, "y":4.25, "w":1.25},
75 {"label":"K41", "x":1.25, "y":4.25},
76 {"label":"K42", "x":2.25, "y":4.25},
77 {"label":"K43", "x":3.25, "y":4.25},
78 {"label":"K44", "x":4.25, "y":4.25},
79 {"label":"K45", "x":5.25, "y":4.25},
80 {"label":"K46", "x":6.25, "y":4.25},
81 {"label":"K47", "x":7.25, "y":4.25},
82 {"label":"K48", "x":8.25, "y":4.25},
83 {"label":"K49", "x":9.25, "y":4.25},
84 {"label":"K4A", "x":10.25, "y":4.25},
85 {"label":"K4B", "x":11.25, "y":4.25},
86 {"label":"K4D", "x":12.25, "y":4.25, "w":2.75},
87 {"label":"K4F", "x":16.25, "y":4.25},
88 {"label":"K50", "x":0, "y":5.25, "w":1.5},
89 {"label":"K51", "x":1.5, "y":5.25},
90 {"label":"K52", "x":2.5, "y":5.25, "w":1.5},
91 {"label":"K56", "x":4, "y":5.25, "w":7},
92 {"label":"K5B", "x":11, "y":5.25, "w":1.5},
93 {"label":"K5C", "x":12.5, "y":5.25},
94 {"label":"K5D", "x":13.5, "y":5.25, "w":1.5},
95 {"label":"K5E", "x":15.25, "y":5.25},
96 {"label":"K5F", "x":16.25, "y":5.25},
97 {"label":"K5G", "x":17.25, "y":5.25}
98 ]
99 }
100 }
101}
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/keymap.c b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/keymap.c
new file mode 100644
index 000000000..79658b205
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
1/* Copyright 2020 Team Mechlovin'
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT_all(
20 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
21 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
22 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, KC_DEL, KC_END, KC_PGDN,
23 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT,
24 KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
25 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
26 ),
27};
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/readme.md b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/readme.md
new file mode 100644
index 000000000..01ef55505
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for infinity87
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/keymap.c b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/keymap.c
new file mode 100644
index 000000000..201ee4e4b
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
1/* Copyright 2020 Team Mechlovin'
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT_all(
20 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
21 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
22 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, KC_DEL, KC_END, KC_PGDN,
23 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_HASH, KC_ENT,
24 KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP,
25 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
26 ),
27
28 [1] = LAYOUT_all(
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
35 ),
36 [2] = LAYOUT_all(
37 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
39 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
40 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
43 ),
44 [3] = LAYOUT_all(
45 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
46 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
48 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
49 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
50 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
51 ),
52
53};
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/readme.md b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/readme.md
new file mode 100644
index 000000000..8867d290c
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/readme.md
@@ -0,0 +1 @@
# The via keymap for infinity87
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/rules.mk b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/rules.mk
new file mode 100644
index 000000000..36b7ba9cb
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rouge87/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
1VIA_ENABLE = yes
2LTO_ENABLE = yes
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/readme.md b/keyboards/mechlovin/infinity87/rev1/rouge87/readme.md
new file mode 100644
index 000000000..de43b2568
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rouge87/readme.md
@@ -0,0 +1,19 @@
1# rouge87 PCB
2
3![infinity87](https://i.imgur.com/y2RVpzSl.jpeg)
4
5A replacement PCB OTD 356.2, 360c, 456gt, The Cheat
6
7* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin)
8* Hardware Supported: OTD 360C, The Cheat,...
9* Hardware Availability: [Reddit GB](https://www.reddit.com/r/mechmarket/comments/ll6e5x/gb_mechlovin_rouge_otd_compatible_pcb_plates/)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make mechlovin/infinity87/rev1/rouge87:default
14
15Flashing example for this keyboard:
16
17 make mechlovin/infinity87/rev1/rouge87: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/mechlovin/infinity87/rev1/rouge87/rouge87.h b/keyboards/mechlovin/infinity87/rev1/rouge87/rouge87.h
new file mode 100644
index 000000000..67dcefde2
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rouge87/rouge87.h
@@ -0,0 +1,35 @@
1/* Copyright 2020 Team Mechlovin'
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#include "quantum.h"
19
20#define LAYOUT_all( \
21 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, \
22 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
23 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
24 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
25 K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4F, \
26 K50, K51, K52, K56, K5B, K5C, K5D, K5E, K5F, K5G \
27) { \
28 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F, K0G }, \
29 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
30 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
31 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, KC_NO}, \
32 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, KC_NO, K4F, KC_NO}, \
33 { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, KC_NO, K5B, K5C, K5D, K5E, K5F, K5G }, \
34}
35
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/rules.mk b/keyboards/mechlovin/infinity87/rev1/rouge87/rules.mk
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rouge87/rules.mk
@@ -0,0 +1 @@
diff --git a/keyboards/mechlovin/infinity87/rev1/rules.mk b/keyboards/mechlovin/infinity87/rev1/rules.mk
new file mode 100644
index 000000000..cb04a558f
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/rules.mk
@@ -0,0 +1,6 @@
1MCU = STM32F303
2BOARD = QMK_PROTON_C
3
4BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
5
6DEFAULT_FOLDER = mechlovin/infinity87/rev1/standard \ No newline at end of file
diff --git a/keyboards/mechlovin/infinity87/rev1/standard/config.h b/keyboards/mechlovin/infinity87/rev1/standard/config.h
new file mode 100644
index 000000000..b3ae5a771
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/standard/config.h
@@ -0,0 +1,40 @@
1/* Copyright 2020 Team Mechlovin'
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#define PRODUCT_ID 0x8701
20#define DEVICE_VER 0x0001
21#define PRODUCT Infinity 87 rev1
22
23#define RGB_DI_PIN A15
24#define RGBLED_NUM 26
25#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
26/*== all animations enable ==*/
27#define RGBLIGHT_ANIMATIONS
28// /*== or choose animations ==*/
29// #define RGBLIGHT_EFFECT_BREATHING
30// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
31// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
32// #define RGBLIGHT_EFFECT_SNAKE
33// #define RGBLIGHT_EFFECT_KNIGHT
34// #define RGBLIGHT_EFFECT_CHRISTMAS
35// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
36// #define RGBLIGHT_EFFECT_RGB_TEST
37// #define RGBLIGHT_EFFECT_ALTERNATING
38
39// generated by KBFirmware JSON to QMK Parser
40// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/mechlovin/infinity87/info.json b/keyboards/mechlovin/infinity87/rev1/standard/info.json
index 78d6a29bc..78d6a29bc 100644
--- a/keyboards/mechlovin/infinity87/info.json
+++ b/keyboards/mechlovin/infinity87/rev1/standard/info.json
diff --git a/keyboards/mechlovin/infinity87/rev1/standard/readme.md b/keyboards/mechlovin/infinity87/rev1/standard/readme.md
new file mode 100644
index 000000000..f8998b498
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/standard/readme.md
@@ -0,0 +1,15 @@
1# infinity87
2
3![infinity87](https://i.imgur.com/QuK1EnNl.png)
4
5A replacement PCB for TKL keyboard. A87 form factor,south-facing stabilisers.
6
7* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin)
8* Hardware Supported: Infinity87 rev.1 (1.6mm & 1.2mm).
9* Hardware Availability: [Geekhack GB](https://geekhack.org/index.php?topic=105853.0), [Reddit GB](https://www.reddit.com/r/mechmarket/comments/g4vf2w/gb_team_mechlovin_infinity_87_a87_form_factor/)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make mechlovin/infinity87/rev1/standard:default
14
15See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/mechlovin/infinity87/rev1/standard/rules.mk b/keyboards/mechlovin/infinity87/rev1/standard/rules.mk
new file mode 100644
index 000000000..1e3cebb14
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev1/standard/rules.mk
@@ -0,0 +1 @@
RGBLIGHT_ENABLE = yes
diff --git a/keyboards/mechlovin/infinity87/rev2/config.h b/keyboards/mechlovin/infinity87/rev2/config.h
new file mode 100644
index 000000000..1be7f0a1b
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev2/config.h
@@ -0,0 +1,48 @@
1/* Copyright 2020 Team Mechlovin'
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#define PRODUCT_ID 0x8702
20#define DEVICE_VER 0x0001
21#define PRODUCT Infinity 87 rev2
22
23/*
24 * Keyboard Matrix Assignments
25 *
26 * Change this to how you wired your keyboard
27 * COLS: AVR pins used for columns, left to right
28 * ROWS: AVR pins used for rows, top to bottom
29 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
30 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
31 *
32*/
33#define MATRIX_ROW_PINS { A3, D5, C3, C2, B3, B4 }
34#define UNUSED_PINS
35
36/* COL2ROW, ROW2COL*/
37#define DIODE_DIRECTION ROW2COL
38
39#define BACKLIGHT_PIN D4
40#define BACKLIGHT_BREATHING
41
42#define LED_NUM_LOCK_PIN B1
43#define LED_CAPS_LOCK_PIN B0
44#define LED_SCROLL_LOCK_PIN B2
45#define LED_PIN_ON_STATE 0
46
47/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
48#define DEBOUNCE 5 \ No newline at end of file
diff --git a/keyboards/mechlovin/infinity87/rev2/info.json b/keyboards/mechlovin/infinity87/rev2/info.json
new file mode 100644
index 000000000..9b3fe1002
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev2/info.json
@@ -0,0 +1,105 @@
1{
2 "keyboard_name": "infinity87",
3 "url": "",
4 "maintainer": "Team Mechlovin'",
5 "width": 18.25,
6 "height": 6.25,
7 "layouts": {
8 "LAYOUT_all": {
9 "layout": [
10 {"label":"K00 (B0,B6)", "x":0, "y":0},
11 {"label":"K01 (B0,F4)", "x":2, "y":0},
12 {"label":"K02 (B0,C0)", "x":3, "y":0},
13 {"label":"K03 (B0,C1)", "x":4, "y":0},
14 {"label":"K04 (B0,C2)", "x":5, "y":0},
15 {"label":"K05 (B0,C3)", "x":6.5, "y":0},
16 {"label":"K06 (B0,C4)", "x":7.5, "y":0},
17 {"label":"K07 (B0,C5)", "x":8.5, "y":0},
18 {"label":"K08 (B0,C6)", "x":9.5, "y":0},
19 {"label":"K09 (B0,C7)", "x":11, "y":0},
20 {"label":"K0A (B0,D0)", "x":12, "y":0},
21 {"label":"K0B (B0,D1)", "x":13, "y":0},
22 {"label":"K0C (B0,D2)", "x":14, "y":0},
23 {"label":"K0E (B0,D4)", "x":15.25, "y":0},
24 {"label":"K0F (B0,D5)", "x":16.25, "y":0},
25 {"label":"K0G (B0,D6)", "x":17.25, "y":0},
26 {"label":"K10 (B1,B6)", "x":0, "y":1.25},
27 {"label":"K11 (B1,F4)", "x":1, "y":1.25},
28 {"label":"K12 (B1,C0)", "x":2, "y":1.25},
29 {"label":"K13 (B1,C1)", "x":3, "y":1.25},
30 {"label":"K14 (B1,C2)", "x":4, "y":1.25},
31 {"label":"K15 (B1,C3)", "x":5, "y":1.25},
32 {"label":"K16 (B1,C4)", "x":6, "y":1.25},
33 {"label":"K17 (B1,C5)", "x":7, "y":1.25},
34 {"label":"K18 (B1,C6)", "x":8, "y":1.25},
35 {"label":"K19 (B1,C7)", "x":9, "y":1.25},
36 {"label":"K1A (B1,D0)", "x":10, "y":1.25},
37 {"label":"K1B (B1,D1)", "x":11, "y":1.25},
38 {"label":"K1C (B1,D2)", "x":12, "y":1.25},
39 {"label":"K1D (B1,D3)", "x":13, "y":1.25},
40 {"label":"K0D (B0,D3)", "x":14, "y":1.25},
41 {"label":"K1E (B1,D4)", "x":15.25, "y":1.25},
42 {"label":"K1F (B1,D5)", "x":16.25, "y":1.25},
43 {"label":"K1G (B1,D6)", "x":17.25, "y":1.25},
44 {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5},
45 {"label":"K21 (B2,F4)", "x":1.5, "y":2.25},
46 {"label":"K22 (B2,C0)", "x":2.5, "y":2.25},
47 {"label":"K23 (B2,C1)", "x":3.5, "y":2.25},
48 {"label":"K24 (B2,C2)", "x":4.5, "y":2.25},
49 {"label":"K25 (B2,C3)", "x":5.5, "y":2.25},
50 {"label":"K26 (B2,C4)", "x":6.5, "y":2.25},
51 {"label":"K27 (B2,C5)", "x":7.5, "y":2.25},
52 {"label":"K28 (B2,C6)", "x":8.5, "y":2.25},
53 {"label":"K29 (B2,C7)", "x":9.5, "y":2.25},
54 {"label":"K2A (B2,D0)", "x":10.5, "y":2.25},
55 {"label":"K2B (B2,D1)", "x":11.5, "y":2.25},
56 {"label":"K2C (B2,D2)", "x":12.5, "y":2.25},
57 {"label":"K2D (B2,D3)", "x":13.5, "y":2.25, "w":1.5},
58 {"label":"K2E (B2,D4)", "x":15.25, "y":2.25},
59 {"label":"K2F (B2,D5)", "x":16.25, "y":2.25},
60 {"label":"K2G (B2,D6)", "x":17.25, "y":2.25},
61 {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75},
62 {"label":"K31 (B3,F4)", "x":1.75, "y":3.25},
63 {"label":"K32 (B3,C0)", "x":2.75, "y":3.25},
64 {"label":"K33 (B3,C1)", "x":3.75, "y":3.25},
65 {"label":"K34 (B3,C2)", "x":4.75, "y":3.25},
66 {"label":"K35 (B3,C3)", "x":5.75, "y":3.25},
67 {"label":"K36 (B3,C4)", "x":6.75, "y":3.25},
68 {"label":"K37 (B3,C5)", "x":7.75, "y":3.25},
69 {"label":"K38 (B3,C6)", "x":8.75, "y":3.25},
70 {"label":"K39 (B3,C7)", "x":9.75, "y":3.25},
71 {"label":"K3A (B3,D0)", "x":10.75, "y":3.25},
72 {"label":"K3B (B3,D1)", "x":11.75, "y":3.25},
73 {"label":"K3C (B3,D2)", "x":12.75, "y":3.25},
74 {"label":"K3D (B3,D3)", "x":13.75, "y":3.25, "w":1.25},
75 {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25},
76 {"label":"K41 (B4,F4)", "x":1.25, "y":4.25},
77 {"label":"K42 (B4,C0)", "x":2.25, "y":4.25},
78 {"label":"K43 (B4,C1)", "x":3.25, "y":4.25},
79 {"label":"K44 (B4,C2)", "x":4.25, "y":4.25},
80 {"label":"K45 (B4,C3)", "x":5.25, "y":4.25},
81 {"label":"K46 (B4,C4)", "x":6.25, "y":4.25},
82 {"label":"K47 (B4,C5)", "x":7.25, "y":4.25},
83 {"label":"K48 (B4,C6)", "x":8.25, "y":4.25},
84 {"label":"K49 (B4,C7)", "x":9.25, "y":4.25},
85 {"label":"K4A (B4,D0)", "x":10.25, "y":4.25},
86 {"label":"K4B (B4,D1)", "x":11.25, "y":4.25},
87 {"label":"K4C (B4,D2)", "x":12.25, "y":4.25, "w":1.75},
88 {"label":"K4D (B4,D3)", "x":14, "y":4.25},
89 {"label":"K4F (B4,D5)", "x":16.25, "y":4.25},
90 {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25},
91 {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25},
92 {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25},
93 {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25},
94 {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25},
95 {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25},
96 {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25},
97 {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25},
98 {"label":"K5E (B5,D4)", "x":15.25, "y":5.25},
99 {"label":"K5F (B5,D5)", "x":16.25, "y":5.25},
100 {"label":"K5G (B5,D6)", "x":17.25, "y":5.25}
101 ]
102 }
103 }
104 ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
105}
diff --git a/keyboards/mechlovin/infinity87/rev2/matrix.c b/keyboards/mechlovin/infinity87/rev2/matrix.c
new file mode 100644
index 000000000..6f417765a
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev2/matrix.c
@@ -0,0 +1,442 @@
1/*
2Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
3Copyright 2019 Evy Dekkers
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#include <stdint.h>
20#include <stdbool.h>
21#include "wait.h"
22#include "util.h"
23#include "matrix.h"
24#include "debounce.h"
25#include "quantum.h"
26
27#ifdef DIRECT_PINS
28static pin_t direct_pins[MATRIX_ROWS][MATRIX_COLS] = DIRECT_PINS;
29#elif (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW)
30static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
31//static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
32#endif
33
34// matrix code
35
36#ifdef DIRECT_PINS
37
38static void init_pins(void) {
39 for (int row = 0; row < MATRIX_ROWS; row++) {
40 for (int col = 0; col < MATRIX_COLS; col++) {
41 pin_t pin = direct_pins[row][col];
42 if (pin != NO_PIN) {
43 setPinInputHigh(pin);
44 }
45 }
46 }
47}
48
49static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
50 matrix_row_t last_row_value = current_matrix[current_row];
51 current_matrix[current_row] = 0;
52
53 for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
54 pin_t pin = direct_pins[current_row][col_index];
55 if (pin != NO_PIN) {
56 current_matrix[current_row] |= readPin(pin) ? 0 : (MATRIX_ROW_SHIFTER << col_index);
57 }
58 }
59
60 return (last_row_value != current_matrix[current_row]);
61}
62
63#elif (DIODE_DIRECTION == COL2ROW)
64
65static void select_row(uint8_t row) {
66 setPinOutput(row_pins[row]);
67 writePinLow(row_pins[row]);
68}
69
70static void unselect_row(uint8_t row) { setPinInputHigh(row_pins[row]); }
71
72static void unselect_rows(void) {
73 for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
74 setPinInputHigh(row_pins[x]);
75 }
76}
77
78static void init_pins(void) {
79 unselect_rows();
80 for (uint8_t x = 0; x < MATRIX_COLS; x++) {
81 setPinInputHigh(col_pins[x]);
82 }
83}
84
85static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
86 // Store last value of row prior to reading
87 matrix_row_t last_row_value = current_matrix[current_row];
88
89 // Clear data in matrix row
90 current_matrix[current_row] = 0;
91
92 // Select row and wait for row selecton to stabilize
93 select_row(current_row);
94 wait_us(30);
95
96 // For each col...
97 for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) {
98
99 // Select the col pin to read (active low)
100 uint8_t pin_state = readPin(col_pins[col_index]);
101
102 // Populate the matrix row with the state of the col pin
103 current_matrix[current_row] |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
104 }
105
106 // Unselect row
107 unselect_row(current_row);
108
109 return (last_row_value != current_matrix[current_row]);
110}
111
112#elif (DIODE_DIRECTION == ROW2COL)
113
114/* Cols 0 - 16
115 * These columns use two 74HC138 3 to 8 bit demultiplexer. D6, D7 is the enable pin, must be set high (1) to use it.
116 *
117 * col / pin: PA0 PA1 PA2 PD6 PD7 PC4
118 * 0: 0 ── 0 ── 0 1 ── 0 0
119 * ────────────────────────────────────────────
120 * 1: 0 ── 0 ── 1 1 ── 0 0
121 * ────────────────────────────────────────────
122 * 2: 0 ── 1 ── 0 1 ── 0 0
123 * ────────────────────────────────────────────
124 * 3: 0 ── 1 ── 1 1 ── 0 0
125 * ────────────────────────────────────────────
126 * 4: 1 ── 0 ── 0 1 ── 0 0
127 * ────────────────────────────────────────────
128 * 5: 1 ── 0 ── 1 1 ── 0 0
129 * ────────────────────────────────────────────
130 * 6: 1 ── 1 ── 0 1 ── 0 0
131 * ────────────────────────────────────────────
132 * 7: 1 ── 1 ── 1 1 ── 0 0
133 * ────────────────────────────────────────────
134 * 8: 0 ── 0 ── 0 0 ── 1 0
135 * ────────────────────────────────────────────
136 * 9: 0 ── 0 ── 1 0 ── 1 0
137 * ────────────────────────────────────────────
138 *10: 0 ── 1 ── 0 0 ── 1 0
139 * ────────────────────────────────────────────
140 *11: 0 ── 1 ── 1 0 ── 1 0
141 * ────────────────────────────────────────────
142 *12: 1 ── 0 ── 0 0 ── 1 0
143 * ────────────────────────────────────────────
144 *13: 1 ── 0 ── 1 0 ── 1 0
145 * ────────────────────────────────────────────
146 *14: 1 ── 1 ── 1 0 ── 1 0
147 * ────────────────────────────────────────────
148 *15: 1 ── 1 ── 0 0 ── 1 0
149 * ────────────────────────────────────────────
150 *16: 0 ── 0 ── 0 0 ── 0 1
151 *
152 */
153static void select_col(uint8_t col) {
154 switch (col) {
155 case 0:
156 writePinLow(A0);
157 writePinLow(A1);
158 writePinLow(A2);
159 writePinHigh(D6);
160 break;
161 case 1:
162 writePinLow(A0);
163 writePinLow(A1);
164 writePinHigh(A2);
165 writePinHigh(D6);
166 break;
167 case 2:
168 writePinLow(A0);
169 writePinHigh(A1);
170 writePinLow(A2);
171 writePinHigh(D6);
172 break;
173 case 3:
174 writePinLow(A0);
175 writePinHigh(A1);
176 writePinHigh(A2);
177 writePinHigh(D6);
178 break;
179 case 4:
180 writePinHigh(A0);
181 writePinLow(A1);
182 writePinLow(A2);
183 writePinHigh(D6);
184 break;
185 case 5:
186 writePinHigh(A0);
187 writePinLow(A1);
188 writePinHigh(A2);
189 writePinHigh(D6);
190 break;
191 case 6:
192 writePinHigh(A0);
193 writePinHigh(A1);
194 writePinLow(A2);
195 writePinHigh(D6);
196 break;
197 case 7:
198 writePinHigh(A0);
199 writePinHigh(A1);
200 writePinHigh(A2);
201 writePinHigh(D6);
202 break;
203 case 8:
204 writePinLow(A0);
205 writePinLow(A1);
206 writePinLow(A2);
207 writePinHigh(D7);
208 break;
209 case 9:
210 writePinLow(A0);
211 writePinLow(A1);
212 writePinHigh(A2);
213 writePinHigh(D7);
214 break;
215 case 10:
216 writePinLow(A0);
217 writePinHigh(A1);
218 writePinLow(A2);
219 writePinHigh(D7);
220 break;
221 case 11:
222 writePinLow(A0);
223 writePinHigh(A1);
224 writePinHigh(A2);
225 writePinHigh(D7);
226 break;
227 case 12:
228 writePinHigh(A0);
229 writePinLow(A1);
230 writePinLow(A2);
231 writePinHigh(D7);
232 break;
233 case 13:
234 writePinHigh(A0);
235 writePinLow(A1);
236 writePinHigh(A2);
237 writePinHigh(D7);
238 break;
239 case 14:
240 writePinHigh(A0);
241 writePinHigh(A1);
242 writePinHigh(A2);
243 writePinHigh(D7);
244 break;
245 case 15:
246 writePinHigh(A0);
247 writePinHigh(A1);
248 writePinLow(A2);
249 writePinHigh(D7);
250 break;
251 case 16:
252 writePinLow(C4);
253 break;
254 }
255}
256
257static void unselect_col(uint8_t col) {
258 switch (col) {
259 case 0:
260 writePinHigh(A0);
261 writePinHigh(A1);
262 writePinHigh(A2);
263 writePinLow(D6);
264 break;
265 case 1:
266 writePinHigh(A0);
267 writePinHigh(A1);
268 writePinLow(A2);
269 writePinLow(D6);
270 break;
271 case 2:
272 writePinHigh(A0);
273 writePinLow(A1);
274 writePinHigh(A2);
275 writePinLow(D6);
276 break;
277 case 3:
278 writePinHigh(A0);
279 writePinLow(A1);
280 writePinLow(A2);
281 writePinLow(D6);
282 break;
283 case 4:
284 writePinLow(A0);
285 writePinHigh(A1);
286 writePinHigh(A2);
287 writePinLow(D6);
288 break;
289 case 5:
290 writePinLow(A0);
291 writePinHigh(A1);
292 writePinLow(A2);
293 writePinLow(D6);
294 break;
295 case 6:
296 writePinLow(A0);
297 writePinLow(A1);
298 writePinHigh(A2);
299 writePinLow(D6);
300 break;
301 case 7:
302 writePinLow(A0);
303 writePinLow(A1);
304 writePinLow(A2);
305 writePinLow(D6);
306 break;
307 case 8:
308 writePinHigh(A0);
309 writePinHigh(A1);
310 writePinHigh(A2);
311 writePinLow(D7);
312 break;
313 case 9:
314 writePinHigh(A0);
315 writePinHigh(A1);
316 writePinLow(A2);
317 writePinLow(D7);
318 break;
319 case 10:
320 writePinHigh(A0);
321 writePinLow(A1);
322 writePinHigh(A2);
323 writePinLow(D7);
324 break;
325 case 11:
326 writePinHigh(A0);
327 writePinLow(A1);
328 writePinLow(A2);
329 writePinLow(D7);
330 break;
331 case 12:
332 writePinLow(A0);
333 writePinHigh(A1);
334 writePinHigh(A2);
335 writePinLow(D7);
336 break;
337 case 13:
338 writePinLow(A0);
339 writePinHigh(A1);
340 writePinLow(A2);
341 writePinLow(D7);
342 break;
343 case 14:
344 writePinLow(A0);
345 writePinLow(A1);
346 writePinLow(A2);
347 writePinLow(D7);
348 break;
349 case 15:
350 writePinLow(A0);
351 writePinLow(A1);
352 writePinHigh(A2);
353 writePinLow(D7);
354 break;
355 case 16:
356 writePinHigh(C4);
357 break;
358 }
359}
360
361static void unselect_cols(void) {
362 //Native
363 writePinHigh(C4);
364
365 //Demultiplexer
366 writePinLow(D6);
367 writePinLow(D7);
368 writePinHigh(A0);
369 writePinHigh(A1);
370 writePinHigh(A2);
371}
372
373static void init_pins(void) {
374 unselect_cols();
375 for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
376 setPinInputHigh(row_pins[x]);
377 }
378 setPinOutput(A0);
379 setPinOutput(A1);
380 setPinOutput(A2);
381 setPinOutput(D6);
382 setPinOutput(D7);
383 setPinOutput(C4);
384}
385
386static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) {
387 bool matrix_changed = false;
388
389 // Select col and wait for col selecton to stabilize
390 select_col(current_col);
391 wait_us(30);
392
393 // For each row...
394 for (uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) {
395 // Store last value of row prior to reading
396 matrix_row_t last_row_value = current_matrix[row_index];
397
398 // Check row pin state
399 if (readPin(row_pins[row_index]) == 0) {
400 // Pin LO, set col bit
401 current_matrix[row_index] |= (MATRIX_ROW_SHIFTER << current_col);
402 } else {
403 // Pin HI, clear col bit
404 current_matrix[row_index] &= ~(MATRIX_ROW_SHIFTER << current_col);
405 }
406
407 // Determine if the matrix changed state
408 if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) {
409 matrix_changed = true;
410 }
411 }
412
413 // Unselect col
414 unselect_col(current_col);
415
416 return matrix_changed;
417}
418
419#endif
420
421void matrix_init_custom(void) {
422 // initialize key pins
423 init_pins();
424}
425
426bool matrix_scan_custom(matrix_row_t current_matrix[]) {
427 bool changed = false;
428
429#if defined(DIRECT_PINS) || (DIODE_DIRECTION == COL2ROW)
430 // Set row, read cols
431 for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
432 changed |= read_cols_on_row(current_matrix, current_row);
433 }
434#elif (DIODE_DIRECTION == ROW2COL)
435 // Set col, read rows
436 for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) {
437 changed |= read_rows_on_col(current_matrix, current_col);
438 }
439#endif
440
441 return changed;
442}
diff --git a/keyboards/mechlovin/infinity87/rev2/readme.md b/keyboards/mechlovin/infinity87/rev2/readme.md
new file mode 100644
index 000000000..4c7ea2929
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev2/readme.md
@@ -0,0 +1,23 @@
1# infinity87 Rev.2
2
3![infinity87](https://i.imgur.com/pgtvUTrl.png)
4
5A replacement PCB for TKL keyboard. south-facing stabilisers, .STEP file in our github
6
7* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin)
8* Hardware Supported: Infinity87 rev.2, AVR.
9* Hardware Availability: [Mechlovin.studio](https://mechlovin.studio)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make mechlovin/infinity87/rev2:default
14
15Flashing example for this keyboard:
16
17 make mechlovin/infinity87/rev2: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).
20
21**Reset Key:** To put the IF87_rev2 into bootloader, push reset swith on the bottom of the PCB.
22
23IF87_rev2 used USBasploader from [Erovia tutorial](https://erovia.github.io/posts/thk/#bootloader), thank you [Erovia](https://github.com/Erovia).
diff --git a/keyboards/mechlovin/infinity87/rev2/rev2.c b/keyboards/mechlovin/infinity87/rev2/rev2.c
new file mode 100644
index 000000000..5a92f8bec
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev2/rev2.c
@@ -0,0 +1,57 @@
1/* Copyright 2020 Team Mechlovin'
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
19void matrix_init_kb(void) {
20 matrix_init_user();
21 led_init_ports();
22};
23void led_init_ports(void) {
24 setPinOutput(A5);
25 setPinOutput(A6);
26 setPinOutput(A7);
27 setPinOutput(C7);
28 setPinOutput(C6);
29
30}
31
32layer_state_t layer_state_set_kb(layer_state_t state) {
33 state = layer_state_set_user(state);
34 writePinHigh(C6);
35 writePinHigh(C7);
36 writePinHigh(A7);
37 writePinHigh(A6);
38 writePinHigh(A5);
39 switch (get_highest_layer(state)) {
40 case 0:
41 writePinLow(C6);
42 break;
43 case 1:
44 writePinLow(C7);
45 break;
46 case 2:
47 writePinLow(A7);
48 break;
49 case 3:
50 writePinLow(A6);
51 break;
52 case 4:
53 writePinLow(A5);
54 break;
55 }
56 return state;
57}
diff --git a/keyboards/mechlovin/infinity87/rev2/rev2.h b/keyboards/mechlovin/infinity87/rev2/rev2.h
new file mode 100644
index 000000000..16cdf9ed8
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev2/rev2.h
@@ -0,0 +1,19 @@
1/* Copyright 2020 Team Mechlovin
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"
diff --git a/keyboards/mechlovin/infinity87/rev2/rules.mk b/keyboards/mechlovin/infinity87/rev2/rules.mk
new file mode 100644
index 000000000..367e0bc82
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rev2/rules.mk
@@ -0,0 +1,19 @@
1# MCU name
2MCU = atmega32a
3
4# Processor frequency
5F_CPU = 16000000
6
7# Bootloader selection
8BOOTLOADER = USBasp
9
10# Build Options
11# change yes to no to disable
12#
13CONSOLE_ENABLE = no
14COMMAND_ENABLE = no
15NKRO_ENABLE = no
16BACKLIGHT_ENABLE = yes
17CUSTOM_MATRIX = lite
18
19SRC += matrix.c
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/config.h b/keyboards/mechlovin/infinity87/rgb_rev1/config.h
new file mode 100644
index 000000000..0c16c684c
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/config.h
@@ -0,0 +1,51 @@
1/* Copyright 2020 Team Mechlovin'
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#define PRODUCT_ID 0x8710
20#define DEVICE_VER 0x0001
21#define PRODUCT Infinity 87 RGB rev1
22
23#define MATRIX_ROW_PINS { A10, A13, A14, C13, A4, A3 }
24#define MATRIX_COL_PINS { B12, B13, B14, B15, A8, A9, B11, B10, B2, B1, B0, A7, A6, A5, A2, A1, A0 }
25
26
27#define DIODE_DIRECTION COL2ROW
28
29//rgb matrix setting
30// This is a 7-bit address, that gets left-shifted and bit 0
31// set to 0 for write, 1 for read (as per I2C protocol)
32// The address will vary depending on your wiring:
33// 0b0110000 AD <-> GND
34// 0b0110011 AD <-> VCC
35// 0b0110001 AD <-> SCL
36// 0b0110010 AD <-> SDA
37#define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
38#define RGB_DISABLE_WHEN_USB_SUSPENDED true // turn off effects when suspended
39#define RGB_MATRIX_KEYPRESSES
40#define DISABLE_RGB_MATRIX_SPLASH
41#define DISABLE_RGB_MATRIX_MULTISPLASH
42#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH
43//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
44#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
45//#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE_SIMPLE
46#define DRIVER_ADDR_1 0b0110010
47#define DRIVER_ADDR_2 0b0110010 // this is here for compliancy reasons.
48#define DRIVER_COUNT 1
49#define DRIVER_1_LED_TOTAL 91
50#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
51#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/info.json b/keyboards/mechlovin/infinity87/rgb_rev1/info.json
new file mode 100644
index 000000000..9b3fe1002
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/info.json
@@ -0,0 +1,105 @@
1{
2 "keyboard_name": "infinity87",
3 "url": "",
4 "maintainer": "Team Mechlovin'",
5 "width": 18.25,
6 "height": 6.25,
7 "layouts": {
8 "LAYOUT_all": {
9 "layout": [
10 {"label":"K00 (B0,B6)", "x":0, "y":0},
11 {"label":"K01 (B0,F4)", "x":2, "y":0},
12 {"label":"K02 (B0,C0)", "x":3, "y":0},
13 {"label":"K03 (B0,C1)", "x":4, "y":0},
14 {"label":"K04 (B0,C2)", "x":5, "y":0},
15 {"label":"K05 (B0,C3)", "x":6.5, "y":0},
16 {"label":"K06 (B0,C4)", "x":7.5, "y":0},
17 {"label":"K07 (B0,C5)", "x":8.5, "y":0},
18 {"label":"K08 (B0,C6)", "x":9.5, "y":0},
19 {"label":"K09 (B0,C7)", "x":11, "y":0},
20 {"label":"K0A (B0,D0)", "x":12, "y":0},
21 {"label":"K0B (B0,D1)", "x":13, "y":0},
22 {"label":"K0C (B0,D2)", "x":14, "y":0},
23 {"label":"K0E (B0,D4)", "x":15.25, "y":0},
24 {"label":"K0F (B0,D5)", "x":16.25, "y":0},
25 {"label":"K0G (B0,D6)", "x":17.25, "y":0},
26 {"label":"K10 (B1,B6)", "x":0, "y":1.25},
27 {"label":"K11 (B1,F4)", "x":1, "y":1.25},
28 {"label":"K12 (B1,C0)", "x":2, "y":1.25},
29 {"label":"K13 (B1,C1)", "x":3, "y":1.25},
30 {"label":"K14 (B1,C2)", "x":4, "y":1.25},
31 {"label":"K15 (B1,C3)", "x":5, "y":1.25},
32 {"label":"K16 (B1,C4)", "x":6, "y":1.25},
33 {"label":"K17 (B1,C5)", "x":7, "y":1.25},
34 {"label":"K18 (B1,C6)", "x":8, "y":1.25},
35 {"label":"K19 (B1,C7)", "x":9, "y":1.25},
36 {"label":"K1A (B1,D0)", "x":10, "y":1.25},
37 {"label":"K1B (B1,D1)", "x":11, "y":1.25},
38 {"label":"K1C (B1,D2)", "x":12, "y":1.25},
39 {"label":"K1D (B1,D3)", "x":13, "y":1.25},
40 {"label":"K0D (B0,D3)", "x":14, "y":1.25},
41 {"label":"K1E (B1,D4)", "x":15.25, "y":1.25},
42 {"label":"K1F (B1,D5)", "x":16.25, "y":1.25},
43 {"label":"K1G (B1,D6)", "x":17.25, "y":1.25},
44 {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5},
45 {"label":"K21 (B2,F4)", "x":1.5, "y":2.25},
46 {"label":"K22 (B2,C0)", "x":2.5, "y":2.25},
47 {"label":"K23 (B2,C1)", "x":3.5, "y":2.25},
48 {"label":"K24 (B2,C2)", "x":4.5, "y":2.25},
49 {"label":"K25 (B2,C3)", "x":5.5, "y":2.25},
50 {"label":"K26 (B2,C4)", "x":6.5, "y":2.25},
51 {"label":"K27 (B2,C5)", "x":7.5, "y":2.25},
52 {"label":"K28 (B2,C6)", "x":8.5, "y":2.25},
53 {"label":"K29 (B2,C7)", "x":9.5, "y":2.25},
54 {"label":"K2A (B2,D0)", "x":10.5, "y":2.25},
55 {"label":"K2B (B2,D1)", "x":11.5, "y":2.25},
56 {"label":"K2C (B2,D2)", "x":12.5, "y":2.25},
57 {"label":"K2D (B2,D3)", "x":13.5, "y":2.25, "w":1.5},
58 {"label":"K2E (B2,D4)", "x":15.25, "y":2.25},
59 {"label":"K2F (B2,D5)", "x":16.25, "y":2.25},
60 {"label":"K2G (B2,D6)", "x":17.25, "y":2.25},
61 {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75},
62 {"label":"K31 (B3,F4)", "x":1.75, "y":3.25},
63 {"label":"K32 (B3,C0)", "x":2.75, "y":3.25},
64 {"label":"K33 (B3,C1)", "x":3.75, "y":3.25},
65 {"label":"K34 (B3,C2)", "x":4.75, "y":3.25},
66 {"label":"K35 (B3,C3)", "x":5.75, "y":3.25},
67 {"label":"K36 (B3,C4)", "x":6.75, "y":3.25},
68 {"label":"K37 (B3,C5)", "x":7.75, "y":3.25},
69 {"label":"K38 (B3,C6)", "x":8.75, "y":3.25},
70 {"label":"K39 (B3,C7)", "x":9.75, "y":3.25},
71 {"label":"K3A (B3,D0)", "x":10.75, "y":3.25},
72 {"label":"K3B (B3,D1)", "x":11.75, "y":3.25},
73 {"label":"K3C (B3,D2)", "x":12.75, "y":3.25},
74 {"label":"K3D (B3,D3)", "x":13.75, "y":3.25, "w":1.25},
75 {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25},
76 {"label":"K41 (B4,F4)", "x":1.25, "y":4.25},
77 {"label":"K42 (B4,C0)", "x":2.25, "y":4.25},
78 {"label":"K43 (B4,C1)", "x":3.25, "y":4.25},
79 {"label":"K44 (B4,C2)", "x":4.25, "y":4.25},
80 {"label":"K45 (B4,C3)", "x":5.25, "y":4.25},
81 {"label":"K46 (B4,C4)", "x":6.25, "y":4.25},
82 {"label":"K47 (B4,C5)", "x":7.25, "y":4.25},
83 {"label":"K48 (B4,C6)", "x":8.25, "y":4.25},
84 {"label":"K49 (B4,C7)", "x":9.25, "y":4.25},
85 {"label":"K4A (B4,D0)", "x":10.25, "y":4.25},
86 {"label":"K4B (B4,D1)", "x":11.25, "y":4.25},
87 {"label":"K4C (B4,D2)", "x":12.25, "y":4.25, "w":1.75},
88 {"label":"K4D (B4,D3)", "x":14, "y":4.25},
89 {"label":"K4F (B4,D5)", "x":16.25, "y":4.25},
90 {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25},
91 {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25},
92 {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25},
93 {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25},
94 {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25},
95 {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25},
96 {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25},
97 {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25},
98 {"label":"K5E (B5,D4)", "x":15.25, "y":5.25},
99 {"label":"K5F (B5,D5)", "x":16.25, "y":5.25},
100 {"label":"K5G (B5,D6)", "x":17.25, "y":5.25}
101 ]
102 }
103 }
104 ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
105}
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/readme.md b/keyboards/mechlovin/infinity87/rgb_rev1/readme.md
new file mode 100644
index 000000000..1e71fc29f
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/readme.md
@@ -0,0 +1,21 @@
1# infinity87 RGB Rev.1
2
3![infinity87](https://i.imgur.com/sGRD4d7l.jpeg)
4
5A replacement PCB for TKL keyboard, RGB backlight, south-facing stabilisers, .STEP file in our github
6
7* Keyboard Maintainer: [Team Mechlovin'](https://github.com/mechlovin)
8* Hardware Supported: Infinity87 RGB Rev.1, STM32F303.
9* Hardware Availability: [Mechlovin.studio](https://mechlovin.studio)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make mechlovin/infinity87/rgb_rev1:default
14
15Flashing example for this keyboard:
16
17 make mechlovin/infinity87/rgb_rev1: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).
20
21**Reset Key:** To put the IF87_RGB_Rev.1 into bootloader, hold esc key while plugging in (bootmagic) or push reset swith on the bottom of the PCB. \ No newline at end of file
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c b/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c
new file mode 100644
index 000000000..f13fee8ad
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.c
@@ -0,0 +1,159 @@
1/* Copyright 2020 Team Mechlovin'
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 "rgb_rev1.h"
18
19#ifdef RGB_MATRIX_ENABLE
20const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
21 {0, CS34_SW1, CS35_SW1, CS36_SW1}, //D92-K00-0
22 {0, CS37_SW1, CS38_SW1, CS39_SW1}, //D94-K01-1
23 {0, CS31_SW1, CS32_SW1, CS33_SW1}, //D96-K02-2
24 {0, CS28_SW1, CS29_SW1, CS30_SW1}, //D98-K03-3
25 {0, CS25_SW1, CS26_SW1, CS27_SW1}, //D100-K04-4
26 {0, CS22_SW1, CS23_SW1, CS24_SW1}, //D102-K05-5
27 {0, CS19_SW1, CS20_SW1, CS21_SW1}, //D104-K06-6
28 {0, CS18_SW1, CS17_SW1, CS16_SW1}, //D106-K07-7
29 {0, CS15_SW1, CS14_SW1, CS13_SW1}, //D108-K08-8
30 {0, CS12_SW1, CS11_SW1, CS10_SW1}, //D110-K09-9
31 {0, CS9_SW1, CS8_SW1, CS7_SW1}, //D112-K0A-10
32 {0, CS6_SW1, CS5_SW1, CS4_SW1}, //D114-K0B-11
33 {0, CS3_SW1, CS2_SW1, CS1_SW1}, //D116-K0C-12
34 {0, CS15_SW7, CS14_SW7, CS13_SW7}, //D157-K0D-13
35 {0, CS18_SW7, CS17_SW7, CS16_SW7}, //D118-K0E-14
36 {0, CS19_SW7, CS20_SW7, CS21_SW7}, //D120-K0F-15
37 {0, CS12_SW7, CS11_SW7, CS10_SW7}, //D122-K0G-16
38 {0, CS34_SW2, CS35_SW2, CS36_SW2}, //D93-K10-17
39 {0, CS37_SW2, CS38_SW2, CS39_SW2}, //D95-K11-18
40 {0, CS31_SW2, CS32_SW2, CS33_SW2}, //D97-K12-19
41 {0, CS28_SW2, CS29_SW2, CS30_SW2}, //D99-K13-20
42 {0, CS25_SW2, CS26_SW2, CS27_SW2}, //D101-K14-21
43 {0, CS22_SW2, CS23_SW2, CS24_SW2}, //D103-K15-22
44 {0, CS19_SW2, CS20_SW2, CS21_SW2}, //D105-K16-23
45 {0, CS18_SW2, CS17_SW2, CS16_SW2}, //D107-K17-24
46 {0, CS15_SW2, CS14_SW2, CS13_SW2}, //D109-K18-25
47 {0, CS12_SW2, CS11_SW2, CS10_SW2}, //D111-K19-26
48 {0, CS9_SW2, CS8_SW2, CS7_SW2}, //D113-K1A-27
49 {0, CS6_SW2, CS5_SW2, CS4_SW2}, //D115-K1B-28
50 {0, CS3_SW2, CS2_SW2, CS1_SW2}, //D117-K1C-29
51 {0, CS3_SW8, CS2_SW8, CS1_SW8}, //D158-K1D-30
52 {0, CS3_SW7, CS2_SW7, CS1_SW7}, //D119-K1E-31
53 {0, CS18_SW8, CS17_SW8, CS16_SW8}, //D121-K1F-32
54 {0, CS9_SW9, CS8_SW9, CS7_SW9}, //D123-K1G-33
55 {0, CS34_SW3, CS35_SW3, CS36_SW3}, //D124-K20-34
56 {0, CS37_SW3, CS38_SW3, CS39_SW3}, //D127-K21-35
57 {0, CS31_SW3, CS32_SW3, CS33_SW3}, //D130-K22-36
58 {0, CS28_SW3, CS29_SW3, CS30_SW3}, //D133-K23-37
59 {0, CS25_SW3, CS26_SW3, CS27_SW3}, //D135-K24-38
60 {0, CS22_SW3, CS23_SW3, CS24_SW3}, //D137-K25-39
61 {0, CS19_SW3, CS20_SW3, CS21_SW3}, //D139-K26-40
62 {0, CS18_SW3, CS17_SW3, CS16_SW3}, //D142-K27-41
63 {0, CS15_SW3, CS14_SW3, CS13_SW3}, //D144-K28-42
64 {0, CS12_SW3, CS11_SW3, CS10_SW3}, //D146-K29-43
65 {0, CS9_SW3, CS8_SW3, CS7_SW3}, //D148-K2A-44
66 {0, CS6_SW3, CS5_SW3, CS4_SW3}, //D151-K2B-45
67 {0, CS3_SW3, CS2_SW3, CS1_SW3}, //D154-K2C-46
68 {0, CS6_SW8, CS5_SW8, CS4_SW8}, //D159-K2D-47
69 {0, CS6_SW7, CS5_SW7, CS4_SW7}, //D180-K2E-48
70 {0, CS19_SW8, CS20_SW8, CS21_SW8}, //D181-K2F-49
71 {0, CS9_SW7, CS8_SW7, CS7_SW7}, //D182-K2G-50
72 {0, CS34_SW4, CS35_SW4, CS36_SW4}, //D166-K30-51
73 {0, CS37_SW4, CS38_SW4, CS39_SW4}, //D167-K31-52
74 {0, CS31_SW4, CS32_SW4, CS33_SW4}, //D168-K32-53
75 {0, CS28_SW4, CS29_SW4, CS30_SW4}, //D169-K33-54
76 {0, CS25_SW4, CS26_SW4, CS27_SW4}, //D170-K34-55
77 {0, CS22_SW4, CS23_SW4, CS24_SW4}, //D171-K35-56
78 {0, CS19_SW4, CS20_SW4, CS21_SW4}, //D172-K36-57
79 {0, CS18_SW4, CS17_SW4, CS16_SW4}, //D173-K37-58
80 {0, CS15_SW4, CS14_SW4, CS13_SW4}, //D174-K38-59
81 {0, CS12_SW4, CS11_SW4, CS10_SW4}, //D175-K39-60
82 {0, CS9_SW4, CS8_SW4, CS7_SW4}, //D176-K3A-61
83 {0, CS6_SW4, CS5_SW4, CS4_SW4}, //D177-K3B-62
84 {0, CS3_SW4, CS2_SW4, CS1_SW4}, //D178-K3C-63
85 {0, CS9_SW8, CS8_SW8, CS7_SW8}, //D179-K3D-64
86 {0, CS34_SW5, CS35_SW5, CS36_SW5}, //D125-K40-65
87 {0, CS37_SW5, CS38_SW5, CS39_SW5}, //D128-K41-66
88 {0, CS31_SW5, CS32_SW5, CS33_SW5}, //D131-K42-67
89 {0, CS28_SW5, CS29_SW5, CS30_SW5}, //D134-K43-68
90 {0, CS25_SW5, CS26_SW5, CS27_SW5}, //D136-K44-69
91 {0, CS22_SW5, CS23_SW5, CS24_SW5}, //D138-K45-70
92 {0, CS19_SW5, CS20_SW5, CS21_SW5}, //D140-K46-71
93 {0, CS18_SW5, CS17_SW5, CS16_SW5}, //D143-K47-72
94 {0, CS15_SW5, CS14_SW5, CS13_SW5}, //D145-K48-73
95 {0, CS12_SW5, CS11_SW5, CS10_SW5}, //D147-K49-74
96 {0, CS9_SW5, CS8_SW5, CS7_SW5}, //D149-K4A-75
97 {0, CS6_SW5, CS5_SW5, CS4_SW5}, //D152-K4B-76
98 {0, CS3_SW5, CS2_SW5, CS1_SW5}, //D155-K4C-77
99 {0, CS12_SW8, CS11_SW8, CS10_SW8}, //D160-K4D-78
100 {0, CS12_SW9, CS11_SW9, CS10_SW9}, //D163-K4E-79
101 {0, CS34_SW6, CS35_SW6, CS36_SW6}, //D126-K20-80
102 {0, CS37_SW6, CS38_SW6, CS39_SW6}, //D129-K21-81
103 {0, CS31_SW6, CS32_SW6, CS33_SW6}, //D132-K22-82
104 {0, CS19_SW6, CS20_SW6, CS21_SW6}, //D141-K26-83
105 {0, CS9_SW6, CS8_SW6, CS7_SW6}, //D150-K2A-84
106 {0, CS6_SW6, CS5_SW6, CS4_SW6}, //D153-K2B-85
107 {0, CS3_SW6, CS2_SW6, CS1_SW6}, //D156-K2C-86
108 {0, CS15_SW8, CS14_SW8, CS13_SW8}, //D161-K2D-87
109 {0, CS15_SW9, CS14_SW9, CS13_SW9}, //D162-K2E-88
110 {0, CS18_SW9, CS17_SW9, CS16_SW9}, //D164-K2F-89
111 {0, CS19_SW9, CS20_SW9, CS21_SW9}, //D165-K2G-90
112};
113
114led_config_t g_led_config = { {
115 // Key Matrix to LED Index
116 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16},
117 {17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33},
118 {34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50},
119 {51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, NO_LED, NO_LED, NO_LED},
120 {65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, NO_LED, 79, NO_LED},
121 {80, 81, 82, NO_LED, NO_LED, NO_LED, 83, NO_LED, NO_LED, NO_LED, 84, 85, 86, 87, 88, 89, 90}
122 }, {
123 {0, 0}, {14, 0}, {28, 0}, {42, 0}, {56, 0}, {70, 0}, {84, 0}, {98, 0}, {112, 0}, {126, 0}, {140, 0}, {154, 0}, {168, 0}, {182, 0}, {196, 0}, {210, 0}, {224, 0},
124 {0,16}, {14,16}, {28,16}, {42, 16}, {56, 16}, {70, 16}, {84, 16}, {98, 16}, {112, 16}, {126, 16}, {140, 16}, {154, 16}, {168, 16}, {182, 16}, {196, 16}, {210, 16}, {224, 16},
125 {0,32}, {14,32}, {28,32}, {42, 32}, {56, 32}, {70, 32}, {84, 32}, {98, 32}, {112, 32}, {126, 32}, {140, 32}, {154, 32}, {168, 32}, {182, 32}, {196, 32}, {210, 32}, {224, 32},
126 {0,48}, {14,48}, {28,48}, {42, 48}, {56, 48}, {70, 48}, {84, 48}, {98, 48}, {112, 48}, {126, 48}, {140, 48}, {154, 48}, {168, 48}, {182, 48},
127 {0,64}, {14,64}, {28,64}, {42, 64}, {56, 64}, {70, 64}, {84, 64}, {98, 64}, {112, 64}, {126, 64}, {140, 64}, {154, 64}, {168, 64}, {182, 64}, {210, 64},
128 {0,80}, {14,80}, {28,80}, {84, 80}, {140, 80}, {154, 80}, {168, 80}, {182, 80}, {196, 80}, {210, 80}, {224, 80}
129 }, {
130 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
131 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
132 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
133 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
134 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
135 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
136 } };
137
138
139__attribute__((weak))
140void rgb_matrix_indicators_user(void) {
141 if (host_keyboard_led_state().caps_lock) {
142 rgb_matrix_set_color(51, 255, 255, 255);
143 }
144 if (host_keyboard_led_state().scroll_lock) {
145 rgb_matrix_set_color(15, 255, 255, 255);
146 }
147}
148
149
150void suspend_power_down_kb(void) {
151 rgb_matrix_set_suspend_state(true);
152 suspend_power_down_user();
153}
154
155void suspend_wakeup_init_kb(void) {
156 rgb_matrix_set_suspend_state(false);
157 suspend_wakeup_init_user();
158}
159#endif
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.h b/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.h
new file mode 100644
index 000000000..16cdf9ed8
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/rgb_rev1.h
@@ -0,0 +1,19 @@
1/* Copyright 2020 Team Mechlovin
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"
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/rules.mk b/keyboards/mechlovin/infinity87/rgb_rev1/rules.mk
new file mode 100644
index 000000000..aa7adc895
--- /dev/null
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/rules.mk
@@ -0,0 +1,5 @@
1MCU = STM32F303
2BOARD = QMK_PROTON_C
3
4RGB_MATRIX_ENABLE = yes # Use RGB matrix
5RGB_MATRIX_DRIVER = IS31FL3741
diff --git a/keyboards/mechlovin/infinity87/rules.mk b/keyboards/mechlovin/infinity87/rules.mk
index ed8f3223a..122298799 100644
--- a/keyboards/mechlovin/infinity87/rules.mk
+++ b/keyboards/mechlovin/infinity87/rules.mk
@@ -1,6 +1,3 @@
1# MCU name
2MCU = STM32F303
3BOARD = QMK_PROTON_C
4 1
5# Build Options 2# Build Options
6# change yes to no to disable 3# change yes to no to disable
@@ -14,8 +11,9 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
14SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 11SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
15# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 12# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
16NKRO_ENABLE = yes # USB Nkey Rollover 13NKRO_ENABLE = yes # USB Nkey Rollover
17BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality 14BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
18RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow 15RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
19MIDI_ENABLE = no # MIDI support 16BLUETOOTH_ENABLE = no # Enable Bluetooth
20BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID 17AUDIO_ENABLE = no # Audio output
21AUDIO_ENABLE = no # Audio output on port C6 18
19DEFAULT_FOLDER = mechlovin/infinity87/rev1/standard
diff --git a/keyboards/mechlovin/th1800/config.h b/keyboards/mechlovin/th1800/config.h
new file mode 100644
index 000000000..f8c456782
--- /dev/null
+++ b/keyboards/mechlovin/th1800/config.h
@@ -0,0 +1,53 @@
1/*
2Copyright 2020 Team Mechlovin
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 0x4D4C // ML-Mechlovin
24#define PRODUCT_ID 0x1800
25#define DEVICE_VER 0x0001
26#define MANUFACTURER Team Mechlovin
27#define PRODUCT th1800
28
29/* key matrix size */
30#define MATRIX_ROWS 6
31#define MATRIX_COLS 18
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 { B6, B7, D0, D1, D5, D6 }
44#define MATRIX_COL_PINS { A3, D7, C0, C1, C2, C3, C4, C5, C6, C7, A7, A6, A5, A4, B3, B2, B0, B1 }
45#define UNUSED_PINS
46
47/* COL2ROW, ROW2COL */
48#define DIODE_DIRECTION COL2ROW
49
50#define LED_NUM_LOCK_PIN A2
51#define LED_CAPS_LOCK_PIN A0
52#define LED_SCROLL_LOCK_PIN A1
53#define LED_PIN_ON_STATE 0
diff --git a/keyboards/mechlovin/th1800/info.json b/keyboards/mechlovin/th1800/info.json
new file mode 100644
index 000000000..2ed6673a5
--- /dev/null
+++ b/keyboards/mechlovin/th1800/info.json
@@ -0,0 +1,119 @@
1{
2 "keyboard_name": "th-1800",
3 "url": "",
4 "maintainer": "qmk",
5 "width": 19.5,
6 "height": 7.25,
7 "layouts": {
8 "LAYOUT": {
9 "layout": [
10 {"label":"K00 (B0,B7)", "x":0, "y":0},
11 {"label":"K01 (B0,C0)", "x":1.25, "y":0},
12 {"label":"K02 (B0,C1)", "x":2.25, "y":0},
13 {"label":"K03 (B0,C2)", "x":3.25, "y":0},
14 {"label":"K04 (B0,C3)", "x":4.25, "y":0},
15 {"label":"K05 (B0,C4)", "x":5.5, "y":0},
16 {"label":"K06 (B0,C5)", "x":6.5, "y":0},
17 {"label":"K07 (B0,C6)", "x":7.5, "y":0},
18 {"label":"K08 (B0,C7)", "x":8.5, "y":0},
19 {"label":"K09 (B0,D0)", "x":9.75, "y":0},
20 {"label":"K0A (B0,D1)", "x":10.75, "y":0},
21 {"label":"K0B (B0,D2)", "x":11.75, "y":0},
22 {"label":"K0C (B0,D3)", "x":12.75, "y":0},
23 {"label":"K0E (B0,D5)", "x":15.5, "y":0},
24 {"label":"K0F (B0,D6)", "x":16.5, "y":0},
25 {"label":"K0G (B0,D7)", "x":17.5, "y":0},
26 {"label":"K0H (B0,E0)", "x":18.5, "y":0},
27 {"label":"K5E (B5,D5)", "x":15.5, "y":1},
28 {"label":"K5F (B5,D6)", "x":16.5, "y":1},
29 {"label":"K5G (B5,D7)", "x":17.5, "y":1},
30 {"label":"K5H (B5,E0)", "x":18.5, "y":1},
31 {"label":"K10 (B1,B7)", "x":0, "y":2},
32 {"label":"K11 (B1,C0)", "x":1, "y":2},
33 {"label":"K12 (B1,C1)", "x":2, "y":2},
34 {"label":"K13 (B1,C2)", "x":3, "y":2},
35 {"label":"K14 (B1,C3)", "x":4, "y":2},
36 {"label":"K15 (B1,C4)", "x":5, "y":2},
37 {"label":"K16 (B1,C5)", "x":6, "y":2},
38 {"label":"K17 (B1,C6)", "x":7, "y":2},
39 {"label":"K18 (B1,C7)", "x":8, "y":2},
40 {"label":"K19 (B1,D0)", "x":9, "y":2},
41 {"label":"K1A (B1,D1)", "x":10, "y":2},
42 {"label":"K1B (B1,D2)", "x":11, "y":2},
43 {"label":"K1C (B1,D3)", "x":12, "y":2},
44 {"label":"K1D (B1,D4)", "x":13, "y":2},
45 {"label":"K0D (B0,D4)", "x":14, "y":2},
46 {"label":"K1E (B1,D5)", "x":15.5, "y":2},
47 {"label":"K1F (B1,D6)", "x":16.5, "y":2},
48 {"label":"K1G (B1,D7)", "x":17.5, "y":2},
49 {"label":"K1H (B1,E0)", "x":18.5, "y":2},
50 {"label":"K20 (B2,B7)", "x":0, "y":3, "w":1.5},
51 {"label":"K21 (B2,C0)", "x":1.5, "y":3},
52 {"label":"K22 (B2,C1)", "x":2.5, "y":3},
53 {"label":"K23 (B2,C2)", "x":3.5, "y":3},
54 {"label":"K24 (B2,C3)", "x":4.5, "y":3},
55 {"label":"K25 (B2,C4)", "x":5.5, "y":3},
56 {"label":"K26 (B2,C5)", "x":6.5, "y":3},
57 {"label":"K27 (B2,C6)", "x":7.5, "y":3},
58 {"label":"K28 (B2,C7)", "x":8.5, "y":3},
59 {"label":"K29 (B2,D0)", "x":9.5, "y":3},
60 {"label":"K2A (B2,D1)", "x":10.5, "y":3},
61 {"label":"K2B (B2,D2)", "x":11.5, "y":3},
62 {"label":"K2C (B2,D3)", "x":12.5, "y":3},
63 {"label":"K2D (B2,D4)", "x":13.5, "y":3, "w":1.5},
64 {"label":"K2E (B2,D5)", "x":15.5, "y":3},
65 {"label":"K2F (B2,D6)", "x":16.5, "y":3},
66 {"label":"K2G (B2,D7)", "x":17.5, "y":3},
67 {"label":"K2H (B2,E0)", "x":18.5, "y":3},
68 {"label":"K30 (B3,B7)", "x":0, "y":4, "w":1.75},
69 {"label":"K31 (B3,C0)", "x":1.75, "y":4},
70 {"label":"K32 (B3,C1)", "x":2.75, "y":4},
71 {"label":"K33 (B3,C2)", "x":3.75, "y":4},
72 {"label":"K34 (B3,C3)", "x":4.75, "y":4},
73 {"label":"K35 (B3,C4)", "x":5.75, "y":4},
74 {"label":"K36 (B3,C5)", "x":6.75, "y":4},
75 {"label":"K37 (B3,C6)", "x":7.75, "y":4},
76 {"label":"K38 (B3,C7)", "x":8.75, "y":4},
77 {"label":"K39 (B3,D0)", "x":9.75, "y":4},
78 {"label":"K3A (B3,D1)", "x":10.75, "y":4},
79 {"label":"K3B (B3,D2)", "x":11.75, "y":4},
80 {"label":"K3C (B3,D3)", "x":12.75, "y":4},
81 {"label":"K3D (B3,D4)", "x":13.75, "y":4, "w":1.25},
82 {"label":"K3E (B3,D5)", "x":15.5, "y":4},
83 {"label":"K3F (B3,D6)", "x":16.5, "y":4},
84 {"label":"K3G (B3,D7)", "x":17.5, "y":4},
85 {"label":"K3H (B3,E0)", "x":18.5, "y":4},
86 {"label":"K40 (B4,B7)", "x":0, "y":5, "w":1.25},
87 {"label":"K41 (B4,C0)", "x":1.25, "y":5},
88 {"label":"K42 (B4,C1)", "x":2.25, "y":5},
89 {"label":"K43 (B4,C2)", "x":3.25, "y":5},
90 {"label":"K44 (B4,C3)", "x":4.25, "y":5},
91 {"label":"K45 (B4,C4)", "x":5.25, "y":5},
92 {"label":"K46 (B4,C5)", "x":6.25, "y":5},
93 {"label":"K47 (B4,C6)", "x":7.25, "y":5},
94 {"label":"K48 (B4,C7)", "x":8.25, "y":5},
95 {"label":"K49 (B4,D0)", "x":9.25, "y":5},
96 {"label":"K4A (B4,D1)", "x":10.25, "y":5},
97 {"label":"K4B (B4,D2)", "x":11.25, "y":5},
98 {"label":"K4C (B4,D3)", "x":12.25, "y":5, "w":1.75},
99 {"label":"K4D (B4,D4)", "x":14.25, "y":5.25},
100 {"label":"K4E (B4,D5)", "x":15.5, "y":5},
101 {"label":"K4F (B4,D6)", "x":16.5, "y":5},
102 {"label":"K4G (B4,D7)", "x":17.5, "y":5},
103 {"label":"K4H (B4,E0)", "x":18.5, "y":5, "h":2},
104 {"label":"K50 (B5,B7)", "x":0, "y":6, "w":1.5},
105 {"label":"K51 (B5,C0)", "x":1.5, "y":6},
106 {"label":"K52 (B5,C1)", "x":2.5, "y":6, "w":1.5},
107 {"label":"K55 (B5,C4)", "x":4, "y":6, "w":6.25},
108 {"label":"K57 (B5,C6)", "x":10.25, "y":6, "w":1.25},
109 {"label":"K58 (B5,C7)", "x":11.5, "y":6, "w":1.5},
110 {"label":"K59 (B5,D0)", "x":13.25, "y":6.25},
111 {"label":"K5A (B5,D1)", "x":14.25, "y":6.25},
112 {"label":"K5B (B5,D2)", "x":15.25, "y":6.25},
113 {"label":"K5C (B5,D3)", "x":16.5, "y":6},
114 {"label":"K5D (B5,D4)", "x":17.5, "y":6}
115 ]
116 }
117 }
118 ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
119}
diff --git a/keyboards/mechlovin/th1800/keymaps/default/keymap.c b/keyboards/mechlovin/th1800/keymaps/default/keymap.c
new file mode 100644
index 000000000..a04a6f246
--- /dev/null
+++ b/keyboards/mechlovin/th1800/keymaps/default/keymap.c
@@ -0,0 +1,29 @@
1/* Copyright 2020 Team Mechlovin
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT(
20 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_PGUP, KC_PSCR,
21 KC_DEL, KC_END, KC_PGDN, KC_SLCK,
22 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_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
23 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, KC_P7, KC_P8, KC_P9, KC_PMNS,
24 KC_CAPS, 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_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
25 KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
27 ),
28
29};
diff --git a/keyboards/mechlovin/th1800/keymaps/default/readme.md b/keyboards/mechlovin/th1800/keymaps/default/readme.md
new file mode 100644
index 000000000..4471e2802
--- /dev/null
+++ b/keyboards/mechlovin/th1800/keymaps/default/readme.md
@@ -0,0 +1 @@
# The default keymap for th1800
diff --git a/keyboards/mechlovin/th1800/keymaps/via/keymap.c b/keyboards/mechlovin/th1800/keymaps/via/keymap.c
new file mode 100644
index 000000000..86bc27859
--- /dev/null
+++ b/keyboards/mechlovin/th1800/keymaps/via/keymap.c
@@ -0,0 +1,56 @@
1/* Copyright 2020 Team Mechlovin
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#include QMK_KEYBOARD_H
17
18const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
19 [0] = LAYOUT(
20 KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_HOME, KC_PGUP, KC_PSCR,
21 KC_DEL, KC_END, KC_PGDN, KC_SLCK,
22 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_BSPC, KC_DEL, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
23 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, KC_P7, KC_P8, KC_P9, KC_PMNS,
24 KC_CAPS, 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_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
25 KC_LSFT, KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
26 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
27 ),
28 [1] = LAYOUT(
29 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
30 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
31 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
32 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
33 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
34 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
35 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
36 ),
37 [2] = LAYOUT(
38 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
41 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
42 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
43 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
44 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
45 ),
46 [3] = LAYOUT(
47 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
50 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
51 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
52 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
53 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
54 ),
55
56};
diff --git a/keyboards/mechlovin/th1800/keymaps/via/readme.md b/keyboards/mechlovin/th1800/keymaps/via/readme.md
new file mode 100644
index 000000000..d81d42fbc
--- /dev/null
+++ b/keyboards/mechlovin/th1800/keymaps/via/readme.md
@@ -0,0 +1,2 @@
1# The VIA keymap for TH1800
2
diff --git a/keyboards/mechlovin/th1800/keymaps/via/rules.mk b/keyboards/mechlovin/th1800/keymaps/via/rules.mk
new file mode 100644
index 000000000..036bd6d1c
--- /dev/null
+++ b/keyboards/mechlovin/th1800/keymaps/via/rules.mk
@@ -0,0 +1 @@
VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/mechlovin/th1800/readme.md b/keyboards/mechlovin/th1800/readme.md
new file mode 100644
index 000000000..e71ca2574
--- /dev/null
+++ b/keyboards/mechlovin/th1800/readme.md
@@ -0,0 +1,23 @@
1# th1800
2
3![th1800](https://i.imgur.com/7LZUCgBl.png)
4
5The project use atmega32a, through hole component, 1800 compact layout, open source.
6
7* Keyboard Maintainer: [Team Mechlovin](https://github.com/mechlovin)
8* Hardware Supported: th1800 PCB, ATmega32A
9* Hardware Availability: [PCB](https://github.com/mechlovin/PCB/tree/master/1800-Compact)
10
11Make example for this keyboard (after setting up your build environment):
12
13 make mechlovin/th1800:default
14
15Flashing example for this keyboard:
16
17 make mechlovin/th1800: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).
20
21**Reset Key:** To put the Th1800 into bootloader, push reset swith on the top of the PCB.
22
23IF87_rev2 used USBasploader from [Erovia tutorial](https://erovia.github.io/posts/thk/#bootloader), thank you [Erovia](https://github.com/Erovia).
diff --git a/keyboards/mechlovin/th1800/rules.mk b/keyboards/mechlovin/th1800/rules.mk
new file mode 100644
index 000000000..307616647
--- /dev/null
+++ b/keyboards/mechlovin/th1800/rules.mk
@@ -0,0 +1,25 @@
1# MCU name
2MCU = atmega32a
3
4# Processor frequency
5F_CPU = 16000000
6
7# Bootloader selection
8BOOTLOADER = USBasp
9
10# Build Options
11# change yes to no to disable
12#
13BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
14MOUSEKEY_ENABLE = yes # Mouse keys
15EXTRAKEY_ENABLE = yes # Audio control and System control
16CONSOLE_ENABLE = no # Console for debug
17COMMAND_ENABLE = no # Commands for debug and configuration
18# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
19SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
20# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
21NKRO_ENABLE = no # USB Nkey Rollover
22BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
23RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
24BLUETOOTH_ENABLE = no # Enable Bluetooth
25AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/th1800/th1800.c b/keyboards/mechlovin/th1800/th1800.c
new file mode 100644
index 000000000..f27b244c4
--- /dev/null
+++ b/keyboards/mechlovin/th1800/th1800.c
@@ -0,0 +1,17 @@
1/* Copyright 2020 Team Mechlovin
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 "th1800.h"
diff --git a/keyboards/mechlovin/th1800/th1800.h b/keyboards/mechlovin/th1800/th1800.h
new file mode 100644
index 000000000..edd950b76
--- /dev/null
+++ b/keyboards/mechlovin/th1800/th1800.h
@@ -0,0 +1,36 @@
1/* Copyright 2020 Team Mechlovin
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( \
22 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0E, K0F, K0G, K0H, \
23 K5E, K5F, K5G, K5H, \
24 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K0D, K1E, K1F, K1G, K1H, \
25 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, \
26 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, \
27 K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, \
28 K50, K51, K52, K55, K57, K58, K59, K5A, K5B, K5C, K5D \
29) { \
30 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H }, \
31 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H }, \
32 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H }, \
33 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H }, \
34 { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H }, \
35 { K50, K51, K52, KC_NO, KC_NO, K55, KC_NO, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H }, \
36}