diff --git a/keyboards/gmmk/gmmk3/p100/ansi/config.h b/keyboards/gmmk/gmmk3/p100/ansi/config.h new file mode 100644 index 00000000000..9933fe32a19 --- /dev/null +++ b/keyboards/gmmk/gmmk3/p100/ansi/config.h @@ -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 . + */ + +#pragma once + +#define DRIVER_2_LED_TOTAL (56) +#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) diff --git a/keyboards/gmmk/gmmk3/p100/ansi/keymaps/default/config.h b/keyboards/gmmk/gmmk3/p100/ansi/keymaps/default/config.h new file mode 100644 index 00000000000..816a5d0fe2d --- /dev/null +++ b/keyboards/gmmk/gmmk3/p100/ansi/keymaps/default/config.h @@ -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 . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 4 diff --git a/keyboards/gmmk/gmmk3/p100/ansi/keymaps/viach/config.h b/keyboards/gmmk/gmmk3/p100/ansi/keymaps/viach/config.h index 21e844b4559..34ec5885608 100644 --- a/keyboards/gmmk/gmmk3/p100/ansi/keymaps/viach/config.h +++ b/keyboards/gmmk/gmmk3/p100/ansi/keymaps/viach/config.h @@ -16,4 +16,4 @@ #pragma once -#define DYNAMIC_KEYMAP_LAYER_COUNT 3 +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 diff --git a/keyboards/gmmk/gmmk3/p100/ansi/keymaps/viach/keymap.c b/keyboards/gmmk/gmmk3/p100/ansi/keymaps/viach/keymap.c index f3ccf666a18..b4d75412ee5 100644 --- a/keyboards/gmmk/gmmk3/p100/ansi/keymaps/viach/keymap.c +++ b/keyboards/gmmk/gmmk3/p100/ansi/keymaps/viach/keymap.c @@ -36,25 +36,27 @@ // 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. enum custom_layers { - _BL, // Base Layer - _FL, // Function Layer - _CL // Custom Layer + WIN_BL, // Windows Base Layer + WIN_FL, // Windows Function Layer + MACOS_BL, // Mac OS Base Layer + MACOS_FL, // Mac OS Function Layer + _CL // Custom Layer }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* Base Layer (Default Layer) */ - [_BL] = LAYOUT( + /* 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(_FL), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + 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 ), - /* Function Layer */ - [_FL] = LAYOUT( + /* Windows Function Layer */ + [WIN_FL] = LAYOUT( QK_BOOT, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -64,6 +66,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, 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, _______, _______ + ), + /* Custom Layer */ [_CL] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -78,8 +102,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [_BL] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, - [_FL] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [WIN_BL] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [WIN_FL] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [MACOS_BL] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [MACOS_FL] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, [_CL] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, }; #endif // ENCODER_MAP_ENABLE @@ -125,3 +151,21 @@ void via_custom_value_command_kb(uint8_t *data, uint8_t length) { } #endif // VIA_ENABLE +#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 \ No newline at end of file diff --git a/keyboards/gmmk/gmmk3/p100/config.h b/keyboards/gmmk/gmmk3/p100/config.h index bcb141d5064..1df3c2f8d25 100644 --- a/keyboards/gmmk/gmmk3/p100/config.h +++ b/keyboards/gmmk/gmmk3/p100/config.h @@ -35,8 +35,6 @@ #define AW20216S_EN_PIN C13 #define DRIVER_1_LED_TOTAL (67) -#define DRIVER_2_LED_TOTAL (56) #define MATRIX_ROWS 17 -#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL) #define DIP_SWITCH_PINS { A13 } diff --git a/keyboards/gmmk/gmmk3/p100/iso/config.h b/keyboards/gmmk/gmmk3/p100/iso/config.h new file mode 100644 index 00000000000..5cd1092d467 --- /dev/null +++ b/keyboards/gmmk/gmmk3/p100/iso/config.h @@ -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 . + */ + +#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) \ No newline at end of file diff --git a/keyboards/gmmk/gmmk3/p100/iso/iso.c b/keyboards/gmmk/gmmk3/p100/iso/iso.c index 748a9cb47b0..dbb2366e9b5 100644 --- a/keyboards/gmmk/gmmk3/p100/iso/iso.c +++ b/keyboards/gmmk/gmmk3/p100/iso/iso.c @@ -146,38 +146,39 @@ const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = { {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, SW10_CS13, SW10_CS14, SW10_CS15}, // 114 SLED10 - {1, SW1_CS16, SW1_CS17, SW1_CS18}, // 115 SLED11 - {1, SW2_CS16, SW2_CS17, SW2_CS18}, // 116 SLED12 - {1, SW3_CS16, SW3_CS17, SW3_CS18}, // 117 SLED13 - {1, SW4_CS16, SW4_CS17, SW4_CS18}, // 118 SLED14 - {1, SW5_CS16, SW5_CS17, SW5_CS18}, // 119 SLED15 - {1, SW6_CS16, SW6_CS17, SW6_CS18}, // 120 SLED16 - {1, SW7_CS16, SW7_CS17, SW7_CS18}, // 121 SLED17 - {1, SW8_CS16, SW8_CS17, SW8_CS18}, // 122 SLED18 - {1, SW9_CS16, SW9_CS17, SW9_CS18}, // 123 SLED19 - {1, SW10_CS16, SW10_CS17, SW10_CS18}, // 124 SLED20 + {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}, // 125 LOGO + {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, __}, + { 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}, @@ -187,8 +188,8 @@ led_config_t g_led_config = { {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}, {0, 60}, - {224, 15}, {224, 20}, {224, 25}, {224, 30}, {224, 35}, {224, 40}, {224, 45}, {224, 50}, {224, 55}, {224, 60}, + {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}, }, @@ -201,8 +202,8 @@ led_config_t g_led_config = { 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, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, // Logo 8, } diff --git a/keyboards/gmmk/gmmk3/p100/iso/info.json b/keyboards/gmmk/gmmk3/p100/iso/keyboard.json similarity index 99% rename from keyboards/gmmk/gmmk3/p100/iso/info.json rename to keyboards/gmmk/gmmk3/p100/iso/keyboard.json index a0e5fbde2d9..a4ddcc494a7 100644 --- a/keyboards/gmmk/gmmk3/p100/iso/info.json +++ b/keyboards/gmmk/gmmk3/p100/iso/keyboard.json @@ -16,7 +16,7 @@ }, "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"] + "rows": ["B0", "B1", "B2", "B3", "B4", "B5", "C14", "C15", "B8", "B9", "B10", "C8", "C9", "A15", "C4", "C5", "C6"] }, "diode_direction": "COL2ROW", "eeprom": { diff --git a/keyboards/gmmk/gmmk3/p100/iso/keymaps/default/config.h b/keyboards/gmmk/gmmk3/p100/iso/keymaps/default/config.h new file mode 100644 index 00000000000..816a5d0fe2d --- /dev/null +++ b/keyboards/gmmk/gmmk3/p100/iso/keymaps/default/config.h @@ -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 . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 4 diff --git a/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/animations/direct.h b/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/animations/direct.h new file mode 100644 index 00000000000..011334dbbe5 --- /dev/null +++ b/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/animations/direct.h @@ -0,0 +1,17 @@ +RGB_MATRIX_EFFECT(DIRECT) + +#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS +extern uint8_t color_buffer[RGB_MATRIX_LED_COUNT * 2]; +extern uint8_t brightness_buffer[RGB_MATRIX_LED_COUNT]; + +static bool DIRECT(effect_params_t* params) { + RGB_MATRIX_USE_LIMITS(led_min, led_max); + + for (uint8_t i = led_min; i < led_max; i++) { + RGB rgb = hsv_to_rgb((HSV){color_buffer[i * 2], color_buffer[i * 2 + 1], scale8(rgb_matrix_config.hsv.v, brightness_buffer[i])}); + rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); + } + + return led_max < RGB_MATRIX_LED_COUNT; +} +#endif diff --git a/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/config.h b/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/config.h new file mode 100644 index 00000000000..34ec5885608 --- /dev/null +++ b/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/config.h @@ -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 . + */ + +#pragma once + +#define DYNAMIC_KEYMAP_LAYER_COUNT 5 diff --git a/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/design_layout.json b/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/design_layout.json new file mode 100644 index 00000000000..eb14a801991 --- /dev/null +++ b/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/design_layout.json @@ -0,0 +1,458 @@ +{ + "name": "GMMK3 100% ANSI", + "vendorId": "0x504B", + "productId": "0x320F", + "keycodes": [ + "qmk_lighting" + ], + "menus": [ + { + "label": "Lighting", + "content": [ + { + "label": "Backlight", + "content": [ + { + "label": "Brightness", + "type": "range", + "options": [ + 0, + 255 + ], + "content": [ + "id_qmk_rgb_matrix_brightness", + 3, + 1 + ] + }, + { + "label": "Effect", + "type": "dropdown", + "content": [ + "id_qmk_rgb_matrix_effect", + 3, + 2 + ], + "options": [ + [ + "None", + 0 + ], + [ + "Solid Color", + 1 + ], + [ + "Breathing", + 2 + ], + [ + "Band Spiral Val", + 3 + ], + [ + "Cycle All", + 4 + ], + [ + "Cycle Left Right", + 5 + ], + [ + "Cycle Up Down", + 6 + ], + [ + "Rainbow Moving Chevron", + 7 + ], + [ + "Cycle Out In", + 8 + ], + [ + "Cycle Out In Dual", + 9 + ], + [ + "Cycle Pinwheel", + 10 + ], + [ + "Cycle Spiral", + 11 + ], + [ + "Dual Beacon", + 12 + ], + [ + "Rainbow Beacon", + 13 + ], + [ + "Jellybean Raindrops", + 14 + ], + [ + "Pixel Rain", + 15 + ], + [ + "Typing Heatmap", + 16 + ], + [ + "Digital Rain", + 17 + ], + [ + "Reactive Simple", + 18 + ], + [ + "Reactive Multiwide", + 19 + ], + [ + "Reactive Multinexus", + 20 + ], + [ + "Splash", + 21 + ], + [ + "Solid Splash", + 22 + ], + [ + "Direct", + 23 + ] + ] + }, + { + "showIf": "{id_qmk_rgb_matrix_effect} > 1 && {id_qmk_rgb_matrix_effect} != 23", + "label": "Effect Speed", + "type": "range", + "options": [ + 0, + 255 + ], + "content": [ + "id_qmk_rgb_matrix_effect_speed", + 3, + 3 + ] + }, + { + "showIf": "{id_qmk_rgb_matrix_effect} != 0 && {id_qmk_rgb_matrix_effect} != 23 && ( {id_qmk_rgb_matrix_effect} < 4 || {id_qmk_rgb_matrix_effect} == 18 || ({id_qmk_rgb_matrix_effect} > 17 && {id_qmk_rgb_matrix_effect} != 21) ) ", + "label": "Color", + "type": "color", + "content": [ + "id_qmk_rgb_matrix_color", + 3, + 4 + ] + }, + { + "showIf": "{id_qmk_rgb_matrix_effect} == 23", + "label": "Color Palette", + "type": "color-palette", + "content": [ + "id_qmk_rgb_matrix_color", + 3, + 4 + ] + } + ] + } + ] + } + ], + "matrix": { + "rows": 17, + "cols": 8 + }, + "layouts": { + "keymap": [ + [ + { + "c": "#777777" + }, + "1,3\nl0", + { + "x": 1.0, + "c": "#cccccc" + }, + "2,6\nl1", + "3,6\nl2", + "3,1\nl3", + "3,3\nl4", + { + "x": 0.5, + "c": "#777777" + }, + "0,7\nl5", + "6,3\nl6", + "7,1\nl7", + "7,6\nl8", + { + "x": 0.5, + "c": "#cccccc" + }, + "10,6\nl9", + "10,7\nl10", + "10,3\nl11", + "10,5\nl12", + { + "x": 0.25, + "c": "#777777" + }, + "9,7\nl13", + "10,0\nl14", + "9,6\nl15", + { + "x": 3.25 + }, + "11,6\n\n\n\n\n\n\n\n\ne0" + ], + [ + { + "y": 0.25, + "c": "#cccccc" + }, + "1,6\nl16", + "1,7\nl17", + "2,7\nl18", + "3,7\nl19", + "4,7\nl20", + "4,6\nl21", + "5,6\nl22", + "5,7\nl23", + "6,7\nl24", + "7,7\nl25", + "8,7\nl26", + "8,6\nl27", + "6,6\nl28", + { + "c": "#aaaaaa", + "w": 2 + }, + "10,1\nl29", + { + "x": 0.25, + "c": "#cccccc" + }, + "7,5\nl30", + "0,2\nl31", + "1,5\nl32", + { + "x": 0.25 + }, + "11,4\nl33", + "12,4\nl34", + "13,4\nl35", + "13,5\nl36" + ], + [ + { + "c": "#aaaaaa", + "w": 1.5 + }, + "1,1\nl37", + { + "c": "#cccccc" + }, + "1,0\nl38", + "2,0\nl39", + "3,0\nl40", + "4,0\nl41", + "4,1\nl42", + "5,1\nl43", + "5,0\nl44", + "6,0\nl45", + "7,0\nl46", + "8,0\nl47", + "8,1\nl48", + "6,1\nl49", + { + "w": 1.5 + }, + "10,2\nl50", + { + "x": 0.25 + }, + "6,5\nl51", + "12,6\nl52", + "2,5\nl53", + { + "x": 0.25 + }, + "11,0\nl54", + "12,0\nl55", + "13,0\nl56", + { + "h": 2 + }, + "11,3\nl57" + ], + [ + { + "c": "#aaaaaa", + "w": 1.75 + }, + "2,1\nl58", + { + "c": "#cccccc" + }, + "1,2\nl59", + "2,2\nl60", + "3,2\nl61", + "4,2\nl62", + "4,3\nl63", + "5,3\nl64", + "5,2\nl65", + "6,2\nl66", + "7,2\nl67", + "8,2\nl68", + "8,3\nl69", + { + "c": "#777777", + "w": 2.25 + }, + "10,4\nl70", + { + "x": 3.5, + "c": "#cccccc" + }, + "11,1\nl71", + "12,1\nl72", + "13,1\nl73" + ], + [ + { + "c": "#aaaaaa", + "w": 2.25 + }, + "0,0\nl74", + { + "c": "#cccccc" + }, + "1,4\nl75", + "2,4\nl76", + "3,4\nl77", + "4,4\nl78", + "4,5\nl79", + "5,5\nl80", + "5,4\nl81", + "6,4\nl82", + "7,4\nl83", + "8,5\nl84", + { + "c": "#aaaaaa", + "w": 2.75 + }, + "9,1\nl85", + { + "x": 1.25, + "c": "#777777" + }, + "3,5\nl86", + { + "x": 1.25, + "c": "#cccccc" + }, + "11,2\nl87", + "12,2\nl88", + "13,2\nl89", + { + "h": 2 + }, + "13,6\nl90" + ], + [ + { + "c": "#aaaaaa", + "w": 1.25 + }, + "0,6\nl91", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "9,0\nl92", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "9,3\nl93", + { + "c": "#cccccc", + "w": 6.25 + }, + "9,4\nl94", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "9,5\nl95", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "9,2\nl96", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "8,4\nl97", + { + "c": "#aaaaaa", + "w": 1.25 + }, + "0,4\nl98", + { + "x": 0.25, + "c": "#777777" + }, + "0,3\nl99", + "7,3\nl100", + "0,5\nl101", + { + "x": 0.25, + "c": "#cccccc", + "w": 2 + }, + "12,3\nl102", + "13,3\nl103" + ], + [ + "14,0\nl104", + "14,1\nl105", + "14,2\nl106", + "14,3\nl107", + "14,4\nl108", + "14,5\nl109", + "14,6\nl110", + "14,7\nl111" + ], + [ + "15,0\nl112", + "15,2\nl113", + "15,3\nl114", + "15,4\nl115", + "15,5\nl116", + "15,6\nl117", + "15,7\nl118" + ], + [ + "16,0\nl119", + "16,1\nl120", + "16,2\nl121", + "16,3\nl122" + ] + ] + } +} \ No newline at end of file diff --git a/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/keymap.c b/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/keymap.c new file mode 100644 index 00000000000..cac10312e5b --- /dev/null +++ b/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/keymap.c @@ -0,0 +1,160 @@ +/* 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 . + */ + +#include QMK_KEYBOARD_H + +/* +* ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───┐ +* │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│ │Mut│ +* └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ └───┘ +* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐ +* │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │ +* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤ +* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ │ 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│ +* │Ctrl│GUI │Alt │ │ Alt│ Fn │Menu│Ctrl│ │ ← │ ↓ │ → │ │ 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, _______, _______ + ), +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [WIN_BL] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [WIN_FL] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [MACOS_BL] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [MACOS_FL] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [_CL] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, +}; +#endif // ENCODER_MAP_ENABLE + +uint8_t color_buffer[RGB_MATRIX_LED_COUNT * 2] = {0}; +uint8_t brightness_buffer[RGB_MATRIX_LED_COUNT] = {[0 ... RGB_MATRIX_LED_COUNT - 1] = 255}; + +#ifdef VIA_ENABLE +void via_custom_value_command_kb(uint8_t *data, uint8_t length) { + uint8_t channel_id = data[1]; + if (channel_id != id_custom_channel) return; + + uint8_t *command_id = &(data[0]); + uint8_t value_id = data[2]; + uint8_t led_index = data[3]; + uint8_t led_count = data[4]; + + switch (*command_id) { + case id_custom_set_value: + if (value_id == 1) { + memcpy(color_buffer + led_index * 2, data + 5, led_count * 2); + } else if (value_id == 2) { + memcpy(brightness_buffer + led_index, data + 5, led_count); + } + break; + + case id_custom_get_value: + if (value_id == 1) { + memcpy(data + 5, color_buffer + led_index * 2, led_count * 2); + } else if (value_id == 2) { + memcpy(data + 5, brightness_buffer + led_index, led_count); + } + break; + + case id_custom_save: + // optional: implement persistent save here + break; + + default: + *command_id = id_unhandled; + break; + } +} +#endif // VIA_ENABLE + +#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 \ No newline at end of file diff --git a/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/rgb_matrix_user.inc b/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/rgb_matrix_user.inc new file mode 100644 index 00000000000..194f79c4313 --- /dev/null +++ b/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/rgb_matrix_user.inc @@ -0,0 +1 @@ +#include "animations/direct.h" diff --git a/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/rules.mk b/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/rules.mk new file mode 100644 index 00000000000..2803f85fb4d --- /dev/null +++ b/keyboards/gmmk/gmmk3/p100/iso/keymaps/viach/rules.mk @@ -0,0 +1,4 @@ +ENCODER_MAP_ENABLE = yes +VIA_ENABLE = yes +BOOTMAGIC_ENABLE = yes +RGB_MATRIX_CUSTOM_USER = yes