pvinis.h 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #pragma once
  2. #include "quantum.h"
  3. // my own keycodes
  4. enum userspace_custom_keycodes {
  5. PV_ = SAFE_RANGE,
  6. PV_VRSN, // prints firmware version
  7. PV_MAKE, // prints the make command of the keyboard
  8. PV_FLSH, // resets keyboard
  9. PV_KTMR, // play katamari music
  10. PV_SAFE_RANGE, // used for extra keycodes in the individual keymaps
  11. };
  12. enum tap_dance_indexes {
  13. // tap dance
  14. TD_FLSH, // flash keyboard (as if the physical flash key was pressed)
  15. };
  16. #define ALLM(kc) LCAG(kc) // easier name for left ctrl-alt-gui
  17. #define PV_ESCC CTL_T(KC_ESC) // esc on tap, ctrl on hold
  18. #define PV_LOCK LCTL(LSFT(KC_PWR)) // lock computer
  19. #define TD_3FLS TD(TD_FLSH) // tap dance 3 times for flash
  20. // layers
  21. enum {
  22. LR_BASE = 0, // used for basic keys like the surrounding ctrl, cmd, etc
  23. LR_QWERTY,
  24. LR_CARPALX,
  25. LR_SYMBOL, // symbol input (!, @, #, etc)
  26. LR_SYSCTL, // system control (music, volume, keyboard flash, etc)
  27. LR_KBCTL, // keyboard control (version, make, flash, etc)
  28. };
  29. // layer switchers
  30. #define BASE TO(LR_BASE)
  31. #define QWERTY TO(LR_QWERTY)
  32. #define CARPALX TO(LR_CARPALX)
  33. #define SYMBOL MO(LR_SYMBOL)
  34. #define SYSCTL MO(LR_SYSCTL)
  35. #define KBCTL MO(LR_KBCTL)
  36. // layout parts for easy reuse between keyboard keymaps
  37. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  38. // | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
  39. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  40. #define ________________NUMBERS_L__________________ KC_1, KC_2, KC_3, KC_4, KC_5
  41. #define ________________NUMBERS_R__________________ KC_6, KC_7, KC_8, KC_9, KC_0
  42. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  43. // | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
  44. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  45. #define ______________________F_L__________________ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5
  46. #define ______________________F_R__________________ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
  47. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  48. // | Q | W | E | R | T | | Y | U | I | O | P |
  49. // ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
  50. // | A | S | D | F | G | | H | J | K | L | ; |
  51. // ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
  52. // | Z | X | C | V | B | | N | M | , | . | / |
  53. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  54. #define _________________QWERTY_L1_________________ KC_Q , KC_W , KC_E , KC_R , KC_T
  55. #define _________________QWERTY_L2_________________ KC_A , KC_S , KC_D , KC_F , KC_G
  56. #define _________________QWERTY_L3_________________ KC_Z , KC_X , KC_C , KC_V , KC_B
  57. #define _________________QWERTY_R1_________________ KC_Y , KC_U , KC_I , KC_O , KC_P
  58. #define _________________QWERTY_R2_________________ KC_H , KC_J , KC_K , KC_L , KC_SCLN
  59. #define _________________QWERTY_R3_________________ KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH
  60. #define _____________MOD_QWERTY_L2_________________ CTL_T(KC_A), SFT_T(KC_S), GUI_T(KC_D), ALT_T(KC_F), KC_G
  61. #define _____________MOD_QWERTY_R2_________________ KC_H , ALT_T(KC_J), GUI_T(KC_K), SFT_T(KC_L), CTL_T(KC_SCLN)
  62. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  63. // | Q | G | M | L | W | | Y | F | I | O | P |
  64. // ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
  65. // | D | S | T | N | R | | I | A | K | L | ; |
  66. // ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
  67. // | Z | X | C | V | J | | K | P | , | . | / |
  68. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  69. #define ________________CARPALX_L1_________________ KC_Q , KC_G , KC_M , KC_L , KC_W
  70. #define ________________CARPALX_L2_________________ KC_D , KC_S , KC_T , KC_N , KC_R
  71. #define ________________CARPALX_L3_________________ KC_Z , KC_X , KC_C , KC_V , KC_J
  72. #define ________________CARPALX_R1_________________ KC_Y , KC_F , KC_U , KC_B , KC_SCLN
  73. #define ________________CARPALX_R2_________________ KC_I , KC_A , KC_E , KC_O , KC_H
  74. #define ________________CARPALX_R3_________________ KC_K , KC_P , KC_COMM, KC_DOT , KC_SLSH
  75. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  76. // | ! | @ | { | } | _ | | \ | | ` | | |
  77. // ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
  78. // | # | $ | ( | ) | - | | = | & | ' | " | | |
  79. // ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
  80. // | % | ^ | [ | ] | + | | * | ~ | < | > | / |
  81. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  82. #define _________________SYMBOL_L1_________________ KC_EXLM, KC_AT , KC_LCBR, KC_RCBR, KC_UNDS
  83. #define _________________SYMBOL_L2_________________ KC_HASH, KC_DLR , KC_LPRN, KC_RPRN, KC_MINS
  84. #define _________________SYMBOL_L3_________________ KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_PLUS
  85. #define _________________SYMBOL_R1_________________ KC_BSLS, _______, KC_GRV , _______, _______
  86. #define _________________SYMBOL_R2_________________ KC_EQL , KC_AMPR, KC_QUOT, KC_DQUO, KC_PIPE
  87. #define _________________SYMBOL_R3_________________ KC_ASTR, KC_TILD, KC_LABK, KC_RABK, KC_SLSH
  88. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  89. // | | | | | | |MUTE |HOME | ^ | END | |
  90. // ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
  91. // | | | | | | |VOLUP| < | v | > | |
  92. // ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
  93. // | | | | | | |VOLDN|MPREV|MPLAY|MNEXT| |
  94. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  95. #define _________________SYSCTL_L1_________________
  96. #define _________________SYSCTL_L2_________________
  97. #define _________________SYSCTL_L3_________________
  98. // vol v ctl v
  99. #define _________________SYSCTL_R1_________________ KC_MUTE , KC_HOME , KC_UP , KC_END , PV_LOCK
  100. #define _________________SYSCTL_R2_________________ KC_VOLU , KC_LEFT , KC_DOWN , KC_RGHT /* < arrows */ , KC_SLEP
  101. #define _________________SYSCTL_R3_________________ KC_VOLD , KC_MPRV , KC_MPLY , KC_MNXT /* < music */ , KC_PWR
  102. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  103. // |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX| |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|
  104. // ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
  105. // |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX| |XXXXX|VERSN|MAKE |FLASH|XXXXX|
  106. // ,-----+-----+-----x-----x-----, ,-----x-----x-----+-----+-----,
  107. // |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX| |XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|
  108. // ,-----+-----+-----+-----+-----, ,-----+-----+-----+-----+-----,
  109. #define __________________KBCTL_L1_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
  110. #define __________________KBCTL_L2_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
  111. #define __________________KBCTL_L3_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
  112. #define __________________KBCTL_R1_________________ XXXXXXX, XXXXXXX, XXXXXXX, PV_KTMR, XXXXXXX
  113. #define __________________KBCTL_R2_________________ XXXXXXX, PV_VRSN, PV_MAKE, PV_FLSH, XXXXXXX
  114. #define __________________KBCTL_R3_________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
  115. // we need wrappers in order for these definitions, because they need to be expanded before being used as arguments to the LAYOUT_xxx macro
  116. #define LAYOUT_ergodox_pretty_wrapper(...) LAYOUT_ergodox_pretty(__VA_ARGS__)
  117. #define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
  118. // extra stuff that might be needed
  119. void keyboard_post_init_user_local(void);
  120. uint32_t layer_state_set_user_local(uint32_t state);