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 5eaceda534..9e18a3542e 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 35358af0b0..4d5be0a268 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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 B7PJ5W literal 0 HcmV?d00001 diff --git a/keyboards/planck/keymaps/dshields/keymap.c b/keyboards/planck/keymaps/dshields/keymap.c index e96a67a53a..ed7621c77b 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 0000000000..447eaae972 --- /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") +