From c02c89b70179cdb51b5ed08e2a487c599c0332e9 Mon Sep 17 00:00:00 2001 From: mtei <2170248+mtei@users.noreply.github.com> Date: Mon, 6 Sep 2021 05:56:32 +0900 Subject: [PATCH 1/5] move rev3_Xrows/oled_display.c to rev3_Xrows/keymaps/default/oled_display.c --- keyboards/helix/rev3_4rows/{ => keymaps/default}/oled_display.c | 0 keyboards/helix/rev3_5rows/{ => keymaps/default}/oled_display.c | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename keyboards/helix/rev3_4rows/{ => keymaps/default}/oled_display.c (100%) rename keyboards/helix/rev3_5rows/{ => keymaps/default}/oled_display.c (100%) diff --git a/keyboards/helix/rev3_4rows/oled_display.c b/keyboards/helix/rev3_4rows/keymaps/default/oled_display.c similarity index 100% rename from keyboards/helix/rev3_4rows/oled_display.c rename to keyboards/helix/rev3_4rows/keymaps/default/oled_display.c diff --git a/keyboards/helix/rev3_5rows/oled_display.c b/keyboards/helix/rev3_5rows/keymaps/default/oled_display.c similarity index 100% rename from keyboards/helix/rev3_5rows/oled_display.c rename to keyboards/helix/rev3_5rows/keymaps/default/oled_display.c From 61765e838f24629da0d2c3c41b93db0a9fac1f65 Mon Sep 17 00:00:00 2001 From: mtei <2170248+mtei@users.noreply.github.com> Date: Mon, 6 Sep 2021 06:12:49 +0900 Subject: [PATCH 2/5] add dummy rev3_Xrows/oled_display.c --- keyboards/helix/rev3_4rows/oled_display.c | 9 +++++++++ keyboards/helix/rev3_5rows/oled_display.c | 9 +++++++++ 2 files changed, 18 insertions(+) create mode 100644 keyboards/helix/rev3_4rows/oled_display.c create mode 100644 keyboards/helix/rev3_5rows/oled_display.c diff --git a/keyboards/helix/rev3_4rows/oled_display.c b/keyboards/helix/rev3_4rows/oled_display.c new file mode 100644 index 000000000000..36bf63cb6063 --- /dev/null +++ b/keyboards/helix/rev3_4rows/oled_display.c @@ -0,0 +1,9 @@ +/* + + There are several ways to create your own keymap oled code: + + * Add the oled code to your keymaps//keymap.c. + * Create a new file in your keymaps// directory, add the oled code, and add `SRC + = ` to keymaps//rules.mk. + * Copy keymaps/default/oled_display.c to your keymaps// directory and modify it. + +*/ diff --git a/keyboards/helix/rev3_5rows/oled_display.c b/keyboards/helix/rev3_5rows/oled_display.c new file mode 100644 index 000000000000..36bf63cb6063 --- /dev/null +++ b/keyboards/helix/rev3_5rows/oled_display.c @@ -0,0 +1,9 @@ +/* + + There are several ways to create your own keymap oled code: + + * Add the oled code to your keymaps//keymap.c. + * Create a new file in your keymaps// directory, add the oled code, and add `SRC + = ` to keymaps//rules.mk. + * Copy keymaps/default/oled_display.c to your keymaps// directory and modify it. + +*/ From 20b269f9595b27584b376854738c2eec1691532b Mon Sep 17 00:00:00 2001 From: mtei <2170248+mtei@users.noreply.github.com> Date: Mon, 6 Sep 2021 07:31:04 +0900 Subject: [PATCH 3/5] Add default minimum oled_task_user() to helix/rev3_Xrows/rev3_Xrows.c --- keyboards/helix/rev3_4rows/rev3_4rows.c | 64 +++++++++++++++++++++++++ keyboards/helix/rev3_5rows/rev3_5rows.c | 64 +++++++++++++++++++++++++ 2 files changed, 128 insertions(+) diff --git a/keyboards/helix/rev3_4rows/rev3_4rows.c b/keyboards/helix/rev3_4rows/rev3_4rows.c index 7b3294110672..963cc744e77f 100644 --- a/keyboards/helix/rev3_4rows/rev3_4rows.c +++ b/keyboards/helix/rev3_4rows/rev3_4rows.c @@ -47,3 +47,67 @@ bool dip_switch_update_kb(uint8_t index, bool active) { return true; } #endif + +#ifdef OLED_ENABLE +static char *sprint_decimal(char *buf, int data) { + if (data > 9) { + buf = sprint_decimal(buf, data/10); + } + *buf++ = "0123456789"[data%10]; + *buf = '\0'; + return buf; +} + +char *sprints(char *buf, char *src) { + while (*src) { + *buf++ = *src++; + } + *buf = '\0'; + return buf; +} + +char *sprintd(char *buf, char *leadstr, int data) { + buf = sprints(buf, leadstr); + buf = sprint_decimal(buf, data); + return buf; +} + +char *sprint2d(char *buf, char *leadstr, int data) { + buf = sprints(buf, leadstr); + if (data > 99) { + return sprint_decimal(buf, data); + } + if (data < 10) { + *buf++ = ' '; + } + return sprint_decimal(buf, data); +} + +__attribute__((weak)) +void oled_task_user(void) { + static const char PROGMEM helix_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, + 0x0 + }; + static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; + + if (is_keyboard_master()) { + if (is_mac_mode()) { + oled_write_P(os_logo[0][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[0][1], false); + }else{ + oled_write_P(os_logo[1][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[1][1], false); + } + char buf[20]; + sprint2d(buf, " Layer: ", get_highest_layer(layer_state)); + oled_write(buf, false); + } else { + oled_write_P(helix_logo, false); + } +} +#endif diff --git a/keyboards/helix/rev3_5rows/rev3_5rows.c b/keyboards/helix/rev3_5rows/rev3_5rows.c index 7b3294110672..963cc744e77f 100644 --- a/keyboards/helix/rev3_5rows/rev3_5rows.c +++ b/keyboards/helix/rev3_5rows/rev3_5rows.c @@ -47,3 +47,67 @@ bool dip_switch_update_kb(uint8_t index, bool active) { return true; } #endif + +#ifdef OLED_ENABLE +static char *sprint_decimal(char *buf, int data) { + if (data > 9) { + buf = sprint_decimal(buf, data/10); + } + *buf++ = "0123456789"[data%10]; + *buf = '\0'; + return buf; +} + +char *sprints(char *buf, char *src) { + while (*src) { + *buf++ = *src++; + } + *buf = '\0'; + return buf; +} + +char *sprintd(char *buf, char *leadstr, int data) { + buf = sprints(buf, leadstr); + buf = sprint_decimal(buf, data); + return buf; +} + +char *sprint2d(char *buf, char *leadstr, int data) { + buf = sprints(buf, leadstr); + if (data > 99) { + return sprint_decimal(buf, data); + } + if (data < 10) { + *buf++ = ' '; + } + return sprint_decimal(buf, data); +} + +__attribute__((weak)) +void oled_task_user(void) { + static const char PROGMEM helix_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, + 0x0 + }; + static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; + + if (is_keyboard_master()) { + if (is_mac_mode()) { + oled_write_P(os_logo[0][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[0][1], false); + }else{ + oled_write_P(os_logo[1][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[1][1], false); + } + char buf[20]; + sprint2d(buf, " Layer: ", get_highest_layer(layer_state)); + oled_write(buf, false); + } else { + oled_write_P(helix_logo, false); + } +} +#endif From 4ddf9b8762659025bc166a9b97238bbb1cefdcd4 Mon Sep 17 00:00:00 2001 From: mtei <2170248+mtei@users.noreply.github.com> Date: Tue, 7 Sep 2021 04:37:51 +0900 Subject: [PATCH 4/5] remove unnecessary comment in rev3_Xrows/keymaps/default/oled_display.c --- .../helix/rev3_4rows/keymaps/default/oled_display.c | 11 ----------- .../helix/rev3_5rows/keymaps/default/oled_display.c | 11 ----------- 2 files changed, 22 deletions(-) diff --git a/keyboards/helix/rev3_4rows/keymaps/default/oled_display.c b/keyboards/helix/rev3_4rows/keymaps/default/oled_display.c index 23edbf7be4a0..fb1a6f9f8741 100644 --- a/keyboards/helix/rev3_4rows/keymaps/default/oled_display.c +++ b/keyboards/helix/rev3_4rows/keymaps/default/oled_display.c @@ -14,17 +14,6 @@ * along with this program. If not, see . */ -/* - How to Customize - - $ make helix/rev3_4rows:YOUR_KEYMAP:clean - $ cp keyboards/helix/rev3_4rows/oled_display.c keyboards/helix/rev3_4rows/keymaps/YOUR_KEYMAP - - $ edit keyboards/helix/rev3_4rows/keymaps/YOUR_KEYMAP/oled_display.c - $ make helix/rev3_4rows:YOUR_KEYMAP - $ make helix/rev3_4rows:YOUR_KEYMAP:flash - */ - #include QMK_KEYBOARD_H // Defines names for use in layer keycodes and the keymap diff --git a/keyboards/helix/rev3_5rows/keymaps/default/oled_display.c b/keyboards/helix/rev3_5rows/keymaps/default/oled_display.c index fbaa9bc5622d..fb1a6f9f8741 100644 --- a/keyboards/helix/rev3_5rows/keymaps/default/oled_display.c +++ b/keyboards/helix/rev3_5rows/keymaps/default/oled_display.c @@ -14,17 +14,6 @@ * along with this program. If not, see . */ - /* - How to Customize - - $ make helix/rev3_5rows:YOUR_KEYMAP:clean - $ cp keyboards/helix/rev3_5rows/oled_display.c keyboards/helix/rev3_5rows/keymaps/YOUR_KEYMAP - - $ edit keyboards/helix/rev3_5rows/keymaps/YOUR_KEYMAP/oled_display.c - $ make helix/rev3_5rows:YOUR_KEYMAP - $ make helix/rev3_5rows:YOUR_KEYMAP:flash - */ - #include QMK_KEYBOARD_H // Defines names for use in layer keycodes and the keymap From 36ba1dd3bfcc3a8014681274ca0c3362b8cbd7de Mon Sep 17 00:00:00 2001 From: mtei <2170248+mtei@users.noreply.github.com> Date: Tue, 14 Sep 2021 19:31:01 +0900 Subject: [PATCH 5/5] copy rev3_Xrows/keymaps/default/oled_display.c to rev3_Xrows/keymaps/via/oled_display.c --- .../rev3_4rows/keymaps/via/oled_display.c | 112 ++++++++++++++++++ .../rev3_5rows/keymaps/via/oled_display.c | 112 ++++++++++++++++++ 2 files changed, 224 insertions(+) create mode 100644 keyboards/helix/rev3_4rows/keymaps/via/oled_display.c create mode 100644 keyboards/helix/rev3_5rows/keymaps/via/oled_display.c diff --git a/keyboards/helix/rev3_4rows/keymaps/via/oled_display.c b/keyboards/helix/rev3_4rows/keymaps/via/oled_display.c new file mode 100644 index 000000000000..fb1a6f9f8741 --- /dev/null +++ b/keyboards/helix/rev3_4rows/keymaps/via/oled_display.c @@ -0,0 +1,112 @@ +/* Copyright 2020 yushakobo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST +}; + +#ifdef OLED_ENABLE + +void render_status(void) { + + // Render to mode icon + static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; + if (is_mac_mode()) { + oled_write_P(os_logo[0][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[0][1], false); + }else{ + oled_write_P(os_logo[1][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[1][1], false); + } + + oled_write_P(PSTR(" "), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + oled_write_P(PSTR("\n"), false); + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write_P(qmk_logo, false); +} + +static void render_rgbled_status(bool full) { +#ifdef RGBLIGHT_ENABLE + char buf[30]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { + if (full) { + snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", + rgblight_get_mode(), + rgblight_get_hue()/RGBLIGHT_HUE_STEP, + rgblight_get_sat()/RGBLIGHT_SAT_STEP, + rgblight_get_val()/RGBLIGHT_VAL_STEP); + } else { + snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); + } + oled_write(buf, false); + } +#endif +} + +void oled_task_user(void) { + if(is_keyboard_master()){ + render_status(); + }else{ + render_logo(); + render_rgbled_status(true); + } +} +#endif diff --git a/keyboards/helix/rev3_5rows/keymaps/via/oled_display.c b/keyboards/helix/rev3_5rows/keymaps/via/oled_display.c new file mode 100644 index 000000000000..fb1a6f9f8741 --- /dev/null +++ b/keyboards/helix/rev3_5rows/keymaps/via/oled_display.c @@ -0,0 +1,112 @@ +/* Copyright 2020 yushakobo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _QWERTY = 0, + _LOWER, + _RAISE, + _ADJUST +}; + +#ifdef OLED_ENABLE + +void render_status(void) { + + // Render to mode icon + static const char os_logo[][2][3] PROGMEM ={{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}}; + if (is_mac_mode()) { + oled_write_P(os_logo[0][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[0][1], false); + }else{ + oled_write_P(os_logo[1][0], false); + oled_write_P(PSTR("\n"), false); + oled_write_P(os_logo[1][1], false); + } + + oled_write_P(PSTR(" "), false); + + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); + + switch (get_highest_layer(layer_state)) { + case _QWERTY: + oled_write_P(PSTR("Default\n"), false); + break; + case _RAISE: + oled_write_P(PSTR("Raise\n"), false); + break; + case _LOWER: + oled_write_P(PSTR("Lower\n"), false); + break; + case _ADJUST: + oled_write_P(PSTR("Adjust\n"), false); + break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); + } + + oled_write_P(PSTR("\n"), false); + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); +} + + +static void render_logo(void) { + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + + oled_write_P(qmk_logo, false); +} + +static void render_rgbled_status(bool full) { +#ifdef RGBLIGHT_ENABLE + char buf[30]; + if (RGBLIGHT_MODES > 1 && rgblight_is_enabled()) { + if (full) { + snprintf(buf, sizeof(buf), " LED %2d: %d,%d,%d ", + rgblight_get_mode(), + rgblight_get_hue()/RGBLIGHT_HUE_STEP, + rgblight_get_sat()/RGBLIGHT_SAT_STEP, + rgblight_get_val()/RGBLIGHT_VAL_STEP); + } else { + snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode()); + } + oled_write(buf, false); + } +#endif +} + +void oled_task_user(void) { + if(is_keyboard_master()){ + render_status(); + }else{ + render_logo(); + render_rgbled_status(true); + } +} +#endif