1
0
Fork 0

Refactor satt/comet46 to use core OLED driver (#17856)

This commit is contained in:
Joel Challis 2022-07-31 15:35:42 +01:00 committed by GitHub
parent baf34989f1
commit 409790457c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 55 additions and 947 deletions

View file

@ -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);
}