logo

qmk_firmware

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

satisfaction_core.h (2461B)


  1. // Copyright 2023 Andrew Kannan
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <stdint.h>
  5. #include <stdbool.h>
  6. #include <hal.h>
  7. #include "via.h" // only for EEPROM address
  8. #include "satisfaction_keycodes.h"
  9. #define EEPROM_ENABLED_ENCODER_MODES_OFFSET 0
  10. #define EEPROM_DEFAULT_OLED_OFFSET 1
  11. #define EEPROM_CUSTOM_ENCODER_OFFSET 2
  12. enum s75_keyboard_value_id {
  13. id_encoder_modes = 1,
  14. id_oled_default_mode,
  15. id_encoder_custom,
  16. id_oled_mode
  17. };
  18. enum encoder_modes {
  19. ENC_MODE_VOLUME,
  20. ENC_MODE_MEDIA,
  21. ENC_MODE_SCROLL,
  22. ENC_MODE_BRIGHTNESS,
  23. ENC_MODE_BACKLIGHT,
  24. ENC_MODE_CUSTOM0,
  25. ENC_MODE_CUSTOM1,
  26. ENC_MODE_CUSTOM2,
  27. _NUM_ENCODER_MODES,
  28. ENC_MODE_CLOCK_SET // This shouldn't be included in the default modes, so we put it after NUM_ENCODER_MODES
  29. };
  30. enum custom_encoder_behavior {
  31. ENC_CUSTOM_CW,
  32. ENC_CUSTOM_CCW,
  33. ENC_CUSTOM_PRESS
  34. };
  35. enum oled_modes {
  36. OLED_DEFAULT,
  37. OLED_TIME,
  38. OLED_OFF,
  39. _NUM_OLED_MODES
  40. };
  41. // Keyboard Information
  42. extern volatile uint8_t led_numlock;
  43. extern volatile uint8_t led_capslock;
  44. extern volatile uint8_t led_scrolllock;
  45. extern uint8_t layer;
  46. // OLED Behavior
  47. extern uint8_t oled_mode;
  48. extern bool oled_repaint_requested;
  49. extern bool oled_wakeup_requested;
  50. extern uint32_t oled_sleep_timer;
  51. // Encoder Behavior
  52. extern uint8_t encoder_value;
  53. extern uint8_t encoder_mode;
  54. extern uint8_t enabled_encoder_modes;
  55. // RTC
  56. extern RTCDateTime last_timespec;
  57. extern uint16_t last_minute;
  58. // RTC Configuration
  59. extern bool clock_set_mode;
  60. extern uint8_t time_config_idx;
  61. extern int8_t hour_config;
  62. extern int16_t minute_config;
  63. extern int8_t year_config;
  64. extern int8_t month_config;
  65. extern int8_t day_config;
  66. extern uint8_t previous_encoder_mode;
  67. void pre_encoder_mode_change(void);
  68. void post_encoder_mode_change(void);
  69. void change_encoder_mode(bool negative);
  70. uint16_t handle_encoder_clockwise(void);
  71. uint16_t handle_encoder_ccw(void);
  72. uint16_t handle_encoder_press(void);
  73. uint16_t retrieve_custom_encoder_config(uint8_t encoder_idx, uint8_t behavior);
  74. void set_custom_encoder_config(uint8_t encoder_idx, uint8_t behavior, uint16_t new_code);
  75. void update_time_config(int8_t increment);
  76. void oled_request_wakeup(void);
  77. void oled_request_repaint(void);
  78. bool oled_task_needs_to_repaint(void);
  79. void custom_config_load(void);
  80. uint32_t read_custom_config(void *data, uint32_t offset, uint32_t length);
  81. uint32_t write_custom_config(const void *data, uint32_t offset, uint32_t length);