Advertisement
Guest User

qmk

a guest
Aug 13th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. #include QMK_KEYBOARD_H
  2. #define _a 0
  3. #define _ENCODERS 1
  4. #define _c 2
  5. #define _PHOTOSHOP 3
  6. #define _ILLUSTRATOR 4
  7.  
  8. #define TAP_CODE_DELAY 0
  9.  
  10. enum my_keycodes {
  11. ENABLE_SELECTOR = SAFE_RANGE
  12. };
  13.  
  14. void matrix_init_user(void) {
  15.  
  16. // Set default layer, if enabled
  17. rgblight_enable();
  18. rgblight_sethsv(190, 170, 255);
  19. rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
  20. }
  21.  
  22. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  23.  
  24. /* Macropad
  25. * ,--------------------.
  26. * | Rot1 | Rot2 | Rot3 |
  27. * |------+------+------|
  28. * | 1 | 2 | 3 |
  29. * |------+------+------|
  30. * | 4 | 5 | 6 |
  31. * `--------------------'
  32. */
  33. /* make abstract/ellipse/rev1:macropad:dfu */
  34.  
  35. [_a] = LAYOUT(
  36. ENABLE_SELECTOR, LT(1,KC_MUTE), LT(1,KC_NO),
  37. KC_MYCM, KC_ENT, KC_ESC
  38. ),
  39. [_ENCODERS] = LAYOUT(
  40. _______, _______, _______,
  41. _______, _______, _______
  42. ),
  43. [_c] = LAYOUT(
  44. KC_MUTE, _______, LSFT(KC_J),
  45. KC_C, KC_M, KC_U
  46. ),
  47. [_PHOTOSHOP] = LAYOUT(
  48. KC_B, _______, KC_E,
  49. KC_V, KC_P, KC_U
  50. ),
  51. [_ILLUSTRATOR] = LAYOUT(
  52. KC_B, _______, KC_E,
  53. KC_V, KC_P, KC_U
  54. ),
  55. };
  56.  
  57.  
  58. bool selector_enabled = false;
  59. uint8_t selected_item = 0;
  60. uint8_t sent_buffer = 0;
  61.  
  62. void send_selected_item (void) {
  63. switch (selected_item) {
  64. case 1:
  65. tap_code(KC_TAB);
  66. break;
  67. }
  68. }
  69.  
  70. void clear_sent_buffer (void) {
  71. while (sent_buffer > 0) {
  72. sent_buffer--;
  73. }
  74. }
  75.  
  76.  
  77. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  78. switch (keycode) {
  79. case ENABLE_SELECTOR:
  80. if (record->event.pressed) {
  81. selected_item = 0;
  82. selector_enabled = true;
  83. tap_code(KC_LALT);
  84. sent_buffer = 1;
  85. } else {
  86. selector_enabled = false;
  87.  
  88. clear_sent_buffer();
  89. tap_code(KC_LALT);
  90. send_selected_item();
  91. }
  92. return false;
  93. default:
  94. return true; // Process all other keycodes normally
  95. }
  96. }
  97.  
  98.  
  99. void encoder_update_user(uint8_t index, bool clockwise) {
  100. // left encoder
  101. if (index == 0) {
  102. switch(biton32(layer_state)){
  103. default:
  104. if (selector_enabled) {
  105. if (!clockwise && selected_item < 10) {
  106. selected_item++;
  107. } else if (clockwise && selected_item > 0){
  108. selected_item--;
  109. }
  110.  
  111. clear_sent_buffer();
  112.  
  113. send_selected_item();
  114. sent_buffer += 1;
  115. }
  116. break;
  117. case 1:
  118. if (clockwise){
  119. tap_code(KC_AUDIO_VOL_DOWN);
  120. } else{
  121. tap_code(KC_AUDIO_VOL_UP);
  122. }
  123. break;
  124. }
  125. }
  126. // middle encoder
  127. if (index == 1) {
  128. switch(biton32(layer_state)){
  129. case 1:
  130. if (clockwise){
  131. rgblight_sethsv(190, 170, 255);
  132. } else{
  133. rgblight_sethsv(160, 100, 255);
  134. }
  135. break;
  136. default:
  137. if (clockwise){
  138. tap_code(KC_AUDIO_VOL_DOWN);
  139. } else{
  140. tap_code(KC_AUDIO_VOL_UP);
  141. }
  142. break;
  143. }
  144. }
  145. // right encoder
  146. else if (index == 2) {
  147. switch(biton32(layer_state)){
  148. case 1:
  149. if (clockwise){
  150. tap_code(KC_WWW_BACK);
  151. } else{
  152. tap_code(KC_WWW_FORWARD);
  153. }
  154. break;
  155. default:
  156. if (clockwise) {
  157. tap_code(KC_MS_WH_DOWN);
  158. } else {
  159. tap_code(KC_MS_WH_UP);
  160. }
  161. break;
  162. }
  163. }
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement