aboutsummaryrefslogtreecommitdiff
path: root/keyboards/melgeek
diff options
context:
space:
mode:
authorMelGeek <65591833+melgeek001365@users.noreply.github.com>2021-02-21 13:05:41 +0800
committerGitHub <noreply@github.com>2021-02-20 21:05:41 -0800
commitdf7d3a17943920c5d342c7a68fbc3e3d911ba68a (patch)
treed7fe91070d062ec5204e6bad10ae01339bd075ca /keyboards/melgeek
parent6e59fe0b4ab5b3512dd35a518e0cc8b3a31b0d42 (diff)
downloadqmk_firmware-df7d3a17943920c5d342c7a68fbc3e3d911ba68a.tar.gz
qmk_firmware-df7d3a17943920c5d342c7a68fbc3e3d911ba68a.zip
[Keyboard] Support MJ64 REV3 - a 60% RGB Hotswap with arrow (#11785)
Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> Co-authored-by: Drashna Jaelre <drashna@live.com>
Diffstat (limited to 'keyboards/melgeek')
-rw-r--r--keyboards/melgeek/mj64/rev3/config.h39
-rw-r--r--keyboards/melgeek/mj64/rev3/rev3.c134
-rw-r--r--keyboards/melgeek/mj64/rev3/rules.mk23
3 files changed, 196 insertions, 0 deletions
diff --git a/keyboards/melgeek/mj64/rev3/config.h b/keyboards/melgeek/mj64/rev3/config.h
new file mode 100644
index 000000000..26909d559
--- /dev/null
+++ b/keyboards/melgeek/mj64/rev3/config.h
@@ -0,0 +1,39 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.com>
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#pragma once
18
19/*
20 * Keyboard Matrix Assignments
21 *
22 * Change this to how you wired your keyboard
23 * COLS: AVR pins used for columns, left to right
24 * ROWS: AVR pins used for rows, top to bottom
25 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
26 * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
27 *
28 */
29
30#define MATRIX_ROW_PINS { B12, B11, B10, B1, A3 }
31#define MATRIX_COL_PINS { B15, A8, B13, A15, B3, B4, B5, B8, B9, C13, C14, C15, A0, A1 }
32#define UNUSED_PINS
33
34/* COL2ROW, ROW2COL*/
35#define DIODE_DIRECTION COL2ROW
36
37#define DRIVER_1_LED_TOTAL 72
38#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
39#define DRIVER_INDICATOR_LED_TOTAL 0
diff --git a/keyboards/melgeek/mj64/rev3/rev3.c b/keyboards/melgeek/mj64/rev3/rev3.c
new file mode 100644
index 000000000..03ed9fe00
--- /dev/null
+++ b/keyboards/melgeek/mj64/rev3/rev3.c
@@ -0,0 +1,134 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.com>
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 "mj64.h"
18
19#ifdef RGB_MATRIX_ENABLE
20
21const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
22 {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
23 {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB3 */
24 {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB4 */
25 {0, CS9_SW4, CS8_SW4, CS7_SW4}, /* RGB5 */
26 {0, CS9_SW5, CS8_SW5, CS7_SW5}, /* RGB6 */
27 {0, CS9_SW6, CS8_SW6, CS7_SW6}, /* RGB7 */
28 {0, CS9_SW7, CS8_SW7, CS7_SW7}, /* RGB2 */
29 {0, CS9_SW8, CS8_SW8, CS7_SW8}, /* RGB8 */
30 {0, CS9_SW9, CS8_SW9, CS7_SW9}, /* RGB9 */
31 {0, CS24_SW1, CS23_SW1, CS22_SW1}, /* RGB48 */
32 {0, CS24_SW2, CS23_SW2, CS22_SW2}, /* RGB46 */
33 {0, CS24_SW3, CS23_SW3, CS22_SW3}, /* RGB49 */
34 {0, CS24_SW4, CS23_SW4, CS22_SW4}, /* RGB50 */
35 {0, CS24_SW5, CS23_SW5, CS22_SW5}, /* RGB51 */
36 {0, CS24_SW6, CS23_SW6, CS22_SW6}, /* RGB52 */
37 {0, CS24_SW7, CS23_SW7, CS22_SW7}, /* RGB53 */
38 {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB10 */
39 {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB11 */
40 {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB16 */
41 {0, CS12_SW4, CS11_SW4, CS10_SW4}, /* RGB12 */
42 {0, CS12_SW5, CS11_SW5, CS10_SW5}, /* RGB17 */
43 {0, CS12_SW6, CS11_SW6, CS10_SW6}, /* RGB13 */
44 {0, CS12_SW7, CS11_SW7, CS10_SW7}, /* RGB14 */
45 {0, CS12_SW8, CS11_SW8, CS10_SW8}, /* RGB18 */
46 {0, CS12_SW9, CS11_SW9, CS10_SW9}, /* RGB15 */
47 {0, CS24_SW8, CS23_SW8, CS22_SW8}, /* RGB47 */
48 {0, CS24_SW9, CS23_SW9, CS22_SW9}, /* RGB54 */
49 {0, CS27_SW1, CS26_SW1, CS25_SW1}, /* RGB55 */
50 {0, CS27_SW2, CS26_SW2, CS25_SW2}, /* RGB60 */
51 {0, CS27_SW3, CS26_SW3, CS25_SW3}, /* RGB61 */
52 {0, CS15_SW1, CS14_SW1, CS13_SW1}, /* RGB21 */
53 {0, CS15_SW2, CS14_SW2, CS13_SW2}, /* RGB19 */
54 {0, CS15_SW3, CS14_SW3, CS13_SW3}, /* RGB22 */
55 {0, CS15_SW4, CS14_SW4, CS13_SW4}, /* RGB26 */
56 {0, CS15_SW5, CS14_SW5, CS13_SW5}, /* RGB20 */
57 {0, CS15_SW6, CS14_SW6, CS13_SW6}, /* RGB23 */
58 {0, CS15_SW7, CS14_SW7, CS13_SW7}, /* RGB24 */
59 {0, CS15_SW8, CS14_SW8, CS13_SW8}, /* RGB25 */
60 {0, CS15_SW9, CS14_SW9, CS13_SW9}, /* RGB27 */
61 {0, CS27_SW4, CS26_SW4, CS25_SW4}, /* RGB56 */
62 {0, CS27_SW5, CS26_SW5, CS25_SW5}, /* RGB57 */
63 {0, CS27_SW6, CS26_SW6, CS25_SW6}, /* RGB62 */
64 {0, CS27_SW7, CS26_SW7, CS25_SW7}, /* RGB58 */
65 {0, CS27_SW8, CS26_SW8, CS25_SW8}, /* RGB63 */
66 {0, CS27_SW9, CS26_SW9, CS25_SW9}, /* RGB59 */
67 {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB28 */
68 {0, CS18_SW2, CS17_SW2, CS16_SW2}, /* RGB29 */
69 {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB30 */
70 {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB31 */
71 {0, CS18_SW5, CS17_SW5, CS16_SW5}, /* RGB35 */
72 {0, CS18_SW6, CS17_SW6, CS16_SW6}, /* RGB32 */
73 {0, CS18_SW7, CS17_SW7, CS16_SW7}, /* RGB33 */
74 {0, CS18_SW8, CS17_SW8, CS16_SW8}, /* RGB34 */
75 {0, CS18_SW9, CS17_SW9, CS16_SW9}, /* RGB36 */
76 {0, CS30_SW1, CS29_SW1, CS28_SW1}, /* RGB64 */
77 {0, CS30_SW2, CS29_SW2, CS28_SW2}, /* RGB65 */
78 {0, CS30_SW3, CS29_SW3, CS28_SW3}, /* RGB66 */
79 {0, CS30_SW4, CS29_SW4, CS28_SW4}, /* RGB67 */
80 {0, CS30_SW5, CS29_SW5, CS28_SW5}, /* RGB68 */
81 {0, CS30_SW6, CS29_SW6, CS28_SW6}, /* RGB69 */
82 {0, CS30_SW7, CS29_SW7, CS28_SW7}, /* RGB70 */
83 {0, CS21_SW1, CS20_SW1, CS19_SW1}, /* RGB37 */
84 {0, CS21_SW2, CS20_SW2, CS19_SW2}, /* RGB40 */
85 {0, CS21_SW3, CS20_SW3, CS19_SW3}, /* RGB43 */
86 {0, CS21_SW4, CS20_SW4, CS19_SW4}, /* RGB38 */
87 {0, CS21_SW5, CS20_SW5, CS19_SW5}, /* RGB41 */
88 {0, CS21_SW6, CS20_SW6, CS19_SW6}, /* RGB44 */
89 {0, CS21_SW7, CS20_SW7, CS19_SW7}, /* RGB45 */
90 {0, CS21_SW8, CS20_SW8, CS19_SW8}, /* RGB39 */
91 {0, CS21_SW9, CS20_SW9, CS19_SW9}, /* RGB42 */
92 {0, CS30_SW8, CS29_SW8, CS28_SW8}, /* RGB71 */
93 {0, CS30_SW9, CS29_SW9, CS28_SW9}, /* RGB72 */
94};
95
96led_config_t g_led_config = {
97 {
98 /* C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 */
99 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 }, /* R0 */
100 { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, /* R1 */
101 { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, NO_LED }, /* R2 */
102 { 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 }, /* R3 */
103 { 61, 62, 63, NO_LED, NO_LED, 65, NO_LED, NO_LED, NO_LED, 67, 68, 69, 70, 71 }, /* R4 */
104 }, {
105 {0, 0}, {16, 0}, {32, 0}, {48, 0}, {64, 0}, {80, 0}, {96, 0}, {112, 0}, {128, 0}, {144, 0}, {160, 0}, {176, 0}, {192, 0}, {208, 0}, {224, 0}, {240, 0},
106 {0, 16}, {16, 16}, {32, 16}, {48, 16}, {64, 16}, {80, 16}, {96, 16}, {112, 16}, {128, 16}, {144, 16}, {160, 16}, {176, 16}, {192, 16}, {208, 16},
107 {0, 32}, {16, 32}, {32, 32}, {48, 32}, {64, 32}, {80, 32}, {96, 32}, {112, 32}, {128, 32}, {144, 32}, {160, 32}, {176, 32}, {192, 32}, {208, 32}, {224, 32},
108 {0, 48}, {16, 48}, {32, 48}, {48, 48}, {64, 48}, {80, 48}, {96, 48}, {112, 48}, {128, 48}, {144, 48}, {160, 48}, {176, 48}, {192, 48}, {208, 48}, {224, 48}, {240, 48},
109 {0, 64}, {16, 64}, {32, 64}, {48, 64}, {64, 64}, {80, 64}, {96, 64}, {112, 64}, {128, 64}, {144, 64}, {160, 64},
110 }, {
111 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
113 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
114 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
115 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
116 }
117};
118
119void suspend_power_down_kb(void) {
120 rgb_matrix_set_suspend_state(true);
121 suspend_power_down_user();
122}
123
124void suspend_wakeup_init_kb(void) {
125 rgb_matrix_set_suspend_state(false);
126 suspend_wakeup_init_user();
127}
128#endif
129
130void keyboard_pre_init_kb(void) {
131 setPinOutput(A2);
132 writePinHigh(A2);
133 keyboard_pre_init_user();
134}
diff --git a/keyboards/melgeek/mj64/rev3/rules.mk b/keyboards/melgeek/mj64/rev3/rules.mk
new file mode 100644
index 000000000..01b8aca41
--- /dev/null
+++ b/keyboards/melgeek/mj64/rev3/rules.mk
@@ -0,0 +1,23 @@
1# MCU name
2MCU = STM32F303
3
4# Build Options
5# change yes to no to disable
6#
7BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
8MOUSEKEY_ENABLE = yes # Mouse keys
9EXTRAKEY_ENABLE = yes # Audio control and System control
10CONSOLE_ENABLE = no # Console for debug
11COMMAND_ENABLE = no # Commands for debug and configuration
12# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
13SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
14# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
15NKRO_ENABLE = yes # USB Nkey Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
18BLUETOOTH_ENABLE = no # Enable Bluetooth
19RGB_MATRIX_ENABLE = yes # Use RGB matrix
20RGB_MATRIX_DRIVER = IS31FL3741
21NO_USB_STARTUP_CHECK = no # Disable initialization only when usb is plugged in
22
23LAYOUTS = 64_ansi