From eb3f80b92415c3d33d3819deb45739997cfa8a9a Mon Sep 17 00:00:00 2001 From: Daniel Shields Date: Fri, 5 May 2017 15:49:35 +0100 Subject: [PATCH] Add new features to dshields keymap. - one shot layers, dynamic macros and tap dance keys - add a basic readme.md and layout image. --- keyboards/planck/keymaps/dshields/Makefile | 3 +- keyboards/planck/keymaps/dshields/config.h | 34 ++++++++++------ .../keymaps/dshields/keyboard-layout.jpg | Bin 0 -> 50615 bytes keyboards/planck/keymaps/dshields/keymap.c | 38 +++++++++--------- keyboards/planck/keymaps/dshields/readme.md | 12 ++++++ 5 files changed, 55 insertions(+), 32 deletions(-) create mode 100644 keyboards/planck/keymaps/dshields/keyboard-layout.jpg create mode 100644 keyboards/planck/keymaps/dshields/readme.md diff --git a/keyboards/planck/keymaps/dshields/Makefile b/keyboards/planck/keymaps/dshields/Makefile index 5eaceda53..9e18a3542 100644 --- a/keyboards/planck/keymaps/dshields/Makefile +++ b/keyboards/planck/keymaps/dshields/Makefile @@ -7,5 +7,6 @@ COMMAND_ENABLE = yes # Commands for debug and configuration BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend -TAP_DANCE_ENABLE = no +TAP_DANCE_ENABLE = yes AUDIO_ENABLE = no +API_SYSEX_ENABLE = no diff --git a/keyboards/planck/keymaps/dshields/config.h b/keyboards/planck/keymaps/dshields/config.h index 35358af0b..4d5be0a26 100644 --- a/keyboards/planck/keymaps/dshields/config.h +++ b/keyboards/planck/keymaps/dshields/config.h @@ -1,23 +1,31 @@ #ifndef CONFIG_USER_H #define CONFIG_USER_H -#ifndef NO_DEBUG -#define NO_DEBUG -#endif -#ifndef NO_PRINT -#define NO_PRINT -#endif - #include "../../config.h" -#define TAPPING_TOGGLE 2 -#define TAPPING_TERM 300 - -#define ONESHOT_TAP_TOGGLE 2 -#define ONESHOT_TIMEOUT 300 - #define _______ KC_TRNS #define XXXXXXX KC_NO +#define ONESHOT_TAP_TOGGLE 2 +#define ONESHOT_TIMEOUT 500 + +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_DELAY 0 +#define MOUSEKEY_TIME_TO_MAX 60 +#define MOUSEKEY_MAX_SPEED 7 +#define MOUSEKEY_WHEEL_DELAY 0 + +#define DM_PLAY DYN_MACRO_PLAY1 +#define DM_STRT DYN_REC_START1 +#define DM_STOP DYN_REC_STOP + +#define OSL_RSE OSL(RSE) +#define OSL_LWR OSL(LWR) +#define OSL_FUN OSL(FUN) + +#define OSM_CTL OSM(MOD_LCTL) +#define OSM_ALT OSM(MOD_LALT) +#define OSM_SFT OSM(MOD_LSFT) + #endif diff --git a/keyboards/planck/keymaps/dshields/keyboard-layout.jpg b/keyboards/planck/keymaps/dshields/keyboard-layout.jpg new file mode 100644 index 0000000000000000000000000000000000000000..142f821308baa3c629301205537a097b3fa4a50a GIT binary patch literal 50615 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 literal 0 HcmV?d00001 diff --git a/keyboards/planck/keymaps/dshields/keymap.c b/keyboards/planck/keymaps/dshields/keymap.c index e96a67a53..ed7621c77 100644 --- a/keyboards/planck/keymaps/dshields/keymap.c +++ b/keyboards/planck/keymaps/dshields/keymap.c @@ -7,7 +7,10 @@ extern keymap_config_t keymap_config; enum planck_layers { DEF, LWR, RSE, FUN }; -enum planck_keycodes { M1 = SAFE_RANGE, M2, M3, M4 }; +enum planck_keycodes { DYNAMIC_MACRO_RANGE = SAFE_RANGE }; +enum tap_dance_keys { TD_SCLN }; + +#include "dynamic_macro.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Default @@ -16,16 +19,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | A | S | D | F | G | Tab | Enter| H | J | K | L | ; | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Z | X | C | V | B | Shift| Play | N | M | , | . | / | + * | Z | X | C | V | B | Shift|DmPlay| N | M | , | . | / | * |------+------+------+------+------+------+------+------+------+------+------+------| * | Ctrl | Super| Alt | Fun | Lower| Space | Raise| Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ [DEF] = { - {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P}, - {KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN}, - {KC_Z, KC_X, KC_C, KC_V, KC_B, OSM(MOD_LSFT), XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH}, - {KC_LCTL, KC_LGUI, KC_LALT, TT(FUN), TT(LWR), KC_SPC, KC_SPC, TT(RSE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P}, + {KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_ENT, KC_H, KC_J, KC_K, KC_L, TD(TD_SCLN)}, + {KC_Z, KC_X, KC_C, KC_V, KC_B, OSM_SFT, DM_PLAY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH}, + {OSM_CTL, KC_LGUI, OSM_ALT, OSL_FUN, OSL_LWR, KC_SPC, KC_SPC, OSL_RSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Lower * ,-----------------------------------------------------------------------------------. @@ -50,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+-------------+------+------+------+------+------| * | ` | | | | | | | - | = | | [ | ] | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | | | | | | + * | | | | | | | | | | | ' | \ | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | Home | PgDn | PgUp | End | * `-----------------------------------------------------------------------------------' @@ -65,30 +68,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | F1 | F2 | F3 | F4 | F5 | Reset|Delete| F6 | F7 | F8 | F9 | F10 | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | F11 | F12 | F13 | F14 | F15 | | | F16 | F17 | F18 | F19 | F20 | + * | F11 | F12 | F13 | F14 | F15 | | | |MsWhLt|MsWhDn|MsWhUp|MsWhRt| * |------+------+------+------+------+------|------+------+------+------+------+------| - * |BlTggl|BlStep| | M1 | M2 | | | M3 | M4 |MsBtn1|MsBtn2|MsBtn3| + * |BlTggl|BlStep| | | |DmStrt|DmStop| | |MsBtn1|MsBtn2|MsBtn3| * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | |MsLeft|MsDown| MsUp |MsRght| * `-----------------------------------------------------------------------------------' */ [FUN] = { {KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, KC_DEL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10}, - {KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20}, - {BL_TOGG, BL_STEP, _______, M1, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3}, + {KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R}, + {BL_TOGG, BL_STEP, _______, _______, _______, DM_STRT, DM_STOP, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R} }, }; +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_SCLN] = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, S(KC_SCLN)) // once for semi-colon, twice for colon +}; + bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case M1: - if (record->event.pressed) { - SEND_STRING(" 2>&1 > "); - } - return false; - break; + if (!process_record_dynamic_macro(keycode, record)) { + return false; } return true; } diff --git a/keyboards/planck/keymaps/dshields/readme.md b/keyboards/planck/keymaps/dshields/readme.md new file mode 100644 index 000000000..447eaae97 --- /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](keyboard-layout.jpg "Keyboard Layout") +