aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xkeyboards/melgeek/mach80/rev2/config.h42
-rwxr-xr-xkeyboards/melgeek/mach80/rev2/rev2.c191
-rwxr-xr-xkeyboards/melgeek/mach80/rev2/rules.mk23
3 files changed, 256 insertions, 0 deletions
diff --git a/keyboards/melgeek/mach80/rev2/config.h b/keyboards/melgeek/mach80/rev2/config.h
new file mode 100755
index 000000000..3ac1b87ab
--- /dev/null
+++ b/keyboards/melgeek/mach80/rev2/config.h
@@ -0,0 +1,42 @@
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 { F0, F1, F4, F5, F6, E6 }
31#define MATRIX_COL_PINS { B0, B1, B2, B3, D2, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, D3 }
32#define UNUSED_PINS
33
34/* COL2ROW, ROW2COL*/
35#define DIODE_DIRECTION ROW2COL
36
37#define DRIVER_LED_TOTAL 94
38#define DRIVER_INDICATOR_LED_TOTAL 3
39
40
41#define RGB_MATRIX_CENTER { 108, 30 }
42
diff --git a/keyboards/melgeek/mach80/rev2/rev2.c b/keyboards/melgeek/mach80/rev2/rev2.c
new file mode 100755
index 000000000..09250b156
--- /dev/null
+++ b/keyboards/melgeek/mach80/rev2/rev2.c
@@ -0,0 +1,191 @@
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 "mach80.h"
18
19#ifdef RGB_MATRIX_ENABLE
20
21
22const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
23 {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
24 {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */
25 {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */
26 {0, CS9_SW4, CS8_SW4, CS7_SW4}, /* RGB4 */
27 {0, CS9_SW5, CS8_SW5, CS7_SW5}, /* RGB5 */
28 {0, CS9_SW6, CS8_SW6, CS7_SW6}, /* RGB6 */
29 {0, CS9_SW7, CS8_SW7, CS7_SW7}, /* RGB7 */
30 {0, CS9_SW8, CS8_SW8, CS7_SW8}, /* RGB8 */
31 {0, CS9_SW9, CS8_SW9, CS7_SW9}, /* RGB9 */
32 {0, CS27_SW1, CS26_SW1, CS25_SW1}, /* RGB65 */
33 {0, CS27_SW2, CS26_SW2, CS25_SW2}, /* RGB56 */
34 {0, CS27_SW3, CS26_SW3, CS25_SW3}, /* RGB57 */
35 {0, CS27_SW4, CS26_SW4, CS25_SW4}, /* RGB58 */
36 {0, CS27_SW5, CS26_SW5, CS25_SW5}, /* RGB59 */
37 {0, CS27_SW6, CS26_SW6, CS25_SW6}, /* RGB67 */
38 {0, CS27_SW7, CS26_SW7, CS25_SW7}, /* RGB68 */
39 {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB10 */
40 {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB11 */
41 {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB12 */
42 {0, CS12_SW4, CS11_SW4, CS10_SW4}, /* RGB13 */
43 {0, CS12_SW5, CS11_SW5, CS10_SW5}, /* RGB14 */
44 {0, CS12_SW6, CS11_SW6, CS10_SW6}, /* RGB15 */
45 {0, CS12_SW7, CS11_SW7, CS10_SW7}, /* RGB16 */
46 {0, CS12_SW8, CS11_SW8, CS10_SW8}, /* RGB17 */
47 {0, CS12_SW9, CS11_SW9, CS10_SW9}, /* RGB18 */
48 {0, CS27_SW8, CS26_SW8, CS25_SW8}, /* RGB69 */
49 {0, CS27_SW9, CS26_SW9, CS25_SW9}, /* RGB70 */
50 {0, CS30_SW1, CS29_SW1, CS28_SW1}, /* RGB64 */
51 {0, CS30_SW2, CS29_SW2, CS28_SW2}, /* RGB55 */
52 {0, CS30_SW3, CS29_SW3, CS28_SW3}, /* RGB71 */
53 {0, CS30_SW4, CS29_SW4, CS28_SW4}, /* RGB72 */
54 {0, CS30_SW5, CS29_SW5, CS28_SW5}, /* RGB66 */
55 {0, CS30_SW6, CS29_SW6, CS28_SW6}, /* RGB60 */
56 {0, CS30_SW7, CS29_SW7, CS28_SW7}, /* RGB61 */
57 {0, CS30_SW8, CS29_SW8, CS28_SW8}, /* RGB73 */
58 {0, CS15_SW1, CS14_SW1, CS13_SW1}, /* RGB19 */
59 {0, CS15_SW2, CS14_SW2, CS13_SW2}, /* RGB20 */
60 {0, CS15_SW3, CS14_SW3, CS13_SW3}, /* RGB21 */
61 {0, CS15_SW4, CS14_SW4, CS13_SW4}, /* RGB22 */
62 {0, CS15_SW5, CS14_SW5, CS13_SW5}, /* RGB23 */
63 {0, CS15_SW6, CS14_SW6, CS13_SW6}, /* RGB24 */
64 {0, CS15_SW7, CS14_SW7, CS13_SW7}, /* RGB25 */
65 {0, CS15_SW8, CS14_SW8, CS13_SW8}, /* RGB26 */
66 {0, CS15_SW9, CS14_SW9, CS13_SW9}, /* RGB27 */
67 {0, CS30_SW9, CS29_SW9, CS28_SW9}, /* RGB74 */
68 {0, CS33_SW1, CS32_SW1, CS31_SW1}, /* RGB75 */
69 {0, CS33_SW2, CS32_SW2, CS31_SW2}, /* RGB76 */
70 {0, CS33_SW3, CS32_SW3, CS31_SW3}, /* RGB77 */
71 {0, CS33_SW4, CS32_SW4, CS31_SW4}, /* RGB78 */
72 {0, CS33_SW5, CS32_SW5, CS31_SW5}, /* RGB79 */
73 {0, CS33_SW6, CS32_SW6, CS31_SW6}, /* RGB80 */
74 {0, CS33_SW7, CS32_SW7, CS31_SW7}, /* RGB83 */
75 {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB28 */
76 {0, CS18_SW2, CS17_SW2, CS16_SW2}, /* RGB29 */
77 {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB30 */
78 {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB31 */
79 {0, CS18_SW5, CS17_SW5, CS16_SW5}, /* RGB32 */
80 {0, CS18_SW6, CS17_SW6, CS16_SW6}, /* RGB33 */
81 {0, CS18_SW7, CS17_SW7, CS16_SW7}, /* RGB34 */
82 {0, CS18_SW8, CS17_SW8, CS16_SW8}, /* RGB35 */
83 {0, CS18_SW9, CS17_SW9, CS16_SW9}, /* RGB36 */
84 {0, CS33_SW8, CS32_SW8, CS31_SW8}, /* RGB81 */
85 {0, CS33_SW9, CS32_SW9, CS31_SW9}, /* RGB82 */
86 {0, CS36_SW1, CS35_SW1, CS34_SW1}, /* RGB89 */
87 {0, CS36_SW2, CS35_SW2, CS34_SW2}, /* RGB90 */
88 {0, CS36_SW3, CS35_SW3, CS34_SW3}, /* RGB91 */
89 {0, CS36_SW4, CS35_SW4, CS34_SW4}, /* RGB92 */
90 {0, CS21_SW1, CS20_SW1, CS19_SW1}, /* RGB37 */
91 {0, CS21_SW2, CS20_SW2, CS19_SW2}, /* RGB38 */
92 {0, CS21_SW3, CS20_SW3, CS19_SW3}, /* RGB39 */
93 {0, CS21_SW4, CS20_SW4, CS19_SW4}, /* RGB40 */
94 {0, CS21_SW5, CS20_SW5, CS19_SW5}, /* RGB41 */
95 {0, CS21_SW6, CS20_SW6, CS19_SW6}, /* RGB42 */
96 {0, CS21_SW7, CS20_SW7, CS19_SW7}, /* RGB43 */
97 {0, CS21_SW8, CS20_SW8, CS19_SW8}, /* RGB44 */
98 {0, CS21_SW9, CS20_SW9, CS19_SW9}, /* RGB45 */
99 {0, CS36_SW5, CS35_SW5, CS34_SW5}, /* RGB84 */
100 {0, CS36_SW6, CS35_SW6, CS34_SW6}, /* RGB85 */
101 {0, CS36_SW7, CS35_SW7, CS34_SW7}, /* RGB88 */
102 {0, CS36_SW8, CS35_SW8, CS34_SW8}, /* RGB86 */
103 {0, CS36_SW9, CS35_SW9, CS34_SW9}, /* RGB87 */
104 {0, CS39_SW1, CS38_SW1, CS37_SW1}, /* RGB98 */
105 {0, CS39_SW2, CS38_SW2, CS37_SW2}, /* RGB99 */
106 {0, CS39_SW3, CS38_SW3, CS37_SW3}, /* RGB100 */
107 {0, CS24_SW1, CS23_SW1, CS22_SW1}, /* RGB46 */
108 {0, CS24_SW2, CS23_SW2, CS22_SW2}, /* RGB47 */
109 {0, CS24_SW3, CS23_SW3, CS22_SW3}, /* RGB48 */
110 {0, CS24_SW4, CS23_SW4, CS22_SW4}, /* RGB49 */
111 {0, CS24_SW5, CS23_SW5, CS22_SW5}, /* RGB50 */
112 {0, CS24_SW6, CS23_SW6, CS22_SW6}, /* RGB51 */
113 {0, CS24_SW7, CS23_SW7, CS22_SW7}, /* RGB52 */
114 {0, CS24_SW8, CS23_SW8, CS22_SW8}, /* RGB53 */
115 {0, CS24_SW9, CS23_SW9, CS22_SW9}, /* RGB54 */
116 {0, CS39_SW4, CS38_SW4, CS37_SW4}, /* RGB101 */
117};
118led_config_t g_led_config = {
119 {
120 /* C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 */
121 { 0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, /* R0 */
122 { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33 }, /* R1 */
123 { 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 }, /* R2 */
124 { 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 65, 15, 34, 51 }, /* R3 */
125 { 68, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, NO_LED, NO_LED, 83, NO_LED }, /* R4 */
126 { 84, NO_LED, 85, NO_LED, NO_LED, 87, NO_LED, NO_LED, NO_LED, 89, NO_LED, NO_LED, 90, 91, 92, 93 } /* R5 */
127 }, {
128 {0, 0}, {12, 0}, {24, 0}, {36, 0}, {48, 0}, {60, 0}, {72, 0}, {84, 0}, {96, 0}, {108, 0}, {120, 0}, {132, 0}, {144, 0}, {156, 0}, {168, 0}, {180, 0}, //16
129 {0, 12}, {12, 12}, {24, 12}, {36, 12}, {48, 12}, {60, 12}, {72, 12}, {84, 12}, {96, 12}, {108, 12}, {120, 12}, {132, 12}, {144, 12}, {156, 12}, {168, 12}, {180, 12}, {192, 12}, {204, 12}, {216, 12}, //19
130 {0, 24}, {12, 24}, {24, 24}, {36, 24}, {48, 24}, {60, 24}, {72, 24}, {84, 24}, {96, 24}, {108, 24}, {120, 24}, {132, 24}, {144, 24}, {156, 24}, {168, 24}, {180, 24}, {192, 24}, //17
131 {0, 36}, {12, 36}, {24, 36}, {36, 36}, {48, 36}, {60, 36}, {72, 36}, {84, 36}, {96, 36}, {108, 36}, {120, 36}, {132, 36}, {144, 36}, {156, 36}, {168, 36}, //15
132 {0, 48}, {12, 48}, {24, 48}, {36, 48}, {48, 48}, {60, 48}, {72, 48}, {84, 48}, {96, 48}, {108, 48}, {120, 48}, {132, 48}, {144, 48}, {156, 48}, {168, 48}, {180, 48}, {192, 48}, //17
133 {0, 60}, {12, 60}, {24, 60}, {36, 60}, {48, 60}, {60, 60}, {72, 60}, {84, 60}, {96, 60}, {108, 60}
134 //10
135 }, {
136 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
137 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
138 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
139 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
140 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
141 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
142 }
143};
144
145const is31_led g_is31_indicator_leds[3] = {
146 {0, CS6_SW1, CS5_SW1, CS4_SW1}, /* RGB107 */
147 {0, CS6_SW2, CS5_SW2, CS4_SW2}, /* RGB108 */
148 {0, CS6_SW3, CS5_SW3, CS4_SW3}, /* RGB109 */
149};
150
151bool led_update_kb(led_t led_state) {
152 if (led_update_user(led_state)) {
153 if (led_state.caps_lock) {
154 IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[2], 0x00, 0x00, 0xff);
155 } else {
156 IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[2], 0x00, 0x00, 0x00);
157 }
158
159 if (led_state.num_lock) {
160 IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[1], 0xff, 0x00, 0x00);
161 } else {
162 IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[1], 0x00, 0x00, 0x00);
163 }
164
165 if (led_state.scroll_lock) {
166 IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[0], 0x00, 0xff, 0x00);
167 } else {
168 IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[0], 0x00, 0x00, 0x00);
169 }
170 }
171 return true;
172}
173
174void matrix_init_kb(void) {
175 for (int i = 0; i < DRIVER_INDICATOR_LED_TOTAL; ++i) {
176 is31_led led = g_is31_indicator_leds[i];
177 IS31FL3741_set_scaling_registers(&led, 0xFF, 0xFF, 0xFF);
178 }
179
180 IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0);
181
182 matrix_init_user();
183}
184
185
186void keyboard_pre_init_kb(void) {
187 setPinOutput(B7);
188 writePinHigh(B7);
189 keyboard_pre_init_user();
190}
191#endif
diff --git a/keyboards/melgeek/mach80/rev2/rules.mk b/keyboards/melgeek/mach80/rev2/rules.mk
new file mode 100755
index 000000000..56ba67e63
--- /dev/null
+++ b/keyboards/melgeek/mach80/rev2/rules.mk
@@ -0,0 +1,23 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5BOOTLOADER = atmel-dfu
6
7# Build Options
8# change yes to no to disable
9#
10BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
11MOUSEKEY_ENABLE = yes # Mouse keys
12EXTRAKEY_ENABLE = yes # Audio control and System control
13CONSOLE_ENABLE = no # Console for debug
14COMMAND_ENABLE = no # Commands for debug and configuration
15NKRO_ENABLE = yes # Enable N-Key Rollover
16BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
17RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
18RGB_MATRIX_ENABLE = yes # Use RGB matrix
19RGB_MATRIX_DRIVER = IS31FL3741
20
21LTO_ENABLE = yes
22
23LAYOUTS = tkl_ansi