diff --git a/keyboards/crkbd/keymaps/edvorakjp/config.h b/keyboards/crkbd/keymaps/edvorakjp/config.h index b8662aca092d..8787ba88d3bf 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/config.h +++ b/keyboards/crkbd/keymaps/edvorakjp/config.h @@ -1,25 +1,25 @@ -#ifndef CONFIG_USER_H -#define CONFIG_USER_H +#pragma once /* Select hand configuration */ -// #define MASTER_LEFT -#define MASTER_RIGHT +#define MASTER_LEFT +// #define MASTER_RIGHT // #define EE_HANDS -#define SSD1306OLED #define SWAP_SCLN // #define TAPPING_FORCE_HOLD #define TAPPING_TERM 300 #define IGNORE_MOD_TAP_INTERRUPT -#undef RGBLED_NUM -#define RGBLIGHT_EFFECT_STATIC_GRADIENT -#define RGBLED_NUM 27 -#define RGBLIGHT_LIMIT_VAL 100 -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 +#ifdef RGBLIGHT_ENABLE +# undef RGBLED_NUM +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +# define RGBLED_NUM 27 +# define RGBLIGHT_LIMIT_VAL 100 +# define RGBLIGHT_HUE_STEP 10 +# define RGBLIGHT_SAT_STEP 17 +# define RGBLIGHT_VAL_STEP 17 +#endif // RGBLIGHT_ENABLE -#endif // CONFIG_USER_H +#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c" diff --git a/keyboards/crkbd/keymaps/edvorakjp/keymap.c b/keyboards/crkbd/keymaps/edvorakjp/keymap.c index 32001f22daad..5e56da61a938 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/keymap.c +++ b/keyboards/crkbd/keymaps/edvorakjp/keymap.c @@ -1,9 +1,6 @@ #include QMK_KEYBOARD_H #ifdef PROTOCOL_LUFA - #include "split_util.h" -#endif -#ifdef SSD1306OLED - #include "oled.h" +# include "split_util.h" #endif #include "edvorakjp.h" @@ -14,85 +11,63 @@ * }; */ -#define KC_ KC_TRNS - -#define KC_TMB1 KC_LA(TAB) -#define KC_TMB2 KC_LS(SPC) -#define KC_TMB3 TD(TD_LOWER) // act as LOWER when hold, as KC_LANG2(=English) when tapped -#define KC_TMB4 TD(TD_RAISE) // act as RAISE when hold, as KC_LANG1(=Japanese) when tapped -#define KC_TMB5 KC_RC(BSPC) -#define KC_TMB6 KC_RG(ENT) -#define KC_TMB7 KC_RC(DEL) +#define LAYOUT_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__) +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_EDVORAK] = LAYOUT_kc( - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - GRV ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - ESC ,SCLN, X , C , V , Z , H , J , K , L , B ,SLSH, - //`----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----' - TMB1 ,TMB2,TMB3, TMB4,TMB5,TMB6 - // `-----+----+----' `----+----+-----' + [L_EDVORAKJP_BASE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_ESC, __EDVORAKJP_BASE_L3__ , __EDVORAKJP_BASE_R3__ , KC_SLSH, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT + //`--------------------------' `--------------------------' ), - [_LOWER] = LAYOUT_kc( - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - PSCR, , HOME , PGDN , PGUP ,END , LEFT, DOWN , UP , RGHT , , , - //`----+----+------+------+------+----+----| |----+----+------+------+-------+----+----' - , , NO , MAC ,TMB7, - // `-----+----+----' `----+----+-----' + [L_EDVORAKJP_LOWER] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS + //`--------------------------' `--------------------------' ), - [_RAISE] = LAYOUT_kc( - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - PSCR, ,HOME ,PGDN ,PGUP ,END , LEFT,DOWN , UP ,RGHT , , , - //`----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----' - , ,WIN , NO , , - // `-----+----+----' `----+----+----' + [L_EDVORAKJP_RAISE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS + //`--------------------------' `--------------------------' ) }; - -#ifdef SSD1306OLED -void matrix_init_keymap(void) { - //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h -#ifdef MASTER_RIGHT - iota_gfx_init(has_usb()); // turns on the display -#else - iota_gfx_init(!has_usb()); -#endif // MASTER_RIGHT -} - -void matrix_scan_user(void) { - iota_gfx_task(); // this is what updates the display continuously -} -#endif +// clang-format on #ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT uint32_t layer_state_set_keymap(uint32_t state) { - rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); - switch (biton32(state)) { - case _LOWER: - rgblight_sethsv_noeeprom_red(); - break; - case _RAISE: - rgblight_sethsv_noeeprom_green(); - break; - default: // for any other layers, or the default layer - rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); - rgblight_sethsv_red(); - break; - } - return state; + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + switch (biton32(state)) { + case L_EDVORAKJP_LOWER: + rgblight_sethsv_noeeprom_red(); + break; + case L_EDVORAKJP_RAISE: + rgblight_sethsv_noeeprom_green(); + break; + default: // for any other layers, or the default layer + rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); + rgblight_sethsv_red(); + break; + } + return state; } #endif diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.c b/keyboards/crkbd/keymaps/edvorakjp/oled.c index cbb43d06156d..2e0fed47ee6b 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/oled.c +++ b/keyboards/crkbd/keymaps/edvorakjp/oled.c @@ -1,76 +1,55 @@ +#include #include #include "oled.h" -// NOTE: Redefined to avoid to use snprintf(); It makes size of firmware big. -const char *read_mode_icon(bool windows_mode) { - static const char logo[][2][3] = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}}; - static char mode_icon[10]; - - int mode_number = windows_mode ? 1 : 0; - strcpy(mode_icon, logo[mode_number][0]); - - strcat(mode_icon, "\n"); - strcat(mode_icon, logo[mode_number][1]); - - return mode_icon; +#ifdef OLED_DRIVER_ENABLE +void render_host_led_state(void) { oled_write(read_host_led_state(), false); } + +void render_layer_state(void) { + char layer_name[17]; + oled_write_P(PSTR("Layer: "), false); + + switch (biton32(layer_state)) { + case L_EDVORAKJP_BASE: + oled_write_ln_P(PSTR("Default"), false); + break; + case L_EDVORAKJP_LOWER: + oled_write_ln_P(PSTR("Lower"), false); + break; + case L_EDVORAKJP_RAISE: + oled_write_ln_P(PSTR("Raise"), false); + break; + default: + snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state); + oled_write_ln(layer_name, false); + } } -const char *read_layer_state(void) { - static char layer_state_str[24]; - char layer_name[17]; - - switch (biton32(layer_state)) { - case L_BASE: - strcpy(layer_name, "Default"); - break; - case _RAISE: - strcpy(layer_name, "Raise"); - break; - case _LOWER: - strcpy(layer_name, "Lower"); - break; - default: - snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state); - } +void render_logo(void) { oled_write(read_logo(), false); } - strcpy(layer_state_str, "Layer: "); +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]; - strcat(layer_state_str, layer_name); - strcat(layer_state_str, "\n"); - return layer_state_str; + snprintf(mode_icon, sizeof(mode_icon), "%s\n%s ", logo[is_windows][0], logo[is_windows][1]); + oled_write(mode_icon, false); } -const char *read_host_led_state(void) { - static char led_str[24]; - strcpy(led_str, (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); -#ifdef MASTER_RIGHT - if (!is_master) { -#else - if (is_master) { -#endif // MASTER_RIGHT - matrix_write(&matrix, read_mode_icon(!get_enable_kc_lang())); - matrix_write(&matrix, " "); - matrix_write(&matrix, read_layer_state()); - matrix_write(&matrix, read_host_led_state()); - } else { - matrix_write(&matrix, read_logo()); - } - matrix_update(&display, &matrix); +void oled_task_user(void) { + if (is_keyboard_left()) { + render_mode_icon(!get_enable_kc_lang()); + render_layer_state(); + render_host_led_state(); + } else { + render_logo(); + } } +#endif // OLED_DRIVER_ENABLE diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.h b/keyboards/crkbd/keymaps/edvorakjp/oled.h index 896347aea98e..d9939c83a0ca 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/oled.h +++ b/keyboards/crkbd/keymaps/edvorakjp/oled.h @@ -1,24 +1,17 @@ -#ifndef OLED_USER_H -#define OLED_USER_H +#pragma once -//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h -#include "ssd1306.h" #include "edvorakjp.h" -//assign the right code to your layers for OLED display -#define L_BASE 0 - -extern uint8_t is_master; extern bool japanese_mode; // method prototypes defined in crkbd/lib +extern const char *read_host_led_state(void); extern const char *read_logo(void); +extern const char *read_mode_icon(bool swap); -const char *read_mode_icon(bool swap); -const char *read_layer_state(void); -const char *read_host_led_state(void); -void matrix_update(struct CharacterMatrix *dest, - const struct CharacterMatrix *source); -void iota_gfx_task_user(void); - -#endif // OLED_CONFIG_USER_H +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); diff --git a/keyboards/crkbd/keymaps/edvorakjp/rules.mk b/keyboards/crkbd/keymaps/edvorakjp/rules.mk index b4f6d2f1f15d..111f6de27d90 100644 --- a/keyboards/crkbd/keymaps/edvorakjp/rules.mk +++ b/keyboards/crkbd/keymaps/edvorakjp/rules.mk @@ -16,17 +16,13 @@ BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. SWAP_HANDS_ENABLE = no # Enable one-hand typing TAP_DANCE_ENABLE = yes +OLED_DRIVER_ENABLE = yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend # If you want to change the display of OLED, you need to change here -SRC += ./lib/glcdfont.c \ +SRC += ./lib/host_led_state_reader.c \ ./lib/logo_reader.c \ - oled.c \ - # ./lib/rgb_state_reader.c \ - # ./lib/layer_state_reader.c \ - # ./lib/keylogger.c \ - # ./lib/mode_icon_reader.c \ - # ./lib/host_led_state_reader.c \ - # ./lib/timelogger.c \ + ./lib/mode_icon_reader.c \ + oled.c diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/config.h b/keyboards/helix/rev2/keymaps/edvorakjp/config.h index cd0568f61e39..ca3b73aa29af 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/config.h +++ b/keyboards/helix/rev2/keymaps/edvorakjp/config.h @@ -1,5 +1,4 @@ -#ifndef CONFIG_USER_H -#define CONFIG_USER_H +#pragma once #define SWAP_SCLN @@ -12,15 +11,13 @@ // Selection of RGBLIGHT MODE to use. #if defined(LED_ANIMATIONS) - //#define RGBLIGHT_EFFECT_BREATHING - //#define RGBLIGHT_EFFECT_RAINBOW_MOOD - //#define RGBLIGHT_EFFECT_RAINBOW_SWIRL - //#define RGBLIGHT_EFFECT_SNAKE - //#define RGBLIGHT_EFFECT_KNIGHT - //#define RGBLIGHT_EFFECT_CHRISTMAS - #define RGBLIGHT_EFFECT_STATIC_GRADIENT - //#define RGBLIGHT_EFFECT_RGB_TEST - //#define RGBLIGHT_EFFECT_ALTERNATING -#endif - -#endif /* CONFIG_USER_H */ +//# define RGBLIGHT_EFFECT_BREATHING +//# define RGBLIGHT_EFFECT_RAINBOW_MOOD +//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL +//# define RGBLIGHT_EFFECT_SNAKE +//# define RGBLIGHT_EFFECT_KNIGHT +//# define RGBLIGHT_EFFECT_CHRISTMAS +# define RGBLIGHT_EFFECT_STATIC_GRADIENT +//# define RGBLIGHT_EFFECT_RGB_TEST +//# define RGBLIGHT_EFFECT_ALTERNATING +#endif // LED_ANIMATIONS diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c index 9fba5072c40e..5de00cb14c3a 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c @@ -1,38 +1,24 @@ #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); - switch (biton32(state)) { - case _LOWER: - rgblight_sethsv_noeeprom_red(); - break; - case _RAISE: - rgblight_sethsv_noeeprom_blue(); - break; - default: // for any other layers, or the default layer - rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); - rgblight_sethsv_red(); - break; - } - return state; + rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); + switch (biton32(state)) { + case L_EDVORAKJP_LOWER: + rgblight_sethsv_noeeprom_red(); + break; + case L_EDVORAKJP_RAISE: + rgblight_sethsv_noeeprom_green(); + break; + default: // for any other layers, or the default layer + rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); + rgblight_sethsv_red(); + break; + } + return state; } #endif diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c index f2befc03b584..246c2a9fd250 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c @@ -1,41 +1,42 @@ #include "helix.h" #include "keymap_xrows.h" +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_EDVORAK] = LAYOUT_kc( - //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. - GRV ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - ESC ,SCLN, X , C , V , Z , H , J , K , L , B ,SLSH, - //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| - HOME,PGDN,PGUP , END ,TMB1 ,TMB2,TMB3, TMB4,TMB5,TMB6 ,LEFT ,DOWN , UP ,RGHT - //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' + [L_EDVORAKJP_BASE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_ESC, __EDVORAKJP_BASE_L3__ , __EDVORAKJP_BASE_R3__ , KC_SLSH, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __EDVORAKJP_PAGE__ , LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT, __EDVORAKJP_CURSOR__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ), - [_LOWER] = LAYOUT_kc( - //,----+----+------+------+------+----. ,----+------+------+-------+----+----. - , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - PSCR, , HOME , PGDN , PGUP ,END , LEFT, DOWN , UP , RGHT , , , - //|----+----+------+------+------+----+----. ,----+----+------+------+-------+----+----| - , , , , , , NO , MAC ,TMB7, , , , , - //`----+----+------+------+------+----+----/ \----+----+------+------+-------+----+----' + [L_EDVORAKJP_LOWER] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS, __KC_TRNS_x4__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ), - [_RAISE] = LAYOUT_kc( - //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. - , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - PSCR, ,HOME ,PGDN ,PGUP ,END , LEFT,DOWN , UP ,RGHT , , , - //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| - , , , , , ,WIN , NO , , , , , , - //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' + [L_EDVORAKJP_RAISE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS, __KC_TRNS_x4__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ) }; +// clang-format on diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c index 642ba8c635b4..6f2a4d371a1b 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c @@ -1,47 +1,48 @@ #include "helix.h" #include "keymap_xrows.h" +// clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_EDVORAK] = LAYOUT_kc( - //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. - ESC ,EXLM, AT ,HASH , DLR ,PERC, CIRC,AMPR ,ASTR ,LPRN ,RPRN,BSPC, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - GRV ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, - //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| - TAB ,SCLN, X , C , V , Z , NO , NO , H , J , K , L , B ,SLSH, - //|----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----| - HOME,PGDN,PGUP , END ,TMB1 ,TMB2,TMB3, TMB4,TMB5,TMB6 ,LEFT ,DOWN , UP ,RGHT - //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' + [L_EDVORAKJP_BASE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS, + //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| + KC_ESC, __EDVORAKJP_BASE_L3__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BASE_R3__ , KC_SLSH, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __EDVORAKJP_PAGE__ , LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT, __EDVORAKJP_CURSOR__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ), - [_LOWER] = LAYOUT_kc( - //,----+----+------+------+------+----. ,----+------+------+-------+----+----. - PSCR, , , , , , , , , , , , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , - //|----+----+------+------+------+----| |----+------+------+-------+----+----| - F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , - //|----+----+------+------+------+----+----. ,----+----+------+------+-------+----+----| - , , HOME , PGDN , PGUP ,END , , ,LEFT, DOWN , UP , RGHT , , , - //|----+----+------+------+------+----+----| |----+----+------+------+-------+----+----| - , , , , , , NO , MAC ,TMB7, , , , , - //`----+----+------+------+------+----+----/ \----+----+------+------+-------+----+----' + [L_EDVORAKJP_LOWER] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + __KC_TRNS_x6__ , __KC_TRNS_x6__ , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ , + //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , KC_TRNS, KC_TRNS, __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS, __KC_TRNS_x4__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ), - [_RAISE] = LAYOUT_kc( - //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. - PSCR, , , , , , , , , , , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , - //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| - , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , - //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| - , ,HOME ,PGDN ,PGUP ,END , , ,LEFT,DOWN , UP ,RGHT , , , - //|----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----| - , , , , , ,WIN , NO , , , , , , - //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' + [L_EDVORAKJP_RAISE] = LAYOUT_wrapper( + //,-----------------------------------------------------. ,-----------------------------------------------------. + __KC_TRNS_x6__ , __KC_TRNS_x6__ , + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| + XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------| + KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , KC_TRNS, KC_TRNS, __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX, + //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------| + __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS, __KC_TRNS_x4__ + //`--------------------------------------------------------------' `--------------------------------------------------------------' ) }; +// clang-format on diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h index d9561d0b707f..aae83fc7a841 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h +++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h @@ -1,5 +1,4 @@ -#ifndef KEYMAP_XROWS_H -#define KEYMAP_XROWS_H +#pragma once #include "edvorakjp.h" /* @@ -8,14 +7,7 @@ * }; */ -#define KC_ KC_TRNS +#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__) -#define KC_TMB1 KC_LA(TAB) -#define KC_TMB2 KC_LS(SPC) -#define KC_TMB3 TD(TD_LOWER) // act as LOWER when hold, as KC_LANG2(=English) when tapped -#define KC_TMB4 TD(TD_RAISE) // act as RAISE when hold, as KC_LANG1(=Japanese) when tapped -#define KC_TMB5 KC_RC(BSPC) -#define KC_TMB6 KC_RG(ENT) -#define KC_TMB7 KC_RC(DEL) - -#endif +#define __KC_TRNS_x4__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS +#define __KC_TRNS_x6__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c index b931b72b7ccb..4bbab1dc4b37 100644 --- a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c +++ b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c @@ -1,72 +1,68 @@ +#include #include #include "oled.h" -static void render_logo(struct CharacterMatrix *matrix) { +#ifdef OLED_DRIVER_ENABLE +void render_host_led_state(void) { + char led_state_str[24]; + uint8_t leds = host_keyboard_leds(); - 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); -} + 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); -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; - } + 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_BASE: - matrix_write_P(matrix, PSTR("Default")); - break; - case _RAISE: - matrix_write_P(matrix, PSTR("Raise")); - break; - case _LOWER: - matrix_write_P(matrix, PSTR("Lower")); - break; - default: - matrix_write(matrix, buf); - } + switch (biton32(layer_state)) { + case L_EDVORAKJP_BASE: + oled_write_ln_P(PSTR("Default"), false); + break; + case L_EDVORAKJP_LOWER: + oled_write_ln_P(PSTR("Lower"), false); + break; + case L_EDVORAKJP_RAISE: + oled_write_ln_P(PSTR("Raise"), false); + break; + default: + 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<event.pressed) { - last_mods_status = get_mods(); + static const uint8_t shift_bits = MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT); + static uint8_t last_mods_status; + if (keycode == KC_SCLN) { + if (record->event.pressed) { + last_mods_status = get_mods(); - // invert shift_bits - if (last_mods_status & shift_bits) { - set_mods(last_mods_status & ~shift_bits); - } else { - set_mods(last_mods_status | MOD_BIT(KC_LSFT)); - } - } else { - set_mods(last_mods_status); - last_mods_status = 0; + // invert shift_bits + if (last_mods_status & shift_bits) { + set_mods(last_mods_status & ~shift_bits); + } else { + set_mods(last_mods_status | MOD_BIT(KC_LSFT)); + } + } else { + set_mods(last_mods_status); + last_mods_status = 0; + } } - } #endif - return true; + return true; } bool process_record_edvorakjp_config(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_MAC: - case KC_WIN: - if (record->event.pressed) { - set_enable_kc_lang(keycode == KC_MAC); - } - return false; - } - return true; + switch (keycode) { + case KC_MAC: + case KC_WIN: + if (record->event.pressed) { + set_enable_kc_lang(keycode == KC_MAC); + } + return false; + } + return true; } bool process_record_layer(uint16_t keycode, keyrecord_t *record) { #if TAP_DANCE_ENABLE != yes - switch (keycode) { - case LOWER: - if (record->event.pressed) { - layer_on(_LOWER); - time_on_pressed = record->event.time; - } else { - layer_off(_LOWER); + switch (keycode) { + case KC_EDVORAKJP_LOWER: + if (record->event.pressed) { + layer_on(L_EDVORAKJP_LOWER); + time_on_pressed = record->event.time; + } else { + layer_off(L_EDVORAKJP_LOWER); - if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) { - set_japanese_mode(false); - } - time_on_pressed = 0; - } - return false; - case RAISE: - if (record->event.pressed) { - layer_on(_RAISE); - time_on_pressed = record->event.time; - } else { - layer_off(_RAISE); + if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) { + set_japanese_mode(false); + } + time_on_pressed = 0; + } + return false; + case KC_EDVORAKJP_RAISE: + if (record->event.pressed) { + layer_on(L_EDVORAKJP_RAISE); + time_on_pressed = record->event.time; + } else { + layer_off(L_EDVORAKJP_RAISE); - if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) { - set_japanese_mode(true); - } - time_on_pressed = 0; - } - return false; - } + if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) { + set_japanese_mode(true); + } + time_on_pressed = 0; + } + return false; + } #endif - return true; + return true; } bool process_record_ime(uint16_t keycode, keyrecord_t *record) { - switch (keycode) { - case KC_JPN: - case KC_ENG: - if (record->event.pressed) { - set_japanese_mode(keycode == KC_JPN); - } - return false; - } - return true; + switch (keycode) { + case KC_JPN: + case KC_ENG: + if (record->event.pressed) { + set_japanese_mode(keycode == KC_JPN); + } + return false; + } + return true; } diff --git a/users/edvorakjp/edvorakjp_status.c b/users/edvorakjp/edvorakjp_status.c index 128fc3bd28eb..c8a06c2255c8 100644 --- a/users/edvorakjp/edvorakjp_status.c +++ b/users/edvorakjp/edvorakjp_status.c @@ -2,63 +2,55 @@ #include "edvorakjp.h" typedef union { - uint8_t raw; - struct { - bool enable_kc_lang; // for macOS - }; + uint8_t raw; + struct { + bool enable_kc_lang; // for macOS + }; } edvorakjp_config_t; static edvorakjp_config_t edvorakjp_config; typedef struct { - bool japanese_mode; + bool japanese_mode; } edvorakjp_state_t; static edvorakjp_state_t edvorakjp_state; /* * private methods */ -uint8_t eeconfig_read_edvorakjp(void) { - return eeprom_read_byte(EECONFIG_EDVORAK); -} +uint8_t eeconfig_read_edvorakjp(void) { return eeprom_read_byte(EECONFIG_EDVORAK); } -void eeconfig_update_edvorakjp(uint8_t val) { - eeprom_update_byte(EECONFIG_EDVORAK, val); -} +void eeconfig_update_edvorakjp(uint8_t val) { eeprom_update_byte(EECONFIG_EDVORAK, val); } /* * public methods */ void edvorakjp_status_init(void) { - edvorakjp_state.japanese_mode = false; - edvorakjp_config.raw = eeconfig_read_edvorakjp(); + edvorakjp_state.japanese_mode = false; + edvorakjp_config.raw = eeconfig_read_edvorakjp(); } -bool get_enable_kc_lang(void) { - return edvorakjp_config.enable_kc_lang; -} +bool get_enable_kc_lang(void) { return edvorakjp_config.enable_kc_lang; } void set_enable_kc_lang(bool new_state) { - edvorakjp_config.enable_kc_lang = new_state; - eeconfig_update_edvorakjp(edvorakjp_config.raw); + edvorakjp_config.enable_kc_lang = new_state; + eeconfig_update_edvorakjp(edvorakjp_config.raw); } -bool get_japanese_mode(void) { - return edvorakjp_state.japanese_mode; -} +bool get_japanese_mode(void) { return edvorakjp_state.japanese_mode; } void set_japanese_mode(bool new_state) { - edvorakjp_state.japanese_mode = new_state; - if (edvorakjp_state.japanese_mode) { - if (edvorakjp_config.enable_kc_lang) { - SEND_STRING(SS_TAP(X_LANG1)); - } else { - SEND_STRING(SS_LALT("`")); - } - } else { - if (edvorakjp_config.enable_kc_lang) { - SEND_STRING(SS_TAP(X_LANG2)); + edvorakjp_state.japanese_mode = new_state; + if (edvorakjp_state.japanese_mode) { + if (edvorakjp_config.enable_kc_lang) { + SEND_STRING(SS_TAP(X_LANG1)); + } else { + SEND_STRING(SS_LALT("`")); + } } else { - SEND_STRING(SS_LALT("`")); + if (edvorakjp_config.enable_kc_lang) { + SEND_STRING(SS_TAP(X_LANG2)); + } else { + SEND_STRING(SS_LALT("`")); + } } - } } diff --git a/users/edvorakjp/edvorakjp_tap_dance.c b/users/edvorakjp/edvorakjp_tap_dance.c index d5369f9266e6..cee10de693d0 100644 --- a/users/edvorakjp/edvorakjp_tap_dance.c +++ b/users/edvorakjp/edvorakjp_tap_dance.c @@ -2,72 +2,68 @@ #include "process_keycode/process_tap_dance.h" enum tap_state { - NONE = 0, - SINGLE_TAP = 1, - DOUBLE_TAP = 2, - HOLD + NONE = 0, + SINGLE_TAP = 1, + DOUBLE_TAP = 2, + HOLD, }; typedef struct { - uint8_t lower; - uint8_t raise; + uint8_t lower; + uint8_t raise; } td_status_t; static td_status_t td_status = {NONE, NONE}; -int cur_dance(qk_tap_dance_state_t *state) { - if (state->interrupted || !state->pressed) { - return state->count == 1 ? SINGLE_TAP : DOUBLE_TAP; - } else { - return HOLD; - } +uint8_t cur_dance(qk_tap_dance_state_t *state) { + if (state->interrupted || !state->pressed) { + return state->count == 1 ? SINGLE_TAP : DOUBLE_TAP; + } else { + return HOLD; + } } void td_lower_finished(qk_tap_dance_state_t *state, void *user_data) { - td_status.lower = cur_dance(state); - switch(td_status.lower) { - case SINGLE_TAP: - set_japanese_mode(false); - break; - case DOUBLE_TAP: - set_japanese_mode(false); - register_code(KC_ESC); - break; - case HOLD: - break; - } - layer_on(_LOWER); + td_status.lower = cur_dance(state); + switch (td_status.lower) { + case SINGLE_TAP: + set_japanese_mode(false); + break; + case DOUBLE_TAP: + set_japanese_mode(false); + register_code(KC_ESC); + break; + } + layer_on(L_EDVORAKJP_LOWER); } void td_lower_reset(qk_tap_dance_state_t *state, void *user_data) { - if (td_status.lower == DOUBLE_TAP) { - unregister_code(KC_ESC); - } - layer_off(_LOWER); - td_status.lower = NONE; + switch (td_status.lower) { + case DOUBLE_TAP: + unregister_code(KC_ESC); + break; + } + layer_off(L_EDVORAKJP_LOWER); + td_status.lower = NONE; } void td_raise_finished(qk_tap_dance_state_t *state, void *user_data) { - td_status.raise = cur_dance(state); - switch(td_status.raise) { - case DOUBLE_TAP: - // same as single - case SINGLE_TAP: - set_japanese_mode(true); - break; - case HOLD: - break; - } - layer_on(_RAISE); + td_status.raise = cur_dance(state); + switch (td_status.raise) { + case DOUBLE_TAP: + // same as single + case SINGLE_TAP: + set_japanese_mode(true); + break; + } + layer_on(L_EDVORAKJP_RAISE); } void td_raise_reset(qk_tap_dance_state_t *state, void *user_data) { - layer_off(_RAISE); - td_status.raise = NONE; + layer_off(L_EDVORAKJP_RAISE); + td_status.raise = NONE; } qk_tap_dance_action_t tap_dance_actions[] = { - [TD_LOWER] = - ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_lower_finished, td_lower_reset, 100), - [TD_RAISE] = - ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_raise_finished, td_raise_reset, 100) + [TD_EDVORAKJP_LOWER] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_lower_finished, td_lower_reset, 150), + [TD_EDVORAKJP_RAISE] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_raise_finished, td_raise_reset, 150), };