You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

196 lines
12 KiB

[Keymap] Cleanup and updating of drashna keymap code (#11516) * Update other keyboards for rgb matrix changes * Remove customized bootmagic code * Fix corne layout compilation error * Fix compiler errors with all keymaps * Add Simple Visualizer for ergodox infinity * Fix compile issue with Corne * Fix keymap stuff * Add alias for mouse layer * Add Halmak Keyboard layout * Updates for Kyria * Add support for oled interval * Change RGB stuff [CHANGE] Fix coexistence issues * Fix rgb_stuff * Add custom ploopyco mouse keymap * Decrease default dwell time * Updates based on last breaking changes update * Disable command on dactyl * Update ergodox to use proper commands for rgb matrix indicators * Update all rgb matrix indicator functions * Update rules for dactyl-manuform * Reduce wait time for mouse layer off event * Add more info to logger * Add wrappers for get_tapping term * Move version.h include into only file that actually needs it * Update rgb sleep stuff * Update key print function * Change DM keymap settings * Change pin for DM Manuform * Add Proton C stuff for Corne keymap * more arm corne tinkering * Even more arm stuff for corne * Cleanup corne stuff * redirect default keymap to drashna because I am a very bad man * change corne rgb priority * Update tractyl manuform to not conflict * Add more secret stuff * more dactyl tweaks * Add more options to split transport * Changes of oled support * Change split settings * Improve keylogger formatting more * tweak oled stuff * Oled and such tweaks * Reduce brightness due to leds * Decrease brightness more * Only run layer code if master
3 years ago
  1. /* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
  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 "drashna.h"
  17. #define TG_DBLO TG(_DIABLO)
  18. // clang-format off
  19. #define LAYOUT_5x6_right_trackball_wrapper(...) LAYOUT_5x6_right_trackball(__VA_ARGS__)
  20. #define LAYOUT_5x6_right_trackball_base( \
  21. K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
  22. K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
  23. K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
  24. ) \
  25. LAYOUT_5x6_right_trackball_wrapper( \
  26. KC_GRV, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, KC_MINS, \
  27. KC_ESC, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, KC_BSLS, \
  28. LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(KC_QUOT), \
  29. OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
  30. OS_LALT, OS_LGUI, TG_GAME, TG_DBLO, \
  31. OS_LGUI, KC_GRV, OS_RGUI, \
  32. KC_SPC, _______, KC_ENT, \
  33. BK_LWER, MO(_MOUSE), MO(_MOUSE), DL_RAIS \
  34. )
  35. #define LAYOUT_5x6_right_trackball_base_wrapper(...) LAYOUT_5x6_right_trackball_base(__VA_ARGS__)
  36. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  37. [_QWERTY] = LAYOUT_5x6_right_trackball_base_wrapper(
  38. _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
  39. _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
  40. _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
  41. ),
  42. [_COLEMAK] = LAYOUT_5x6_right_trackball_base_wrapper(
  43. _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
  44. _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
  45. _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
  46. ),
  47. [_DVORAK] = LAYOUT_5x6_right_trackball_base_wrapper(
  48. _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
  49. _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
  50. _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
  51. ),
  52. [_WORKMAN] = LAYOUT_5x6_right_trackball_base_wrapper(
  53. _________________WORKMAN_L1________________, _________________WORKMAN_R1________________,
  54. _________________WORKMAN_L2________________, _________________WORKMAN_R2________________,
  55. _________________WORKMAN_L3________________, _________________WORKMAN_R3________________
  56. ),
  57. [_NORMAN] = LAYOUT_5x6_right_trackball_base_wrapper(
  58. _________________NORMAN_L1_________________, _________________NORMAN_L1_________________,
  59. _________________NORMAN_L2_________________, _________________NORMAN_R2_________________,
  60. _________________NORMAN_L3_________________, _________________NORMAN_R3_________________
  61. ),
  62. [_MALTRON] = LAYOUT_5x6_right_trackball_base_wrapper(
  63. _________________MALTRON_L1________________, _________________MALTRON_R1________________,
  64. _________________MALTRON_L2________________, _________________MALTRON_R2________________,
  65. _________________MALTRON_L3________________, _________________MALTRON_R3________________
  66. ),
  67. [_EUCALYN] = LAYOUT_5x6_right_trackball_base_wrapper(
  68. _________________EUCALYN_L1________________, _________________EUCALYN_R1________________,
  69. _________________EUCALYN_L2________________, _________________EUCALYN_R2________________,
  70. _________________EUCALYN_L3________________, _________________EUCALYN_R3________________
  71. ),
  72. [_CARPLAX] = LAYOUT_5x6_right_trackball_base_wrapper(
  73. _____________CARPLAX_QFMLWY_L1_____________, _____________CARPLAX_QFMLWY_R1_____________,
  74. _____________CARPLAX_QFMLWY_L2_____________, _____________CARPLAX_QFMLWY_R2_____________,
  75. _____________CARPLAX_QFMLWY_L3_____________, _____________CARPLAX_QFMLWY_R3_____________
  76. ),
  77. [_MOUSE] = LAYOUT_5x6_right_trackball(
  78. _______, _______, _______, _______, _______, _______, DPI_CONFIG, _______, _______, _______, _______, _______,
  79. _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______,
  80. _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______,
  81. _______, _______, _______, _______, _______, _______, _______, KC_BTN4, KC_BTN5, _______, _______, _______,
  82. _______, _______, _______, _______,
  83. _______, _______, _______,
  84. _______, _______, _______,
  85. _______, _______, _______, _______
  86. ),
  87. [_GAMEPAD] = LAYOUT_5x6_right_trackball(
  88. KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, DPI_CONFIG, _______, _______, _______, _______, _______,
  89. KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, KC_WH_U, _______, _______, _______, _______, _______,
  90. KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______,
  91. KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, _______, KC_BTN4, KC_BTN5, _______, _______, _______,
  92. KC_I, KC_T, TG_GAME, KC_NO,
  93. KC_V, KC_O, _______,
  94. KC_SPC, KC_P, _______,
  95. KC_H, KC_LGUI, _______, _______
  96. ),
  97. [_DIABLO] = LAYOUT_5x6_right_trackball(
  98. KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
  99. KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
  100. KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
  101. KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, KC_NO, KC_N, KC_M, KC_NO, KC_NO, KC_NO,
  102. KC_F, KC_L, KC_NO, TG_DBLO,
  103. SFT_T(KC_SPC), KC_F, _______,
  104. ALT_T(KC_Q), KC_J, _______,
  105. KC_DIABLO_CLEAR, KC_LGUI, _______, _______
  106. ),
  107. [_LOWER] = LAYOUT_5x6_right_trackball_wrapper(
  108. KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11,
  109. _______, _________________LOWER_L1__________________, _________________LOWER_R1__________________, _______,
  110. _______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
  111. _______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______,
  112. _______, _______, _______, _______,
  113. _______, _______, _______,
  114. _______, _______, _______,
  115. _______, _______, _______, _______
  116. ),
  117. [_RAISE] = LAYOUT_5x6_right_trackball_wrapper(
  118. KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11,
  119. KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______,
  120. _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
  121. _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
  122. _______, _______, _______, _______,
  123. _______, _______, _______,
  124. _______, _______, _______,
  125. _______, _______, _______, _______
  126. ),
  127. [_ADJUST] = LAYOUT_5x6_right_trackball_wrapper(
  128. KC_MAKE, ___________________BLANK___________________, _________________ADJUST_R1_________________, KC_RST,
  129. VRSN, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EEP_RST,
  130. _______, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, TG_MODS,
  131. _______, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY,
  132. HPT_DWLI, HPT_DWLD, _______, _______,
  133. HPT_TOG, HPT_BUZ, KC_NUKE,
  134. _______, _______, _______,
  135. _______, _______, KC_NUKE, _______
  136. ),
  137. };
  138. // clang-format off
  139. #ifdef POINTING_DEVICE_ENABLE
  140. static uint16_t mouse_timer = 0;
  141. static uint16_t mouse_debounce_timer = 0;
  142. static uint8_t mouse_keycode_tracker = 0;
  143. void process_mouse_user(report_mouse_t* mouse_report, int16_t x, int16_t y) {
  144. if ((x || y) && timer_elapsed(mouse_timer) > 125) {
  145. mouse_timer = timer_read();
  146. if (!layer_state_is(_MOUSE) && !layer_state_is(_GAMEPAD) && timer_elapsed(mouse_debounce_timer) > 125) {
  147. layer_on(_MOUSE);
  148. }
  149. }
  150. if (timer_elapsed(mouse_debounce_timer) > 125 || layer_state_is(_GAMEPAD) ) {
  151. mouse_report->x = x;
  152. mouse_report->y = y;
  153. }
  154. }
  155. void matrix_scan_keymap(void) {
  156. if (timer_elapsed(mouse_timer) > 650 && layer_state_is(_MOUSE) && !mouse_keycode_tracker) {
  157. layer_off(_MOUSE);
  158. }
  159. }
  160. bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
  161. switch(keycode){
  162. case MO(_MOUSE):
  163. case DPI_CONFIG:
  164. case KC_MS_UP...KC_MS_WH_RIGHT:
  165. record->event.pressed ? mouse_keycode_tracker++ : mouse_keycode_tracker--;
  166. mouse_timer = timer_read();
  167. break;
  168. default:
  169. if (layer_state_is(_MOUSE) && !mouse_keycode_tracker) {
  170. layer_off(_MOUSE);
  171. }
  172. mouse_debounce_timer = timer_read();
  173. break;
  174. }
  175. return true;
  176. }
  177. #endif