From 4ed1c1de0e7e0695a8bc2596e6680bef42da01bc Mon Sep 17 00:00:00 2001 From: matze Date: Wed, 12 Feb 2025 00:32:00 +0100 Subject: [PATCH] add keymap and rgb sleep setting for gmmk2 --- .../gmmk/gmmk2/p96/iso/keymaps/matze/config.h | 1 + .../gmmk/gmmk2/p96/iso/keymaps/matze/keymap.c | 120 ++++++++++++++++++ qmk.json | 6 +- 3 files changed, 125 insertions(+), 2 deletions(-) create mode 100644 keyboards/gmmk/gmmk2/p96/iso/keymaps/matze/config.h create mode 100644 keyboards/gmmk/gmmk2/p96/iso/keymaps/matze/keymap.c diff --git a/keyboards/gmmk/gmmk2/p96/iso/keymaps/matze/config.h b/keyboards/gmmk/gmmk2/p96/iso/keymaps/matze/config.h new file mode 100644 index 0000000..18d8b18 --- /dev/null +++ b/keyboards/gmmk/gmmk2/p96/iso/keymaps/matze/config.h @@ -0,0 +1 @@ +#define RGB_DISABLE_WHEN_USB_SUSPENDED \ No newline at end of file diff --git a/keyboards/gmmk/gmmk2/p96/iso/keymaps/matze/keymap.c b/keyboards/gmmk/gmmk2/p96/iso/keymaps/matze/keymap.c new file mode 100644 index 0000000..3544782 --- /dev/null +++ b/keyboards/gmmk/gmmk2/p96/iso/keymaps/matze/keymap.c @@ -0,0 +1,120 @@ +/* Copyright 2021 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 +#include QMK_KEYBOARD_H + +// 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. +#define _BL 0 +#define _FL 1 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap _BL: Base Layer (Default Layer) + */ +[_BL] = LAYOUT( + QK_GESC, 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_PSCR, KC_INS, KC_HOME, KC_END, + 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_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_ENT, 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_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_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT), + + /* Keymap _FL: Function Layer + */ +[_FL] = LAYOUT( + QK_BOOT, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MRWD, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLU, KC_VOLD, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, RM_SATU, RM_SATD, RM_SPDD, RM_SPDU, _______, _______, _______, _______, _______, _______, _______, RM_VALU, _______, _______, _______, _______, + _______, UC_WIN, _______, _______, _______, _______, _______, RM_PREV, RM_VALD, RM_NEXT, _______, _______) +}; + +#define VAL_ROOT 255, 12, 12 +#define VAL_WEIS 255, 255, 255 +#define CO_ROOT {VAL_ROOT} +#define CO_WEIS {VAL_WEIS} +#define CAPS_EN_CO VAL_ROOT +#define CAPS_IDX 54 +#define NUM_EN_CO VAL_ROOT +#define NUM_IDX 32 +#define SIDECO_ROOT 255, 4, 4 +#define SIDECO_OFF 0, 0, 0 +#define LEFT_SIDE_LED_START 100 +#define LEFT_SIDE_LED_END 109 +#define LEFT_SIDE_LEN 9 +#define RIGHT_SIDE_LED_START 110 +#define RIGHT_SIDE_LED_END 120 +#define RIGHT_SIDE_LEN 10 +#define BLIP_WIDTH 1 +#define BLIP_SPEED INT_MAX / 40; + +int blip_pos = 0 + BLIP_WIDTH; +int blip_speed = BLIP_SPEED; + +int keycolors[MATRIX_ROWS*MATRIX_COLS][3] = { + CO_ROOT, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, + CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, + CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, + CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, + CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, + CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, CO_WEIS, +}; + +void rgb_matrix_set_color_area(int a, int b, int red, int green, int blue) { + for (int i = a; i < b; i++) { + rgb_matrix_set_color(i, red, green, blue); + } +} + +void set_special_leds(void){ + if (host_keyboard_led_state().caps_lock) { + rgb_matrix_set_color_area(LEFT_SIDE_LED_START, RIGHT_SIDE_LED_END, SIDECO_OFF); + rgb_matrix_set_color(CAPS_IDX, CAPS_EN_CO); + + if (blip_pos+blip_speed-BLIP_WIDTH < 0) { + blip_speed = -blip_speed; + } + + blip_pos += blip_speed; + + int left_scaled_blip_pos = blip_pos / (INT_MAX / LEFT_SIDE_LEN); + int left_blip_start = LEFT_SIDE_LED_START + left_scaled_blip_pos; + int right_scaled_blip_pos = blip_pos / (INT_MAX / RIGHT_SIDE_LEN); + int right_blip_start = RIGHT_SIDE_LED_START + right_scaled_blip_pos; + //rgb_matrix_set_color_area(0, 18 * ((float)blip_pos / INT_MAX), 0, 255, 0); + + rgb_matrix_set_color_area(left_blip_start, left_blip_start+BLIP_WIDTH, SIDECO_ROOT); + rgb_matrix_set_color_area(right_blip_start, right_blip_start+BLIP_WIDTH, SIDECO_ROOT); + } + else { + rgb_matrix_set_color_area(LEFT_SIDE_LED_START, RIGHT_SIDE_LED_END, SIDECO_ROOT); + } + if (host_keyboard_led_state().num_lock) { + rgb_matrix_set_color(NUM_IDX, NUM_EN_CO); + } +} + + +// Function to set the LED colors +bool rgb_matrix_indicators_user(void) { + for(int i = 0; i < MATRIX_ROWS*MATRIX_COLS; i++){ + rgb_matrix_set_color(i, keycolors[i][0], keycolors[i][1], keycolors[i][2]); + } + set_special_leds(); + return true; +} \ No newline at end of file diff --git a/qmk.json b/qmk.json index 3afc389..3b3306a 100644 --- a/qmk.json +++ b/qmk.json @@ -1,4 +1,6 @@ { - "userspace_version": "1.0", - "build_targets": [] + "userspace_version": "1.1", + "build_targets": [ + ["gmmk/gmmk2/p96/iso", "matze"] + ] } \ No newline at end of file