Tharobiiceii

Minivan keymap

Apr 4th, 2022
1,548
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.39 KB | None | 0 0
  1. // Minivan Keymap
  2. // 4.4.22
  3.  
  4. #include QMK_KEYBOARD_H
  5.  
  6. // Empty Space Keycodes
  7. #ifndef _______
  8.   #define _______ KC_TRNS
  9. #endif
  10. #define XXXXXXX KC_NO
  11.  
  12. // Tap-Hold Keycodes
  13. #define MO_FN0 MO(_FN0)
  14. #define MO_FN1 MO(_FN1)
  15. #define TAB_FN1 LT(_FN1, KC_TAB)
  16. #define ENT_FN0 LT(_FN0, KC_ENT)
  17. #define APP_GUI RGUI_T(KC_APP)
  18. #define SLS_SFT RSFT_T(KC_SLSH)
  19.  
  20. // Combined Layers
  21. #define SYSTEM ((1UL << _FN0) | (1UL << _FN1))
  22.  
  23. // Layer Enumerations
  24. enum layers {
  25.   _BASE = 0,
  26.   _FN0,
  27.   _FN1,
  28.   _SYSTEM
  29. };
  30.  
  31. // Custom Key Enumerations
  32. enum keycodes {
  33.   BASE = SAFE_RANGE,
  34.   SCRLK,
  35.   CAPSLK,
  36.   NUMLK
  37. };
  38.  
  39. extern keymap_config_t keymap_config;
  40.  
  41. // Keymap
  42. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  43.   // Base
  44.   // ,-----------------------------------------------------------------------------------------------------------------.
  45.   // |    GESC|       Q|       W|       E|       R|       T|       Y|       U|       I|       O|       P|     Backspace|
  46.   // |-----------------------------------------------------------------------------------------------------------------|
  47.   // |   TAB_FN1|       A|       S|       D|       F|       G|       H|       J|       K|       L|       ;|     ENT_FN0|
  48.   // |-----------------------------------------------------------------------------------------------------------------|
  49.   // |        LShift|       Z|       X|       C|       V|       B|       N|       M|       ,|       .|      Up| SLS_SFT|
  50.   // |-----------------------------------------------------------------------------------------------------------------|
  51.   // |   LCtrl| APP_GUI|    LAlt|  MO_FN0|              Space|            Space|      MO_FN1|    Left|    Down|   Right|
  52.   // `-----------------------------------------------------------------------------------------------------------------'
  53.  
  54.   [_BASE] = LAYOUT_arrow_command(
  55.     KC_GESC,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, KC_BSPC,
  56.     TAB_FN1,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN, ENT_FN0,
  57.     KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M, KC_COMM,  KC_DOT,   KC_UP, SLS_SFT,
  58.     KC_LCTL, APP_GUI, KC_LALT,  MO_FN0,  KC_SPC,  KC_SPC,  MO_FN1, KC_LEFT, KC_DOWN, KC_RGHT
  59.   ),
  60.  
  61.   // Fn0
  62.   // ,-----------------------------------------------------------------------------------------------------------------.
  63.   // |   Pause|       !|       @|       #|       $|       %|       ^|       &|       *|       (|       )|        Insert|
  64.   // |-----------------------------------------------------------------------------------------------------------------|
  65.   // | ________ |    Pipe|       _|       +|       {|       }|    Home|     PgDn|    PgUp|    End|       "| __________ |
  66.   // |-----------------------------------------------------------------------------------------------------------------|
  67.   // | ____________ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |
  68.   // |-----------------------------------------------------------------------------------------------------------------|
  69.   // | ______ | ______ | ______ | ______ | ________________ | _______________ | __________ | ______ | _______ | ______ |
  70.   // `-----------------------------------------------------------------------------------------------------------------'
  71.  
  72.   [_FN0] = LAYOUT_arrow_command(
  73.     KC_PAUS, KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,  KC_INS,
  74.     _______, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_HOME, KC_PGDN, KC_PGUP,  KC_END, KC_DQUO, _______,
  75.     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  76.     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  77.   ),
  78.  
  79.   // Fn1
  80.   // ,-----------------------------------------------------------------------------------------------------------------.
  81.   // |   Print|       1|       2|       3|       4|       5|       6|       7|       8|       9|       0|        Delete|
  82.   // |-----------------------------------------------------------------------------------------------------------------|
  83.   // | ________ |       \|       -|       =|       [|       ]|    Left|    Down|      Up|   Right|       '| __________ |
  84.   // |-----------------------------------------------------------------------------------------------------------------|
  85.   // | ____________ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ |
  86.   // |-----------------------------------------------------------------------------------------------------------------|
  87.   // | ______ | ______ | ______ | ______ | ________________ | _______________ | __________ | ______ | _______ | ______ |
  88.   // `----------------------------------------------------------------------------------------------------------------'
  89.  
  90.   [_FN1] = LAYOUT_arrow_command(
  91.     KC_PSCR,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,  KC_DEL,
  92.     _______, KC_BSLS, KC_MINS,  KC_EQL, KC_LBRC, KC_RBRC, KC_LEFT, KC_DOWN,   KC_UP, KC_RGHT, KC_QUOT, _______,
  93.     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  94.     _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  95.   ),
  96.  
  97.   // System (Fn0 + Fn1)
  98.   // ,-----------------------------------------------------------------------------------------------------------------.
  99.   // |   RESET|      F1|      F2|      F3|      F4|      F5|      F6|      F7|      F8|      F9|     F10|           F11|
  100.   // |-----------------------------------------------------------------------------------------------------------------|
  101.   // | ________ |    Vol-|    Vol-|    Mute|        |        |        |        |  CAPSLK|   NUMLK|   SCRLK| __________ |
  102.   // |-----------------------------------------------------------------------------------------------------------------|
  103.   // | ____________ |        |        |        |        |        |        |        |        |        |        | ______ |
  104.   // |-----------------------------------------------------------------------------------------------------------------|
  105.   // | RGB_TOG|        |        | ______ |                  |                 | __________ |        |         |     F12|
  106.   // `-----------------------------------------------------------------------------------------------------------------'
  107.  
  108.   [_SYSTEM] = LAYOUT_arrow_command(
  109.       RESET,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,
  110.     _______, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  CAPSLK,   NUMLK,   SCRLK, _______,
  111.     _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
  112.     RGB_TOG, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX,  KC_F12
  113.   )
  114. };
  115.  
  116. // Process Custom Keycodes
  117. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  118.   switch (keycode) {
  119.     case SCRLK:
  120.       if (record->event.pressed) {
  121.         register_code(KC_SLCK);
  122.       } else {
  123.         unregister_code(KC_SLCK);
  124.       }
  125.       #ifdef AUDIO_ENABLE
  126.         if (host_keyboard_leds() & (1 << USB_LED_SCROLL_LOCK)) {
  127.           PLAY_SONG(tone_scroll);
  128.         } else {
  129.           PLAY_SONG(tone_noscroll);
  130.         }
  131.       #endif
  132.       return false;
  133.     case CAPSLK:
  134.       if (record->event.pressed) {
  135.         register_code(KC_CAPS);
  136.       } else {
  137.         unregister_code(KC_CAPS);
  138.       }
  139.       #ifdef AUDIO_ENABLE
  140.         if (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) {
  141.           PLAY_SONG(tone_caps);
  142.         } else {
  143.           PLAY_SONG(tone_nocaps);
  144.         }
  145.       #endif
  146.       return false;
  147.     case NUMLK:
  148.       if (record->event.pressed) {
  149.         register_code(KC_NLCK);
  150.       } else {
  151.         unregister_code(KC_NLCK);
  152.       }
  153.       #ifdef AUDIO_ENABLE
  154.         if (host_keyboard_leds() & (1 << USB_LED_NUM_LOCK)) {
  155.           PLAY_SONG(tone_num);
  156.         } else {
  157.           PLAY_SONG(tone_nonum);
  158.         }
  159.       #endif
  160.       return false;
  161.     default:
  162.       return true;
  163.   }
  164. }
  165.  
  166. // Process Combined Layers
  167. uint32_t layer_state_set_user(uint32_t state) {
  168.   if ((state & SYSTEM) == SYSTEM) {
  169.     state |= 1UL << _SYSTEM;
  170.   } else {
  171.     state &= ~(1UL << _SYSTEM);
  172.   }
  173.   return state;
  174. }
  175.  
Advertisement
Add Comment
Please, Sign In to add comment