From 155375ea3267c90e006fa04fe78106ce3c5e7c9f Mon Sep 17 00:00:00 2001
From: MakotoKurauchi <pluis@me.com>
Date: Sun, 1 Jul 2018 05:12:17 +0900
Subject: Helix shrink config (#3268)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* add some comment about Helix customize and auto-setup RGBLIGHT_LIMIT_VAL

* add define USB_MAX_POWER_CONSUMPTION

* Helix keyboard OLED, RGBLIGHT enable/disable control integrate into rules.mk

rules.mk: add 4 Variables for compile control.

   # Helix keyboard customize
   # you can edit follows 4 Variables
   #  jp: 以下の4つの変数を必要に応じて編集します。
   OLED_ENABLE = no            # OLED_ENABLE
   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

config.h: auto set RGBLED_NUM by HELIX_ROWS and rules.mk's define

* HELIX_ROWS define move from config.h to rules.mk

* add readme.md

* rename readme.md to readme_jp.md

* add readme.md and modify readme_jp.md

* change helix/ssd1306.c for select glcdfont.c position

* add variable LOCAL_GLCDFONT into each keymaps rules.mk

* Add iPhone/iPad LED support to Helix default keymap

* renumber _ADJUST for shrink program size

* Fix Helix i2c wrong bit rate

* add helix serial debug code

* serial debug macro move from config.h to serial.h

* helix serial.c debugging...

* refine debug macros

* add some comments

* add SELECT_SERIAL_SPEED

* add comments

* debugging sync_send/sync_recv

* add very high speed

* fix sync_send/sync_recv

* fix com. start and switch send/recv

* debug mode off

* remove debug codes

* Shrinked config.h
---
 keyboards/helix/rev2/config.h                   |  91 +++++++++++++++++++
 keyboards/helix/rev2/keymaps/default/config.h   |  95 +-------------------
 keyboards/helix/rev2/keymaps/five_rows/config.h |  96 +-------------------
 keyboards/helix/rev2/keymaps/five_rows/rules.mk |  12 ++-
 keyboards/helix/rev2/keymaps/froggy/config.h    |  98 +-------------------
 keyboards/helix/rev2/keymaps/led_test/config.h  |  73 +--------------
 keyboards/helix/rev2/keymaps/led_test/rules.mk  | 113 +++++++++++++++++++++---
 7 files changed, 207 insertions(+), 371 deletions(-)

(limited to 'keyboards/helix')

diff --git a/keyboards/helix/rev2/config.h b/keyboards/helix/rev2/config.h
index e8ad1b9be..bb8e566b8 100644
--- a/keyboards/helix/rev2/config.h
+++ b/keyboards/helix/rev2/config.h
@@ -30,7 +30,45 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define DESCRIPTION     A split keyboard for the cheap makers
 
 
+#define PREVENT_STUCK_MODIFIERS
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 100
+
+/* Use I2C or Serial */
+#define USE_I2C
+#define USE_SERIAL
+#define USE_SERIAL_PD2
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+// Helix keyboard OLED support
+//      see ./rules.mk: OLED_ENABLE=yes or no
+#ifdef OLED_ENABLE
+  #define SSD1306OLED
+#endif
+
+/* Select rows configuration */
+// Rows are 4 or 5
+// #define HELIX_ROWS 5 see ./rules.mk
+
+/* key matrix size */
+// Rows are doubled-up
+#if  HELIX_ROWS == 4
+  #define MATRIX_ROWS 8
+  #define MATRIX_ROW_PINS { D4, C6, D7, E6 }
+#elif HELIX_ROWS == 5
+  #define MATRIX_ROWS 10
+  #define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
+#else
+  #error "expected HELIX_ROWS 4 or 5"
+#endif
+
 // wiring of each half
+#define MATRIX_COLS 7
 #define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
 // #define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
 
@@ -60,6 +98,59 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define ws2812_PORTREG  PORTD
 #define ws2812_DDRREG   DDRD
 
+// Helix keyboard RGB LED support
+//#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no
+//    see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
+#ifdef RGBLED_BACK
+  #if HELIX_ROWS == 4
+    #define RGBLED_NUM 25
+  #elif HELIX_ROWS == 5
+    #define RGBLED_NUM 32
+  #endif
+#else
+  #define RGBLED_NUM 6
+#endif
+
+#ifndef IOS_DEVICE_ENABLE
+  #if RGBLED_NUM <= 6
+    #define RGBLIGHT_LIMIT_VAL 255
+  #else
+    #if HELIX_ROWS == 5
+      #define RGBLIGHT_LIMIT_VAL 120
+    #else
+      #define RGBLIGHT_LIMIT_VAL 130
+    #endif
+  #endif
+  #define RGBLIGHT_VAL_STEP 17
+#else
+  #if RGBLED_NUM <= 6
+    #define RGBLIGHT_LIMIT_VAL 90
+  #else
+    #if HELIX_ROWS == 5
+      #define RGBLIGHT_LIMIT_VAL 35
+    #else
+      #define RGBLIGHT_LIMIT_VAL 45
+    #endif
+  #endif
+  #define RGBLIGHT_VAL_STEP 4
+#endif
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+
+#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
+// USB_MAX_POWER_CONSUMPTION value for Helix keyboard
+//  120  RGBoff, OLEDoff
+//  120  OLED
+//  330  RGB 6
+//  300  RGB 32
+//  310  OLED & RGB 32
+  #define USB_MAX_POWER_CONSUMPTION 400
+#else
+  // fix iPhone and iPad power adapter issue
+  // iOS device need lessthan 100
+  #define USB_MAX_POWER_CONSUMPTION 100
+#endif
+
 /*
  * Feature disable options
  *  These options are also useful to firmware size reduction.
diff --git a/keyboards/helix/rev2/keymaps/default/config.h b/keyboards/helix/rev2/keymaps/default/config.h
index 17c4a30b3..0e7967c73 100644
--- a/keyboards/helix/rev2/keymaps/default/config.h
+++ b/keyboards/helix/rev2/keymaps/default/config.h
@@ -23,99 +23,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include "../../config.h"
 
-/* Use I2C or Serial */
-
-#define USE_I2C
-#define USE_SERIAL
-//#define USE_MATRIX_I2C
-
-/* Select hand configuration */
-
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-// Helix keyboard OLED support
-//      see ./rules.mk: OLED_ENABLE=yes or no
-#ifdef OLED_ENABLE
-  #define SSD1306OLED
-#endif
-
-/* Select rows configuration */
-// Rows are 4 or 5
-// #define HELIX_ROWS 5 see ./rules.mk
-
-/* key matrix size */
-// Rows are doubled-up
-#if  HELIX_ROWS == 4
-  #define MATRIX_ROWS 8
-  #define MATRIX_COLS 7
-  #define MATRIX_ROW_PINS { D4, C6, D7, E6 }
-#elif HELIX_ROWS == 5
-  #define MATRIX_ROWS 10
-  #define MATRIX_COLS 7
-  #define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
-#else
-  #error "expected HELIX_ROWS 4 or 5"
-#endif
-
-#define USE_SERIAL_PD2
-
-#define PREVENT_STUCK_MODIFIERS
-#define TAPPING_FORCE_HOLD
-#define TAPPING_TERM 100
-
-// Helix keyboard RGB LED support
-//#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no
-//    see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
-#ifdef RGBLED_BACK
-  #if HELIX_ROWS == 4
-    #define RGBLED_NUM 25
-  #elif HELIX_ROWS == 5
-    #define RGBLED_NUM 32
-  #endif
-#else
-  #define RGBLED_NUM 6
-#endif
-
-#ifndef IOS_DEVICE_ENABLE
-  #if RGBLED_NUM <= 6
-    #define RGBLIGHT_LIMIT_VAL 255
-  #else
-    #if HELIX_ROWS == 5
-      #define RGBLIGHT_LIMIT_VAL 120
-    #else
-      #define RGBLIGHT_LIMIT_VAL 130
-    #endif
-  #endif
-  #define RGBLIGHT_VAL_STEP 17
-#else
-  #if RGBLED_NUM <= 6
-    #define RGBLIGHT_LIMIT_VAL 90
-  #else
-    #if HELIX_ROWS == 5
-      #define RGBLIGHT_LIMIT_VAL 35
-    #else
-      #define RGBLIGHT_LIMIT_VAL 45
-    #endif
-  #endif
-  #define RGBLIGHT_VAL_STEP 4
-#endif
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-
-#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
-// USB_MAX_POWER_CONSUMPTION value for Helix keyboard
-//  120  RGBoff, OLEDoff
-//  120  OLED
-//  330  RGB 6
-//  300  RGB 32
-//  310  OLED & RGB 32
-  #define USB_MAX_POWER_CONSUMPTION 400
-#else
-  // fix iPhone and iPad power adapter issue
-  // iOS device need lessthan 100
-  #define USB_MAX_POWER_CONSUMPTION 100
-#endif
+// place overrides here
 
 #endif /* CONFIG_USER_H */
diff --git a/keyboards/helix/rev2/keymaps/five_rows/config.h b/keyboards/helix/rev2/keymaps/five_rows/config.h
index 10d9fc1c4..0e7967c73 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/config.h
+++ b/keyboards/helix/rev2/keymaps/five_rows/config.h
@@ -23,100 +23,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include "../../config.h"
 
-/* Use I2C or Serial */
-
-#define USE_I2C
-#define USE_SERIAL
-//#define USE_MATRIX_I2C
-
-/* Select hand configuration */
-
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-// Helix keyboard OLED support
-//      see ./rules.mk: OLED_ENABLE=yes or no
-#ifdef OLED_ENABLE
-  #define SSD1306OLED
-#endif
-
-/* Select rows configuration */
-#define HELIX_ROWS 5
-
-/* key matrix size */
-// Rows are doubled-up
-#if  HELIX_ROWS == 4
-  #define MATRIX_ROWS 8
-  #define MATRIX_COLS 7
-  #define MATRIX_ROW_PINS { D4, C6, D7, E6 }
-#elif HELIX_ROWS == 5
-  #define MATRIX_ROWS 10
-  #define MATRIX_COLS 7
-  #define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
-#else
-  #error "expected HELIX_ROWS 4 or 5"
-#endif
-
-#define USE_SERIAL_PD2
-
-#define PREVENT_STUCK_MODIFIERS
-#define TAPPING_FORCE_HOLD
-#define TAPPING_TERM 100
-
-#undef RGBLED_NUM
-// Helix keyboard RGB LED support
-//#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no
-//    see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
-#ifdef RGBLED_BACK
-  #if HELIX_ROWS == 4
-    #define RGBLED_NUM 25
-  #elif HELIX_ROWS == 5
-    #define RGBLED_NUM 32
-  #endif
-#else
-  #define RGBLED_NUM 6
-#endif
-
-#ifndef IOS_DEVICE_ENABLE
-  #if RGBLED_NUM <= 6
-    #define RGBLIGHT_LIMIT_VAL 255
-  #else
-    #if HELIX_ROWS == 5
-      #define RGBLIGHT_LIMIT_VAL 120
-    #else
-      #define RGBLIGHT_LIMIT_VAL 130
-    #endif
-  #endif
-  #define RGBLIGHT_VAL_STEP 17
-#else
-  #if RGBLED_NUM <= 6
-    #define RGBLIGHT_LIMIT_VAL 90
-  #else
-    #if HELIX_ROWS == 5
-      #define RGBLIGHT_LIMIT_VAL 35
-    #else
-      #define RGBLIGHT_LIMIT_VAL 45
-    #endif
-  #endif
-  #define RGBLIGHT_VAL_STEP 4
-#endif
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-
-
-#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
-// USB_MAX_POWER_CONSUMPTION value for Helix keyboard
-//  120  RGBoff, OLEDoff
-//  120  OLED
-//  330  RGB 6
-//  300  RGB 32
-//  310  OLED & RGB 32
-  #define USB_MAX_POWER_CONSUMPTION 400
-#else
-  // fix iPhone and iPad power adapter issue
-  // iOS device need lessthan 100
-  #define USB_MAX_POWER_CONSUMPTION 100
-#endif
+// place overrides here
 
 #endif /* CONFIG_USER_H */
diff --git a/keyboards/helix/rev2/keymaps/five_rows/rules.mk b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
index 53a581ec2..53a00d8d4 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/rules.mk
+++ b/keyboards/helix/rev2/keymaps/five_rows/rules.mk
@@ -27,8 +27,9 @@ define HELIX_CUSTOMISE_MSG
 endef
 
 # Helix keyboard customize
-# you can edit follows 6 Variables
-#  jp: 以下の6つの変数を必要に応じて編集します。
+# 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" insted of "common/glcdfont.c"
 LED_BACK_ENABLE = no        # LED backlight (Enable WS2812 RGB underlight.)
@@ -73,6 +74,13 @@ endif
 # $(eval $(call HELIX_CUSTOMISE_MSG))
 # $(info )
 
+ifneq ($(strip $(HELIX_ROWS)), 4)
+ifneq ($(strip $(HELIX_ROWS)), 5)
+$(error HELIX_ROWS = $(strip $(HELIX_ROWS)) is unexpected value)
+endif
+endif
+OPT_DEFS += -DHELIX_ROWS=$(strip $(HELIX_ROWS))
+
 ifeq ($(strip $(LED_BACK_ENABLE)), yes)
   RGBLIGHT_ENABLE = yes
   OPT_DEFS += -DRGBLED_BACK
diff --git a/keyboards/helix/rev2/keymaps/froggy/config.h b/keyboards/helix/rev2/keymaps/froggy/config.h
index 19718a458..8161d4a25 100644
--- a/keyboards/helix/rev2/keymaps/froggy/config.h
+++ b/keyboards/helix/rev2/keymaps/froggy/config.h
@@ -23,101 +23,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include "../../config.h"
 
-/* Use I2C or Serial */
-
-#define USE_I2C
-#define USE_SERIAL
-//#define USE_MATRIX_I2C
-
-/* Select hand configuration */
-
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-// Helix keyboard OLED support
-//      see ./rules.mk: OLED_ENABLE=yes or no
-#ifdef OLED_ENABLE
-  #define SSD1306OLED
-#endif
-
-/* Select rows configuration */
-// Rows are 4 or 5
-// #define HELIX_ROWS 5 see ./rules.mk
-
-/* key matrix size */
-// Rows are doubled-up
-#if  HELIX_ROWS == 4
-  #define MATRIX_ROWS 8
-  #define MATRIX_COLS 7
-  #define MATRIX_ROW_PINS { D4, C6, D7, E6 }
-#elif HELIX_ROWS == 5
-  #define MATRIX_ROWS 10
-  #define MATRIX_COLS 7
-  #define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
-#else
-  #error "expected HELIX_ROWS 4 or 5"
-#endif
-
-#define USE_SERIAL_PD2
-
-#define PREVENT_STUCK_MODIFIERS
-#define TAPPING_FORCE_HOLD
+#undef TAPPING_TERM
 #define TAPPING_TERM 200
-#define ONESHOT_TAP_TOGGLE 5  /* Tapping this number of times holds the key until tapped this number of times again. */
-#define ONESHOT_TIMEOUT 5000  /* Time (in ms) before the one shot key is released */
-
-// Helix keyboard RGB LED support
-//#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no
-//    see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
-#ifdef RGBLED_BACK
-  #if HELIX_ROWS == 4
-    #define RGBLED_NUM 25
-  #elif HELIX_ROWS == 5
-    #define RGBLED_NUM 32
-  #endif
-#else
-  #define RGBLED_NUM 6
-#endif
-
-#ifndef IOS_DEVICE_ENABLE
-  #if RGBLED_NUM <= 6
-    #define RGBLIGHT_LIMIT_VAL 255
-  #else
-    #if HELIX_ROWS == 5
-      #define RGBLIGHT_LIMIT_VAL 120
-    #else
-      #define RGBLIGHT_LIMIT_VAL 130
-    #endif
-  #endif
-  #define RGBLIGHT_VAL_STEP 17
-#else
-  #if RGBLED_NUM <= 6
-    #define RGBLIGHT_LIMIT_VAL 90
-  #else
-    #if HELIX_ROWS == 5
-      #define RGBLIGHT_LIMIT_VAL 35
-    #else
-      #define RGBLIGHT_LIMIT_VAL 45
-    #endif
-  #endif
-  #define RGBLIGHT_VAL_STEP 4
-#endif
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-
-#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
-// USB_MAX_POWER_CONSUMPTION value for Helix keyboard
-//  120  RGBoff, OLEDoff
-//  120  OLED
-//  330  RGB 6
-//  300  RGB 32
-//  310  OLED & RGB 32
-  #define USB_MAX_POWER_CONSUMPTION 400
-#else
-  // fix iPhone and iPad power adapter issue
-  // iOS device need lessthan 100
-  #define USB_MAX_POWER_CONSUMPTION 100
-#endif
+#define ONESHOT_TAP_TOGGLE 5 /* Tapping this number of times holds the key until tapped this number of times again. */
+#define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */
 
 #endif /* CONFIG_USER_H */
diff --git a/keyboards/helix/rev2/keymaps/led_test/config.h b/keyboards/helix/rev2/keymaps/led_test/config.h
index fa16b87f0..0e7967c73 100644
--- a/keyboards/helix/rev2/keymaps/led_test/config.h
+++ b/keyboards/helix/rev2/keymaps/led_test/config.h
@@ -23,75 +23,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include "../../config.h"
 
-/* Use I2C or Serial */
+// place overrides here
 
-#define USE_I2C
-#define USE_SERIAL
-//#define USE_MATRIX_I2C
-
-/* Select hand configuration */
-
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-
-// Helix keyboard OLED support
-#define SSD1306OLED
-
-/* Select rows configuration */
-// Rows are 4 or 5
-#define HELIX_ROWS 5
-
-/* key matrix size */
-// Rows are doubled-up
-#if  HELIX_ROWS == 4
-  #define MATRIX_ROWS 8
-  #define MATRIX_COLS 7
-  #define MATRIX_ROW_PINS { D4, C6, D7, E6 }
-#elif HELIX_ROWS == 5
-  #define MATRIX_ROWS 10
-  #define MATRIX_COLS 7
-  #define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
-#else
-  #error "expected HELIX_ROWS 4 or 5"
-#endif
-
-#define USE_SERIAL_PD2
-
-#define PREVENT_STUCK_MODIFIERS
-#define TAPPING_FORCE_HOLD
-#define TAPPING_TERM 100
-
-
-#undef RGBLED_NUM
-#define RGBLIGHT_ANIMATIONS
-// Helix keyboard : see ./rules.mk: RGBLIGHT_ENABLE = yes or no
-// Helix keyboard : RGBLED_NUM 6 or 32
-#define RGBLED_NUM 32
-#if RGBLED_NUM <= 6
-  #define RGBLIGHT_LIMIT_VAL 255
-#else
-  #if HELIX_ROWS == 5
-    #define RGBLIGHT_LIMIT_VAL 120
-  #else
-    #define RGBLIGHT_LIMIT_VAL 130
-  #endif
-#endif
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
-#endif
-
-#ifdef RGBLIGHT_ENABLE
-// USB_MAX_POWER_CONSUMPTION value for Helix keyboard
-//  120  RGBoff, OLEDoff
-//  120  OLED
-//  330  RGB 6
-//  300  RGB 32
-//  310  OLED & RGB 32
-  #define USB_MAX_POWER_CONSUMPTION 330
-#else
-  // fix iPhone and iPad power adapter issue
-  // iOS device need lessthan 100
-  #define USB_MAX_POWER_CONSUMPTION 100
-#endif
+#endif /* CONFIG_USER_H */
diff --git a/keyboards/helix/rev2/keymaps/led_test/rules.mk b/keyboards/helix/rev2/keymaps/led_test/rules.mk
index 71323916b..f5b460595 100644
--- a/keyboards/helix/rev2/keymaps/led_test/rules.mk
+++ b/keyboards/helix/rev2/keymaps/led_test/rules.mk
@@ -14,10 +14,101 @@ 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
-# Helix keyboard : see ./config.h: RGBLED_NUM 6 or 32
-# Helix keyboard : RGBLIGHT_ENABLE = no or yes
-RGBLIGHT_ENABLE = yes-but-local        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-ONEHAND_ENABLE = no        # Enable one-hand typing
+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 = yes            # OLED_ENABLE
+LOCAL_GLCDFONT = no         # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
+LED_BACK_ENABLE = yes        # 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 'default' keymap: convenient command line option
+##    make HELIX=<options> helix:defualt
+##    option= oled | back | under | na | ios
+##    ex.
+##      make HELIX=oled          helix:defualt
+##      make HELIX=oled,back     helix:defualt
+##      make HELIX=oled,under    helix:defualt
+##      make HELIX=oled,back,na  helix:defualt
+##      make HELIX=oled,back,ios helix:defualt
+##
+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 )
+
+ifneq ($(strip $(HELIX_ROWS)), 4)
+  ifneq ($(strip $(HELIX_ROWS)), 5)
+    $(error HELIX_ROWS = $(strip $(HELIX_ROWS)) is unexpected value)
+  endif
+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
+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
+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
@@ -26,13 +117,7 @@ ifndef QUANTUM_DIR
 	include ../../../../Makefile
 endif
 
-#copy from common_features.mk and modify rgblight.c
-    OPT_DEFS += -DRGBLIGHT_ENABLE
-    SRC += rgblight.c
-    CIE1931_CURVE = yes
-    LED_BREATHING_TABLE = yes
-    ifeq ($(strip $(RGBLIGHT_CUSTOM_DRIVER)), yes)
-        OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER
-    else
-         SRC += ws2812.c
-    endif
+# Uncomment these for debugging
+# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
+# $(info -- OPT_DEFS=$(OPT_DEFS))
+# $(info )
-- 
cgit v1.2.3