Created my keymap layout
This commit is contained in:
parent
0e2caba4df
commit
09bf07d074
0
gmmk/.noci
Normal file
0
gmmk/.noci
Normal file
241
gmmk/pro/ansi/ansi.c
Normal file
241
gmmk/pro/ansi/ansi.c
Normal file
@ -0,0 +1,241 @@
|
||||
/* Copyright 2021 Gigahawk
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "ansi.h"
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
// clang-format off
|
||||
led_config_t g_led_config = {{
|
||||
{ 4, NO_LED, NO_LED, 95, 65, 79, 5, 28 },
|
||||
{ 8, 2, 9, 0, 10, 75, 1, 7 },
|
||||
{ 14, 3, 15, NO_LED, 16, 86, 6, 13 },
|
||||
{ 20, 18, 21, 23, 22, 94, 12, 19 },
|
||||
{ 25, 30, 26, 31, 27, 32, 29, 24 },
|
||||
{ 41, 36, 42, 37, 43, 38, 35, 40 },
|
||||
{ 46, 89, 47, 34, 48, 72, 78, 45 },
|
||||
{ 52, 39, 53, 97, 54, 82, 44, 51 },
|
||||
{ 58, 63, 59, 64, NO_LED, 60, 62, 57 },
|
||||
{ 11, 90, 55, 17, 33, 49, NO_LED, 69 },
|
||||
{ NO_LED, 85, 93, 61, 96, 66, 50, 56 }
|
||||
}, {
|
||||
{0, 0}, // 0, ESC, k13
|
||||
{0, 15}, // 1, ~, k16
|
||||
{4, 26}, // 2, Tab, k11
|
||||
{5, 38}, // 3, Caps, k21
|
||||
{9, 49}, // 4, Sh_L, k00
|
||||
{2, 61}, // 5, Ct_L, k06
|
||||
{18, 0}, // 6, F1, k26
|
||||
{14, 15}, // 7, 1, k17
|
||||
{22, 26}, // 8, Q, k10
|
||||
{25, 38}, // 9, A, k12
|
||||
{33, 49}, // 10, Z, k14
|
||||
{20, 61}, // 11, Win_L, k90
|
||||
{33, 0}, // 12, F2, k36
|
||||
{29, 15}, // 13, 2, k27
|
||||
{36, 26}, // 14, W, k20
|
||||
{40, 38}, // 15, S, k22
|
||||
{47, 49}, // 16, X, k24
|
||||
{38, 61}, // 17, Alt_L, k93
|
||||
{47, 0}, // 18, F3, k31
|
||||
{43, 15}, // 19, 3, k37
|
||||
{51, 26}, // 20, E, k30
|
||||
{54, 38}, // 21, D, k32
|
||||
{61, 49}, // 22, C, k34
|
||||
{61, 0}, // 23, F4, k33
|
||||
{58, 15}, // 24, 4, k47
|
||||
{65, 26}, // 25, R, k40
|
||||
{69, 38}, // 26, F, k42
|
||||
{76, 49}, // 27, V, k44
|
||||
{79, 0}, // 28, F5, k07
|
||||
{72, 15}, // 29, 5, k46
|
||||
{79, 26}, // 30, T, k41
|
||||
{83, 38}, // 31, G, k43
|
||||
{90, 49}, // 32, B, k45
|
||||
{92, 61}, // 33, SPACE, k94
|
||||
{94, 0}, // 34, F6, k63
|
||||
{87, 15}, // 35, 6, k56
|
||||
{94, 26}, // 36, Y, k51
|
||||
{98, 38}, // 37, H, k53
|
||||
{105, 49}, // 38, N, k55
|
||||
{108, 0}, // 39, F7, k71
|
||||
{101, 15}, // 40, 7, k57
|
||||
{108, 26}, // 41, U, k50
|
||||
{112, 38}, // 42, J, k52
|
||||
{119, 49}, // 43, M, k54
|
||||
{123, 0}, // 44, F8, k76
|
||||
{116, 15}, // 45, 8, k67
|
||||
{123, 26}, // 46, I, k60
|
||||
{126, 38}, // 47, K, k62
|
||||
{134, 49}, // 48, ,, k64
|
||||
{145, 61}, // 49, Alt_R, k95
|
||||
{141, 0}, // 50, F9, ka6
|
||||
{130, 15}, // 51, 9, k77
|
||||
{137, 26}, // 52, O, k70
|
||||
{141, 38}, // 53, L, k72
|
||||
{148, 49}, // 54, ., k74
|
||||
{159, 61}, // 55, FN, k92
|
||||
{155, 0}, // 56, F10, ka7
|
||||
{145, 15}, // 57, 0, k87
|
||||
{152, 26}, // 58, P, k80
|
||||
{155, 38}, // 59, ;, k82
|
||||
{163, 49}, // 60, ?, k85
|
||||
{170, 0}, // 61, F11, ka3
|
||||
{159, 15}, // 62, -, k86
|
||||
{166, 26}, // 63, [, k81
|
||||
{170, 38}, // 64, ", k83
|
||||
{173, 61}, // 65, Ct_R, k04
|
||||
{184, 0}, // 66, F12, ka5
|
||||
{0, 8}, // 67, LED, l01
|
||||
{224, 8}, // 68, LED, l11
|
||||
{202, 0}, // 69, Prt, k97
|
||||
{0, 15}, // 70, LED, l02
|
||||
{224, 15}, // 71, LED, l12
|
||||
{224, 15}, // 72, Del, k65
|
||||
{0, 21}, // 73, LED, l03
|
||||
{224, 21}, // 74, LED, l13
|
||||
{224, 26}, // 75, PgUp, k15
|
||||
{0, 28}, // 76, LED, l04
|
||||
{224, 28}, // 77, LED, l14
|
||||
{173, 15}, // 78, =, k66
|
||||
{220, 64}, // 79, Right, k05
|
||||
{0, 35}, // 80, LED, l05
|
||||
{224, 35}, // 81, LED, l15
|
||||
{224, 49}, // 82, End, k75
|
||||
{0, 42}, // 83, LED, l06
|
||||
{224, 42}, // 84, LED, l16
|
||||
{195, 15}, // 85, BSpc, ka1
|
||||
{224, 38}, // 86, PgDn, k25
|
||||
{0, 48}, // 87, LED, l07
|
||||
{224, 48}, // 88, LED, l17
|
||||
{181, 26}, // 89, ], k61
|
||||
{182, 49}, // 90, Sh_R, k91
|
||||
{0, 55}, // 91, LED, l08
|
||||
{224, 55}, // 92, LED, l18
|
||||
{199, 26}, // 93, \, ka2
|
||||
{206, 52}, // 94, Up, k35
|
||||
{191, 64}, // 95, Left, k03
|
||||
{193, 38}, // 96, Enter, ka4
|
||||
{206, 64} // 97, Down, k73
|
||||
}, {
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2, 2,
|
||||
4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4
|
||||
}};
|
||||
|
||||
const aw_led g_aw_leds[DRIVER_LED_TOTAL] = {
|
||||
{0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13
|
||||
{0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16
|
||||
{0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11
|
||||
{0, CS10_SW1, CS11_SW1, CS12_SW1}, // 3, Caps, k21
|
||||
{0, CS13_SW1, CS14_SW1, CS15_SW1}, // 4, Sh_L, k00
|
||||
{0, CS16_SW1, CS17_SW1, CS18_SW1}, // 5, Ct_L, k06
|
||||
{0, CS1_SW2, CS2_SW2, CS3_SW2}, // 6, F1, k26
|
||||
{0, CS4_SW2, CS5_SW2, CS6_SW2}, // 7, 1, k17
|
||||
{0, CS7_SW2, CS8_SW2, CS9_SW2}, // 8, Q, k10
|
||||
{0, CS10_SW2, CS11_SW2, CS12_SW2}, // 9, A, k12
|
||||
{0, CS13_SW2, CS14_SW2, CS15_SW2}, // 10, Z, k14
|
||||
{0, CS16_SW2, CS17_SW2, CS18_SW2}, // 11, Win_L, k90
|
||||
{0, CS1_SW3, CS2_SW3, CS3_SW3}, // 12, F2, k36
|
||||
{0, CS4_SW3, CS5_SW3, CS6_SW3}, // 13, 2, k27
|
||||
{0, CS7_SW3, CS8_SW3, CS9_SW3}, // 14, W, k20
|
||||
{0, CS10_SW3, CS11_SW3, CS12_SW3}, // 15, S, k22
|
||||
{0, CS13_SW3, CS14_SW3, CS15_SW3}, // 16, X, k24
|
||||
{0, CS16_SW3, CS17_SW3, CS18_SW3}, // 17, Alt_L, k93
|
||||
{0, CS1_SW4, CS2_SW4, CS3_SW4}, // 18, F3, k31
|
||||
{0, CS4_SW4, CS5_SW4, CS6_SW4}, // 19, 3, k37
|
||||
{0, CS7_SW4, CS8_SW4, CS9_SW4}, // 20, E, k30
|
||||
{0, CS10_SW4, CS11_SW4, CS12_SW4}, // 21, D, k32
|
||||
{0, CS13_SW4, CS14_SW4, CS15_SW4}, // 22, C, k34
|
||||
{0, CS1_SW5, CS2_SW5, CS3_SW5}, // 23, F4, k33
|
||||
{0, CS4_SW5, CS5_SW5, CS6_SW5}, // 24, 4, k47
|
||||
{0, CS7_SW5, CS8_SW5, CS9_SW5}, // 25, R, k40
|
||||
{0, CS10_SW5, CS11_SW5, CS12_SW5}, // 26, F, k42
|
||||
{0, CS13_SW5, CS14_SW5, CS15_SW5}, // 27, V, k44
|
||||
{0, CS1_SW6, CS2_SW6, CS3_SW6}, // 28, F5, k07
|
||||
{0, CS4_SW6, CS5_SW6, CS6_SW6}, // 29, 5, k46
|
||||
{0, CS7_SW6, CS8_SW6, CS9_SW6}, // 30, T, k41
|
||||
{0, CS10_SW6, CS11_SW6, CS12_SW6}, // 31, G, k43
|
||||
{0, CS13_SW6, CS14_SW6, CS15_SW6}, // 32, B, k45
|
||||
{0, CS16_SW6, CS17_SW6, CS18_SW6}, // 33, SPACE, k94
|
||||
{0, CS1_SW7, CS2_SW7, CS3_SW7}, // 34, F6, k63
|
||||
{0, CS4_SW7, CS5_SW7, CS6_SW7}, // 35, 6, k56
|
||||
{0, CS7_SW7, CS8_SW7, CS9_SW7}, // 36, Y, k51
|
||||
{0, CS10_SW7, CS11_SW7, CS12_SW7}, // 37, H, k53
|
||||
{0, CS13_SW7, CS14_SW7, CS15_SW7}, // 38, N, k55
|
||||
{0, CS1_SW8, CS2_SW8, CS3_SW8}, // 39, F7, k71
|
||||
{0, CS4_SW8, CS5_SW8, CS6_SW8}, // 40, 7, k57
|
||||
{0, CS7_SW8, CS8_SW8, CS9_SW8}, // 41, U, k50
|
||||
{0, CS10_SW8, CS11_SW8, CS12_SW8}, // 42, J, k52
|
||||
{0, CS13_SW8, CS14_SW8, CS15_SW8}, // 43, M, k54
|
||||
{0, CS1_SW9, CS2_SW9, CS3_SW9}, // 44, F8, k76
|
||||
{0, CS4_SW9, CS5_SW9, CS6_SW9}, // 45, 8, k67
|
||||
{0, CS7_SW9, CS8_SW9, CS9_SW9}, // 46, I, k60
|
||||
{0, CS10_SW9, CS11_SW9, CS12_SW9}, // 47, K, k62
|
||||
{0, CS13_SW9, CS14_SW9, CS15_SW9}, // 48, ,, k64
|
||||
{0, CS16_SW9, CS17_SW9, CS18_SW9}, // 49, Alt_R, k95
|
||||
{0, CS1_SW10, CS2_SW10, CS3_SW10}, // 50, F9, ka6
|
||||
{0, CS4_SW10, CS5_SW10, CS6_SW10}, // 51, 9, k77
|
||||
{0, CS7_SW10, CS8_SW10, CS9_SW10}, // 52, O, k70
|
||||
{0, CS10_SW10, CS11_SW10, CS12_SW10}, // 53, L, k72
|
||||
{0, CS13_SW10, CS14_SW10, CS15_SW10}, // 54, ., k74
|
||||
{0, CS16_SW10, CS17_SW10, CS18_SW10}, // 55, FN, k92
|
||||
{0, CS1_SW11, CS2_SW11, CS3_SW11}, // 56, F10, ka7
|
||||
{0, CS4_SW11, CS5_SW11, CS6_SW11}, // 57, 0, k87
|
||||
{0, CS7_SW11, CS8_SW11, CS9_SW11}, // 58, P, k80
|
||||
{0, CS10_SW11, CS11_SW11, CS12_SW11}, // 59, ;, k82
|
||||
{0, CS13_SW11, CS14_SW11, CS15_SW11}, // 60, ?, k85
|
||||
{0, CS1_SW12, CS2_SW12, CS3_SW12}, // 61, F11, ka3
|
||||
{0, CS4_SW12, CS5_SW12, CS6_SW12}, // 62, -, k86
|
||||
{0, CS7_SW12, CS8_SW12, CS9_SW12}, // 63, [, k81
|
||||
{0, CS10_SW12, CS11_SW12, CS12_SW12}, // 64, ", k83
|
||||
{0, CS16_SW12, CS17_SW12, CS18_SW12}, // 65, Ct_R, k04
|
||||
|
||||
{1, CS1_SW1, CS2_SW1, CS3_SW1}, // 66, F12, ka5
|
||||
{1, CS13_SW1, CS14_SW1, CS15_SW1}, // 67, LED, l01
|
||||
{1, CS16_SW1, CS17_SW1, CS18_SW1}, // 68, LED, l11
|
||||
{1, CS4_SW2, CS5_SW2, CS6_SW2}, // 69, Prt, k97
|
||||
{1, CS13_SW2, CS14_SW2, CS15_SW2}, // 70, LED, l02
|
||||
{1, CS16_SW2, CS17_SW2, CS18_SW2}, // 71, LED, l12
|
||||
{1, CS4_SW3, CS5_SW3, CS6_SW3}, // 72, Del, k65
|
||||
{1, CS13_SW3, CS14_SW3, CS15_SW3}, // 73, LED, l03
|
||||
{1, CS16_SW3, CS17_SW3, CS18_SW3}, // 74, LED, l13
|
||||
{1, CS4_SW4, CS5_SW4, CS6_SW4}, // 75, PgUp, k15
|
||||
{1, CS13_SW4, CS14_SW4, CS15_SW4}, // 76, LED, l04
|
||||
{1, CS16_SW4, CS17_SW4, CS18_SW4}, // 77, LED, l14
|
||||
{1, CS1_SW5, CS2_SW5, CS3_SW5}, // 78, =, k66
|
||||
{1, CS10_SW5, CS11_SW5, CS12_SW5}, // 79, Right, k05
|
||||
{1, CS13_SW5, CS14_SW5, CS15_SW5}, // 80, LED, l05
|
||||
{1, CS16_SW5, CS17_SW5, CS18_SW5}, // 81, LED, l15
|
||||
{1, CS4_SW6, CS5_SW6, CS6_SW6}, // 82, End, k75
|
||||
{1, CS13_SW6, CS14_SW6, CS15_SW6}, // 83, LED, l06
|
||||
{1, CS16_SW6, CS17_SW6, CS18_SW6}, // 84, LED, l16
|
||||
{1, CS1_SW7, CS2_SW7, CS3_SW7}, // 85, BSpc, ka1
|
||||
{1, CS4_SW7, CS5_SW7, CS6_SW7}, // 86, PgDn, k25
|
||||
{1, CS13_SW7, CS14_SW7, CS15_SW7}, // 87, LED, l07
|
||||
{1, CS16_SW7, CS17_SW7, CS18_SW7}, // 88, LED, l17
|
||||
{1, CS1_SW8, CS2_SW8, CS3_SW8}, // 89, ], k61
|
||||
{1, CS4_SW8, CS5_SW8, CS6_SW8}, // 90, Sh_R, k91
|
||||
{1, CS13_SW8, CS14_SW8, CS15_SW8}, // 91, LED, l08
|
||||
{1, CS16_SW8, CS17_SW8, CS18_SW8}, // 92, LED, l18
|
||||
{1, CS1_SW9, CS2_SW9, CS3_SW9}, // 93, \, ka2
|
||||
{1, CS4_SW9, CS5_SW9, CS6_SW9}, // 94, Up, k35
|
||||
{1, CS4_SW10, CS5_SW10, CS6_SW10}, // 95, Left, k03
|
||||
{1, CS1_SW11, CS2_SW11, CS3_SW11}, // 96, Enter, ka4
|
||||
{1, CS4_SW11, CS5_SW11, CS6_SW11}, // 97, Down, k73
|
||||
};
|
||||
// clang-format on
|
||||
#endif
|
52
gmmk/pro/ansi/ansi.h
Normal file
52
gmmk/pro/ansi/ansi.h
Normal file
@ -0,0 +1,52 @@
|
||||
/* Copyright 2021 Gigahawk
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "pro.h"
|
||||
|
||||
#define ___ KC_NO
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
||||
// ` 1 2 3 4 5 6 7 8 9 0 - = BSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] \ PgUp
|
||||
// Caps A S D F G H J K L ; ' Enter PgDn
|
||||
// Sh_L Z X C V B N M , . / Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
// clang-format off
|
||||
#define LAYOUT( \
|
||||
k13, k26, k36, k31, k33, k07, k63, k71, k76, ka6, ka7, ka3, ka5, k97, k01, \
|
||||
k16, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, ka1, k65, \
|
||||
k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, ka2, k15, \
|
||||
k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, ka4, k25, \
|
||||
k00, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k91, k35, k75, \
|
||||
k06, k90, k93, k94, k95, k92, k04, k03, k73, k05 \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, ___, k03, k04, k05, k06, k07}, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17}, \
|
||||
{ k20, k21, k22, ___, k24, k25, k26, k27}, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37}, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47}, \
|
||||
{ k50, k51, k52, k53, k54, k55, k56, k57}, \
|
||||
{ k60, k61, k62, k63, k64, k65, k66, k67}, \
|
||||
{ k70, k71, k72, k73, k74, k75, k76, k77}, \
|
||||
{ k80, k81, k82, k83, ___, k85, k86, k87}, \
|
||||
{ k90, k91, k92, k93, k94, k95, ___, k97}, \
|
||||
{ ___, ka1, ka2, ka3, ka4, ka5, ka6, ka7} \
|
||||
}
|
||||
// clang-format on
|
23
gmmk/pro/ansi/config.h
Normal file
23
gmmk/pro/ansi/config.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* Copyright 2021 Gigahawk
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
#define DRIVER_1_LED_TOTAL 66
|
||||
#define DRIVER_2_LED_TOTAL 32
|
||||
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
|
111
gmmk/pro/ansi/info.json
Normal file
111
gmmk/pro/ansi/info.json
Normal file
@ -0,0 +1,111 @@
|
||||
{
|
||||
"keyboard_name": "GMMK Pro (ANSI)",
|
||||
"url": "https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation",
|
||||
"maintainer": "GloriousThrall",
|
||||
"width": 16.5,
|
||||
"height": 6.5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"x":0, "y":0},
|
||||
|
||||
{"x":1.25, "y":0},
|
||||
{"x":2.25, "y":0},
|
||||
{"x":3.25, "y":0},
|
||||
{"x":4.25, "y":0},
|
||||
|
||||
{"x":5.5, "y":0},
|
||||
{"x":6.5, "y":0},
|
||||
{"x":7.5, "y":0},
|
||||
{"x":8.5, "y":0},
|
||||
|
||||
{"x":9.75, "y":0},
|
||||
{"x":10.75, "y":0},
|
||||
{"x":11.75, "y":0},
|
||||
{"x":12.75, "y":0},
|
||||
|
||||
{"x":14, "y":0},
|
||||
{"x":15.5, "y":0},
|
||||
|
||||
{"x":0, "y":1.25},
|
||||
{"x":1, "y":1.25},
|
||||
{"x":2, "y":1.25},
|
||||
{"x":3, "y":1.25},
|
||||
{"x":4, "y":1.25},
|
||||
{"x":5, "y":1.25},
|
||||
{"x":6, "y":1.25},
|
||||
{"x":7, "y":1.25},
|
||||
{"x":8, "y":1.25},
|
||||
{"x":9, "y":1.25},
|
||||
{"x":10, "y":1.25},
|
||||
{"x":11, "y":1.25},
|
||||
{"x":12, "y":1.25},
|
||||
{"x":13, "y":1.25, "w":2},
|
||||
|
||||
{"x":15.5, "y":1.25},
|
||||
|
||||
{"x":0, "y":2.25, "w":1.5},
|
||||
{"x":1.5, "y":2.25},
|
||||
{"x":2.5, "y":2.25},
|
||||
{"x":3.5, "y":2.25},
|
||||
{"x":4.5, "y":2.25},
|
||||
{"x":5.5, "y":2.25},
|
||||
{"x":6.5, "y":2.25},
|
||||
{"x":7.5, "y":2.25},
|
||||
{"x":8.5, "y":2.25},
|
||||
{"x":9.5, "y":2.25},
|
||||
{"x":10.5, "y":2.25},
|
||||
{"x":11.5, "y":2.25},
|
||||
{"x":12.5, "y":2.25},
|
||||
{"x":13.5, "y":2.25, "w":1.5},
|
||||
|
||||
{"x":15.5, "y":2.25},
|
||||
|
||||
{"x":0, "y":3.25, "w":1.75},
|
||||
{"x":1.75, "y":3.25},
|
||||
{"x":2.75, "y":3.25},
|
||||
{"x":3.75, "y":3.25},
|
||||
{"x":4.75, "y":3.25},
|
||||
{"x":5.75, "y":3.25},
|
||||
{"x":6.75, "y":3.25},
|
||||
{"x":7.75, "y":3.25},
|
||||
{"x":8.75, "y":3.25},
|
||||
{"x":9.75, "y":3.25},
|
||||
{"x":10.75, "y":3.25},
|
||||
{"x":11.75, "y":3.25},
|
||||
{"x":12.75, "y":3.25, "w":2.25},
|
||||
|
||||
{"x":15.5, "y":3.25},
|
||||
|
||||
{"x":0, "y":4.25, "w":2.25},
|
||||
{"x":2.25, "y":4.25},
|
||||
{"x":3.25, "y":4.25},
|
||||
{"x":4.25, "y":4.25},
|
||||
{"x":5.25, "y":4.25},
|
||||
{"x":6.25, "y":4.25},
|
||||
{"x":7.25, "y":4.25},
|
||||
{"x":8.25, "y":4.25},
|
||||
{"x":9.25, "y":4.25},
|
||||
{"x":10.25, "y":4.25},
|
||||
{"x":11.25, "y":4.25},
|
||||
{"x":12.25, "y":4.25, "w":1.75},
|
||||
|
||||
{"x":14.25, "y":4.5},
|
||||
|
||||
{"x":15.5, "y":4.25},
|
||||
|
||||
{"x":0, "y":5.25, "w":1.25},
|
||||
{"x":1.25, "y":5.25, "w":1.25},
|
||||
{"x":2.5, "y":5.25, "w":1.25},
|
||||
{"x":3.75, "y":5.25, "w":6.25},
|
||||
{"x":10, "y":5.25},
|
||||
{"x":11, "y":5.25},
|
||||
{"x":12, "y":5.25},
|
||||
|
||||
{"x":13.25, "y":5.5},
|
||||
{"x":14.25, "y":5.5},
|
||||
{"x":15.25, "y":5.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
66
gmmk/pro/ansi/keymaps/alexmarmon/keymap.c
Normal file
66
gmmk/pro/ansi/keymaps/alexmarmon/keymap.c
Normal file
@ -0,0 +1,66 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
Copyright 2021 alexmarmon
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] \ PgUp
|
||||
// Caps A S D F G H J K L ; " Enter PgDn
|
||||
// Sh_L Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Alt_L Win_L SPACE Ct_R Alt_R FN Left Down Right
|
||||
|
||||
|
||||
// The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without
|
||||
// this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
|
||||
// cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
|
||||
// if that's your preference.
|
||||
//
|
||||
// To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and
|
||||
// it'll be back to normal when you plug it back in.
|
||||
[0] = LAYOUT(
|
||||
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_MUTE,
|
||||
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_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_PGUP,
|
||||
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_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RCTL, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_MODE_FORWARD,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MODE_REVERSE,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_MEDIA_PREV_TRACK, _______, KC_MEDIA_NEXT_TRACK
|
||||
),
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
return true;
|
||||
}
|
7
gmmk/pro/ansi/keymaps/alexmarmon/readme.md
Normal file
7
gmmk/pro/ansi/keymaps/alexmarmon/readme.md
Normal file
@ -0,0 +1,7 @@
|
||||
![Layout Image](https://i.imgur.com/MizMvsI.jpg)
|
||||
|
||||
# Simple MacOS like keymap with RGB
|
||||
|
||||
* Working basic RGB thanks to https://github.com/qmk/qmk_firmware/pull/13430
|
||||
* Restore working rotary knob volume control
|
||||
* Add media_previous and media_next to FN+left and FN+right
|
22
gmmk/pro/ansi/keymaps/andrebrait/config.h
Normal file
22
gmmk/pro/ansi/keymaps/andrebrait/config.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Copyright 2021 Andre Brait
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#define RGB_DISABLE_TIMEOUT 1200000 // 20 minutes (20 * 60 * 1000ms)
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
#endif
|
287
gmmk/pro/ansi/keymaps/andrebrait/keymap.c
Normal file
287
gmmk/pro/ansi/keymaps/andrebrait/keymap.c
Normal file
@ -0,0 +1,287 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
Copyright 2021 Andre Brait <andrebrait@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#ifndef RGB_CONFIRMATION_BLINKING_TIME
|
||||
#define RGB_CONFIRMATION_BLINKING_TIME 2000 // 2 seconds
|
||||
#endif
|
||||
#endif // RGB_MATRIX_ENABLE
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Del Rotary(Play/Pause)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Home
|
||||
// Tab Q W E R T Y U I O P [ ] \ PgUp
|
||||
// Caps A S D F G H J K L ; " Enter PgDn
|
||||
// Sh_L Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
|
||||
// The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without
|
||||
// this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
|
||||
// cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
|
||||
// if that's your preference.
|
||||
//
|
||||
// To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and
|
||||
// it'll be back to normal when you plug it back in.
|
||||
//
|
||||
// This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO).
|
||||
// Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience.
|
||||
// Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts.
|
||||
[0] = LAYOUT(
|
||||
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_DEL, KC_MUTE,
|
||||
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_HOME,
|
||||
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_PGUP,
|
||||
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_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_INS, _______,
|
||||
_______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR,
|
||||
_______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
|
||||
_______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
|
||||
),
|
||||
|
||||
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif // ENCODER_ENABLE
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
/* Renaming those to make the purpose on this keymap clearer */
|
||||
#define LED_FLAG_CAPS LED_FLAG_NONE
|
||||
#define LED_FLAG_EFFECTS LED_FLAG_INDICATOR
|
||||
|
||||
static void set_rgb_caps_leds(void);
|
||||
|
||||
#if RGB_CONFIRMATION_BLINKING_TIME > 0
|
||||
static uint16_t effect_started_time = 0;
|
||||
static uint8_t r_effect = 0x0, g_effect = 0x0, b_effect = 0x0;
|
||||
static void start_effects(void);
|
||||
|
||||
/* The higher this is, the slower the blinking will be */
|
||||
#ifndef TIME_SELECTED_BIT
|
||||
#define TIME_SELECTED_BIT 8
|
||||
#endif
|
||||
#if TIME_SELECTED_BIT < 0 || TIME_SELECTED_BIT >= 16
|
||||
#error "TIME_SELECTED_BIT must be a positive integer smaller than 16"
|
||||
#endif
|
||||
#define effect_red() r_effect = 0xFF, g_effect = 0x0, b_effect = 0x0
|
||||
#define effect_green() r_effect = 0x0, g_effect = 0xFF, b_effect = 0x0
|
||||
#endif // RGB_CONFIRMATION_BLINKING_TIME > 0
|
||||
|
||||
bool led_update_user(led_t led_state) {
|
||||
if (led_state.caps_lock) {
|
||||
if (!rgb_matrix_is_enabled()) {
|
||||
/* Turn ON the RGB Matrix for CAPS LOCK */
|
||||
rgb_matrix_set_flags(LED_FLAG_CAPS);
|
||||
rgb_matrix_enable();
|
||||
}
|
||||
} else if (rgb_matrix_get_flags() == LED_FLAG_CAPS) {
|
||||
/* RGB Matrix was only ON because of CAPS LOCK. Turn it OFF. */
|
||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||
rgb_matrix_disable();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
#ifdef NKRO_ENABLE
|
||||
#if RGB_CONFIRMATION_BLINKING_TIME > 0
|
||||
case NK_TOGG:
|
||||
if (record->event.pressed) {
|
||||
if (keymap_config.nkro) {
|
||||
/* Turning NKRO OFF */
|
||||
effect_red();
|
||||
} else {
|
||||
/* Turning NKRO ON */
|
||||
effect_green();
|
||||
}
|
||||
start_effects();
|
||||
}
|
||||
break;
|
||||
case NK_ON:
|
||||
if (record->event.pressed) {
|
||||
if (!keymap_config.nkro) {
|
||||
/* Turning NKRO ON */
|
||||
effect_green();
|
||||
start_effects();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NK_OFF:
|
||||
if (record->event.pressed) {
|
||||
if (keymap_config.nkro) {
|
||||
/* Turning NKRO OFF */
|
||||
effect_red();
|
||||
start_effects();
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif // RGB_CONFIRMATION_BLINKING_TIME > 0
|
||||
#endif // NKRO_ENABLE
|
||||
case RGB_MOD:
|
||||
case RGB_RMOD:
|
||||
case RGB_HUI:
|
||||
case RGB_HUD:
|
||||
case RGB_SAI:
|
||||
case RGB_SAD:
|
||||
case RGB_VAI:
|
||||
case RGB_VAD:
|
||||
case RGB_SPI:
|
||||
case RGB_SPD:
|
||||
if (record->event.pressed) {
|
||||
if (rgb_matrix_get_flags() != LED_FLAG_ALL) {
|
||||
/* Ignore changes to RGB settings while only it's supposed to be OFF */
|
||||
return false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RGB_TOG:
|
||||
if (record->event.pressed) {
|
||||
if (rgb_matrix_is_enabled()) {
|
||||
switch (rgb_matrix_get_flags()) {
|
||||
#if RGB_CONFIRMATION_BLINKING_TIME > 0
|
||||
case LED_FLAG_EFFECTS:
|
||||
#endif
|
||||
case LED_FLAG_CAPS:
|
||||
/* Turned ON because of EFFECTS or CAPS, is actually OFF */
|
||||
/* Change to LED_FLAG_ALL to signal it's really ON */
|
||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||
/* Will be re-enabled by the processing of the toggle */
|
||||
rgb_matrix_disable_noeeprom();
|
||||
break;
|
||||
case LED_FLAG_ALL:
|
||||
/* Is actually ON */
|
||||
#if RGB_CONFIRMATION_BLINKING_TIME > 0
|
||||
if (effect_started_time > 0) {
|
||||
/* Signal EFFECTS */
|
||||
rgb_matrix_set_flags(LED_FLAG_EFFECTS);
|
||||
/* Will be re-enabled by the processing of the toggle */
|
||||
rgb_matrix_disable_noeeprom();
|
||||
} else
|
||||
#endif
|
||||
if (host_keyboard_led_state().caps_lock) {
|
||||
/* Signal CAPS */
|
||||
rgb_matrix_set_flags(LED_FLAG_CAPS);
|
||||
/* Will be re-enabled by the processing of the toggle */
|
||||
rgb_matrix_disable_noeeprom();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void rgb_matrix_indicators_user() {
|
||||
#if RGB_CONFIRMATION_BLINKING_TIME > 0
|
||||
if (effect_started_time > 0) {
|
||||
/* Render blinking EFFECTS */
|
||||
uint16_t deltaTime = sync_timer_elapsed(effect_started_time);
|
||||
if (deltaTime <= RGB_CONFIRMATION_BLINKING_TIME) {
|
||||
uint8_t led_state = ((~deltaTime) >> TIME_SELECTED_BIT) & 0x01;
|
||||
uint8_t val_r = led_state * r_effect;
|
||||
uint8_t val_g = led_state * g_effect;
|
||||
uint8_t val_b = led_state * b_effect;
|
||||
rgb_matrix_set_color_all(val_r, val_g, val_b);
|
||||
if (host_keyboard_led_state().caps_lock) {
|
||||
set_rgb_caps_leds();
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
/* EFFECTS duration is finished */
|
||||
effect_started_time = 0;
|
||||
if (rgb_matrix_get_flags() == LED_FLAG_EFFECTS) {
|
||||
/* It was turned ON because of EFFECTS */
|
||||
if (host_keyboard_led_state().caps_lock) {
|
||||
/* CAPS is still ON. Demote to CAPS */
|
||||
rgb_matrix_set_flags(LED_FLAG_CAPS);
|
||||
} else {
|
||||
/* There is nothing else keeping RGB enabled. Reset flags and turn if off. */
|
||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||
rgb_matrix_disable_noeeprom();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // RGB_CONFIRMATION_BLINKING_TIME > 0
|
||||
if (rgb_matrix_get_flags() == LED_FLAG_CAPS) {
|
||||
rgb_matrix_set_color_all(0x0, 0x0, 0x0);
|
||||
}
|
||||
if (host_keyboard_led_state().caps_lock) {
|
||||
set_rgb_caps_leds();
|
||||
}
|
||||
}
|
||||
|
||||
#if RGB_CONFIRMATION_BLINKING_TIME > 0
|
||||
static void start_effects() {
|
||||
effect_started_time = sync_timer_read();
|
||||
if (!rgb_matrix_is_enabled()) {
|
||||
/* Turn it ON, signal the cause (EFFECTS) */
|
||||
rgb_matrix_set_flags(LED_FLAG_EFFECTS);
|
||||
rgb_matrix_enable_noeeprom();
|
||||
} else if (rgb_matrix_get_flags() == LED_FLAG_CAPS) {
|
||||
/* It's already ON, promote the cause from CAPS to EFFECTS */
|
||||
rgb_matrix_set_flags(LED_FLAG_EFFECTS);
|
||||
}
|
||||
}
|
||||
#endif // RGB_CONFIRMATION_BLINKING_TIME > 0
|
||||
|
||||
static void set_rgb_caps_leds() {
|
||||
rgb_matrix_set_color(67, 0xFF, 0x0, 0x0); // Left side LED 1
|
||||
rgb_matrix_set_color(68, 0xFF, 0x0, 0x0); // Right side LED 1
|
||||
rgb_matrix_set_color(70, 0xFF, 0x0, 0x0); // Left side LED 2
|
||||
rgb_matrix_set_color(71, 0xFF, 0x0, 0x0); // Right side LED 2
|
||||
rgb_matrix_set_color(73, 0xFF, 0x0, 0x0); // Left side LED 3
|
||||
rgb_matrix_set_color(74, 0xFF, 0x0, 0x0); // Right side LED 3
|
||||
rgb_matrix_set_color(76, 0xFF, 0x0, 0x0); // Left side LED 4
|
||||
rgb_matrix_set_color(77, 0xFF, 0x0, 0x0); // Right side LED 4
|
||||
rgb_matrix_set_color(80, 0xFF, 0x0, 0x0); // Left side LED 5
|
||||
rgb_matrix_set_color(81, 0xFF, 0x0, 0x0); // Right side LED 5
|
||||
rgb_matrix_set_color(83, 0xFF, 0x0, 0x0); // Left side LED 6
|
||||
rgb_matrix_set_color(84, 0xFF, 0x0, 0x0); // Right side LED 6
|
||||
rgb_matrix_set_color(87, 0xFF, 0x0, 0x0); // Left side LED 7
|
||||
rgb_matrix_set_color(88, 0xFF, 0x0, 0x0); // Right side LED 7
|
||||
rgb_matrix_set_color(91, 0xFF, 0x0, 0x0); // Left side LED 8
|
||||
rgb_matrix_set_color(92, 0xFF, 0x0, 0x0); // Right side LED 8
|
||||
rgb_matrix_set_color(3, 0xFF, 0x0, 0x0); // CAPS LED
|
||||
}
|
||||
|
||||
#endif // RGB_MATRIX_ENABLE
|
23
gmmk/pro/ansi/keymaps/andrebrait/readme.md
Normal file
23
gmmk/pro/ansi/keymaps/andrebrait/readme.md
Normal file
@ -0,0 +1,23 @@
|
||||
# andrebrait's GMMK Pro layout
|
||||
|
||||
This is pretty much the stock layout with a few things moved around.
|
||||
It basically reflects my needs for both Delete and Insert being readily available for coding, as well as a full Home/PgUp/PgDwn/End column.
|
||||
|
||||
The differences are as follows:
|
||||
|
||||
- Short DEBOUNCE time (5 ms)
|
||||
- Per-key debounce algorithm (sym_defer_pk)
|
||||
- RGB turns off after 20 minutes of inactivity
|
||||
- RGB turns off when USB is suspended
|
||||
- Layer 0:
|
||||
- Print Screen (default) -> Delete
|
||||
- Delete (default) -> Home
|
||||
- Layer 1 (accessed by pressing Fn):
|
||||
- Fn + Delete -> Insert
|
||||
- Fn + Home -> Print Screen
|
||||
|
||||
This keymap also includes CAPS LOCK ON indicator.\
|
||||
All left and right side LEDs, and the Caps key LED will turn solid red while CAPS LOCK is ON.
|
||||
|
||||
No other changes have been made. \
|
||||
The other keys on each layer have been kept intact.
|
3
gmmk/pro/ansi/keymaps/andrebrait/rules.mk
Normal file
3
gmmk/pro/ansi/keymaps/andrebrait/rules.mk
Normal file
@ -0,0 +1,3 @@
|
||||
# Enable additional features.
|
||||
|
||||
DEBOUNCE_TYPE = sym_defer_pk
|
72
gmmk/pro/ansi/keymaps/default/keymap.c
Normal file
72
gmmk/pro/ansi/keymaps/default/keymap.c
Normal file
@ -0,0 +1,72 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] \ PgUp
|
||||
// Caps A S D F G H J K L ; " Enter PgDn
|
||||
// Sh_L Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
|
||||
// The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without
|
||||
// this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
|
||||
// cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
|
||||
// if that's your preference.
|
||||
//
|
||||
// To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and
|
||||
// it'll be back to normal when you plug it back in.
|
||||
//
|
||||
// This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO).
|
||||
// Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience.
|
||||
// Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts.
|
||||
[0] = LAYOUT(
|
||||
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_MUTE,
|
||||
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_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_PGUP,
|
||||
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_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
|
||||
_______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
|
||||
_______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
|
||||
),
|
||||
|
||||
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif // ENCODER_ENABLE
|
33
gmmk/pro/ansi/keymaps/jonavin/config.h
Normal file
33
gmmk/pro/ansi/keymaps/jonavin/config.h
Normal file
@ -0,0 +1,33 @@
|
||||
/* Copyright 2021 Jonavin Eng
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define TAPPING_TOGGLE 2
|
||||
// TT set to two taps
|
||||
|
||||
/* Handle GRAVESC combo keys */
|
||||
#define GRAVE_ESC_ALT_OVERRIDE
|
||||
//Always send Escape if Alt is pressed
|
||||
#define GRAVE_ESC_CTRL_OVERRIDE
|
||||
//Always send Escape if Control is pressed
|
||||
|
||||
#define TAPPING_TERM 180
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
#endif
|
143
gmmk/pro/ansi/keymaps/jonavin/keymap.c
Normal file
143
gmmk/pro/ansi/keymaps/jonavin/keymap.c
Normal file
@ -0,0 +1,143 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
Copyright 2021 Jonavin
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "rgb_matrix_map.h"
|
||||
#include "jonavin.h"
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Ins Rotary(Mute)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] \ PgUp
|
||||
// Caps A S D F G H J K L ; " Enter PgDn
|
||||
// Sh_L Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
|
||||
[_BASE] = LAYOUT(
|
||||
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_MUTE,
|
||||
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_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_PGUP,
|
||||
TT(_LOWER), 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_PGDN,
|
||||
KC_LSFTCAPSWIN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT(
|
||||
_______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_CALC, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
|
||||
_______, _______, RGB_VAI, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, RESET, KC_HOME,
|
||||
KC_CAPS, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
|
||||
_______, _______, RGB_HUI, _______, _______, _______, KC_NLCK, _______, RGB_TOD, RGB_TOI, _______, _______, RGB_MOD, _______,
|
||||
_______, KC_WINLCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, _______, _______,
|
||||
_______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_TAB, KC_P4, KC_P5, KC_P6, KC_PDOT, _______, _______, _______, KC_HOME,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, KC_P1, KC_P2, KC_P3, KC_NO, KC_PAST, KC_PENT, KC_END,
|
||||
_______, KC_NO, KC_DEL, KC_INS, KC_NO, KC_NO, KC_NO, KC_P0, KC_00, KC_PDOT, KC_PSLS, _______, RCTL(KC_PGUP), _______,
|
||||
_______, _______, _______, KC_BSPC, _______, _______, _______, RCTL(KC_LEFT), RCTL(KC_PGDN), RCTL(KC_RIGHT)
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
};
|
||||
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
// Capslock, Scroll lock and Numlock indicator on Left side lights.
|
||||
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
|
||||
if (IS_HOST_LED_ON(USB_LED_SCROLL_LOCK)) {
|
||||
rgb_matrix_set_color(LED_L1, RGB_GREEN);
|
||||
rgb_matrix_set_color(LED_L2, RGB_GREEN);
|
||||
}
|
||||
if (!IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // on if NUM lock is OFF
|
||||
rgb_matrix_set_color(LED_L3, RGB_MAGENTA);
|
||||
rgb_matrix_set_color(LED_L4, RGB_MAGENTA);
|
||||
}
|
||||
if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
|
||||
rgb_matrix_set_color(LED_L5, RGB_RED);
|
||||
rgb_matrix_set_color(LED_L6, RGB_RED);
|
||||
rgb_matrix_set_color(LED_L7, RGB_RED);
|
||||
}
|
||||
if (keymap_config.no_gui) {
|
||||
rgb_matrix_set_color(LED_LWIN, RGB_RED); //light up Win key when disabled
|
||||
}
|
||||
switch(get_highest_layer(layer_state)){ // special handling per layer
|
||||
case _FN1: // on Fn layer select what the encoder does when pressed
|
||||
rgb_matrix_set_color(LED_R2, RGB_RED);
|
||||
rgb_matrix_set_color(LED_R3, RGB_RED);
|
||||
rgb_matrix_set_color(LED_R4, RGB_RED);
|
||||
rgb_matrix_set_color(LED_FN, RGB_RED); //FN key
|
||||
|
||||
// Add RGB Timeout Indicator -- shows 0 to 139 using F row and num row; larger numbers using 16bit code
|
||||
uint16_t timeout_threshold = get_timeout_threshold();
|
||||
if (timeout_threshold <= 10) rgb_matrix_set_color(LED_LIST_FUNCROW[timeout_threshold], RGB_RED);
|
||||
else if (timeout_threshold < 140) {
|
||||
rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold / 10)], RGB_RED);
|
||||
rgb_matrix_set_color(LED_LIST_NUMROW[(timeout_threshold % 10)], RGB_RED);
|
||||
} else { // >= 140 minutes, just show these 3 lights
|
||||
rgb_matrix_set_color(LED_LIST_NUMROW[10], RGB_RED);
|
||||
rgb_matrix_set_color(LED_LIST_NUMROW[11], RGB_RED);
|
||||
rgb_matrix_set_color(LED_LIST_NUMROW[12], RGB_RED);
|
||||
}
|
||||
break;
|
||||
case _LOWER:
|
||||
for (uint8_t i=0; i<ARRAYSIZE(LED_LIST_NUMPAD); i++) {
|
||||
rgb_matrix_set_color(LED_LIST_NUMPAD[i], RGB_MAGENTA);
|
||||
}
|
||||
rgb_matrix_set_color(LED_R4, RGB_MAGENTA);
|
||||
rgb_matrix_set_color(LED_R5, RGB_MAGENTA);
|
||||
rgb_matrix_set_color(LED_R6, RGB_MAGENTA);
|
||||
break;
|
||||
case _RAISE:
|
||||
rgb_matrix_set_color(LED_R6, RGB_GREEN);
|
||||
rgb_matrix_set_color(LED_R7, RGB_GREEN);
|
||||
rgb_matrix_set_color(LED_R8, RGB_GREEN);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void suspend_power_down_user(void) {
|
||||
rgb_matrix_set_suspend_state(true);
|
||||
}
|
||||
|
||||
void suspend_wakeup_init_user(void) {
|
||||
rgb_matrix_set_suspend_state(false);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void keyboard_post_init_keymap(void) {
|
||||
// keyboard_post_init_user() moved to userspace
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
rgb_matrix_set_color_all(RGB_NAUTILUS); // Default startup colour
|
||||
#endif
|
||||
}
|
53
gmmk/pro/ansi/keymaps/jonavin/readme.md
Normal file
53
gmmk/pro/ansi/keymaps/jonavin/readme.md
Normal file
@ -0,0 +1,53 @@
|
||||
# jonavin's GMMK Pro layout
|
||||
|
||||
- Add Fn layer keys from Glorious Core mapping that's missing in the default qmk mapping
|
||||
- Add PrtScr, Scroll Lock, Break, NumLock to Fn layer
|
||||
- Implement Win key lock using Fn+Win like in Glorious Core firmware
|
||||
- Layer 2 mod on Caps Lock with double-tap to switch to this layer, double tap to switch back
|
||||
- Layer 2 provides arrows on WASD and additional nav keys + right hand numpad with 00; an be used for Alt Code entry
|
||||
- Layer 2 left spacebar Backspace
|
||||
- add double tap of Left Shift to toggle Caps Lock
|
||||
- additional encoder functionality
|
||||
- FN Layer - change rgb idle timeout
|
||||
- holding Left shift, change layers
|
||||
- holding right shift, Navigate page up/down
|
||||
- holding Left Ctrl, navigate prev/next word
|
||||
- holding Left Alt, change media prev/next track
|
||||
- default is change volume
|
||||
|
||||
- LED/RGB Functionality
|
||||
- RGB idle timeout (default 5 minutes)
|
||||
- Can be changed in FN layer with < and > or encoder
|
||||
- setting to zero disables timeout
|
||||
- indicators in FN layer using RGB in FN and number rows to show the timeout in minutes
|
||||
- LED address location map as enum definition
|
||||
- LED group lists for arrows, numpad, F row, num row, left and right side LEDs
|
||||
- default startuo in single mode with default colour
|
||||
- Capslock, Scroll Lock, and Num Lock (not set) indicator on left side LED
|
||||
- Layer indicator on right side LED
|
||||
- Fn key light up red when Fn layer activate
|
||||
- Win Key light up red when Win Lock mode enabled
|
||||
- Layer 2 activation lights up Numpad area
|
||||
|
||||
rules.mk OPTIONS - Active features from userspace
|
||||
STARTUP_NUMLOCK_ON = yes
|
||||
- turns on NUMLOCK by default
|
||||
|
||||
ENCODER_DEFAULTACTIONS_ENABLE = yes
|
||||
- Enabled default encoder funtions
|
||||
|
||||
TD_LSFT_CAPSLOCK_ENABLE = yes
|
||||
- This will enable double tap on Left Shift to toggle CAPSLOCK when using KC_LSFTCAPS
|
||||
|
||||
IDLE_TIMEOUT_ENABLE = yes
|
||||
- Enables Timer functionality; for RGB idle timeouts that can be changed dynamically
|
||||
|
||||
## All layers diagram
|
||||
Default layer
|
||||
![image](https://user-images.githubusercontent.com/71780717/124177658-82324880-da7e-11eb-9421-b69100131062.png)
|
||||
|
||||
Fn Layer
|
||||
![image](https://user-images.githubusercontent.com/71780717/126086069-bc539ffc-3ab6-4ebb-9bef-5005f8add294.png)
|
||||
|
||||
Layer 2 (Caps Lock Mod)
|
||||
![image](https://user-images.githubusercontent.com/71780717/124177683-8b231a00-da7e-11eb-9434-e2475f679a54.png)
|
144
gmmk/pro/ansi/keymaps/jonavin/rgb_matrix_map.h
Normal file
144
gmmk/pro/ansi/keymaps/jonavin/rgb_matrix_map.h
Normal file
@ -0,0 +1,144 @@
|
||||
/* Copyright 2021 Jonavin Eng
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
// Custom RGB Colours
|
||||
#define RGB_GODSPEED 0x00, 0xE4, 0xFF // colour for matching keycaps
|
||||
#define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Naurilus Font colours
|
||||
|
||||
// RGB LED locations
|
||||
enum led_location_map {
|
||||
LED_ESC, // 0, ESC, k13
|
||||
LED_GRV, // 1, ~, k16
|
||||
LEB_TAB, // 2, Tab, k11
|
||||
LED_CAPS, // 3, Caps, k21
|
||||
LED_LSFT, // 4, Sh_L, k00
|
||||
LED_LCTL, // 5, Ct_L, k06
|
||||
LED_F1, // 6, F1, k26
|
||||
LED_1, // 7, 1, k17
|
||||
LED_Q, // 8, Q, k10
|
||||
LED_A, // 9, A, k12
|
||||
LED_Z, // 10, Z, k14
|
||||
LED_LWIN, // 11, Win_L, k90
|
||||
LED_F2, // 12, F2, k36
|
||||
LED_2, // 13, 2, k27
|
||||
LED_W, // 14, W, k20
|
||||
LED_S, // 15, S, k22
|
||||
LED_X, // 16, X, k24
|
||||
LED_LALT, // 17, Alt_L, k93
|
||||
LED_F3, // 18, F3, k31
|
||||
LED_3, // 19, 3, k37
|
||||
LED_E, // 20, E, k30
|
||||
LED_D, // 21, D, k32
|
||||
LED_C, // 22, C, k34
|
||||
LED_F4, // 23, F4, k33
|
||||
LED_4, // 24, 4, k47
|
||||
LED_R, // 25, R, k40
|
||||
LED_F, // 26, F, k42
|
||||
LED_V, // 27, V, k44
|
||||
LED_F5, // 28, F5, k07
|
||||
LED_5, // 29, 5, k46
|
||||
LED_T, // 30, T, k41
|
||||
LED_G, // 31, G, k43
|
||||
LED_B, // 32, B, k45
|
||||
LED_SPC, // 33, SPACE, k94
|
||||
LED_F6, // 34, F6, k63
|
||||
LED_6, // 35, 6, k56
|
||||
LED_Y, // 36, Y, k51
|
||||
LED_H, // 37, H, k53
|
||||
LED_N, // 38, N, k55
|
||||
LED_F7, // 39, F7, k71
|
||||
LED_7, // 40, 7, k57
|
||||
LED_U, // 41, U, k50
|
||||
LED_J, // 42, J, k52
|
||||
LED_M, // 43, M, k54
|
||||
LED_F8, // 44, F8, k76
|
||||
LED_8, // 45, 8, k67
|
||||
LED_I, // 46, I, k60
|
||||
LED_K, // 47, K, k62
|
||||
LED_COMM, // 48, ,, k64
|
||||
LED_RALT, // 49, Alt_R, k95
|
||||
LED_F9, // 50, F9, ka6
|
||||
LED_9, // 51, 9, k77
|
||||
LED_O, // 52, O, k70
|
||||
LED_L, // 53, L, k72
|
||||
LED_DOT, // 54, ., k74
|
||||
LED_FN, // 55, FN, k92
|
||||
LED_F10, // 56, F10, ka7
|
||||
LED_0, // 57, 0, k87
|
||||
LED_P, // 58, P, k80
|
||||
LED_SCLN, // 59, ;, k82
|
||||
LED_SLSH, // 60, ?, k85
|
||||
LED_F11, // 61, F11, ka3
|
||||
LED_MINS, // 62, -, k86
|
||||
LED_LBRC, // 63, [, k81
|
||||
LED_QUOT, // 64, ", k83
|
||||
LED_RCTL, // 65, Ct_R, k04
|
||||
LED_F12, // 66, F12, ka5
|
||||
LED_L1, // 67, LED, l01
|
||||
LED_R1, // 68, LED, l11
|
||||
LED_INS, // 69, Prt, k97 -- remapped to INS
|
||||
LED_L2, // 70, LED, l02
|
||||
LED_R2, // 71, LED, l12
|
||||
LED_DEL, // 72, Del, k65
|
||||
LED_L3, // 73, LED, l03
|
||||
LED_R3, // 74, LED, l13
|
||||
LED_PGUP, // 75, PgUp, k15
|
||||
LED_L4, // 76, LED, l04
|
||||
LED_R4, // 77, LED, l14
|
||||
LED_EQL, // 78, =, k66
|
||||
LED_RIGHT, // 79, Right, k05
|
||||
LED_L5, // 80, LED, l05
|
||||
LED_R5, // 81, LED, l15
|
||||
LED_END, // 82, End, k75
|
||||
LED_L6, // 83, LED, l06
|
||||
LED_R6, // 84, LED, l16
|
||||
LED_BSPC, // 85, BSpc, ka1
|
||||
LED_PGDN, // 86, PgDn, k25
|
||||
LED_L7, // 87, LED, l07
|
||||
LED_R7, // 88, LED, l17
|
||||
LED_RBRC, // 89, ], k61
|
||||
LED_RSFT, // 90, Sh_R, k91
|
||||
LED_L8, // 91, LED, l08
|
||||
LED_R8, // 92, LED, l18
|
||||
LED_BSLS, // 93, \, ka2
|
||||
LED_UP, // 94, Up, k35
|
||||
LED_LEFT, // 95, Left, k03
|
||||
LED_ENT, // 96, Enter, ka4
|
||||
LED_DOWN // 97, Down, k73
|
||||
};
|
||||
|
||||
const uint8_t LED_LIST_WASD[] = { LED_W, LED_A, LED_S, LED_D };
|
||||
|
||||
const uint8_t LED_LIST_ARROWS[] = { LED_LEFT, LED_RIGHT, LED_UP, LED_DOWN };
|
||||
|
||||
const uint8_t LED_LIST_FUNCROW[] = { LED_ESC, LED_F1, LED_F2, LED_F3, LED_F4, LED_F5, LED_F6, LED_F7, LED_F8, LED_F9, LED_F10, LED_F11, LED_F12, LED_INS};
|
||||
|
||||
const uint8_t LED_LIST_NUMROW[] = { LED_GRV, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, LED_BSPC, LED_DEL};
|
||||
|
||||
const uint8_t LED_LIST_NUMPAD[] = {
|
||||
LED_7, LED_8, LED_9,
|
||||
LED_U, LED_I, LED_O,
|
||||
LED_J, LED_K, LED_L,
|
||||
LED_M, LED_COMM, LED_DOT
|
||||
};
|
||||
|
||||
const uint8_t LED_SIDE_LEFT[] = { LED_L1, LED_L2, LED_L3, LED_L4, LED_L5, LED_L6, LED_L7, LED_L8};
|
||||
|
||||
const uint8_t LED_SIDE_RIGHT[] = { LED_R1, LED_R2, LED_R3, LED_R4, LED_R5, LED_R6, LED_R7, LED_R8};
|
||||
|
||||
#endif
|
9
gmmk/pro/ansi/keymaps/jonavin/rules.mk
Normal file
9
gmmk/pro/ansi/keymaps/jonavin/rules.mk
Normal file
@ -0,0 +1,9 @@
|
||||
VIA_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = no
|
||||
TAP_DANCE_ENABLE = yes
|
||||
BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
|
||||
|
||||
TD_LSFT_CAPSLOCK_ENABLE = yes
|
||||
IDLE_TIMEOUT_ENABLE = yes
|
||||
STARTUP_NUMLOCK_ON = yes
|
||||
ENCODER_DEFAULTACTIONS_ENABLE = yes
|
24
gmmk/pro/ansi/keymaps/paddlegame/config.h
Normal file
24
gmmk/pro/ansi/keymaps/paddlegame/config.h
Normal file
@ -0,0 +1,24 @@
|
||||
/* Copyright 2021 Tomas Guinan
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
|
||||
# define RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
#endif
|
||||
|
||||
#define FORCE_NKRO
|
471
gmmk/pro/ansi/keymaps/paddlegame/keymap.c
Normal file
471
gmmk/pro/ansi/keymaps/paddlegame/keymap.c
Normal file
@ -0,0 +1,471 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
Copyright 2021 Tomas Guinan
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "rgb_matrix_map.h"
|
||||
#include "paddlegame.h"
|
||||
#include <math.h>
|
||||
|
||||
enum custom_layers {
|
||||
_BASE,
|
||||
_FN1,
|
||||
_MO2,
|
||||
_MO3,
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
KC_00 = SAFE_RANGE,
|
||||
KC_WINLK, //Toggles Win key on and off
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_00:
|
||||
if (record->event.pressed) {
|
||||
// when keycode KC_00 is pressed
|
||||
SEND_STRING("00");
|
||||
} else {
|
||||
// when keycode KC_00 is released
|
||||
}
|
||||
break;
|
||||
|
||||
case KC_WINLK:
|
||||
if (record->event.pressed) {
|
||||
if(!keymap_config.no_gui) {
|
||||
process_magic(GUI_OFF, record);
|
||||
} else {
|
||||
process_magic(GUI_ON, record);
|
||||
}
|
||||
} else unregister_code16(keycode);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Del Rotary(Mute)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Home
|
||||
// Tab Q W E R T Y U I O P [ ] \ PgUp
|
||||
// Caps A S D F G H J K L ; " Enter PgDn
|
||||
// Sh_L Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
|
||||
[_BASE] = LAYOUT(
|
||||
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_DEL, KC_MUTE,
|
||||
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_HOME,
|
||||
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_PGUP,
|
||||
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_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT(
|
||||
KC_SLEP, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_INS, _______,
|
||||
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_HUI, _______, RGB_M_P,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_MO2), RGB_SAD, RGB_SAI, RESET, RGB_M_B,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_MOD, _______, RGB_M_R,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_M_SW,
|
||||
_______, KC_WINLK, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
|
||||
),
|
||||
|
||||
[_MO2] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, TG(_MO2), _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_MO3] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
};
|
||||
|
||||
#ifdef ENCODER_ENABLE // Encoder Functionality
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
|
||||
switch(get_highest_layer(layer_state)) {
|
||||
case _FN1:
|
||||
if ( clockwise ) {
|
||||
tap_code16(KC_PGDN);
|
||||
} else {
|
||||
tap_code16(KC_PGUP);
|
||||
}
|
||||
break;
|
||||
|
||||
case _MO2:
|
||||
// Game: Paddle movement
|
||||
if (damage_count == 0) {
|
||||
if ( clockwise ) {
|
||||
if (paddle_pos_full < 15) ++paddle_pos_full;
|
||||
} else {
|
||||
if (paddle_pos_full > 0) --paddle_pos_full;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case _BASE:
|
||||
default:
|
||||
if ( clockwise ) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
void init_ball(uint8_t i) {
|
||||
i &= 1;
|
||||
ball[i].on = true;
|
||||
ball[i].up = false;
|
||||
ball[i].y = 0;
|
||||
ball[i].x = rand() % 16;
|
||||
|
||||
// Set initial ball state
|
||||
if (ball[i].x < 8) {
|
||||
ball[i].left = false;
|
||||
} else {
|
||||
ball[i].x -= 4;
|
||||
ball[i].left = true;
|
||||
}
|
||||
|
||||
// 1/4 chance of being an enemy ball after level 6
|
||||
if (level_number > 3) {
|
||||
ball[i].enemy = ((rand() % 4) == 0);
|
||||
} else {
|
||||
ball[i].enemy = false;
|
||||
}
|
||||
}
|
||||
|
||||
void hurt_paddle(void) {
|
||||
if (paddle_lives > 0) {
|
||||
--paddle_lives;
|
||||
}
|
||||
damage_timer = timer_read();
|
||||
damage_count = 10;
|
||||
|
||||
// Reset board
|
||||
init_ball(0);
|
||||
ball[1].on = false;
|
||||
}
|
||||
|
||||
// Capslock, Scroll lock and Numlock indicator on Left side lights.
|
||||
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
|
||||
switch(get_highest_layer(layer_state)) {
|
||||
case _FN1:
|
||||
// Light up FN layer keys
|
||||
if (!fn_active) {
|
||||
fn_active = true;
|
||||
rgb_value.r = 0xff;
|
||||
rgb_value.g = 0x00;
|
||||
rgb_value.b = 0x00;
|
||||
}
|
||||
|
||||
if (rgb_value.r == 0xff && rgb_value.g < 0xff) {
|
||||
if (rgb_value.b > 0) { --rgb_value.b; }
|
||||
else { ++rgb_value.g; }
|
||||
} else if (rgb_value.g == 0xff && rgb_value.b < 0xff) {
|
||||
if (rgb_value.r > 0) { --rgb_value.r; }
|
||||
else { ++rgb_value.b; }
|
||||
} else if (rgb_value.b == 0xff && rgb_value.r < 0xff) {
|
||||
if (rgb_value.g > 0) { --rgb_value.g; }
|
||||
else { ++rgb_value.r; }
|
||||
}
|
||||
|
||||
for (uint8_t i=0; i<sizeof(LED_RGB)/sizeof(LED_RGB[0]); i++) {
|
||||
rgb_matrix_set_color(LED_RGB[i], rgb_value.r, rgb_value.g, rgb_value.b);
|
||||
}
|
||||
|
||||
for (uint8_t i=0; i<sizeof(LED_WHITE)/sizeof(LED_WHITE[0]); i++) {
|
||||
rgb_matrix_set_color(LED_WHITE[i], RGB_WHITE);
|
||||
}
|
||||
|
||||
for (uint8_t i=0; i<sizeof(LED_GREEN)/sizeof(LED_GREEN[0]); i++) {
|
||||
rgb_matrix_set_color(LED_GREEN[i], RGB_GREEN);
|
||||
}
|
||||
|
||||
rgb_matrix_set_color(LED_ESC, RGB_RED);
|
||||
|
||||
rgb_matrix_set_color(LED_LWIN, RGB_BLUE);
|
||||
break;
|
||||
|
||||
case _MO2:
|
||||
// Paddle game
|
||||
if (!game_start) {
|
||||
srand((unsigned int)timer_read());
|
||||
|
||||
// Store user light settings
|
||||
last_hsv = rgb_matrix_get_hsv();
|
||||
rgb_matrix_sethsv_noeeprom(0, 0, 0);
|
||||
|
||||
rgb_value.r = 0xff;
|
||||
rgb_value.g = 0x00;
|
||||
rgb_value.b = 0x00;
|
||||
|
||||
paddle_pos_full = 8;
|
||||
paddle_lives = 4;
|
||||
bounce_count = 0;
|
||||
level_number = 0;
|
||||
damage_count = 0;
|
||||
|
||||
init_ball(0);
|
||||
ball[1].on = false;
|
||||
ball_timer = timer_read();
|
||||
|
||||
game_start = true;
|
||||
}
|
||||
|
||||
// Set level indicator
|
||||
if (level_number < 12) {
|
||||
rgb_matrix_set_color(GAME_R0[level_number], RGB_BLUE);
|
||||
}
|
||||
|
||||
// Set life bar
|
||||
for (uint8_t i=0; i < paddle_lives ; i++) {
|
||||
rgb_matrix_set_color(GAME_LIVES[i], RGB_GREEN);
|
||||
}
|
||||
|
||||
uint8_t paddle_pos = paddle_pos_full >> 1;
|
||||
|
||||
if (damage_count > 0) {
|
||||
// Flash paddle when receiving damage
|
||||
if (timer_elapsed(damage_timer) > 500) {
|
||||
--damage_count;
|
||||
damage_timer = timer_read();
|
||||
}
|
||||
if ((damage_count & 1) == 0) {
|
||||
for (uint8_t i=0; i < 3 ; i++) {
|
||||
rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_RED);
|
||||
}
|
||||
}
|
||||
if (damage_count == 0) {
|
||||
ball_timer = timer_read();
|
||||
}
|
||||
|
||||
|
||||
} else if (paddle_lives == 0) {
|
||||
// Game over
|
||||
for (uint8_t i=0; i<sizeof(LED_GAME_OVER)/sizeof(LED_GAME_OVER[0]); i++) {
|
||||
rgb_matrix_set_color(LED_GAME_OVER[i], RGB_RED);
|
||||
}
|
||||
|
||||
} else if (level_number >= 12) {
|
||||
// You win
|
||||
if (rgb_value.r == 0xff && rgb_value.g < 0xff) {
|
||||
if (rgb_value.b > 0) { --rgb_value.b; }
|
||||
else { ++rgb_value.g; }
|
||||
} else if (rgb_value.g == 0xff && rgb_value.b < 0xff) {
|
||||
if (rgb_value.r > 0) { --rgb_value.r; }
|
||||
else { ++rgb_value.b; }
|
||||
} else if (rgb_value.b == 0xff && rgb_value.r < 0xff) {
|
||||
if (rgb_value.g > 0) { --rgb_value.g; }
|
||||
else { ++rgb_value.r; }
|
||||
}
|
||||
|
||||
for (uint8_t i=0; i < 3 ; i++) {
|
||||
rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], rgb_value.r, rgb_value.g, rgb_value.b);
|
||||
}
|
||||
rgb_matrix_set_color(GAME_SMILE1[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b);
|
||||
rgb_matrix_set_color(GAME_SMILE1[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b);
|
||||
rgb_matrix_set_color(GAME_SMILE2[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b);
|
||||
rgb_matrix_set_color(GAME_SMILE2[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b);
|
||||
|
||||
} else {
|
||||
// normal game loop
|
||||
|
||||
// Set paddle position
|
||||
for (uint8_t i=0; i < 3 ; i++) {
|
||||
rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_GREEN);
|
||||
}
|
||||
|
||||
// Ball movement logic happens at intervals
|
||||
if (timer_elapsed(ball_timer) > GAME_TIMER[level_number]) {
|
||||
for (int i=0; i<2; ++i) {
|
||||
if (ball[i].on) {
|
||||
// Ball movement
|
||||
if (ball[i].up) {
|
||||
if (ball[i].y > 0) {
|
||||
--ball[i].y;
|
||||
if (!ball[i].left) ++ball[i].x;
|
||||
} else {
|
||||
// Count reflections. If > 10, increase level
|
||||
++bounce_count;
|
||||
if (bounce_count >= 10) {
|
||||
bounce_count = 0;
|
||||
++level_number;
|
||||
}
|
||||
ball[i].on = false;
|
||||
}
|
||||
} else {
|
||||
++ball[i].y;
|
||||
if (ball[i].left) --ball[i].x;
|
||||
if (ball[i].y > 4) {
|
||||
// Remove a life if ball isn't returned and isn't enemy
|
||||
if (!ball[i].enemy) {
|
||||
hurt_paddle();
|
||||
i = 2;
|
||||
} else {
|
||||
ball[i].on = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ball[0].y == 4 && !ball[1].on) {
|
||||
init_ball(1);
|
||||
}
|
||||
if (ball[1].y == 4 && !ball[0].on) {
|
||||
init_ball(0);
|
||||
}
|
||||
if (!ball[0].on && !ball[1].on) {
|
||||
init_ball(0);
|
||||
}
|
||||
ball_timer = timer_read();
|
||||
}
|
||||
|
||||
// Other ball stuff
|
||||
for (int i=0; i<2; ++i) {
|
||||
if (ball[i].on) {
|
||||
// Ball deflection logic
|
||||
if (!ball[i].up && ball[i].y == 4 && (ball[i].x == paddle_pos || ball[i].x == paddle_pos - 1 || ball[i].x == paddle_pos + 1)) {
|
||||
if (!ball[i].enemy) {
|
||||
--ball[i].y;
|
||||
if (!ball[i].left) { ++ball[i].x; }
|
||||
ball[i].up = true;
|
||||
} else {
|
||||
hurt_paddle();
|
||||
i = 2;
|
||||
}
|
||||
}
|
||||
|
||||
// Ball display
|
||||
switch (ball[i].y) {
|
||||
case 0:
|
||||
if (ball[i].enemy) {
|
||||
rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_RED);
|
||||
} else {
|
||||
rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_WHITE);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (ball[i].enemy) {
|
||||
rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_RED);
|
||||
} else {
|
||||
rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_WHITE);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (ball[i].enemy) {
|
||||
rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_RED);
|
||||
} else {
|
||||
rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_WHITE);
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if (ball[i].enemy) {
|
||||
rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_RED);
|
||||
} else {
|
||||
rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_WHITE);
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if (ball[i].enemy) {
|
||||
rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_RED);
|
||||
} else {
|
||||
rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_WHITE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
fn_active = false;
|
||||
if (game_start) {
|
||||
// Reset lighting settings
|
||||
game_start = false;
|
||||
rgb_matrix_sethsv_noeeprom(last_hsv.h, last_hsv.s, last_hsv.v);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
|
||||
if (!caps_active) {
|
||||
caps_active = true;
|
||||
caps_flash_on = true;
|
||||
caps_flasher = timer_read();
|
||||
}
|
||||
if (timer_elapsed(caps_flasher) > 500) {
|
||||
caps_flasher = timer_read();
|
||||
caps_flash_on = !caps_flash_on;
|
||||
}
|
||||
|
||||
rgb_matrix_set_color(LED_CAPS, RGB_WHITE);
|
||||
if (caps_flash_on) {
|
||||
for (uint8_t i=0; i<sizeof(LED_SIDE_LEFT)/sizeof(LED_SIDE_LEFT[0]); i++) {
|
||||
rgb_matrix_set_color(LED_SIDE_LEFT[i], RGB_RED);
|
||||
rgb_matrix_set_color(LED_SIDE_RIGHT[i], RGB_RED);
|
||||
}
|
||||
} else {
|
||||
for (uint8_t i=0; i<sizeof(LED_SIDE_LEFT)/sizeof(LED_SIDE_LEFT[0]); i++) {
|
||||
rgb_matrix_set_color(LED_SIDE_LEFT[i], 0, 0, 0);
|
||||
rgb_matrix_set_color(LED_SIDE_RIGHT[i], 0, 0, 0);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
caps_active = false;
|
||||
}
|
||||
if (IS_HOST_LED_ON(USB_LED_SCROLL_LOCK)) {
|
||||
rgb_matrix_set_color(LED_F10, RGB_WHITE);
|
||||
}
|
||||
if (keymap_config.no_gui) {
|
||||
rgb_matrix_set_color(LED_LWIN, RGB_RED); //light up Win key when disabled
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
rgb_matrix_set_color_all(RGB_RED); // Default startup colour
|
||||
#endif
|
||||
|
||||
}
|
46
gmmk/pro/ansi/keymaps/paddlegame/paddlegame.h
Normal file
46
gmmk/pro/ansi/keymaps/paddlegame/paddlegame.h
Normal file
@ -0,0 +1,46 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
Copyright 2021 Tomas Guinan
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
const uint16_t GAME_TIMER[] = {
|
||||
400, 350, 300, 250, 400, 350, 300, 250, 225, 200, 175, 150
|
||||
};
|
||||
|
||||
bool game_start = false;
|
||||
HSV last_hsv;
|
||||
static uint8_t paddle_pos_full;
|
||||
static uint8_t paddle_lives;
|
||||
static uint8_t level_number;
|
||||
static uint8_t bounce_count;
|
||||
static uint8_t damage_count;
|
||||
static uint16_t damage_timer;
|
||||
static uint16_t ball_timer;
|
||||
|
||||
struct BallStruct
|
||||
{
|
||||
uint8_t x;
|
||||
uint8_t y;
|
||||
bool on;
|
||||
bool up;
|
||||
bool left;
|
||||
bool enemy;
|
||||
};
|
||||
|
||||
struct BallStruct ball[2];
|
||||
|
||||
void init_ball(uint8_t i);
|
||||
void hurt_paddle(void);
|
18
gmmk/pro/ansi/keymaps/paddlegame/readme.md
Normal file
18
gmmk/pro/ansi/keymaps/paddlegame/readme.md
Normal file
@ -0,0 +1,18 @@
|
||||
![GMMK Pro Paddle Game zLayout Image](https://i.imgur.com/RYcKyOj.png)
|
||||
|
||||
# Paddle Game GMMK Pro layout by Tomas Guinan
|
||||
|
||||
- Add Print Screen, Scroll Lock, Pause/Break, Insert to Fn layer
|
||||
- Toggle backlight using Fn+`
|
||||
- If you don't like using a backlight but wnat to play the paddle game or
|
||||
use other RGB features, turn RGB on and set brightness to 0
|
||||
- Usable Fn layer keys are backlit
|
||||
- Implement Win key lock using Fn+Win like in Glorious Core firmware
|
||||
- Caps Lock and Scroll Lock keys light up white when active
|
||||
- Caps Lock has red flashing side lights like in Glorious Core firmware
|
||||
- Layer 2 includes Paddle Game, playable by pressing Fn+P
|
||||
- Use rotary encoder to control paddle
|
||||
- Contains 12 levels, indicated by blue LED on F row
|
||||
- Player has 4 lives, indicated by nav cluster
|
||||
- Deflect white balls while avoiding red ones
|
||||
- Press Fn to quit game
|
181
gmmk/pro/ansi/keymaps/paddlegame/rgb_matrix_map.h
Normal file
181
gmmk/pro/ansi/keymaps/paddlegame/rgb_matrix_map.h
Normal file
@ -0,0 +1,181 @@
|
||||
/* Copyright 2021 Tomas Guinan
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
bool fn_active = false;
|
||||
bool caps_active = false;
|
||||
bool caps_flash_on = false;
|
||||
|
||||
static uint16_t caps_flasher = 0;
|
||||
RGB rgb_value;
|
||||
|
||||
// RGB LED locations
|
||||
enum led_location_map {
|
||||
LED_ESC, // 0, ESC, k13
|
||||
LED_GRV, // 1, ~, k16
|
||||
LEB_TAB, // 2, Tab, k11
|
||||
LED_CAPS, // 3, Caps, k21
|
||||
LED_LSFT, // 4, Sh_L, k00
|
||||
LED_LCTL, // 5, Ct_L, k06
|
||||
LED_F1, // 6, F1, k26
|
||||
LED_1, // 7, 1, k17
|
||||
LED_Q, // 8, Q, k10
|
||||
LED_A, // 9, A, k12
|
||||
LED_Z, // 10, Z, k14
|
||||
LED_LWIN, // 11, Win_L, k90
|
||||
LED_F2, // 12, F2, k36
|
||||
LED_2, // 13, 2, k27
|
||||
LED_W, // 14, W, k20
|
||||
LED_S, // 15, S, k22
|
||||
LED_X, // 16, X, k24
|
||||
LED_LALT, // 17, Alt_L, k93
|
||||
LED_F3, // 18, F3, k31
|
||||
LED_3, // 19, 3, k37
|
||||
LED_E, // 20, E, k30
|
||||
LED_D, // 21, D, k32
|
||||
LED_C, // 22, C, k34
|
||||
LED_F4, // 23, F4, k33
|
||||
LED_4, // 24, 4, k47
|
||||
LED_R, // 25, R, k40
|
||||
LED_F, // 26, F, k42
|
||||
LED_V, // 27, V, k44
|
||||
LED_F5, // 28, F5, k07
|
||||
LED_5, // 29, 5, k46
|
||||
LED_T, // 30, T, k41
|
||||
LED_G, // 31, G, k43
|
||||
LED_B, // 32, B, k45
|
||||
LED_SPC, // 33, SPACE, k94
|
||||
LED_F6, // 34, F6, k63
|
||||
LED_6, // 35, 6, k56
|
||||
LED_Y, // 36, Y, k51
|
||||
LED_H, // 37, H, k53
|
||||
LED_N, // 38, N, k55
|
||||
LED_F7, // 39, F7, k71
|
||||
LED_7, // 40, 7, k57
|
||||
LED_U, // 41, U, k50
|
||||
LED_J, // 42, J, k52
|
||||
LED_M, // 43, M, k54
|
||||
LED_F8, // 44, F8, k76
|
||||
LED_8, // 45, 8, k67
|
||||
LED_I, // 46, I, k60
|
||||
LED_K, // 47, K, k62
|
||||
LED_COMM, // 48, ,, k64
|
||||
LED_RALT, // 49, Alt_R, k95
|
||||
LED_F9, // 50, F9, ka6
|
||||
LED_9, // 51, 9, k77
|
||||
LED_O, // 52, O, k70
|
||||
LED_L, // 53, L, k72
|
||||
LED_DOT, // 54, ., k74
|
||||
LED_FN, // 55, FN, k92
|
||||
LED_F10, // 56, F10, ka7
|
||||
LED_0, // 57, 0, k87
|
||||
LED_P, // 58, P, k80
|
||||
LED_SCLN, // 59, ;, k82
|
||||
LED_SLSH, // 60, ?, k85
|
||||
LED_F11, // 61, F11, ka3
|
||||
LED_MINS, // 62, -, k86
|
||||
LED_LBRC, // 63, [, k81
|
||||
LED_QUOT, // 64, ", k83
|
||||
LED_RCTL, // 65, Ct_R, k04
|
||||
LED_F12, // 66, F12, ka5
|
||||
LED_L1, // 67, LED, l01
|
||||
LED_R1, // 68, LED, l11
|
||||
LED_DEL, // 69, Del, k97
|
||||
LED_L2, // 70, LED, l02
|
||||
LED_R2, // 71, LED, l12
|
||||
LED_HOME, // 72, Home, k65
|
||||
LED_L3, // 73, LED, l03
|
||||
LED_R3, // 74, LED, l13
|
||||
LED_PGUP, // 75, PgUp, k15
|
||||
LED_L4, // 76, LED, l04
|
||||
LED_R4, // 77, LED, l14
|
||||
LED_EQL, // 78, =, k66
|
||||
LED_RIGHT, // 79, Right, k05
|
||||
LED_L5, // 80, LED, l05
|
||||
LED_R5, // 81, LED, l15
|
||||
LED_END, // 82, End, k75
|
||||
LED_L6, // 83, LED, l06
|
||||
LED_R6, // 84, LED, l16
|
||||
LED_BSPC, // 85, BSpc, ka1
|
||||
LED_PGDN, // 86, PgDn, k25
|
||||
LED_L7, // 87, LED, l07
|
||||
LED_R7, // 88, LED, l17
|
||||
LED_RBRC, // 89, ], k61
|
||||
LED_RSFT, // 90, Sh_R, k91
|
||||
LED_L8, // 91, LED, l08
|
||||
LED_R8, // 92, LED, l18
|
||||
LED_BSLS, // 93, \, ka2
|
||||
LED_UP, // 94, Up, k35
|
||||
LED_LEFT, // 95, Left, k03
|
||||
LED_ENT, // 96, Enter, ka4
|
||||
LED_DOWN // 97, Down, k73
|
||||
};
|
||||
|
||||
const uint8_t LED_RGB[] = {
|
||||
LED_MINS, LED_EQL,
|
||||
LED_LBRC, LED_RBRC,
|
||||
LED_SCLN, LED_QUOT,
|
||||
LED_HOME, LED_PGUP, LED_PGDN, LED_END,
|
||||
LED_UP, LED_DOWN, LED_LEFT, LED_RIGHT
|
||||
};
|
||||
|
||||
const uint8_t LED_GREEN[] = {
|
||||
LED_F1, LED_F2, LED_F3, LED_F4,
|
||||
LED_F5, LED_F6, LED_F7, LED_F8
|
||||
};
|
||||
|
||||
const uint8_t LED_WHITE[] = {
|
||||
LED_F9, LED_F10, LED_F11, LED_DEL
|
||||
};
|
||||
|
||||
const uint8_t LED_SIDE_LEFT[] = { LED_L1, LED_L2, LED_L3, LED_L4, LED_L5, LED_L6, LED_L7, LED_L8};
|
||||
|
||||
const uint8_t LED_SIDE_RIGHT[] = { LED_R1, LED_R2, LED_R3, LED_R4, LED_R5, LED_R6, LED_R7, LED_R8};
|
||||
|
||||
// Breakout LED rules
|
||||
|
||||
const uint8_t GAME_LIVES[] = { LED_HOME, LED_PGUP, LED_PGDN, LED_END };
|
||||
const uint8_t GAME_PADDLE[] = {
|
||||
LED_Z, LED_X, LED_C, LED_V, LED_B, LED_N, LED_M, LED_COMM, LED_DOT, LED_SLSH
|
||||
};
|
||||
const uint8_t GAME_SMILE1[] = {
|
||||
LED_A, LED_S, LED_D, LED_F, LED_G, LED_H, LED_J, LED_K, LED_L, LED_SCLN, LED_QUOT
|
||||
};
|
||||
const uint8_t GAME_SMILE2[] = {
|
||||
LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL
|
||||
};
|
||||
const uint8_t GAME_R4[] = {
|
||||
LED_X, LED_C, LED_V, LED_B, LED_N, LED_M, LED_COMM, LED_DOT
|
||||
};
|
||||
const uint8_t GAME_R3[] = {
|
||||
LED_S, LED_D, LED_F, LED_G, LED_H, LED_J, LED_K, LED_L, LED_SCLN
|
||||
};
|
||||
const uint8_t GAME_R2[] = {
|
||||
LED_W, LED_E, LED_R, LED_T, LED_Y, LED_U, LED_I, LED_O, LED_P, LED_LBRC
|
||||
};
|
||||
const uint8_t GAME_R1[] = {
|
||||
LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL
|
||||
};
|
||||
const uint8_t GAME_R0[] = {
|
||||
LED_F1, LED_F2, LED_F3, LED_F4, LED_F5, LED_F6, LED_F7, LED_F8, LED_F9, LED_F10, LED_F11, LED_F12
|
||||
};
|
||||
|
||||
const uint8_t LED_GAME_OVER[] = { LED_5, LED_8, LED_F, LED_G, LED_H, LED_J, LED_C, LED_M };
|
||||
|
||||
|
||||
#endif
|
4
gmmk/pro/ansi/keymaps/paddlegame/rules.mk
Normal file
4
gmmk/pro/ansi/keymaps/paddlegame/rules.mk
Normal file
@ -0,0 +1,4 @@
|
||||
MOUSEKEY_ENABLE = no
|
||||
BOOTMAGIC_ENABLE = lite
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
ENCODER_ENABLE = yes
|
75
gmmk/pro/ansi/keymaps/stickandgum/config.h
Normal file
75
gmmk/pro/ansi/keymaps/stickandgum/config.h
Normal file
@ -0,0 +1,75 @@
|
||||
/* Copyright 2021 stickandgum
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// I like NKRO.. but let's not force it. @drashna pointed out some older hardware has issues - Toggle it via keycode if you like.
|
||||
// #define FORCE_NKRO
|
||||
|
||||
// At the time of this, there are 41 effects! That may be a bit too many to cycle through - keeping what I believe is the best.
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
|
||||
// #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
|
||||
|
||||
// Below added per: https://beta.docs.qmk.fm/using-qmk/hardware-features/lighting/feature_rgb_matrix#suspended-state-id-suspended-state
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain
|
||||
#define RGB_MATRIX_KEYPRESSES // REACTIVE, SPLASH modes
|
||||
|
||||
// Soon we need to ENABLE modes by DEFAULT soon as per: https://github.com/qmk/qmk_firmware/pull/13758 Thanks @noroadsleft
|
||||
// #define DISABLE_RGB_MATRIX_SOLID_COLOR // BUILT IN (MAPPED!) Static single color.
|
||||
// #define DISABLE_RGB_MATRIX_ALPHAS_MODS // Accenting various keys on the keyboard.
|
||||
// #define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Top down rainbow!
|
||||
#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Left Right Rainbow (the top-down is better imho).
|
||||
// #define DISABLE_RGB_MATRIX_BREATHING // Built in (MAPPED!)
|
||||
// #define DISABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right (with white)
|
||||
// #define DISABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right (with black)
|
||||
#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades sat (RGB_MATRIX_CYCLE_PINWHEEL)
|
||||
#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // See above
|
||||
#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT // See above
|
||||
// #define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness (with black)
|
||||
#define DISABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard cycling through rainbow
|
||||
// #define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // BUILT IN (MAPPED!) Full Rainbow Left to Right
|
||||
#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
|
||||
#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN // Rainbow circles coming to center.
|
||||
#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Two Rainbow circles coming to 1/3 and 2/3 points.
|
||||
#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
|
||||
// #define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL // BUILT IN (MAPPED!) - Consider disabling this - my poor eyes.
|
||||
#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
|
||||
#define DISABLE_RGB_MATRIX_DUAL_BEACON // Two rainbows spinning around keyboards
|
||||
#define DISABLE_RGB_MATRIX_RAINBOW_BEACON // Similar to above.
|
||||
#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Enough of the spinning rainbows - we get it! :-)
|
||||
#define DISABLE_RGB_MATRIX_RAINDROPS // Jellybeans are better.
|
||||
// #define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation - better than above.
|
||||
#define DISABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time, then shifts back
|
||||
#define DISABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right, then back to the left
|
||||
#define DISABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
|
||||
// #define DISABLE_RGB_MATRIX_TYPING_HEATMAP // Hot keys!
|
||||
// #define DISABLE_RGB_MATRIX_DIGITAL_RAIN // The Matrix!
|
||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Key hits shown in current hue - all other keys black: wide slightly better imo
|
||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE // Key hits shown in current hue - all other keys shifted hue
|
||||
// #define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse around a single key hit then fades value out (black otherwise)
|
||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // same as above but a bit too intense imo.
|
||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Column and Row single color fade.
|
||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Column and Row single color fade. (Multi-keys)
|
||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of key hit then fades
|
||||
#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multi-key hit then fades
|
||||
#define DISABLE_RGB_MATRIX_SPLASH // Full rainbow pulses from key hit. All else black.
|
||||
#define DISABLE_RGB_MATRIX_MULTISPLASH // Full rainbow pulses from multi-keys. All else black.
|
||||
#define DISABLE_RGB_MATRIX_SOLID_SPLASH // Single color pulses from key hit. All else black. (Using solid_reactive_wide instead).
|
||||
#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH // Single color pulses from muli-keys. All else black. (Using solid_reactive_wide instead).
|
||||
#endif
|
300
gmmk/pro/ansi/keymaps/stickandgum/keymap.c
Normal file
300
gmmk/pro/ansi/keymaps/stickandgum/keymap.c
Normal file
@ -0,0 +1,300 @@
|
||||
/* Copyright 2021 stickandgum GMMK Pro ANSI Enhanced Keymap File
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum my_keycodes {
|
||||
LED_TILDE = SAFE_RANGE,
|
||||
LED_1,
|
||||
LED_2,
|
||||
LED_3,
|
||||
LED_4,
|
||||
LED_5,
|
||||
LED_6,
|
||||
LED_7,
|
||||
LED_8,
|
||||
LED_9,
|
||||
LED_0,
|
||||
LED_MINS,
|
||||
LED_EQL,
|
||||
QMKBEST
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] \ PgUp
|
||||
// Caps A S D F G H J K L ; " Enter PgDn
|
||||
// Sh_L Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
[0] = LAYOUT(
|
||||
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_MUTE,
|
||||
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_HOME,
|
||||
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_PGUP,
|
||||
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_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_DEL, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, KC_WHOM, _______, _______, _______, _______, _______, KC_WAKE, KC_SLEP, KC_PAUS, _______,
|
||||
LED_TILDE, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, KC_INS, KC_SLCK,
|
||||
_______, RGB_SAI, RGB_VAI, RGB_HUI, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_BRIU,
|
||||
_______, RGB_RMOD, RGB_VAD, RGB_MOD, RGB_SPI, _______, _______, _______, _______, QMKBEST, _______, _______, _______, KC_BRID,
|
||||
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_MPLY, KC_PWR,
|
||||
_______, _______, _______, _______, KC_RALT, _______, KC_APP, KC_MPRV, KC_MSTP, KC_MNXT
|
||||
),
|
||||
|
||||
};
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
// https://beta.docs.qmk.fm/using-qmk/simple-keycodes/feature_advanced_keycodes#alt-escape-for-alt-tab-id-alt-escape-for-alt-tab
|
||||
if (get_mods() & MOD_MASK_CTRL) { // If CTRL is held
|
||||
uint8_t mod_state = get_mods(); // Store all modifiers that are held
|
||||
unregister_mods(MOD_MASK_CTRL); // Immediately unregister the CRTL key (don't send CTRL-PgDn) - del_mods doesn't work here (not immediate)
|
||||
if (clockwise) {
|
||||
tap_code(KC_PGDN);
|
||||
} else {
|
||||
tap_code(KC_PGUP);
|
||||
}
|
||||
set_mods(mod_state); // Add back in the CTRL key - so ctrl-key will work if ctrl was never released after paging.
|
||||
} else if (get_mods() & MOD_MASK_SHIFT) {
|
||||
uint8_t mod_state = get_mods();
|
||||
unregister_mods(MOD_MASK_SHIFT);
|
||||
if (clockwise) {
|
||||
#ifdef MOUSEKEY_ENABLE // If using the mouse scroll - make sure MOUSEKEY is enabled
|
||||
tap_code(KC_MS_WH_DOWN);
|
||||
#else
|
||||
tap_code(KC_VOLU);
|
||||
#endif
|
||||
} else {
|
||||
#ifdef MOUSEKEY_ENABLE
|
||||
tap_code(KC_MS_WH_UP);
|
||||
#else
|
||||
tap_code(KC_VOLD);
|
||||
#endif
|
||||
}
|
||||
set_mods(mod_state);
|
||||
} else if (clockwise) { // All else volume.
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif //ENCODER_ENABLE
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
static void set_rgb_caps_leds_on(void);
|
||||
static void set_rgb_scroll_leds_on(void);
|
||||
static void set_rgb_caps_leds_off(void);
|
||||
static void set_rgb_scroll_leds_off(void);
|
||||
|
||||
// Called on powerup and is the last _init that is run.
|
||||
void keyboard_post_init_user(void) {
|
||||
|
||||
int mods[35] = {0,2,3,4,5,11,17,33,49,55,65,95,97,79,94,85,93,96,90,69,92,67,76,80,91,75,86,68,77,81,92,28,34,39,44};
|
||||
int j;
|
||||
|
||||
/* output each array element's value */
|
||||
for (j = 0; j < 35; j++ ) {
|
||||
g_led_config.flags[mods[j]] = LED_FLAG_MODIFIER;
|
||||
}
|
||||
|
||||
if (!rgb_matrix_is_enabled()) {
|
||||
rgb_matrix_enable();
|
||||
#ifdef CONSOLE_ENABLE
|
||||
uprintf("ERROR! RGB Matrix Enabled and wrote to EEPROM! -How was the RGB Matrix Disabled?");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
#ifdef CONSOLE_ENABLE
|
||||
switch(rgb_matrix_get_flags()) {
|
||||
case 0x08:
|
||||
uprintf("FLAG: LED_FLAG_INDICATOR ");
|
||||
break;
|
||||
case 0x04:
|
||||
uprintf("FLAG: LED_FLAG_KEYLIGHT ");
|
||||
break;
|
||||
case 0x02:
|
||||
uprintf("FLAG: LED_FLAG_UNDERGLOW ");
|
||||
break;
|
||||
case 0x01:
|
||||
uprintf("FLAG: LED_FLAG_MODIFIER ");
|
||||
break;
|
||||
case 0xFF:
|
||||
uprintf("FLAG: LED_FLAG_ALL ");
|
||||
break;
|
||||
case 0x00:
|
||||
uprintf("FLAG: LED_FLAG_NONE ");
|
||||
break;
|
||||
default:
|
||||
uprintf("FLAG Other: %u ", rgb_matrix_get_flags());
|
||||
}
|
||||
uprintf("Caps? %d Scroll? %d - MATRIX: %d\n", host_keyboard_led_state().caps_lock, host_keyboard_led_state().scroll_lock, rgb_matrix_is_enabled());
|
||||
#endif //CONSOLE_ENABLE
|
||||
|
||||
switch (keycode) {
|
||||
case RGB_TOG:
|
||||
if (record->event.pressed) {
|
||||
if (rgb_matrix_get_flags() == LED_FLAG_ALL) {
|
||||
rgb_matrix_set_flags(LED_FLAG_NONE);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
} else {
|
||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case LED_TILDE:
|
||||
rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR); // Can use RGB_M_P built-in keycode instead.
|
||||
break;
|
||||
case LED_1:
|
||||
rgb_matrix_mode(RGB_MATRIX_ALPHAS_MODS);
|
||||
break;
|
||||
case LED_2:
|
||||
rgb_matrix_mode(RGB_MATRIX_GRADIENT_UP_DOWN);
|
||||
break;
|
||||
case LED_3:
|
||||
rgb_matrix_mode(RGB_MATRIX_JELLYBEAN_RAINDROPS);
|
||||
break;
|
||||
case LED_4:
|
||||
rgb_matrix_mode(RGB_MATRIX_BAND_SAT);
|
||||
break;
|
||||
case LED_5:
|
||||
rgb_matrix_mode(RGB_MATRIX_BAND_VAL);
|
||||
break;
|
||||
case LED_6:
|
||||
rgb_matrix_mode(RGB_MATRIX_BAND_SPIRAL_VAL);
|
||||
break;
|
||||
case LED_7:
|
||||
rgb_matrix_mode(RGB_MATRIX_CYCLE_LEFT_RIGHT); // Can use RGB_M_R built-in keycode instead.
|
||||
break;
|
||||
case LED_8:
|
||||
rgb_matrix_mode(RGB_MATRIX_CYCLE_PINWHEEL); // Can use RGB_M_SW built-in keycode instead.
|
||||
break;
|
||||
case LED_9:
|
||||
rgb_matrix_mode(RGB_MATRIX_BREATHING); // Can use RGB_M_B built-in keycode instead.
|
||||
break;
|
||||
#ifdef RGB_MATRIX_KEYPRESSES // Reactive effects require RGB_MATRIX_KEYPRESSES in config.h
|
||||
case LED_0:
|
||||
rgb_matrix_mode(RGB_MATRIX_SOLID_REACTIVE_WIDE);
|
||||
break;
|
||||
#endif //RGB_MATRIX_KEYPRESSES
|
||||
#ifdef RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap and Rain require #define RGB_MATRIX_FRAMEBUFFER_EFFECTS in config.h
|
||||
case LED_MINS:
|
||||
rgb_matrix_mode(RGB_MATRIX_DIGITAL_RAIN);
|
||||
break;
|
||||
case LED_EQL:
|
||||
rgb_matrix_mode(RGB_MATRIX_TYPING_HEATMAP);
|
||||
break;
|
||||
#endif //RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
case QMKBEST:
|
||||
if (record->event.pressed) { // when keycode QMKBEST is pressed
|
||||
SEND_STRING("QMK rocks");
|
||||
} else { // when keycode QMKBEST key is released
|
||||
SEND_STRING("!!");
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void rgb_matrix_indicators_user(void) {
|
||||
if (host_keyboard_led_state().caps_lock) {
|
||||
set_rgb_caps_leds_on();
|
||||
} else {
|
||||
if (rgb_matrix_get_flags() == LED_FLAG_NONE){
|
||||
set_rgb_caps_leds_off();
|
||||
}
|
||||
}
|
||||
if (host_keyboard_led_state().scroll_lock) {
|
||||
set_rgb_scroll_leds_on();
|
||||
} else {
|
||||
if (rgb_matrix_get_flags() == LED_FLAG_NONE){
|
||||
set_rgb_scroll_leds_off();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// RGB led number layout, function of the key
|
||||
|
||||
// 67, led 01 0, ESC 6, F1 12, F2 18, F3 23, F4 28, F5 34, F6 39, F7 44, F8 50, F9 56, F10 61, F11 66, F12 69, Prt Rotary(Mute) 68, led 12
|
||||
// 70, led 02 1, ~ 7, 1 13, 2 19, 3 24, 4 29, 5 35, 6 40, 7 45, 8 51, 9 57, 0 62, -_ 78, (=+) 85, BackSpc 72, Home 71, led 13
|
||||
// 73, led 03 2, Tab 8, Q 14, W 20. E 25, R 30, T 36, Y 41, U 46, I 52, O 58, P 63, [{ 89, ]} 93, \| 75, PgUp 74, led 14
|
||||
// 76, led 04 3, Caps 9, A 15, S 21, D 26, F 31, G 37, H 42, J 47, K 53, L 59, ;: 64, '" 96, Enter 86, PgDn 77, led 15
|
||||
// 80, led 05 4, Sh_L 10, Z 16, X 22, C 27, V 32, B 38, N 43, M 48, ,< 54, .< 60, /? 90, Sh_R 94, Up 82, End 81, led 16
|
||||
// 83, led 06 5, Ct_L 11,Win_L 17, Alt_L 33, SPACE 49, Alt_R 55, FN 65, Ct_R 95, Left 97, Down 79, Right 84, led 17
|
||||
// 87, led 07 88, led 18
|
||||
// 91, led 08 92, led 19
|
||||
|
||||
static void set_rgb_caps_leds_on() {
|
||||
rgb_matrix_set_color(0, 255, 0, 0); //Escape Key
|
||||
rgb_matrix_set_color(3, 255, 0, 0); //capslock key
|
||||
rgb_matrix_set_color(5, 255, 0, 0); //Left CTRL key
|
||||
rgb_matrix_set_color(67, 255, 0, 0); //Left LED 01
|
||||
rgb_matrix_set_color(68, 255, 0, 0); //Right LED 12
|
||||
rgb_matrix_set_color(70, 255, 127, 0); //Left LED 02
|
||||
rgb_matrix_set_color(71, 255, 127, 0); //Right LED 13
|
||||
rgb_matrix_set_color(73, 255, 255, 0); //Left LED 03
|
||||
rgb_matrix_set_color(74, 255, 255, 0); //Right LED 14
|
||||
rgb_matrix_set_color(76, 0, 255, 0); //Left LED 04
|
||||
rgb_matrix_set_color(77, 0, 255, 0); //Right LED 15
|
||||
rgb_matrix_set_color(80, 0, 0, 255); //Left LED 05
|
||||
rgb_matrix_set_color(81, 0, 0, 255); //Right LED 16
|
||||
rgb_matrix_set_color(83, 46, 43, 95); //Left LED 06
|
||||
rgb_matrix_set_color(84, 46, 43, 95); //Right LED 17
|
||||
rgb_matrix_set_color(87, 139, 0, 255); //Left LED 07
|
||||
rgb_matrix_set_color(88, 139, 0, 255); //Right LED 18
|
||||
rgb_matrix_set_color(91, 255, 255, 255); //Left LED 08
|
||||
rgb_matrix_set_color(92, 255, 255, 255); //Right LED 19
|
||||
}
|
||||
|
||||
static void set_rgb_caps_leds_off() {
|
||||
rgb_matrix_set_color(0, 0, 0, 0); //Escape Key
|
||||
rgb_matrix_set_color(3, 0, 0, 0); //capslock key
|
||||
rgb_matrix_set_color(5, 0, 0, 0); //Left CTRL key
|
||||
rgb_matrix_set_color(67, 0, 0, 0); //Left LED 01
|
||||
rgb_matrix_set_color(68, 0, 0, 0); //Right LED 12
|
||||
rgb_matrix_set_color(70, 0, 0, 0); //Left LED 02
|
||||
rgb_matrix_set_color(71, 0, 0, 0); //Right LED 13
|
||||
rgb_matrix_set_color(73, 0, 0, 0); //Left LED 03
|
||||
rgb_matrix_set_color(74, 0, 0, 0); //Right LED 14
|
||||
rgb_matrix_set_color(76, 0, 0, 0); //Left LED 04
|
||||
rgb_matrix_set_color(77, 0, 0, 0); //Right LED 15
|
||||
rgb_matrix_set_color(80, 0, 0, 0); //Left LED 05
|
||||
rgb_matrix_set_color(81, 0, 0, 0); //Right LED 16
|
||||
rgb_matrix_set_color(83, 0, 0, 0); //Left LED 06
|
||||
rgb_matrix_set_color(84, 0, 0, 0); //Right LED 17
|
||||
rgb_matrix_set_color(87, 0, 0, 0); //Left LED 07
|
||||
rgb_matrix_set_color(88, 0, 0, 0); //Right LED 18
|
||||
rgb_matrix_set_color(91, 0, 0, 0); //Left LED 08
|
||||
rgb_matrix_set_color(92, 0, 0, 0); //Right LED 19
|
||||
}
|
||||
|
||||
static void set_rgb_scroll_leds_on() {
|
||||
rgb_matrix_set_color(72, 255, 255, 255); // Under Rotary (HOME)
|
||||
}
|
||||
|
||||
static void set_rgb_scroll_leds_off() {
|
||||
rgb_matrix_set_color(72, 0, 0, 0); // Under Rotary (HOME)
|
||||
}
|
||||
|
||||
#endif // RGB_MATRIX_ENABLE
|
63
gmmk/pro/ansi/keymaps/stickandgum/readme.md
Normal file
63
gmmk/pro/ansi/keymaps/stickandgum/readme.md
Normal file
@ -0,0 +1,63 @@
|
||||
# Glorious GMMK Pro / ANSI - Enhanced Keyboard
|
||||
|
||||
Tried to incorporate full featured GMMK Pro keyboard functionality without adding unnecessary features. Included Scroll Lock and Caps LEDs. NKRO can be toggled (Fn + N).
|
||||
SHIFT and Ctrl keys for scrolling with the rotary, Fn-keys also used for screen brightness, media, PowerOff, Suspend, App Shortcuts, and RGB Toggle/Modifications. Trimmed down the amazing (currently 41) built-in RGB effects down to about 13 or so reasonable effects that feel are just enough for your entertainment without being too excessive.
|
||||
|
||||
BIG thank you to [AndreBrait](https://github.com/andrebrait), And of course, @drashna and @filterpaper, @noroadsleft and the entire discord community.
|
||||
|
||||
* Keymap Creator: [StickAndGum](https://github.com/StickAndGum)
|
||||
* Keyboard: [More info on GMMK Pro](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black)
|
||||
* Controller [STM32F303CCT6](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
|
||||
|
||||
* Layout:
|
||||
![keyboard-layout](https://user-images.githubusercontent.com/22257588/130371838-875ba65b-88ea-4f81-a44a-bb24194c4989.png)
|
||||
|
||||
Features are as follows:
|
||||
|
||||
Rotary:
|
||||
- Default: Volume Up/Down
|
||||
- Shift: Mouse Wheel Down/Up
|
||||
- Ctrl: Page Down/Up
|
||||
|
||||
Top/Default Layer:
|
||||
- Print Screen -> Print Screen (Left of rotary)
|
||||
- Delete -> Home (Under Rotary)
|
||||
- Right Alt -> Delete (Right of Spacebar)
|
||||
- All other keys defaults.
|
||||
|
||||
Fn Layer:
|
||||
- Fn + \ -> Bootloader Mode (Can also hold ESC while powering up) - If hit by mistake, just unplug and replug in.
|
||||
- Fn + Backspace -> Insert
|
||||
- Fn + Print -> Pause/Break
|
||||
- Fn + Home -> Scroll Lock (Lights up white!)
|
||||
- Fn + Del (right of space) -> Right-Alt key.
|
||||
- Fn + RCtrl (right of Fn) -> Menu/App key.
|
||||
- Fn + N -> Toggle NKRO
|
||||
- Fn + End -> Power Off Computer
|
||||
- Fn + F12 -> Suspend Computer
|
||||
- Fn + F11 -> Wake Computer (Necessary on MAC OS?)
|
||||
- Fn + Page Up / Down -> Laptop Screen Brightness Up/Down
|
||||
- Fn + F1 - F5 -> Launch Calc, My Comp (Explorer), Media Player, Mail Client, Web Browser.
|
||||
- Fn + Up, Down, Left, Right Arrows -> Media Play, Stop, Previous, Next respectively.
|
||||
|
||||
- RGB Information:
|
||||
- Toggle for RGB via Fn-r (CAPS & ScrlLock still Light/Indicate)
|
||||
- CAPS: Side Light Rainbow Indicators and Left-side RED Indicators
|
||||
- Scroll-Lock: Fn-Home (Under Rotary) white indicator.
|
||||
- Modifiers identified around most of the edge of keyboard / Side lights also accented (Fn-1 looks GREAT IMHO)
|
||||
|
||||
- RGB Modifing (all via Function key) all via wasdqerf (common gaming keys) - easy to remember.
|
||||
- Fn + r -> Toggle RGB
|
||||
- Fn + w,s -> Brightness Up, Down
|
||||
- Fn + a,d -> Cycle Forward/Backward through rgb effects
|
||||
- Fn + q -> Increase or Decrease Saturation (use SHIFT key to lower)
|
||||
- Fn + e -> Increase or Decrease Hue/Color (use SHIFT key to lower)
|
||||
- Fn + f -> Increase or Decrease Speed (Using "F" for Fast!) (Use SHIFT for slower)
|
||||
- Fn + ~, 0-9, - = keys (2nd row keys) -> 13 RGB different effects arranged to my liking. Fn-1 is my favorite.
|
||||
- Fn + L -> My easter egg... "QMK rocks!"
|
||||
|
||||
- Known issues:
|
||||
- The Heatmap and Matrix FrameBuffer effects (Fn - and =) are a bit buggy - F-keys light up when they shouldn't and the Caps/Scroll lights don't turn off properly when using. Just change the effect to something else to fix this.
|
||||
- If you find a fix for this, please let me know.
|
||||
|
||||
See 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).
|
2
gmmk/pro/ansi/keymaps/stickandgum/rules.mk
Normal file
2
gmmk/pro/ansi/keymaps/stickandgum/rules.mk
Normal file
@ -0,0 +1,2 @@
|
||||
CONSOLE_ENABLE = no
|
||||
MOUSEKEY_ENABLE = yes
|
89
gmmk/pro/ansi/keymaps/via/keymap.c
Normal file
89
gmmk/pro/ansi/keymaps/via/keymap.c
Normal file
@ -0,0 +1,89 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] \ PgUp
|
||||
// Caps A S D F G H J K L ; " Enter PgDn
|
||||
// Sh_L Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
|
||||
// The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without
|
||||
// this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
|
||||
// cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
|
||||
// if that's your preference.
|
||||
//
|
||||
// To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and
|
||||
// it'll be back to normal when you plug it back in.
|
||||
//
|
||||
// This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO).
|
||||
// Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience.
|
||||
// Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts.
|
||||
[0] = LAYOUT(
|
||||
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_MUTE,
|
||||
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_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_PGUP,
|
||||
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_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
|
||||
_______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
|
||||
_______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
|
||||
),
|
||||
|
||||
[2] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[3] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif // ENCODER_ENABLE
|
1
gmmk/pro/ansi/keymaps/via/rules.mk
Normal file
1
gmmk/pro/ansi/keymaps/via/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
57
gmmk/pro/ansi/keymaps/wholesomeducky/keymap.c
Normal file
57
gmmk/pro/ansi/keymaps/wholesomeducky/keymap.c
Normal file
@ -0,0 +1,57 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] \ PgUp
|
||||
// Ct_L A S D F G H J K L ; " Enter PgDn
|
||||
// Sh_L Z X C V B N M , . ? Sh_R Up Win_R
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
|
||||
[0] = LAYOUT(
|
||||
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_MEDIA_PLAY_PAUSE,
|
||||
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_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_PGUP,
|
||||
KC_LCTL, 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_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_RGUI,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_END,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, RESET, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_END
|
||||
),
|
||||
|
||||
};
|
||||
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_MS_WH_RIGHT);
|
||||
} else {
|
||||
tap_code(KC_MS_WH_LEFT);
|
||||
}
|
||||
return true;
|
||||
}
|
73
gmmk/pro/ansi/keymaps/willwm/keymap.c
Normal file
73
gmmk/pro/ansi/keymaps/willwm/keymap.c
Normal file
@ -0,0 +1,73 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Del Rotary(Mute)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Home
|
||||
// Tab Q W E R T Y U I O P [ ] \ PgUp
|
||||
// Caps A S D F G H J K L ; " Enter PgDn
|
||||
// Sh_L Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
[0] = LAYOUT(
|
||||
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_DEL, KC_MUTE,
|
||||
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_HOME,
|
||||
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_PGUP,
|
||||
MO(1), 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_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR,
|
||||
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
|
||||
),
|
||||
|
||||
[2] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[3] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
return true;
|
||||
}
|
181
gmmk/pro/ansi/keymaps/willwm/keymap.json
Normal file
181
gmmk/pro/ansi/keymaps/willwm/keymap.json
Normal file
@ -0,0 +1,181 @@
|
||||
{
|
||||
"version": 1,
|
||||
"notes": "",
|
||||
"documentation": "\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n",
|
||||
"keyboard": "gmmk/pro",
|
||||
"keymap": "willwm",
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
[
|
||||
"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_DEL",
|
||||
"KC_MUTE",
|
||||
"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_HOME",
|
||||
"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_PGUP",
|
||||
"MO(1)",
|
||||
"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_PGDN",
|
||||
"KC_LSFT",
|
||||
"KC_Z",
|
||||
"KC_X",
|
||||
"KC_C",
|
||||
"KC_V",
|
||||
"KC_B",
|
||||
"KC_N",
|
||||
"KC_M",
|
||||
"KC_COMM",
|
||||
"KC_DOT",
|
||||
"KC_SLSH",
|
||||
"KC_RSFT",
|
||||
"KC_UP",
|
||||
"KC_END",
|
||||
"KC_LCTL",
|
||||
"KC_LGUI",
|
||||
"KC_LALT",
|
||||
"KC_SPC",
|
||||
"KC_RALT",
|
||||
"MO(1)",
|
||||
"KC_RCTL",
|
||||
"KC_LEFT",
|
||||
"KC_DOWN",
|
||||
"KC_RGHT"
|
||||
],
|
||||
[
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_INS",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_PSCR",
|
||||
"KC_CAPS",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"RESET",
|
||||
"KC_NO",
|
||||
"KC_TRNS",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_PGUP",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_NO",
|
||||
"KC_TRNS",
|
||||
"KC_NO",
|
||||
"KC_HOME",
|
||||
"KC_PGDN",
|
||||
"KC_END"
|
||||
]
|
||||
],
|
||||
"author": ""
|
||||
}
|
22
gmmk/pro/ansi/keymaps/willwm/readme.md
Normal file
22
gmmk/pro/ansi/keymaps/willwm/readme.md
Normal file
@ -0,0 +1,22 @@
|
||||
<img width="567" alt="layer0" src="https://user-images.githubusercontent.com/303042/118893170-da3e3280-b8b6-11eb-9459-f6c339c59bde.png">
|
||||
<img width="566" alt="layer1" src="https://user-images.githubusercontent.com/303042/118893191-e0341380-b8b6-11eb-8641-a4fdeeb7cbb2.png">
|
||||
|
||||
# willwm GMMK Pro Layout
|
||||
|
||||
Based on [gmmk/pro/keymaps/default](../default/keymap.c), with [VIA support](./rules.mk)
|
||||
|
||||
Layer 0
|
||||
|
||||
* Delete between F12 and rotary encoder (replaces PrtSc)
|
||||
* Home below rotary encoder (replaces Del)
|
||||
* MO(1) in default location and Caps Lock location
|
||||
|
||||
Layer 1
|
||||
|
||||
* Tab -> Caps Lock
|
||||
* Del -> Insert
|
||||
* Home -> PrtSc
|
||||
* Left Arrow -> Home
|
||||
* Right Arrow -> End
|
||||
* Up Arrow -> PgUp
|
||||
* Down Arrow -> PgDn
|
2
gmmk/pro/ansi/keymaps/willwm/rules.mk
Normal file
2
gmmk/pro/ansi/keymaps/willwm/rules.mk
Normal file
@ -0,0 +1,2 @@
|
||||
VIA_ENABLE = yes
|
||||
UNICODE_ENABLE = yes
|
37
gmmk/pro/ansi/readme.md
Normal file
37
gmmk/pro/ansi/readme.md
Normal file
@ -0,0 +1,37 @@
|
||||
# GMMK PRO (ANSI)
|
||||
|
||||
A tenkeyless 75% keyboard made and sold by Glorious LLC. Equipped with the STM32 ARM Cortex-M4 microcontroller, with support for rotary encoders and three additional layouts. [More info at Glorious](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation)
|
||||
|
||||
* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall)
|
||||
* Hardware Supported: GMMK Pro
|
||||
* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make gmmk/pro/ansi:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make gmmk/pro/ansi:default:flash
|
||||
|
||||
To reset the board into bootloader mode, do one of the following:
|
||||
|
||||
* Hold the Reset switch mounted on the bottom side of the PCB while connecting the USB cable
|
||||
* Hold the Escape key while connecting the USB cable (also erases persistent settings)
|
||||
* Fn+Backslash will reset the board to bootloader mode if you have flashed the default QMK keymap
|
||||
|
||||
See 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).
|
||||
|
||||
## Case Screw Replacements
|
||||
|
||||
Many users report stripped case screws when disassembling the board.
|
||||
|
||||
The stock case screws are:
|
||||
* Thread: M2
|
||||
* Thread length: ~5 mm
|
||||
* Head diameter: ~3.8 mm
|
||||
* Head counterbore diameter: ~4.0 mm
|
||||
* Head counterbore depth: ~1.9 mm
|
||||
|
||||
Most M2x5mm screws should fit fine, although it's best to ensure that the screw head will fit inside the counterbore.
|
||||
For reference, [this hex socket head screw](https://www.mcmaster.com/91292A005/) from McMaster-Carr should fit nearly flush (head will protrude above the counterbore by ~0.1 mm).
|
25
gmmk/pro/ansi/rules.mk
Normal file
25
gmmk/pro/ansi/rules.mk
Normal file
@ -0,0 +1,25 @@
|
||||
# MCU name
|
||||
MCU = STM32F303
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
ENCODER_ENABLE = yes
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
RGB_MATRIX_DRIVER = AW20216
|
78
gmmk/pro/config.h
Normal file
78
gmmk/pro/config.h
Normal file
@ -0,0 +1,78 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define DEVICE_VER 0x0001
|
||||
#define VENDOR_ID 0x320F
|
||||
#define PRODUCT_ID 0x5044
|
||||
#define MANUFACTURER Glorious
|
||||
#define PRODUCT GMMK Pro
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 11
|
||||
#define MATRIX_COLS 8
|
||||
|
||||
#define MATRIX_ROW_PINS \
|
||||
{ B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10 }
|
||||
#define MATRIX_COL_PINS \
|
||||
{ A0, A1, A2, A3, A4, A8, A9, A10 }
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Hold ESC on start up to clear EEPROM and boot into bootloader mode */
|
||||
#define BOOTMAGIC_LITE_ROW 1
|
||||
#define BOOTMAGIC_LITE_COLUMN 3
|
||||
|
||||
#define TAP_CODE_DELAY 10
|
||||
#define ENCODERS_PAD_A \
|
||||
{ C15 }
|
||||
#define ENCODERS_PAD_B \
|
||||
{ C14 }
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* SPI Config for LED Driver */
|
||||
#define SPI_DRIVER SPID1
|
||||
#define SPI_SCK_PIN A5
|
||||
#define SPI_MOSI_PIN A6
|
||||
#define SPI_MISO_PIN A7
|
||||
|
||||
#define DRIVER_1_CS B13
|
||||
#define DRIVER_2_CS B14
|
||||
#define DRIVER_1_EN C13
|
||||
#define DRIVER_2_EN C13
|
||||
|
||||
#define DRIVER_COUNT 2
|
||||
|
||||
/* 1000Hz USB polling - it's the default on stock firmware */
|
||||
#define USB_POLLING_INTERVAL_MS 1
|
||||
|
||||
/* Send up to 4 key press events per scan */
|
||||
#define QMK_KEYS_PER_SCAN 4
|
||||
|
||||
/* Set debounce time to 5ms */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* Force NKRO on boot up regardless of the setting saved in the EEPROM (uncomment to enable it) */
|
||||
// #define FORCE_NKRO
|
7
gmmk/pro/halconf.h
Normal file
7
gmmk/pro/halconf.h
Normal file
@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_SPI TRUE
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
|
||||
#include_next <halconf.h>
|
23
gmmk/pro/iso/config.h
Normal file
23
gmmk/pro/iso/config.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* Copyright 2021 Jasper Chan
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
#define DRIVER_1_LED_TOTAL 66
|
||||
#define DRIVER_2_LED_TOTAL 33
|
||||
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
|
112
gmmk/pro/iso/info.json
Normal file
112
gmmk/pro/iso/info.json
Normal file
@ -0,0 +1,112 @@
|
||||
{
|
||||
"keyboard_name": "GMMK Pro (ISO)",
|
||||
"url": "https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation",
|
||||
"maintainer": "GloriousThrall",
|
||||
"width": 16.5,
|
||||
"height": 6.5,
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"Esc", "x":0, "y":0},
|
||||
|
||||
{"label":"F1", "x":1.25, "y":0},
|
||||
{"label":"F2", "x":2.25, "y":0},
|
||||
{"label":"F3", "x":3.25, "y":0},
|
||||
{"label":"F4", "x":4.25, "y":0},
|
||||
|
||||
{"label":"F5", "x":5.5, "y":0},
|
||||
{"label":"F6", "x":6.5, "y":0},
|
||||
{"label":"F7", "x":7.5, "y":0},
|
||||
{"label":"F8", "x":8.5, "y":0},
|
||||
|
||||
{"label":"F9", "x":9.75, "y":0},
|
||||
{"label":"F10", "x":10.75, "y":0},
|
||||
{"label":"F11", "x":11.75, "y":0},
|
||||
{"label":"F12", "x":12.75, "y":0},
|
||||
|
||||
{"label":"Printscreen", "x":14, "y":0},
|
||||
{"label":"Rotary", "x":15.5, "y":0},
|
||||
|
||||
{"label":"`", "x":0, "y":1.25},
|
||||
{"label":"1", "x":1, "y":1.25},
|
||||
{"label":"2", "x":2, "y":1.25},
|
||||
{"label":"3", "x":3, "y":1.25},
|
||||
{"label":"4", "x":4, "y":1.25},
|
||||
{"label":"5", "x":5, "y":1.25},
|
||||
{"label":"6", "x":6, "y":1.25},
|
||||
{"label":"7", "x":7, "y":1.25},
|
||||
{"label":"8", "x":8, "y":1.25},
|
||||
{"label":"9", "x":9, "y":1.25},
|
||||
{"label":"0", "x":10, "y":1.25},
|
||||
{"label":"-", "x":11, "y":1.25},
|
||||
{"label":"=", "x":12, "y":1.25},
|
||||
{"label":"Backspace", "x":13, "y":1.25, "w":2},
|
||||
|
||||
{"label":"Delete", "x":15.5, "y":1.25},
|
||||
|
||||
{"label":"Tab", "x":0, "y":2.25, "w":1.5},
|
||||
{"label":"Q", "x":1.5, "y":2.25},
|
||||
{"label":"W", "x":2.5, "y":2.25},
|
||||
{"label":"E", "x":3.5, "y":2.25},
|
||||
{"label":"R", "x":4.5, "y":2.25},
|
||||
{"label":"T", "x":5.5, "y":2.25},
|
||||
{"label":"Y", "x":6.5, "y":2.25},
|
||||
{"label":"U", "x":7.5, "y":2.25},
|
||||
{"label":"I", "x":8.5, "y":2.25},
|
||||
{"label":"O", "x":9.5, "y":2.25},
|
||||
{"label":"P", "x":10.5, "y":2.25},
|
||||
{"label":"[", "x":11.5, "y":2.25},
|
||||
{"label":"]", "x":12.5, "y":2.25},
|
||||
|
||||
{"label":"Page Up", "x":15.5, "y":2.25},
|
||||
|
||||
{"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
|
||||
{"label":"A", "x":1.75, "y":3.25},
|
||||
{"label":"S", "x":2.75, "y":3.25},
|
||||
{"label":"D", "x":3.75, "y":3.25},
|
||||
{"label":"F", "x":4.75, "y":3.25},
|
||||
{"label":"G", "x":5.75, "y":3.25},
|
||||
{"label":"H", "x":6.75, "y":3.25},
|
||||
{"label":"J", "x":7.75, "y":3.25},
|
||||
{"label":"K", "x":8.75, "y":3.25},
|
||||
{"label":"L", "x":9.75, "y":3.25},
|
||||
{"label":";", "x":10.75, "y":3.25},
|
||||
{"label":"'", "x":11.75, "y":3.25},
|
||||
{"label":"Iso #", "x":12.75, "y":3.25},
|
||||
{"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
|
||||
|
||||
{"label":"Page Down", "x":15.5, "y":3.25},
|
||||
|
||||
{"label":"Shift", "x":0, "y":4.25, "w":1.25},
|
||||
{"label":"Iso \\", "x":1.25, "y":4.25},
|
||||
{"label":"Z", "x":2.25, "y":4.25},
|
||||
{"label":"X", "x":3.25, "y":4.25},
|
||||
{"label":"C", "x":4.25, "y":4.25},
|
||||
{"label":"V", "x":5.25, "y":4.25},
|
||||
{"label":"B", "x":6.25, "y":4.25},
|
||||
{"label":"N", "x":7.25, "y":4.25},
|
||||
{"label":"M", "x":8.25, "y":4.25},
|
||||
{"label":",", "x":9.25, "y":4.25},
|
||||
{"label":".", "x":10.25, "y":4.25},
|
||||
{"label":"/", "x":11.25, "y":4.25},
|
||||
{"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
|
||||
|
||||
{"label":"Up", "x":14.25, "y":4.5},
|
||||
|
||||
{"label":"End", "x":15.5, "y":4.25},
|
||||
|
||||
{"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
|
||||
{"label":"GUI", "x":1.25, "y":5.25, "w":1.25},
|
||||
{"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
|
||||
{"label":"Space", "x":3.75, "y":5.25, "w":6.25},
|
||||
{"label":"Alt", "x":10, "y":5.25},
|
||||
{"label":"Fn", "x":11, "y":5.25},
|
||||
{"label":"Ctrl", "x":12, "y":5.25},
|
||||
|
||||
{"label":"Left", "x":13.25, "y":5.5},
|
||||
{"label":"Down", "x":14.25, "y":5.5},
|
||||
{"label":"Right", "x":15.25, "y":5.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
243
gmmk/pro/iso/iso.c
Normal file
243
gmmk/pro/iso/iso.c
Normal file
@ -0,0 +1,243 @@
|
||||
/* Copyright 2021 Gigahawk
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "iso.h"
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
// clang-format off
|
||||
led_config_t g_led_config = {{
|
||||
{ 4, NO_LED, NO_LED, 96, 65, 80, 5, 28 },
|
||||
{ 8, 2, 9, 0, 10, 76, 1, 7 },
|
||||
{ 14, 3, 15, 67, 16, 87, 6, 13 },
|
||||
{ 20, 18, 21, 23, 22, 94, 12, 19 },
|
||||
{ 25, 30, 26, 31, 27, 32, 29, 24 },
|
||||
{ 41, 36, 42, 37, 43, 38, 35, 40 },
|
||||
{ 46, 90, 47, 34, 48, 73, 79, 45 },
|
||||
{ 52, 39, 53, 98, 54, 83, 44, 51 },
|
||||
{ 58, 63, 59, 64, 95, 60, 62, 57 },
|
||||
{ 11, 91, 55, 17, 33, 49, NO_LED, 70 },
|
||||
{ NO_LED, 86, NO_LED, 61, 97, 66, 50, 56 }
|
||||
}, {
|
||||
{0, 0}, // 0, ESC, k13
|
||||
{0, 15}, // 1, `, k16
|
||||
{4, 26}, // 2, Tab, k11
|
||||
{5, 38}, // 3, Caps, k21
|
||||
{2, 49}, // 4, Sh_L, k00
|
||||
{2, 61}, // 5, Ct_L, k06
|
||||
{18, 0}, // 6, F1, k26
|
||||
{14, 15}, // 7, 1, k17
|
||||
{22, 26}, // 8, Q, k10
|
||||
{25, 38}, // 9, A, k12
|
||||
{33, 49}, // 10, Z, k14
|
||||
{20, 61}, // 11, Win_L, k90
|
||||
{33, 0}, // 12, F2, k36
|
||||
{29, 15}, // 13, 2, k27
|
||||
{36, 26}, // 14, W, k20
|
||||
{40, 38}, // 15, S, k22
|
||||
{47, 49}, // 16, X, k24
|
||||
{38, 61}, // 17, Alt_L, k93
|
||||
{47, 0}, // 18, F3, k31
|
||||
{43, 15}, // 19, 3, k37
|
||||
{51, 26}, // 20, E, k30
|
||||
{54, 38}, // 21, D, k32
|
||||
{61, 49}, // 22, C, k34
|
||||
{61, 0}, // 23, F4, k33
|
||||
{58, 15}, // 24, 4, k47
|
||||
{65, 26}, // 25, R, k40
|
||||
{69, 38}, // 26, F, k42
|
||||
{76, 49}, // 27, V, k44
|
||||
{79, 0}, // 28, F5, k07
|
||||
{72, 15}, // 29, 5, k46
|
||||
{79, 26}, // 30, T, k41
|
||||
{83, 38}, // 31, G, k43
|
||||
{90, 49}, // 32, B, k45
|
||||
{92, 61}, // 33, SPACE, k94
|
||||
{94, 0}, // 34, F6, k63
|
||||
{87, 15}, // 35, 6, k56
|
||||
{94, 26}, // 36, Y, k51
|
||||
{98, 38}, // 37, H, k53
|
||||
{105, 49}, // 38, N, k55
|
||||
{108, 0}, // 39, F7, k71
|
||||
{101, 15}, // 40, 7, k57
|
||||
{108, 26}, // 41, U, k50
|
||||
{112, 38}, // 42, J, k52
|
||||
{119, 49}, // 43, M, k54
|
||||
{123, 0}, // 44, F8, k76
|
||||
{116, 15}, // 45, 8, k67
|
||||
{123, 26}, // 46, I, k60
|
||||
{126, 38}, // 47, K, k62
|
||||
{134, 49}, // 48, ,, k64
|
||||
{145, 61}, // 49, Alt_R, k95
|
||||
{141, 0}, // 50, F9, ka6
|
||||
{130, 15}, // 51, 9, k77
|
||||
{137, 26}, // 52, O, k70
|
||||
{141, 38}, // 53, L, k72
|
||||
{148, 49}, // 54, ., k74
|
||||
{159, 61}, // 55, FN, k92
|
||||
{155, 0}, // 56, F10, ka7
|
||||
{145, 15}, // 57, 0, k87
|
||||
{152, 26}, // 58, P, k80
|
||||
{155, 38}, // 59, ;, k82
|
||||
{163, 49}, // 60, /, k85
|
||||
{170, 0}, // 61, F11, ka3
|
||||
{159, 15}, // 62, -, k86
|
||||
{166, 26}, // 63, [, k81
|
||||
{170, 38}, // 64, ", k83
|
||||
{173, 61}, // 65, Ct_R, k04
|
||||
{184, 0}, // 66, F12, ka5
|
||||
{18, 49}, // 67, \, k23
|
||||
{0, 8}, // 68, LED, l01
|
||||
{224, 8}, // 69, LED, l11
|
||||
{202, 0}, // 70, Prt, k97
|
||||
{0, 15}, // 71, LED, l02
|
||||
{224, 15}, // 72, LED, l12
|
||||
{224, 15}, // 73, Del, k65
|
||||
{0, 21}, // 74, LED, l03
|
||||
{224, 21}, // 75, LED, l13
|
||||
{224, 26}, // 76, PgUp, k15
|
||||
{0, 28}, // 77, LED, l04
|
||||
{224, 28}, // 78, LED, l14
|
||||
{173, 15}, // 79, =, k66
|
||||
{220, 64}, // 80, Right, k05
|
||||
{0, 35}, // 81, LED, l05
|
||||
{224, 35}, // 82, LED, l15
|
||||
{224, 49}, // 83, End, k75
|
||||
{0, 42}, // 84, LED, l06
|
||||
{224, 42}, // 85, LED, l16
|
||||
{195, 15}, // 86, BSpc, ka1
|
||||
{224, 38}, // 87, PgDn, k25
|
||||
{0, 48}, // 88, LED, l07
|
||||
{224, 48}, // 89, LED, l17
|
||||
{181, 26}, // 90, ], k61
|
||||
{182, 49}, // 91, Sh_R, k91
|
||||
{0, 55}, // 92, LED, l08
|
||||
{224, 55}, // 93, LED, l18
|
||||
{206, 52}, // 94, Up, k35
|
||||
{184, 38}, // 95, #, k84
|
||||
{191, 64}, // 96, Left, k03
|
||||
{201, 26}, // 97, Enter, ka4
|
||||
{206, 64}, // 98, Down, k73
|
||||
}, {
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, 2, 2, 4, 2,
|
||||
2, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4
|
||||
}};
|
||||
|
||||
const aw_led g_aw_leds[DRIVER_LED_TOTAL] = {
|
||||
{0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13
|
||||
{0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16
|
||||
{0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11
|
||||
{0, CS10_SW1, CS11_SW1, CS12_SW1}, // 3, Caps, k21
|
||||
{0, CS13_SW1, CS14_SW1, CS15_SW1}, // 4, Sh_L, k00
|
||||
{0, CS16_SW1, CS17_SW1, CS18_SW1}, // 5, Ct_L, k06
|
||||
{0, CS1_SW2, CS2_SW2, CS3_SW2}, // 6, F1, k26
|
||||
{0, CS4_SW2, CS5_SW2, CS6_SW2}, // 7, 1, k17
|
||||
{0, CS7_SW2, CS8_SW2, CS9_SW2}, // 8, Q, k10
|
||||
{0, CS10_SW2, CS11_SW2, CS12_SW2}, // 9, A, k12
|
||||
{0, CS13_SW2, CS14_SW2, CS15_SW2}, // 10, Z, k14
|
||||
{0, CS16_SW2, CS17_SW2, CS18_SW2}, // 11, Win_L, k90
|
||||
{0, CS1_SW3, CS2_SW3, CS3_SW3}, // 12, F2, k36
|
||||
{0, CS4_SW3, CS5_SW3, CS6_SW3}, // 13, 2, k27
|
||||
{0, CS7_SW3, CS8_SW3, CS9_SW3}, // 14, W, k20
|
||||
{0, CS10_SW3, CS11_SW3, CS12_SW3}, // 15, S, k22
|
||||
{0, CS13_SW3, CS14_SW3, CS15_SW3}, // 16, X, k24
|
||||
{0, CS16_SW3, CS17_SW3, CS18_SW3}, // 17, Alt_L, k93
|
||||
{0, CS1_SW4, CS2_SW4, CS3_SW4}, // 18, F3, k31
|
||||
{0, CS4_SW4, CS5_SW4, CS6_SW4}, // 19, 3, k37
|
||||
{0, CS7_SW4, CS8_SW4, CS9_SW4}, // 20, E, k30
|
||||
{0, CS10_SW4, CS11_SW4, CS12_SW4}, // 21, D, k32
|
||||
{0, CS13_SW4, CS14_SW4, CS15_SW4}, // 22, C, k34
|
||||
{0, CS1_SW5, CS2_SW5, CS3_SW5}, // 23, F4, k33
|
||||
{0, CS4_SW5, CS5_SW5, CS6_SW5}, // 24, 4, k47
|
||||
{0, CS7_SW5, CS8_SW5, CS9_SW5}, // 25, R, k40
|
||||
{0, CS10_SW5, CS11_SW5, CS12_SW5}, // 26, F, k42
|
||||
{0, CS13_SW5, CS14_SW5, CS15_SW5}, // 27, V, k44
|
||||
{0, CS1_SW6, CS2_SW6, CS3_SW6}, // 28, F5, k07
|
||||
{0, CS4_SW6, CS5_SW6, CS6_SW6}, // 29, 5, k46
|
||||
{0, CS7_SW6, CS8_SW6, CS9_SW6}, // 30, T, k41
|
||||
{0, CS10_SW6, CS11_SW6, CS12_SW6}, // 31, G, k43
|
||||
{0, CS13_SW6, CS14_SW6, CS15_SW6}, // 32, B, k45
|
||||
{0, CS16_SW6, CS17_SW6, CS18_SW6}, // 33, SPACE, k94
|
||||
{0, CS1_SW7, CS2_SW7, CS3_SW7}, // 34, F6, k63
|
||||
{0, CS4_SW7, CS5_SW7, CS6_SW7}, // 35, 6, k56
|
||||
{0, CS7_SW7, CS8_SW7, CS9_SW7}, // 36, Y, k51
|
||||
{0, CS10_SW7, CS11_SW7, CS12_SW7}, // 37, H, k53
|
||||
{0, CS13_SW7, CS14_SW7, CS15_SW7}, // 38, N, k55
|
||||
{0, CS1_SW8, CS2_SW8, CS3_SW8}, // 39, F7, k71
|
||||
{0, CS4_SW8, CS5_SW8, CS6_SW8}, // 40, 7, k57
|
||||
{0, CS7_SW8, CS8_SW8, CS9_SW8}, // 41, U, k50
|
||||
{0, CS10_SW8, CS11_SW8, CS12_SW8}, // 42, J, k52
|
||||
{0, CS13_SW8, CS14_SW8, CS15_SW8}, // 43, M, k54
|
||||
{0, CS1_SW9, CS2_SW9, CS3_SW9}, // 44, F8, k76
|
||||
{0, CS4_SW9, CS5_SW9, CS6_SW9}, // 45, 8, k67
|
||||
{0, CS7_SW9, CS8_SW9, CS9_SW9}, // 46, I, k60
|
||||
{0, CS10_SW9, CS11_SW9, CS12_SW9}, // 47, K, k62
|
||||
{0, CS13_SW9, CS14_SW9, CS15_SW9}, // 48, ,, k64
|
||||
{0, CS16_SW9, CS17_SW9, CS18_SW9}, // 49, Alt_R, k95
|
||||
{0, CS1_SW10, CS2_SW10, CS3_SW10}, // 50, F9, ka6
|
||||
{0, CS4_SW10, CS5_SW10, CS6_SW10}, // 51, 9, k77
|
||||
{0, CS7_SW10, CS8_SW10, CS9_SW10}, // 52, O, k70
|
||||
{0, CS10_SW10, CS11_SW10, CS12_SW10}, // 53, L, k72
|
||||
{0, CS13_SW10, CS14_SW10, CS15_SW10}, // 54, ., k74
|
||||
{0, CS16_SW10, CS17_SW10, CS18_SW10}, // 55, FN, k92
|
||||
{0, CS1_SW11, CS2_SW11, CS3_SW11}, // 56, F10, ka7
|
||||
{0, CS4_SW11, CS5_SW11, CS6_SW11}, // 57, 0, k87
|
||||
{0, CS7_SW11, CS8_SW11, CS9_SW11}, // 58, P, k80
|
||||
{0, CS10_SW11, CS11_SW11, CS12_SW11}, // 59, ;, k82
|
||||
{0, CS13_SW11, CS14_SW11, CS15_SW11}, // 60, ?, k85
|
||||
{0, CS1_SW12, CS2_SW12, CS3_SW12}, // 61, F11, ka3
|
||||
{0, CS4_SW12, CS5_SW12, CS6_SW12}, // 62, -, k86
|
||||
{0, CS7_SW12, CS8_SW12, CS9_SW12}, // 63, [, k81
|
||||
{0, CS10_SW12, CS11_SW12, CS12_SW12}, // 64, ", k83
|
||||
{0, CS16_SW12, CS17_SW12, CS18_SW12}, // 65, Ct_R, k04
|
||||
|
||||
{1, CS1_SW1, CS2_SW1, CS3_SW1}, // 66, F12, ka5
|
||||
{1, CS4_SW1, CS5_SW1, CS6_SW1}, // 67, \, k23
|
||||
{1, CS13_SW1, CS14_SW1, CS15_SW1}, // 68, LED, l01
|
||||
{1, CS16_SW1, CS17_SW1, CS18_SW1}, // 69, LED, l11
|
||||
{1, CS4_SW2, CS5_SW2, CS6_SW2}, // 70, Prt, k97
|
||||
{1, CS13_SW2, CS14_SW2, CS15_SW2}, // 71, LED, l02
|
||||
{1, CS16_SW2, CS17_SW2, CS18_SW2}, // 72, LED, l12
|
||||
{1, CS4_SW3, CS5_SW3, CS6_SW3}, // 73, Del, k65
|
||||
{1, CS13_SW3, CS14_SW3, CS15_SW3}, // 74, LED, l03
|
||||
{1, CS16_SW3, CS17_SW3, CS18_SW3}, // 75, LED, l13
|
||||
{1, CS4_SW4, CS5_SW4, CS6_SW4}, // 76, PgUp, k15
|
||||
{1, CS13_SW4, CS14_SW4, CS15_SW4}, // 77, LED, l04
|
||||
{1, CS16_SW4, CS17_SW4, CS18_SW4}, // 78, LED, l14
|
||||
{1, CS1_SW5, CS2_SW5, CS3_SW5}, // 79, =, k66
|
||||
{1, CS10_SW5, CS11_SW5, CS12_SW5}, // 80, Right, k05
|
||||
{1, CS13_SW5, CS14_SW5, CS15_SW5}, // 81, LED, l05
|
||||
{1, CS16_SW5, CS17_SW5, CS18_SW5}, // 82, LED, l15
|
||||
{1, CS4_SW6, CS5_SW6, CS6_SW6}, // 83, End, k75
|
||||
{1, CS13_SW6, CS14_SW6, CS15_SW6}, // 84, LED, l06
|
||||
{1, CS16_SW6, CS17_SW6, CS18_SW6}, // 85, LED, l16
|
||||
{1, CS1_SW7, CS2_SW7, CS3_SW7}, // 86, BSpc, ka1
|
||||
{1, CS4_SW7, CS5_SW7, CS6_SW7}, // 87, PgDn, k25
|
||||
{1, CS13_SW7, CS14_SW7, CS15_SW7}, // 88, LED, l07
|
||||
{1, CS16_SW7, CS17_SW7, CS18_SW7}, // 89, LED, l17
|
||||
{1, CS1_SW8, CS2_SW8, CS3_SW8}, // 90, ], k61
|
||||
{1, CS4_SW8, CS5_SW8, CS6_SW8}, // 91, Sh_R, k91
|
||||
{1, CS13_SW8, CS14_SW8, CS15_SW8}, // 92, LED, l08
|
||||
{1, CS16_SW8, CS17_SW8, CS18_SW8}, // 93, LED, l18
|
||||
{1, CS4_SW9, CS5_SW9, CS6_SW9}, // 94, Up, k35
|
||||
{1, CS1_SW10, CS2_SW10, CS3_SW10}, // 95, #, k84
|
||||
{1, CS4_SW10, CS5_SW10, CS6_SW10}, // 96, Left, k03
|
||||
{1, CS1_SW11, CS2_SW11, CS3_SW11}, // 97, Enter, ka4
|
||||
{1, CS4_SW11, CS5_SW11, CS6_SW11}, // 98, Down, k73
|
||||
};
|
||||
// clang-format on
|
||||
#endif
|
52
gmmk/pro/iso/iso.h
Normal file
52
gmmk/pro/iso/iso.h
Normal file
@ -0,0 +1,52 @@
|
||||
/* Copyright 2021 Gigahawk
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "pro.h"
|
||||
|
||||
#define ___ KC_NO
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
||||
// ` 1 2 3 4 5 6 7 8 9 0 - = BSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] PgUp
|
||||
// Caps A S D F G H J K L ; ' # Enter PgDn
|
||||
// Sh_L \ Z X C V B N M , . / Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
// clang-format off
|
||||
#define LAYOUT( \
|
||||
k13, k26, k36, k31, k33, k07, k63, k71, k76, ka6, ka7, ka3, ka5, k97, k01, \
|
||||
k16, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, ka1, k65, \
|
||||
k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, k15, \
|
||||
k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, k84, ka4, k25, \
|
||||
k00, k23, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k91, k35, k75, \
|
||||
k06, k90, k93, k94, k95, k92, k04, k03, k73, k05 \
|
||||
) \
|
||||
{ \
|
||||
{ k00, k01, ___, k03, k04, k05, k06, k07}, \
|
||||
{ k10, k11, k12, k13, k14, k15, k16, k17}, \
|
||||
{ k20, k21, k22, k23, k24, k25, k26, k27}, \
|
||||
{ k30, k31, k32, k33, k34, k35, k36, k37}, \
|
||||
{ k40, k41, k42, k43, k44, k45, k46, k47}, \
|
||||
{ k50, k51, k52, k53, k54, k55, k56, k57}, \
|
||||
{ k60, k61, k62, k63, k64, k65, k66, k67}, \
|
||||
{ k70, k71, k72, k73, k74, k75, k76, k77}, \
|
||||
{ k80, k81, k82, k83, k84, k85, k86, k87}, \
|
||||
{ k90, k91, k92, k93, k94, k95, ___, k97}, \
|
||||
{ ___, ka1, ___, ka3, ka4, ka5, ka6, ka7} \
|
||||
}
|
||||
// clang-format on
|
72
gmmk/pro/iso/keymaps/default/keymap.c
Normal file
72
gmmk/pro/iso/keymaps/default/keymap.c
Normal file
@ -0,0 +1,72 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] PgUp
|
||||
// Caps A S D F G H J K L ; " # Enter PgDn
|
||||
// Sh_L / Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
|
||||
// The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without
|
||||
// this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
|
||||
// cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
|
||||
// if that's your preference.
|
||||
//
|
||||
// To put the keyboard in bootloader mode, use FN+backspace. If you accidentally put it into bootloader, you can just unplug the USB cable and
|
||||
// it'll be back to normal when you plug it back in.
|
||||
//
|
||||
// This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO).
|
||||
// Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience.
|
||||
// Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts.
|
||||
[0] = LAYOUT(
|
||||
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_MUTE,
|
||||
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_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_PGUP,
|
||||
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_NUHS, KC_ENT, KC_PGDN,
|
||||
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_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
|
||||
_______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
|
||||
_______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
|
||||
),
|
||||
|
||||
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
115
gmmk/pro/iso/keymaps/rodude123s_gmmk_pro/keymap.c
Normal file
115
gmmk/pro/iso/keymaps/rodude123s_gmmk_pro/keymap.c
Normal file
@ -0,0 +1,115 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum custom_keycodes
|
||||
{
|
||||
KC_DBL0 = SAFE_RANGE,
|
||||
KC_YELLOW,
|
||||
KC_GREEN,
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record)
|
||||
{
|
||||
switch (keycode)
|
||||
{
|
||||
case KC_DBL0:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
// when keycode KC_DBL0 is pressed
|
||||
SEND_STRING("00");
|
||||
}
|
||||
else
|
||||
{
|
||||
// when keycode KC_DBL0 is released
|
||||
}
|
||||
break;
|
||||
|
||||
case KC_YELLOW:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
//when yellow key is pressed
|
||||
rgb_matrix_enable_noeeprom();
|
||||
rgb_matrix_sethsv_noeeprom(HSV_YELLOW);
|
||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
|
||||
}
|
||||
else
|
||||
{
|
||||
//when yellow key is not pressed
|
||||
}
|
||||
break;
|
||||
|
||||
case KC_GREEN:
|
||||
if (record->event.pressed)
|
||||
{
|
||||
//when green key is pressed
|
||||
rgb_matrix_enable_noeeprom();
|
||||
rgb_matrix_sethsv_noeeprom(HSV_GREEN);
|
||||
rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
|
||||
}
|
||||
else
|
||||
{
|
||||
//when green key is not poressed
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] PgUp
|
||||
// Caps A S D F G H J K L ; " # Enter PgDn
|
||||
// Sh_L / Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
|
||||
// The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without
|
||||
// this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
|
||||
// cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
|
||||
// if that's your preference.
|
||||
//
|
||||
// To put the keyboard in bootloader mode, use FN+backspace. If you accidentally put it into bootloader, you can just unplug the USB cable and
|
||||
// it'll be back to normal when you plug it back in.
|
||||
//
|
||||
// This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO).
|
||||
// Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience.
|
||||
// Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts.
|
||||
[0] = LAYOUT(
|
||||
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, TG(1), KC_MPLY,
|
||||
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_MINS, KC_BSPC, KC_PSCR,
|
||||
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_DEL,
|
||||
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_NUHS, KC_ENT, KC_HOME,
|
||||
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_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(2), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
[1] = LAYOUT(
|
||||
KC_ESC, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_TRNS, KC_MPLY,
|
||||
KC_GRV, TG(0), KC_TRNS, TG(2), KC_4, KC_5, KC_6, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_MINS, KC_MINS, KC_BSPC, KC_PSCR,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_P4, KC_P5, KC_P6, KC_PAST, KC_LBRC, KC_RBRC, KC_DEL,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_GRV, KC_NUHS, KC_ENT, KC_HOME,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_P0, KC_DBL0, KC_PDOT, KC_PPLS, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), KC_NLCK, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
[2] = LAYOUT(
|
||||
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_TRNS, KC_MPLY,
|
||||
KC_GRV, TG(0), TG(1), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC, KC_PSCR,
|
||||
KC_TAB, BL_TOGG, BL_ON, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_DEL,
|
||||
KC_CAPS, RGB_TOG, KC_YELLOW, KC_GREEN, KC_TRNS, KC_MYCM, KC_MAIL, KC_CALC, KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, RESET, KC_ENT, KC_HOME,
|
||||
KC_LSFT, KC_TRNS, KC_MPRV, KC_MNXT, KC_MSEL, KC_TRNS, KC_BRIU, KC_BRID, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT)
|
||||
|
||||
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
91
gmmk/pro/iso/keymaps/via/keymap.c
Normal file
91
gmmk/pro/iso/keymaps/via/keymap.c
Normal file
@ -0,0 +1,91 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] PgUp
|
||||
// Caps A S D F G H J K L ; " # Enter PgDn
|
||||
// Sh_L / Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
|
||||
// The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without
|
||||
// this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
|
||||
// cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
|
||||
// if that's your preference.
|
||||
//
|
||||
// To put the keyboard in bootloader mode, use FN+backspace. If you accidentally put it into bootloader, you can just unplug the USB cable and
|
||||
// it'll be back to normal when you plug it back in.
|
||||
//
|
||||
// This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO).
|
||||
// Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience.
|
||||
// Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts.
|
||||
[0] = LAYOUT(
|
||||
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_MUTE,
|
||||
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_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_PGUP,
|
||||
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_NUHS, KC_ENT, KC_PGDN,
|
||||
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_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
|
||||
_______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
|
||||
_______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
|
||||
),
|
||||
|
||||
|
||||
[2] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[3] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif // ENCODER_ENABLE
|
1
gmmk/pro/iso/keymaps/via/rules.mk
Normal file
1
gmmk/pro/iso/keymaps/via/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
37
gmmk/pro/iso/readme.md
Normal file
37
gmmk/pro/iso/readme.md
Normal file
@ -0,0 +1,37 @@
|
||||
# GMMK PRO (ISO)
|
||||
|
||||
A tenkeyless 75% keyboard made and sold by Glorious LLC. Equipped with the STM32 ARM Cortex-M4 microcontroller, with support for rotary encoders and three additional layouts. [More info at Glorious](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation)
|
||||
|
||||
* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall)
|
||||
* Hardware Supported: GMMK Pro
|
||||
* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make gmmk/pro/iso:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make gmmk/pro/iso:default:flash
|
||||
|
||||
To reset the board into bootloader mode, do one of the following:
|
||||
|
||||
* Hold the Reset switch mounted on the bottom side of the PCB while connecting the USB cable
|
||||
* Hold the Escape key while connecting the USB cable (also erases persistent settings)
|
||||
* Fn+Backspace will reset the board to bootloader mode if you have flashed the default QMK keymap
|
||||
|
||||
See 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).
|
||||
|
||||
## Case Screw Replacements
|
||||
|
||||
Many users report stripped case screws when disassembling the board.
|
||||
|
||||
The stock case screws are:
|
||||
* Thread: M2
|
||||
* Thread length: ~5 mm
|
||||
* Head diameter: ~3.8 mm
|
||||
* Head counterbore diameter: ~4.0 mm
|
||||
* Head counterbore depth: ~1.9 mm
|
||||
|
||||
Most M2x5mm screws should fit fine, although it's best to ensure that the screw head will fit inside the counterbore.
|
||||
For reference, [this hex socket head screw](https://www.mcmaster.com/91292A005/) from McMaster-Carr should fit nearly flush (head will protrude above the counterbore by ~0.1 mm).
|
25
gmmk/pro/iso/rules.mk
Normal file
25
gmmk/pro/iso/rules.mk
Normal file
@ -0,0 +1,25 @@
|
||||
# MCU name
|
||||
MCU = STM32F303
|
||||
|
||||
# Bootloader selection
|
||||
BOOTLOADER = stm32-dfu
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
ENCODER_ENABLE = yes
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
RGB_MATRIX_DRIVER = AW20216
|
66
gmmk/pro/keymaps/jackkenney/keymap.c
Normal file
66
gmmk/pro/keymaps/jackkenney/keymap.c
Normal file
@ -0,0 +1,66 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] \ PgUp
|
||||
// Caps A S D F G H J K L ; " Enter PgDn
|
||||
// Sh_L Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
|
||||
|
||||
// The FN key by default maps to a momentary toggle to layer 1 to provide access to the RESET key (to put the board into bootloader mode). Without
|
||||
// this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
|
||||
// cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
|
||||
// if that's your preference.
|
||||
//
|
||||
// To put the keyboard in bootloader mode, use FN+backslash. If you accidentally put it into bootloader, you can just unplug the USB cable and
|
||||
// it'll be back to normal when you plug it back in.
|
||||
[0] = LAYOUT(
|
||||
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_DEL, KC_MUTE,
|
||||
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_PGUP,
|
||||
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_PGDN,
|
||||
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_HOME,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_PSCR,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
|
||||
KC_INS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, RESET, KC_RGUI, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
}
|
||||
else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
return true;
|
||||
}
|
1
gmmk/pro/keymaps/mike1808/.gitignore
vendored
Normal file
1
gmmk/pro/keymaps/mike1808/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
secrets.h
|
19
gmmk/pro/keymaps/mike1808/README.md
Normal file
19
gmmk/pro/keymaps/mike1808/README.md
Normal file
@ -0,0 +1,19 @@
|
||||
QMK layout for gmmk/pro
|
||||
=======================
|
||||
|
||||
## Secrets
|
||||
The format is the same as [drashna's](../../../../users/drashna/readme_secrets.md) secrets implementation. Create a `secret.h` and define your secrets like this:
|
||||
|
||||
```c
|
||||
static const char* secrets[] = {"secret1", "secret2", "secret3", "secret4", "secret5"};
|
||||
```
|
||||
|
||||
## Rotary encoder knob
|
||||
You can hookup your encoder functions by defining new encoder states in [encoder.h](./encoder.h), then in [encoder.c](./encoder.c) assign static variable `state` your new state depending on your desired condition and add callbacks to `encoder_mapping` array.
|
||||
|
||||
## RGB Matrix Ledmaps
|
||||
RGB Matrix ledmaps is the future allowing you assign colors to individual keys on every keymap layer.
|
||||
|
||||
You can see some examples of my usage in the bottom of [keymap.c](./keymap.c).
|
||||
|
||||
Color defines are just HSV colors wrapped in curly braces, like `#define RED { HSV_RED }`.
|
31
gmmk/pro/keymaps/mike1808/config.h
Normal file
31
gmmk/pro/keymaps/mike1808/config.h
Normal file
@ -0,0 +1,31 @@
|
||||
/* Copyright 2021 Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define COMBO_COUNT 1
|
||||
#define COMBO_TERM 100
|
||||
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
#define RGB_DISABLE_TIMEOUT 90000
|
||||
|
||||
#define MACRO_TIMER 5
|
||||
|
||||
#define TAPPING_TOGGLE 3
|
||||
|
||||
#define WPM_SMOOTHING 0.1
|
||||
|
||||
// this is for macOS so keyboard can work after sleep
|
||||
#define NO_USB_STARTUP_CHECK
|
111
gmmk/pro/keymaps/mike1808/encoder.c
Normal file
111
gmmk/pro/keymaps/mike1808/encoder.c
Normal file
@ -0,0 +1,111 @@
|
||||
/* Copyright 2021 Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "encoder.h"
|
||||
#include "mike1808.h"
|
||||
#include "print.h"
|
||||
#include "utils.h"
|
||||
#include "process_record.h"
|
||||
#include "rgb_matrix_ledmaps.h"
|
||||
|
||||
static uint8_t state = ENCODER_DEFAULT;
|
||||
|
||||
// clang-format off
|
||||
const encoder_callback encoder_mapping[][2] = {
|
||||
[ENCODER_VOLUME] = {&volume_up, &volume_down},
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
[ENCODER_RGB_HUE] = {&rgb_matrix_increase_hue_noeeprom, &rgb_matrix_decrease_hue_noeeprom},
|
||||
[ENCODER_RGB_SAT] = {&rgb_matrix_increase_sat_noeeprom, &rgb_matrix_decrease_sat_noeeprom},
|
||||
[ENCODER_RGB_VAL] = {&rgb_matrix_increase_val_noeeprom, &rgb_matrix_decrease_val_noeeprom},
|
||||
[ENCODER_RGB_EFFECT] = {&rgb_matrix_step_noeeprom, &rgb_matrix_step_reverse_noeeprom},
|
||||
[ENCODER_RGB_EFFECT_SPEED] = {&rgb_matrix_increase_speed_noeeprom, &rgb_matrix_decrease_speed_noeeprom},
|
||||
#endif // RGB_MATRIX_ENABLE
|
||||
};
|
||||
|
||||
// clang-format on
|
||||
|
||||
void volume_up() { tap_code(KC_VOLU); }
|
||||
|
||||
void volume_down() { tap_code(KC_VOLD); }
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
dprintf("current encoder state is: %d\n", state);
|
||||
|
||||
if (clockwise) {
|
||||
(*encoder_mapping[state][0])();
|
||||
} else {
|
||||
(*encoder_mapping[state][1])();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void handle_rgb_key(bool pressed) {
|
||||
dprintf("handle_rgb_key %d\f", pressed);
|
||||
|
||||
if (pressed) {
|
||||
rgb_matrix_layers_disable();
|
||||
} else {
|
||||
rgb_matrix_layers_enable();
|
||||
}
|
||||
}
|
||||
|
||||
static KeyPressState *rgb_state;
|
||||
|
||||
void keyboard_post_init_encoder() {
|
||||
rgb_state = NewKeyPressState(handle_rgb_key);
|
||||
}
|
||||
|
||||
bool process_record_encoder(uint16_t keycode, keyrecord_t *record) {
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
switch (keycode) {
|
||||
case KC_RGB_ENC_HUE ... KC_RGB_ENC_EFFECT:
|
||||
if (record->event.pressed) {
|
||||
# ifdef RGB_MATRIX_LEDMAPS_ENABLED
|
||||
// disable layers so we can adjust RGB effects
|
||||
rgb_state->press(rgb_state);
|
||||
# endif // RGB_MATRIX_LEDMAPS_ENABLED
|
||||
|
||||
switch (keycode) {
|
||||
case KC_RGB_ENC_HUE:
|
||||
state = ENCODER_RGB_HUE;
|
||||
break;
|
||||
case KC_RGB_ENC_SAT:
|
||||
state = ENCODER_RGB_SAT;
|
||||
break;
|
||||
case KC_RGB_ENC_VAL:
|
||||
state = ENCODER_RGB_VAL;
|
||||
break;
|
||||
case KC_RGB_ENC_EFFECT_SPEED:
|
||||
state = ENCODER_RGB_EFFECT_SPEED;
|
||||
break;
|
||||
case KC_RGB_ENC_EFFECT:
|
||||
state = ENCODER_RGB_EFFECT;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
# ifdef RGB_MATRIX_LEDMAPS_ENABLED
|
||||
rgb_state->release(rgb_state);
|
||||
# endif // RGB_MATRIX_LEDMAPS_ENABLED
|
||||
state = ENCODER_DEFAULT;
|
||||
store_rgb_state_to_eeprom();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif // RGB_MATRIX_ENABLE
|
||||
|
||||
return true;
|
||||
}
|
35
gmmk/pro/keymaps/mike1808/encoder.h
Normal file
35
gmmk/pro/keymaps/mike1808/encoder.h
Normal file
@ -0,0 +1,35 @@
|
||||
/* Copyright 2021 Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
// To add a new functionality define a new state here and then assign
|
||||
// the handler to the `encoder_callback`
|
||||
#include "quantum.h"
|
||||
|
||||
enum encoder_state {
|
||||
ENCODER_VOLUME = 0,
|
||||
ENCODER_RGB_HUE,
|
||||
ENCODER_RGB_SAT,
|
||||
ENCODER_RGB_VAL,
|
||||
ENCODER_RGB_EFFECT_SPEED,
|
||||
ENCODER_RGB_EFFECT,
|
||||
};
|
||||
|
||||
typedef void (*encoder_callback)(void);
|
||||
|
||||
#define ENCODER_DEFAULT ENCODER_VOLUME
|
||||
|
||||
void volume_up(void);
|
||||
void volume_down(void);
|
49
gmmk/pro/keymaps/mike1808/fun.c
Normal file
49
gmmk/pro/keymaps/mike1808/fun.c
Normal file
@ -0,0 +1,49 @@
|
||||
/* Copyright 2021 Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "mike1808.h"
|
||||
#include "print.h"
|
||||
|
||||
static bool wpm_rgb_enabled = false;
|
||||
static uint8_t rgb_mode;
|
||||
|
||||
void rgb_matrix_indicators_keymap(void) {
|
||||
if (wpm_rgb_enabled && rgb_matrix_is_enabled()) {
|
||||
uint8_t wpm = get_current_wpm();
|
||||
dprintf("WPM = %d\n", wpm);
|
||||
HSV hsv = rgb_matrix_get_hsv();
|
||||
hsv.h = wpm;
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
rgb_matrix_set_color_all(rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_fun(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed && keycode == KC_WPM_RGB) {
|
||||
if (wpm_rgb_enabled) {
|
||||
wpm_rgb_enabled = false;
|
||||
rgb_matrix_mode(rgb_mode);
|
||||
} else {
|
||||
wpm_rgb_enabled = true;
|
||||
rgb_mode = rgb_matrix_get_mode();
|
||||
rgb_matrix_enable();
|
||||
rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
127
gmmk/pro/keymaps/mike1808/keymap.c
Normal file
127
gmmk/pro/keymaps/mike1808/keymap.c
Normal file
@ -0,0 +1,127 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>, Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "mike1808.h"
|
||||
|
||||
const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
[JK_ESC] = COMBO(jk_combo, KC_ESC),
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
||||
// Tab Q W E R T Y U I O P [ ] \ PgUp
|
||||
// Caps A S D F G H J K L ; " Enter PgDn
|
||||
// Sh_L Z X C V B N M , . ? Sh_R Up End
|
||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
||||
[LINUX] = LAYOUT(
|
||||
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_DEL, KC_MUTE,
|
||||
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_HOME,
|
||||
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_PGUP,
|
||||
KC_ESC, 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_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, TT_FN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[WINDOWS] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[MACOS] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LALT, KC_LGUI, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[FUNCTIONS] = LAYOUT(
|
||||
_______, KC_SEC1, KC_SEC2, KC_SEC3, KC_SEC4, KC_SEC5, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_PSCR, _______,
|
||||
_______, KC_LINX, KC_MAC, KC_WIN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RST, _______,
|
||||
KC_CAPS, _______, _______, _______, _______, OS_GIT, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_RGBH, KC_RGBS, KC_RGBV, KC_RGBE, KC_RGBP, KC_WRGB, _______, _______, _______, _______, _______, KC_PGUP, _______,
|
||||
_______, _______, _______, RGB_TOG, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
|
||||
),
|
||||
|
||||
[GIT] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, G_DIFF, _______, _______, _______, _______, _______, _______, G_PULL, G_PUSH, _______, _______, _______,
|
||||
_______, G_ADD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, G_CHECK, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
|
||||
#ifdef RGB_MATRIX_LEDMAPS_ENABLED
|
||||
|
||||
#define ______ {0, 0, 0}
|
||||
|
||||
const ledmap PROGMEM ledmaps[] = {
|
||||
// LU = Left Underglow, RU = Right Underglow
|
||||
// LU_1 ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute) RU_1
|
||||
// LU_2 ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del RU_2
|
||||
// LU_3 Tab Q W E R T Y U I O P [ ] \ PgUp RU_3
|
||||
// LU_4 Caps A S D F G H J K L ; " Enter PgDn RU_4
|
||||
// LU_5 Sh_L Z X C V B N M , . ? Sh_R Up End RU_5
|
||||
// LU_6 Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right RU_6
|
||||
[LINUX] = RGB_MATRIX_LAYOUT_LEDMAP(
|
||||
PURPLE, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
PURPLE, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
PURPLE, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
PURPLE, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
PURPLE, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
PURPLE, ______, RED, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE
|
||||
),
|
||||
[WINDOWS] = RGB_MATRIX_LAYOUT_LEDMAP(
|
||||
GREEN, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
GREEN, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
GREEN, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
GREEN, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
GREEN, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
GREEN, ______, RED, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE
|
||||
),
|
||||
[MACOS] = RGB_MATRIX_LAYOUT_LEDMAP(
|
||||
YELLOW, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
YELLOW, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
YELLOW, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
YELLOW, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
YELLOW, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
YELLOW, ______, ______, RED, ______, ______, ______, ______, ______, ______, ______, PURPLE
|
||||
),
|
||||
|
||||
[FUNCTIONS] = RGB_MATRIX_LAYOUT_LEDMAP(
|
||||
CYAN, GREEN, GREEN, GREEN, GREEN, GREEN, GREEN, ______, ______, ______, ______, GREEN, GREEN, GREEN, GREEN, ______, PURPLE,
|
||||
CYAN, ______, GOLD, GOLD, GOLD, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, GOLD, PURPLE,
|
||||
CYAN, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, TEAL, ______, PURPLE,
|
||||
CYAN, TURQ, ______, ______, ______, ______, TURQ, ______, ______, ______, ______, ______, ______, ______, ______, PURPLE,
|
||||
CYAN, ______, RED, RED, RED, RED, RED, RED, ______, ______, ______, ______, ______, RED, ______, PURPLE,
|
||||
CYAN, ______, ______, BLUE, ______, ______, ______, ______, ______, ______, ______, PURPLE
|
||||
),
|
||||
};
|
||||
|
||||
#endif // RGB_MATRIX_LEDMAPS_ENABLED
|
||||
// clang-format on
|
68
gmmk/pro/keymaps/mike1808/mike1808.c
Normal file
68
gmmk/pro/keymaps/mike1808/mike1808.c
Normal file
@ -0,0 +1,68 @@
|
||||
/* Copyright 2021 Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "mike1808.h"
|
||||
|
||||
#if (__has_include("secrets.h") && !defined(NO_SECRETS))
|
||||
# include "secrets.h"
|
||||
#else
|
||||
// `PROGMEM const char secret[][x]` may work better, but it takes up more space in the firmware
|
||||
// And I'm not familiar enough to know which is better or why...
|
||||
static const char *const secret[] = {"test1", "test2", "test3", "test4", "test5"};
|
||||
#endif
|
||||
|
||||
// userspace_config_t userspace_config;
|
||||
|
||||
bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_SECRET_1 ... KC_SECRET_5: // Secrets! Externally defined strings, not stored in repo
|
||||
if (!record->event.pressed) {
|
||||
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
|
||||
send_string_with_delay(secrets[keycode - KC_SECRET_1], MACRO_TIMER);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void suspend_power_down_user(void) {
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
rgb_matrix_set_suspend_state(true);
|
||||
#endif // RGB_MATRIX_ENABLE
|
||||
}
|
||||
|
||||
void suspend_wakeup_init_user(void) {
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
rgb_matrix_set_suspend_state(false);
|
||||
#endif // RGB_MATRIX_ENABLE
|
||||
}
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
void rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
|
||||
// Turn on sideglow when CAPS LOCK is activated
|
||||
if (host_keyboard_led_state().caps_lock) {
|
||||
HSV hsv = {CAPS_LOCK_COLOR};
|
||||
hsv.v = rgb_matrix_get_val();
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
|
||||
for (uint8_t i = led_min; i < led_max; i++) {
|
||||
if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) {
|
||||
RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // RGB_MATRIX_ENABLE
|
111
gmmk/pro/keymaps/mike1808/mike1808.h
Normal file
111
gmmk/pro/keymaps/mike1808/mike1808.h
Normal file
@ -0,0 +1,111 @@
|
||||
/* Copyright 2021 Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "rgb_matrix_ledmaps.h"
|
||||
|
||||
enum layout_names {
|
||||
LINUX = 0, // Base Layout: The main keyboard layout that has all the characters
|
||||
WINDOWS, // Base ayout for Windows
|
||||
MACOS, // Base Layout for MacOS
|
||||
FUNCTIONS, // Function Layout: The function key activated layout with default functions and
|
||||
// some added ones
|
||||
GIT, // GIT Layout: GIT shortcuts and macros
|
||||
SECRETS, // Layer with secrets
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
KC_CCCV = SAFE_RANGE, // Hold to copy, tap to paste
|
||||
KC_LINUX,
|
||||
KC_MAC,
|
||||
KC_WIN,
|
||||
|
||||
KC_SECRET_1,
|
||||
KC_SECRET_2,
|
||||
KC_SECRET_3,
|
||||
KC_SECRET_4,
|
||||
KC_SECRET_5,
|
||||
|
||||
KC_RGB_ENC_HUE,
|
||||
KC_RGB_ENC_SAT,
|
||||
KC_RGB_ENC_VAL,
|
||||
KC_RGB_ENC_EFFECT_SPEED,
|
||||
KC_RGB_ENC_EFFECT,
|
||||
|
||||
KC_WPM_RGB,
|
||||
};
|
||||
|
||||
enum git_macros {
|
||||
// The start of this enum should always be equal to end of ctrl_keycodes + 1
|
||||
G_INIT = KC_WPM_RGB + 1, // git init
|
||||
G_CLONE, // git clone
|
||||
G_CONF, // git config --global
|
||||
G_ADD, // git add
|
||||
G_DIFF, // git diff
|
||||
G_RESET, // git reset
|
||||
G_REBAS, // git rebase
|
||||
G_BRANH, // git branch
|
||||
G_CHECK, // git checkout
|
||||
G_MERGE, // git merge
|
||||
G_REMTE, // git remote add
|
||||
G_FETCH, // git fetch
|
||||
G_PULL, // git pull
|
||||
G_PUSH, // git push
|
||||
G_COMM, // git commit
|
||||
G_STAT, // git status
|
||||
G_LOG, // git log
|
||||
NEW_SAFE_RANGE,
|
||||
};
|
||||
|
||||
enum combos {
|
||||
JK_ESC, // jk to ESC for Vim
|
||||
};
|
||||
|
||||
#define KC_SEC1 KC_SECRET_1
|
||||
#define KC_SEC2 KC_SECRET_2
|
||||
#define KC_SEC3 KC_SECRET_3
|
||||
#define KC_SEC4 KC_SECRET_4
|
||||
#define KC_SEC5 KC_SECRET_5
|
||||
|
||||
#define KC_RGBH KC_RGB_ENC_HUE
|
||||
#define KC_RGBS KC_RGB_ENC_SAT
|
||||
#define KC_RGBV KC_RGB_ENC_VAL
|
||||
#define KC_RGBE KC_RGB_ENC_EFFECT
|
||||
#define KC_RGBP KC_RGB_ENC_EFFECT_SPEED
|
||||
|
||||
#define KC_WRGB KC_WPM_RGB
|
||||
|
||||
#define KC_LINX KC_LINUX
|
||||
|
||||
#define KC_RESET RESET
|
||||
#define KC_RST KC_RESET
|
||||
|
||||
#define OS_GIT OSL(GIT)
|
||||
#define TT_FN TT(FUNCTIONS)
|
||||
|
||||
#define OS_LGUI OSM(MOD_LGUI)
|
||||
#define OS_RGUI OSM(MOD_RGUI)
|
||||
#define OS_LSFT OSM(MOD_LSFT)
|
||||
#define OS_RSFT OSM(MOD_RSFT)
|
||||
#define OS_LCTL OSM(MOD_LCTL)
|
||||
#define OS_RCTL OSM(MOD_RCTL)
|
||||
#define OS_LALT OSM(MOD_LALT)
|
||||
#define OS_RALT OSM(MOD_RALT)
|
||||
#define OS_MEH OSM(MOD_MEH)
|
||||
#define OS_HYPR OSM(MOD_HYPR)
|
||||
|
||||
#define CAPS_LOCK_COLOR HSV_RED
|
||||
|
119
gmmk/pro/keymaps/mike1808/process_record.c
Normal file
119
gmmk/pro/keymaps/mike1808/process_record.c
Normal file
@ -0,0 +1,119 @@
|
||||
/* Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>,
|
||||
Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "mike1808.h"
|
||||
#include "print.h"
|
||||
#include "process_record.h"
|
||||
|
||||
uint16_t copy_paste_timer;
|
||||
|
||||
__attribute__((weak)) bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
__attribute__((weak)) bool process_record_encoder(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
__attribute__((weak)) bool process_record_fun(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
|
||||
__attribute__((weak)) void keyboard_post_init_encoder(void) { return; }
|
||||
|
||||
static const char *git_commands[] = {
|
||||
"git init ", "git clone ", "git config --global ", "git add ",
|
||||
"git diff ", "git reset ", "git rebase ", "git branch -b \"",
|
||||
"git checkout ", "git merge ", "git remote add ", "git fetch ",
|
||||
"git pull ", "git push ", "git commit ", "git status ",
|
||||
"git log ",
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
// If console is enabled, it will print the matrix position and status of each key pressed
|
||||
#ifdef KEYLOGGER_ENABLE
|
||||
uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %b, time: %5u, int: %b, count: %u\n",
|
||||
keycode, record->event.key.col, record->event.key.row, record->event.pressed,
|
||||
record->event.time, record->tap.interrupted, record->tap.count);
|
||||
#endif // KEYLOGGER_ENABLE
|
||||
switch (keycode) {
|
||||
case KC_LINUX ... KC_WIN:
|
||||
if (record->event.pressed) {
|
||||
dprintf("set_single_persistent_default_layer %d\n", keycode - KC_LINUX + LINUX);
|
||||
set_single_persistent_default_layer(keycode - KC_LINUX + LINUX);
|
||||
return false;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case KC_CCCV: // One key copy/paste
|
||||
if (record->event.pressed) {
|
||||
copy_paste_timer = timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
||||
if (layer_state_is(MACOS)) {
|
||||
tap_code16(LGUI(KC_C));
|
||||
} else {
|
||||
tap_code16(LCTL(KC_C));
|
||||
}
|
||||
} else { // Tap, paste
|
||||
if (layer_state_is(MACOS)) {
|
||||
tap_code16(LGUI(KC_V));
|
||||
} else {
|
||||
tap_code16(LCTL(KC_V));
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case G_INIT ... G_LOG:
|
||||
if (record->event.pressed) {
|
||||
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
|
||||
send_string_with_delay(git_commands[keycode - G_INIT], MACRO_TIMER);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
case RGB_TOG:
|
||||
if (record->event.pressed) {
|
||||
switch (rgb_matrix_get_flags()) {
|
||||
case LED_FLAG_ALL: {
|
||||
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
} break;
|
||||
case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: {
|
||||
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
} break;
|
||||
case LED_FLAG_UNDERGLOW: {
|
||||
// This line is for LED idle timer. It disables the toggle so you can turn
|
||||
// off LED completely if you like
|
||||
rgb_matrix_set_flags(LED_FLAG_NONE);
|
||||
rgb_matrix_disable();
|
||||
} break;
|
||||
default: {
|
||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||
rgb_matrix_enable();
|
||||
} break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
#endif // RGB_MATRIX_ENABLE
|
||||
}
|
||||
|
||||
return process_record_encoder(keycode, record) && process_record_secrets(keycode, record) &&
|
||||
process_record_fun(keycode, record);
|
||||
}
|
||||
|
||||
void keyboard_post_init_user() { keyboard_post_init_encoder(); }
|
26
gmmk/pro/keymaps/mike1808/process_record.h
Normal file
26
gmmk/pro/keymaps/mike1808/process_record.h
Normal file
@ -0,0 +1,26 @@
|
||||
/* Copyright 2021 Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
#include "mike1808.h"
|
||||
|
||||
|
||||
bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
|
||||
|
||||
bool process_record_encoder(uint16_t keycode, keyrecord_t *record);
|
||||
|
||||
bool process_record_fun(uint16_t keycode, keyrecord_t *record);
|
||||
|
||||
void keyboard_post_init_encoder(void);
|
71
gmmk/pro/keymaps/mike1808/rgb_matrix_ledmaps.c
Normal file
71
gmmk/pro/keymaps/mike1808/rgb_matrix_ledmaps.c
Normal file
@ -0,0 +1,71 @@
|
||||
/* Copyright 2021 Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "rgb_matrix_ledmaps.h"
|
||||
|
||||
__attribute__((weak)) void rgb_matrix_indicators_keymap(void) { return; }
|
||||
__attribute__((weak)) void rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef RGB_MATRIX_LEDMAPS_ENABLED
|
||||
|
||||
static bool enabled = true;
|
||||
|
||||
#endif // RGB_MATRIX_LEDMAPS_ENABLED
|
||||
|
||||
void rgb_matrix_indicators_user(void) { rgb_matrix_indicators_keymap(); }
|
||||
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
|
||||
#ifdef RGB_MATRIX_LEDMAPS_ENABLED
|
||||
if (rgb_matrix_is_enabled() && enabled) {
|
||||
set_layer_rgb(led_min, led_max, get_highest_layer(layer_state | default_layer_state));
|
||||
}
|
||||
|
||||
#endif // RGB_MATRIX_LEDMAPS_ENABLED
|
||||
rgb_matrix_indicators_advanced_keymap(led_min, led_max);
|
||||
}
|
||||
|
||||
#ifdef RGB_MATRIX_LEDMAPS_ENABLED
|
||||
|
||||
void set_layer_rgb(uint8_t led_min, uint8_t led_max, int layer) {
|
||||
const ledmap *l = &(ledmaps[layer]);
|
||||
|
||||
uint8_t val = rgb_matrix_get_val();
|
||||
|
||||
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
|
||||
HSV hsv = {
|
||||
.h = (*l)[i][0],
|
||||
.s = (*l)[i][1],
|
||||
.v = val,
|
||||
};
|
||||
|
||||
if (hsv.h || hsv.s) {
|
||||
RGB rgb = hsv_to_rgb(hsv);
|
||||
RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void rgb_matrix_layers_enable() {
|
||||
dprintf("ledmaps are enabled\n");
|
||||
enabled = true;
|
||||
}
|
||||
|
||||
void rgb_matrix_layers_disable() {
|
||||
dprintf("ledmaps are disabled\n");
|
||||
enabled = false;
|
||||
}
|
||||
|
||||
#endif // RGB_MATRIX_LEDMAPS_ENABLED
|
100
gmmk/pro/keymaps/mike1808/rgb_matrix_ledmaps.h
Normal file
100
gmmk/pro/keymaps/mike1808/rgb_matrix_ledmaps.h
Normal file
@ -0,0 +1,100 @@
|
||||
/* Copyright 2021 Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef RGB_MATRIX_LEDMAPS_ENABLED
|
||||
|
||||
// no association keycode
|
||||
# define XXX \
|
||||
{ 0, 0, 0 }
|
||||
|
||||
// clang-format off
|
||||
# define RGB_MATRIX_LAYOUT_LEDMAP( \
|
||||
ul1, k13, k26, k36, k31, k33, k07, k63, k71, k76, ka6, ka7, ka3, ka5, k97, k01, ur1, \
|
||||
ul2, k16, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, ka1, k65, ur2, \
|
||||
ul3, k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, ka2, k15, ur3, \
|
||||
ul4, k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, ka4, k25, ur4, \
|
||||
ul5, k00, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k91, k35, k75, ur5, \
|
||||
ul6, k06, k90, k93, k94, k95, k92, k04, k03, k73, k05, ur6 \
|
||||
) \
|
||||
{ \
|
||||
k13, k16, k11, k21, k00, k06, k26, k17, \
|
||||
k10, k12, k14, k90, k36, k27, k20, k22, \
|
||||
k24, k93, k31, k37, k30, k32, k34, k33, \
|
||||
k47, k40, k42, k44, k07, k46, k41, k43, \
|
||||
k45, k94, k63, k56, k51, k53, k55, k71, \
|
||||
k57, k50, k52, k54, k76, k67, k60, k62, \
|
||||
k64, k95, ka6, k77, k70, k72, k74, k92, \
|
||||
ka7, k87, k80, k82, k85, ka3, k86, k81, \
|
||||
k83, k04, ka5, ul1, ur1, k97, ul2, ur2, \
|
||||
k65, ul2, ur2, k15, ul3, ur3, k66, k05, \
|
||||
ul3, ur3, k75, ul4, ur4, ka1, k25, ul5, \
|
||||
ur5, k61, k91, ul6, ur6, ka2, k35, k03, \
|
||||
ka4, k73 \
|
||||
}
|
||||
// clang-format on
|
||||
typedef uint8_t ledmap[DRIVER_LED_TOTAL][3];
|
||||
extern const ledmap ledmaps[];
|
||||
|
||||
void set_layer_rgb(uint8_t led_min, uint8_t led_max, int layer);
|
||||
|
||||
void rgb_matrix_layers_enable(void);
|
||||
void rgb_matrix_layers_disable(void);
|
||||
|
||||
// Just a handy defines to make our ledmaps look better
|
||||
# define RED \
|
||||
{ HSV_RED }
|
||||
# define CORAL \
|
||||
{ HSV_CORAL }
|
||||
# define ORANGE \
|
||||
{ HSV_ORANGE }
|
||||
# define GOLDEN \
|
||||
{ HSV_GOLDENROD }
|
||||
# define GOLD \
|
||||
{ HSV_GOLD }
|
||||
# define YELLOW \
|
||||
{ HSV_YELLOW }
|
||||
# define CHART \
|
||||
{ HSV_CHARTREUSE }
|
||||
# define GREEN \
|
||||
{ HSV_GREEN }
|
||||
# define SPRING \
|
||||
{ HSV_SPRINGGREEN }
|
||||
# define TURQ \
|
||||
{ HSV_TURQUOISE }
|
||||
# define TEAL \
|
||||
{ HSV_TEAL }
|
||||
# define CYAN \
|
||||
{ HSV_CYAN }
|
||||
# define AZURE \
|
||||
{ HSV_AZURE }
|
||||
# define BLUE \
|
||||
{ HSV_BLUE }
|
||||
# define PURPLE \
|
||||
{ HSV_PURPLE }
|
||||
# define MAGENT \
|
||||
{ HSV_MAGENTA }
|
||||
# define PINK \
|
||||
{ HSV_PINK }
|
||||
# define BLACK \
|
||||
{ HSV_BLACK }
|
||||
|
||||
#endif // RGB_MATRIX_LEDMAPS_ENABLED
|
||||
|
||||
void rgb_matrix_indicators_keymap(void);
|
||||
void rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max);
|
25
gmmk/pro/keymaps/mike1808/rules.mk
Normal file
25
gmmk/pro/keymaps/mike1808/rules.mk
Normal file
@ -0,0 +1,25 @@
|
||||
VIA_ENABLE = no
|
||||
|
||||
COMBO_ENABLE = yes
|
||||
COMMAND_ENABLE = yes
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
RAW_ENABLE = no
|
||||
CONSOLE_ENABLE = yes
|
||||
|
||||
WPM_ENABLE = no
|
||||
|
||||
RGB_MATRIX_LEDMAPS = yes
|
||||
|
||||
SRC += utils.c
|
||||
SRC += mike1808.c
|
||||
SRC += process_record.c
|
||||
SRC += encoder.c
|
||||
|
||||
ifeq ($(strip $(WPM_ENABLE)), yes)
|
||||
SRC += fun.c
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_LEDMAPS)), yes)
|
||||
SRC += rgb_matrix_ledmaps.c
|
||||
OPT_DEFS += -DRGB_MATRIX_LEDMAPS_ENABLED
|
||||
endif
|
64
gmmk/pro/keymaps/mike1808/utils.c
Normal file
64
gmmk/pro/keymaps/mike1808/utils.c
Normal file
@ -0,0 +1,64 @@
|
||||
/* Copyright 2021 Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "utils.h"
|
||||
|
||||
void store_rgb_state_to_eeprom() {
|
||||
uint8_t mode = rgb_matrix_get_mode();
|
||||
uint8_t speed = rgb_matrix_get_speed();
|
||||
HSV color = rgb_matrix_get_hsv();
|
||||
|
||||
rgb_matrix_mode(mode);
|
||||
rgb_matrix_set_speed(speed);
|
||||
rgb_matrix_sethsv(color.h, color.s, color.v);
|
||||
}
|
||||
|
||||
void press(KeyPressState *self) {
|
||||
self->_count++;
|
||||
|
||||
dprintf("KPS: press: %d\n", self->_count);
|
||||
|
||||
// pressed the first time
|
||||
if (self->_count == 1) {
|
||||
self->hander(true);
|
||||
}
|
||||
}
|
||||
|
||||
void release(KeyPressState *self) {
|
||||
self->_count--;
|
||||
|
||||
dprintf("KPS: release: %d\n", self->_count);
|
||||
|
||||
// all keys are relased
|
||||
if (self->_count == 0) {
|
||||
self->hander(false);
|
||||
}
|
||||
}
|
||||
|
||||
void reset(KeyPressState *self) {
|
||||
self->_count = 0;
|
||||
}
|
||||
|
||||
KeyPressState *NewKeyPressState(key_press_handler handler) {
|
||||
KeyPressState *kps = (KeyPressState *)(malloc(sizeof(KeyPressState)));
|
||||
|
||||
kps->_count = 0;
|
||||
kps->press = press;
|
||||
kps->release = release;
|
||||
kps->reset = reset;
|
||||
kps->hander = handler;
|
||||
|
||||
return kps;
|
||||
}
|
32
gmmk/pro/keymaps/mike1808/utils.h
Normal file
32
gmmk/pro/keymaps/mike1808/utils.h
Normal file
@ -0,0 +1,32 @@
|
||||
/* Copyright 2021 Mikael Manukyan <arm.localhost@gmail.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
#include "quantum.h"
|
||||
|
||||
void store_rgb_state_to_eeprom(void);
|
||||
|
||||
typedef void (*key_press_handler)(bool);
|
||||
|
||||
typedef struct KeyPressState KeyPressState;
|
||||
struct KeyPressState {
|
||||
int _count;
|
||||
void (*press)(KeyPressState *self);
|
||||
void (*release)(KeyPressState *self);
|
||||
void (*reset)(KeyPressState *self);
|
||||
key_press_handler hander;
|
||||
};
|
||||
|
||||
KeyPressState *NewKeyPressState(key_press_handler);
|
6
gmmk/pro/mcuconf.h
Normal file
6
gmmk/pro/mcuconf.h
Normal file
@ -0,0 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_SPI_USE_SPI1
|
||||
#define STM32_SPI_USE_SPI1 TRUE
|
16
gmmk/pro/pro.c
Normal file
16
gmmk/pro/pro.c
Normal file
@ -0,0 +1,16 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "pro.h"
|
25
gmmk/pro/pro.h
Normal file
25
gmmk/pro/pro.h
Normal file
@ -0,0 +1,25 @@
|
||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#if defined(KEYBOARD_gmmk_pro_ansi)
|
||||
# include "ansi.h"
|
||||
#elif defined(KEYBOARD_gmmk_pro_iso)
|
||||
# include "iso.h"
|
||||
#endif // GMMK Pro revisions
|
Loading…
Reference in New Issue
Block a user