oled_stuff.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. /* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
  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. #pragma once
  17. #include "quantum.h"
  18. #include "oled_driver.h"
  19. #ifdef DEFFERED_EXEC_ENABLE
  20. extern deferred_token kittoken;
  21. #endif
  22. void oled_driver_render_logo(void);
  23. bool process_record_user_oled(uint16_t keycode, keyrecord_t *record);
  24. oled_rotation_t oled_init_keymap(oled_rotation_t rotation);
  25. void oled_timer_reset(void);
  26. void render_keylogger_status(uint8_t col, uint8_t line);
  27. void render_default_layer_state(uint8_t col, uint8_t line);
  28. void render_layer_state(uint8_t col, uint8_t line);
  29. void render_keylock_status(led_t led_usb_state, uint8_t col, uint8_t line);
  30. void render_matrix_scan_rate(uint8_t padding, uint8_t col, uint8_t line);
  31. void render_mod_status(uint8_t modifiers, uint8_t col, uint8_t line);
  32. void render_bootmagic_status(uint8_t col, uint8_t line);
  33. void render_user_status(uint8_t col, uint8_t line);
  34. void oled_driver_render_logo(void);
  35. void render_wpm(uint8_t padding, uint8_t col, uint8_t line);
  36. void render_pointing_dpi_status(uint16_t cpi, uint8_t padding, uint8_t col, uint8_t line);
  37. void oled_driver_render_logo_left(void);
  38. void oled_driver_render_logo_right(void);
  39. void oled_render_large_display(bool side);
  40. void render_wpm_graph(uint8_t max_lines_graph, uint8_t vertical_offset);
  41. void render_kitty(uint8_t col, uint8_t line);
  42. void render_unicode_mode(uint8_t col, uint8_t line);
  43. void render_rgb_hsv(uint8_t col, uint8_t line);
  44. void render_mouse_mode(uint8_t col, uint8_t line);
  45. void matrix_scan_oled(void);
  46. void oled_pan_section(bool left, uint16_t y_start, uint16_t y_end, uint16_t x_start, uint16_t x_end);
  47. #if defined(OLED_DISPLAY_128X128) || defined(OLED_DISPLAY_128X64)
  48. # define OLED_DISPLAY_VERBOSE
  49. # define OLED_RENDER_KEYLOGGER "Keylogger: "
  50. # ifndef OLED_KEYLOGGER_LENGTH
  51. # define OLED_KEYLOGGER_LENGTH 9
  52. # endif
  53. # define OLED_RENDER_LAYOUT_NAME "Layout: "
  54. # define OLED_RENDER_LAYOUT_QWERTY "Qwerty"
  55. # define OLED_RENDER_LAYOUT_COLEMAK_DH "Colemak DH"
  56. # define OLED_RENDER_LAYOUT_COLEMAK "Colemak"
  57. # define OLED_RENDER_LAYOUT_DVORAK "Dvorak"
  58. # define OLED_RENDER_LAYOUT_WORKMAN "Workman"
  59. # define OLED_RENDER_LAYOUT_NORMAN "Norman"
  60. # define OLED_RENDER_LAYOUT_MALTRON "Matron"
  61. # define OLED_RENDER_LAYOUT_EUCALYN "Eucalyn"
  62. # define OLED_RENDER_LAYOUT_CARPLAX "Carplax"
  63. # define OLED_RENDER_LAYER_NAME "Layer:"
  64. # define OLED_RENDER_LAYER_LOWER "Lower"
  65. # define OLED_RENDER_LAYER_RAISE "Raise"
  66. # define OLED_RENDER_LAYER_ADJUST "Adjust"
  67. # define OLED_RENDER_LAYER_MODS "Mods"
  68. # define OLED_RENDER_LOCK_NAME "Lock: "
  69. # define OLED_RENDER_LOCK_NUML "NUM"
  70. # define OLED_RENDER_LOCK_CAPS "CAPS"
  71. # define OLED_RENDER_LOCK_SCLK "SCLK"
  72. # define OLED_RENDER_MODS_NAME "Mods"
  73. # define OLED_RENDER_MODS_SFT "Sft"
  74. # define OLED_RENDER_MODS_CTL "Ctl"
  75. # define OLED_RENDER_MODS_ALT "Alt"
  76. # define OLED_RENDER_MODS_GUI "GUI"
  77. # define OLED_RENDER_BOOTMAGIC_NAME "Boot "
  78. # define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
  79. # define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI"
  80. # define OLED_RENDER_BOOTMAGIC_GRV "GRV"
  81. # define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT"
  82. # define OLED_RENDER_BOOTMAGIC_SWAP "SWAP"
  83. # define OLED_RENDER_BOOTMAGIC_CAPS "CAPS"
  84. # define OLED_RENDER_USER_NAME "USER:"
  85. # define OLED_RENDER_USER_ANIM "Anim"
  86. # define OLED_RENDER_USER_LAYR "Layr"
  87. # define OLED_RENDER_USER_NUKE "Nuke"
  88. # define OLED_RENDER_WPM_COUNTER "WPM: "
  89. #else
  90. # define OLED_RENDER_KEYLOGGER "KLogr"
  91. # ifndef OLED_KEYLOGGER_LENGTH
  92. # define OLED_KEYLOGGER_LENGTH 5
  93. # endif
  94. # define OLED_RENDER_LAYOUT_NAME "Lyout"
  95. # define OLED_RENDER_LAYOUT_QWERTY " QRTY"
  96. # define OLED_RENDER_LAYOUT_COLEMAK_DH " cmDH"
  97. # define OLED_RENDER_LAYOUT_COLEMAK " COLE"
  98. # define OLED_RENDER_LAYOUT_DVORAK " DVRK"
  99. # define OLED_RENDER_LAYOUT_WORKMAN " WKMN"
  100. # define OLED_RENDER_LAYOUT_NORMAN " NORM"
  101. # define OLED_RENDER_LAYOUT_MALTRON " MLTN"
  102. # define OLED_RENDER_LAYOUT_EUCALYN " ECLN"
  103. # define OLED_RENDER_LAYOUT_CARPLAX " CRPX"
  104. # define OLED_RENDER_LAYER_NAME "LAYER"
  105. # define OLED_RENDER_LAYER_LOWER "Lower"
  106. # define OLED_RENDER_LAYER_RAISE "Raise"
  107. # define OLED_RENDER_LAYER_ADJUST "Adjst"
  108. # define OLED_RENDER_LAYER_MODS " Mods"
  109. # define OLED_RENDER_LOCK_NAME "Lock:"
  110. # define OLED_RENDER_LOCK_NUML "NumL"
  111. # define OLED_RENDER_LOCK_CAPS "CapL"
  112. # define OLED_RENDER_LOCK_SCLK "ScrL"
  113. # define OLED_RENDER_MODS_NAME "Mods: "
  114. # define OLED_RENDER_MODS_SFT "Shft"
  115. # define OLED_RENDER_MODS_CTL "Ctrl"
  116. # define OLED_RENDER_MODS_ALT "Alt\n"
  117. # define OLED_RENDER_MODS_GUI "GUI\n"
  118. # define OLED_RENDER_BOOTMAGIC_NAME "BTMGK"
  119. # define OLED_RENDER_BOOTMAGIC_NKRO "NKRO"
  120. # define OLED_RENDER_BOOTMAGIC_NOGUI "nGUI"
  121. # define OLED_RENDER_BOOTMAGIC_GRV "GRV"
  122. # define OLED_RENDER_BOOTMAGIC_ONESHOT "1SHT"
  123. # define OLED_RENDER_BOOTMAGIC_SWAP "SWAP"
  124. # define OLED_RENDER_BOOTMAGIC_CAPS "CAPS"
  125. # define OLED_RENDER_USER_NAME "USER:"
  126. # define OLED_RENDER_USER_ANIM "Anim"
  127. # define OLED_RENDER_USER_LAYR "Layr"
  128. # define OLED_RENDER_USER_NUKE "Nuke"
  129. # define OLED_RENDER_WPM_COUNTER "WPM: "
  130. #endif
  131. extern char keylog_str[OLED_KEYLOGGER_LENGTH];
  132. #ifndef OLED_WPM_GRAPH_MAX_WPM
  133. # define OLED_WPM_GRAPH_MAX_WPM 120
  134. #endif
  135. #ifndef OLED_WPM_GRAPH_REFRESH_INTERVAL
  136. # define OLED_WPM_GRAPH_REFRESH_INTERVAL 300
  137. #endif
  138. #ifndef OLED_WPM_GRAPH_AREA_FILL_INTERVAL
  139. # define OLED_WPM_GRAPH_AREA_FILL_INTERVAL 3
  140. #endif
  141. #ifndef OLED_WPM_GRAPH_VERTCAL_LINE_INTERVAL
  142. # define OLED_WPM_GRAPH_VERTCAL_LINE_INTERVAL 3
  143. #endif
  144. #ifndef OLED_WPM_GRAPH_GRAPH_LINE_THICKNESS
  145. # define OLED_WPM_GRAPH_GRAPH_LINE_THICKNESS 2
  146. #endif