Refactor satt/comet46 to use core OLED driver (#17856)
This commit is contained in:
parent
baf34989f1
commit
409790457c
12 changed files with 55 additions and 947 deletions
|
@ -2,9 +2,6 @@
|
|||
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#ifdef SSD1306OLED
|
||||
#include "ssd1306.h"
|
||||
#endif
|
||||
|
||||
|
||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
||||
|
@ -148,8 +145,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
|
|||
return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
|
||||
}
|
||||
|
||||
//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
|
||||
#ifdef SSD1306OLED
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
// You need to add source files to SRC in rules.mk when using OLED display functions
|
||||
void set_keylog(uint16_t keycode);
|
||||
|
@ -157,25 +153,10 @@ const char *read_keylog(void);
|
|||
const char *read_modifier_state(void);
|
||||
const char *read_host_led_state(void);
|
||||
|
||||
void matrix_init_user(void) {
|
||||
iota_gfx_init(false); // turns on the display
|
||||
}
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
iota_gfx_task(); // this is what updates the display continuously
|
||||
}
|
||||
|
||||
void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
|
||||
if (memcmp(dest->display, source->display, sizeof(dest->display))) {
|
||||
memcpy(dest->display, source->display, sizeof(dest->display));
|
||||
dest->dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
void render_status(struct CharacterMatrix *matrix) {
|
||||
bool oled_task_user(void) {
|
||||
// Layer state
|
||||
char layer_str[22];
|
||||
matrix_write(matrix, "Layer: ");
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
uint8_t layer = get_highest_layer(layer_state);
|
||||
uint8_t default_layer = get_highest_layer(eeconfig_read_default_layer());
|
||||
switch (layer) {
|
||||
|
@ -207,27 +188,21 @@ void render_status(struct CharacterMatrix *matrix) {
|
|||
default:
|
||||
snprintf(layer_str, sizeof(layer_str), "Undef-%d", layer);
|
||||
}
|
||||
matrix_write_ln(matrix, layer_str);
|
||||
oled_write_ln(layer_str, false);
|
||||
// Last entered keycode
|
||||
matrix_write_ln(matrix, read_keylog());
|
||||
oled_write_ln(read_keylog(), false);
|
||||
// Modifier state
|
||||
matrix_write_ln(matrix, read_modifier_state());
|
||||
oled_write_ln(read_modifier_state(), false);
|
||||
// Host Keyboard LED Status
|
||||
matrix_write(matrix, read_host_led_state());
|
||||
oled_write(read_host_led_state(), false);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void iota_gfx_task_user(void) {
|
||||
struct CharacterMatrix matrix;
|
||||
matrix_clear(&matrix);
|
||||
render_status(&matrix);
|
||||
matrix_update(&display, &matrix);
|
||||
}
|
||||
|
||||
#endif//SSD1306OLED
|
||||
#endif
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
#ifdef SSD1306OLED
|
||||
#ifdef OLED_ENABLE
|
||||
if (record->event.pressed) {
|
||||
set_keylog(keycode);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue