logo

qmk_firmware

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

keymap.c (2335B)


  1. // Copyright 2022 Sergey Vlasov (@sigprof)
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include QMK_KEYBOARD_H
  4. // Defines names for use in layer keycodes and the keymap
  5. enum layer_names {
  6. _BASE,
  7. _RGB,
  8. };
  9. // Shorter defines for some QMK keycodes (to keep the keymap aligned)
  10. #define U_LTESC LT(_RGB, KC_ESC)
  11. // clang-format off
  12. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  13. /* Base */
  14. [_BASE] = LAYOUT_left(
  15. KC_MPLY, U_LTESC, KC_BSPC, KC_PENT,
  16. KC_P7, KC_P8, KC_P9,
  17. KC_MUTE, KC_P4, KC_P5, KC_P6,
  18. KC_P1, KC_P2, KC_P3,
  19. KC_HOME, KC_P0, KC_P0, KC_PDOT
  20. ),
  21. /* RGB configuration */
  22. [_RGB] = LAYOUT_left(
  23. RGB_M_R, KC_TRNS, RM_SPDD, RM_SPDU,
  24. RM_TOGG, RM_HUED, RM_HUEU,
  25. RGB_M_B, RGB_M_P, RM_SATD, RM_SATU,
  26. KC_NO, RM_VALD, RM_VALU,
  27. RGB_M_P, KC_NUM, RM_PREV, RM_NEXT
  28. ),
  29. };
  30. // clang-format on
  31. bool encoder_update_user(uint8_t index, bool clockwise) {
  32. uint8_t layer = get_highest_layer(layer_state | default_layer_state);
  33. switch (index) {
  34. case 0:
  35. // Bottom encoder (left in the default orientation)
  36. if (layer == _RGB) {
  37. if (clockwise) {
  38. rgblight_increase_val();
  39. } else {
  40. rgblight_decrease_val();
  41. }
  42. } else {
  43. tap_code(clockwise ? KC_PGDN : KC_PGUP);
  44. }
  45. break;
  46. case 1:
  47. // Center encoder
  48. if (layer == _RGB) {
  49. if (clockwise) {
  50. rgblight_increase_sat();
  51. } else {
  52. rgblight_decrease_sat();
  53. }
  54. } else {
  55. tap_code_delay(clockwise ? KC_VOLU : KC_VOLD, 10);
  56. }
  57. break;
  58. case 2:
  59. // Top encoder (right in the default orientation)
  60. if (layer == _RGB) {
  61. if (clockwise) {
  62. rgblight_increase_hue();
  63. } else {
  64. rgblight_decrease_hue();
  65. }
  66. } else {
  67. tap_code_delay(clockwise ? KC_MNXT : KC_MPRV, 10);
  68. }
  69. break;
  70. }
  71. return false;
  72. }