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.

170 lines
4.5 KiB

  1. /* Copyright 2021 Alan Pocklington
  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 "ajp10304.h"
  17. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  18. switch (keycode) {
  19. case QWERTY:
  20. if (record->event.pressed) {
  21. set_single_persistent_default_layer(_QWERTY);
  22. }
  23. return false;
  24. case LOWER:
  25. if (record->event.pressed) {
  26. layer_on(_LOWER);
  27. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  28. } else {
  29. layer_off(_LOWER);
  30. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  31. }
  32. return false;
  33. case RAISE:
  34. if (record->event.pressed) {
  35. layer_on(_RAISE);
  36. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  37. } else {
  38. layer_off(_RAISE);
  39. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  40. }
  41. return false;
  42. case MLWR:
  43. if (record->event.pressed) {
  44. layer_on(_LOWER);
  45. layer_on(_MLWR);
  46. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  47. } else {
  48. layer_off(_LOWER);
  49. layer_off(_MLWR);
  50. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  51. }
  52. return false;
  53. case MRSE:
  54. if (record->event.pressed) {
  55. layer_on(_RAISE);
  56. layer_on(_MRSE);
  57. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  58. } else {
  59. layer_off(_RAISE);
  60. layer_off(_MRSE);
  61. update_tri_layer(_LOWER, _RAISE, _ADJUST);
  62. }
  63. return false;
  64. case MFNC:
  65. if (record->event.pressed) {
  66. layer_on(_FUNC);
  67. layer_on(_MFNC);
  68. } else {
  69. layer_off(_FUNC);
  70. layer_off(_MFNC);
  71. }
  72. return false;
  73. case MFNC2:
  74. if (record->event.pressed) {
  75. layer_on(_FUNC2);
  76. layer_on(_MFNC2);
  77. } else {
  78. layer_off(_FUNC2);
  79. layer_off(_MFNC2);
  80. }
  81. return false;
  82. case M_CUSTOM:
  83. if (record->event.pressed) {
  84. SEND_STRING("Custom text here");
  85. }
  86. break;
  87. case M_WORD_SEL:
  88. if (record->event.pressed) {
  89. register_mods(MOD_LCTL);
  90. tap_code(KC_RGHT);
  91. tap_code16(S(KC_LEFT));
  92. unregister_mods(MOD_LCTL);
  93. }
  94. break;
  95. case M_WORD_SEL_MAC:
  96. if (record->event.pressed) {
  97. register_mods(MOD_LALT);
  98. tap_code(KC_RGHT);
  99. tap_code16(S(KC_LEFT));
  100. unregister_mods(MOD_LALT);
  101. }
  102. break;
  103. case M_LINE_SEL:
  104. if (record->event.pressed) {
  105. tap_code(KC_HOME);
  106. tap_code16(S(KC_END));
  107. }
  108. break;
  109. case M_LINE_SEL_MAC:
  110. if (record->event.pressed) {
  111. tap_code16(C(KC_A));
  112. tap_code16(C(S(KC_E)));
  113. }
  114. break;
  115. case M_LINE_DEL:
  116. if (record->event.pressed) {
  117. tap_code(KC_HOME);
  118. tap_code16(S(KC_END));
  119. tap_code(KC_BSPC);
  120. }
  121. break;
  122. case M_LINE_DEL_MAC:
  123. if (record->event.pressed) {
  124. tap_code16(C(KC_A));
  125. tap_code16(C(S(KC_E)));
  126. tap_code(KC_BSPC);
  127. }
  128. break;
  129. case M_DUP:
  130. if (record->event.pressed) {
  131. tap_code16(C(KC_C));
  132. tap_code(KC_RGHT);
  133. tap_code16(C(KC_V));
  134. }
  135. break;
  136. case M_DUP_MAC:
  137. if (record->event.pressed) {
  138. tap_code16(G(KC_C));
  139. tap_code(KC_RGHT);
  140. tap_code16(G(KC_V));
  141. }
  142. break;
  143. case M_JOIN:
  144. if (record->event.pressed) {
  145. tap_code(KC_END);
  146. tap_code(KC_DEL);
  147. }
  148. break;
  149. case M_JOIN_MAC:
  150. if (record->event.pressed) {
  151. tap_code16(C(KC_E));
  152. tap_code(KC_DEL);
  153. }
  154. break;
  155. case M_MODE:
  156. if (record->event.pressed) {
  157. SEND_STRING("PC");
  158. }
  159. break;
  160. case M_MODE_MAC:
  161. if (record->event.pressed) {
  162. SEND_STRING("OSX");
  163. }
  164. break;
  165. }
  166. return true;
  167. }