From cb53cad826176fef43f70f4efdcda279915ff03a Mon Sep 17 00:00:00 2001 From: Daniel Shields Date: Thu, 4 Apr 2024 11:19:51 +0100 Subject: [PATCH] Reinstate dshields user space and keymaps --- .../atreus/keymaps/dshields/keymap.c | 45 +++++++++++++ .../model01/keymaps/dshields/config.h | 4 ++ .../model01/keymaps/dshields/keymap.c | 28 ++++++++ .../model01/keymaps/dshields/readme.md | 10 +++ keyboards/planck/keymaps/dshields/config.h | 4 ++ keyboards/planck/keymaps/dshields/keymap.c | 30 +++++++++ keyboards/planck/keymaps/dshields/readme.md | 12 ++++ users/dshields/config.h | 24 +++++++ users/dshields/dshields.c | 57 ++++++++++++++++ users/dshields/dshields.h | 65 +++++++++++++++++++ users/dshields/rules.mk | 31 +++++++++ 11 files changed, 310 insertions(+) create mode 100644 keyboards/keyboardio/atreus/keymaps/dshields/keymap.c create mode 100644 keyboards/keyboardio/model01/keymaps/dshields/config.h create mode 100644 keyboards/keyboardio/model01/keymaps/dshields/keymap.c create mode 100644 keyboards/keyboardio/model01/keymaps/dshields/readme.md create mode 100644 keyboards/planck/keymaps/dshields/config.h create mode 100644 keyboards/planck/keymaps/dshields/keymap.c create mode 100644 keyboards/planck/keymaps/dshields/readme.md create mode 100644 users/dshields/config.h create mode 100644 users/dshields/dshields.c create mode 100644 users/dshields/dshields.h create mode 100644 users/dshields/rules.mk diff --git a/keyboards/keyboardio/atreus/keymaps/dshields/keymap.c b/keyboards/keyboardio/atreus/keymaps/dshields/keymap.c new file mode 100644 index 000000000000..4ee528ce529e --- /dev/null +++ b/keyboards/keyboardio/atreus/keymaps/dshields/keymap.c @@ -0,0 +1,45 @@ +/* Copyright 2021 Daniel Shields + * + * 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 +#include "dshields.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [DEF] = LAYOUT( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P , + MT_A, MT_S, MT_D, MT_F, LT_G, LT_H, MT_J, MT_K, MT_L, MT_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TAB, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + OSMLCTL, MT_ESC, OSMLALT, OSL_FUN, MT_BSPC, OSL_LWR, OSL_RSE, MT_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [LWR] = LAYOUT( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + KC_TILD, _______, _______, _______, _______, KC_UNDS, KC_PLUS, _______, KC_LCBR, KC_RCBR, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DQUO, KC_PIPE, + _______, _______, _______, _______, KC_DEL, _______, _______, KC_ENT, KC_HOME, KC_PGDN, KC_PGUP, KC_END + ), + + [RSE] = LAYOUT( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0 , + KC_GRV, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, KC_LBRC, KC_RBRC, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_BSLS, + _______, _______, _______, _______, KC_DEL, _______, _______, KC_ENT, KC_HOME, KC_PGDN, KC_PGUP, KC_END + ), + [FUN] = LAYOUT( + 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_F13, KC_F14, KC_F15, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, + _______, _______, _______, _______, _______, QK_BOOT, EE_CLR, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R + ) +}; diff --git a/keyboards/keyboardio/model01/keymaps/dshields/config.h b/keyboards/keyboardio/model01/keymaps/dshields/config.h new file mode 100644 index 000000000000..fdb23d46bae8 --- /dev/null +++ b/keyboards/keyboardio/model01/keymaps/dshields/config.h @@ -0,0 +1,4 @@ +#pragma once + +#define RGB_DIGITAL_RAIN_DROPS 18 + diff --git a/keyboards/keyboardio/model01/keymaps/dshields/keymap.c b/keyboards/keyboardio/model01/keymaps/dshields/keymap.c new file mode 100644 index 000000000000..aa5ef5d4cac9 --- /dev/null +++ b/keyboards/keyboardio/model01/keymaps/dshields/keymap.c @@ -0,0 +1,28 @@ +#include QMK_KEYBOARD_H +#include "dshields.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[DEF] = LAYOUT( + QK_BOOT, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, + KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , RGB_TOG, DM_REC1, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_EQL , + KC_PGUP, MT_A , MT_S , MT_D , MT_F , LT_G , KC_TAB , KC_ENT , LT_H , MT_J , MT_K , MT_L , MT_SCLN, KC_QUOT, + KC_PGDN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_ESC , DM_PLY1, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_MINS, + OSMLCTL, OSMRCTL, + KC_BSPC, KC_SPC , + KC_LGUI, OSMRALT, + OSMLSFT, OSMRSFT, + OSL_FUN, OSL_FUN + ), +[FUN] = LAYOUT( + EE_CLR, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , + KC_TAB , _______, KC_MS_U, _______, KC_BTN3, _______, RGB_MOD, DM_REC2, _______, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_F12 , + KC_HOME, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, _______, RGB_HUI, DM_RSTP, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, + KC_END , KC_PSCR, KC_INS , _______, KC_BTN2, _______, RGB_HUD, DM_PLY2, _______, _______, _______, _______, KC_BSLS, KC_PIPE, + _______, _______, + KC_DEL , KC_ENT , + _______, _______, + _______, _______, + _______, _______ + ) +}; + diff --git a/keyboards/keyboardio/model01/keymaps/dshields/readme.md b/keyboards/keyboardio/model01/keymaps/dshields/readme.md new file mode 100644 index 000000000000..ead1c1aad290 --- /dev/null +++ b/keyboards/keyboardio/model01/keymaps/dshields/readme.md @@ -0,0 +1,10 @@ + +About +------ + +A lightly modded version of the default keymap. + +- One-shot modifiers and layers. +- Dynamic macros +- No num lock layer + diff --git a/keyboards/planck/keymaps/dshields/config.h b/keyboards/planck/keymaps/dshields/config.h new file mode 100644 index 000000000000..857c8164e316 --- /dev/null +++ b/keyboards/planck/keymaps/dshields/config.h @@ -0,0 +1,4 @@ +#pragma once + +#define RGB_DIGITAL_RAIN_DROPS 24 + diff --git a/keyboards/planck/keymaps/dshields/keymap.c b/keyboards/planck/keymaps/dshields/keymap.c new file mode 100644 index 000000000000..c3dd7a50b46e --- /dev/null +++ b/keyboards/planck/keymaps/dshields/keymap.c @@ -0,0 +1,30 @@ +#include QMK_KEYBOARD_H +#include "dshields.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [DEF] = LAYOUT_planck_grid( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P , + MT_A, MT_S, MT_D, MT_F, LT_G, KC_TAB, KC_ENT, LT_H, MT_J, MT_K, MT_L, MT_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, OSMLSFT, DM_PLY1, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + OSMLCTL, KC_LGUI, OSMLALT, OSL_FUN, OSL_LWR, MT_SPC, MT_SPC, OSL_RSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT + ), + [LWR] = LAYOUT_planck_grid( + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, KC_DEL, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, + KC_TILD, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, _______, KC_LCBR, KC_RCBR, + _______, _______, _______, _______, _______, _______, DM_PLY2, _______, _______, _______, KC_DQUO, KC_PIPE, + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END + ), + [RSE] = LAYOUT_planck_grid( + KC_1, KC_2, KC_3, KC_4, KC_5, _______, KC_DEL, KC_6, KC_7, KC_8, KC_9, KC_0 , + KC_GRV, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, KC_LBRC, KC_RBRC, + _______, _______, _______, _______, _______, _______, DM_PLY2, _______, _______, _______, KC_QUOT, KC_BSLS, + _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END + ), + [FUN] = LAYOUT_planck_grid( + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, QK_BOOT, EE_CLR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 , + KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, DM_RSTP, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, + LGT_TOG, LGT_MOD, LGT_BRT, LGT_INC, LGT_DEC, DM_REC1, DM_REC2, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R + ) +}; + diff --git a/keyboards/planck/keymaps/dshields/readme.md b/keyboards/planck/keymaps/dshields/readme.md new file mode 100644 index 000000000000..6070fd2e9e13 --- /dev/null +++ b/keyboards/planck/keymaps/dshields/readme.md @@ -0,0 +1,12 @@ + +About +------ + +A simple split qwerty Planck layout that makes use of one-shot modifiers, +one-shot layers, tap-dance keys and dynamic macros. + +Layout +------- + +![Layout](https://i.imgur.com/vZR3c8m.jpg "Keyboard Layout") + diff --git a/users/dshields/config.h b/users/dshields/config.h new file mode 100644 index 000000000000..e01890ecd86e --- /dev/null +++ b/users/dshields/config.h @@ -0,0 +1,24 @@ +#pragma once + +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define USB_MAX_POWER_CONSUMPTION 100 +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 3000 +#define PERMISSIVE_HOLD_PER_KEY +#define QUICK_TAP_TERM_PER_KEY +#define TAPPING_TERM 200 +#define BACKLIGHT_BREATHING +#define DYNAMIC_MACRO_NO_NESTING +#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD + +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_DELAY 0 +#ifndef MOUSEKEY_TIME_TO_MAX +#define MOUSEKEY_TIME_TO_MAX 40 +#endif +#define MOUSEKEY_MAX_SPEED 7 +#ifndef MOUSEKEY_WHEEL_DELAY +#define MOUSEKEY_WHEEL_DELAY 0 +#endif + +#define ENABLE_RGB_MATRIX_DIGITAL_RAIN diff --git a/users/dshields/dshields.c b/users/dshields/dshields.c new file mode 100644 index 000000000000..a8e13331044d --- /dev/null +++ b/users/dshields/dshields.c @@ -0,0 +1,57 @@ +#include "quantum.h" +#include "dshields.h" + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) + || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX) + || (keycode >= QK_MODS && keycode <= QK_MODS_MAX)) { + keycode = keycode & 0xFF; + } + if (keycode == KC_ESC && record->event.pressed) { + bool rc = true; + uint8_t mods = 0; + if ((mods = get_oneshot_mods()) && !has_oneshot_mods_timed_out()) { + clear_oneshot_mods(); + unregister_mods(mods); + rc = false; + } + if ((mods = get_oneshot_locked_mods())) { + clear_oneshot_locked_mods(); + unregister_mods(mods); + rc = false; + } + if (is_oneshot_layer_active()) { + layer_clear(); + rc = false; + } + return rc; + } + return true; +} + +uint16_t get_quick_tap_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case MT_A: + case MT_S: + case MT_D: + case MT_F: + case MT_J: + case MT_K: + case MT_L: + case MT_SCLN: + return 0; + default: + return QUICK_TAP_TERM; + } +} + +bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case MT_SPC: + case MT_BSPC: + case MT_ESC: + return true; + default: + return false; + } +} diff --git a/users/dshields/dshields.h b/users/dshields/dshields.h new file mode 100644 index 000000000000..4dd5db66bfa3 --- /dev/null +++ b/users/dshields/dshields.h @@ -0,0 +1,65 @@ +#pragma once + +// one-shot layer keys +#define OSL_RSE OSL(RSE) +#define OSL_LWR OSL(LWR) +#define OSL_FUN OSL(FUN) + +// one-shot modifier keys +#define OSMLCTL OSM(MOD_LCTL) +#define OSMRCTL OSM(MOD_RCTL) +#define OSMLALT OSM(MOD_LALT) +#define OSMRALT OSM(MOD_RALT) +#define OSMLSFT OSM(MOD_LSFT) +#define OSMRSFT OSM(MOD_RSFT) + +// mod-tap keys +#define MT_SPC SFT_T(KC_SPC) +#define MT_BSPC SFT_T(KC_BSPC) +#define MT_ESC LGUI_T(KC_ESC) +#define MT_A LGUI_T(KC_A) +#define MT_S LALT_T(KC_S) +#define MT_D LSFT_T(KC_D) +#define MT_F LCTL_T(KC_F) +#define MT_J RCTL_T(KC_J) +#define MT_K RSFT_T(KC_K) +#define MT_L RALT_T(KC_L) +#define MT_SCLN RGUI_T(KC_SCLN) + +// layer-tap keys +#if defined KEYBOARD_planck_light \ + || defined KEYBOARD_planck_rev3 \ + || defined KEYBOARD_planck_rev6 \ + || defined KEYBOARD_keyboardio_atreus + #define LT_G LT(LWR, KC_G) + #define LT_H LT(RSE, KC_H) +#elif defined KEYBOARD_keyboardio_model01 + #define LT_G LT(FUN, KC_G) + #define LT_H LT(FUN, KC_H) +#else + #define LT_G KC_G + #define LT_H KC_H +#endif + +// LED/RGB controls +#if defined KEYBOARD_planck_light + #define LGT_TOG RGB_TOG + #define LGT_MOD RGB_MOD + #define LGT_BRT _______ + #define LGT_INC RGB_HUI + #define LGT_DEC RGB_HUD +#elif defined KEYBOARD_planck_rev3 + #define LGT_TOG BL_TOGG + #define LGT_MOD BL_STEP + #define LGT_BRT BL_BRTG + #define LGT_INC BL_UP + #define LGT_DEC BL_DOWN +#else + #define LGT_TOG _______ + #define LGT_MOD _______ + #define LGT_BRT _______ + #define LGT_INC _______ + #define LGT_DEC _______ +#endif + +enum layers { DEF, LWR, RSE, FUN }; diff --git a/users/dshields/rules.mk b/users/dshields/rules.mk new file mode 100644 index 000000000000..6cf8de48f77f --- /dev/null +++ b/users/dshields/rules.mk @@ -0,0 +1,31 @@ +SRC += dshields.c + +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +COMMAND_ENABLE = no # Commands for debug and configuration +CONSOLE_ENABLE = no # Console for debug(+400) +EXTRAKEY_ENABLE = no +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +SPACE_CADET_ENABLE = no +LEADER_ENABLE = no +DYNAMIC_MACRO_ENABLE = yes + +LTO_ENABLE = yes +CAPS_WORD_ENABLE = yes + +ifeq ($(strip $(KEYBOARD)), planck/rev3) + AUDIO_ENABLE = no + BACKLIGHT_ENABLE = yes + RGB_MATRIX_ENABLE = no +endif +ifeq ($(strip $(KEYBOARD)), planck/rev6) + CFLAGS += -Wno-error=deprecated + EXTRALDFLAGS = -Wl,--build-id=none + AUDIO_ENABLE = no + BACKLIGHT_ENABLE = no + RGB_MATRIX_ENABLE = no +endif +ifeq ($(strip $(KEYBOARD)), planck/light) + AUDIO_ENABLE = yes + BACKLIGHT_ENABLE = no + RGB_MATRIX_ENABLE = yes +endif