From d058091d0b2f98791d37c4a77779a8202592284f Mon Sep 17 00:00:00 2001 From: Luis Garcia Date: Wed, 5 Apr 2023 12:35:34 -0600 Subject: Add peterfalken userspace & keymaps (#19897) Co-authored-by: Peter.Falken --- .../work_louder/micro/keymaps/peterfalken/config.h | 7 ++ .../work_louder/micro/keymaps/peterfalken/keymap.c | 113 +++++++++++++++++++++ .../micro/keymaps/peterfalken/readme.md | 14 +++ .../work_louder/micro/keymaps/peterfalken/rules.mk | 3 + 4 files changed, 137 insertions(+) create mode 100644 keyboards/work_louder/micro/keymaps/peterfalken/config.h create mode 100644 keyboards/work_louder/micro/keymaps/peterfalken/keymap.c create mode 100644 keyboards/work_louder/micro/keymaps/peterfalken/readme.md create mode 100644 keyboards/work_louder/micro/keymaps/peterfalken/rules.mk (limited to 'keyboards/work_louder/micro') diff --git a/keyboards/work_louder/micro/keymaps/peterfalken/config.h b/keyboards/work_louder/micro/keymaps/peterfalken/config.h new file mode 100644 index 0000000000..dc1dd935a9 --- /dev/null +++ b/keyboards/work_louder/micro/keymaps/peterfalken/config.h @@ -0,0 +1,7 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define CUSTOM_KEYMAP_LAYERS +#define CUSTOM_LAYER_STATE diff --git a/keyboards/work_louder/micro/keymaps/peterfalken/keymap.c b/keyboards/work_louder/micro/keymaps/peterfalken/keymap.c new file mode 100644 index 0000000000..8ef9a4eb97 --- /dev/null +++ b/keyboards/work_louder/micro/keymaps/peterfalken/keymap.c @@ -0,0 +1,113 @@ +// Copyright 2023 Peter.Falken (@PeterFalken) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "peterfalken.h" + +enum keymap_layers { + _L0, + _L1, + _L2, + _L3, + _L4, + _L5, + _L6, + _ADJUST +}; + +// Shorter custom keycodes +#define CK_UNDO LGUI(KC_Z) // UNDO = CMD + Z +#define CK_REDO SGUI(KC_Z) // REDO = CMD + SHIFT + Z + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_L0] = LAYOUT( + KC_MPLY, KC_9, KC_0, KC_NO, + KC_5, KC_6, KC_7, KC_8, + KC_1, KC_2, KC_3, KC_4, + TO(1), KC_DOT, KC_COMM, _______ + ), + [_L1] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, + KC_5, KC_6, KC_7, KC_8, + KC_9, KC_0, KC_A, KC_B, + TO(2), KC_C, KC_D, KC_E + ), + [_L2] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + TO(3), _______, _______, _______ + ), + [_L3] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + TO(4), _______, _______, _______ + ), + [_L4] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + TO(5), _______, _______, _______ + ), + [_L5] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + TO(6), _______, _______, _______ + ), + [_L6] = LAYOUT( + _______, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + TO(7), _______, _______, _______ + ), + [_ADJUST] = LAYOUT( + QK_BOOT, _______, _______, _______, + _______, _______, _______, _______, + _______, _______, _______, _______, + TO(0), _______, _______, _______ + ), +}; + +typedef union { + uint32_t raw; + struct { + uint8_t led_level : 3; + }; +} work_louder_config_t; + +work_louder_config_t work_louder_config; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(CK_UNDO, CK_REDO) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, + { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }, +}; +#endif // defined(ENCODER_MAP_ENABLE) + +layer_state_t layer_state_set_user(layer_state_t state) { + // Get highest layer as number + int layer = get_highest_layer(state); + // Toggle leds based on binary layer number [1 2 3] + layer & 0x04 ? work_louder_micro_led_1_on(): work_louder_micro_led_1_off(); + layer & 0x02 ? work_louder_micro_led_2_on(): work_louder_micro_led_2_off(); + layer & 0x01 ? work_louder_micro_led_3_on(): work_louder_micro_led_3_off(); + return state; +} + +void eeconfig_init_user(void) { + work_louder_config.raw = 0; + work_louder_config.led_level = 1; + eeconfig_update_user(work_louder_config.raw); +} + +void matrix_init_user(void) { + work_louder_config.raw = eeconfig_read_user(); + work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * 255 / 4)); +} diff --git a/keyboards/work_louder/micro/keymaps/peterfalken/readme.md b/keyboards/work_louder/micro/keymaps/peterfalken/readme.md new file mode 100644 index 0000000000..f64d682a51 --- /dev/null +++ b/keyboards/work_louder/micro/keymaps/peterfalken/readme.md @@ -0,0 +1,14 @@ +Copyright 2023 LEG @PeterFalken + +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 . diff --git a/keyboards/work_louder/micro/keymaps/peterfalken/rules.mk b/keyboards/work_louder/micro/keymaps/peterfalken/rules.mk new file mode 100644 index 0000000000..59ffb099c2 --- /dev/null +++ b/keyboards/work_louder/micro/keymaps/peterfalken/rules.mk @@ -0,0 +1,3 @@ +# Setup QMK features +ENCODER_MAP_ENABLE = yes +RGB_MATRIX_ENABLE = no # Disable RGB key matrix -- cgit v1.2.3