From 3d78e6078e402bf0fe476adeed8ac16033f916c0 Mon Sep 17 00:00:00 2001 From: Manna Harbour <51143715+manna-harbour@users.noreply.github.com> Date: Sun, 8 Dec 2019 18:08:12 +1100 Subject: [PATCH] [Keymap] Display logo for caps lock indication on crkbd using old OLED driver (#7535) * Display logo for caps lock indication on crkbd using old OLED driver * Add emacs read-only mode file variable to generated files * use LTO_ENABLE instead of EXTRAFLAGS This enables the same option, and disables action_macros, and action_functions, both of which seem to break when LTO is enabled. And this is a lot simpler to use. Co-Authored-By: Drashna Jaelre --- .../keymaps/manna-harbour_miryoku/config.h | 5 +- .../keymaps/manna-harbour_miryoku/keymap.c | 41 ++++++++++- .../keymaps/manna-harbour_miryoku/rules.mk | 7 +- .../ergodox/manna-harbour_miryoku/keymap.c | 3 +- .../ortho_4x12/manna-harbour_miryoku/keymap.c | 3 +- users/manna-harbour_miryoku/config.h | 3 +- .../manna-harbour_miryoku.c | 3 +- users/manna-harbour_miryoku/miryoku.org | 72 ++++++++++++++----- users/manna-harbour_miryoku/rules.mk | 4 +- 9 files changed, 107 insertions(+), 34 deletions(-) diff --git a/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h b/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h index 4b8f78a65..e2fe1824d 100644 --- a/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h +++ b/keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h @@ -1,5 +1,4 @@ - -// generated from users/manna-harbour_miryoku/miryoku.org +// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- #pragma once @@ -15,3 +14,5 @@ #define RGB_MATRIX_VAL_STEP 8 #define RGB_MATRIX_SPD_STEP 10 #endif + +#define SSD1306OLED // old oled driver diff --git a/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c index 56d4de25a..f5be6844f 100644 --- a/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c +++ b/keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c @@ -1,5 +1,4 @@ - -// generated from users/manna-harbour_miryoku/miryoku.org +// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- #define LAYOUT_miryoku( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \ @@ -15,3 +14,41 @@ KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_ ) #include "manna-harbour_miryoku.c" + + +#ifdef SSD1306OLED + +#include "ssd1306.h" + +void matrix_init_user(void) { + iota_gfx_init(!has_usb()); // turns on the display +} + +// When add source files to SRC in rules.mk, you can use functions. +const char *read_logo(void); + +void matrix_scan_user(void) { + iota_gfx_task(); +} + +void matrix_render_user(struct CharacterMatrix *matrix) { + if (host_keyboard_leds() & (1<display, source->display, sizeof(dest->display))) { + memcpy(dest->display, source->display, sizeof(dest->display)); + dest->dirty = true; + } +} + +void iota_gfx_task_user(void) { + struct CharacterMatrix matrix; + matrix_clear(&matrix); + matrix_render_user(&matrix); + matrix_update(&display, &matrix); +} + +#endif //SSD1306OLED diff --git a/keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk b/keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk index f62c86e93..c4fb15f34 100644 --- a/keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk +++ b/keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk @@ -1,4 +1,7 @@ - -# generated from users/manna-harbour_miryoku/miryoku.org +# generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- RGB_MATRIX_ENABLE = WS2812 + +# old oled driver +SRC += ./lib/glcdfont.c \ + ./lib/logo_reader.c diff --git a/layouts/community/ergodox/manna-harbour_miryoku/keymap.c b/layouts/community/ergodox/manna-harbour_miryoku/keymap.c index 86547df98..1c715a68f 100644 --- a/layouts/community/ergodox/manna-harbour_miryoku/keymap.c +++ b/layouts/community/ergodox/manna-harbour_miryoku/keymap.c @@ -1,5 +1,4 @@ - -// generated from users/manna-harbour_miryoku/miryoku.org +// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- #define LAYOUT_miryoku(\ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ diff --git a/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c index b1341d41f..07bc15c2a 100644 --- a/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c +++ b/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c @@ -1,5 +1,4 @@ - -// generated from users/manna-harbour_miryoku/miryoku.org +// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- #define LAYOUT_miryoku(\ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\ diff --git a/users/manna-harbour_miryoku/config.h b/users/manna-harbour_miryoku/config.h index c3c513d06..5ac3208c9 100644 --- a/users/manna-harbour_miryoku/config.h +++ b/users/manna-harbour_miryoku/config.h @@ -1,5 +1,4 @@ - -// generated from users/manna-harbour_miryoku/miryoku.org +// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- #pragma once diff --git a/users/manna-harbour_miryoku/manna-harbour_miryoku.c b/users/manna-harbour_miryoku/manna-harbour_miryoku.c index 740e3830f..8ae38c25c 100644 --- a/users/manna-harbour_miryoku/manna-harbour_miryoku.c +++ b/users/manna-harbour_miryoku/manna-harbour_miryoku.c @@ -1,5 +1,4 @@ - -// generated from users/manna-harbour_miryoku/miryoku.org +// generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- #include QMK_KEYBOARD_H diff --git a/users/manna-harbour_miryoku/miryoku.org b/users/manna-harbour_miryoku/miryoku.org index 2733cbcea..692321d01 100644 --- a/users/manna-harbour_miryoku/miryoku.org +++ b/users/manna-harbour_miryoku/miryoku.org @@ -384,7 +384,7 @@ Header for tangled src files. #+NAME: header #+BEGIN_SRC C :tangle no -generated from users/manna-harbour_miryoku/miryoku.org +generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- #+END_SRC @@ -405,8 +405,7 @@ bottom row unused and the rest of the bottom row are the thumb keys. Contains the keymap. Included from keymap.c [[./manna-harbour_miryoku.c][users/manna-harbour_miryoku/manna-harbour_miryoku.c]] -#+BEGIN_SRC C :noweb yes :tangle manna-harbour_miryoku.c - +#+BEGIN_SRC C :noweb yes :padline no :tangle manna-harbour_miryoku.c // <
> #include QMK_KEYBOARD_H @@ -442,8 +441,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { Config options. Automatically included. [[./config.h][users/manna-harbour_miryoku/config.h]] -#+BEGIN_SRC C :noweb yes :tangle config.h - +#+BEGIN_SRC C :noweb yes :padline no :tangle config.h // <
> #pragma once @@ -465,13 +463,12 @@ Config options. Automatically included. Build options. Automatically included. [[./rules.mk][users/manna-harbour_miryoku/rules.mk]] -#+BEGIN_SRC makefile :noweb yes :tangle rules.mk - +#+BEGIN_SRC makefile :noweb yes :padline no :tangle rules.mk # <
> MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) - +EXTRAFLAGS += -flto # Link Time Optimization to reduce code size, 31358->28034/28672 #+END_SRC @@ -490,8 +487,7 @@ thumb key is the innermost key of the partial bottom row. The remaining keys are unused. [[../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c][layouts/community/ergodox/manna-harbour_miryoku/keymap.c]] -#+BEGIN_SRC C :noweb yes :tangle ../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c - +#+BEGIN_SRC C :noweb yes :padline no :tangle ../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c // <
> #define LAYOUT_miryoku(\ @@ -533,8 +529,7 @@ provide some column stagger on ortho keyboards. The bottom row left 3 columns are the thumb keys. The remaining keys are unused. [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c]] -#+BEGIN_SRC C :noweb yes :tangle ../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c - +#+BEGIN_SRC C :noweb yes :padline no :tangle ../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c // <
> #define LAYOUT_miryoku(\ @@ -577,8 +572,7 @@ The outer columns are unused. **** keymap.c [[../../keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c][keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c]] -#+BEGIN_SRC C :noweb yes :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c - +#+BEGIN_SRC C :noweb yes :padline no :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c // <
> #define LAYOUT_miryoku( \ @@ -596,14 +590,51 @@ KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_ #include "manna-harbour_miryoku.c" + +#ifdef SSD1306OLED + +#include "ssd1306.h" + +void matrix_init_user(void) { + iota_gfx_init(!has_usb()); // turns on the display +} + +// When add source files to SRC in rules.mk, you can use functions. +const char *read_logo(void); + +void matrix_scan_user(void) { + iota_gfx_task(); +} + +void matrix_render_user(struct CharacterMatrix *matrix) { + if (host_keyboard_leds() & (1<display, source->display, sizeof(dest->display))) { + memcpy(dest->display, source->display, sizeof(dest->display)); + dest->dirty = true; + } +} + +void iota_gfx_task_user(void) { + struct CharacterMatrix matrix; + matrix_clear(&matrix); + matrix_render_user(&matrix); + matrix_update(&display, &matrix); +} + +#endif //SSD1306OLED + #+END_SRC **** config.h [[../../keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h][keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h]] -#+BEGIN_SRC C :noweb yes :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h - +#+BEGIN_SRC C :noweb yes :padline no :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h // <
> #pragma once @@ -621,18 +652,23 @@ KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_ #define RGB_MATRIX_SPD_STEP 10 #endif +#define SSD1306OLED // old oled driver + #+END_SRC **** rules.mk [[../../keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk][keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk]] -#+BEGIN_SRC C :noweb yes :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk - +#+BEGIN_SRC C :noweb yes :padline no :tangle ../../keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk # <
> RGB_MATRIX_ENABLE = WS2812 +# old oled driver +SRC += ./lib/glcdfont.c \ + ./lib/logo_reader.c + #+END_SRC diff --git a/users/manna-harbour_miryoku/rules.mk b/users/manna-harbour_miryoku/rules.mk index baff1431f..a54616b47 100644 --- a/users/manna-harbour_miryoku/rules.mk +++ b/users/manna-harbour_miryoku/rules.mk @@ -1,5 +1,5 @@ - -# generated from users/manna-harbour_miryoku/miryoku.org +# generated from users/manna-harbour_miryoku/miryoku.org -*- buffer-read-only: t -*- MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +LTO_ENABLE = yes