logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

keymap.c (6406B)


  1. #include QMK_KEYBOARD_H
  2. enum custom_keycodes {
  3. M_TGLHF = SAFE_RANGE,
  4. M_TGG
  5. };
  6. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  7. LAYOUT(
  8. LT(3, KC_MSTP), KC_VOLU, KC_MPLY, KC_MPRV, KC_VOLD, KC_MNXT),
  9. LAYOUT(
  10. LT(3, KC_ESC), C(KC_Z), C(S(KC_Z)), C(KC_X), C(KC_C), C(KC_V)),
  11. LAYOUT(
  12. LT(3, KC_1), KC_2, KC_3, KC_4, M_TGLHF, M_TGG),
  13. LAYOUT(
  14. KC_TRNS, KC_TRNS, QK_BOOT, TO(0), TO(1), TO(2)),
  15. LAYOUT(
  16. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
  17. LAYOUT(
  18. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
  19. LAYOUT(
  20. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
  21. LAYOUT(
  22. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
  23. LAYOUT(
  24. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
  25. LAYOUT(
  26. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
  27. LAYOUT(
  28. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
  29. LAYOUT(
  30. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
  31. LAYOUT(
  32. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
  33. LAYOUT(
  34. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
  35. LAYOUT(
  36. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
  37. LAYOUT(
  38. KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
  39. };
  40. void set_switch_led(int ledId, bool state) {
  41. if(state) {
  42. switch(ledId) {
  43. case 1:
  44. gpio_write_pin_high(D7);
  45. break;
  46. case 2:
  47. if(gpio_read_pin(B7)) {
  48. gpio_write_pin_high(C6);
  49. } else {
  50. gpio_write_pin_high(C7);
  51. }
  52. break;
  53. case 3:
  54. gpio_write_pin_high(D4);
  55. break;
  56. case 4:
  57. gpio_write_pin_high(E6);
  58. break;
  59. case 5:
  60. gpio_write_pin_high(B4);
  61. break;
  62. case 6:
  63. gpio_write_pin_high(D6);
  64. break;
  65. }
  66. } else {
  67. switch(ledId) {
  68. case 1:
  69. gpio_write_pin_low(D7);
  70. break;
  71. case 2:
  72. if(gpio_read_pin(B7)) {
  73. gpio_write_pin_low(C6);
  74. } else {
  75. gpio_write_pin_low(C7);
  76. }
  77. break;
  78. case 3:
  79. gpio_write_pin_low(D4);
  80. break;
  81. case 4:
  82. gpio_write_pin_low(E6);
  83. break;
  84. case 5:
  85. gpio_write_pin_low(B4);
  86. break;
  87. case 6:
  88. gpio_write_pin_low(D6);
  89. break;
  90. }
  91. }
  92. }
  93. void set_layer_led(int layerId) {
  94. gpio_write_pin_high(D5);
  95. gpio_write_pin_low(B6);
  96. gpio_write_pin_high(B0);
  97. switch(layerId) {
  98. case 0:
  99. gpio_write_pin_low(D5);
  100. break;
  101. case 1:
  102. gpio_write_pin_high(B6);
  103. break;
  104. case 2:
  105. gpio_write_pin_low(B0);
  106. break;
  107. }
  108. }
  109. void led_init_ports_user(void) {
  110. // led voor switch #1
  111. gpio_set_pin_output(D7);
  112. gpio_write_pin_low(D7);
  113. // led voor switch #2
  114. gpio_set_pin_output(C6);
  115. gpio_set_pin_output(C7);
  116. gpio_write_pin_low(C6);
  117. gpio_write_pin_low(C7);
  118. // led voor switch #3
  119. gpio_set_pin_output(D4);
  120. gpio_write_pin_low(D4);
  121. // led voor switch #4
  122. gpio_set_pin_output(E6);
  123. gpio_write_pin_low(E6);
  124. // led voor switch #5
  125. gpio_set_pin_output(B4);
  126. gpio_write_pin_low(B4);
  127. // led voor switch #6
  128. gpio_set_pin_output(D6);
  129. gpio_write_pin_low(D6);
  130. /*
  131. gpio_set_pin_output(D7);
  132. gpio_write_pin_high(D7);
  133. gpio_set_pin_output(C6);
  134. gpio_write_pin_high(C6);
  135. gpio_set_pin_output(D4);
  136. gpio_write_pin_high(D4);
  137. gpio_set_pin_output(E6);
  138. gpio_write_pin_high(E6);
  139. gpio_set_pin_output(B4);
  140. gpio_write_pin_high(B4);
  141. gpio_set_pin_output(D6);
  142. gpio_write_pin_high(D6);
  143. // */
  144. gpio_set_pin_output(D5);
  145. gpio_set_pin_output(B6);
  146. gpio_set_pin_output(B0);
  147. //led_set_layer(0);
  148. }
  149. void matrix_init_user(void) {
  150. led_init_ports_user();
  151. gpio_write_pin_high(B7);
  152. gpio_set_pin_input(B7);
  153. gpio_write_pin_high(D7);
  154. gpio_write_pin_high(C6);
  155. gpio_write_pin_high(C7);
  156. gpio_write_pin_high(D4);
  157. gpio_write_pin_high(E6);
  158. gpio_write_pin_high(B4);
  159. gpio_write_pin_high(D6);
  160. set_layer_led(0);
  161. }
  162. /*
  163. * NOTE:
  164. *
  165. * In case you don't understand this coding stuff, please
  166. * feel free to mail me or post something
  167. * at the /r/knops subreddit and I will configure the code as
  168. * you wish for your needs to make the LEDs do what you want :-).
  169. *
  170. * Contact me at: support@knops.io
  171. *
  172. *
  173. * Knops Mini LED Numbers:
  174. * _____ _____ _____
  175. * | | | | | |
  176. * | 1 | | 2 | | 3 | <---
  177. * |_____| |_____| |_____| | These LEDs are called 'Switch LEDs'
  178. * _____ _____ _____ |----- To turn on/off these leds, use:
  179. * | | | | | | | set_switch_led( [1-6], [true/false]);
  180. * | 4 | | 5 | | 6 | <---
  181. * |_____| |_____| |_____|
  182. *
  183. * < 0 > < 1 > < 2 > <--- These front-LEDs are called 'Layer LEDs'
  184. * To turn one of them on, use:
  185. * set_layer_led( [0-2] );
  186. *
  187. */
  188. /*
  189. * This function led_set_layer gets called when you switch between layers.
  190. * It allows you to turn on and off leds for each different layer and do
  191. * other cool stuff. Currently the GUI does not have LED support. I am working
  192. * on that, but takes time.
  193. */
  194. void led_set_layer(int layer) {
  195. switch(layer) {
  196. /**
  197. * Here is an example to turn LEDs on and of. By default:
  198. * - the LEDs are turned on in layer 0
  199. * - the LEDs are turned off in layer 1
  200. * - the LEDs don't change from state for layer 2
  201. */
  202. case 0:
  203. set_layer_led(0); // Turn on only the first/left layer indicator
  204. set_switch_led(1, true);
  205. set_switch_led(2, true);
  206. set_switch_led(3, true);
  207. set_switch_led(4, true);
  208. set_switch_led(5, true);
  209. set_switch_led(6, true);
  210. break;
  211. case 1:
  212. set_layer_led(1); // Turn on only the second/middle layer indicator
  213. set_switch_led(1, false);
  214. set_switch_led(2, false);
  215. set_switch_led(3, false);
  216. set_switch_led(4, false);
  217. set_switch_led(5, false);
  218. set_switch_led(6, false);
  219. break;
  220. case 2:
  221. set_layer_led(2); // Turn on only the third/right layer indicator
  222. // Keep leds for layer two in their current state, since we don't use set_switch_led(SWITCH_ID, TRUE_OR_FALSE)
  223. break;
  224. }
  225. }
  226. bool process_record_user (uint16_t keycode, keyrecord_t *record) {
  227. switch(keycode) {
  228. case TO(0):
  229. if (record->event.pressed) {
  230. led_set_layer(0);
  231. }
  232. break;
  233. case TO(1):
  234. if (record->event.pressed) {
  235. led_set_layer(1);
  236. }
  237. break;
  238. case TO(2):
  239. if (record->event.pressed) {
  240. led_set_layer(2);
  241. }
  242. break;
  243. case M_TGLHF:
  244. if (record->event.pressed) {
  245. SEND_STRING("tglhf");
  246. tap_code(KC_ENT);
  247. }
  248. return false;
  249. case M_TGG:
  250. if (record->event.pressed) {
  251. SEND_STRING("tgg");
  252. tap_code(KC_ENT);
  253. }
  254. return false;
  255. }
  256. return true;
  257. }