diff options
author | Daniel Shields <daniel.shields@bcs.org> | 2019-09-25 17:21:07 +0100 |
---|---|---|
committer | noroadsleft <18669334+noroadsleft@users.noreply.github.com> | 2019-09-25 09:21:07 -0700 |
commit | 00abe5d8edf801cad351bf428a24532ed80f652c (patch) | |
tree | 5afe96081a573c79cd8c41aa58fed26372e0fa5a /users/dshields/dshields.c | |
parent | 0f9e2659c96370377e36ddab0508498e151bfc62 (diff) | |
download | qmk_firmware-00abe5d8edf801cad351bf428a24532ed80f652c.tar.gz qmk_firmware-00abe5d8edf801cad351bf428a24532ed80f652c.zip |
[Keymap] Various enhancements for dshields user space and keymaps. (#6816)
- Add oneshot mod/layer unlocking
- Fix Planck rev 3 backlight breathing
- Fix Planck rev 6 build with arm gcc 9.2.0
- General code clean up
Diffstat (limited to 'users/dshields/dshields.c')
-rw-r--r-- | users/dshields/dshields.c | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/users/dshields/dshields.c b/users/dshields/dshields.c index 6aff5c6716..bc88cae561 100644 --- a/users/dshields/dshields.c +++ b/users/dshields/dshields.c @@ -1,30 +1,31 @@ -extern keymap_config_t keymap_config; +#include "quantum.h" +#include "dshields.h" -/* uncomment to reset -void matrix_init_user(void) { - eeconfig_init(); -}; -*/ +extern bool process_record_dynamic_macro(uint16_t keycode, keyrecord_t *record); bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (!process_record_dynamic_macro(keycode, record)) { return false; } - return true; -} - -// work in progress -uint32_t layer_state_set_user(uint32_t state) { - switch (biton32(state)) { - case DEF: - set_all_leds_to(0,0,0); - break; - case FUN: - // TODO light the fn keys - // set_led_to(?, 0, 128, 0); - // set_led_to(?, 0, 128, 0); - break; + 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 state; + return true; } |