diff options
Diffstat (limited to 'users/kuchosauronad0/encoder.c')
| -rw-r--r-- | users/kuchosauronad0/encoder.c | 65 |
1 files changed, 59 insertions, 6 deletions
diff --git a/users/kuchosauronad0/encoder.c b/users/kuchosauronad0/encoder.c index 1b9b2cb12..06b7b5123 100644 --- a/users/kuchosauronad0/encoder.c +++ b/users/kuchosauronad0/encoder.c | |||
| @@ -1,10 +1,63 @@ | |||
| 1 | #include "encoder.h" | 1 | #include "encoder.h" |
| 2 | |||
| 3 | void encoder_update_user(uint8_t index, bool clockwise) { | 2 | void encoder_update_user(uint8_t index, bool clockwise) { |
| 4 | if (clockwise) { | 3 | static uint16_t kc; |
| 5 | tap_code(KC_1); | 4 | uint8_t temp_mod = get_mods(); |
| 6 | } else { | 5 | if (index == 0) { /* first encoder */ |
| 7 | tap_code(KC_0); | 6 | if (clockwise) { |
| 7 | //if (temp_mod & MOD_BIT(KC_HYPR)){ // TODO: not how this works, only registers CTRL | ||
| 8 | if ((temp_mod & MOD_MASK_CTRL) && (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_ALT) && (temp_mod & MOD_MASK_GUI)) { // HYPER | ||
| 9 | kc = encoder_actions[0][8]; | ||
| 10 | } else if ( (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_ALT) ) { // ALT+SHIFT | ||
| 11 | kc = encoder_actions[0][7]; | ||
| 12 | } else if ( (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_CTRL) ) { // CTRL+SHIFT | ||
| 13 | kc = encoder_actions[0][6]; | ||
| 14 | } else if ( (temp_mod & MOD_MASK_CTRL) && (temp_mod & MOD_MASK_ALT) ) { // CTRL+ALT | ||
| 15 | kc = encoder_actions[0][5]; | ||
| 16 | } else if (temp_mod & MOD_MASK_GUI) { // GUI | ||
| 17 | kc = encoder_actions[0][4]; | ||
| 18 | } else if (temp_mod & MOD_MASK_SHIFT) { // SHIFT | ||
| 19 | kc = encoder_actions[0][3]; | ||
| 20 | } else if (temp_mod & MOD_MASK_ALT) { // ALT | ||
| 21 | kc = encoder_actions[0][2]; | ||
| 22 | } else if (temp_mod & MOD_MASK_CTRL) { // CTRL | ||
| 23 | kc = encoder_actions[0][1]; | ||
| 24 | } else { // None | ||
| 25 | kc = encoder_actions[0][0]; | ||
| 26 | } | ||
| 27 | } else { // Counter Clockwise | ||
| 28 | if ((temp_mod & MOD_MASK_CTRL) && (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_ALT) && (temp_mod & MOD_MASK_GUI)) { // HYPER | ||
| 29 | kc = encoder_actions[1][8]; | ||
| 30 | } else if ( (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_ALT) ) { // ALT+SHIFT | ||
| 31 | kc = encoder_actions[1][7]; | ||
| 32 | } else if ( (temp_mod & MOD_MASK_SHIFT) && (temp_mod & MOD_MASK_CTRL) ) { // CTRL+SHIFT | ||
| 33 | kc = encoder_actions[1][6]; | ||
| 34 | } else if ( (temp_mod & MOD_MASK_CTRL) && (temp_mod & MOD_MASK_ALT) ) { // CTRL+ALT | ||
| 35 | kc = encoder_actions[1][5]; | ||
| 36 | } else if (temp_mod & MOD_MASK_GUI) { // GUI | ||
| 37 | kc = encoder_actions[1][4]; | ||
| 38 | } else if (temp_mod & MOD_MASK_SHIFT) { // SHIFT | ||
| 39 | kc = encoder_actions[1][3]; | ||
| 40 | } else if (temp_mod & MOD_MASK_ALT) { // ALT | ||
| 41 | kc = encoder_actions[1][2]; | ||
| 42 | } else if (temp_mod & MOD_MASK_CTRL) { // CTRL | ||
| 43 | kc = encoder_actions[1][1]; | ||
| 44 | } else { // None | ||
| 45 | kc = encoder_actions[1][0]; | ||
| 46 | } | ||
| 47 | } | ||
| 48 | clear_mods(); | ||
| 49 | tap_code16(kc); | ||
| 50 | set_mods(temp_mod); | ||
| 51 | } else if (index == 1){ // second Encoder | ||
| 52 | if (clockwise) { | ||
| 53 | tap_code(KC_0); | ||
| 54 | } else{ | ||
| 55 | tap_code(KC_1); | ||
| 56 | } | ||
| 8 | } | 57 | } |
| 9 | } | 58 | } |
| 10 | 59 | const uint16_t PROGMEM encoder_actions[][9] = { \ | |
| 60 | // None CTRL ALT SHIFT GUI CTRL+ALT CTRL+SHFT ALT+SHFT HYPER | ||
| 61 | { KC_PGDN, KC_DOWN, KC_AUDIO_VOL_UP, KC_END, KC_WWW_FORWARD, KC_AUDIO_MUTE, KC_RIGHT, LSFT(KC_TAB), KC_MEDIA_NEXT_TRACK}, \ | ||
| 62 | { KC_PGUP, KC_UP, KC_AUDIO_VOL_DOWN, KC_HOME, KC_WWW_BACK, KC_MEDIA_PLAY_PAUSE, KC_LEFT, KC_TAB, KC_MEDIA_PREV_TRACK} | ||
| 63 | }; | ||
