瀏覽代碼

rgb working, configd

Jack Humbert 7 年之前
父節點
當前提交
71436db957

+ 5 - 1
drivers/arm/i2c_master.c

@@ -43,7 +43,11 @@ static const I2CConfig i2cconfig = {
 
 void i2c_init(void)
 {
-  palSetGroupMode(GPIOB, GPIOB_PIN6 | GPIOB_PIN7, 0, PAL_MODE_INPUT); // Try releasing special pins for a short time
+  //palSetGroupMode(GPIOB, GPIOB_PIN6 | GPIOB_PIN7, 0, PAL_MODE_INPUT); // Try releasing special pins for a short time
+
+  palSetPadMode(GPIOB, 6, PAL_MODE_INPUT);
+  palSetPadMode(GPIOB, 7, PAL_MODE_INPUT);
+
   chThdSleepMilliseconds(10);
 
   palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(4) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_PUPDR_PULLUP);

+ 1 - 1
drivers/arm/i2c_master.h

@@ -24,7 +24,7 @@
  */
 
 #include "ch.h"
-#include <hal.h>
+#include "hal.h"
 
 #ifndef I2C_DRIVER
   #define I2C_DRIVER I2CD1

+ 2 - 2
drivers/issi/is31fl3733.c

@@ -77,7 +77,7 @@ uint8_t g_twi_transfer_buffer[20];
 uint8_t g_pwm_buffer[DRIVER_COUNT][192];
 bool g_pwm_buffer_update_required = false;
 
-uint8_t g_led_control_registers[DRIVER_COUNT][24] = { { 0 }, { 0 } };
+uint8_t g_led_control_registers[DRIVER_COUNT][24] = { { 0 } };
 bool g_led_control_registers_update_required = false;
 
 void IS31FL3733_write_register( uint8_t addr, uint8_t reg, uint8_t data )
@@ -159,7 +159,7 @@ void IS31FL3733_init( uint8_t addr )
     // Select PG3
     IS31FL3733_write_register( addr, ISSI_COMMANDREGISTER, ISSI_PAGE_FUNCTION );
     // Set global current to maximum.
-    IS31FL3733_write_register( addr, ISSI_REG_GLOBALCURRENT, 0xFF );
+    IS31FL3733_write_register( addr, ISSI_REG_GLOBALCURRENT, 0x03 );
     // Disable software shutdown.
     IS31FL3733_write_register( addr, ISSI_REG_CONFIGURATION, 0x01 );
 

+ 9 - 7
keyboards/planck/ez/config.h

@@ -125,13 +125,13 @@
 /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
 //#define MIDI_TONE_KEYCODE_OCTAVES 1
 
-#define WS2812_LED_N 2
-#define RGBLED_NUM WS2812_LED_N
-#define WS2812_TIM_N 2
-#define WS2812_TIM_CH 2
-#define PORT_WS2812     GPIOA
-#define PIN_WS2812      1
-#define WS2812_DMA_STREAM STM32_DMA1_STREAM2  // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection)
+// #define WS2812_LED_N 2
+// #define RGBLED_NUM WS2812_LED_N
+// #define WS2812_TIM_N 2
+// #define WS2812_TIM_CH 2
+// #define PORT_WS2812     GPIOA
+// #define PIN_WS2812      1
+// #define WS2812_DMA_STREAM STM32_DMA1_STREAM2  // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection)
 //#define WS2812_DMA_CHANNEL 7                  // DMA channel for TIMx_UP
 //#define WS2812_EXTERNAL_PULLUP
 
@@ -142,4 +142,6 @@
 #define DRIVER_1_LED_TOTAL 47
 #define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
 
+#define IS31FL3737
+
 #endif

+ 23 - 23
keyboards/planck/ez/ez.c

@@ -28,27 +28,6 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
     {0, A_9,   B_9,   C_9},
     {0, A_8,   B_8,   C_8},
     {0, A_7,   B_7,   C_7},
-    {0, A_6,   B_6,   C_6},
-    {0, A_5,   B_5,   C_5},
-    {0, A_4,   B_4,   C_4},
-    {0, A_3,   B_3,   C_3},
-    {0, A_2,   B_2,   C_2},
-    {0, A_1,   B_1,   C_1},
-    {0, A_0,   B_0,   C_0},
-
-    {0, D_12,  E_12,  F_12},
-    {0, D_11,  E_11,  F_11},
-    {0, D_10,  E_10,  F_10},
-    {0, D_9,   E_9,   F_9},
-    {0, D_8,   E_8,   F_8},
-    {0, D_7,   E_7,   F_7},
-    {0, D_6,   E_6,   F_6},
-    {0, D_5,   E_5,   F_5},
-    {0, D_4,   E_4,   F_4},
-    {0, D_3,   E_3,   F_3},
-    {0, D_2,   E_2,   F_2},
-    {0, D_1,   E_1,   F_1},
-    {0, D_0,   E_0,   F_0},
 
     {0, G_12,  H_12,  I_12},
     {0, G_11,  H_11,  I_11},
@@ -56,13 +35,27 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
     {0, G_9,   H_9,   I_9},
     {0, G_8,   H_8,   I_8},
     {0, G_7,   H_7,   I_7},
+
+    {0, A_6,   B_6,   C_6},
+    {0, A_5,   B_5,   C_5},
+    {0, A_4,   B_4,   C_4},
+    {0, A_3,   B_3,   C_3},
+    {0, A_2,   B_2,   C_2},
+    {0, A_1,   B_1,   C_1},
+
     {0, G_6,   H_6,   I_6},
     {0, G_5,   H_5,   I_5},
     {0, G_4,   H_4,   I_4},
     {0, G_3,   H_3,   I_3},
     {0, G_2,   H_2,   I_2},
     {0, G_1,   H_1,   I_1},
-    {0, G_0,   H_0,   I_0},
+
+    {0, D_12,  E_12,  F_12},
+    {0, D_11,  E_11,  F_11},
+    {0, D_10,  E_10,  F_10},
+    {0, D_9,   E_9,   F_9},
+    {0, D_8,   E_8,   F_8},
+    {0, D_7,   E_7,   F_7},
 
     {0, J_12,  K_12,  L_12},
     {0, J_11,  K_11,  L_11},
@@ -70,12 +63,19 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
     {0, J_9,   K_9,   L_9},
     {0, J_8,   K_8,   L_8},
     {0, J_7,   K_7,   L_7},
+
+    {0, D_6,   E_6,   F_6},
+    {0, D_5,   E_5,   F_5},
+    {0, D_4,   E_4,   F_4},
+    {0, D_3,   E_3,   F_3},
+    {0, D_2,   E_2,   F_2},
+    {0, D_1,   E_1,   F_1},
+
     {0, J_6,   K_6,   L_6},
     {0, J_5,   K_5,   L_5},
     {0, J_4,   K_4,   L_4},
     {0, J_3,   K_3,   L_3},
     {0, J_2,   K_2,   L_2},
-    {0, J_1,   K_1,   L_1},
 
 };
 

+ 89 - 0
keyboards/planck/ez/ez.h

@@ -16,3 +16,92 @@
 #pragma once
 
 #include "planck.h"
+
+#define LAYOUT_planck_1x2uC( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+    k30, k31, k32, k33, k34,    k35,   k36, k37, k38, k39, k3a \
+) \
+{ \
+    { k00, k01, k02, k03, k04, k05 }, \
+    { k10, k11, k12, k13, k14, k15 }, \
+    { k20, k21, k22, k23, k24, k25 }, \
+    { k30, k31, k32, k39, k3a, k3b }, \
+    { k06, k07, k08, k09, k0a, k0b }, \
+    { k16, k17, k18, k19, k1a, k1b }, \
+    { k26, k27, k28, k29, k2a, k2b }, \
+    { k36, k37, k38, k33, k34, k35 } \
+}
+
+#define LAYOUT_planck_1x2uR( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+    k30, k31, k32, k33, k34, k35,   k36,    k37, k38, k39, k3a \
+) \
+{ \
+    { k00, k01, k02, k03, k04, k05 }, \
+    { k10, k11, k12, k13, k14, k15 }, \
+    { k20, k21, k22, k23, k24, k25 }, \
+    { k30, k31, k32, k39, k3a, k3b }, \
+    { k06, k07, k08, k09, k0a, k0b }, \
+    { k16, k17, k18, k19, k1a, k1b }, \
+    { k26, k27, k28, k29, k2a, k2b }, \
+    { k36, k37, k38, k33, k34, k35 } \
+}
+
+#define LAYOUT_planck_1x2uL( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+    k30, k31, k32, k33,   k34,    k35, k36, k37, k38, k39, k3a \
+) \
+{ \
+    { k00, k01, k02, k03, k04, k05 }, \
+    { k10, k11, k12, k13, k14, k15 }, \
+    { k20, k21, k22, k23, k24, k25 }, \
+    { k30, k31, k32, k39, k3a, k3b }, \
+    { k06, k07, k08, k09, k0a, k0b }, \
+    { k16, k17, k18, k19, k1a, k1b }, \
+    { k26, k27, k28, k29, k2a, k2b }, \
+    { k36, k37, k38, k33, k34, k35 } \
+}
+
+#define LAYOUT_planck_2x2u( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+    k30, k31, k32, k33,   k34,      k36,    k37, k38, k39, k3a \
+) \
+{ \
+    { k00, k01, k02, k03, k04, k05 }, \
+    { k10, k11, k12, k13, k14, k15 }, \
+    { k20, k21, k22, k23, k24, k25 }, \
+    { k30, k31, k32, k39, k3a, k3b }, \
+    { k06, k07, k08, k09, k0a, k0b }, \
+    { k16, k17, k18, k19, k1a, k1b }, \
+    { k26, k27, k28, k29, k2a, k2b }, \
+    { k36, k37, k38, k33, k34, k35 } \
+}
+
+#define LAYOUT_planck_grid( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+    k30, k31, k32, k33, k34, k35, k3b, k36, k37, k38, k39, k3a \
+) \
+{ \
+    { k00, k01, k02, k03, k04, k05 }, \
+    { k10, k11, k12, k13, k14, k15 }, \
+    { k20, k21, k22, k23, k24, k25 }, \
+    { k30, k31, k32, k39, k3a, k3b }, \
+    { k06, k07, k08, k09, k0a, k0b }, \
+    { k16, k17, k18, k19, k1a, k1b }, \
+    { k26, k27, k28, k29, k2a, k2b }, \
+    { k36, k37, k38, k33, k34, k35 } \
+}
+
+#define KEYMAP LAYOUT_planck_grid
+#define LAYOUT_ortho_4x12 LAYOUT_planck_grid
+#define KC_LAYOUT_ortho_4x12 KC_KEYMAP

+ 2 - 2
keyboards/planck/ez/halconf.h

@@ -76,7 +76,7 @@
  * @brief   Enables the I2C subsystem.
  */
 #if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
-#define HAL_USE_I2C                 FALSE
+#define HAL_USE_I2C                 TRUE
 #endif
 
 /**
@@ -111,7 +111,7 @@
  * @brief   Enables the PWM subsystem.
  */
 #if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
-#define HAL_USE_PWM                 TRUE
+#define HAL_USE_PWM                 FALSE
 #endif
 
 /**

+ 4 - 4
keyboards/planck/ez/mcuconf.h

@@ -154,7 +154,7 @@
 /*
  * I2C driver system settings.
  */
-#define STM32_I2C_USE_I2C1                  FALSE
+#define STM32_I2C_USE_I2C1                  TRUE
 #define STM32_I2C_USE_I2C2                  FALSE
 #define STM32_I2C_BUSY_TIMEOUT              50
 #define STM32_I2C_I2C1_IRQ_PRIORITY         10
@@ -183,8 +183,8 @@
  */
 #define STM32_PWM_USE_ADVANCED              FALSE
 #define STM32_PWM_USE_TIM1                  FALSE
-#define STM32_PWM_USE_TIM2                  TRUE
-#define STM32_PWM_USE_TIM3                  TRUE
+#define STM32_PWM_USE_TIM2                  FALSE
+#define STM32_PWM_USE_TIM3                  FALSE
 #define STM32_PWM_USE_TIM4                  FALSE
 #define STM32_PWM_USE_TIM8                  FALSE
 #define STM32_PWM_TIM1_IRQ_PRIORITY         7
@@ -197,7 +197,7 @@
  * SERIAL driver system settings.
  */
 #define STM32_SERIAL_USE_USART1             FALSE
-#define STM32_SERIAL_USE_USART2             TRUE
+#define STM32_SERIAL_USE_USART2             FALSE
 #define STM32_SERIAL_USE_USART3             FALSE
 #define STM32_SERIAL_USE_UART4              FALSE
 #define STM32_SERIAL_USE_UART5              FALSE

+ 6 - 89
keyboards/planck/planck.h

@@ -48,97 +48,14 @@
 #define LAYOUT_ortho_4x12 LAYOUT_planck_grid
 #define KC_LAYOUT_ortho_4x12 KC_KEYMAP
 
-#else
-
-	#define LAYOUT_planck_1x2uC( \
-    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
-    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
-    k30, k31, k32, k33, k34,    k35,   k37, k38, k39, k3a, k3b \
-) \
-{ \
-    { k00, k01, k02, k03, k04, k05 }, \
-    { k10, k11, k12, k13, k14, k15 }, \
-    { k20, k21, k22, k23, k24, k25 }, \
-    { k30, k31, k32, k39, k3a, k3b }, \
-    { k06, k07, k08, k09, k0a, k0b }, \
-    { k16, k17, k18, k19, k1a, k1b }, \
-    { k26, k27, k28, k29, k2a, k2b }, \
-    { k36, k37, k38, k33, k34, k35 } \
-}
-
-#define LAYOUT_planck_1x2uR( \
-    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
-    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
-    k30, k31, k32, k33, k34, k35,   k37,    k38, k39, k3a, k3b \
-) \
-{ \
-    { k00, k01, k02, k03, k04, k05 }, \
-    { k10, k11, k12, k13, k14, k15 }, \
-    { k20, k21, k22, k23, k24, k25 }, \
-    { k30, k31, k32, k39, k3a, k3b }, \
-    { k06, k07, k08, k09, k0a, k0b }, \
-    { k16, k17, k18, k19, k1a, k1b }, \
-    { k26, k27, k28, k29, k2a, k2b }, \
-    { k36, k37, k38, k33, k34, k35 } \
-}
-
-#define LAYOUT_planck_1x2uL( \
-    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
-    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
-    k30, k31, k32, k33,   k34,    k36, k37, k38, k39, k3a, k3b \
-) \
-{ \
-    { k00, k01, k02, k03, k04, k05 }, \
-    { k10, k11, k12, k13, k14, k15 }, \
-    { k20, k21, k22, k23, k24, k25 }, \
-    { k30, k31, k32, k39, k3a, k3b }, \
-    { k06, k07, k08, k09, k0a, k0b }, \
-    { k16, k17, k18, k19, k1a, k1b }, \
-    { k26, k27, k28, k29, k2a, k2b }, \
-    { k36, k37, k38, k33, k34, k35 } \
-}
-
-#define LAYOUT_planck_2x2u( \
-    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
-    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
-    k30, k31, k32, k33,   k34,      k36,    k38, k39, k3a, k3b \
-) \
-{ \
-    { k00, k01, k02, k03, k04, k05 }, \
-    { k10, k11, k12, k13, k14, k15 }, \
-    { k20, k21, k22, k23, k24, k25 }, \
-    { k30, k31, k32, k39, k3a, k3b }, \
-    { k06, k07, k08, k09, k0a, k0b }, \
-    { k16, k17, k18, k19, k1a, k1b }, \
-    { k26, k27, k28, k29, k2a, k2b }, \
-    { k36, k37, k38, k33, k34, k35 } \
-}
-
-#define LAYOUT_planck_grid( \
-    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
-    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
-    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
-    k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
-) \
-{ \
-    { k00, k01, k02, k03, k04, k05 }, \
-    { k10, k11, k12, k13, k14, k15 }, \
-    { k20, k21, k22, k23, k24, k25 }, \
-    { k30, k31, k32, k39, k3a, k3b }, \
-    { k06, k07, k08, k09, k0a, k0b }, \
-    { k16, k17, k18, k19, k1a, k1b }, \
-    { k26, k27, k28, k29, k2a, k2b }, \
-    { k36, k37, k38, k33, k34, k35 } \
-}
+#endif
 
-#define KEYMAP LAYOUT_planck_grid
-#define LAYOUT_ortho_4x12 LAYOUT_planck_grid
-#define KC_LAYOUT_ortho_4x12 KC_KEYMAP
+#ifdef KEYBOARD_planck_rev6
+  #include "rev6.h"
+#endif
 
+#ifdef KEYBOARD_planck_ez
+  #include "ez.h"
 #endif
 
 #endif

+ 90 - 0
keyboards/planck/rev6/rev6.h

@@ -18,4 +18,94 @@
 
 #include "planck.h"
 
+
+#define LAYOUT_planck_1x2uC( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+    k30, k31, k32, k33, k34,    k35,   k37, k38, k39, k3a, k3b \
+) \
+{ \
+    { k00, k01, k02, k03, k04, k05 }, \
+    { k10, k11, k12, k13, k14, k15 }, \
+    { k20, k21, k22, k23, k24, k25 }, \
+    { k30, k31, k32, k39, k3a, k3b }, \
+    { k06, k07, k08, k09, k0a, k0b }, \
+    { k16, k17, k18, k19, k1a, k1b }, \
+    { k26, k27, k28, k29, k2a, k2b }, \
+    { k36, k37, k38, k33, k34, k35 } \
+}
+
+#define LAYOUT_planck_1x2uR( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+    k30, k31, k32, k33, k34, k35,   k37,    k38, k39, k3a, k3b \
+) \
+{ \
+    { k00, k01, k02, k03, k04, k05 }, \
+    { k10, k11, k12, k13, k14, k15 }, \
+    { k20, k21, k22, k23, k24, k25 }, \
+    { k30, k31, k32, k39, k3a, k3b }, \
+    { k06, k07, k08, k09, k0a, k0b }, \
+    { k16, k17, k18, k19, k1a, k1b }, \
+    { k26, k27, k28, k29, k2a, k2b }, \
+    { k36, k37, k38, k33, k34, k35 } \
+}
+
+#define LAYOUT_planck_1x2uL( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+    k30, k31, k32, k33,   k34,    k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+    { k00, k01, k02, k03, k04, k05 }, \
+    { k10, k11, k12, k13, k14, k15 }, \
+    { k20, k21, k22, k23, k24, k25 }, \
+    { k30, k31, k32, k39, k3a, k3b }, \
+    { k06, k07, k08, k09, k0a, k0b }, \
+    { k16, k17, k18, k19, k1a, k1b }, \
+    { k26, k27, k28, k29, k2a, k2b }, \
+    { k36, k37, k38, k33, k34, k35 } \
+}
+
+#define LAYOUT_planck_2x2u( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+    k30, k31, k32, k33,   k34,      k36,    k38, k39, k3a, k3b \
+) \
+{ \
+    { k00, k01, k02, k03, k04, k05 }, \
+    { k10, k11, k12, k13, k14, k15 }, \
+    { k20, k21, k22, k23, k24, k25 }, \
+    { k30, k31, k32, k39, k3a, k3b }, \
+    { k06, k07, k08, k09, k0a, k0b }, \
+    { k16, k17, k18, k19, k1a, k1b }, \
+    { k26, k27, k28, k29, k2a, k2b }, \
+    { k36, k37, k38, k33, k34, k35 } \
+}
+
+#define LAYOUT_planck_grid( \
+    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+    k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
+) \
+{ \
+    { k00, k01, k02, k03, k04, k05 }, \
+    { k10, k11, k12, k13, k14, k15 }, \
+    { k20, k21, k22, k23, k24, k25 }, \
+    { k30, k31, k32, k39, k3a, k3b }, \
+    { k06, k07, k08, k09, k0a, k0b }, \
+    { k16, k17, k18, k19, k1a, k1b }, \
+    { k26, k27, k28, k29, k2a, k2b }, \
+    { k36, k37, k38, k33, k34, k35 } \
+}
+
+#define KEYMAP LAYOUT_planck_grid
+#define LAYOUT_ortho_4x12 LAYOUT_planck_grid
+#define KC_LAYOUT_ortho_4x12 KC_KEYMAP
+
 #endif