process_records.h 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. /* Copyright 2020 Brandon Schlack
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #pragma once
  17. #include "brandonschlack.h"
  18. // Macros
  19. enum custom_keycodes {
  20. QM_MAKE = SAFE_RANGE,
  21. QM_FLSH,
  22. QM_VRSN,
  23. QM_KYBD,
  24. QM_KYMP,
  25. CMD_TAB,
  26. RGB_LYR,
  27. RGB_THEME_FORWARD,
  28. RGB_THEME_REVERSE,
  29. KEYMAP_SAFE_RANGE
  30. };
  31. bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
  32. void matrix_scan_cmd_tab(void);
  33. /**
  34. * QMK Defines
  35. * Some meta aliases for QMK features such as Mod-Taps
  36. * and for cleaner looking Layer Toggles
  37. */
  38. /* Control Mod-Tap */
  39. #define CTL_ESC CTL_T(KC_ESC) // Hold Escape for Control
  40. #define CTL_TAB CTL_T(KC_TAB) // Hold Tab for Control
  41. #define CTL_CAP CTL_T(KC_CAPS) // Hold Caps Lock for Control
  42. /* Command Mod-Tap */
  43. #define CMD_ESC CMD_T(KC_ESC) // Hold Escape for Command
  44. #define CMD_CAP CMD_T(KC_CAPS) // Hold Caps Lock for Command
  45. #define CMD_SPC CMD_T(KC_SPC) // Hold Space for Command
  46. /* Hyper Mod-Tap */
  47. #define HY_ESC ALL_T(KC_ESC) // Hold Escape for Hyper (Shift-Control-Option-Command)
  48. #define HY_TAB ALL_T(KC_TAB) // Hold Tab for Hyper (Shift-Control-Option-Command)
  49. #define HY_CAPS ALL_T(KC_CAPS) // Hold Caps Lock for Hyper (Shift-Control-Option-Command)
  50. /* Shift Mod-Tap */
  51. #define SF_CAPS LSFT_T(KC_CAPS) // Hold Caps Lock for Left Shift
  52. #define SFT_ENT RSFT_T(KC_ENT) // Hold Enter for Right Shift
  53. #define SF_SLSH RSFT_T(KC_SLSH) // Tap Right Shift for Slash (/)
  54. #define SF_BSLS RSFT_T(KC_BSLS) // Tap Right Shift for Back Slash (\)
  55. /* Layer Aliases */
  56. #define FN_LYR MO(_FN1) // Hold for FN Layer
  57. #define FN2_LYR MO(_FN2) // Hold for FN2 Layer
  58. #define LOWER MO(_LOWER) // Hold for LOWER Layer
  59. #define RAISE MO(_RAISE) // Hold for RAISE Layer
  60. #define TT_FN TT(_FN1) // Hold for FN Layer, or Double-Tap to Toggle
  61. #define TT_FN2 TT(_FN2) // Hold for FN2 Layer, or Double-Tap to Toggle
  62. #define TT_LWR TT(_LOWER) // Hold for LOWER Layer, or Double-Tap to Toggle
  63. #define TT_RAI TT(_RAISE) // Hold for RAISE Layer, or Double-Tap to Toggle
  64. #define SPC_LWR LT(_LOWER, KC_SPC) // Tap for Space, Hold for LOWER Layer
  65. #define SPC_RAI LT(_RAISE, KC_SPC) // Tap for Space, Hold for RAISE Layer
  66. #define SLH_LWR LT(_LOWER, KC_SLSH) // Tap for /, Hold for LOWER Layer
  67. #define BSL_LWR LT(_LOWER, KC_BSLS) // Tap for \, Hold for LOWER Layer
  68. #define MCO_LYR MO(_MACRO) // Hold for MACRO Layer
  69. #define TG_ADJT TG(_ADJUST) // Toggle ADJUST Layer
  70. #define TG_LGHT TG(_LIGHT) // Toggle LIGHT Layer
  71. /**
  72. * Media Mod-Tap
  73. * Use the Mod-Tap feature for easy media controls
  74. * Used with >=65% layouts
  75. */
  76. #define RWD_CMD RCMD_T(KC_MPRV) // Tap Right Command for Prev Track
  77. #define PLY_CMD RCMD_T(KC_MPLY) // Tap Right Command for Play/Pause
  78. #define FFD_OPT ROPT_T(KC_MNXT) // Tap Right Option for Next Track
  79. #define PLY_FN1 LT(_FN1, KC_MPLY) // Tap Fn for Play/Pause
  80. #define PLY_FN2 LT(_FN2, KC_MPLY) // Tap Fn2 for Play/Pause
  81. #define MUT_SFT RSFT_T(KC_MUTE) // Tap Right Shift for Mute
  82. /**
  83. * Arrow Mod-Tap
  84. * Use the Mod-Tap feature for arrow keys
  85. * Mostly used for 40-60% layouts
  86. */
  87. #define UP_RSFT RSFT_T(KC_UP) // Tap Right Shift for Up
  88. #define LFT_OPT ROPT_T(KC_LEFT) // Tap Right Option for Left
  89. #define LFT_CMD RCMD_T(KC_LEFT) // Tap Right Command for Left
  90. #define DWN_FN1 LT(1, KC_DOWN) // Tap Fn for Down
  91. #define DWN_LWR DWN_FN1 // Tap Lower for Down
  92. #define DWN_FN2 LT(2, KC_DOWN) // Tap Fn2 for Down
  93. #define DWN_RAI DWN_FN2 // Tap Raise for Down
  94. #define DWN_OPT ROPT_T(KC_DOWN) // Tap Right Option for Down
  95. #define RGT_SFT RSFT_T(KC_RGHT) // Tap Right Shift for Right
  96. #define RGT_OPT ROPT_T(KC_RGHT) // Tap Right Option for Right
  97. #define RGT_CTL RCTL_T(KC_RGHT) // Tap Right Ctrl for Right
  98. /**
  99. * Nav Mod-Tap
  100. * Use the Mod-Tap feature for nav keys (Home/End, Page Up/Down)
  101. * Mostly used for 40-60% layouts, on a function layer
  102. */
  103. #define PGU_SFT RSFT_T(KC_PGUP) // Tap Right Shift for Page Up
  104. #define HOM_OPT ROPT_T(KC_HOME) // Tap Right Option for Home
  105. #define HOM_CMD RCMD_T(KC_HOME) // Tap Right Command for Home
  106. #define PGD_OPT ROPT_T(KC_PGDN) // Tap Right Option for Page Down
  107. #define PGD_FN1 LT(1, KC_PGDN) // Tap Fn for Page Down
  108. #define PGD_LWR PGD_FN1 // Tap Lower for Page Down
  109. #define PGD_FN2 LT(2, KC_PGDN) // Tap Fn2 for Page Down
  110. #define PGD_RAI PGD_FN2 // Tap Raise for Page Down
  111. #define END_OPT ROPT_T(KC_END) // Tap Right Option for End
  112. #define END_CTL RCTL_T(KC_END) // Tap Right Control for End
  113. /**
  114. * MacOS
  115. * Common shortcuts used in macOS
  116. * Reference: https://support.apple.com/en-us/HT201236
  117. */
  118. #define MC_POWR KC_PWR // Power (KC_PWR)
  119. #define MC_SLEP LOPT(LCMD(KC_PWR)) // Sleep (Option-Command-Power)
  120. #define MC_SLPD LCTL(LSFT(KC_PWR)) // Sleep Display (Control-Shift-Power)
  121. #define MC_LOCK LCTL(LCMD(KC_Q)) // Lock Screen (Control-Command-Q)
  122. #define MC_MSSN KC_FIND // Mission Control: Configure karabiner for find -> mission_control
  123. #define MC_LHPD KC_MENU // Launchpad: Configure karabiner for menu -> launchpad
  124. #define MC_CMTB LCMD(KC_TAB) // Command-Tab
  125. #define MC_BACK LCMD(KC_LBRC) // Back (Command–Left Bracket)
  126. #define MC_FWRD LCMD(KC_RBRC) // Forward (Command–Right Bracket)
  127. #define CLS_TAB LCMD(KC_W) // Close Tab (Command–W)
  128. #define REO_TAB LSFT(LCMD(KC_T)) // Reopen Last Tab (Shift-Command-T)
  129. #define NXT_TAB LCTL(KC_TAB) // Next Tab (Control-Tab)
  130. #define PRV_TAB LSFT(LCTL(KC_TAB)) // Previous Tab (Shift-Control-Tab)
  131. #define NXT_WIN LCMD(KC_GRV) // Next Window (Control-Grave)
  132. #define PRV_WIN LCMD(KC_TILD) // Previous Window (Shift-Control-Grave)
  133. #define MC_PLYR LCMD(KC_F8) // Focuses current Media Player
  134. #define MC_UNDO LCMD(KC_Z) // Undo (Command-Z)
  135. #define MC_REDO LSFT(LCMD(KC_Z)) // Redo (Shift-Command-Z)
  136. #define OP_AFLL HYPR(KC_BSLS) // 1Password Autofill (Shift-Control-Option-Command-\)
  137. #define PX_AFLL LSFT(LOPT(KC_X)) // 1PasswordX Autofill (Shift-Option-X)
  138. // Reverse scrolling for using with macOS Natural Scrolling.
  139. #define MC_WH_U KC_WH_D // Mouse Wheel Up
  140. #define MC_WH_D KC_WH_U // Mouse Wheel Down
  141. #define MC_WH_L KC_WH_R // Mouse Wheel Left
  142. #define MC_WH_R KC_WH_L // Mouse Wheel Right
  143. // RGB Theme
  144. #define RGB_THM RGB_THEME_FORWARD // Cycle next RGB_THEME
  145. #define RGB_RTHM RGB_THEME_REVERSE // Cycle previous RGB_THEME
  146. void send_make_command(bool flash_bootloader);