From bf9487acf77d6f3a64086d098c29d212784fc1c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Jane=C5=BEi=C4=8D?= Date: Sun, 3 May 2026 23:43:17 +0200 Subject: [PATCH] feat: scaffold users/matej shared QMK userspace --- users/.keep | 0 users/matej/config.h | 1 + users/matej/matej.c | 65 ++++++++++++++++++++++++++++++++++++++++++++ users/matej/matej.h | 15 ++++++++++ users/matej/rules.mk | 1 + 5 files changed, 82 insertions(+) delete mode 100644 users/.keep create mode 100644 users/matej/config.h create mode 100644 users/matej/matej.c create mode 100644 users/matej/matej.h create mode 100644 users/matej/rules.mk diff --git a/users/.keep b/users/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/users/matej/config.h b/users/matej/config.h new file mode 100644 index 0000000..6f70f09 --- /dev/null +++ b/users/matej/config.h @@ -0,0 +1 @@ +#pragma once diff --git a/users/matej/matej.c b/users/matej/matej.c new file mode 100644 index 0000000..3381e67 --- /dev/null +++ b/users/matej/matej.c @@ -0,0 +1,65 @@ +/* Copyright 2026 Matej Janežič + * + * 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 "matej.h" + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case M_DSC_SEP: + if (record->event.pressed) { + SEND_STRING(SS_LSFT(SS_TAP(X_SCLN)) SS_DELAY(100) SS_LSFT(SS_TAP(X_MINUS)) SS_DELAY(100) SS_LSFT(SS_TAP(X_MINUS)) SS_DELAY(100) SS_LSFT(SS_TAP(X_SCLN)) SS_DELAY(100) SS_TAP(X_ENTER)); + } + return false; + case M_BASE_PEEK: + if (record->event.pressed) + layer_off(_GAME); + else + layer_on(_GAME); + return false; + } + return true; +} + +void keyboard_post_init_user(void) { + rgb_matrix_enable(); +} + +extern rgb_config_t rgb_matrix_config; + +static void set_layer_color_hsv(uint8_t h, uint8_t s, uint8_t v) { + HSV hsv = {h, s, v}; + RGB rgb = hsv_to_rgb(hsv); + uint8_t scale = rgb_matrix_config.hsv.v; + rgb_matrix_set_color_all((rgb.r * scale) / 255, (rgb.g * scale) / 255, (rgb.b * scale) / 255); +} + +bool rgb_matrix_indicators_user(void) { + switch (get_highest_layer(layer_state)) { + case _BASE: + set_layer_color_hsv(74, 218, 204); + break; + case _FN: + set_layer_color_hsv(41, 255, 255); + break; + case _NAV: + set_layer_color_hsv(152, 255, 255); + break; + case _GAME: + set_layer_color_hsv(0, 255, 200); + break; + } + return true; +} diff --git a/users/matej/matej.h b/users/matej/matej.h new file mode 100644 index 0000000..582211d --- /dev/null +++ b/users/matej/matej.h @@ -0,0 +1,15 @@ +#pragma once + +#include "quantum.h" + +enum layers { + _BASE, + _FN, + _NAV, + _GAME, +}; + +enum custom_keycodes { + M_DSC_SEP = SAFE_RANGE, + M_BASE_PEEK, +}; diff --git a/users/matej/rules.mk b/users/matej/rules.mk new file mode 100644 index 0000000..52cd7de --- /dev/null +++ b/users/matej/rules.mk @@ -0,0 +1 @@ +SRC += matej.c