keymap.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. #include "ergodox.h"
  2. #include "debug.h"
  3. #include "action_layer.h"
  4. #include "version.h"
  5. enum custom_keycodes {
  6. PLACEHOLDER = SAFE_RANGE, // can always be here
  7. RGB_FF0000,
  8. RGB_00FF00,
  9. RGB_0000FF,
  10. RGB_FFFFFF,
  11. RGB_TOGGLE,
  12. LED1,
  13. LED2,
  14. LED3
  15. };
  16. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  17. [0] = KEYMAP(
  18. RGB_TOGGLE, RGB_FF0000, RGB_00FF00, RGB_0000FF, RGB_FFFFFF, KC_5, KC_LPRN,
  19. KC_GRAVE, KC_A, KC_B, KC_C, KC_D, KC_E, KC_EXLM,
  20. KC_HASH, KC_J, KC_K, KC_L, KC_M, KC_N,
  21. KC_AMPR, KC_T, KC_U, KC_V, KC_W, KC_X, KC_DLR,
  22. KC_PIPE, KC_R, KC_PLUS, KC_LCBR, KC_RCBR,
  23. KC_F, KC_G,
  24. KC_H,
  25. KC_P, KC_O, KC_I,
  26. // RIGHT HAND
  27. KC_RPRN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
  28. KC_AT, KC_F, KC_G, KC_H, KC_I, KC_COLN, KC_BSLS,
  29. KC_O, KC_P, KC_Q, KC_R, KC_S, KC_QUOT,
  30. LSFT(KC_COMM), KC_Y, KC_Z, KC_COMM, KC_DOT, KC_SLSH, KC_ASTR,
  31. KC_A, KC_B, KC_C, KC_D, KC_PIPE,
  32. LED1, KC_E,
  33. LED2,
  34. LED3, KC_J, KC_K
  35. )
  36. };
  37. const uint16_t PROGMEM fn_actions[] = {
  38. [1] = ACTION_LAYER_TAP_TOGGLE(1)
  39. };
  40. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
  41. {
  42. switch(id) {
  43. case 0:
  44. if (record->event.pressed) {
  45. SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
  46. }
  47. break;
  48. }
  49. return MACRO_NONE;
  50. };
  51. bool status_led1_on = false, status_led2_on = false, status_led3_on = false;
  52. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  53. switch (keycode) {
  54. // dynamically generate these.
  55. case RGB_FF0000:
  56. if (record->event.pressed) {
  57. #ifdef RGBLIGHT_ENABLE
  58. EZ_RGB(0xff0000UL);
  59. register_code(KC_1); unregister_code(KC_1);
  60. #endif
  61. }
  62. return false;
  63. break;
  64. case RGB_00FF00:
  65. if (record->event.pressed) {
  66. #ifdef RGBLIGHT_ENABLE
  67. EZ_RGB(0x00ff00UL);
  68. register_code(KC_2); unregister_code(KC_2);
  69. #endif
  70. }
  71. return false;
  72. break;
  73. case RGB_0000FF:
  74. if (record->event.pressed) {
  75. #ifdef RGBLIGHT_ENABLE
  76. EZ_RGB(0x0000ffUL);
  77. register_code(KC_3); unregister_code(KC_3);
  78. #endif
  79. }
  80. return false;
  81. break;
  82. case RGB_FFFFFF:
  83. if (record->event.pressed) {
  84. #ifdef RGBLIGHT_ENABLE
  85. EZ_RGB(0xffffffUL);
  86. register_code(KC_4); unregister_code(KC_4);
  87. #endif
  88. }
  89. return false;
  90. break;
  91. case RGB_TOGGLE:
  92. if (record->event.pressed) {
  93. #ifdef RGBLIGHT_ENABLE
  94. rgblight_toggle();
  95. register_code(KC_EQL); unregister_code(KC_EQL);
  96. #endif
  97. }
  98. return false;
  99. break;
  100. case LED1:
  101. if (record->event.pressed) {
  102. if(status_led1_on) {
  103. ergodox_right_led_1_off();
  104. status_led1_on = false;
  105. } else {
  106. ergodox_right_led_1_on();
  107. status_led1_on = true;
  108. }
  109. }
  110. return false;
  111. break;
  112. case LED2:
  113. if (record->event.pressed) {
  114. if(status_led2_on) {
  115. ergodox_right_led_2_off();
  116. status_led2_on = false;
  117. } else {
  118. ergodox_right_led_2_on();
  119. status_led2_on = true;
  120. }
  121. }
  122. return false;
  123. break;
  124. case LED3:
  125. if (record->event.pressed) {
  126. if(status_led3_on) {
  127. ergodox_right_led_3_off();
  128. status_led3_on = false;
  129. } else {
  130. ergodox_right_led_3_on();
  131. status_led3_on = true;
  132. }
  133. }
  134. return false;
  135. break;
  136. }
  137. return true;
  138. }