Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include QMK_KEYBOARD_H
- #define _a 0
- #define _ENCODERS 1
- #define _c 2
- #define _PHOTOSHOP 3
- #define _ILLUSTRATOR 4
- #define TAP_CODE_DELAY 0
- enum my_keycodes {
- ENABLE_SELECTOR = SAFE_RANGE
- };
- void matrix_init_user(void) {
- // Set default layer, if enabled
- rgblight_enable();
- rgblight_sethsv(190, 170, 255);
- rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
- }
- const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- /* Macropad
- * ,--------------------.
- * | Rot1 | Rot2 | Rot3 |
- * |------+------+------|
- * | 1 | 2 | 3 |
- * |------+------+------|
- * | 4 | 5 | 6 |
- * `--------------------'
- */
- /* make abstract/ellipse/rev1:macropad:dfu */
- [_a] = LAYOUT(
- ENABLE_SELECTOR, LT(1,KC_MUTE), LT(1,KC_NO),
- KC_MYCM, KC_ENT, KC_ESC
- ),
- [_ENCODERS] = LAYOUT(
- _______, _______, _______,
- _______, _______, _______
- ),
- [_c] = LAYOUT(
- KC_MUTE, _______, LSFT(KC_J),
- KC_C, KC_M, KC_U
- ),
- [_PHOTOSHOP] = LAYOUT(
- KC_B, _______, KC_E,
- KC_V, KC_P, KC_U
- ),
- [_ILLUSTRATOR] = LAYOUT(
- KC_B, _______, KC_E,
- KC_V, KC_P, KC_U
- ),
- };
- bool selector_enabled = false;
- uint8_t selected_item = 0;
- uint8_t sent_buffer = 0;
- void send_selected_item (void) {
- switch (selected_item) {
- case 1:
- tap_code(KC_TAB);
- break;
- }
- }
- void clear_sent_buffer (void) {
- while (sent_buffer > 0) {
- sent_buffer--;
- }
- }
- bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case ENABLE_SELECTOR:
- if (record->event.pressed) {
- selected_item = 0;
- selector_enabled = true;
- tap_code(KC_LALT);
- sent_buffer = 1;
- } else {
- selector_enabled = false;
- clear_sent_buffer();
- tap_code(KC_LALT);
- send_selected_item();
- }
- return false;
- default:
- return true; // Process all other keycodes normally
- }
- }
- void encoder_update_user(uint8_t index, bool clockwise) {
- // left encoder
- if (index == 0) {
- switch(biton32(layer_state)){
- default:
- if (selector_enabled) {
- if (!clockwise && selected_item < 10) {
- selected_item++;
- } else if (clockwise && selected_item > 0){
- selected_item--;
- }
- clear_sent_buffer();
- send_selected_item();
- sent_buffer += 1;
- }
- break;
- case 1:
- if (clockwise){
- tap_code(KC_AUDIO_VOL_DOWN);
- } else{
- tap_code(KC_AUDIO_VOL_UP);
- }
- break;
- }
- }
- // middle encoder
- if (index == 1) {
- switch(biton32(layer_state)){
- case 1:
- if (clockwise){
- rgblight_sethsv(190, 170, 255);
- } else{
- rgblight_sethsv(160, 100, 255);
- }
- break;
- default:
- if (clockwise){
- tap_code(KC_AUDIO_VOL_DOWN);
- } else{
- tap_code(KC_AUDIO_VOL_UP);
- }
- break;
- }
- }
- // right encoder
- else if (index == 2) {
- switch(biton32(layer_state)){
- case 1:
- if (clockwise){
- tap_code(KC_WWW_BACK);
- } else{
- tap_code(KC_WWW_FORWARD);
- }
- break;
- default:
- if (clockwise) {
- tap_code(KC_MS_WH_DOWN);
- } else {
- tap_code(KC_MS_WH_UP);
- }
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement