keymap.c 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. #include "m10a.h"
  2. #include "action_layer.h"
  3. #include "eeconfig.h"
  4. #include "version.h"
  5. extern keymap_config_t keymap_config;
  6. enum layers {
  7. _L0 = 0,
  8. _L1,
  9. _L2,
  10. _L3,
  11. _L4,
  12. _L5,
  13. _L6,
  14. _L7,
  15. _L8,
  16. _L9
  17. };
  18. enum m10a_keycodes {
  19. DYNAMIC_MACRO_RANGE = SAFE_RANGE,
  20. };
  21. #include "dynamic_macro.h"
  22. #define _______ KC_TRNS
  23. #define XXXXXXX KC_NO
  24. #define FN_ZERO LT(_L9, KC_0)
  25. #define KC_DMR1 DYN_REC_START1
  26. #define KC_DMR2 DYN_REC_START2
  27. #define KC_DMP1 DYN_MACRO_PLAY1
  28. #define KC_DMP2 DYN_MACRO_PLAY2
  29. #define KC_DMRS DYN_REC_STOP
  30. static uint8_t current_layer;
  31. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  32. /* .-----------. .-----------. .-----------. .-----------. .-----------.
  33. * | 7| 8| 9| | +| -| *| | ^| &| !| |VLU|Ver|WFD| |VLU|NXT|FFD|
  34. * |-----------| |-----------| |-----------| |-----------| |-----------|
  35. * | 4| 5| 6| | /| %| ,| | D| E| F| |MUT|C-W|CHR| |MUT|STP|PLY|
  36. * |-----------| |-----------| |-----------| |-----------| |-----------|
  37. * | 1| 2| 3| | .| =|Ent| | A| B| C| |VLD|CMP|WBK| |VLD|PRV|RWD|
  38. * |-----------| |-----------| |-----------| |-----------| |-----------|
  39. * |L0 | _L9/0| |L1 | _L9 | |L2 | _L9 | |L3 | _L9 | |L4 | _L9 |
  40. * *-----------* *-----------* *-----------* *-----------* *-----------*
  41. * .-----------. .-----------. .-----------. .-----------. .-----------.
  42. * | | | | | | | | |MP1| |MP2| | | |RST| |_L6|_L7|_L8|
  43. * |-----------| |-----------| |-----------| |-----------| |-----------|
  44. * | | | | | | | | | |MRS| | | | | | |_L3|_L4|_L5|
  45. * |-----------| |-----------| |-----------| |-----------| |-----------|
  46. * | | | | | | | | |MR1| |MR2| | | | | |_L0|_L1|_L2|
  47. * |-----------| |-----------| |-----------| |-----------| |-----------|
  48. * |L5 | _L9 | |L6 | _L9 | |L7 | _L9 | |L8 | _L9 | |L9 | |
  49. * *-----------* *-----------* *-----------* *-----------* *-----------*
  50. */
  51. [_L0] = {{KC_7, KC_8, KC_9 }, {KC_4, KC_5, KC_6 }, {KC_1, KC_2, KC_3 }, {XXXXXXX, XXXXXXX, FN_ZERO}},
  52. [_L1] = {{KC_PPLS, KC_PMNS, KC_PAST}, {KC_PSLS, KC_PERC, KC_COMM}, {KC_PDOT, KC_EQL, KC_PENT}, {XXXXXXX, XXXXXXX, MO(_L9)}},
  53. [_L2] = {{KC_CIRC, KC_AMPR, KC_EXLM}, {S(KC_D), S(KC_E), S(KC_F)}, {S(KC_A), S(KC_B), S(KC_C)}, {XXXXXXX, XXXXXXX, MO(_L9)}},
  54. [_L3] = {{KC_VOLU, F(0), KC_WFWD}, {KC_MUTE, M(1), M(0) }, {KC_VOLD, KC_MYCM, KC_WBAK}, {XXXXXXX, XXXXXXX, MO(_L9)}},
  55. [_L4] = {{KC_VOLU, KC_MNXT, KC_MFFD}, {KC_MUTE, KC_MSTP, KC_MPLY}, {KC_VOLD, KC_MPRV, KC_MRWD}, {XXXXXXX, XXXXXXX, MO(_L9)}},
  56. [_L5] = {{_______, _______, _______}, {_______, _______, _______}, {_______, _______, _______}, {XXXXXXX, XXXXXXX, MO(_L9)}},
  57. [_L6] = {{_______, _______, _______}, {_______, _______, _______}, {_______, _______, _______}, {XXXXXXX, XXXXXXX, MO(_L9)}},
  58. [_L7] = {{KC_DMP1, _______, KC_DMP2}, {_______, KC_DMRS, _______}, {KC_DMR1, _______, KC_DMR2}, {XXXXXXX, XXXXXXX, MO(_L9)}},
  59. [_L8] = {{_______, _______, RESET }, {_______, _______, _______}, {_______, _______, _______}, {XXXXXXX, XXXXXXX, MO(_L9)}},
  60. [_L9] = {{DF(_L6), DF(_L7), DF(_L8)}, {DF(_L3), DF(_L4), DF(_L5)}, {DF(_L0), DF(_L1), DF(_L2)}, {XXXXXXX, XXXXXXX, _______}},
  61. };
  62. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
  63. switch(id) {
  64. case 0:
  65. if (record->event.pressed) {
  66. return MACRO(I(10), D(LGUI), T(R), U(LGUI), END);
  67. }
  68. else {
  69. SEND_STRING("chrome.exe\n");
  70. return false;
  71. }
  72. break;
  73. case 1:
  74. if (record->event.pressed) {
  75. return MACRO(I(10), D(LCTL), T(W), U(LCTL), END);
  76. }
  77. break;
  78. }
  79. return MACRO_NONE;
  80. };
  81. const uint16_t PROGMEM fn_actions[] = {
  82. [0] = ACTION_FUNCTION(0),
  83. };
  84. void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
  85. switch (id) {
  86. case 0:
  87. if (record->event.pressed) {
  88. SEND_STRING ("[Keyboard: " QMK_KEYBOARD "] -- [QMK Version: " QMK_VERSION "] -- [Keymap: " QMK_KEYMAP "]");
  89. }
  90. break;
  91. }
  92. }
  93. void matrix_init_user(void) {
  94. #ifdef BACKLIGHT_ENABLE
  95. backlight_level(0);
  96. #endif
  97. }
  98. // Runs constantly in the background, in a loop.
  99. void matrix_scan_user(void) {
  100. uint8_t layer = biton32(layer_state);
  101. if (current_layer == layer) {
  102. }
  103. else {
  104. current_layer = layer;
  105. switch (layer) {
  106. case 0:
  107. backlight_level(0);
  108. break;
  109. case 1:
  110. backlight_level(1);
  111. break;
  112. case 2:
  113. backlight_level(2);
  114. break;
  115. case 3:
  116. backlight_level(3);
  117. break;
  118. case 4:
  119. backlight_level(4);
  120. break;
  121. case 5:
  122. backlight_level(5);
  123. break;
  124. case 6:
  125. backlight_level(6);
  126. break;
  127. case 7:
  128. backlight_level(6);
  129. break;
  130. case 8:
  131. backlight_level(6);
  132. break;
  133. case 9:
  134. backlight_level(0);
  135. break;
  136. default:
  137. backlight_level(0);
  138. break;
  139. }
  140. }
  141. }
  142. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  143. // Enable Dynamic Macros.
  144. if (!process_record_dynamic_macro(keycode, record)) {
  145. return false;
  146. }
  147. return true;
  148. }