logo

qmk_firmware

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

keymap.c (2916B)


  1. // Copyright 2022 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include QMK_KEYBOARD_H
  4. enum custom_keycodes {
  5. LED_LEVEL = SAFE_RANGE,
  6. };
  7. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  8. LAYOUT(
  9. KC_MPLY, KC_9, KC_0, KC_NO,
  10. KC_5, KC_6, KC_7, KC_8,
  11. KC_1, KC_2, KC_3, KC_4,
  12. TO(1), KC_DOT, KC_COMM, LED_LEVEL
  13. ),
  14. LAYOUT(
  15. KC_1, KC_2, KC_3, KC_4,
  16. KC_5, KC_6, KC_7, KC_8,
  17. KC_9, KC_0, KC_A, KC_B,
  18. TO(2), KC_C, KC_D, KC_E
  19. ),
  20. LAYOUT(
  21. KC_1, KC_2, KC_3, KC_4,
  22. KC_5, KC_6, KC_7, KC_8,
  23. KC_9, KC_0, KC_A, KC_B,
  24. TO(3), KC_C, KC_D, KC_E
  25. ),
  26. LAYOUT(
  27. KC_1, KC_2, KC_3, KC_4,
  28. KC_5, KC_6, KC_7, KC_8,
  29. KC_9, KC_0, KC_A, KC_B,
  30. TO(0), KC_C, LED_LEVEL,KC_E
  31. ),
  32. };
  33. typedef union {
  34. uint32_t raw;
  35. struct {
  36. uint8_t led_level : 3;
  37. };
  38. } work_louder_config_t;
  39. work_louder_config_t work_louder_config;
  40. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  41. switch (keycode) {
  42. case LED_LEVEL:
  43. if (record->event.pressed) {
  44. work_louder_config.led_level++;
  45. if (work_louder_config.led_level > 4) {
  46. work_louder_config.led_level = 0;
  47. }
  48. work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * 255 / 4));
  49. eeconfig_update_user(work_louder_config.raw);
  50. layer_state_set_kb(layer_state);
  51. }
  52. break;
  53. }
  54. return true;
  55. }
  56. #if defined(ENCODER_MAP_ENABLE)
  57. const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
  58. { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(C(KC_Z), C(KC_Y)) },
  59. { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
  60. { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
  61. { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
  62. };
  63. #endif
  64. layer_state_t layer_state_set_user(layer_state_t state) {
  65. layer_state_cmp(state, 1) ? work_louder_micro_led_1_on(): work_louder_micro_led_1_off();
  66. layer_state_cmp(state, 2) ? work_louder_micro_led_2_on(): work_louder_micro_led_2_off();
  67. layer_state_cmp(state, 3) ? work_louder_micro_led_3_on(): work_louder_micro_led_3_off();
  68. return state;
  69. }
  70. void eeconfig_init_user(void) {
  71. work_louder_config.raw = 0;
  72. work_louder_config.led_level = 1;
  73. eeconfig_update_user(work_louder_config.raw);
  74. }
  75. void matrix_init_user(void) {
  76. work_louder_config.raw = eeconfig_read_user();
  77. work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * 255 / 4));
  78. }