Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove LAYOUT_kc macros from edvorakjp keymaps #12217

Merged
merged 12 commits into from
Apr 10, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
[helix/rev2/keymaps/edvorakjp] Use QMK's native OLED driver instead o…
…f helix/local_drivers/ssd1306.{h,c}
  • Loading branch information
epaew committed Mar 26, 2021
commit 0fc09969230df16278436ee013477a668c420d0d
14 changes: 0 additions & 14 deletions keyboards/helix/rev2/keymaps/edvorakjp/keymap.c
Original file line number Diff line number Diff line change
@@ -1,23 +1,9 @@
#include QMK_KEYBOARD_H
#include "split_util.h"
#include "keymap_xrows.h"
#ifdef SSD1306OLED
# include "oled.h"
#endif

// keymaps definitions are moved to keymap_Xrows.c.

#ifdef SSD1306OLED
void matrix_init_keymap(void) {
// SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
iota_gfx_init(!has_usb()); // turns on the display
}

void matrix_scan_user(void) {
iota_gfx_task(); // this is what updates the display continuously
}
#endif

#ifdef RGBLIGHT_ENABLE
uint32_t layer_state_set_keymap(uint32_t state) {
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
Expand Down
82 changes: 43 additions & 39 deletions keyboards/helix/rev2/keymaps/edvorakjp/oled.c
Original file line number Diff line number Diff line change
@@ -1,64 +1,68 @@
#include <stdio.h>
#include <string.h>
#include "oled.h"

static void render_logo(struct CharacterMatrix *matrix) {
static char 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, 0};
matrix_write(matrix, logo);
}
#ifdef OLED_DRIVER_ENABLE
void render_host_led_state(void) {
char led_state_str[24];
uint8_t leds = host_keyboard_leds();

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;
}
bool is_num_lock_enabled = leds & (1 << USB_LED_NUM_LOCK);
bool is_caps_lock_enabled = leds & (1 << USB_LED_CAPS_LOCK);
bool is_scroll_lock_enabled = leds & (1 << USB_LED_SCROLL_LOCK);

snprintf(led_state_str, sizeof(led_state_str), "NL:%s CL:%s SL:%s", is_num_lock_enabled ? "on" : "- ", is_caps_lock_enabled ? "on" : "- ", is_scroll_lock_enabled ? "on" : "- ");
oled_write(led_state_str, false);
}

void render_status(struct CharacterMatrix *matrix) {
// Render to mode icon
static char logo[][2][3] = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}};
int mode_number = get_enable_kc_lang() ? 0 : 1;
matrix_write(matrix, logo[mode_number][0]);
matrix_write(matrix, "\n");
matrix_write(matrix, logo[mode_number][1]);
void render_layer_state(void) {
char layer_name[17];
oled_write_P(PSTR("Layer: "), false);

// Define layers here, Have not worked out how to have text displayed for each layer. Copy down the number you see and add a case for it below
char buf[40];
snprintf(buf, sizeof(buf), "Undef-%ld", layer_state);
matrix_write_P(matrix, PSTR("\nLayer: "));
switch (biton32(layer_state)) {
case L_EDVORAKJP_BASE:
matrix_write_P(matrix, PSTR("Default"));
oled_write_ln_P(PSTR("Default"), false);
break;
case L_EDVORAKJP_LOWER:
matrix_write_P(matrix, PSTR("Lower"));
oled_write_ln_P(PSTR("Lower"), false);
break;
case L_EDVORAKJP_RAISE:
matrix_write_P(matrix, PSTR("Raise"));
oled_write_ln_P(PSTR("Raise"), false);
break;
default:
matrix_write(matrix, buf);
snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state);
oled_write_ln(layer_name, false);
}
}

// Host Keyboard LED Status
char led[40];
snprintf(led, sizeof(led), "\n%s %s %s", (host_keyboard_leds() & (1 << USB_LED_NUM_LOCK)) ? "NMLK" : " ", (host_keyboard_leds() & (1 << USB_LED_CAPS_LOCK)) ? "CAPS" : " ", (host_keyboard_leds() & (1 << USB_LED_SCROLL_LOCK)) ? "SCLK" : " ");
matrix_write(matrix, led);
void render_logo(void) {
static const char helix_logo[] PROGMEM = {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, 0};
oled_write_P(helix_logo, false);
}

void iota_gfx_task_user(void) {
struct CharacterMatrix matrix;
void render_mode_icon(bool is_windows) {
static const char logo[][2][3] = {
{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
{{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
};
static char mode_icon[10];

#if DEBUG_TO_SCREEN
if (debug_enable) {
return;
}
#endif
snprintf(mode_icon, sizeof(mode_icon), "%s\n%s ", logo[is_windows][0], logo[is_windows][1]);
oled_write(mode_icon, false);
}

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
// flips the display 180 degrees if offhand
return is_keyboard_left() ? rotation : rotation ^ OLED_ROTATION_180;
}

matrix_clear(&matrix);
void oled_task_user(void) {
if (is_keyboard_left()) {
render_status(&matrix);
render_mode_icon(!get_enable_kc_lang());
render_layer_state();
render_host_led_state();
} else {
render_logo(&matrix);
render_logo();
}
matrix_update(&display, &matrix);
}
#endif // OLED_DRIVER_ENABLE
13 changes: 7 additions & 6 deletions keyboards/helix/rev2/keymaps/edvorakjp/oled.h
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
#pragma once

// SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
#include "ssd1306.h"
#include "edvorakjp.h"

extern bool japanese_mode;
extern bool japanese_mode;

void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source);
void render_status(struct CharacterMatrix *matrix);
void iota_gfx_task_user(void);
void render_host_led_state(void);
void render_layer_state(void);
void render_logo(void);
void render_mode_icon(bool is_windows);
oled_rotation_t oled_init_user(oled_rotation_t rotation);
void oled_task_user(void);
1 change: 1 addition & 0 deletions keyboards/helix/rev2/keymaps/edvorakjp/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ TAP_DANCE_ENABLE = yes
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
# LED_ANIMATIONS = yes # LED animations
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
OLED_SELECT = core

# convert Helix-specific options (that represent combinations of standard options)
# into QMK standard options.
Expand Down