Advertisement
Vulpes-Vulpeos

Skyloong GK61 pro ds modified keymap

Dec 11th, 2024
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.06 KB | Source Code | 0 0
  1. // Copyright 2023 NaturalZh (@NaturalZh)
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3.  
  4. #include QMK_KEYBOARD_H
  5. _Bool FN_WIN = 0;
  6. _Bool FN_MAC = 0;
  7. _Bool L_WIN = 0;
  8. _Bool L_MAC = 0;
  9.  
  10. enum layer_names {
  11.     _WIN,
  12.     _MAC,
  13.     _WIN_INDEX,
  14.     _MAC_INDEX,
  15. };
  16.  
  17. enum tap_hold_keys {
  18.     _DN_MU   //Tap--KC_DOWN  and  Hold--KC_APP
  19. };
  20.  
  21. uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
  22.     switch (keycode) {
  23.         case RSFT_T(KC_UP):
  24.             return TAPPING_TERM - 80; //right shift hold time less than default tapping term 80ms
  25.         default:
  26.             return TAPPING_TERM;
  27.     }
  28. }
  29.  
  30. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  31.     /*
  32.      * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
  33.      * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│
  34.      * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
  35.      * │Tab│ Q │ W │ E | R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │
  36.      * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
  37.      * │Cap│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │   |Ent│
  38.      * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
  39.      * │Sft│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │   |Sft|   │
  40.      * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
  41.      * │Ctl│GUI│Alt│   │Spc│Spc│Mut│   |Spc|Alt│App│Ctl│   │Mox|
  42.      * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
  43.      */
  44.     [0] = LAYOUT_all(
  45.          KC_ESC,     KC_1,     KC_2,     KC_3,     KC_4,     KC_5,     KC_6,     KC_7,        KC_8,        KC_9,            KC_0,         KC_MINS,             KC_EQL,      KC_BSPC,
  46.          KC_TAB,     KC_Q,     KC_W,     KC_E,     KC_R,     KC_T,     KC_Y,     KC_U,        KC_I,        KC_O,            KC_P,         KC_LBRC,            KC_RBRC,      KC_BSLS,
  47.         KC_LCTL,     KC_A,     KC_S,     KC_D,     KC_F,     KC_G,     KC_H,     KC_J,        KC_K,        KC_L,         KC_SCLN,         KC_QUOT,             KC_ENT,
  48.         KC_LSFT,     KC_Z,     KC_X,     KC_C,     KC_V,     KC_B,     KC_N,     KC_M,     KC_COMM,      KC_DOT,         KC_SLSH,                       RSFT_T(KC_UP),
  49.         KC_CAPS,  KC_LALT,  KC_LGUI,             KC_SPC,   KC_SPC,   KC_SPC,                            KC_RGUI,  LT(1, KC_LEFT),   LT(2,KC_DOWN),   RCTL_T(KC_RIGHT)
  50.     ),
  51.  
  52.     [1] = LAYOUT_all(
  53.         KC_GRV ,    KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,   KC_F10,   KC_F11,   KC_F12,   KC_DEL,
  54.         _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  RGB_TOG,
  55.         _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
  56.         _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,              KC_UP,
  57.         _______,  _______,  _______,            _______,  _______,  _______,                      KC_LEFT,  _______,  KC_DOWN,  KC_RIGHT
  58.     ),
  59.  
  60.     [2] =  LAYOUT_all(
  61.         KC_GRV ,   KC_F13,   KC_F14, C(KC_UP),  G(KC_D), G(KC_SPC), LAG(KC_EJCT),  KC_MPRV,  KC_MPLY,  KC_MNXT,  KC_MUTE,   KC_VOLD,  KC_VOLU,  KC_DEL,
  62.         _______,  _______,  _______,  _______,  _______,   _______,      _______,  _______,  _______,  _______,  _______,   _______,  _______, _______,
  63.         _______,  _______,  _______,  _______,  _______,   _______,      _______,  _______,  _______,  _______,  _______,   _______,  _______,
  64.         _______,  _______,  _______,  _______,  _______,   _______,      _______,  _______,  _______,  _______,    KC_UP,             _______,
  65.         _______,  _______,  _______,            _______,   _______,      _______,                      KC_LEFT,  KC_DOWN,   _______,  KC_RIGHT
  66.     ),
  67.  
  68.     [3] = LAYOUT_all(
  69.         _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
  70.         _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
  71.         _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,
  72.         _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,
  73.         _______,  _______,  _______,            _______,  _______,  _______,                      _______,  _______,  _______,  _______
  74.     )
  75. };
  76.  
  77.  
  78. typedef struct {
  79.     uint16_t tap;
  80.     uint16_t hold;
  81.     uint16_t held;
  82. } tap_dance_tap_hold_t;
  83.  
  84. void tap_dance_tap_hold_finished(tap_dance_state_t *state, void *user_data) {
  85.     tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;
  86.  
  87.     if (state->pressed) {
  88.         if (state->count == 1
  89. #ifndef PERMISSIVE_HOLD
  90.             && !state->interrupted
  91. #endif
  92.         ) {
  93.             register_code16(tap_hold->hold);
  94.             tap_hold->held = tap_hold->hold;
  95.         } else {
  96.             register_code16(tap_hold->tap);
  97.             tap_hold->held = tap_hold->tap;
  98.         }
  99.     }
  100. }
  101.  
  102. void tap_dance_tap_hold_reset(tap_dance_state_t *state, void *user_data) {
  103.     tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;
  104.  
  105.     if (tap_hold->held) {
  106.         unregister_code16(tap_hold->held);
  107.         tap_hold->held = 0;
  108.     }
  109. }
  110.  
  111. #define ACTION_TAP_DANCE_TAP_HOLD(tap, hold) \
  112.     { .fn = {NULL, tap_dance_tap_hold_finished, tap_dance_tap_hold_reset}, .user_data = (void *)&((tap_dance_tap_hold_t){tap, hold, 0}), }
  113.  
  114. tap_dance_action_t tap_dance_actions[] = {
  115.     [_DN_MU] = ACTION_TAP_DANCE_TAP_HOLD(KC_DOWN, KC_APP),
  116. };
  117.  
  118.  
  119. bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
  120.  
  121.    switch (get_highest_layer(layer_state)) {
  122.       case 1:{
  123.         RGB_MATRIX_INDICATOR_SET_COLOR(LAYER1_IND, 255, 255, 255);
  124.         if (!rgb_matrix_get_flags()) {
  125.             RGB_MATRIX_INDICATOR_SET_COLOR(LAYER2_IND, 0, 0, 0);
  126.             RGB_MATRIX_INDICATOR_SET_COLOR(MUTE_IND, 0, 0, 0);
  127.             RGB_MATRIX_INDICATOR_SET_COLOR(LAYER3_IND, 0, 0, 0);
  128.          }
  129.       break; }
  130.       case 2:{
  131.         RGB_MATRIX_INDICATOR_SET_COLOR(LAYER2_IND, 255, 255, 255);
  132.         RGB_MATRIX_INDICATOR_SET_COLOR(MUTE_IND, 255, 0, 0);
  133.         if (!rgb_matrix_get_flags()) {
  134.             RGB_MATRIX_INDICATOR_SET_COLOR(LAYER1_IND, 0, 0, 0);
  135.             RGB_MATRIX_INDICATOR_SET_COLOR(LAYER3_IND, 0, 0, 0);
  136.          }
  137.       break; }
  138.       case 3:{
  139.         RGB_MATRIX_INDICATOR_SET_COLOR(LAYER3_IND, 255, 255, 255);
  140.         if (!rgb_matrix_get_flags()) {
  141.             RGB_MATRIX_INDICATOR_SET_COLOR(LAYER1_IND, 0, 0, 0);
  142.             RGB_MATRIX_INDICATOR_SET_COLOR(LAYER2_IND, 0, 0, 0);
  143.             RGB_MATRIX_INDICATOR_SET_COLOR(MUTE_IND, 0, 0, 0);
  144.          }
  145.       break; }
  146.       default:{
  147.          if (!rgb_matrix_get_flags()) {
  148.             RGB_MATRIX_INDICATOR_SET_COLOR(LAYER1_IND, 0, 0, 0);
  149.             RGB_MATRIX_INDICATOR_SET_COLOR(LAYER2_IND, 0, 0, 0);
  150.             RGB_MATRIX_INDICATOR_SET_COLOR(MUTE_IND, 0, 0, 0);
  151.             RGB_MATRIX_INDICATOR_SET_COLOR(LAYER3_IND, 0, 0, 0);
  152.          }
  153.       }
  154.     }
  155.     return true;
  156. }
  157.  
  158.  
  159. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  160.     tap_dance_action_t *action;
  161.  
  162.     switch (keycode) {
  163. #    ifdef RGB_MATRIX_ENABLE
  164.         case RGB_TOG:
  165.             if (record->event.pressed) {
  166.                 switch (rgb_matrix_get_flags()) {
  167.                     case LED_FLAG_ALL: {
  168.                         rgb_matrix_set_flags(LED_FLAG_NONE);
  169.                         rgb_matrix_set_color_all(0, 0, 0);
  170.                     } break;
  171.                     default: {
  172.                         rgb_matrix_set_flags(LED_FLAG_ALL);
  173.                     } break;
  174.                 }
  175.             }
  176.          return false;
  177.         case RGB_VAI:
  178.           rgb_matrix_set_flags(LED_FLAG_ALL);
  179.           return true;
  180. #    endif
  181.  
  182.      case TD(_DN_MU):
  183.          action = &tap_dance_actions[TD_INDEX(keycode)];
  184.            if (!record->event.pressed && action->state.count && !action->state.finished) {
  185.                 tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
  186.                 tap_code16(tap_hold->tap);
  187.             }
  188.  
  189.      default:
  190.        return true;
  191.     }
  192. }
  193.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement