66 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
// Copyright 2022 xia0 (@xia0)
 | 
						|
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
						|
 | 
						|
#include "quantum.h"
 | 
						|
 | 
						|
#ifdef ENCODER_ENABLE
 | 
						|
bool encoder_update_kb(uint8_t index, bool clockwise) {
 | 
						|
    if (!encoder_update_user(index, clockwise)) {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    uint8_t layer = get_highest_layer(layer_state);
 | 
						|
 | 
						|
    if (index == 0) { /* First encoder */
 | 
						|
        switch (layer) {
 | 
						|
            case 0:
 | 
						|
                if (clockwise) {
 | 
						|
                    tap_code_delay(KC_VOLU, 10);
 | 
						|
                } else {
 | 
						|
                    tap_code_delay(KC_VOLD, 10);
 | 
						|
                }
 | 
						|
                break;
 | 
						|
            case 2:
 | 
						|
                if (clockwise) {
 | 
						|
                    tap_code16(LCTL(KC_MINUS));
 | 
						|
                } else {
 | 
						|
                    tap_code16(LCTL(KC_EQUAL));
 | 
						|
                }
 | 
						|
                break;
 | 
						|
            default:
 | 
						|
                if (clockwise) {
 | 
						|
                    tap_code(KC_MS_L);
 | 
						|
                } else {
 | 
						|
                    tap_code(KC_MS_R);
 | 
						|
                }
 | 
						|
                break;
 | 
						|
        }
 | 
						|
 | 
						|
    } else if (index == 1) { /* Second encoder */
 | 
						|
        switch (layer) {
 | 
						|
            case 0:
 | 
						|
                if (clockwise) {
 | 
						|
                    tap_code(KC_MFFD);
 | 
						|
                } else {
 | 
						|
                    tap_code(KC_MRWD);
 | 
						|
                }
 | 
						|
                break;
 | 
						|
            case 2:
 | 
						|
                if (clockwise) {
 | 
						|
                    tap_code16(LCTL(KC_Y));
 | 
						|
                } else {
 | 
						|
                    tap_code16(LCTL(KC_Z));
 | 
						|
                }
 | 
						|
                break;
 | 
						|
            default:
 | 
						|
                if (clockwise) {
 | 
						|
                    tap_code(KC_MS_D);
 | 
						|
                } else {
 | 
						|
                    tap_code(KC_MS_U);
 | 
						|
                }
 | 
						|
                break;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    return true;
 | 
						|
}
 | 
						|
#endif
 |