From ed1f2f80ce35ef7274eb1f44673057dd57e0acda Mon Sep 17 00:00:00 2001 From: Jonavin Date: Thu, 2 Sep 2021 12:51:55 -0400 Subject: [PATCH 01/10] fix NKRO - switch to get_mods() --- .../keebio/quefrency/keymaps/jonavin/keymap.c | 12 ++++++------ .../mechwild/mercutio/keymaps/jonavin/keymap.c | 14 +++++++------- .../mechwild/murphpad/keymaps/jonavin/keymap.c | 14 +++++++------- users/jonavin/jonavin.c | 16 ++++++++-------- users/jonavin/readme.md | 3 +-- 5 files changed, 29 insertions(+), 30 deletions(-) diff --git a/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c b/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c index 721148f4dc3e..e2ce8992f17d 100644 --- a/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c +++ b/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c @@ -69,25 +69,25 @@ bool encoder_update_user(uint8_t index, bool clockwise) { default: // other encoder (Top right) if ( clockwise ) { - if (keyboard_report->mods & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, Page up + if (get_mods() & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, Page up unregister_mods(MOD_BIT(KC_LSFT)); register_code(KC_PGDN); register_mods(MOD_BIT(KC_LSFT)); - } else if (keyboard_report->mods & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next word + } else if (get_mods() & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next word tap_code16(LCTL(KC_RGHT)); - } else if (keyboard_report->mods & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next track + } else if (get_mods() & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next track tap_code(KC_MEDIA_NEXT_TRACK); } else { tap_code(KC_VOLU); // Otherwise it just changes volume } } else { - if (keyboard_report->mods & MOD_BIT(KC_LSFT) ) { + if (get_mods() & MOD_BIT(KC_LSFT) ) { unregister_mods(MOD_BIT(KC_LSFT)); register_code(KC_PGUP); register_mods(MOD_BIT(KC_LSFT)); - } else if (keyboard_report->mods & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate previous word + } else if (get_mods() & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate previous word tap_code16(LCTL(KC_LEFT)); - } else if (keyboard_report->mods & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media previous track + } else if (get_mods() & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media previous track tap_code(KC_MEDIA_PREV_TRACK); } else { tap_code(KC_VOLD); diff --git a/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c b/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c index 74811cbc351b..92377fd5a567 100755 --- a/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c +++ b/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c @@ -117,7 +117,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { case 0: // This is the only encoder right now, keeping for consistency switch(get_highest_layer(layer_state)){ // special handling per layer case _FN1: // on Fn layer select what the encoder does when pressed - if (!keyboard_report->mods) { + if (!get_mods()) { if ( clockwise ) { if ( selectedkey_idx < MAX_KEYSELECTION-1) { selectedkey_idx ++; @@ -138,27 +138,27 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { } default: // all other layers if ( clockwise ) { - if (keyboard_report->mods & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers + if (get_mods() & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers if(selected_layer < 3) { selected_layer ++; layer_move(selected_layer); } - } else if (keyboard_report->mods & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next word + } else if (get_mods() & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next word tap_code16(LCTL(KC_RGHT)); - } else if (keyboard_report->mods & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next track + } else if (get_mods() & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next track tap_code(KC_MEDIA_NEXT_TRACK); } else { tap_code(KC_VOLU); // Otherwise it just changes volume } } else if ( !clockwise ) { - if (keyboard_report->mods & MOD_BIT(KC_LSFT) ) { + if (get_mods() & MOD_BIT(KC_LSFT) ) { if (selected_layer > 0) { selected_layer --; layer_move(selected_layer); } - } else if (keyboard_report->mods & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate previous word + } else if (get_mods() & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate previous word tap_code16(LCTL(KC_LEFT)); - } else if (keyboard_report->mods & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media previous track + } else if (get_mods() & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media previous track tap_code(KC_MEDIA_PREV_TRACK); } else { tap_code(KC_VOLD); diff --git a/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c b/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c index 001abc502723..8a57e6f3a4af 100644 --- a/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c +++ b/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c @@ -155,7 +155,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { case 0: // This is the only encoder right now, keeping for consistency switch(get_highest_layer(layer_state)){ // special handling per layer case _FN1: // on Fn layer select what the encoder does when pressed - if (!keyboard_report->mods) { + if (!get_mods()) { if ( clockwise ) { if ( selectedkey_idx < MAX_KEYSELECTION-1) { selectedkey_idx ++; @@ -176,27 +176,27 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { } default: // all other layers if ( clockwise ) { - if (keyboard_report->mods & MOD_BIT(KC_RSFT) ) { // If you are holding Right Shift, encoder changes layers + if (get_mods() & MOD_BIT(KC_RSFT) ) { // If you are holding Right Shift, encoder changes layers if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT-1)) { selected_layer ++; layer_move(selected_layer); } - } else if (keyboard_report->mods & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, navigate next word + } else if (get_mods() & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, navigate next word tap_code16(LCTL(KC_RGHT)); - } else if (keyboard_report->mods & MOD_BIT(KC_RALT)) { // if holding Right Alt, change media next track + } else if (get_mods() & MOD_BIT(KC_RALT)) { // if holding Right Alt, change media next track tap_code(KC_MEDIA_NEXT_TRACK); } else { tap_code(KC_VOLU); // Otherwise it just changes volume } } else if ( !clockwise ) { - if (keyboard_report->mods & MOD_BIT(KC_RSFT) ) { + if (get_mods() & MOD_BIT(KC_RSFT) ) { if (selected_layer > 0) { selected_layer --; layer_move(selected_layer); } - } else if (keyboard_report->mods & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, navigate previous word + } else if (get_mods() & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, navigate previous word tap_code16(LCTL(KC_LEFT)); - } else if (keyboard_report->mods & MOD_BIT(KC_RALT)) { // if holding Right Alt, change media previous track + } else if (get_mods() & MOD_BIT(KC_RALT)) { // if holding Right Alt, change media previous track tap_code(KC_MEDIA_PREV_TRACK); } else { tap_code(KC_VOLD); diff --git a/users/jonavin/jonavin.c b/users/jonavin/jonavin.c index bd6c55e9feda..e7baa6ec587f 100644 --- a/users/jonavin/jonavin.c +++ b/users/jonavin/jonavin.c @@ -120,18 +120,18 @@ bool encoder_update_user(uint8_t index, bool clockwise) { if (!encoder_update_keymap(index, clockwise)) { return false; } if (index != ENCODER_DEFAULTACTIONS_INDEX) {return true;} // exit if the index doesn't match if ( clockwise ) { - if (keyboard_report->mods & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers + if (get_mods() & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) { selected_layer ++; layer_move(selected_layer); } - } else if (keyboard_report->mods & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up + } else if (get_mods() & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up unregister_mods(MOD_BIT(KC_RSFT)); register_code(KC_PGDN); register_mods(MOD_BIT(KC_RSFT)); - } else if (keyboard_report->mods & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next word + } else if (get_mods() & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next word tap_code16(LCTL(KC_RGHT)); - } else if (keyboard_report->mods & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next track + } else if (get_mods() & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next track tap_code(KC_MEDIA_NEXT_TRACK); } else { switch (selected_layer) { @@ -146,18 +146,18 @@ bool encoder_update_user(uint8_t index, bool clockwise) { } } } else { - if (keyboard_report->mods & MOD_BIT(KC_LSFT) ) { + if (get_mods() & MOD_BIT(KC_LSFT) ) { if (selected_layer > 0) { selected_layer --; layer_move(selected_layer); } - } else if (keyboard_report->mods & MOD_BIT(KC_RSFT) ) { + } else if (get_mods() & MOD_BIT(KC_RSFT) ) { unregister_mods(MOD_BIT(KC_RSFT)); register_code(KC_PGUP); register_mods(MOD_BIT(KC_RSFT)); - } else if (keyboard_report->mods & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate previous word + } else if (get_mods() & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate previous word tap_code16(LCTL(KC_LEFT)); - } else if (keyboard_report->mods & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media previous track + } else if (get_mods() & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media previous track tap_code(KC_MEDIA_PREV_TRACK); } else { switch (selected_layer) { diff --git a/users/jonavin/readme.md b/users/jonavin/readme.md index 97fff6520cb6..c029796b4e59 100644 --- a/users/jonavin/readme.md +++ b/users/jonavin/readme.md @@ -65,11 +65,10 @@ KEYMAP LEVEL ADDITIONAL PROCESSING FUNCTIONS void keyboard_post_init_keymap(void) LIST OF COMPATIBLE KEYMAPS - - gmmk/pro - gmmk/pro/ansi - keebio/quefrency/rev3 - mechwild/mercutio - - mechwild/murphpad (*) + - mechwild/murphpad - mechwild/OBE (*) - nopunin10did/kastenwagen (*) From d90ba04a2c92e7272264ae17dadc93d08887ae7c Mon Sep 17 00:00:00 2001 From: Jonavin Date: Fri, 3 Sep 2021 14:31:42 -0400 Subject: [PATCH 02/10] refactor encoder action for better readability --- users/jonavin/jonavin.c | 126 ++++++++++++++++++++++------------------ users/jonavin/jonavin.h | 10 ++++ 2 files changed, 80 insertions(+), 56 deletions(-) diff --git a/users/jonavin/jonavin.c b/users/jonavin/jonavin.c index e7baa6ec587f..7393d9cd81de 100644 --- a/users/jonavin/jonavin.c +++ b/users/jonavin/jonavin.c @@ -104,7 +104,7 @@ along with this program. If not, see . #endif // IDLE_TIMEOUT_ENABLE -#if defined(ENCODER_ENABLE) && defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality +#ifdef ENCODER_ENABLE #ifndef DYNAMIC_KEYMAP_LAYER_COUNT #define DYNAMIC_KEYMAP_LAYER_COUNT 4 //default in case this is not already defined elsewhere #endif @@ -112,69 +112,83 @@ along with this program. If not, see . #define ENCODER_DEFAULTACTIONS_INDEX 0 // can select encoder index if there are multiple encoders #endif -uint8_t selected_layer = 0; + uint8_t selected_layer = 0; -__attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } + void encoder_action_volume(bool clockwise) { + if (clockwise) + tap_code(KC_VOLU); + else + tap_code(KC_VOLD); + } -bool encoder_update_user(uint8_t index, bool clockwise) { - if (!encoder_update_keymap(index, clockwise)) { return false; } - if (index != ENCODER_DEFAULTACTIONS_INDEX) {return true;} // exit if the index doesn't match - if ( clockwise ) { - if (get_mods() & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers - if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) { - selected_layer ++; - layer_move(selected_layer); - } - } else if (get_mods() & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up - unregister_mods(MOD_BIT(KC_RSFT)); - register_code(KC_PGDN); - register_mods(MOD_BIT(KC_RSFT)); - } else if (get_mods() & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next word - tap_code16(LCTL(KC_RGHT)); - } else if (get_mods() & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next track - tap_code(KC_MEDIA_NEXT_TRACK); - } else { - switch (selected_layer) { - case _FN1: - #ifdef IDLE_TIMEOUT_ENABLE - timeout_update_threshold(true); - #endif - break; - default: - tap_code(KC_VOLU); // Otherwise it just changes volume - break; - } + void encoder_action_mediatrack(bool clockwise) { + if (clockwise) + tap_code(KC_MEDIA_NEXT_TRACK); + else + tap_code(KC_MEDIA_PREV_TRACK); + } + + void encoder_action_navword(bool clockwise) { + if (clockwise) + tap_code16(LCTL(KC_RGHT)); + else + tap_code16(LCTL(KC_LEFT)); + } + + void encoder_action_navpage(bool clockwise) { + if (clockwise) + tap_code16(KC_PGUP); + else + tap_code16(KC_PGDN); + } + + void encoder_action_layerchange(bool clockwise) { + if (clockwise) { + if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) { + selected_layer ++; + layer_move(selected_layer); } } else { - if (get_mods() & MOD_BIT(KC_LSFT) ) { - if (selected_layer > 0) { - selected_layer --; - layer_move(selected_layer); - } - } else if (get_mods() & MOD_BIT(KC_RSFT) ) { - unregister_mods(MOD_BIT(KC_RSFT)); - register_code(KC_PGUP); - register_mods(MOD_BIT(KC_RSFT)); - } else if (get_mods() & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate previous word - tap_code16(LCTL(KC_LEFT)); - } else if (get_mods() & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media previous track - tap_code(KC_MEDIA_PREV_TRACK); - } else { - switch (selected_layer) { - case _FN1: - #ifdef IDLE_TIMEOUT_ENABLE - timeout_update_threshold(false); - #endif - break; - default: - tap_code(KC_VOLD); - break; - } + if (selected_layer > 0) { + selected_layer --; + layer_move(selected_layer); } } + } +#endif // ENCODER_ENABLE + +#if defined(ENCODER_ENABLE) && defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality + +__attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } - return true; +bool encoder_update_user(uint8_t index, bool clockwise) { + if (!encoder_update_keymap(index, clockwise)) { return false; } + if (index != ENCODER_DEFAULTACTIONS_INDEX) {return true;} // exit if the index doesn't match + uint8_t mods_state = get_mods(); + if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers + encoder_action_layerchange(clockwise); + } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn + unregister_mods(MOD_BIT(KC_RSFT)); + encoder_action_navpage(clockwise); + register_mods(MOD_BIT(KC_RSFT)); + } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + switch(get_highest_layer(layer_state)) { + case _FN1: + #ifdef IDLE_TIMEOUT_ENABLE + timeout_update_threshold(clockwise); + #endif + break; + default: + encoder_action_volume(clockwise); // Otherwise it just changes volume + break; + } } + return true; +} #endif // ENCODER_ENABLE diff --git a/users/jonavin/jonavin.h b/users/jonavin/jonavin.h index 5f467bc845ff..f5c346708ae8 100644 --- a/users/jonavin/jonavin.h +++ b/users/jonavin/jonavin.h @@ -58,6 +58,16 @@ enum custom_user_keycodes { #endif // TD_LSFT_CAPSLOCK_ENABLE +// ENCODER ACTIONS +#ifdef ENCODER_ENABLE + void encoder_action_volume(bool clockwise); + void encoder_action_mediatrack(bool clockwise); + void encoder_action_navword(bool clockwise); + void encoder_action_navpage(bool clockwise); + void encoder_action_layerchange(bool clockwise); +#endif // ENCODER_ENABLE + + #ifdef RGB_MATRIX_ENABLE //RGB custom colours #define RGB_GODSPEED 0x00, 0xE4, 0xFF // colour for matching keycaps From 5b7abe30b23f521fbe14f04ec383c19b3d784fce Mon Sep 17 00:00:00 2001 From: Jonavin Date: Fri, 3 Sep 2021 15:13:13 -0400 Subject: [PATCH 03/10] refactor for better readability --- .../keebio/quefrency/keymaps/jonavin/keymap.c | 45 +++------ .../mercutio/keymaps/jonavin/keymap.c | 83 ++++++++-------- .../murphpad/keymaps/jonavin/keymap.c | 99 ++++++++++--------- users/jonavin/jonavin.c | 67 ++++++------- 4 files changed, 140 insertions(+), 154 deletions(-) diff --git a/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c b/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c index e2ce8992f17d..09a8f06d7c28 100644 --- a/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c +++ b/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c @@ -58,40 +58,23 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { #ifdef ENCODER_ENABLE // Encoder Functionality bool encoder_update_user(uint8_t index, bool clockwise) { - switch (index) - { + uint8_t mods_state = get_mods(); + switch (index) { case 0: // first encoder (Left Macro set) - if (clockwise) { - tap_code(KC_PGDN); - } else { - tap_code(KC_PGUP); - } + encoder_action_navpage(clockwise) + break; default: // other encoder (Top right) - if ( clockwise ) { - if (get_mods() & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, Page up - unregister_mods(MOD_BIT(KC_LSFT)); - register_code(KC_PGDN); - register_mods(MOD_BIT(KC_LSFT)); - } else if (get_mods() & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next word - tap_code16(LCTL(KC_RGHT)); - } else if (get_mods() & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next track - tap_code(KC_MEDIA_NEXT_TRACK); - } else { - tap_code(KC_VOLU); // Otherwise it just changes volume - } - } else { - if (get_mods() & MOD_BIT(KC_LSFT) ) { - unregister_mods(MOD_BIT(KC_LSFT)); - register_code(KC_PGUP); - register_mods(MOD_BIT(KC_LSFT)); - } else if (get_mods() & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate previous word - tap_code16(LCTL(KC_LEFT)); - } else if (get_mods() & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media previous track - tap_code(KC_MEDIA_PREV_TRACK); - } else { - tap_code(KC_VOLD); - } + if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, Page up + unregister_mods(MOD_BIT(KC_LSFT)); + encoder_action_navpage(clockwise); + register_mods(MOD_BIT(KC_LSFT)); + } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + encoder_action_volume(clockwise); // Otherwise it just changes volume } break; } diff --git a/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c b/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c index 92377fd5a567..d66a1ae67fb0 100755 --- a/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c +++ b/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c @@ -108,61 +108,62 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { #ifdef ENCODER_ENABLE // Encoder Functionality uint8_t selected_layer = 0; + void encoder_action_layerchange(bool clockwise) { + if (clockwise) { + if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) { + selected_layer ++; + layer_move(selected_layer); + } + } else { + if (selected_layer > 0) { + selected_layer --; + layer_move(selected_layer); + } + } + } + + void encoder_action_selectkey(bool clockwise) { + if ( clockwise ) { + if ( selectedkey_idx < MAX_KEYSELECTION-1) { + selectedkey_idx ++; + } else { + // do nothing + } + } else if ( !clockwise ) { + if ( selectedkey_idx > 0){ + selectedkey_idx --; + } else { + // do nothing + } + } + set_selectedkey(selectedkey_idx); + } + bool encoder_update_user(uint8_t index, bool clockwise) { #ifdef OLED_ENABLE oled_clear(); oled_render(); #endif + uint8_t mods_state = get_mods(); switch (index) { case 0: // This is the only encoder right now, keeping for consistency switch(get_highest_layer(layer_state)){ // special handling per layer case _FN1: // on Fn layer select what the encoder does when pressed - if (!get_mods()) { - if ( clockwise ) { - if ( selectedkey_idx < MAX_KEYSELECTION-1) { - selectedkey_idx ++; - } else { - // do nothing - } - } else if ( !clockwise ) { - if ( selectedkey_idx > 0){ - selectedkey_idx --; - } else { - // do nothing - } - } - set_selectedkey(selectedkey_idx); + if (!mods_state) { + encoder_action_selectkey(clockwise); break; } else { // continue to default } default: // all other layers - if ( clockwise ) { - if (get_mods() & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers - if(selected_layer < 3) { - selected_layer ++; - layer_move(selected_layer); - } - } else if (get_mods() & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next word - tap_code16(LCTL(KC_RGHT)); - } else if (get_mods() & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next track - tap_code(KC_MEDIA_NEXT_TRACK); - } else { - tap_code(KC_VOLU); // Otherwise it just changes volume - } - } else if ( !clockwise ) { - if (get_mods() & MOD_BIT(KC_LSFT) ) { - if (selected_layer > 0) { - selected_layer --; - layer_move(selected_layer); - } - } else if (get_mods() & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate previous word - tap_code16(LCTL(KC_LEFT)); - } else if (get_mods() & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media previous track - tap_code(KC_MEDIA_PREV_TRACK); - } else { - tap_code(KC_VOLD); - } + if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers + encoder_action_layerchange(clockwise); + } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + encoder_action_volume(clockwise); // Otherwise it just changes volume } break; } diff --git a/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c b/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c index 8a57e6f3a4af..fddbbd7f43b3 100644 --- a/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c +++ b/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c @@ -146,65 +146,66 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { #ifdef ENCODER_ENABLE // Encoder Functionality uint8_t selected_layer = 0; + void encoder_action_layerchange(bool clockwise) { + if (clockwise) { + if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) { + selected_layer ++; + layer_move(selected_layer); + } + } else { + if (selected_layer > 0) { + selected_layer --; + layer_move(selected_layer); + } + } + } + + void encoder_action_selectkey(bool clockwise) { + if ( clockwise ) { + if ( selectedkey_idx < MAX_KEYSELECTION-1) { + selectedkey_idx ++; + } else { + // do nothing + } + } else if ( !clockwise ) { + if ( selectedkey_idx > 0){ + selectedkey_idx --; + } else { + // do nothing + } + } + set_selectedkey(selectedkey_idx); + } + bool encoder_update_user(uint8_t index, bool clockwise) { #ifdef OLED_ENABLE oled_clear(); oled_render(); #endif + uint8_t mods_state = get_mods(); switch (index) { case 0: // This is the only encoder right now, keeping for consistency - switch(get_highest_layer(layer_state)){ // special handling per layer - case _FN1: // on Fn layer select what the encoder does when pressed - if (!get_mods()) { - if ( clockwise ) { - if ( selectedkey_idx < MAX_KEYSELECTION-1) { - selectedkey_idx ++; - } else { - // do nothing - } - } else if ( !clockwise ) { - if ( selectedkey_idx > 0){ - selectedkey_idx --; - } else { - // do nothing - } - } - set_selectedkey(selectedkey_idx); - break; - } else { - // continue to default - } - default: // all other layers - if ( clockwise ) { - if (get_mods() & MOD_BIT(KC_RSFT) ) { // If you are holding Right Shift, encoder changes layers - if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT-1)) { - selected_layer ++; - layer_move(selected_layer); - } - } else if (get_mods() & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, navigate next word - tap_code16(LCTL(KC_RGHT)); - } else if (get_mods() & MOD_BIT(KC_RALT)) { // if holding Right Alt, change media next track - tap_code(KC_MEDIA_NEXT_TRACK); - } else { - tap_code(KC_VOLU); // Otherwise it just changes volume - } - } else if ( !clockwise ) { - if (get_mods() & MOD_BIT(KC_RSFT) ) { - if (selected_layer > 0) { - selected_layer --; - layer_move(selected_layer); - } - } else if (get_mods() & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, navigate previous word - tap_code16(LCTL(KC_LEFT)); - } else if (get_mods() & MOD_BIT(KC_RALT)) { // if holding Right Alt, change media previous track - tap_code(KC_MEDIA_PREV_TRACK); - } else { - tap_code(KC_VOLD); - } - } + switch(get_highest_layer(layer_state)){ // special handling per layer + case _FN1: // on Fn layer select what the encoder does when pressed + if (!mods_state) { + encoder_action_selectkey(clockwise); break; + } else { + // continue to default + } + default: // all other layers + if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers + encoder_action_layerchange(clockwise); + } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + encoder_action_volume(clockwise); // Otherwise it just changes volume } break; + } + break; } return true; } diff --git a/users/jonavin/jonavin.c b/users/jonavin/jonavin.c index 7393d9cd81de..a17f8dbafae7 100644 --- a/users/jonavin/jonavin.c +++ b/users/jonavin/jonavin.c @@ -112,8 +112,6 @@ along with this program. If not, see . #define ENCODER_DEFAULTACTIONS_INDEX 0 // can select encoder index if there are multiple encoders #endif - uint8_t selected_layer = 0; - void encoder_action_volume(bool clockwise) { if (clockwise) tap_code(KC_VOLU); @@ -142,6 +140,14 @@ along with this program. If not, see . tap_code16(KC_PGDN); } +#endif // ENCODER_ENABLE + +#if defined(ENCODER_ENABLE) && defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality + + __attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } + + uint8_t selected_layer = 0; + void encoder_action_layerchange(bool clockwise) { if (clockwise) { if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) { @@ -155,40 +161,35 @@ along with this program. If not, see . } } } -#endif // ENCODER_ENABLE - -#if defined(ENCODER_ENABLE) && defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality -__attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } - -bool encoder_update_user(uint8_t index, bool clockwise) { - if (!encoder_update_keymap(index, clockwise)) { return false; } - if (index != ENCODER_DEFAULTACTIONS_INDEX) {return true;} // exit if the index doesn't match - uint8_t mods_state = get_mods(); - if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers - encoder_action_layerchange(clockwise); - } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn - unregister_mods(MOD_BIT(KC_RSFT)); - encoder_action_navpage(clockwise); - register_mods(MOD_BIT(KC_RSFT)); - } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word - encoder_action_navword(clockwise); - } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track - encoder_action_mediatrack(clockwise); - } else { - switch(get_highest_layer(layer_state)) { - case _FN1: - #ifdef IDLE_TIMEOUT_ENABLE - timeout_update_threshold(clockwise); - #endif - break; - default: - encoder_action_volume(clockwise); // Otherwise it just changes volume - break; + bool encoder_update_user(uint8_t index, bool clockwise) { + if (!encoder_update_keymap(index, clockwise)) { return false; } + if (index != ENCODER_DEFAULTACTIONS_INDEX) {return true;} // exit if the index doesn't match + uint8_t mods_state = get_mods(); + if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers + encoder_action_layerchange(clockwise); + } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn + unregister_mods(MOD_BIT(KC_RSFT)); + encoder_action_navpage(clockwise); + register_mods(MOD_BIT(KC_RSFT)); + } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + switch(get_highest_layer(layer_state)) { + case _FN1: + #ifdef IDLE_TIMEOUT_ENABLE + timeout_update_threshold(clockwise); + #endif + break; + default: + encoder_action_volume(clockwise); // Otherwise it just changes volume + break; + } } + return true; } - return true; -} #endif // ENCODER_ENABLE From 950a232003761cfe81c74c5c3d3c7ceeeb55300e Mon Sep 17 00:00:00 2001 From: Jonavin Date: Fri, 3 Sep 2021 15:24:33 -0400 Subject: [PATCH 04/10] refactor fix - murphpad --- keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c b/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c index fddbbd7f43b3..179711de52af 100644 --- a/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c +++ b/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c @@ -194,11 +194,11 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { // continue to default } default: // all other layers - if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers + if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, encoder changes layers encoder_action_layerchange(clockwise); - } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + } else if (mods_state & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, navigate next/prev word encoder_action_navword(clockwise); - } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + } else if (mods_state & MOD_BIT(KC_RALT)) { // if holding Right Alt, change media next/prev track encoder_action_mediatrack(clockwise); } else { encoder_action_volume(clockwise); // Otherwise it just changes volume From 5dab9430077b0bc19f27cbc4dae3df87888ab2f7 Mon Sep 17 00:00:00 2001 From: Jonavin <=> Date: Fri, 3 Sep 2021 18:47:56 -0400 Subject: [PATCH 05/10] refactor - encoder layer switching --- .../keebio/quefrency/keymaps/jonavin/keymap.c | 42 ++++++++++--------- .../mercutio/keymaps/jonavin/keymap.c | 22 ++-------- .../murphpad/keymaps/jonavin/keymap.c | 20 +-------- users/jonavin/jonavin.c | 16 ++++--- users/jonavin/jonavin.h | 2 + 5 files changed, 39 insertions(+), 63 deletions(-) diff --git a/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c b/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c index 09a8f06d7c28..415f554e2693 100644 --- a/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c +++ b/keyboards/keebio/quefrency/keymaps/jonavin/keymap.c @@ -57,29 +57,31 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { }; #ifdef ENCODER_ENABLE // Encoder Functionality -bool encoder_update_user(uint8_t index, bool clockwise) { - uint8_t mods_state = get_mods(); - switch (index) { - case 0: // first encoder (Left Macro set) - encoder_action_navpage(clockwise) - break; - - default: // other encoder (Top right) - if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, Page up - unregister_mods(MOD_BIT(KC_LSFT)); + bool encoder_update_user(uint8_t index, bool clockwise) { + uint8_t mods_state = get_mods(); + switch (index) { + case 0: // first encoder (Left Macro set) encoder_action_navpage(clockwise); - register_mods(MOD_BIT(KC_LSFT)); - } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word - encoder_action_navword(clockwise); - } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track - encoder_action_mediatrack(clockwise); - } else { - encoder_action_volume(clockwise); // Otherwise it just changes volume + break; + + default: // other encoder (Top right) + if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding Left shift, change layers + encoder_action_layerchange(clockwise); + } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding Right shift, Page up + unregister_mods(MOD_BIT(KC_RSFT)); + encoder_action_navpage(clockwise); + register_mods(MOD_BIT(KC_RSFT)); + } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + encoder_action_volume(clockwise); // Otherwise it just changes volume + } + break; } - break; + return true; } - return true; -} #endif #ifdef RGBLIGHT_ENABLE diff --git a/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c b/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c index d66a1ae67fb0..22d26db3c2ee 100755 --- a/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c +++ b/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c @@ -106,22 +106,6 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { #ifdef ENCODER_ENABLE // Encoder Functionality - uint8_t selected_layer = 0; - - void encoder_action_layerchange(bool clockwise) { - if (clockwise) { - if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) { - selected_layer ++; - layer_move(selected_layer); - } - } else { - if (selected_layer > 0) { - selected_layer --; - layer_move(selected_layer); - } - } - } - void encoder_action_selectkey(bool clockwise) { if ( clockwise ) { if ( selectedkey_idx < MAX_KEYSELECTION-1) { @@ -206,7 +190,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { void oled_task_user(void) { - if ( IS_HOST_LED_OFF(USB_LED_NUM_LOCK) && IS_HOST_LED_OFF(USB_LED_CAPS_LOCK) && selected_layer == 0 && get_highest_layer(layer_state) == 0 ) { + if ( IS_HOST_LED_OFF(USB_LED_NUM_LOCK) && IS_HOST_LED_OFF(USB_LED_CAPS_LOCK) && get_selected_layer() == 0 && get_highest_layer(layer_state) == 0 ) { render_name(); clear_screen = true; } else { @@ -218,7 +202,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { render_logo(); oled_set_cursor(8,2); char fn_str[12]; - switch(selected_layer){ + switch(get_selected_layer()){ case 0: oled_write_P(PSTR("BASE"), false); break; @@ -238,7 +222,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { } oled_write_P(keymap_config.no_gui ? PSTR(" WL") : PSTR(" "), false); oled_set_cursor(8,3); - if (get_highest_layer(layer_state) == selected_layer) { + if (get_highest_layer(layer_state) == get_selected_layer()) { oled_write_P(PSTR(" "), false); } else { switch (get_highest_layer(layer_state)) { diff --git a/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c b/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c index 179711de52af..39e6ac87e4c7 100644 --- a/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c +++ b/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c @@ -144,22 +144,6 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { #ifdef ENCODER_ENABLE // Encoder Functionality - uint8_t selected_layer = 0; - - void encoder_action_layerchange(bool clockwise) { - if (clockwise) { - if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) { - selected_layer ++; - layer_move(selected_layer); - } - } else { - if (selected_layer > 0) { - selected_layer --; - layer_move(selected_layer); - } - } - } - void encoder_action_selectkey(bool clockwise) { if ( clockwise ) { if ( selectedkey_idx < MAX_KEYSELECTION-1) { @@ -233,7 +217,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { render_logo(); oled_set_cursor(8,2); - switch(selected_layer){ + switch(get_selected_layer()){ case _BASE: oled_write_P(PSTR("BASE"), false); break; @@ -258,7 +242,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { } oled_write_P(keymap_config.no_gui ? PSTR(" WL") : PSTR(" "), false); oled_set_cursor(8,3); - if (get_highest_layer(layer_state) == selected_layer) { + if (get_highest_layer(layer_state) == get_selected_layer()) { oled_write_P(PSTR(" "), false); } else { switch (get_highest_layer(layer_state)) { diff --git a/users/jonavin/jonavin.c b/users/jonavin/jonavin.c index a17f8dbafae7..6ecadc7b475f 100644 --- a/users/jonavin/jonavin.c +++ b/users/jonavin/jonavin.c @@ -140,14 +140,13 @@ along with this program. If not, see . tap_code16(KC_PGDN); } -#endif // ENCODER_ENABLE - -#if defined(ENCODER_ENABLE) && defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality - - __attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } - + // LAYER HANDLING uint8_t selected_layer = 0; + uint8_t get_selected_layer(void) { + return selected_layer; + } + void encoder_action_layerchange(bool clockwise) { if (clockwise) { if(selected_layer < (DYNAMIC_KEYMAP_LAYER_COUNT - 1)) { @@ -161,6 +160,11 @@ along with this program. If not, see . } } } +#endif // ENCODER_ENABLE + +#if defined(ENCODER_ENABLE) && defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality + + __attribute__((weak)) bool encoder_update_keymap(uint8_t index, bool clockwise) { return true; } bool encoder_update_user(uint8_t index, bool clockwise) { if (!encoder_update_keymap(index, clockwise)) { return false; } diff --git a/users/jonavin/jonavin.h b/users/jonavin/jonavin.h index f5c346708ae8..316483940ae6 100644 --- a/users/jonavin/jonavin.h +++ b/users/jonavin/jonavin.h @@ -64,6 +64,8 @@ enum custom_user_keycodes { void encoder_action_mediatrack(bool clockwise); void encoder_action_navword(bool clockwise); void encoder_action_navpage(bool clockwise); + + uint8_t get_selected_layer(void); void encoder_action_layerchange(bool clockwise); #endif // ENCODER_ENABLE From 8c517c0cfd68b53c0238c5c13c8e81411096a7c9 Mon Sep 17 00:00:00 2001 From: Jonavin <=> Date: Fri, 3 Sep 2021 22:02:49 -0400 Subject: [PATCH 06/10] gmmk pro encoder override defaults --- users/jonavin/jonavin.c | 14 ++++++++++++++ users/jonavin/jonavin.h | 13 +++++++++++++ 2 files changed, 27 insertions(+) diff --git a/users/jonavin/jonavin.c b/users/jonavin/jonavin.c index 6ecadc7b475f..9a71d5939f6f 100644 --- a/users/jonavin/jonavin.c +++ b/users/jonavin/jonavin.c @@ -103,6 +103,20 @@ along with this program. If not, see . } #endif // IDLE_TIMEOUT_ENABLE +#ifdef ENCFUNC_ENABLE + static uint8_t selectedkey_idx = 0; + static keycodedescType selectedkey_rec; + + static uint8_t get_selectedkey_idx(void) { + return selectedkey_idx; + } + + static void set_selectedkey(uint8_t idx) { + // make a copy from PROGMEM + memcpy_P (&selectedkey_rec, &keyselection[idx], sizeof selectedkey_rec); + } +#endif // ENCFUNC_ENABLE + #ifdef ENCODER_ENABLE #ifndef DYNAMIC_KEYMAP_LAYER_COUNT diff --git a/users/jonavin/jonavin.h b/users/jonavin/jonavin.h index 316483940ae6..20b02aa60c1f 100644 --- a/users/jonavin/jonavin.h +++ b/users/jonavin/jonavin.h @@ -58,6 +58,19 @@ enum custom_user_keycodes { #endif // TD_LSFT_CAPSLOCK_ENABLE +// ENC FUNC +#ifdef ENCFUNC_ENABLE + typedef struct { + char keydesc[6]; // this will be displayed on OLED + uint16_t keycode; // this is the keycode that will be sent when activted + } keycodedescType; + + static uint8_t get_selectedkey_idx(void); + static void set_selectedkey(uint8_t idx); + +#endif // ENCFUNC_ENABLE + + // ENCODER ACTIONS #ifdef ENCODER_ENABLE void encoder_action_volume(bool clockwise); From 2db10c7762d9060fac129ec9094265ddb3c769fc Mon Sep 17 00:00:00 2001 From: Jonavin <=> Date: Fri, 3 Sep 2021 22:11:18 -0400 Subject: [PATCH 07/10] gmmk pro override defaults --- .../gmmk/pro/ansi/keymaps/jonavin/keymap.c | 37 +++++++++++++++++++ .../gmmk/pro/ansi/keymaps/jonavin/rules.mk | 2 +- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/keyboards/gmmk/pro/ansi/keymaps/jonavin/keymap.c b/keyboards/gmmk/pro/ansi/keymaps/jonavin/keymap.c index 20a786feb7ec..f37abfac30c3 100644 --- a/keyboards/gmmk/pro/ansi/keymaps/jonavin/keymap.c +++ b/keyboards/gmmk/pro/ansi/keymaps/jonavin/keymap.c @@ -78,6 +78,43 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #endif // COLEMAK_LAYER_ENABLE }; +#if defined(ENCODER_ENABLE) && !defined(ENCODER_DEFAULTACTIONS_ENABLE) // Encoder Functionality when not using userspace defaults + void encoder_action_rgbhue(bool clockwise) { + if (clockwise) + rgblight_increase_hue_noeeprom(); + else + rgblight_decrease_hue_noeeprom(); + } + + bool encoder_update_user(uint8_t index, bool clockwise) { + uint8_t mods_state = get_mods(); + if (mods_state & MOD_BIT(KC_LSFT) ) { // If you are holding L shift, encoder changes layers + encoder_action_layerchange(clockwise); + } else if (mods_state & MOD_BIT(KC_RSFT) ) { // If you are holding R shift, Page up/dn + unregister_mods(MOD_BIT(KC_RSFT)); + encoder_action_navpage(clockwise); + register_mods(MOD_BIT(KC_RSFT)); + } else if (mods_state & MOD_BIT(KC_LCTL)) { // if holding Left Ctrl, navigate next/prev word + encoder_action_navword(clockwise); + } else if (mods_state & MOD_BIT(KC_RCTL)) { // if holding Right Ctrl, change rgb hue/colour + encoder_action_rgbhue(clockwise); + } else if (mods_state & MOD_BIT(KC_LALT)) { // if holding Left Alt, change media next/prev track + encoder_action_mediatrack(clockwise); + } else { + switch(get_highest_layer(layer_state)) { + case _FN1: + #ifdef IDLE_TIMEOUT_ENABLE + timeout_update_threshold(clockwise); + #endif + break; + default: + encoder_action_volume(clockwise); // Otherwise it just changes volume + break; + } + } + return true; + } +#endif // ENCODER_ENABLE && !ENCODER_DEFAULTACTIONS_ENABLE #ifdef RGB_MATRIX_ENABLE // Capslock, Scroll lock and Numlock indicator on Left side lights. diff --git a/keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk b/keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk index b06ae1b6ad53..81b84eea7ff0 100644 --- a/keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk +++ b/keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk @@ -6,6 +6,6 @@ BOOTMAGIC_ENABLE = lite # Enable Bootmagic Lite TD_LSFT_CAPSLOCK_ENABLE = yes IDLE_TIMEOUT_ENABLE = yes STARTUP_NUMLOCK_ON = yes -ENCODER_DEFAULTACTIONS_ENABLE = yes +ENCODER_DEFAULTACTIONS_ENABLE = no COLEMAK_LAYER_ENABLE = yes #Enable Colemak layer / set to no to disable From 94276442c86d33d17833c2e4fff81fe61553327d Mon Sep 17 00:00:00 2001 From: Jonavin <=> Date: Fri, 3 Sep 2021 22:15:57 -0400 Subject: [PATCH 08/10] cleanup ENCFUNC --- users/jonavin/jonavin.c | 14 -------------- users/jonavin/jonavin.h | 13 ------------- 2 files changed, 27 deletions(-) diff --git a/users/jonavin/jonavin.c b/users/jonavin/jonavin.c index 9a71d5939f6f..6ecadc7b475f 100644 --- a/users/jonavin/jonavin.c +++ b/users/jonavin/jonavin.c @@ -103,20 +103,6 @@ along with this program. If not, see . } #endif // IDLE_TIMEOUT_ENABLE -#ifdef ENCFUNC_ENABLE - static uint8_t selectedkey_idx = 0; - static keycodedescType selectedkey_rec; - - static uint8_t get_selectedkey_idx(void) { - return selectedkey_idx; - } - - static void set_selectedkey(uint8_t idx) { - // make a copy from PROGMEM - memcpy_P (&selectedkey_rec, &keyselection[idx], sizeof selectedkey_rec); - } -#endif // ENCFUNC_ENABLE - #ifdef ENCODER_ENABLE #ifndef DYNAMIC_KEYMAP_LAYER_COUNT diff --git a/users/jonavin/jonavin.h b/users/jonavin/jonavin.h index 20b02aa60c1f..316483940ae6 100644 --- a/users/jonavin/jonavin.h +++ b/users/jonavin/jonavin.h @@ -58,19 +58,6 @@ enum custom_user_keycodes { #endif // TD_LSFT_CAPSLOCK_ENABLE -// ENC FUNC -#ifdef ENCFUNC_ENABLE - typedef struct { - char keydesc[6]; // this will be displayed on OLED - uint16_t keycode; // this is the keycode that will be sent when activted - } keycodedescType; - - static uint8_t get_selectedkey_idx(void); - static void set_selectedkey(uint8_t idx); - -#endif // ENCFUNC_ENABLE - - // ENCODER ACTIONS #ifdef ENCODER_ENABLE void encoder_action_volume(bool clockwise); From a561272f0fe14548cf67bfe21ba0f6efac48515b Mon Sep 17 00:00:00 2001 From: Jonavin <=> Date: Fri, 3 Sep 2021 22:20:04 -0400 Subject: [PATCH 09/10] update readme --- keyboards/gmmk/pro/ansi/keymaps/jonavin/readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/gmmk/pro/ansi/keymaps/jonavin/readme.md b/keyboards/gmmk/pro/ansi/keymaps/jonavin/readme.md index a6482baa5601..ef3d677477f8 100644 --- a/keyboards/gmmk/pro/ansi/keymaps/jonavin/readme.md +++ b/keyboards/gmmk/pro/ansi/keymaps/jonavin/readme.md @@ -12,6 +12,7 @@ - holding Left shift, change layers - holding right shift, Navigate page up/down - holding Left Ctrl, navigate prev/next word + - holding Rgiht Ctrl, changes RGB hue/colour - holding Left Alt, change media prev/next track - default is change volume From 366d7e3aea75dbd0fd0ec5a6340fb491d74cf574 Mon Sep 17 00:00:00 2001 From: Jonavin <=> Date: Fri, 3 Sep 2021 22:21:33 -0400 Subject: [PATCH 10/10] fix readme typo --- keyboards/gmmk/pro/ansi/keymaps/jonavin/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/gmmk/pro/ansi/keymaps/jonavin/readme.md b/keyboards/gmmk/pro/ansi/keymaps/jonavin/readme.md index ef3d677477f8..2aa910e0c7a9 100644 --- a/keyboards/gmmk/pro/ansi/keymaps/jonavin/readme.md +++ b/keyboards/gmmk/pro/ansi/keymaps/jonavin/readme.md @@ -12,7 +12,7 @@ - holding Left shift, change layers - holding right shift, Navigate page up/down - holding Left Ctrl, navigate prev/next word - - holding Rgiht Ctrl, changes RGB hue/colour + - holding Right Ctrl, changes RGB hue/colour - holding Left Alt, change media prev/next track - default is change volume