summary refs log tree commit diff
diff options
context:
space:
mode:
authorManna Harbour <51143715+manna-harbour@users.noreply.github.com>2019-12-08 18:08:12 +1100
committerDrashna Jaelre <drashna@live.com>2019-12-07 23:08:12 -0800
commit3d78e6078e402bf0fe476adeed8ac16033f916c0 (patch)
tree8b49da26c139bacb17b1b3c3af370658f16f5ec8
parente676278474b853fb16187e605c037930c4927144 (diff)
[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 <drashna@live.com>
-rw-r--r--keyboards/crkbd/keymaps/manna-harbour_miryoku/config.h5
-rw-r--r--keyboards/crkbd/keymaps/manna-harbour_miryoku/keymap.c41
-rw-r--r--keyboards/crkbd/keymaps/manna-harbour_miryoku/rules.mk7
-rw-r--r--layouts/community/ergodox/manna-harbour_miryoku/keymap.c3
-rw-r--r--layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c3
-rw-r--r--users/manna-harbour_miryoku/config.h3
-rw-r--r--users/manna-harbour_miryoku/manna-harbour_miryoku.c3
-rw-r--r--users/manna-harbour_miryoku/miryoku.org72
-rw-r--r--users/manna-harbour_miryoku/rules.mk4
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 4b8f78a650..e2fe1824da 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 56d4de25ac..f5be6844f8 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<<USB_LED_CAPS_LOCK)) {
+    matrix_write(matrix, read_logo());
+  }
+}
+
+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 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 f62c86e932..c4fb15f342 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 86547df98e..1c715a68f7 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 b1341d41f9..07bc15c2af 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 c3c513d063..5ac3208c90 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 740e3830f9..8ae38c25c8 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 2733cbceaf..692321d01e 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
 // <<header>>
 
 #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
 // <<header>>
 
 #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
 # <<header>>
 
 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
 // <<header>>
 
 #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
 // <<header>>
 
 #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
 // <<header>>
 
 #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<<USB_LED_CAPS_LOCK)) {
+    matrix_write(matrix, read_logo());
+  }
+}
+
+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 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
 // <<header>>
 
 #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
 # <<header>>
 
 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 baff1431f0..a54616b47a 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