keymap.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /* Copyright 2019 Danny Nguyen <danny@keeb.io>
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #include QMK_KEYBOARD_H
  17. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  18. /*
  19. | Knob 1: Vol Dn/Up | | Knob 2: Page Dn/Up |
  20. | Press: Mute | Home | Press: Play/Pause |
  21. | Hold: Layer 2 | Up | RGB Mode |
  22. | Left | Down | Right |
  23. */
  24. [0] = LAYOUT(
  25. KC_MUTE, KC_UP, TO(0),
  26. KC_F12 , _______ , KC_F1,
  27. KC_LEFT, KC_DOWN, KC_RGHT
  28. ),
  29. /*
  30. | RESET | N/A | Media Stop |
  31. | Held: Layer 2 | Home | RGB Mode |
  32. | Media Previous | End | Media Next |
  33. */
  34. [1] = LAYOUT(
  35. RESET , KC_HOME, _______,
  36. _______, _______, _______,
  37. KC_MPRV, KC_END , KC_MNXT
  38. ),
  39. };
  40. void encoder_update_user(uint8_t index, bool clockwise) {
  41. if (index == 0) {
  42. if (clockwise) {
  43. tap_code(KC_VOLD);
  44. } else {
  45. tap_code(KC_VOLU);
  46. }
  47. }
  48. else if (index == 1) {
  49. int mod = 0;
  50. if (clockwise) {
  51. mod = 1;
  52. } else {
  53. mod = -1;
  54. }
  55. int n = 2; //sizeof(PROGMEM);
  56. int new_layer = ((layer_state + mod) % n + n) % n;
  57. uprintf("new: %d\n", new_layer);
  58. layer_on(new_layer);
  59. for(int i=0; i < n; i++) {
  60. if (new_layer != i) {
  61. layer_off(i);
  62. }
  63. }
  64. }
  65. }