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.

389 lines
8.7 KiB

  1. /* Copyright 2017 @TurboMech /u/TurboMech <discord> @A9entOran9e#6134
  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 "turbomech.h"
  17. #include "quantum.h"
  18. //#include "action_layer.h"
  19. #include "action.h"
  20. //#include "rgblight.h"
  21. __attribute__ ((weak))
  22. void matrix_init_keymap(void) {}
  23. __attribute__ ((weak))
  24. void matrix_scan_keymap(void) {}
  25. __attribute__ ((weak))
  26. bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
  27. return true;
  28. }
  29. __attribute__ ((weak))
  30. uint32_t layer_state_set_keymap (uint32_t state) {
  31. return state;
  32. }
  33. __attribute__ ((weak))
  34. void led_set_keymap(uint8_t usb_led) {}
  35. //#define default_layer _QWERTY (0)
  36. //extern keymap_config_t keymap_config;
  37. extern rgblight_config_t rgblight_config;
  38. //#ifdef RGBLIGHT_ENABLE
  39. /*change the rgblight_setrgb(#, #, #) to what you want CAPS lock - currenlty red*/
  40. //#define rgblight_set_caps rgblight_setrgb(255, 0, 0)
  41. //#define rgblight_base rgblight_mode(RGB_current_mode)
  42. //#endif
  43. //
  44. //bool rgb_layer_change = true;
  45. //bool RGB_INIT = false;
  46. //bool TOG_STATUS = false;
  47. #ifdef RGBLIGHT_ENABLE
  48. bool rgb_layer_change = true;
  49. #endif
  50. int RGB_current_mode;
  51. /*void matrix_init_user(void) {
  52. #ifdef RGBLIGHT_ENABLE
  53. rgblight_enable();
  54. if (true) {
  55. eeconfig_read_rgblight();
  56. rgblight_get_mode();
  57. eeconfig_update_rgblight_default();
  58. // eeconfig_debug_rgblight();
  59. //rgblight_init();
  60. }
  61. #endif
  62. }
  63. */
  64. /*void matrix_init_user(void) {
  65. #ifdef RGBLIGHT_ENABLE
  66. eeconfig_read_rgblight();
  67. eeconfig_update_rgblight_default();
  68. //rgblight_init();
  69. //rgblight_mode(RGB_current_mode);
  70. //rgblight_mode(RGB_current_mode);
  71. //RGB_current_mode = rgblight_config.mode;
  72. #endif
  73. }*/
  74. void persistent_default_layer_set(uint16_t default_layer) {
  75. eeconfig_update_default_layer(default_layer);
  76. default_layer_set(default_layer);
  77. default_layer = _QWERTY;
  78. // eeconfig_update_rgblight(rgblight_config.raw);
  79. }
  80. //Setting ADJUST layer RGB back to default
  81. /*void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
  82. if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
  83. rgblight_mode(RGB_current_mode);
  84. layer_on(layer1);
  85. } else {
  86. layer_off(layer2);
  87. }
  88. }*/
  89. void matrix_init_user(void) {
  90. uint8_t default_layer = eeconfig_read_default_layer();
  91. rgblight_enable();
  92. if(true) {
  93. if (default_layer & (1UL << _QWERTY)) {
  94. //RGB_current_mode = rgblight_config.mode;
  95. rgblight_mode(11);
  96. }
  97. else {
  98. rgblight_mode (12);
  99. }
  100. /*else if (default_layer & (1UL << _DVORAK)) {
  101. rgblight_set_green;
  102. }
  103. //else if (default_layer & (1UL << _WORKMAN)) {
  104. rgblight_set_purple;
  105. }
  106. else {
  107. rgblight_set_teal;*/
  108. }
  109. }
  110. static bool is_capslocked = false;
  111. void led_set_user(uint8_t usb_led) {
  112. if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
  113. is_capslocked = true;
  114. // DDRB |= (1 << 2); PORTB &= ~(1 << 2);
  115. } else {
  116. is_capslocked = false;
  117. // DDRB &= ~(1 << 2); PORTB &= ~(1 << 2);
  118. }
  119. }
  120. //rgblight_set();
  121. //static uint8_t is_capslocked = false;
  122. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  123. switch (keycode) {
  124. case _QWERTY:
  125. persistent_default_layer_set(1UL << _QWERTY);
  126. return false;
  127. break;
  128. case KC_MAKE_ALU84:
  129. if (!record->event.pressed) {
  130. SEND_STRING("make alu84:TurboMech:dfu");
  131. SEND_STRING(SS_TAP(X_ENTER));
  132. }
  133. return false;
  134. break;
  135. case KC_QMK:
  136. if (!record->event.pressed) {
  137. SEND_STRING("cd QMK/qmk_firmware");
  138. SEND_STRING(SS_TAP(X_ENTER));
  139. }
  140. return false;
  141. break;
  142. case KC_RESET:
  143. if (!record->event.pressed) {
  144. #ifdef RGBLIGHT_ENABLE
  145. rgblight_enable();
  146. rgblight_mode(1);
  147. rgblight_setrgb(255, 255, 255);
  148. #endif
  149. //_delay_ms(2000);
  150. reset_keyboard();
  151. }
  152. return false;
  153. break;
  154. /*case RGB_MOD:
  155. //led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
  156. if (record->event.pressed) {
  157. rgblight_mode(RGB_current_mode);
  158. RGB_current_mode = rgblight_config.mode;
  159. rgblight_step();
  160. // rgblight_mode(RGB_current_mode);
  161. //RGB_current_mode = rgblight_config.mode;
  162. // _delay_ms(50);
  163. // rgblight_set();
  164. RGB_current_mode = rgblight_config.mode;
  165. }
  166. else //if (rgblight_config.enable)
  167. {
  168. _delay_ms(50);
  169. rgblight_set();
  170. //rgblight_mode(rgblight_config.mode);
  171. // eeconfig_update_rgblight(rgblight_config.raw);
  172. }
  173. return true;
  174. break;*/
  175. /*case MO(1):
  176. if (record->event.realeased) {
  177. rgblight_mode(1);
  178. rgblight_set_red;
  179. }
  180. return true;
  181. break;*/
  182. /*case KC_CAPS:
  183. if (record->event.pressed) {
  184. rgblight_mode(RGB_current_mode);
  185. register_code(KC_CAPS);
  186. rgblight_mode(1);
  187. rgblight_set_red;
  188. }
  189. else {
  190. unregister_code(KC_CAPS);
  191. rgblight_mode(RGB_current_mode);
  192. }
  193. return false;
  194. break;*/
  195. /* rgblight_mode(RGB_current_mode);
  196. register_code(KC_CAPS);
  197. rgblight_mode(1);
  198. rgblight_set_red;
  199. }
  200. else {
  201. unregister_code(KC_CAPS);
  202. rgblight_mode(RGB_current_mode);*/
  203. // }
  204. // return true;
  205. // break;
  206. /*case KC_RESET:
  207. if (record->event.pressed) {
  208. layer_off(_FUNCTION);
  209. rgblight_mode(RGB_current_mode);
  210. RGB_current_mode = rgblight_config.mode;
  211. layer_clear();
  212. _delay_ms(1000);
  213. reset_keyboard();
  214. }
  215. else{
  216. //layer_off(_FUNCTION);
  217. _delay_ms(1000);
  218. rgblight_mode(RGB_current_mode);
  219. RGB_current_mode = rgblight_config.mode;
  220. //eeconfig_update_rgblight_default();
  221. }
  222. return false;
  223. break;
  224. }*/
  225. return true;
  226. break;
  227. /*case RGB_MOD:
  228. case RGB_HUI:
  229. case RGB_HUD:
  230. case RGB_SAI:
  231. case RGB_SAD:
  232. case RGB_VAI:
  233. case RGB_VAD:
  234. case RGB_MODE_PLAIN:
  235. case RGB_MODE_BREATHE:
  236. case RGB_MODE_RAINBOW:
  237. case RGB_MODE_SWIRL:
  238. case RGB_MODE_SNAKE:
  239. case RGB_MODE_KNIGHT:
  240. case RGB_MODE_XMAS:
  241. case RGB_MODE_GRADIENT:
  242. if (record->event.pressed) {
  243. rgb_layer_change = false;
  244. }
  245. break;
  246. }
  247. return true;*/
  248. }
  249. return process_record_keymap(keycode, record);
  250. }
  251. uint32_t layer_state_set_user(uint32_t state) {
  252. #ifdef RGBLIGHT_ENABLE
  253. uint8_t default_layer = eeconfig_read_default_layer();
  254. if (rgb_layer_change) {
  255. switch (biton32(state)) {
  256. case _FUNCTION:
  257. rgblight_set_blue;
  258. rgblight_mode(1);
  259. break;
  260. case _QWERTY:
  261. rgblight_mode(11);
  262. break;
  263. // case _MOUS:
  264. // rgblight_set_yellow;
  265. // rgblight_mode(1);
  266. // break;
  267. //case _MACROS:
  268. //rgblight_set_orange;
  269. //is_overwatch ? rgblight_mode(17) : rgblight_mode(18);
  270. //break;
  271. //case _MEDIA:
  272. //rgblight_set_green;
  273. //rgblight_mode(22);
  274. //break;
  275. default:
  276. if (is_capslocked) {
  277. rgblight_mode(1);
  278. rgblight_set_red;
  279. }
  280. else { if (default_layer & (1UL << _QWERTY)) {
  281. rgblight_mode(11);
  282. }
  283. else if (default_layer & (1UL << _FUNCTION)) {
  284. rgblight_set_cyan;
  285. }
  286. //else if (default_layer & (1UL << _WORKMAN)) {
  287. // rgblight_set_purple;
  288. // }
  289. else {
  290. rgblight_set_orange;
  291. }
  292. }
  293. rgblight_mode(1);
  294. break;
  295. }
  296. }
  297. #endif
  298. return state;
  299. }
  300. !!** possible for later
  301. void set_single_persistent_default_layer(uint8_t default_layer);
  302. void set_single_persistent_default_layer(uint8_t default_layer) {
  303. #if defined(AUDIO_ENABLE) && defined(DEFAULT_LAYER_SONGS)
  304. PLAY_SONG(default_layer_songs[default_layer]);
  305. #endif
  306. eeconfig_update_default_layer(1U<<default_layer);
  307. default_layer_set(1U<<default_layer);
  308. void matrix_init_kb(void);
  309. void matrix_init_user(void);
  310. !!** line 31
  311. __attribute__ ((weak))
  312. void matrix_init_keymap(void) {}
  313. __attribute__ ((weak))
  314. void matrix_scan_keymap(void) {}
  315. __attribute__ ((weak))
  316. bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
  317. return true;
  318. }
  319. __attribute__ ((weak))
  320. uint32_t layer_state_set_keymap (uint32_t state) {
  321. return state;
  322. }
  323. __attribute__ ((weak))
  324. void led_set_keymap(uint8_t usb_led) {}
  325. Alt +30C4
  326. ¯\_()_/¯
  327. Alt +00AF