aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyo Maeda <epaew@users.noreply.github.com>2021-04-10 09:37:49 +0900
committerGitHub <noreply@github.com>2021-04-09 17:37:49 -0700
commit3dbb7f261dab573a3b55390394444ac3ceb3d257 (patch)
treee1b7e20933766622f974ac40a3d9aaddf239625c
parent93e8a401df09df910b2caad7fc5ecb13fe2142ac (diff)
downloadqmk_firmware-3dbb7f261dab573a3b55390394444ac3ceb3d257.tar.gz
qmk_firmware-3dbb7f261dab573a3b55390394444ac3ceb3d257.zip
[Keymap] Remove LAYOUT_kc macros from edvorakjp keymaps (#12217)
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/config.h26
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/keymap.c121
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/oled.c107
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/oled.h25
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/rules.mk12
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/config.h25
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/keymap.c42
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c63
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c75
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h16
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/oled.c112
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/oled.h21
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/rules.mk1
-rw-r--r--keyboards/keebio/iris/keymaps/edvorakjp/config.h5
-rw-r--r--keyboards/keebio/iris/keymaps/edvorakjp/keymap.c117
-rw-r--r--users/edvorakjp/edvorakjp.c28
-rw-r--r--users/edvorakjp/edvorakjp.h86
-rw-r--r--users/edvorakjp/edvorakjp_process_record.c122
-rw-r--r--users/edvorakjp/edvorakjp_status.c58
-rw-r--r--users/edvorakjp/edvorakjp_tap_dance.c90
20 files changed, 525 insertions, 627 deletions
diff --git a/keyboards/crkbd/keymaps/edvorakjp/config.h b/keyboards/crkbd/keymaps/edvorakjp/config.h
index b8662aca0..8787ba88d 100644
--- a/keyboards/crkbd/keymaps/edvorakjp/config.h
+++ b/keyboards/crkbd/keymaps/edvorakjp/config.h
@@ -1,25 +1,25 @@
1#ifndef CONFIG_USER_H 1#pragma once
2#define CONFIG_USER_H
3 2
4/* Select hand configuration */ 3/* Select hand configuration */
5 4
6// #define MASTER_LEFT 5#define MASTER_LEFT
7#define MASTER_RIGHT 6// #define MASTER_RIGHT
8// #define EE_HANDS 7// #define EE_HANDS
9 8
10#define SSD1306OLED
11#define SWAP_SCLN 9#define SWAP_SCLN
12 10
13// #define TAPPING_FORCE_HOLD 11// #define TAPPING_FORCE_HOLD
14#define TAPPING_TERM 300 12#define TAPPING_TERM 300
15#define IGNORE_MOD_TAP_INTERRUPT 13#define IGNORE_MOD_TAP_INTERRUPT
16 14
17#undef RGBLED_NUM 15#ifdef RGBLIGHT_ENABLE
18#define RGBLIGHT_EFFECT_STATIC_GRADIENT 16# undef RGBLED_NUM
19#define RGBLED_NUM 27 17# define RGBLIGHT_EFFECT_STATIC_GRADIENT
20#define RGBLIGHT_LIMIT_VAL 100 18# define RGBLED_NUM 27
21#define RGBLIGHT_HUE_STEP 10 19# define RGBLIGHT_LIMIT_VAL 100
22#define RGBLIGHT_SAT_STEP 17 20# define RGBLIGHT_HUE_STEP 10
23#define RGBLIGHT_VAL_STEP 17 21# define RGBLIGHT_SAT_STEP 17
22# define RGBLIGHT_VAL_STEP 17
23#endif // RGBLIGHT_ENABLE
24 24
25#endif // CONFIG_USER_H 25#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 32001f22d..5e56da61a 100644
--- a/keyboards/crkbd/keymaps/edvorakjp/keymap.c
+++ b/keyboards/crkbd/keymaps/edvorakjp/keymap.c
@@ -1,9 +1,6 @@
1#include QMK_KEYBOARD_H 1#include QMK_KEYBOARD_H
2#ifdef PROTOCOL_LUFA 2#ifdef PROTOCOL_LUFA
3 #include "split_util.h" 3# include "split_util.h"
4#endif
5#ifdef SSD1306OLED
6 #include "oled.h"
7#endif 4#endif
8 5
9#include "edvorakjp.h" 6#include "edvorakjp.h"
@@ -14,85 +11,63 @@
14 * }; 11 * };
15 */ 12 */
16 13
17#define KC_ KC_TRNS 14#define LAYOUT_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__)
18
19#define KC_TMB1 KC_LA(TAB)
20#define KC_TMB2 KC_LS(SPC)
21#define KC_TMB3 TD(TD_LOWER) // act as LOWER when hold, as KC_LANG2(=English) when tapped
22#define KC_TMB4 TD(TD_RAISE) // act as RAISE when hold, as KC_LANG1(=Japanese) when tapped
23#define KC_TMB5 KC_RC(BSPC)
24#define KC_TMB6 KC_RG(ENT)
25#define KC_TMB7 KC_RC(DEL)
26 15
16// clang-format off
27const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 17const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
28 18 [L_EDVORAKJP_BASE] = LAYOUT_wrapper(
29 [_EDVORAK] = LAYOUT_kc( 19 //,-----------------------------------------------------. ,-----------------------------------------------------.
30 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 20 KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS,
31 GRV ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, 21 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
32 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 22 KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS,
33 EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, 23 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
34 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 24 KC_ESC, __EDVORAKJP_BASE_L3__ , __EDVORAKJP_BASE_R3__ , KC_SLSH,
35 ESC ,SCLN, X , C , V , Z , H , J , K , L , B ,SLSH, 25 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
36 //`----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----' 26 LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT
37 TMB1 ,TMB2,TMB3, TMB4,TMB5,TMB6 27 //`--------------------------' `--------------------------'
38 // `-----+----+----' `----+----+-----'
39 ), 28 ),
40 29
41 [_LOWER] = LAYOUT_kc( 30 [L_EDVORAKJP_LOWER] = LAYOUT_wrapper(
42 //|----+----+------+------+------+----| |----+------+------+-------+----+----| 31 //,-----------------------------------------------------. ,-----------------------------------------------------.
43 , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , 32 XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX,
44 //|----+----+------+------+------+----| |----+------+------+-------+----+----| 33 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
45 F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , 34 __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ ,
46 //|----+----+------+------+------+----| |----+------+------+-------+----+----| 35 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
47 PSCR, , HOME , PGDN , PGUP ,END , LEFT, DOWN , UP , RGHT , , , 36 KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX,
48 //`----+----+------+------+------+----+----| |----+----+------+------+-------+----+----' 37 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
49 , , NO , MAC ,TMB7, 38 KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS
50 // `-----+----+----' `----+----+-----' 39 //`--------------------------' `--------------------------'
51 ), 40 ),
52 41
53 [_RAISE] = LAYOUT_kc( 42 [L_EDVORAKJP_RAISE] = LAYOUT_wrapper(
54 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 43 //,-----------------------------------------------------. ,-----------------------------------------------------.
55 , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , 44 XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX,
56 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 45 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
57 , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , 46 XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX,
58 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 47 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
59 PSCR, ,HOME ,PGDN ,PGUP ,END , LEFT,DOWN , UP ,RGHT , , , 48 KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX,
60 //`----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----' 49 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
61 , ,WIN , NO , , 50 KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS
62 // `-----+----+----' `----+----+----' 51 //`--------------------------' `--------------------------'
63 ) 52 )
64}; 53};
65 54// clang-format on
66#ifdef SSD1306OLED
67void matrix_init_keymap(void) {
68 //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
69#ifdef MASTER_RIGHT
70 iota_gfx_init(has_usb()); // turns on the display
71#else
72 iota_gfx_init(!has_usb());
73#endif // MASTER_RIGHT
74}
75
76void matrix_scan_user(void) {
77 iota_gfx_task(); // this is what updates the display continuously
78}
79#endif
80 55
81#ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT 56#ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT
82uint32_t layer_state_set_keymap(uint32_t state) { 57uint32_t layer_state_set_keymap(uint32_t state) {
83 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); 58 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
84 switch (biton32(state)) { 59 switch (biton32(state)) {
85 case _LOWER: 60 case L_EDVORAKJP_LOWER:
86 rgblight_sethsv_noeeprom_red(); 61 rgblight_sethsv_noeeprom_red();
87 break; 62 break;
88 case _RAISE: 63 case L_EDVORAKJP_RAISE:
89 rgblight_sethsv_noeeprom_green(); 64 rgblight_sethsv_noeeprom_green();
90 break; 65 break;
91 default: // for any other layers, or the default layer 66 default: // for any other layers, or the default layer
92 rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); 67 rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3);
93 rgblight_sethsv_red(); 68 rgblight_sethsv_red();
94 break; 69 break;
95 } 70 }
96 return state; 71 return state;
97} 72}
98#endif 73#endif
diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.c b/keyboards/crkbd/keymaps/edvorakjp/oled.c
index cbb43d061..2e0fed47e 100644
--- a/keyboards/crkbd/keymaps/edvorakjp/oled.c
+++ b/keyboards/crkbd/keymaps/edvorakjp/oled.c
@@ -1,76 +1,55 @@
1#include <stdio.h>
1#include <string.h> 2#include <string.h>
2#include "oled.h" 3#include "oled.h"
3 4
4// NOTE: Redefined to avoid to use snprintf(); It makes size of firmware big. 5#ifdef OLED_DRIVER_ENABLE
5const char *read_mode_icon(bool windows_mode) { 6void render_host_led_state(void) { oled_write(read_host_led_state(), false); }
6 static const char logo[][2][3] = {{{0x95, 0x96, 0}, {0xb5, 0xb6, 0}}, {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}}}; 7
7 static char mode_icon[10]; 8void render_layer_state(void) {
8 9 char layer_name[17];
9 int mode_number = windows_mode ? 1 : 0; 10 oled_write_P(PSTR("Layer: "), false);
10 strcpy(mode_icon, logo[mode_number][0]); 11
11 12 switch (biton32(layer_state)) {
12 strcat(mode_icon, "\n"); 13 case L_EDVORAKJP_BASE:
13 strcat(mode_icon, logo[mode_number][1]); 14 oled_write_ln_P(PSTR("Default"), false);
14 15 break;
15 return mode_icon; 16 case L_EDVORAKJP_LOWER:
17 oled_write_ln_P(PSTR("Lower"), false);
18 break;
19 case L_EDVORAKJP_RAISE:
20 oled_write_ln_P(PSTR("Raise"), false);
21 break;
22 default:
23 snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state);
24 oled_write_ln(layer_name, false);
25 }
16} 26}
17 27
18const char *read_layer_state(void) { 28void render_logo(void) { oled_write(read_logo(), false); }
19 static char layer_state_str[24];
20 char layer_name[17];
21
22 switch (biton32(layer_state)) {
23 case L_BASE:
24 strcpy(layer_name, "Default");
25 break;
26 case _RAISE:
27 strcpy(layer_name, "Raise");
28 break;
29 case _LOWER:
30 strcpy(layer_name, "Lower");
31 break;
32 default:
33 snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state);
34 }
35 29
36 strcpy(layer_state_str, "Layer: "); 30void render_mode_icon(bool is_windows) {
31 static const char logo[][2][3] = {
32 {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
33 {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
34 };
35 static char mode_icon[10];
37 36
38 strcat(layer_state_str, layer_name); 37 snprintf(mode_icon, sizeof(mode_icon), "%s\n%s ", logo[is_windows][0], logo[is_windows][1]);
39 strcat(layer_state_str, "\n"); 38 oled_write(mode_icon, false);
40 return layer_state_str;
41} 39}
42 40
43const char *read_host_led_state(void) { 41oled_rotation_t oled_init_user(oled_rotation_t rotation) {
44 static char led_str[24]; 42 // flips the display 180 degrees if offhand
45 strcpy(led_str, (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NMLK" : " "); 43 return is_keyboard_left() ? rotation : rotation ^ OLED_ROTATION_180;
46 strcat(led_str, (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? " CAPS" : " ");
47 strcat(led_str, (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? " SCLK" : " ");
48 return led_str;
49} 44}
50 45
51void matrix_update(struct CharacterMatrix *dest, 46void oled_task_user(void) {
52 const struct CharacterMatrix *source) { 47 if (is_keyboard_left()) {
53 if (memcmp(dest->display, source->display, sizeof(dest->display))) { 48 render_mode_icon(!get_enable_kc_lang());
54 memcpy(dest->display, source->display, sizeof(dest->display)); 49 render_layer_state();
55 dest->dirty = true; 50 render_host_led_state();
56 } 51 } else {
57} 52 render_logo();
58 53 }
59void iota_gfx_task_user(void) {
60 struct CharacterMatrix matrix;
61
62 matrix_clear(&matrix);
63#ifdef MASTER_RIGHT
64 if (!is_master) {
65#else
66 if (is_master) {
67#endif // MASTER_RIGHT
68 matrix_write(&matrix, read_mode_icon(!get_enable_kc_lang()));
69 matrix_write(&matrix, " ");
70 matrix_write(&matrix, read_layer_state());
71 matrix_write(&matrix, read_host_led_state());
72 } else {
73 matrix_write(&matrix, read_logo());
74 }
75 matrix_update(&display, &matrix);
76} 54}
55#endif // OLED_DRIVER_ENABLE
diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.h b/keyboards/crkbd/keymaps/edvorakjp/oled.h
index 896347aea..d9939c83a 100644
--- a/keyboards/crkbd/keymaps/edvorakjp/oled.h
+++ b/keyboards/crkbd/keymaps/edvorakjp/oled.h
@@ -1,24 +1,17 @@
1#ifndef OLED_USER_H 1#pragma once
2#define OLED_USER_H
3 2
4//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
5#include "ssd1306.h"
6#include "edvorakjp.h" 3#include "edvorakjp.h"
7 4
8//assign the right code to your layers for OLED display
9#define L_BASE 0
10
11extern uint8_t is_master;
12extern bool japanese_mode; 5extern bool japanese_mode;
13 6
14// method prototypes defined in crkbd/lib 7// method prototypes defined in crkbd/lib
8extern const char *read_host_led_state(void);
15extern const char *read_logo(void); 9extern const char *read_logo(void);
10extern const char *read_mode_icon(bool swap);
16 11
17const char *read_mode_icon(bool swap); 12void render_host_led_state(void);
18const char *read_layer_state(void); 13void render_layer_state(void);
19const char *read_host_led_state(void); 14void render_logo(void);
20void matrix_update(struct CharacterMatrix *dest, 15void render_mode_icon(bool is_windows);
21 const struct CharacterMatrix *source); 16oled_rotation_t oled_init_user(oled_rotation_t rotation);
22void iota_gfx_task_user(void); 17void oled_task_user(void);
23
24#endif // OLED_CONFIG_USER_H
diff --git a/keyboards/crkbd/keymaps/edvorakjp/rules.mk b/keyboards/crkbd/keymaps/edvorakjp/rules.mk
index b4f6d2f1f..111f6de27 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
16RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. 16RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
17SWAP_HANDS_ENABLE = no # Enable one-hand typing 17SWAP_HANDS_ENABLE = no # Enable one-hand typing
18TAP_DANCE_ENABLE = yes 18TAP_DANCE_ENABLE = yes
19OLED_DRIVER_ENABLE = yes
19 20
20# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE 21# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
21SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 22SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
22 23
23# If you want to change the display of OLED, you need to change here 24# If you want to change the display of OLED, you need to change here
24SRC += ./lib/glcdfont.c \ 25SRC += ./lib/host_led_state_reader.c \
25 ./lib/logo_reader.c \ 26 ./lib/logo_reader.c \
26 oled.c \ 27 ./lib/mode_icon_reader.c \
27 # ./lib/rgb_state_reader.c \ 28 oled.c
28 # ./lib/layer_state_reader.c \
29 # ./lib/keylogger.c \
30 # ./lib/mode_icon_reader.c \
31 # ./lib/host_led_state_reader.c \
32 # ./lib/timelogger.c \
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/config.h b/keyboards/helix/rev2/keymaps/edvorakjp/config.h
index cd0568f61..ca3b73aa2 100644
--- a/keyboards/helix/rev2/keymaps/edvorakjp/config.h
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/config.h
@@ -1,5 +1,4 @@
1#ifndef CONFIG_USER_H 1#pragma once
2#define CONFIG_USER_H
3 2
4#define SWAP_SCLN 3#define SWAP_SCLN
5 4
@@ -12,15 +11,13 @@
12 11
13// Selection of RGBLIGHT MODE to use. 12// Selection of RGBLIGHT MODE to use.
14#if defined(LED_ANIMATIONS) 13#if defined(LED_ANIMATIONS)
15 //#define RGBLIGHT_EFFECT_BREATHING 14//# define RGBLIGHT_EFFECT_BREATHING
16 //#define RGBLIGHT_EFFECT_RAINBOW_MOOD 15//# define RGBLIGHT_EFFECT_RAINBOW_MOOD
17 //#define RGBLIGHT_EFFECT_RAINBOW_SWIRL 16//# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
18 //#define RGBLIGHT_EFFECT_SNAKE 17//# define RGBLIGHT_EFFECT_SNAKE
19 //#define RGBLIGHT_EFFECT_KNIGHT 18//# define RGBLIGHT_EFFECT_KNIGHT
20 //#define RGBLIGHT_EFFECT_CHRISTMAS 19//# define RGBLIGHT_EFFECT_CHRISTMAS
21 #define RGBLIGHT_EFFECT_STATIC_GRADIENT 20# define RGBLIGHT_EFFECT_STATIC_GRADIENT
22 //#define RGBLIGHT_EFFECT_RGB_TEST 21//# define RGBLIGHT_EFFECT_RGB_TEST
23 //#define RGBLIGHT_EFFECT_ALTERNATING 22//# define RGBLIGHT_EFFECT_ALTERNATING
24#endif 23#endif // LED_ANIMATIONS
25
26#endif /* CONFIG_USER_H */
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c
index 9fba5072c..5de00cb14 100644
--- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c
@@ -1,38 +1,24 @@
1#include QMK_KEYBOARD_H 1#include QMK_KEYBOARD_H
2#include "split_util.h" 2#include "split_util.h"
3#include "keymap_xrows.h" 3#include "keymap_xrows.h"
4#ifdef SSD1306OLED
5 #include "oled.h"
6#endif
7 4
8// keymaps definitions are moved to keymap_Xrows.c. 5// keymaps definitions are moved to keymap_Xrows.c.
9 6
10#ifdef SSD1306OLED
11void matrix_init_keymap(void) {
12 //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
13 iota_gfx_init(!has_usb()); // turns on the display
14}
15
16void matrix_scan_user(void) {
17 iota_gfx_task(); // this is what updates the display continuously
18}
19#endif
20
21#ifdef RGBLIGHT_ENABLE 7#ifdef RGBLIGHT_ENABLE
22uint32_t layer_state_set_keymap(uint32_t state) { 8uint32_t layer_state_set_keymap(uint32_t state) {
23 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); 9 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
24 switch (biton32(state)) { 10 switch (biton32(state)) {
25 case _LOWER: 11 case L_EDVORAKJP_LOWER:
26 rgblight_sethsv_noeeprom_red(); 12 rgblight_sethsv_noeeprom_red();
27 break; 13 break;
28 case _RAISE: 14 case L_EDVORAKJP_RAISE:
29 rgblight_sethsv_noeeprom_blue(); 15 rgblight_sethsv_noeeprom_green();
30 break; 16 break;
31 default: // for any other layers, or the default layer 17 default: // for any other layers, or the default layer
32 rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3); 18 rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3);
33 rgblight_sethsv_red(); 19 rgblight_sethsv_red();
34 break; 20 break;
35 } 21 }
36 return state; 22 return state;
37} 23}
38#endif 24#endif
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c
index f2befc03b..246c2a9fd 100644
--- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c
@@ -1,41 +1,42 @@
1#include "helix.h" 1#include "helix.h"
2#include "keymap_xrows.h" 2#include "keymap_xrows.h"
3 3
4// clang-format off
4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 5const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
5 6 [L_EDVORAKJP_BASE] = LAYOUT_wrapper(
6 [_EDVORAK] = LAYOUT_kc( 7 //,-----------------------------------------------------. ,-----------------------------------------------------.
7 //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. 8 KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS,
8 GRV ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, 9 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
9 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 10 KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS,
10 EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, 11 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
11 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 12 KC_ESC, __EDVORAKJP_BASE_L3__ , __EDVORAKJP_BASE_R3__ , KC_SLSH,
12 ESC ,SCLN, X , C , V , Z , H , J , K , L , B ,SLSH, 13 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
13 //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| 14 __EDVORAKJP_PAGE__ , LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT, __EDVORAKJP_CURSOR__
14 HOME,PGDN,PGUP , END ,TMB1 ,TMB2,TMB3, TMB4,TMB5,TMB6 ,LEFT ,DOWN , UP ,RGHT 15 //`--------------------------------------------------------------' `--------------------------------------------------------------'
15 //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----'
16 ), 16 ),
17 17
18 [_LOWER] = LAYOUT_kc( 18 [L_EDVORAKJP_LOWER] = LAYOUT_wrapper(
19 //,----+----+------+------+------+----. ,----+------+------+-------+----+----. 19 //,-----------------------------------------------------. ,-----------------------------------------------------.
20 , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , 20 XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX,
21 //|----+----+------+------+------+----| |----+------+------+-------+----+----| 21 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
22 F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , 22 __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ ,
23 //|----+----+------+------+------+----| |----+------+------+-------+----+----| 23 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
24 PSCR, , HOME , PGDN , PGUP ,END , LEFT, DOWN , UP , RGHT , , , 24 KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX,
25 //|----+----+------+------+------+----+----. ,----+----+------+------+-------+----+----| 25 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
26 , , , , , , NO , MAC ,TMB7, , , , , 26 __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS, __KC_TRNS_x4__
27 //`----+----+------+------+------+----+----/ \----+----+------+------+-------+----+----' 27 //`--------------------------------------------------------------' `--------------------------------------------------------------'
28 ), 28 ),
29 29
30 [_RAISE] = LAYOUT_kc( 30 [L_EDVORAKJP_RAISE] = LAYOUT_wrapper(
31 //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. 31 //,-----------------------------------------------------. ,-----------------------------------------------------.
32 , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , 32 XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX,
33 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 33 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
34 , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , 34 XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX,
35 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 35 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
36 PSCR, ,HOME ,PGDN ,PGUP ,END , LEFT,DOWN , UP ,RGHT , , , 36 KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX,
37 //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| 37 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
38 , , , , , ,WIN , NO , , , , , , 38 __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS, __KC_TRNS_x4__
39 //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' 39 //`--------------------------------------------------------------' `--------------------------------------------------------------'
40 ) 40 )
41}; 41};
42// clang-format on
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c
index 642ba8c63..6f2a4d371 100644
--- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c
@@ -1,47 +1,48 @@
1#include "helix.h" 1#include "helix.h"
2#include "keymap_xrows.h" 2#include "keymap_xrows.h"
3 3
4// clang-format off
4const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 5const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
5 6 [L_EDVORAKJP_BASE] = LAYOUT_wrapper(
6 [_EDVORAK] = LAYOUT_kc( 7 //,-----------------------------------------------------. ,-----------------------------------------------------.
7 //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. 8 KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24,
8 ESC ,EXLM, AT ,HASH , DLR ,PERC, CIRC,AMPR ,ASTR ,LPRN ,RPRN,BSPC, 9 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
9 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 10 KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS,
10 GRV ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, 11 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
11 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 12 KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS,
12 EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, 13 //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------|
13 //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| 14 KC_ESC, __EDVORAKJP_BASE_L3__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BASE_R3__ , KC_SLSH,
14 TAB ,SCLN, X , C , V , Z , NO , NO , H , J , K , L , B ,SLSH, 15 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
15 //|----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----| 16 __EDVORAKJP_PAGE__ , LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT, __EDVORAKJP_CURSOR__
16 HOME,PGDN,PGUP , END ,TMB1 ,TMB2,TMB3, TMB4,TMB5,TMB6 ,LEFT ,DOWN , UP ,RGHT 17 //`--------------------------------------------------------------' `--------------------------------------------------------------'
17 //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----'
18 ), 18 ),
19 19
20 [_LOWER] = LAYOUT_kc( 20 [L_EDVORAKJP_LOWER] = LAYOUT_wrapper(
21 //,----+----+------+------+------+----. ,----+------+------+-------+----+----. 21 //,-----------------------------------------------------. ,-----------------------------------------------------.
22 PSCR, , , , , , , , , , , , 22 __KC_TRNS_x6__ , __KC_TRNS_x6__ ,
23 //|----+----+------+------+------+----| |----+------+------+-------+----+----| 23 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
24 , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , 24 XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX,
25 //|----+----+------+------+------+----| |----+------+------+-------+----+----| 25 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
26 F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , 26 __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ ,
27 //|----+----+------+------+------+----+----. ,----+----+------+------+-------+----+----| 27 //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------|
28 , , HOME , PGDN , PGUP ,END , , ,LEFT, DOWN , UP , RGHT , , , 28 KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , KC_TRNS, KC_TRNS, __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX,
29 //|----+----+------+------+------+----+----| |----+----+------+------+-------+----+----| 29 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
30 , , , , , , NO , MAC ,TMB7, , , , , 30 __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS, __KC_TRNS_x4__
31 //`----+----+------+------+------+----+----/ \----+----+------+------+-------+----+----' 31 //`--------------------------------------------------------------' `--------------------------------------------------------------'
32 ), 32 ),
33 33
34 [_RAISE] = LAYOUT_kc( 34 [L_EDVORAKJP_RAISE] = LAYOUT_wrapper(
35 //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. 35 //,-----------------------------------------------------. ,-----------------------------------------------------.
36 PSCR, , , , , , , , , , , , 36 __KC_TRNS_x6__ , __KC_TRNS_x6__ ,
37 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 37 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
38 , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , 38 XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX,
39 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 39 //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
40 , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , 40 XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX,
41 //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| 41 //|--------+--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------+--------|
42 , ,HOME ,PGDN ,PGUP ,END , , ,LEFT,DOWN , UP ,RGHT , , , 42 KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , KC_TRNS, KC_TRNS, __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX,
43 //|----+----+-----+-----+-----+----+----| |----+----+-----+-----+-----+----+----| 43 //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
44 , , , , , ,WIN , NO , , , , , , 44 __KC_TRNS_x4__ , KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS, __KC_TRNS_x4__
45 //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' 45 //`--------------------------------------------------------------' `--------------------------------------------------------------'
46 ) 46 )
47}; 47};
48// clang-format on
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h
index d9561d0b7..aae83fc7a 100644
--- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h
@@ -1,5 +1,4 @@
1#ifndef KEYMAP_XROWS_H 1#pragma once
2#define KEYMAP_XROWS_H
3 2
4#include "edvorakjp.h" 3#include "edvorakjp.h"
5/* 4/*
@@ -8,14 +7,7 @@
8 * }; 7 * };
9 */ 8 */
10 9
11#define KC_ KC_TRNS 10#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
12 11
13#define KC_TMB1 KC_LA(TAB) 12#define __KC_TRNS_x4__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
14#define KC_TMB2 KC_LS(SPC) 13#define __KC_TRNS_x6__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
15#define KC_TMB3 TD(TD_LOWER) // act as LOWER when hold, as KC_LANG2(=English) when tapped
16#define KC_TMB4 TD(TD_RAISE) // act as RAISE when hold, as KC_LANG1(=Japanese) when tapped
17#define KC_TMB5 KC_RC(BSPC)
18#define KC_TMB6 KC_RG(ENT)
19#define KC_TMB7 KC_RC(DEL)
20
21#endif
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c
index b931b72b7..4bbab1dc4 100644
--- a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c
@@ -1,72 +1,68 @@
1#include <stdio.h>
1#include <string.h> 2#include <string.h>
2#include "oled.h" 3#include "oled.h"
3 4
4static void render_logo(struct CharacterMatrix *matrix) { 5#ifdef OLED_DRIVER_ENABLE
6void render_host_led_state(void) {
7 char led_state_str[24];
8 uint8_t leds = host_keyboard_leds();
5 9
6 static char logo[] = { 10 bool is_num_lock_enabled = leds & (1 << USB_LED_NUM_LOCK);
7 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94, 11 bool is_caps_lock_enabled = leds & (1 << USB_LED_CAPS_LOCK);
8 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4, 12 bool is_scroll_lock_enabled = leds & (1 << USB_LED_SCROLL_LOCK);
9 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
10 0};
11 matrix_write(matrix, logo);
12}
13 13
14void matrix_update(struct CharacterMatrix *dest, 14 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" : "- ");
15 const struct CharacterMatrix *source) { 15 oled_write(led_state_str, false);
16 if (memcmp(dest->display, source->display, sizeof(dest->display))) {
17 memcpy(dest->display, source->display, sizeof(dest->display));
18 dest->dirty = true;
19 }
20} 16}
21 17
22void render_status(struct CharacterMatrix *matrix) { 18void render_layer_state(void) {
23 19 char layer_name[17];
24 // Render to mode icon 20 oled_write_P(PSTR("Layer: "), false);
25 static char logo[][2][3] = {{{0x95,0x96,0},{0xb5,0xb6,0}},{{0x97,0x98,0},{0xb7,0xb8,0}}};
26 int mode_number = get_enable_kc_lang() ? 0 : 1;
27 matrix_write(matrix, logo[mode_number][0]);
28 matrix_write(matrix, "\n");
29 matrix_write(matrix, logo[mode_number][1]);
30 21
31 // 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 22 switch (biton32(layer_state)) {
32 char buf[40]; 23 case L_EDVORAKJP_BASE:
33 snprintf(buf,sizeof(buf), "Undef-%ld", layer_state); 24 oled_write_ln_P(PSTR("Default"), false);
34 matrix_write_P(matrix, PSTR("\nLayer: ")); 25 break;
35 switch (biton32(layer_state)) { 26 case L_EDVORAKJP_LOWER:
36 case L_BASE: 27 oled_write_ln_P(PSTR("Lower"), false);
37 matrix_write_P(matrix, PSTR("Default")); 28 break;
38 break; 29 case L_EDVORAKJP_RAISE:
39 case _RAISE: 30 oled_write_ln_P(PSTR("Raise"), false);
40 matrix_write_P(matrix, PSTR("Raise")); 31 break;
41 break; 32 default:
42 case _LOWER: 33 snprintf(layer_name, sizeof(layer_name), "Undef-%ld", layer_state);
43 matrix_write_P(matrix, PSTR("Lower")); 34 oled_write_ln(layer_name, false);
44 break; 35 }
45 default: 36}
46 matrix_write(matrix, buf);
47 }
48 37
49 // Host Keyboard LED Status 38void render_logo(void) {
50 char led[40]; 39 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};
51 snprintf(led, sizeof(led), "\n%s %s %s", 40 oled_write_P(helix_logo, false);
52 (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NMLK" : " ",
53 (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ",
54 (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " ");
55 matrix_write(matrix, led);
56} 41}
57 42
58void iota_gfx_task_user(void) { 43void render_mode_icon(bool is_windows) {
59 struct CharacterMatrix matrix; 44 static const char logo[][2][3] = {
45 {{0x95, 0x96, 0}, {0xb5, 0xb6, 0}},
46 {{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
47 };
48 static char mode_icon[10];
60 49
61#if DEBUG_TO_SCREEN 50 snprintf(mode_icon, sizeof(mode_icon), "%s\n%s ", logo[is_windows][0], logo[is_windows][1]);
62 if (debug_enable) { return; } 51 oled_write(mode_icon, false);
63#endif 52}
53
54oled_rotation_t oled_init_user(oled_rotation_t rotation) {
55 // flips the display 180 degrees if offhand
56 return is_keyboard_left() ? rotation : rotation ^ OLED_ROTATION_180;
57}
64 58
65 matrix_clear(&matrix); 59void oled_task_user(void) {
66 if (is_master) { 60 if (is_keyboard_left()) {
67 render_status(&matrix); 61 render_mode_icon(!get_enable_kc_lang());
68 } else { 62 render_layer_state();
69 render_logo(&matrix); 63 render_host_led_state();
70 } 64 } else {
71 matrix_update(&display, &matrix); 65 render_logo();
66 }
72} 67}
68#endif // OLED_DRIVER_ENABLE
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/oled.h b/keyboards/helix/rev2/keymaps/edvorakjp/oled.h
index 421de2d81..994dcb5f5 100644
--- a/keyboards/helix/rev2/keymaps/edvorakjp/oled.h
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/oled.h
@@ -1,19 +1,12 @@
1#ifndef OLED_USER_H 1#pragma once
2#define OLED_USER_H
3 2
4//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
5#include "ssd1306.h"
6#include "edvorakjp.h" 3#include "edvorakjp.h"
7 4
8//assign the right code to your layers for OLED display
9#define L_BASE 0
10
11extern uint8_t is_master;
12extern bool japanese_mode; 5extern bool japanese_mode;
13 6
14void matrix_update(struct CharacterMatrix *dest, 7void render_host_led_state(void);
15 const struct CharacterMatrix *source); 8void render_layer_state(void);
16void render_status(struct CharacterMatrix *matrix); 9void render_logo(void);
17void iota_gfx_task_user(void); 10void render_mode_icon(bool is_windows);
18 11oled_rotation_t oled_init_user(oled_rotation_t rotation);
19#endif // OLED_CONFIG_USER_H 12void oled_task_user(void);
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk b/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk
index 18bef6bf7..59b7acad5 100644
--- a/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk
@@ -18,6 +18,7 @@ TAP_DANCE_ENABLE = yes
18# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.) 18# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
19# LED_ANIMATIONS = yes # LED animations 19# LED_ANIMATIONS = yes # LED animations
20# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone) 20# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
21OLED_SELECT = core
21 22
22# convert Helix-specific options (that represent combinations of standard options) 23# convert Helix-specific options (that represent combinations of standard options)
23# into QMK standard options. 24# into QMK standard options.
diff --git a/keyboards/keebio/iris/keymaps/edvorakjp/config.h b/keyboards/keebio/iris/keymaps/edvorakjp/config.h
index 954d0d3b9..f296e2976 100644
--- a/keyboards/keebio/iris/keymaps/edvorakjp/config.h
+++ b/keyboards/keebio/iris/keymaps/edvorakjp/config.h
@@ -1,5 +1,4 @@
1#ifndef CONFIG_USER_H 1#pragma once
2#define CONFIG_USER_H
3 2
4/* Use I2C or Serial, not both */ 3/* Use I2C or Serial, not both */
5#define USE_SERIAL 4#define USE_SERIAL
@@ -22,5 +21,3 @@
22#define RGBLIGHT_HUE_STEP 10 21#define RGBLIGHT_HUE_STEP 10
23#define RGBLIGHT_SAT_STEP 8 22#define RGBLIGHT_SAT_STEP 8
24#define RGBLIGHT_VAL_STEP 8 23#define RGBLIGHT_VAL_STEP 8
25
26#endif // CONFIG_USER_H
diff --git a/keyboards/keebio/iris/keymaps/edvorakjp/keymap.c b/keyboards/keebio/iris/keymaps/edvorakjp/keymap.c
index be287390d..0c0fc5a74 100644
--- a/keyboards/keebio/iris/keymaps/edvorakjp/keymap.c
+++ b/keyboards/keebio/iris/keymaps/edvorakjp/keymap.c
@@ -7,79 +7,72 @@
7 * }; 7 * };
8 */ 8 */
9 9
10#define KC_ KC_TRNS 10#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
11 11#define __KC_TRNS_x6__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
12#define KC_TMB1 KC_LA(TAB)
13#define KC_TMB2 KC_LS(SPC)
14#define KC_TMB3 TD(TD_LOWER) // act as LOWER when hold, as KC_LANG2(=English) when tapped
15#define KC_TMB4 TD(TD_RAISE) // act as RAISE when hold, as KC_LANG1(=Japanese) when tapped
16#define KC_TMB5 KC_RC(BSPC)
17#define KC_TMB6 KC_RG(ENT)
18#define KC_TMB7 KC_RC(DEL)
19 12
13// clang-format off
20const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 14const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
21 15 [L_EDVORAKJP_BASE] = LAYOUT_wrapper(
22 [_EDVORAK] = LAYOUT_kc( 16 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
23 //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. 17 KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24,
24 GRV ,EXLM, AT ,HASH , DLR ,PERC, CIRC,AMPR ,ASTR ,LPRN ,RPRN,BSPC, 18 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
25 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 19 KC_GRV, __EDVORAKJP_BASE_L1__ , __EDVORAKJP_BASE_R1__ , KC_BSLS,
26 TAB ,QUOT,COMM , DOT , Y , Q , F , G , R , W , P ,BSLS, 20 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
27 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 21 KC_EQL, __EDVORAKJP_BASE_L2__ , __EDVORAKJP_BASE_R2__ , KC_MINS,
28 EQL , A ,LA(O),LG(E),LC(I), U , D ,RS(T),RG(N),RA(S), M ,MINS, 22 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
29 //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| 23 KC_ESC, __EDVORAKJP_BASE_L3__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BASE_R3__ , KC_SLSH,
30 ESC ,SCLN, X , C , V , Z , NO , NO , H , J , K , L , B ,SLSH, 24 //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
31 //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' 25 LA_TAB, LS_SPC,LOWER_TD, RAISE_TD, RC_BSPC, RG_ENT
32 TMB1,TMB2,TMB3, TMB4,TMB5,TMB6 26 // └────────┴────────┴────────┘ └────────┴────────┴────────┘
33 // `----+----+----' `----+----+----'
34 ), 27 ),
35 28
36 [_LOWER] = LAYOUT_kc( 29 [L_EDVORAKJP_LOWER] = LAYOUT_wrapper(
37 //,----+----+------+------+------+----. ,----+------+------+-------+----+----. 30 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
38 , , , , , , , , , , , , 31 __KC_TRNS_x6__ , __KC_TRNS_x6__ ,
39 //|----+----+------+------+------+----| |----+------+------+-------+----+----| 32 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
40 , , LCBR , LBRC , LPRN , , , RPRN , RBRC , RCBR , , , 33 XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_L__ , XXXXXXX, XXXXXXX, __EDVORAKJP_BRACKET_R__ , XXXXXXX, XXXXXXX,
41 //|----+----+------+------+------+----| |----+------+------+-------+----+----| 34 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
42 F1 , F2 ,LA(F3),LG(F4),LC(F5), F6 , F7 ,RS(F8),RG(F9),RA(F10),F11 ,F12 , 35 __EDVORAKJP_FUNCTION_L__ , __EDVORAKJP_FUNCTION_R__ ,
43 //|----+----+------+------+------+----+----. ,----+----+------+------+-------+----+----| 36 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
44 PSCR, , HOME , PGDN , PGUP ,END , , ,LEFT, DOWN , UP , RGHT , , , 37 KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , XXXXXXX, XXXXXXX, __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX,
45 //`----+----+------+------+------+----+----/ \----+----+------+------+-------+----+----' 38 //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
46 , , NO , MAC ,TMB7, 39 KC_TRNS, KC_TRNS, XXXXXXX, KC_MAC, RC_DEL, KC_TRNS
47 // `----+----+----' `----+----+----' 40 // └────────┴────────┴────────┘ └────────┴────────┴────────┘
48 ), 41 ),
49 42
50 [_RAISE] = LAYOUT_kc( 43 [L_EDVORAKJP_RAISE] = LAYOUT_wrapper(
51 //,----+----+-----+-----+-----+----. ,----+-----+-----+-----+----+----. 44 //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
52 , , , , , , , , , , , , 45 __KC_TRNS_x6__ , __KC_TRNS_x6__ ,
53 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 46 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
54 , ,EXLM , AT ,HASH ,DLR , PERC,CIRC ,AMPR ,ASTR , , , 47 XXXXXXX, XXXXXXX, __EDVORAKJP_SYMBOL_L__ , __EDVORAKJP_SYMBOL_R__ , XXXXXXX, XXXXXXX,
55 //|----+----+-----+-----+-----+----| |----+-----+-----+-----+----+----| 48 //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
56 , 1 ,LA(2),LG(3),LC(4), 5 , 6 ,RS(7),RG(8),RA(9), 0 , , 49 XXXXXXX, __EDVORAKJP_NUMBER_L__ , __EDVORAKJP_NUMBER_R__ , XXXXXXX,
57 //|----+----+-----+-----+-----+----+----. ,----+----+-----+-----+-----+----+----| 50 //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
58 PSCR, ,HOME ,PGDN ,PGUP ,END , , ,LEFT,DOWN , UP ,RGHT , , , 51 KC_PSCR, XXXXXXX, __EDVORAKJP_PAGE__ , XXXXXXX, XXXXXXX, __EDVORAKJP_CURSOR__ , XXXXXXX, XXXXXXX,
59 //`----+----+-----+-----+-----+----+----/ \----+----+-----+-----+-----+----+----' 52 //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
60 , ,WIN , NO , , 53 KC_TRNS, KC_TRNS, KC_WIN, XXXXXXX, KC_TRNS, KC_TRNS
61 // `----+----+----' `----+----+----' 54 // └────────┴────────┴────────┘ └────────┴────────┴────────┘
62 ) 55 )
63}; 56};
57// clang-format on
64 58
65void matrix_init_keymap() { 59void matrix_init_keymap() {}
66}
67 60
68#ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT 61#ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT
69uint32_t layer_state_set_keymap(uint32_t state) { 62uint32_t layer_state_set_keymap(uint32_t state) {
70 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); 63 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
71 switch (biton32(state)) { 64 switch (biton32(state)) {
72 case _LOWER: 65 case L_EDVORAKJP_LOWER:
73 rgblight_sethsv_noeeprom_red(); 66 rgblight_sethsv_noeeprom_red();
74 break; 67 break;
75 case _RAISE: 68 case L_EDVORAKJP_RAISE:
76 rgblight_sethsv_noeeprom_blue(); 69 rgblight_sethsv_noeeprom_green();
77 break; 70 break;
78 default: // for any other layers, or the default layer 71 default: // for any other layers, or the default layer
79 rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_GRADIENT + 3); 72 rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 3);
80 get_japanese_mode() ? rgblight_sethsv_noeeprom_red() : rgblight_sethsv_noeeprom_green(); 73 rgblight_sethsv_red();
81 break; 74 break;
82 } 75 }
83 return state; 76 return state;
84} 77}
85#endif 78#endif
diff --git a/users/edvorakjp/edvorakjp.c b/users/edvorakjp/edvorakjp.c
index 892ce4be3..d0cd106ff 100644
--- a/users/edvorakjp/edvorakjp.c
+++ b/users/edvorakjp/edvorakjp.c
@@ -1,32 +1,22 @@
1#include "edvorakjp.h" 1#include "edvorakjp.h"
2 2
3void matrix_init_user(void) { 3void matrix_init_user(void) {
4 edvorakjp_status_init(); 4 edvorakjp_status_init();
5 matrix_init_keymap(); 5 matrix_init_keymap();
6} 6}
7 7
8__attribute__ ((weak)) 8__attribute__((weak)) void matrix_init_keymap() {}
9void matrix_init_keymap() {}
10 9
11uint32_t layer_state_set_user(uint32_t state) { 10uint32_t layer_state_set_user(uint32_t state) {
12 state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); 11 state = update_tri_layer_state(state, L_EDVORAKJP_LOWER, L_EDVORAKJP_RAISE, L_EDVORAKJP_ADJUST);
13 return layer_state_set_keymap(state); 12 return layer_state_set_keymap(state);
14} 13}
15 14
16__attribute__ ((weak)) 15__attribute__((weak)) uint32_t layer_state_set_keymap(uint32_t state) { return state; }
17uint32_t layer_state_set_keymap(uint32_t state) {
18 return state;
19}
20 16
21bool process_record_user(uint16_t keycode, keyrecord_t *record) { 17bool process_record_user(uint16_t keycode, keyrecord_t *record) {
22 return process_record_keymap(keycode, record) &&\ 18 bool process_record_user_result = process_record_keymap(keycode, record) && process_record_edvorakjp_swap_scln(keycode, record) && process_record_edvorakjp_config(keycode, record) && process_record_layer(keycode, record) && process_record_ime(keycode, record);
23 process_record_edvorakjp_swap_scln(keycode, record) &&\ 19 return process_record_user_result;
24 process_record_edvorakjp_config(keycode, record) &&\
25 process_record_layer(keycode, record) &&\
26 process_record_ime(keycode, record);
27} 20}
28 21
29__attribute__ ((weak)) 22__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
30bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
31 return true;
32}
diff --git a/users/edvorakjp/edvorakjp.h b/users/edvorakjp/edvorakjp.h
index 688cdeffb..5f20762c6 100644
--- a/users/edvorakjp/edvorakjp.h
+++ b/users/edvorakjp/edvorakjp.h
@@ -1,54 +1,76 @@
1#ifndef EDVORAKJP 1#pragma once
2#define EDVORAKJP
3 2
4#include "quantum.h" 3#include "quantum.h"
5#include "action_layer.h" 4#include "action_layer.h"
6 5
7#define EECONFIG_EDVORAK (uint8_t *)20 6#define EECONFIG_EDVORAK (uint8_t *)20
8 7
8// clang-format off
9#define __EDVORAKJP_BASE_L1__ KC_QUOTE, KC_COMMA, KC_DOT, KC_Y, KC_Q
10#define __EDVORAKJP_BASE_L2__ KC_A, LALT_T(KC_O), LGUI_T(KC_E), LCTL_T(KC_I), KC_U
11#define __EDVORAKJP_BASE_L3__ KC_SCOLON, KC_X, KC_C, KC_V, KC_Z
12
13#define __EDVORAKJP_BASE_R1__ KC_F, KC_G, KC_R, KC_W, KC_P
14#define __EDVORAKJP_BASE_R2__ KC_D, RSFT_T(KC_T), RGUI_T(KC_N), RALT_T(KC_S), KC_M
15#define __EDVORAKJP_BASE_R3__ KC_H, KC_J, KC_K, KC_L, KC_B
16
17#define __EDVORAKJP_NUMBER_L__ KC_1, LALT_T(KC_2), LGUI_T(KC_3), LCTL_T(KC_4), KC_5
18#define __EDVORAKJP_NUMBER_R__ KC_6, RSFT_T(KC_7), RGUI_T(KC_8), RALT_T(KC_9), KC_0
19
20#define __EDVORAKJP_FUNCTION_L__ KC_F1, KC_F2, LALT_T(KC_F3), LGUI_T(KC_F4), LCTL_T(KC_F5), KC_F6
21#define __EDVORAKJP_FUNCTION_R__ KC_F7, RSFT_T(KC_F8), RGUI_T(KC_F9), RALT_T(KC_F10), KC_F11, KC_F12
22
23#define __EDVORAKJP_SYMBOL_L__ KC_EXCLAIM, KC_AT, KC_HASH, KC_DOLLAR
24#define __EDVORAKJP_SYMBOL_R__ KC_PERCENT, KC_CIRCUMFLEX, KC_AMPERSAND, KC_ASTERISK
25
26#define __EDVORAKJP_BRACKET_L__ KC_LEFT_CURLY_BRACE, KC_LBRACKET, KC_LEFT_PAREN
27#define __EDVORAKJP_BRACKET_R__ KC_RIGHT_PAREN, KC_RBRACKET, KC_RIGHT_CURLY_BRACE
28
29#define __EDVORAKJP_PAGE__ KC_HOME, KC_PGDOWN, KC_PGUP, KC_END
30#define __EDVORAKJP_CURSOR__ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
31
32#define LA_TAB LALT_T(KC_TAB)
33#define LS_SPC LSFT_T(KC_SPACE)
34#define RC_BSPC RCTL_T(KC_BSPACE)
35#define RC_DEL RCTL_T(KC_DELETE)
36#define RG_ENT RGUI_T(KC_ENTER)
37
38#define LOWER_TD TD(TD_EDVORAKJP_LOWER)
39#define RAISE_TD TD(TD_EDVORAKJP_RAISE)
40// clang-format on
41
9extern keymap_config_t keymap_config; 42extern keymap_config_t keymap_config;
10 43
11enum edvorakjp_layers { 44enum edvorakjp_layers {
12 _EDVORAK = 0, 45 L_EDVORAKJP_BASE = 0,
13 _LOWER, 46 L_EDVORAKJP_LOWER,
14 _RAISE, 47 L_EDVORAKJP_RAISE,
15 _ADJUST, 48 L_EDVORAKJP_ADJUST,
16 _EXTRA, 49 L_EDVORAKJP_EXTRA,
17}; 50};
18 51
19enum edvorakjp_keycodes { 52enum edvorakjp_keycodes {
20 EDVORAK = SAFE_RANGE, 53 KC_EDVORAKJP_LOWER = SAFE_RANGE,
21 LOWER, 54 KC_EDVORAKJP_RAISE,
22 RAISE, 55 KC_MAC,
23 KC_MAC, 56 KC_WIN,
24 KC_WIN, 57 KC_JPN,
25 KC_JPN, 58 KC_ENG,
26 KC_ENG, 59 NEW_SAFE_RANGE,
27 NEW_SAFE_RANGE
28}; 60};
29 61
30#define KC_LC(k) LCTL_T(KC_##k)
31#define KC_LS(k) LSFT_T(KC_##k)
32#define KC_LA(k) LALT_T(KC_##k)
33#define KC_LG(k) LGUI_T(KC_##k)
34#define KC_RC(k) RCTL_T(KC_##k)
35#define KC_RS(k) RSFT_T(KC_##k)
36#define KC_RG(k) RGUI_T(KC_##k)
37#define KC_RA(k) RALT_T(KC_##k)
38
39enum tap_dance_code { 62enum tap_dance_code {
40 TD_LOWER = 0, 63 TD_EDVORAKJP_LOWER = 0,
41 TD_RAISE 64 TD_EDVORAKJP_RAISE,
42}; 65};
43 66
44// base 67// base
45void dvorakj_layer_off(void); 68void matrix_init_user(void);
46void matrix_init_user(void); 69void matrix_init_keymap(void);
47void matrix_init_keymap(void);
48uint32_t layer_state_set_user(uint32_t state); 70uint32_t layer_state_set_user(uint32_t state);
49uint32_t layer_state_set_keymap(uint32_t state); 71uint32_t layer_state_set_keymap(uint32_t state);
50bool process_record_user(uint16_t keycode, keyrecord_t *record); 72bool process_record_user(uint16_t keycode, keyrecord_t *record);
51bool process_record_keymap(uint16_t keycode, keyrecord_t *record); 73bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
52 74
53// status 75// status
54void edvorakjp_status_init(void); 76void edvorakjp_status_init(void);
@@ -66,5 +88,3 @@ bool process_record_edvorakjp_swap_scln(uint16_t keycode, keyrecord_t *record);
66bool process_record_edvorakjp_config(uint16_t keycode, keyrecord_t *record); 88bool process_record_edvorakjp_config(uint16_t keycode, keyrecord_t *record);
67bool process_record_layer(uint16_t keycode, keyrecord_t *record); 89bool process_record_layer(uint16_t keycode, keyrecord_t *record);
68bool process_record_ime(uint16_t keycode, keyrecord_t *record); 90bool process_record_ime(uint16_t keycode, keyrecord_t *record);
69
70#endif // EDVORAKJP
diff --git a/users/edvorakjp/edvorakjp_process_record.c b/users/edvorakjp/edvorakjp_process_record.c
index ecc8db936..ac821c393 100644
--- a/users/edvorakjp/edvorakjp_process_record.c
+++ b/users/edvorakjp/edvorakjp_process_record.c
@@ -9,81 +9,81 @@ static uint16_t time_on_pressed;
9 */ 9 */
10bool process_record_edvorakjp_swap_scln(uint16_t keycode, keyrecord_t *record) { 10bool process_record_edvorakjp_swap_scln(uint16_t keycode, keyrecord_t *record) {
11#ifdef SWAP_SCLN 11#ifdef SWAP_SCLN
12 static const uint8_t shift_bits = MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT); 12 static const uint8_t shift_bits = MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT);
13 static uint8_t last_mods_status; 13 static uint8_t last_mods_status;
14 if (keycode == KC_SCLN) { 14 if (keycode == KC_SCLN) {
15 if (record->event.pressed) { 15 if (record->event.pressed) {
16 last_mods_status = get_mods(); 16 last_mods_status = get_mods();
17 17
18 // invert shift_bits 18 // invert shift_bits
19 if (last_mods_status & shift_bits) { 19 if (last_mods_status & shift_bits) {
20 set_mods(last_mods_status & ~shift_bits); 20 set_mods(last_mods_status & ~shift_bits);
21 } else { 21 } else {
22 set_mods(last_mods_status | MOD_BIT(KC_LSFT)); 22 set_mods(last_mods_status | MOD_BIT(KC_LSFT));
23 } 23 }
24 } else { 24 } else {
25 set_mods(last_mods_status); 25 set_mods(last_mods_status);
26 last_mods_status = 0; 26 last_mods_status = 0;
27 }
27 } 28 }
28 }
29#endif 29#endif
30 return true; 30 return true;
31} 31}
32 32
33bool process_record_edvorakjp_config(uint16_t keycode, keyrecord_t *record) { 33bool process_record_edvorakjp_config(uint16_t keycode, keyrecord_t *record) {
34 switch (keycode) { 34 switch (keycode) {
35 case KC_MAC: 35 case KC_MAC:
36 case KC_WIN: 36 case KC_WIN:
37 if (record->event.pressed) { 37 if (record->event.pressed) {
38 set_enable_kc_lang(keycode == KC_MAC); 38 set_enable_kc_lang(keycode == KC_MAC);
39 } 39 }
40 return false; 40 return false;
41 } 41 }
42 return true; 42 return true;
43} 43}
44 44
45bool process_record_layer(uint16_t keycode, keyrecord_t *record) { 45bool process_record_layer(uint16_t keycode, keyrecord_t *record) {
46#if TAP_DANCE_ENABLE != yes 46#if TAP_DANCE_ENABLE != yes
47 switch (keycode) { 47 switch (keycode) {
48 case LOWER: 48 case KC_EDVORAKJP_LOWER:
49 if (record->event.pressed) { 49 if (record->event.pressed) {
50 layer_on(_LOWER); 50 layer_on(L_EDVORAKJP_LOWER);
51 time_on_pressed = record->event.time; 51 time_on_pressed = record->event.time;
52 } else { 52 } else {
53 layer_off(_LOWER); 53 layer_off(L_EDVORAKJP_LOWER);
54 54
55 if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) { 55 if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) {
56 set_japanese_mode(false); 56 set_japanese_mode(false);
57 } 57 }
58 time_on_pressed = 0; 58 time_on_pressed = 0;
59 } 59 }
60 return false; 60 return false;
61 case RAISE: 61 case KC_EDVORAKJP_RAISE:
62 if (record->event.pressed) { 62 if (record->event.pressed) {
63 layer_on(_RAISE); 63 layer_on(L_EDVORAKJP_RAISE);
64 time_on_pressed = record->event.time; 64 time_on_pressed = record->event.time;
65 } else { 65 } else {
66 layer_off(_RAISE); 66 layer_off(L_EDVORAKJP_RAISE);
67 67
68 if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) { 68 if (TIMER_DIFF_16(record->event.time, time_on_pressed) < TAPPING_TERM) {
69 set_japanese_mode(true); 69 set_japanese_mode(true);
70 } 70 }
71 time_on_pressed = 0; 71 time_on_pressed = 0;
72 } 72 }
73 return false; 73 return false;
74 } 74 }
75#endif 75#endif
76 return true; 76 return true;
77} 77}
78 78
79bool process_record_ime(uint16_t keycode, keyrecord_t *record) { 79bool process_record_ime(uint16_t keycode, keyrecord_t *record) {
80 switch (keycode) { 80 switch (keycode) {
81 case KC_JPN: 81 case KC_JPN:
82 case KC_ENG: 82 case KC_ENG:
83 if (record->event.pressed) { 83 if (record->event.pressed) {
84 set_japanese_mode(keycode == KC_JPN); 84 set_japanese_mode(keycode == KC_JPN);
85 } 85 }
86 return false; 86 return false;
87 } 87 }
88 return true; 88 return true;
89} 89}
diff --git a/users/edvorakjp/edvorakjp_status.c b/users/edvorakjp/edvorakjp_status.c
index 128fc3bd2..c8a06c225 100644
--- a/users/edvorakjp/edvorakjp_status.c
+++ b/users/edvorakjp/edvorakjp_status.c
@@ -2,63 +2,55 @@
2#include "edvorakjp.h" 2#include "edvorakjp.h"
3 3
4typedef union { 4typedef union {
5 uint8_t raw; 5 uint8_t raw;
6 struct { 6 struct {
7 bool enable_kc_lang; // for macOS 7 bool enable_kc_lang; // for macOS
8 }; 8 };
9} edvorakjp_config_t; 9} edvorakjp_config_t;
10static edvorakjp_config_t edvorakjp_config; 10static edvorakjp_config_t edvorakjp_config;
11 11
12typedef struct { 12typedef struct {
13 bool japanese_mode; 13 bool japanese_mode;
14} edvorakjp_state_t; 14} edvorakjp_state_t;
15static edvorakjp_state_t edvorakjp_state; 15static edvorakjp_state_t edvorakjp_state;
16 16
17/* 17/*
18 * private methods 18 * private methods
19 */ 19 */
20uint8_t eeconfig_read_edvorakjp(void) { 20uint8_t eeconfig_read_edvorakjp(void) { return eeprom_read_byte(EECONFIG_EDVORAK); }
21 return eeprom_read_byte(EECONFIG_EDVORAK);
22}
23 21
24void eeconfig_update_edvorakjp(uint8_t val) { 22void eeconfig_update_edvorakjp(uint8_t val) { eeprom_update_byte(EECONFIG_EDVORAK, val); }
25 eeprom_update_byte(EECONFIG_EDVORAK, val);
26}
27 23
28/* 24/*
29 * public methods 25 * public methods
30 */ 26 */
31void edvorakjp_status_init(void) { 27void edvorakjp_status_init(void) {
32 edvorakjp_state.japanese_mode = false; 28 edvorakjp_state.japanese_mode = false;
33 edvorakjp_config.raw = eeconfig_read_edvorakjp(); 29 edvorakjp_config.raw = eeconfig_read_edvorakjp();
34} 30}
35 31
36bool get_enable_kc_lang(void) { 32bool get_enable_kc_lang(void) { return edvorakjp_config.enable_kc_lang; }
37 return edvorakjp_config.enable_kc_lang;
38}
39 33
40void set_enable_kc_lang(bool new_state) { 34void set_enable_kc_lang(bool new_state) {
41 edvorakjp_config.enable_kc_lang = new_state; 35 edvorakjp_config.enable_kc_lang = new_state;
42 eeconfig_update_edvorakjp(edvorakjp_config.raw); 36 eeconfig_update_edvorakjp(edvorakjp_config.raw);
43} 37}
44 38
45bool get_japanese_mode(void) { 39bool get_japanese_mode(void) { return edvorakjp_state.japanese_mode; }
46 return edvorakjp_state.japanese_mode;
47}
48 40
49void set_japanese_mode(bool new_state) { 41void set_japanese_mode(bool new_state) {
50 edvorakjp_state.japanese_mode = new_state; 42 edvorakjp_state.japanese_mode = new_state;
51 if (edvorakjp_state.japanese_mode) { 43 if (edvorakjp_state.japanese_mode) {
52 if (edvorakjp_config.enable_kc_lang) { 44 if (edvorakjp_config.enable_kc_lang) {
53 SEND_STRING(SS_TAP(X_LANG1)); 45 SEND_STRING(SS_TAP(X_LANG1));
54 } else { 46 } else {
55 SEND_STRING(SS_LALT("`")); 47 SEND_STRING(SS_LALT("`"));
56 } 48 }
57 } else {
58 if (edvorakjp_config.enable_kc_lang) {
59 SEND_STRING(SS_TAP(X_LANG2));
60 } else { 49 } else {
61 SEND_STRING(SS_LALT("`")); 50 if (edvorakjp_config.enable_kc_lang) {
51 SEND_STRING(SS_TAP(X_LANG2));
52 } else {
53 SEND_STRING(SS_LALT("`"));
54 }
62 } 55 }
63 }
64} 56}
diff --git a/users/edvorakjp/edvorakjp_tap_dance.c b/users/edvorakjp/edvorakjp_tap_dance.c
index d5369f926..cee10de69 100644
--- a/users/edvorakjp/edvorakjp_tap_dance.c
+++ b/users/edvorakjp/edvorakjp_tap_dance.c
@@ -2,72 +2,68 @@
2#include "process_keycode/process_tap_dance.h" 2#include "process_keycode/process_tap_dance.h"
3 3
4enum tap_state { 4enum tap_state {
5 NONE = 0, 5 NONE = 0,
6 SINGLE_TAP = 1, 6 SINGLE_TAP = 1,
7 DOUBLE_TAP = 2, 7 DOUBLE_TAP = 2,
8 HOLD 8 HOLD,
9}; 9};
10 10
11typedef struct { 11typedef struct {
12 uint8_t lower; 12 uint8_t lower;
13 uint8_t raise; 13 uint8_t raise;
14} td_status_t; 14} td_status_t;
15static td_status_t td_status = {NONE, NONE}; 15static td_status_t td_status = {NONE, NONE};
16 16
17int cur_dance(qk_tap_dance_state_t *state) { 17uint8_t cur_dance(qk_tap_dance_state_t *state) {
18 if (state->interrupted || !state->pressed) { 18 if (state->interrupted || !state->pressed) {
19 return state->count == 1 ? SINGLE_TAP : DOUBLE_TAP; 19 return state->count == 1 ? SINGLE_TAP : DOUBLE_TAP;
20 } else { 20 } else {
21 return HOLD; 21 return HOLD;
22 } 22 }
23} 23}
24 24
25void td_lower_finished(qk_tap_dance_state_t *state, void *user_data) { 25void td_lower_finished(qk_tap_dance_state_t *state, void *user_data) {
26 td_status.lower = cur_dance(state); 26 td_status.lower = cur_dance(state);
27 switch(td_status.lower) { 27 switch (td_status.lower) {
28 case SINGLE_TAP: 28 case SINGLE_TAP:
29 set_japanese_mode(false); 29 set_japanese_mode(false);
30 break; 30 break;
31 case DOUBLE_TAP: 31 case DOUBLE_TAP:
32 set_japanese_mode(false); 32 set_japanese_mode(false);
33 register_code(KC_ESC); 33 register_code(KC_ESC);
34 break; 34 break;
35 case HOLD: 35 }
36 break; 36 layer_on(L_EDVORAKJP_LOWER);
37 }
38 layer_on(_LOWER);
39} 37}
40 38
41void td_lower_reset(qk_tap_dance_state_t *state, void *user_data) { 39void td_lower_reset(qk_tap_dance_state_t *state, void *user_data) {
42 if (td_status.lower == DOUBLE_TAP) { 40 switch (td_status.lower) {
43 unregister_code(KC_ESC); 41 case DOUBLE_TAP:
44 } 42 unregister_code(KC_ESC);
45 layer_off(_LOWER); 43 break;
46 td_status.lower = NONE; 44 }
45 layer_off(L_EDVORAKJP_LOWER);
46 td_status.lower = NONE;
47} 47}
48 48
49void td_raise_finished(qk_tap_dance_state_t *state, void *user_data) { 49void td_raise_finished(qk_tap_dance_state_t *state, void *user_data) {
50 td_status.raise = cur_dance(state); 50 td_status.raise = cur_dance(state);
51 switch(td_status.raise) { 51 switch (td_status.raise) {
52 case DOUBLE_TAP: 52 case DOUBLE_TAP:
53 // same as single 53 // same as single
54 case SINGLE_TAP: 54 case SINGLE_TAP:
55 set_japanese_mode(true); 55 set_japanese_mode(true);
56 break; 56 break;
57 case HOLD: 57 }
58 break; 58 layer_on(L_EDVORAKJP_RAISE);
59 }
60 layer_on(_RAISE);
61} 59}
62 60
63void td_raise_reset(qk_tap_dance_state_t *state, void *user_data) { 61void td_raise_reset(qk_tap_dance_state_t *state, void *user_data) {
64 layer_off(_RAISE); 62 layer_off(L_EDVORAKJP_RAISE);
65 td_status.raise = NONE; 63 td_status.raise = NONE;
66} 64}
67 65
68qk_tap_dance_action_t tap_dance_actions[] = { 66qk_tap_dance_action_t tap_dance_actions[] = {
69 [TD_LOWER] = 67 [TD_EDVORAKJP_LOWER] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_lower_finished, td_lower_reset, 150),
70 ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_lower_finished, td_lower_reset, 100), 68 [TD_EDVORAKJP_RAISE] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_raise_finished, td_raise_reset, 150),
71 [TD_RAISE] =
72 ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_raise_finished, td_raise_reset, 100)
73}; 69};