qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

snatchpad.c (1734B)


      1 // Copyright 2022 xia0 (@xia0)
      2 // SPDX-License-Identifier: GPL-2.0-or-later
      3 
      4 #include "quantum.h"
      5 
      6 #ifdef ENCODER_ENABLE
      7 bool encoder_update_kb(uint8_t index, bool clockwise) {
      8     if (!encoder_update_user(index, clockwise)) {
      9         return false;
     10     }
     11 
     12     uint8_t layer = get_highest_layer(layer_state);
     13 
     14     if (index == 0) { /* First encoder */
     15         switch (layer) {
     16             case 0:
     17                 if (clockwise) {
     18                     tap_code_delay(KC_VOLU, 10);
     19                 } else {
     20                     tap_code_delay(KC_VOLD, 10);
     21                 }
     22                 break;
     23             case 2:
     24                 if (clockwise) {
     25                     tap_code16(LCTL(KC_MINUS));
     26                 } else {
     27                     tap_code16(LCTL(KC_EQUAL));
     28                 }
     29                 break;
     30             default:
     31                 if (clockwise) {
     32                     tap_code(MS_LEFT);
     33                 } else {
     34                     tap_code(MS_RGHT);
     35                 }
     36                 break;
     37         }
     38 
     39     } else if (index == 1) { /* Second encoder */
     40         switch (layer) {
     41             case 0:
     42                 if (clockwise) {
     43                     tap_code(KC_MFFD);
     44                 } else {
     45                     tap_code(KC_MRWD);
     46                 }
     47                 break;
     48             case 2:
     49                 if (clockwise) {
     50                     tap_code16(LCTL(KC_Y));
     51                 } else {
     52                     tap_code16(LCTL(KC_Z));
     53                 }
     54                 break;
     55             default:
     56                 if (clockwise) {
     57                     tap_code(MS_DOWN);
     58                 } else {
     59                     tap_code(MS_UP);
     60                 }
     61                 break;
     62         }
     63     }
     64     return true;
     65 }
     66 #endif