keymap.c 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. /* Copyright 2021 Aaron Ireland
  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. #include QMK_KEYBOARD_H
  17. // KBD75 layer indices
  18. enum custom_layers {
  19. _QWERTY,
  20. _COLEMAK,
  21. _DVORAK,
  22. _FL,
  23. };
  24. enum kbd75_keycodes {
  25. QWERTY = SAFE_RANGE,
  26. COLEMAK,
  27. DVORAK
  28. };
  29. // Mac OS Custom Macros
  30. #define KC_CAPW LGUI(LSFT(KC_3)) // Capture whole screen
  31. #define KC_CPYW LGUI(LSFT(LCTL(KC_3))) // Copy whole screen
  32. #define KC_CAPP LGUI(LSFT(KC_4)) // Capture portion of screen
  33. #define KC_CPYP LGUI(LSFT(LCTL(KC_4))) // Copy portion of screen
  34. // Aaron's shell macros
  35. #define KC_CTLC LCTL(KC_C)
  36. #define KC_SNU LCTL(KC_B) // Used by vim
  37. #define KC_SND LCTL(KC_D) // Used by vim
  38. /* ***************** Aaron's KBD75 v2 Layout ********************
  39. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
  40. * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
  41. * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┤
  42. * │ │ │ │ │ │ │ │ │ │ │ │ │ │ 2U │ │
  43. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
  44. * │1.5U │ │ │ │ │ │ │ │ │ │ │ │ │1.5U │ │
  45. * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
  46. * │1.75U │ │ │ │ │ │ │ │ │ │ │ │2.25U │ │
  47. * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
  48. * │2.25U │ │ │ │ │ │ │ │ │ │ │1.75U │ │ │
  49. * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
  50. * │1.25│1.25│1.25│6.25U │1U │1U │1U │1U │1U │1U │
  51. * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
  52. * ************************************************************/
  53. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  54. /* ******************** 0: QWERTY Base Layer ********************
  55. * PSN: Print Screen
  56. * PUP: Page Up
  57. * PDN: Page Down
  58. * BRK: CTRL + C
  59. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
  60. * │ESC│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│PSN│BRK│DEL│
  61. * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┤
  62. * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │BKSPACE│HOM│
  63. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
  64. * │ ` │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PUP│
  65. * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
  66. * │ TAB │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ ENTER │PDN│
  67. * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
  68. * │ SHIFT │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │SHIFT │UP │END│
  69. * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
  70. * │ OS │ ALT│CTRL│ SPACE │OS │CTL│FN │LFT│DWN│RT │
  71. * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
  72. * ************************************************************/
  73. [_QWERTY] = LAYOUT_ansi_1u(
  74. KC_ESC , 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_CAPW, KC_CTLC, KC_DEL ,
  75. KC_GRV , 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, KC_HOME,
  76. KC_GRV , 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, KC_PGUP,
  77. KC_TAB , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , KC_PGDN,
  78. KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
  79. KC_LGUI, KC_LALT, KC_LCTL, KC_SPC , KC_RGUI, KC_LCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT
  80. ),
  81. /* ******************** 1: COLEMAK Base Layer ********************
  82. * PSN: Print Screen
  83. * PUP: Page Up
  84. * PDN: Page Down
  85. * BRK: CTRL + C
  86. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
  87. * │ESC│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│PSN│BRK│DEL│
  88. * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┤
  89. * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │BKSPACE│HOM│
  90. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
  91. * │ ` │ Q │ W │ F │ P │ G │ J │ L │ U │ Y │ ; │ [ │ ] │ \ │PUP│
  92. * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
  93. * │ TAB │ A │ R │ S │ T │ D │ H │ N │ E │ I │ O │ ' │ ENTER │PDN│
  94. * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
  95. * │ SHIFT │ Z │ X │ C │ V │ B │ K │ M │ , │ . │ / │SHIFT │UP │END│
  96. * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
  97. * │ OS │ ALT│CTRL│ SPACE │OS │CTL│FN │LFT│DWN│RT │
  98. * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
  99. * ************************************************************/
  100. [_COLEMAK] = LAYOUT_ansi_1u(
  101. KC_ESC , 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_CAPW, KC_CTLC, KC_DEL ,
  102. KC_GRV , 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, KC_HOME,
  103. KC_GRV , KC_Q , KC_W , KC_F , KC_P , KC_G , KC_J , KC_L , KC_U , KC_Y , KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
  104. KC_TAB , KC_A , KC_R , KC_S , KC_T , KC_D , KC_H , KC_N , KC_E , KC_I , KC_O , KC_QUOT, KC_ENT , KC_PGDN,
  105. KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_K , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP , KC_END ,
  106. KC_LGUI, KC_LALT, KC_LCTL, KC_SPC , KC_RGUI, KC_LCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT
  107. ),
  108. /* ******************** 2: DVORAK Base Layer ********************
  109. * PSN: Print Screen
  110. * PUP: Page Up
  111. * PDN: Page Down
  112. * BRK: CTRL + C
  113. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
  114. * │ESC│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│PSN│BRK│DEL│
  115. * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┤
  116. * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ [ │ ] │BKSPACE│HOM│
  117. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
  118. * │ ` │ ' │ , │ . │ P │ Y │ F │ G │ C │ R │ L │ / │ = │ \ │PUP│
  119. * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
  120. * │ TAB │ A │ O │ E │ U │ I │ D │ H │ T │ N │ S │ - │ ENTER │PDN│
  121. * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
  122. * │ SHIFT │ ; │ Q │ J │ K │ X │ B │ M │ W │ V │ Z │SHIFT │UP │END│
  123. * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
  124. * │ OS │ ALT│CTRL│ SPACE │OS │CTL│FN │LFT│DWN│RT │
  125. * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
  126. * ************************************************************/
  127. [_DVORAK] = LAYOUT_ansi_1u(
  128. KC_ESC , 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_CAPW, KC_CTLC, KC_DEL ,
  129. KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_LBRC, KC_RBRC, KC_BSPC, KC_HOME,
  130. KC_GRV , KC_QUOT, KC_COMM, KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , KC_SLSH, KC_EQL , KC_BSLS, KC_PGUP,
  131. KC_TAB , KC_A , KC_O , KC_E , KC_U , KC_I , KC_D , KC_H , KC_T , KC_N , KC_S , KC_MINS, KC_ENT , KC_PGDN,
  132. KC_LSFT, KC_SCLN, KC_Q , KC_J , KC_K , KC_X , KC_B , KC_M , KC_W , KC_V , KC_Z , KC_RSFT, KC_UP , KC_END ,
  133. KC_LGUI, KC_LALT, KC_LCTL, KC_SPC , KC_RGUI, KC_LCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT
  134. ),
  135. /* ******************** 3: FN Momentary Layer ********************
  136. * F13 - Launchpad
  137. * SNU - CTRL + B = Neovim Screen Up
  138. * SND - CTRL + D = Neovim Screen Down
  139. * TOG - Toggle RGB Underglow
  140. * MOD - RGB Underglow Mode
  141. * NXT - FF/Skip
  142. * PLY - Play/Stop
  143. * VL - Volume Down/Up
  144. * SN - Screen Brightness Up/Down
  145. * QRT - QWERTY Layout
  146. * CLK - COLEMAK Layout
  147. * DVK - DVORAK Layout
  148. * QK_BOOT - Put PCB into Bootstrap mode
  149. * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
  150. * │ │ │ │ │ │ │ │ │ │ │ │ │ │PSN│ │ │
  151. * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┤
  152. * │ │TOG│MOD│HU+│HU-│SA+│SA-│VA+│VA-│ │ │ │ │ QK_BOOT │F13│
  153. * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
  154. * │ TAB │QRT│ │ │ │ │ │ │ │ │ │ │ │ │SNU│
  155. * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
  156. * │ CAPS │ │ │DVK│ │ │ │ │ │ │ │ │ │SND│
  157. * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
  158. * │ │ │ │CLK│DEC│TOG│INC│STP│ │ │ │ │SN+│VL0│
  159. * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
  160. * │ OS │ ALT│CTRL│ SPACE │NXT│PLY│XXX│VL-│SN-│VL+│
  161. * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
  162. * ************************************************************/
  163. [_FL] = LAYOUT_ansi_1u(
  164. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CAPP, _______, _______,
  165. _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, QK_BOOT, KC_F13 ,
  166. KC_TAB , QWERTY , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SNU ,
  167. KC_CAPS, _______, _______, DVORAK , _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SND ,
  168. _______, _______, _______, COLEMAK, BL_DOWN, BL_TOGG, BL_UP , BL_STEP, _______, _______, _______, _______, KC_PAUS, KC_MUTE,
  169. KC_LGUI, KC_LALT, KC_LCTL, KC_SPC , KC_MNXT, KC_MPLY, _______, KC_VOLD, KC_SCRL, KC_VOLU
  170. ),
  171. };
  172. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  173. switch (keycode) {
  174. case QWERTY:
  175. if (record->event.pressed) {
  176. set_single_persistent_default_layer(_QWERTY);
  177. }
  178. return false;
  179. break;
  180. case COLEMAK:
  181. if (record->event.pressed) {
  182. set_single_persistent_default_layer(_COLEMAK);
  183. }
  184. return false;
  185. break;
  186. case DVORAK:
  187. if (record->event.pressed) {
  188. set_single_persistent_default_layer(_DVORAK);
  189. }
  190. return false;
  191. break;
  192. }
  193. return true;
  194. }