This commit is contained in:
James Guillochon 2025-07-23 15:20:35 -07:00 committed by GitHub
commit 588bb39d06
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
18 changed files with 1245 additions and 0 deletions

View File

@ -0,0 +1,234 @@
/* Copyright 2024 Glorious, LLC
*
* 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 "quantum.h"
#ifdef RGB_MATRIX_ENABLE
#define __ NO_LED
/* Refer to AW20216S manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
{0, SW1_CS1, SW1_CS2, SW1_CS3}, // 0 ESC
{0, SW2_CS1, SW2_CS2, SW2_CS3}, // 1 F1
{0, SW3_CS1, SW3_CS2, SW3_CS3}, // 2 F2
{0, SW4_CS1, SW4_CS2, SW4_CS3}, // 3 F3
{0, SW5_CS1, SW5_CS2, SW5_CS3}, // 4 F4
{0, SW6_CS1, SW6_CS2, SW6_CS3}, // 5 F5
{0, SW7_CS1, SW7_CS2, SW7_CS3}, // 6 F6
{0, SW8_CS1, SW8_CS2, SW8_CS3}, // 7 F7
{0, SW9_CS1, SW9_CS2, SW9_CS3}, // 8 F8
{0, SW10_CS1, SW10_CS2, SW10_CS3}, // 9 F9
{0, SW11_CS1, SW11_CS2, SW11_CS3}, // 10 F10
{0, SW12_CS1, SW12_CS2, SW12_CS3}, // 11 F11
{1, SW1_CS1, SW1_CS2, SW1_CS3}, // 12 F12
{1, SW2_CS4, SW2_CS5, SW2_CS6}, // 13 PrtSc
{1, SW3_CS1, SW3_CS2, SW3_CS3}, // 14 ScrLock
{1, SW4_CS1, SW4_CS2, SW4_CS3}, // 15 Pause
{0, SW1_CS4, SW1_CS5, SW1_CS6}, // 16 ~
{0, SW2_CS4, SW2_CS5, SW2_CS6}, // 17 1
{0, SW3_CS4, SW3_CS5, SW3_CS6}, // 18 2
{0, SW4_CS4, SW4_CS5, SW4_CS6}, // 19 3
{0, SW5_CS4, SW5_CS5, SW5_CS6}, // 20 4
{0, SW6_CS4, SW6_CS5, SW6_CS6}, // 21 5
{0, SW7_CS4, SW7_CS5, SW7_CS6}, // 22 6
{0, SW8_CS4, SW8_CS5, SW8_CS6}, // 23 7
{0, SW9_CS4, SW9_CS5, SW9_CS6}, // 24 8
{0, SW10_CS4, SW10_CS5, SW10_CS6}, // 25 9
{0, SW11_CS4, SW11_CS5, SW11_CS6}, // 26 0
{0, SW12_CS4, SW12_CS5, SW12_CS6}, // 27 -
{1, SW5_CS1, SW5_CS2, SW5_CS3}, // 28 =
{1, SW7_CS1, SW7_CS2, SW7_CS3}, // 29 BS
{1, SW6_CS4, SW6_CS5, SW6_CS6}, // 30 INS
{1, SW5_CS4, SW5_CS5, SW5_CS6}, // 31 Home
{1, SW4_CS4, SW4_CS5, SW4_CS6}, // 32 PGUP
{1, SW1_CS7, SW1_CS8, SW1_CS9}, // 33 NumLock
{1, SW2_CS7, SW2_CS8, SW2_CS9}, // 34 Num/
{1, SW3_CS7, SW3_CS8, SW3_CS9}, // 35 Num*
{1, SW4_CS7, SW4_CS8, SW4_CS9}, // 36 Num-
{0, SW1_CS7, SW1_CS8, SW1_CS9}, // 37 TAB
{0, SW2_CS7, SW2_CS8, SW2_CS9}, // 38 Q
{0, SW3_CS7, SW3_CS8, SW3_CS9}, // 39 W
{0, SW4_CS7, SW4_CS8, SW4_CS9}, // 40 E
{0, SW5_CS7, SW5_CS8, SW5_CS9}, // 41 R
{0, SW6_CS7, SW6_CS8, SW6_CS9}, // 42 T
{0, SW7_CS7, SW7_CS8, SW7_CS9}, // 43 Y
{0, SW8_CS7, SW8_CS8, SW8_CS9}, // 44 U
{0, SW9_CS7, SW9_CS8, SW9_CS9}, // 45 I
{0, SW10_CS7, SW10_CS8, SW10_CS9}, // 46 O
{0, SW11_CS7, SW11_CS8, SW11_CS9}, // 47 P
{0, SW12_CS7, SW12_CS8, SW12_CS9}, // 48 [
{1, SW8_CS1, SW8_CS2, SW8_CS3}, // 49 ]
{1, SW9_CS1, SW9_CS2, SW9_CS3}, // 50 (\)
{1, SW3_CS4, SW3_CS5, SW3_CS6}, // 51 Delete
{1, SW2_CS1, SW2_CS2, SW2_CS3}, // 52 End
{1, SW7_CS4, SW7_CS5, SW7_CS6}, // 53 PGDN
{1, SW5_CS7, SW5_CS8, SW5_CS9}, // 54 Num7
{1, SW6_CS7, SW6_CS8, SW6_CS9}, // 55 Num8
{1, SW7_CS7, SW7_CS8, SW7_CS9}, // 56 Num9
{1, SW8_CS7, SW8_CS8, SW8_CS9}, // 57 Num+
{0, SW1_CS10, SW1_CS11, SW1_CS12}, // 58 CAPS
{0, SW2_CS10, SW2_CS11, SW2_CS12}, // 59 A
{0, SW3_CS10, SW3_CS11, SW3_CS12}, // 60 S
{0, SW4_CS10, SW4_CS11, SW4_CS12}, // 61 D
{0, SW5_CS10, SW5_CS11, SW5_CS12}, // 62 F
{0, SW6_CS10, SW6_CS11, SW6_CS12}, // 63 G
{0, SW7_CS10, SW7_CS11, SW7_CS12}, // 64 H
{0, SW8_CS10, SW8_CS11, SW8_CS12}, // 65 J
{0, SW9_CS10, SW9_CS11, SW9_CS12}, // 66 K
{0, SW10_CS10, SW10_CS11, SW10_CS12}, // 67 L
{0, SW11_CS10, SW11_CS11, SW11_CS12}, // 68 ;
{0, SW12_CS10, SW12_CS11, SW12_CS12}, // 69 '
{1, SW11_CS1, SW11_CS2, SW11_CS3}, // 70 ENTER
{1, SW9_CS7, SW9_CS8, SW9_CS9}, // 71 Num4
{1, SW10_CS7, SW10_CS8, SW10_CS9}, // 72 Num5
{1, SW11_CS7, SW11_CS8, SW11_CS9}, // 73 Num6
{0, SW1_CS13, SW1_CS14, SW1_CS15}, // 74 L_SHIFT
{0, SW2_CS13, SW2_CS14, SW2_CS15}, // 75 Z
{0, SW3_CS13, SW3_CS14, SW3_CS15}, // 76 X
{0, SW4_CS13, SW4_CS14, SW4_CS15}, // 77 C
{0, SW5_CS13, SW5_CS14, SW5_CS15}, // 78 V
{0, SW6_CS13, SW6_CS14, SW6_CS15}, // 79 B
{0, SW7_CS13, SW7_CS14, SW7_CS15}, // 80 N
{0, SW8_CS13, SW8_CS14, SW8_CS15}, // 81 M
{0, SW9_CS13, SW9_CS14, SW9_CS15}, // 82 ,
{0, SW10_CS13, SW10_CS14, SW10_CS15}, // 83 .
{0, SW11_CS13, SW11_CS14, SW11_CS15}, // 84 /
{1, SW8_CS4, SW8_CS5, SW8_CS6}, // 85 R_SHIFT
{1, SW9_CS4, SW9_CS5, SW9_CS6}, // 86 UP
{1, SW1_CS10, SW1_CS11, SW1_CS12}, // 87 Num1
{1, SW2_CS10, SW2_CS11, SW2_CS12}, // 88 Num2
{1, SW3_CS10, SW3_CS11, SW3_CS12}, // 89 Num3
{1, SW4_CS10, SW4_CS11, SW4_CS12}, // 90 NumEnter
{0, SW1_CS16, SW1_CS17, SW1_CS18}, // 91 L_CTRL
{0, SW2_CS16, SW2_CS17, SW2_CS18}, // 92 L_WIN
{0, SW3_CS16, SW3_CS17, SW3_CS18}, // 93 L_ALT
{0, SW6_CS16, SW6_CS17, SW6_CS18}, // 94 SPACE
{0, SW9_CS16, SW9_CS17, SW9_CS18}, // 95 R_ALT
{0, SW10_CS16, SW10_CS17, SW10_CS18}, // 96 FN
{0, SW11_CS16, SW11_CS17, SW11_CS18}, // 97 APP
{0, SW12_CS16, SW12_CS17, SW12_CS18}, // 98 R_CTRL
{1, SW10_CS4, SW10_CS5, SW10_CS6}, // 99 LEFT
{1, SW11_CS4, SW11_CS5, SW11_CS6}, // 100 DOWN
{1, SW5_CS10, SW5_CS11, SW5_CS12}, // 101 RIGHT
{1, SW6_CS10, SW6_CS11, SW6_CS12}, // 102 Num0
{1, SW7_CS10, SW7_CS11, SW7_CS12}, // 103 Num.
{1, SW1_CS13, SW1_CS14, SW1_CS15}, // 104 SLED1
{1, SW2_CS13, SW2_CS14, SW2_CS15}, // 105 SLED2
{1, SW3_CS13, SW3_CS14, SW3_CS15}, // 106 SLED3
{1, SW4_CS13, SW4_CS14, SW4_CS15}, // 107 SLED4
{1, SW5_CS13, SW5_CS14, SW5_CS15}, // 108 SLED5
{1, SW6_CS13, SW6_CS14, SW6_CS15}, // 109 SLED6
{1, SW7_CS13, SW7_CS14, SW7_CS15}, // 110 SLED7
{1, SW8_CS13, SW8_CS14, SW8_CS15}, // 111 SLED8
{1, SW9_CS13, SW9_CS14, SW9_CS15}, // 112 SLED9
{1, SW1_CS16, SW1_CS17, SW1_CS18}, // 113 SLED11
{1, SW2_CS16, SW2_CS17, SW2_CS18}, // 114 SLED12
{1, SW3_CS16, SW3_CS17, SW3_CS18}, // 115 SLED13
{1, SW4_CS16, SW4_CS17, SW4_CS18}, // 116 SLED14
{1, SW5_CS16, SW5_CS17, SW5_CS18}, // 117 SLED15
{1, SW6_CS16, SW6_CS17, SW6_CS18}, // 118 SLED16
{1, SW7_CS16, SW7_CS17, SW7_CS18}, // 119 SLED17
{1, SW8_CS16, SW8_CS17, SW8_CS18}, // 120 SLED18
{1, SW9_CS16, SW9_CS17, SW9_CS18}, // 121 SLED19
{1, SW10_CS1, SW10_CS2, SW10_CS3}, // 122 LOGO
};
led_config_t g_led_config = {
{
{ 74, __, 31, 99, 98, 101, 91, 5 },
{ 38, 37, 59, 0, 75, 32, 16, 17},
{ 39, 58, 60, __, 76, 53, 1, 18},
{ 40, 3, 61, 4, 77, 86, 2, 19},
{ 41, 42, 62, 63, 78, 79, 21, 20},
{ 44, 43, 65, 64, 81, 80, 22, 23},
{ 45, 49, 66, 6, 82, 51, 28, 24},
{ 46, 7, 67, 100, 83, 30, 8, 25},
{ 47, 48, 68, 69, 97, 84, 27, 26},
{ 92, 85, 96, 93, 94, 95, 15, 13},
{ 14, 29, 50, 11, 70, 12, 9, 10},
{ 54, 71, 87, 57, 33, __, __, __},
{ 55, 72, 88, 102, 34, __, 52, __},
{ 56, 73, 89, 103, 35, 36, 90, __},
{ 104, 105, 106, 107, 108, 109, 110, 111},
{ 112, 113, 114, 115, 116, 117, 118, 119},
{ 120, 121, 122, __, __, __, __, __},
},
{
{0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
{3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
{4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
{7,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
{1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
// Left and right side lights
{0, 15}, {0, 20}, {0, 25}, {0, 30}, {0, 35}, {0, 40}, {0, 45}, {0, 50}, {0, 55},
{224, 15}, {224, 20}, {224, 25}, {224, 30}, {224, 35}, {224, 40}, {224, 45}, {224, 50}, {224, 55},
// logo
{214, 0},
},
{
// Keyboard RGB Matrix
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, 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,
// Left and right side lights
2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2,
// Logo
8,
}
};
#endif // RGB_MATRIX_ENABLE
#ifdef EEPROM_ENABLE
#include "spi_master.h"
void spi_init(void) {
static bool is_initialised = false;
if (!is_initialised) {
is_initialised = true;
// Try releasing special pins for a short time
setPinInput(SPI_SCK_PIN);
setPinInput(SPI_MOSI_PIN);
setPinInput(SPI_MISO_PIN);
chThdSleepMilliseconds(10);
palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_WB32_CURRENT_LEVEL3);
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
}
}
#endif

View File

@ -0,0 +1,20 @@
/* Copyright 2024 Glorious, LLC
*
* 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 DRIVER_2_LED_TOTAL (56)
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)

View File

@ -0,0 +1,160 @@
{
"keyboard_name": "GMMK3 100% ANSI",
"manufacturer": "Glorious",
"url": "http://www.pcgamingrace.com",
"maintainer": "Piotr Kleinschmidt",
"usb": {
"device_version": "0.0.1",
"pid": "0x320F",
"vid": "0x504B"
},
"features": {
"bootmagic": true,
"encoder": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "A4", "C1", "C2", "C3"],
"rows": ["B0", "B1", "B2", "B3", "B4", "B5", "C14", "C15", "B8", "B9", "B10", "C8", "C9", "A15", "C4", "C5", "C6"]
},
"diode_direction": "COL2ROW",
"eeprom": {
"driver": "wear_leveling",
"wear_leveling": {
"driver": "spi_flash",
"backing_size": 4096
}
},
"encoder": {
"rotary": [
{"pin_a": "A9", "pin_b": "A8"}
]
},
"qmk": {
"tap_keycode_delay": 10
},
"bootmagic": {
"matrix": [1, 3]
},
"processor": "WB32FQ95",
"bootloader": "wb32-dfu",
"layouts": {
"LAYOUT": {
"layout": [
{"label": "Esc", "matrix": [1, 3], "x": 0, "y": 0},
{"label": "F1", "matrix": [2, 6], "x": 2, "y": 0},
{"label": "F2", "matrix": [3, 6], "x": 3, "y": 0},
{"label": "F3", "matrix": [3, 1], "x": 4, "y": 0},
{"label": "F4", "matrix": [3, 3], "x": 5, "y": 0},
{"label": "F5", "matrix": [0, 7], "x": 6.5, "y": 0},
{"label": "F6", "matrix": [6, 3], "x": 7.5, "y": 0},
{"label": "F7", "matrix": [7, 1], "x": 8.5, "y": 0},
{"label": "F8", "matrix": [7, 6], "x": 9.5, "y": 0},
{"label": "F9", "matrix": [10, 6], "x": 11, "y": 0},
{"label": "F10", "matrix": [10, 7], "x": 12, "y": 0},
{"label": "F11", "matrix": [10, 3], "x": 13, "y": 0},
{"label": "F12", "matrix": [10, 5], "x": 14, "y": 0},
{"label": "Prtsc", "matrix": [9, 7], "x": 15.25, "y": 0},
{"label": "ScrLk", "matrix": [10, 0], "x": 16.25, "y": 0},
{"label": "Pause", "matrix": [9, 6], "x": 17.25, "y": 0},
{"label": "Knob", "matrix": [11, 6], "x": 21.5, "y": 0},
{"label": "`", "matrix": [1, 6], "x": 0, "y": 1.25},
{"label": "1", "matrix": [1, 7], "x": 1, "y": 1.25},
{"label": "2", "matrix": [2, 7], "x": 2, "y": 1.25},
{"label": "3", "matrix": [3, 7], "x": 3, "y": 1.25},
{"label": "4", "matrix": [4, 7], "x": 4, "y": 1.25},
{"label": "5", "matrix": [4, 6], "x": 5, "y": 1.25},
{"label": "6", "matrix": [5, 6], "x": 6, "y": 1.25},
{"label": "7", "matrix": [5, 7], "x": 7, "y": 1.25},
{"label": "8", "matrix": [6, 7], "x": 8, "y": 1.25},
{"label": "9", "matrix": [7, 7], "x": 9, "y": 1.25},
{"label": "0", "matrix": [8, 7], "x": 10, "y": 1.25},
{"label": "-", "matrix": [8, 6], "x": 11, "y": 1.25},
{"label": "=", "matrix": [6, 6], "x": 12, "y": 1.25},
{"label": "BS", "matrix": [10, 1], "x": 13, "y": 1.25, "w": 2},
{"label": "Ins", "matrix": [7, 5], "x": 15.25, "y": 1.25},
{"label": "Home", "matrix": [0, 2], "x": 16.25, "y": 1.25},
{"label": "PgUp", "matrix": [1, 5], "x": 17.25, "y": 1.25},
{"label": "NumLk","matrix": [11, 4], "x": 18.5, "y": 1.25},
{"label": "Num/", "matrix": [12, 4], "x": 19.5, "y": 1.25},
{"label": "Num*", "matrix": [13, 4], "x": 20.5, "y": 1.25},
{"label": "Num-", "matrix": [13, 5], "x": 21.5, "y": 1.25},
{"label": "Tab", "matrix": [1, 1], "x": 0, "y": 2.25, "w": 1.5},
{"label": "Q", "matrix": [1, 0], "x": 1.5, "y": 2.25},
{"label": "W", "matrix": [2, 0], "x": 2.5, "y": 2.25},
{"label": "E", "matrix": [3, 0], "x": 3.5, "y": 2.25},
{"label": "R", "matrix": [4, 0], "x": 4.5, "y": 2.25},
{"label": "T", "matrix": [4, 1], "x": 5.5, "y": 2.25},
{"label": "Y", "matrix": [5, 1], "x": 6.5, "y": 2.25},
{"label": "U", "matrix": [5, 0], "x": 7.5, "y": 2.25},
{"label": "I", "matrix": [6, 0], "x": 8.5, "y": 2.25},
{"label": "O", "matrix": [7, 0], "x": 9.5, "y": 2.25},
{"label": "P", "matrix": [8, 0], "x": 10.5, "y": 2.25},
{"label": "[", "matrix": [8, 1], "x": 11.5, "y": 2.25},
{"label": "]", "matrix": [6, 1], "x": 12.5, "y": 2.25},
{"label": "\\", "matrix": [10, 2], "x": 13.5, "y": 2.25, "w": 1.5},
{"label": "Del", "matrix": [6, 5], "x": 15.25, "y": 2.25},
{"label": "End", "matrix": [12, 6], "x": 16.25, "y": 2.25},
{"label": "PgD", "matrix": [2, 5], "x": 17.25, "y": 2.25},
{"label": "Num7", "matrix": [11, 0], "x": 18.5, "y": 2.25},
{"label": "Num8", "matrix": [12, 0], "x": 19.5, "y": 2.25},
{"label": "Num9", "matrix": [13, 0], "x": 20.5, "y": 2.25},
{"label": "Num+", "matrix": [11, 3], "x": 21.5, "y": 2.25, "h": 2},
{"label": "Caps", "matrix": [2, 1], "x": 0, "y": 3.25, "w": 1.75},
{"label": "A", "matrix": [1, 2], "x": 1.75, "y": 3.25},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 3.25},
{"label": "D", "matrix": [3, 2], "x": 3.75, "y": 3.25},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 3.25},
{"label": "G", "matrix": [4, 3], "x": 5.75, "y": 3.25},
{"label": "H", "matrix": [5, 3], "x": 6.75, "y": 3.25},
{"label": "J", "matrix": [5, 2], "x": 7.75, "y": 3.25},
{"label": "K", "matrix": [6, 2], "x": 8.75, "y": 3.25},
{"label": "L", "matrix": [7, 2], "x": 9.75, "y": 3.25},
{"label": ";", "matrix": [8, 2], "x": 10.75, "y": 3.25},
{"label": "'", "matrix": [8, 3], "x": 11.75, "y": 3.25},
{"label": "Enter", "matrix": [10, 4], "x": 12.75, "y": 3.25, "w": 2.25},
{"label": "Num4", "matrix": [11, 1], "x": 18.5, "y": 3.25},
{"label": "Num5", "matrix": [12, 1], "x": 19.5, "y": 3.25},
{"label": "Num6", "matrix": [13, 1], "x": 20.5, "y": 3.25},
{"label": "LShft", "matrix": [0, 0], "x": 0, "y": 4.25, "w": 2.25},
{"label": "Z", "matrix": [1, 4], "x": 2.25, "y": 4.25},
{"label": "X", "matrix": [2, 4], "x": 3.25, "y": 4.25},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 4.25},
{"label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25},
{"label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25},
{"label": "N", "matrix": [5, 5], "x": 7.25, "y": 4.25},
{"label": "M", "matrix": [5, 4], "x": 8.25, "y": 4.25},
{"label": ",", "matrix": [6, 4], "x": 9.25, "y": 4.25},
{"label": ".", "matrix": [7, 4], "x": 10.25, "y": 4.25},
{"label": "/", "matrix": [8, 5], "x": 11.25, "y": 4.25},
{"label": "RShft", "matrix": [9, 1], "x": 12.25, "y": 4.25, "w": 2.75},
{"label": "Up", "matrix": [3, 5], "x": 16.25, "y": 4.25},
{"label": "Num1", "matrix": [11, 2], "x": 18.5, "y": 4.25},
{"label": "Num2", "matrix": [12, 2], "x": 19.5, "y": 4.25},
{"label": "Num3", "matrix": [13, 2], "x": 20.5, "y": 4.25},
{"label": "NumEnt", "matrix": [13, 6], "x": 21.5, "y": 4.25, "h": 2},
{"label": "LCtr", "matrix": [0, 6], "x": 0, "y": 5.25, "w": 1.25},
{"label": "LWin", "matrix": [9, 0], "x": 1.25, "y": 5.25, "w": 1.25},
{"label": "LAlt", "matrix": [9, 3], "x": 2.5, "y": 5.25, "w": 1.25},
{"label": "Space", "matrix": [9, 4], "x": 3.75, "y": 5.25, "w": 6.25},
{"label": "RAlt", "matrix": [9, 5], "x": 10, "y": 5.25, "w": 1.25},
{"label": "Fn", "matrix": [9, 2], "x": 11.25, "y": 5.25, "w": 1.25},
{"label": "App", "matrix": [8, 4], "x": 12.5, "y": 5.25, "w": 1.25},
{"label": "RCtr", "matrix": [0, 4], "x": 13.75, "y": 5.25, "w": 1.25},
{"label": "Left", "matrix": [0, 3], "x": 15.25, "y": 5.25},
{"label": "Down", "matrix": [7, 3], "x": 16.25, "y": 5.25},
{"label": "Right", "matrix": [0, 5], "x": 17.25, "y": 5.25},
{"label": "Num0", "matrix": [12, 3], "x": 18.5, "y": 5.25, "w": 2},
{"label": "Num.", "matrix": [13, 3], "x": 20.5, "y": 5.25}
]
}
}
}

View File

@ -0,0 +1,19 @@
/* Copyright 2024 Glorious, LLC
*
* 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 DYNAMIC_KEYMAP_LAYER_COUNT 4

View File

@ -0,0 +1,109 @@
/* Copyright 2024 Glorious, LLC
*
* 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
/*
*
* Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12 PScScrPse Mut
*
*
* ` 1 2 3 4 5 6 7 8 9 0 - = Backsp InsHomPgU Num / * -
*
* Tab Q W E R T Y U I O P [ ] \ DelEndPgD 7 8 9
* +
* Caps A S D F G H J K L ; ' Enter 4 5 6
*
* Shift Z X C V B N M , . / Shift 1 2 3
* Ent
* CtrlGUI Alt Alt Fn MenuCtrl 0 .
*
*/
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Switching between Windows and Mac OS Base layers is done via DIP switch
enum custom_layers {
WIN_BL, // Windows Base Layer
WIN_FL, // Windows Function Layer
MACOS_BL, // Mac OS Base Layer
MACOS_FL // Mac OS Function Layer
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Windows Base Layer (Default Layer) */
[WIN_BL] = 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_SCRL, KC_PAUS, 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_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FL), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
),
/* Windows Function Layer */
[WIN_FL] = LAYOUT(
_______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_SAD, RGB_SAI, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD, _______, _______
),
/* Mac OS Base Layer (Default Layer) */
[MACOS_BL] = 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_SCRL, KC_PAUS, 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_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MACOS_FL), KC_ROPT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
),
/* Mac OS Function Layer */
[MACOS_FL] = LAYOUT(
_______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_SAD, RGB_SAI, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD, _______, _______
),
};
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_user(uint8_t index, bool active) {
if (index == 0) {
if (active){
layer_off(MACOS_BL);
layer_on(WIN_BL);
} else {
layer_off(WIN_BL);
layer_on(MACOS_BL);
}
}
return true;
}
#endif

View File

@ -0,0 +1 @@
# GMMK3 100% ANSI Layout

View File

@ -0,0 +1,21 @@
# GMMK3 100% (ANSI)
A keyboard made and sold by Glorious LLC. Equipped with the WestBerry Q95 microcontroller.
* Keyboard Maintainer: [Glorious](TBD)
* Hardware Supported: GMMK3
* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com)
Make example for this keyboard (after setting up your build environment):
make gmmk/gmmk3/p100/ansi:default
Flashing example for this keyboard:
make gmmk/gmmk3/p100/ansi:default:flash
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).
## Bootloader
The user can enter bootloader mode for the keyboard by holding down `Esc` when the keyboard is unplugged and plugging in the keyboard while these key is held down.

View File

@ -0,0 +1,40 @@
/* Copyright 2024 Glorious, LLC
*
* 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
/* External spi flash */
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C4
#define USB_SUSPEND_WAKEUP_DELAY 1000
/* SPI Config for LED Driver */
#define SPI_DRIVER SPIDQ
#define SPI_SCK_PIN A5
#define SPI_SCK_PAL_MODE 5
#define SPI_MOSI_PIN A7
#define SPI_MOSI_PAL_MODE 5
#define SPI_MISO_PIN A6
#define SPI_MISO_PAL_MODE 5
#define AW20216S_CS_PIN_1 C5
#define AW20216S_CS_PIN_2 B11
#define AW20216S_EN_PIN C13
#define DRIVER_1_LED_TOTAL (67)
#define MATRIX_ROWS 17
#define DIP_SWITCH_PINS { A13 }

View File

@ -0,0 +1,23 @@
/* Copyright (C) 2024 Westberry Technology (ChangZhou) Corp., Ltd
*
* 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 HAL_USE_SPI TRUE
#define SPI_USE_WAIT TRUE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
#include_next <halconf.h>

View File

@ -0,0 +1,35 @@
{
"qmk": {
"locking": {
"enabled": true,
"resync": true
}
},
"rgb_matrix": {
"animations": {
"band_spiral_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"cycle_up_down": true,
"digital_rain": true,
"dual_beacon": true,
"jellybean_raindrops": true,
"pixel_rain": true,
"rainbow_beacon": true,
"rainbow_moving_chevron": true,
"solid_reactive_multinexus": true,
"solid_reactive_multiwide": true,
"solid_reactive_simple": true,
"solid_splash": true,
"splash": true,
"typing_heatmap": true
},
"driver": "aw20216s",
"sleep": true
}
}

View File

@ -0,0 +1,20 @@
/* Copyright 2024 Glorious, LLC
*
* 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 DRIVER_2_LED_TOTAL (57) // ISO has one more LED than ANSI
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)

View File

@ -0,0 +1,235 @@
/* Copyright 2024 Glorious, LLC
*
* 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 "quantum.h"
#ifdef RGB_MATRIX_ENABLE
#define __ NO_LED
/* Refer to AW20216S manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
{0, SW1_CS1, SW1_CS2, SW1_CS3}, // 0 ESC
{0, SW2_CS1, SW2_CS2, SW2_CS3}, // 1 F1
{0, SW3_CS1, SW3_CS2, SW3_CS3}, // 2 F2
{0, SW4_CS1, SW4_CS2, SW4_CS3}, // 3 F3
{0, SW5_CS1, SW5_CS2, SW5_CS3}, // 4 F4
{0, SW6_CS1, SW6_CS2, SW6_CS3}, // 5 F5
{0, SW7_CS1, SW7_CS2, SW7_CS3}, // 6 F6
{0, SW8_CS1, SW8_CS2, SW8_CS3}, // 7 F7
{0, SW9_CS1, SW9_CS2, SW9_CS3}, // 8 F8
{0, SW10_CS1, SW10_CS2, SW10_CS3}, // 9 F9
{0, SW11_CS1, SW11_CS2, SW11_CS3}, // 10 F10
{0, SW12_CS1, SW12_CS2, SW12_CS3}, // 11 F11
{1, SW1_CS1, SW1_CS2, SW1_CS3}, // 12 F12
{1, SW2_CS4, SW2_CS5, SW2_CS6}, // 13 PrtSc
{1, SW3_CS1, SW3_CS2, SW3_CS3}, // 14 ScrLock
{1, SW4_CS1, SW4_CS2, SW4_CS3}, // 15 Pause
{0, SW1_CS4, SW1_CS5, SW1_CS6}, // 16 ~
{0, SW2_CS4, SW2_CS5, SW2_CS6}, // 17 1
{0, SW3_CS4, SW3_CS5, SW3_CS6}, // 18 2
{0, SW4_CS4, SW4_CS5, SW4_CS6}, // 19 3
{0, SW5_CS4, SW5_CS5, SW5_CS6}, // 20 4
{0, SW6_CS4, SW6_CS5, SW6_CS6}, // 21 5
{0, SW7_CS4, SW7_CS5, SW7_CS6}, // 22 6
{0, SW8_CS4, SW8_CS5, SW8_CS6}, // 23 7
{0, SW9_CS4, SW9_CS5, SW9_CS6}, // 24 8
{0, SW10_CS4, SW10_CS5, SW10_CS6}, // 25 9
{0, SW11_CS4, SW11_CS5, SW11_CS6}, // 26 0
{0, SW12_CS4, SW12_CS5, SW12_CS6}, // 27 -
{1, SW5_CS1, SW5_CS2, SW5_CS3}, // 28 =
{1, SW7_CS1, SW7_CS2, SW7_CS3}, // 29 BS
{1, SW6_CS4, SW6_CS5, SW6_CS6}, // 30 INS
{1, SW5_CS4, SW5_CS5, SW5_CS6}, // 31 Home
{1, SW4_CS4, SW4_CS5, SW4_CS6}, // 32 PGUP
{1, SW1_CS7, SW1_CS8, SW1_CS9}, // 33 NumLock
{1, SW2_CS7, SW2_CS8, SW2_CS9}, // 34 Num/
{1, SW3_CS7, SW3_CS8, SW3_CS9}, // 35 Num*
{1, SW4_CS7, SW4_CS8, SW4_CS9}, // 36 Num-
{0, SW1_CS7, SW1_CS8, SW1_CS9}, // 37 TAB
{0, SW2_CS7, SW2_CS8, SW2_CS9}, // 38 Q
{0, SW3_CS7, SW3_CS8, SW3_CS9}, // 39 W
{0, SW4_CS7, SW4_CS8, SW4_CS9}, // 40 E
{0, SW5_CS7, SW5_CS8, SW5_CS9}, // 41 R
{0, SW6_CS7, SW6_CS8, SW6_CS9}, // 42 T
{0, SW7_CS7, SW7_CS8, SW7_CS9}, // 43 Y
{0, SW8_CS7, SW8_CS8, SW8_CS9}, // 44 U
{0, SW9_CS7, SW9_CS8, SW9_CS9}, // 45 I
{0, SW10_CS7, SW10_CS8, SW10_CS9}, // 46 O
{0, SW11_CS7, SW11_CS8, SW11_CS9}, // 47 P
{0, SW12_CS7, SW12_CS8, SW12_CS9}, // 48 [
{1, SW8_CS1, SW8_CS2, SW8_CS3}, // 49 ]
{1, SW9_CS1, SW9_CS2, SW9_CS3}, // 50 (#)
{1, SW3_CS4, SW3_CS5, SW3_CS6}, // 51 Delete
{1, SW2_CS1, SW2_CS2, SW2_CS3}, // 52 End
{1, SW7_CS4, SW7_CS5, SW7_CS6}, // 53 PGDN
{1, SW5_CS7, SW5_CS8, SW5_CS9}, // 54 Num7
{1, SW6_CS7, SW6_CS8, SW6_CS9}, // 55 Num8
{1, SW7_CS7, SW7_CS8, SW7_CS9}, // 56 Num9
{1, SW8_CS7, SW8_CS8, SW8_CS9}, // 57 Num+
{0, SW1_CS10, SW1_CS11, SW1_CS12}, // 58 CAPS
{0, SW2_CS10, SW2_CS11, SW2_CS12}, // 59 A
{0, SW3_CS10, SW3_CS11, SW3_CS12}, // 60 S
{0, SW4_CS10, SW4_CS11, SW4_CS12}, // 61 D
{0, SW5_CS10, SW5_CS11, SW5_CS12}, // 62 F
{0, SW6_CS10, SW6_CS11, SW6_CS12}, // 63 G
{0, SW7_CS10, SW7_CS11, SW7_CS12}, // 64 H
{0, SW8_CS10, SW8_CS11, SW8_CS12}, // 65 J
{0, SW9_CS10, SW9_CS11, SW9_CS12}, // 66 K
{0, SW10_CS10, SW10_CS11, SW10_CS12}, // 67 L
{0, SW11_CS10, SW11_CS11, SW11_CS12}, // 68 ;
{0, SW12_CS10, SW12_CS11, SW12_CS12}, // 69 '
{1, SW11_CS1, SW11_CS2, SW11_CS3}, // 70 ENTER
{1, SW9_CS7, SW9_CS8, SW9_CS9}, // 71 Num4
{1, SW10_CS7, SW10_CS8, SW10_CS9}, // 72 Num5
{1, SW11_CS7, SW11_CS8, SW11_CS9}, // 73 Num6
{0, SW1_CS13, SW1_CS14, SW1_CS15}, // 74 L_SHIFT
{0, SW4_CS16, SW4_CS17, SW4_CS18}, // 75 (\)
{0, SW2_CS13, SW2_CS14, SW2_CS15}, // 76 Z
{0, SW3_CS13, SW3_CS14, SW3_CS15}, // 77 X
{0, SW4_CS13, SW4_CS14, SW4_CS15}, // 78 C
{0, SW5_CS13, SW5_CS14, SW5_CS15}, // 79 V
{0, SW6_CS13, SW6_CS14, SW6_CS15}, // 80 B
{0, SW7_CS13, SW7_CS14, SW7_CS15}, // 81 N
{0, SW8_CS13, SW8_CS14, SW8_CS15}, // 82 M
{0, SW9_CS13, SW9_CS14, SW9_CS15}, // 83 ,
{0, SW10_CS13, SW10_CS14, SW10_CS15}, // 84 .
{0, SW11_CS13, SW11_CS14, SW11_CS15}, // 85 /
{1, SW8_CS4, SW8_CS5, SW8_CS6}, // 86 R_SHIFT
{1, SW9_CS4, SW9_CS5, SW9_CS6}, // 87 UP
{1, SW1_CS10, SW1_CS11, SW1_CS12}, // 88 Num1
{1, SW2_CS10, SW2_CS11, SW2_CS12}, // 89 Num2
{1, SW3_CS10, SW3_CS11, SW3_CS12}, // 90 Num3
{1, SW4_CS10, SW4_CS11, SW4_CS12}, // 91 NumEnter
{0, SW1_CS16, SW1_CS17, SW1_CS18}, // 92 L_CTRL
{0, SW2_CS16, SW2_CS17, SW2_CS18}, // 93 L_WIN
{0, SW3_CS16, SW3_CS17, SW3_CS18}, // 94 L_ALT
{0, SW6_CS16, SW6_CS17, SW6_CS18}, // 95 SPACE
{0, SW9_CS16, SW9_CS17, SW9_CS18}, // 96 R_ALT
{0, SW10_CS16, SW10_CS17, SW10_CS18}, // 97 FN
{0, SW11_CS16, SW11_CS17, SW11_CS18}, // 98 APP
{0, SW12_CS16, SW12_CS17, SW12_CS18}, // 99 R_CTRL
{1, SW10_CS4, SW10_CS5, SW10_CS6}, // 100 LEFT
{1, SW11_CS4, SW11_CS5, SW11_CS6}, // 101 DOWN
{1, SW5_CS10, SW5_CS11, SW5_CS12}, // 102 RIGHT
{1, SW6_CS10, SW6_CS11, SW6_CS12}, // 103 Num0
{1, SW7_CS10, SW7_CS11, SW7_CS12}, // 104 Num.
{1, SW1_CS13, SW1_CS14, SW1_CS15}, // 105 SLED1
{1, SW2_CS13, SW2_CS14, SW2_CS15}, // 106 SLED2
{1, SW3_CS13, SW3_CS14, SW3_CS15}, // 107 SLED3
{1, SW4_CS13, SW4_CS14, SW4_CS15}, // 108 SLED4
{1, SW5_CS13, SW5_CS14, SW5_CS15}, // 109 SLED5
{1, SW6_CS13, SW6_CS14, SW6_CS15}, // 110 SLED6
{1, SW7_CS13, SW7_CS14, SW7_CS15}, // 111 SLED7
{1, SW8_CS13, SW8_CS14, SW8_CS15}, // 112 SLED8
{1, SW9_CS13, SW9_CS14, SW9_CS15}, // 113 SLED9
{1, SW1_CS16, SW1_CS17, SW1_CS18}, // 114 SLED10
{1, SW2_CS16, SW2_CS17, SW2_CS18}, // 115 SLED11
{1, SW3_CS16, SW3_CS17, SW3_CS18}, // 116 SLED12
{1, SW4_CS16, SW4_CS17, SW4_CS18}, // 117 SLED13
{1, SW5_CS16, SW5_CS17, SW5_CS18}, // 118 SLED14
{1, SW6_CS16, SW6_CS17, SW6_CS18}, // 119 SLED15
{1, SW7_CS16, SW7_CS17, SW7_CS18}, // 120 SLED16
{1, SW8_CS16, SW8_CS17, SW8_CS18}, // 121 SLED17
{1, SW9_CS16, SW9_CS17, SW9_CS18}, // 122 SLED18
{1, SW10_CS1, SW10_CS2, SW10_CS3}, // 123 LOGO
};
led_config_t g_led_config = {
{
{ 74, 75, 31, 100, 99, 102, 92, 5},
{ 38, 37, 59, 0, 76, 32, 16, 17},
{ 39, 58, 60, __, 77, 53, 1, 18},
{ 40, 3, 61, 4, 78, 87, 2, 19},
{ 41, 42, 62, 63, 79, 80, 21, 20},
{ 44, 43, 65, 64, 82, 81, 22, 23},
{ 45, 49, 66, 6, 83, 51, 28, 24},
{ 46, 7, 67, 101, 84, 30, 8, 25},
{ 47, 48, 68, 69, 98, 85, 27, 26},
{ 93, 86, 97, 94, 95, 96, 15, 13},
{ 14, 29, 50, 11, 70, 12, 9, 10},
{ 54, 71, 88, 57, 33, __, __, __},
{ 55, 72, 89, 103, 34, __, 52, __},
{ 56, 73, 90, 104, 35, 36, 91, __},
{ 105, 106, 107, 108, 109, 110, 111, 112},
{ 113, 114, 115, 116, 117, 118, 119, 120},
{ 121, 122, 123, __, __, __, __, __},
},
{
{0,0}, {21,0}, {31,0}, {42,0}, {52,0}, {68,0}, {78,0}, {89,0}, {99,0}, {115,0}, {125,0}, {136,0}, {146,0}, {159,0}, {169,0}, {180,0},
{0,15}, {10,15}, {21,15}, {31,15}, {42,15}, {52,15}, {63,15}, {73,15}, {83,15}, {94,15}, {104,15}, {115,15}, {125,15}, {141,15}, {159,15}, {169,15}, {180,15}, {193,15}, {203,15}, {214,15}, {224,15},
{3,27}, {16,27}, {26,27}, {36,27}, {47,27}, {57,27}, {68,27}, {78,27}, {89,27}, {99,27}, {109,27}, {120,27}, {130,27}, {143,27}, {159,27}, {169,27}, {180,27}, {193,27}, {203,27}, {214,27}, {224,34},
{4,40}, {18,40}, {29,40}, {39,40}, {50,40}, {60,40}, {70,40}, {81,40}, {91,40}, {102,40}, {112,40}, {123,40}, {139,40}, {193,40}, {203,40}, {214,40},
{1,52}, {12,52}, {23,52}, {34,52}, {44,52}, {55,52}, {65,52}, {76,52}, {86,52}, {96,52}, {107,52}, {117,52}, {137,52}, {169,52}, {193,52}, {203,52}, {214,52}, {224,58},
{1,64}, {14,64}, {27,64}, {66,64}, {105,64}, {118,64}, {131,64}, {145,64}, {159,64}, {169,64}, {180,64}, {198,64}, {214,64},
// Lef and right side lights
{0, 15}, {0, 20}, {0, 25}, {0, 30}, {0, 35}, {0, 40}, {0, 45}, {0, 50}, {0, 55},
{224, 15}, {224, 20}, {224, 25}, {224, 30}, {224, 35}, {224, 40}, {224, 45}, {224, 50}, {224, 55},
// logo
{214, 0},
},
{
// Keyboard RGB Matrix
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, 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,
// Lef and right side lights
2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2,
// Logo
8,
}
};
#endif // RGB_MATRIX_ENABLE
#ifdef EEPROM_ENABLE
#include "spi_master.h"
void spi_init(void) {
static bool is_initialised = false;
if (!is_initialised) {
is_initialised = true;
// Try releasing special pins for a short time
setPinInput(SPI_SCK_PIN);
setPinInput(SPI_MOSI_PIN);
setPinInput(SPI_MISO_PIN);
chThdSleepMilliseconds(10);
palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_WB32_CURRENT_LEVEL3);
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
}
}
#endif

View File

@ -0,0 +1,153 @@
{
"keyboard_name": "GMMK3 100% ISO",
"manufacturer": "Glorious",
"url": "http://www.pcgamingrace.com",
"maintainer": "Piotr Kleinschmidt",
"usb": {
"device_version": "0.0.1",
"pid": "0x320F",
"vid": "0x504B"
},
"qmk": {
"tap_keycode_delay": 10
},
"bootmagic": {
"matrix": [1, 3] // Enter Bootloader mode via ESC
},
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "A4", "C1", "C2", "C3"],
"rows": ["B0", "B1", "B2", "B3", "B4", "B5", "C14", "C15", "B8", "B9", "B10", "C8", "C9", "A15", "C4", "C5", "C6"]
},
"diode_direction": "COL2ROW",
"eeprom": {
"driver": "wear_leveling",
"wear_leveling": {
"driver": "spi_flash",
"backing_size": 4096
}
},
"encoder": {
"rotary": [
{"pin_a": "A9", "pin_b": "A8"}
]
},
"processor": "WB32FQ95",
"bootloader": "wb32-dfu",
"layouts": {
"LAYOUT": {
"layout": [
{"label": "Esc", "matrix": [1, 3], "x": 0, "y": 0},
{"label": "F1", "matrix": [2, 6], "x": 2, "y": 0},
{"label": "F2", "matrix": [3, 6], "x": 3, "y": 0},
{"label": "F3", "matrix": [3, 1], "x": 4, "y": 0},
{"label": "F4", "matrix": [3, 3], "x": 5, "y": 0},
{"label": "F5", "matrix": [0, 7], "x": 6.5, "y": 0},
{"label": "F6", "matrix": [6, 3], "x": 7.5, "y": 0},
{"label": "F7", "matrix": [7, 1], "x": 8.5, "y": 0},
{"label": "F8", "matrix": [7, 6], "x": 9.5, "y": 0},
{"label": "F9", "matrix": [10, 6], "x": 11, "y": 0},
{"label": "F10", "matrix": [10, 7], "x": 12, "y": 0},
{"label": "F11", "matrix": [10, 3], "x": 13, "y": 0},
{"label": "F12", "matrix": [10, 5], "x": 14, "y": 0},
{"label": "Prtsc", "matrix": [9, 7], "x": 15.25, "y": 0},
{"label": "ScrLk", "matrix": [10, 0], "x": 16.25, "y": 0},
{"label": "Pause", "matrix": [9, 6], "x": 17.25, "y": 0},
{"label": "Knob", "matrix": [11, 6], "x": 21.5, "y": 0},
{"label": "`", "matrix": [1, 6], "x": 0, "y": 1.25},
{"label": "1", "matrix": [1, 7], "x": 1, "y": 1.25},
{"label": "2", "matrix": [2, 7], "x": 2, "y": 1.25},
{"label": "3", "matrix": [3, 7], "x": 3, "y": 1.25},
{"label": "4", "matrix": [4, 7], "x": 4, "y": 1.25},
{"label": "5", "matrix": [4, 6], "x": 5, "y": 1.25},
{"label": "6", "matrix": [5, 6], "x": 6, "y": 1.25},
{"label": "7", "matrix": [5, 7], "x": 7, "y": 1.25},
{"label": "8", "matrix": [6, 7], "x": 8, "y": 1.25},
{"label": "9", "matrix": [7, 7], "x": 9, "y": 1.25},
{"label": "0", "matrix": [8, 7], "x": 10, "y": 1.25},
{"label": "-", "matrix": [8, 6], "x": 11, "y": 1.25},
{"label": "=", "matrix": [6, 6], "x": 12, "y": 1.25},
{"label": "BS", "matrix": [10, 1], "x": 13, "y": 1.25, "w": 2},
{"label": "Ins", "matrix": [7, 5], "x": 15.25, "y": 1.25},
{"label": "Home", "matrix": [0, 2], "x": 16.25, "y": 1.25},
{"label": "PgUp", "matrix": [1, 5], "x": 17.25, "y": 1.25},
{"label": "NumLk","matrix": [11, 4], "x": 18.5, "y": 1.25},
{"label": "Num/", "matrix": [12, 4], "x": 19.5, "y": 1.25},
{"label": "Num*", "matrix": [13, 4], "x": 20.5, "y": 1.25},
{"label": "Num-", "matrix": [13, 5], "x": 21.5, "y": 1.25},
{"label": "Tab", "matrix": [1, 1], "x": 0, "y": 2.25, "w": 1.5},
{"label": "Q", "matrix": [1, 0], "x": 1.5, "y": 2.25},
{"label": "W", "matrix": [2, 0], "x": 2.5, "y": 2.25},
{"label": "E", "matrix": [3, 0], "x": 3.5, "y": 2.25},
{"label": "R", "matrix": [4, 0], "x": 4.5, "y": 2.25},
{"label": "T", "matrix": [4, 1], "x": 5.5, "y": 2.25},
{"label": "Y", "matrix": [5, 1], "x": 6.5, "y": 2.25},
{"label": "U", "matrix": [5, 0], "x": 7.5, "y": 2.25},
{"label": "I", "matrix": [6, 0], "x": 8.5, "y": 2.25},
{"label": "O", "matrix": [7, 0], "x": 9.5, "y": 2.25},
{"label": "P", "matrix": [8, 0], "x": 10.5, "y": 2.25},
{"label": "[", "matrix": [8, 1], "x": 11.5, "y": 2.25},
{"label": "]", "matrix": [6, 1], "x": 12.5, "y": 2.25},
{"label": "Del", "matrix": [6, 5], "x": 15.25, "y": 2.25},
{"label": "End", "matrix": [12, 6], "x": 16.25, "y": 2.25},
{"label": "PgD", "matrix": [2, 5], "x": 17.25, "y": 2.25},
{"label": "Num7", "matrix": [11, 0], "x": 18.5, "y": 2.25},
{"label": "Num8", "matrix": [12, 0], "x": 19.5, "y": 2.25},
{"label": "Num9", "matrix": [13, 0], "x": 20.5, "y": 2.25},
{"label": "Num+", "matrix": [11, 3], "x": 21.5, "y": 2.25, "h": 2},
{"label": "Caps", "matrix": [2, 1], "x": 0, "y": 3.25, "w": 1.75},
{"label": "A", "matrix": [1, 2], "x": 1.75, "y": 3.25},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 3.25},
{"label": "D", "matrix": [3, 2], "x": 3.75, "y": 3.25},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 3.25},
{"label": "G", "matrix": [4, 3], "x": 5.75, "y": 3.25},
{"label": "H", "matrix": [5, 3], "x": 6.75, "y": 3.25},
{"label": "J", "matrix": [5, 2], "x": 7.75, "y": 3.25},
{"label": "K", "matrix": [6, 2], "x": 8.75, "y": 3.25},
{"label": "L", "matrix": [7, 2], "x": 9.75, "y": 3.25},
{"label": ";", "matrix": [8, 2], "x": 10.75, "y": 3.25},
{"label": "'", "matrix": [8, 3], "x": 11.75, "y": 3.25},
{"label": "#", "matrix": [10, 2], "x": 12.75, "y": 3.25},
{"label": "Enter", "matrix": [10, 4], "x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
{"label": "Num4", "matrix": [11, 1], "x": 18.5, "y": 3.25},
{"label": "Num5", "matrix": [12, 1], "x": 19.5, "y": 3.25},
{"label": "Num6", "matrix": [13, 1], "x": 20.5, "y": 3.25},
{"label": "LShft", "matrix": [0, 0], "x": 0, "y": 4.25, "w": 1.25},
{"label": "\\", "matrix": [0, 1], "x": 1.25, "y": 4.25},
{"label": "Z", "matrix": [1, 4], "x": 2.25, "y": 4.25},
{"label": "X", "matrix": [2, 4], "x": 3.25, "y": 4.25},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 4.25},
{"label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25},
{"label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25},
{"label": "N", "matrix": [5, 5], "x": 7.25, "y": 4.25},
{"label": "M", "matrix": [5, 4], "x": 8.25, "y": 4.25},
{"label": ",", "matrix": [6, 4], "x": 9.25, "y": 4.25},
{"label": ".", "matrix": [7, 4], "x": 10.25, "y": 4.25},
{"label": "/", "matrix": [8, 5], "x": 11.25, "y": 4.25},
{"label": "RShft", "matrix": [9, 1], "x": 12.25, "y": 4.25, "w": 2.75},
{"label": "Up", "matrix": [3, 5], "x": 16.25, "y": 4.25},
{"label": "Num1", "matrix": [11, 2], "x": 18.5, "y": 4.25},
{"label": "Num2", "matrix": [12, 2], "x": 19.5, "y": 4.25},
{"label": "Num3", "matrix": [13, 2], "x": 20.5, "y": 4.25},
{"label": "NumEnt", "matrix": [13, 6], "x": 21.5, "y": 4.25, "h": 2},
{"label": "LCtr", "matrix": [0, 6], "x": 0, "y": 5.25, "w": 1.25},
{"label": "LWin", "matrix": [9, 0], "x": 1.25, "y": 5.25, "w": 1.25},
{"label": "LAlt", "matrix": [9, 3], "x": 2.5, "y": 5.25, "w": 1.25},
{"label": "Space", "matrix": [9, 4], "x": 3.75, "y": 5.25, "w": 6.25},
{"label": "RAlt", "matrix": [9, 5], "x": 10, "y": 5.25, "w": 1.25},
{"label": "Fn", "matrix": [9, 2], "x": 11.25, "y": 5.25, "w": 1.25},
{"label": "App", "matrix": [8, 4], "x": 12.5, "y": 5.25, "w": 1.25},
{"label": "RCtr", "matrix": [0, 4], "x": 13.75, "y": 5.25, "w": 1.25},
{"label": "Left", "matrix": [0, 3], "x": 15.25, "y": 5.25},
{"label": "Down", "matrix": [7, 3], "x": 16.25, "y": 5.25},
{"label": "Right", "matrix": [0, 5], "x": 17.25, "y": 5.25},
{"label": "Num0", "matrix": [12, 3], "x": 18.5, "y": 5.25, "w": 2},
{"label": "Num.", "matrix": [13, 3], "x": 20.5, "y": 5.25}
]
}
}
}

View File

@ -0,0 +1,19 @@
/* Copyright 2024 Glorious, LLC
*
* 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 DYNAMIC_KEYMAP_LAYER_COUNT 4

View File

@ -0,0 +1,109 @@
/* Copyright 2024 Glorious, LLC
*
* 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
/*
*
* Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10F11F12 PScScrPse Mut
*
*
* ` 1 2 3 4 5 6 7 8 9 0 - = Backsp InsHomPgU Num / * -
*
* Tab Q W E R T Y U I O P [ ] DelEndPgD 7 8 9
* Ent +
* Caps A S D F G H J K L ; ' # 4 5 6
*
* Shft \ Z X C V B N M , . / Shift 1 2 3
* Ent
* CtrlGUI Alt Alt Fn MenuCtrl 0 .
*
*/
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Switching between Windows and Mac OS Base layers is done via DIP switch
enum custom_layers {
WIN_BL, // Windows Base Layer
WIN_FL, // Windows Function Layer
MACOS_BL, // Mac OS Base Layer
MACOS_FL // Mac OS Function Layer
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Windows Base Layer (Default Layer) */
[WIN_BL] = 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_SCRL, KC_PAUS, 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_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FL), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
),
/* Windows Function Layer */
[WIN_FL] = LAYOUT(
_______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_SAD, RGB_SAI, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD, _______, _______
),
/* Mac OS Base Layer (Default Layer) */
[MACOS_BL] = 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_SCRL, KC_PAUS, 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_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MACOS_FL), KC_ROPT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
),
/* Mac OS Function Layer */
[MACOS_FL] = LAYOUT(
_______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_SAD, RGB_SAI, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD, _______, _______
),
};
#ifdef DIP_SWITCH_ENABLE
bool dip_switch_update_user(uint8_t index, bool active) {
if (index == 0) {
if (active){
layer_off(MACOS_BL);
layer_on(WIN_BL);
} else {
layer_off(WIN_BL);
layer_on(MACOS_BL);
}
}
return true;
}
#endif

View File

@ -0,0 +1 @@
# GMMK3 100% ISO Layout

View File

@ -0,0 +1,21 @@
# GMMK3 100% (ISO)
A keyboard made and sold by Glorious LLC. Equipped with the WestBerry Q95 microcontroller.
* Keyboard Maintainer: [Glorious](TBD)
* Hardware Supported: GMMK3
* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com)
Make example for this keyboard (after setting up your build environment):
make gmmk/gmmk3/p100/iso:default
Flashing example for this keyboard:
make gmmk/gmmk3/p100/iso:default:flash
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).
## Bootloader
The user can enter bootloader mode for the keyboard by holding down `Esc` when the keyboard is unplugged and plugging in the keyboard while these key is held down.

View File

@ -0,0 +1,25 @@
/* Copyright (C) 2024 Westberry Technology (ChangZhou) Corp., Ltd
*
* 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_next <mcuconf.h>
#undef WB32_SPI_USE_QSPI
#define WB32_SPI_USE_QSPI TRUE
#undef WB32_SPI_USE_SPIM2
#define WB32_SPI_USE_SPIM2 TRUE