keymap.c 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #include QMK_KEYBOARD_H
  2. #include "version.h"
  3. extern keymap_config_t keymap_config;
  4. enum layers {
  5. _L0 = 0,
  6. _L1,
  7. _L2,
  8. _L3,
  9. _L4,
  10. _L5,
  11. _L6,
  12. _L7,
  13. _L8,
  14. _L9
  15. };
  16. enum custom_keycodes {
  17. QMK_REV = SAFE_RANGE,
  18. KC_WEB,
  19. KC_WCLS,
  20. DYNAMIC_MACRO_RANGE
  21. };
  22. extern backlight_config_t backlight_config;
  23. #include "dynamic_macro.h"
  24. #define FN_ZERO LT(_L9, KC_KP_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. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  31. /*## Layout Config:
  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_KP_7, KC_KP_8, KC_KP_9}, {KC_KP_4, KC_KP_5, KC_KP_6}, {KC_KP_1, KC_KP_2, KC_KP_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, QMK_REV, KC_WFWD}, {KC_MUTE, KC_WCLS, KC_WEB }, {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] = {{_______, _______, QK_BOOT }, {_______, _______, _______}, {_______, _______, _______}, {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. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  63. switch (keycode) {
  64. case QMK_REV:
  65. if (record->event.pressed) {
  66. SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP "@" QMK_VERSION ":" QMK_BUILDDATE);
  67. }
  68. return false;
  69. break;
  70. case KC_WEB:
  71. if (record->event.pressed) {
  72. SEND_STRING(SS_LGUI("r"));
  73. wait_ms(100);
  74. SEND_STRING("chrome.exe\n");
  75. }
  76. return false;
  77. break;
  78. case KC_WCLS:
  79. if (record->event.pressed) {
  80. SEND_STRING (SS_LCTL("w"));
  81. }
  82. return false;
  83. break;
  84. }
  85. // Dynamic Macros.
  86. if (!process_record_dynamic_macro(keycode, record)) {
  87. return false;
  88. }
  89. return true;
  90. }
  91. void custom_backlight_level(uint8_t level) {
  92. if (level > BACKLIGHT_LEVELS)
  93. level = BACKLIGHT_LEVELS;
  94. backlight_config.level = level;
  95. backlight_config.enable = !!backlight_config.level;
  96. backlight_set(backlight_config.level);
  97. }
  98. void matrix_init_user(void) {
  99. #ifdef BACKLIGHT_ENABLE
  100. custom_backlight_level(0);
  101. #endif
  102. }
  103. void matrix_scan_user(void) {
  104. }
  105. layer_state_t layer_state_set_user(layer_state_t state) {
  106. switch (get_highest_layer(state)) {
  107. case _L0:
  108. custom_backlight_level(0);
  109. break;
  110. case _L1:
  111. custom_backlight_level(1);
  112. break;
  113. case _L2:
  114. custom_backlight_level(2);
  115. break;
  116. case _L3:
  117. custom_backlight_level(3);
  118. break;
  119. case _L4:
  120. custom_backlight_level(4);
  121. break;
  122. case _L5:
  123. custom_backlight_level(5);
  124. break;
  125. case _L6:
  126. custom_backlight_level(6);
  127. break;
  128. case _L7:
  129. custom_backlight_level(6);
  130. break;
  131. case _L8:
  132. custom_backlight_level(6);
  133. break;
  134. case _L9:
  135. custom_backlight_level(0);
  136. break;
  137. default:
  138. custom_backlight_level(0);
  139. break;
  140. }
  141. return state;
  142. }
  143. void led_set_user(uint8_t usb_led) {
  144. }