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