summaryrefslogtreecommitdiff
path: root/keyboards/helix
diff options
context:
space:
mode:
authorepaew <epaew@users.noreply.github.com>2018-07-08 21:11:02 +0900
committerDrashna Jaelre <drashna@live.com>2018-07-08 05:11:02 -0700
commit0b9b2a6376df286d3a5bc44a99274dc196524fc1 (patch)
treec8b6077d6e8a5573583ec200986c45a2762e8cb9 /keyboards/helix
parentf28f5696005bdc51b9d1ff3a59c70bf47b8b897a (diff)
Add edvorakjp keymap for the Helix (rev2) keyboard (#3340)
* add readme.md * add extern declaration of edvorakjp_config to edvorakjp.h * add oled.c * add layout definitions * add keymap.c * add rules.mk * fix rgblight issue: rgblight_setrgb() ignore RGBLIGHT_LIMIT_VAL
Diffstat (limited to 'keyboards/helix')
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/config.h10
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/keymap.c61
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c89
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c103
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h28
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/oled.c87
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/oled.h19
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/readme.md21
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/rules.mk126
9 files changed, 544 insertions, 0 deletions
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/config.h b/keyboards/helix/rev2/keymaps/edvorakjp/config.h
new file mode 100644
index 0000000000..bb569ca5df
--- /dev/null
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/config.h
@@ -0,0 +1,10 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+#undef TAPPING_FORCE_HOLD
+#undef TAPPING_TERM
+#define TAPPING_TERM 120
+
+#endif /* CONFIG_USER_H */
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c
new file mode 100644
index 0000000000..650a39115a
--- /dev/null
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c
@@ -0,0 +1,61 @@
+#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.
+
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+ switch(keycode) {
+ case KC_LOCK:
+ if (record->event.pressed) {
+ if (edvorakjp_config.enable_kc_lang) {
+ SEND_STRING( SS_LCTRL(SS_LSFT(SS_TAP(X_POWER))) );
+ } else {
+ SEND_STRING( SS_LGUI("l") );
+ }
+ }
+ return false;
+ }
+ return true;
+}
+
+#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(1);
+ switch (biton32(state)) {
+ case _EDVORAKJ1:
+ case _EDVORAKJ2:
+ // _EDVORAKJ1 & J2 are same colored
+ rgblight_sethsv_noeeprom_white();
+ break;
+ case _LOWER:
+ rgblight_sethsv_noeeprom_red();
+ break;
+ case _RAISE:
+ rgblight_sethsv_noeeprom_blue();
+ break;
+ case _ADJUST:
+ rgblight_sethsv_noeeprom_green();
+ break;
+ default: // for any other layers, or the default layer
+ rgblight_mode_noeeprom(28);
+ rgblight_sethsv_noeeprom_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
new file mode 100644
index 0000000000..d8257d81f8
--- /dev/null
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_4rows.c
@@ -0,0 +1,89 @@
+#include "helix.h"
+#include "keymap_xrows.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_EDVORAK] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ LBRC,RBRC,COMM,DOT , P , Y , F , G , R , W , Q ,BSLS,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ EQL , A , O , E , I , U , D , T , N , S , M ,MINS,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ QUOT,SCLN, X , C , V , Z , B , H , J , K , L ,SLSH,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ LEFT,DOWN, UP ,RGHT,TMB1,TMB2,TMB3, TMB6,TMB7,TMB8,LEFT,DOWN, UP ,RGHT
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ ),
+
+ [_EDVORAKJ1] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ , AI , OU , EI , , , , , , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , , , , , , , , Y , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ ,ANN ,ONN ,ENN ,INN ,UNN , , , , , , ,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ , , , , , , , , , , , , ,
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ ),
+
+ [_EDVORAKJ2] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ , AI , OU , EI , , , , , , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , , , , , , Y , , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ ,ANN ,ONN ,ENN ,INN ,UNN , , , , , , ,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ , , , , , , , , , , , , ,
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ ),
+
+ [_QWERTY] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ EQL , Q , W , E , R , T , Y , U , I , O , P ,MINS,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ LBRC, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ RBRC, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH,BSLS,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ , , , , , , , , , , , , ,
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ ),
+
+ [_LOWER] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ F1 , F2 , F3 , F4 , F5 ,LCBR, RCBR, 7 , 8 , 9 ,MINS,SLSH,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ F6 , F7 , F8 , F9 ,F10 ,LPRN, RPRN, 4 , 5 , 6 ,PLUS,ASTR,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ F11 ,F12 ,PSCR,SLCK,PAUS,LBRC, RBRC, 1 , 2 , 3 , NO , NO ,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ HOME,PGDN,PGUP,END , , , , ,ESC , 0 ,HOME,PGDN,PGUP,END
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ ),
+
+ [_RAISE] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 ,F12 ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, NO ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , NO ,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ HOME,PGDN,PGUP,END ,TMB9,ESC , , , , ,HOME,PGDN,PGUP,END
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ ),
+
+ [_ADJUST] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ , , , ,EXTOFF, , ,EXTON, , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ ,RST ,DBUG,RTOG,WIN , , ,MAC ,QWER,EDJP, , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , , , , , , , , , , ,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ , , , , , , , , , , , , ,
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ )
+};
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c
new file mode 100644
index 0000000000..9116b39665
--- /dev/null
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_5rows.c
@@ -0,0 +1,103 @@
+#include "helix.h"
+#include "keymap_xrows.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_EDVORAK] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ GRV ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,BSPC,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ LBRC,RBRC,COMM,DOT , P , Y , F , G , R , W , Q ,BSLS,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ EQL , A , O , E , I , U , D , T , N , S , M ,MINS,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ QUOT,SCLN, X , C , V , Z ,TMB4, TMB5, B , H , J , K , L ,SLSH,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ LEFT,DOWN, UP ,RGHT,TMB1,TMB2,TMB3, TMB6,TMB7,TMB8,LEFT,DOWN, UP ,RGHT
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ ),
+
+ [_EDVORAKJ1] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ , , , , , , , , , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , AI , OU , EI , , , , , , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , , , , , , , , Y , , ,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ ,ANN ,ONN ,ENN ,INN ,UNN , , , , , , , , ,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ , , , , , , , , , , , , ,
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ ),
+
+ [_EDVORAKJ2] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ , , , , , , , , , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , AI , OU , EI , , , , , , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , , , , , , Y , , , , ,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ ,ANN ,ONN ,ENN ,INN ,UNN , , , , , , , , ,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ , , , , , , , , , , , , ,
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ ),
+
+ [_QWERTY] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ GRV ,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,BSPC,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ EQL , Q , W , E , R , T , Y , U , I , O , P ,MINS,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ LBRC, A , S , D , F , G , H , J , K , L ,SCLN,QUOT,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ RBRC, Z , X , C , V , B , , , N , M ,COMM,DOT ,SLSH,BSLS,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ , , , , , , , , , , , , ,
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ ),
+
+ [_LOWER] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ , , , , , , , ,SLSH,ASTR, , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ F1 , F2 , F3 , F4 , F5 ,LCBR, RCBR, 7 , 8 , 9 ,MINS, ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ F6 , F7 , F8 , F9 ,F10 ,LPRN, RPRN, 4 , 5 , 6 ,PLUS, ,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ F11 ,F12 ,PSCR,SLCK,PAUS,LBRC,LOCK, ,RBRC, 1 , 2 , 3 , , ,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ HOME,PGDN,PGUP,END ,TMB9, , , , , 0 ,HOME,PGDN,PGUP,END
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ ),
+
+ [_RAISE] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ , , , , , , , ,SLSH,ASTR, , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ F1 , F2 , F3 , F4 , F5 ,LCBR, RCBR, 7 , 8 , 9 ,MINS, ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ F6 , F7 , F8 , F9 ,F10 ,LPRN, RPRN, 4 , 5 , 6 ,PLUS, ,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ F11 ,F12 ,PSCR,SLCK,PAUS,LBRC,LOCK, ,RBRC, 1 , 2 , 3 , , ,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ HOME,PGDN,PGUP,END ,TMB9, , , , , 0 ,HOME,PGDN,PGUP,END
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ ),
+
+ [_ADJUST] = LAYOUT_kc(
+ //,----+----+----+----+----+----. ,----+----+----+----+----+----.
+ , , , , , , , , , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ , , , ,EXTOFF, , ,EXTON, , , , ,
+ //|----+----+----+----+----+----| |----+----+----+----+----+----|
+ ,RST ,DBUG,RTOG,WIN , , ,MAC ,QWER,EDJP, , ,
+ //|----+----+----+----+----+----+----. ,----|----+----+----+----+----+----|
+ , , , , , , , , , , , , , ,
+ //|----+----+----+----+----+----+----| |----+----+----+----+----+----+----|
+ , , , , , , , , , , , , ,
+ //`----+----+----+----+----+----+----/ \----+----+----+----+----+----+----'
+ )
+};
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h
new file mode 100644
index 0000000000..6a0e581024
--- /dev/null
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap_xrows.h
@@ -0,0 +1,28 @@
+#ifndef KEYMAP_XROWS_H
+#define KEYMAP_XROWS_H
+
+#include "edvorakjp.h"
+
+enum custom_keycodes {
+ KC_LOCK = NEW_SAFE_RANGE,
+};
+
+#define KC_ KC_TRNS
+
+#define KC_TMB1 LGUI_T(KC_TAB)
+#define KC_TMB2 LSFT_T(KC_SPC)
+#define KC_TMB3 LOWER // act as LOWER when hold, as KC_LANG2(=English) when tapped
+#define KC_TMB4 LCTL_T(KC_ESC)
+#define KC_TMB5 RSFT_T(KC_DEL)
+#define KC_TMB6 RAISE // act as RAISE when hold, as KC_LANG1(=Japanese) when tapped
+#define KC_TMB7 RCTL_T(KC_BSPC)
+#define KC_TMB8 RALT_T(KC_ENT)
+#define KC_TMB9 LGUI(KC_TAB)
+
+#define KC_RST RESET
+#define KC_DBUG DEBUG
+#define KC_RTOG RGB_TOG
+#define KC_EDJP EDVORAK
+#define KC_QWER QWERTY
+
+#endif
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c
new file mode 100644
index 0000000000..5ced1d4fad
--- /dev/null
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c
@@ -0,0 +1,87 @@
+#include <string.h>
+#include "oled.h"
+
+static void render_logo(struct CharacterMatrix *matrix) {
+
+ static char logo[] = {
+ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
+ 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
+ 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,
+ 0};
+ matrix_write(matrix, logo);
+}
+
+void matrix_update(struct CharacterMatrix *dest,
+ const struct CharacterMatrix *source) {
+ if (memcmp(dest->display, source->display, sizeof(dest->display))) {
+ memcpy(dest->display, source->display, sizeof(dest->display));
+ dest->dirty = true;
+ }
+}
+
+void 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}}};
+ if (edvorakjp_config.enable_kc_lang) {
+ matrix_write(matrix, logo[0][0]);
+ matrix_write_P(matrix, PSTR("\n"));
+ matrix_write(matrix, logo[0][1]);
+ } else {
+ matrix_write(matrix, logo[1][0]);
+ matrix_write_P(matrix, PSTR("\n"));
+ matrix_write(matrix, logo[1][1]);
+ }
+
+ // 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,
+ default_layer_state == 1UL<<_EDVORAK ? PSTR("EDVORAK") : PSTR("QWERTY")
+ );
+ break;
+ case _EDVORAKJ1:
+ case _EDVORAKJ2:
+ matrix_write_P(matrix, PSTR("JP_EXT"));
+ break;
+ case _RAISE:
+ matrix_write_P(matrix, PSTR("Raise"));
+ break;
+ case _LOWER:
+ matrix_write_P(matrix, PSTR("Lower"));
+ break;
+ case _ADJUST:
+ matrix_write_P(matrix, PSTR("Adjust"));
+ break;
+ default:
+ matrix_write(matrix, buf);
+ }
+
+ // Host Keyboard LED Status
+ char led[40];
+ snprintf(led, sizeof(led), "\n%s %s %s %s",
+ edvorakjp_config.enable_jp_extra_layer && japanese_mode ? "EXT" : " ",
+ (host_keyboard_leds() & (1<<USB_LED_NUM_LOCK)) ? "NMLK" : " ",
+ (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ? "CAPS" : " ",
+ (host_keyboard_leds() & (1<<USB_LED_SCROLL_LOCK)) ? "SCLK" : " ");
+ matrix_write(matrix, led);
+}
+
+void iota_gfx_task_user(void) {
+ struct CharacterMatrix matrix;
+
+#if DEBUG_TO_SCREEN
+ if (debug_enable) { return; }
+#endif
+
+ matrix_clear(&matrix);
+ if (is_master) {
+ render_status(&matrix);
+ } else {
+ render_logo(&matrix);
+ }
+ matrix_update(&display, &matrix);
+}
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/oled.h b/keyboards/helix/rev2/keymaps/edvorakjp/oled.h
new file mode 100644
index 0000000000..421de2d817
--- /dev/null
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/oled.h
@@ -0,0 +1,19 @@
+#ifndef OLED_USER_H
+#define OLED_USER_H
+
+//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;
+
+void matrix_update(struct CharacterMatrix *dest,
+ const struct CharacterMatrix *source);
+void render_status(struct CharacterMatrix *matrix);
+void iota_gfx_task_user(void);
+
+#endif // OLED_CONFIG_USER_H
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/readme.md b/keyboards/helix/rev2/keymaps/edvorakjp/readme.md
new file mode 100644
index 0000000000..dd406523d2
--- /dev/null
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/readme.md
@@ -0,0 +1,21 @@
+# edvorakjp
+
+Epaew's Enhanced Dvorak layout for Japanese Programmer
+see [here](/users/edvorakjp) for more informations.
+
+## License
+
+Copyright 2018 Ryo Maeda epaew.333@gmail.com @epaew
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk b/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk
new file mode 100644
index 0000000000..d8fc35c486
--- /dev/null
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/rules.mk
@@ -0,0 +1,126 @@
+# Build Options
+# change to "no" to disable the options, or define them in the Makefile in
+# the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no # Mouse keys(+4700)
+EXTRAKEY_ENABLE = no # Audio control and System control(+450)
+CONSOLE_ENABLE = no # Console for debug(+400)
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+MIDI_ENABLE = no # MIDI controls
+AUDIO_ENABLE = no # Audio output on port C6
+UNICODE_ENABLE = no # Unicode
+BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
+SWAP_HANDS_ENABLE = no # Enable one-hand typing
+
+define HELIX_CUSTOMISE_MSG
+ $(info Helix customize)
+ $(info - OLED_ENABLE=$(OLED_ENABLE))
+ $(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
+ $(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
+ $(info - LED_ANIMATION=$(LED_ANIMATIONS))
+ $(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
+endef
+
+# Helix keyboard customize
+# you can edit follows 7 Variables
+# jp: 以下の7つの変数を必要に応じて編集します。
+HELIX_ROWS = 5 # Helix Rows is 4 or 5
+OLED_ENABLE = no # OLED_ENABLE
+LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" instead of "common/glcdfont.c"
+LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
+LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
+LED_ANIMATIONS = yes # LED animations
+IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
+
+#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
+#### Do not enable these with audio at the same time.
+
+### Helix keyboard 'edvorakjp' keymap: convenient command line option
+## make HELIX=<options> helix:edvorakjp
+## option= oled | back | under | na | ios
+## ex.
+## make HELIX=oled helix:edvorakjp
+## make HELIX=oled,back helix:edvorakjp
+## make HELIX=oled,under helix:edvorakjp
+## make HELIX=oled,back,na helix:edvorakjp
+## make HELIX=oled,back,ios helix:edvorakjp
+##
+ifneq ($(strip $(HELIX)),)
+ ifeq ($(findstring oled,$(HELIX)), oled)
+ OLED_ENABLE = yes
+ endif
+ ifeq ($(findstring back,$(HELIX)), back)
+ LED_BACK_ENABLE = yes
+ else ifeq ($(findstring under,$(HELIX)), under)
+ LED_UNDERGLOW_ENABLE = yes
+ endif
+ ifeq ($(findstring na,$(HELIX)), na)
+ LED_ANIMATIONS = no
+ endif
+ ifeq ($(findstring ios,$(HELIX)), ios)
+ IOS_DEVICE_ENABLE = yes
+ endif
+ $(eval $(call HELIX_CUSTOMISE_MSG))
+ $(info )
+endif
+
+# Uncomment these for checking
+# jp: コンパイル時にカスタマイズの状態を表示したい時はコメントをはずします。
+# $(eval $(call HELIX_CUSTOMISE_MSG))
+# $(info )
+
+ifeq ($(strip $(HELIX_ROWS)), 4)
+ SRC += keymap_4rows.c
+else ifeq ($(strip $(HELIX_ROWS)), 5)
+ SRC += keymap_5rows.c
+else
+ $(error HELIX_ROWS = $(strip $(HELIX_ROWS)) is unexpected value)
+endif
+OPT_DEFS += -DHELIX_ROWS=$(strip $(HELIX_ROWS))
+
+ifeq ($(strip $(LED_BACK_ENABLE)), yes)
+ RGBLIGHT_ENABLE = yes
+ OPT_DEFS += -DRGBLED_BACK
+ ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
+ $(eval $(call HELIX_CUSTOMISE_MSG))
+ $(error LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE both 'yes')
+ endif
+else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
+ RGBLIGHT_ENABLE = yes
+ OPT_DEFS += -DRGBLED_BACK
+else
+ RGBLIGHT_ENABLE = no
+endif
+
+ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
+ OPT_DEFS += -DIOS_DEVICE_ENABLE
+endif
+
+ifeq ($(strip $(LED_ANIMATIONS)), yes)
+ OPT_DEFS += -DRGBLIGHT_ANIMATIONS
+endif
+
+ifeq ($(strip $(OLED_ENABLE)), yes)
+ OPT_DEFS += -DOLED_ENABLE
+ SRC += oled.c
+endif
+
+ifeq ($(strip $(LOCAL_GLCDFONT)), yes)
+ OPT_DEFS += -DLOCAL_GLCDFONT
+endif
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+ include ../../../../Makefile
+endif
+
+# Uncomment these for debugging
+# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
+# $(info -- OPT_DEFS=$(OPT_DEFS))
+# $(info )