diff --git a/keyboards/zeal60/IS31FL3731_driver.c b/keyboards/zeal60/IS31FL3731_driver.c
index d610a501a792..a65d7b06e0fd 100644
--- a/keyboards/zeal60/IS31FL3731_driver.c
+++ b/keyboards/zeal60/IS31FL3731_driver.c
@@ -37,6 +37,9 @@ uint8_t g_twi_transfer_buffer[TXMAXBUFLEN];
uint8_t g_pwm_buffer[2][144];
bool g_pwm_buffer_update_required = false;
+uint8_t g_led_control_registers[2][18] = { { 0 }, { 0 } };
+bool g_led_control_registers_update_required = false;
+
// map of LED index to register (matrix A and matrix B)
// i.e. this is LA0..LA17,LB0..LB17 and also LC0..LC17,LD0..LD17
// Index of LED (0..36) will map to a register.
@@ -59,6 +62,53 @@ const uint8_t g_blue_registers[36] PROGMEM = {
0x5C, 0x5D, 0x5E, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53,
0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x81, 0x82, 0x83 };
+typedef struct
+{
+ uint8_t red_register;
+ uint8_t red_bit;
+ uint8_t green_register;
+ uint8_t green_bit;
+ uint8_t blue_register;
+ uint8_t blue_bit;
+} led_control_bitmask;
+
+// This is the bit pattern in the LED control registers
+// (for matrix A, add one to register for matrix B)
+//
+// reg - b7 b6 b5 b4 b3 b2 b1 b0
+// 0x00 - R08,R07,R06,R05,R04,R03,R02,R01
+// 0x02 - G08,G07,G06,G05,G04,G03,G02,R00
+// 0x04 - B08,B07,B06,B05,B04,B03,G01,G00
+// 0x06 - - , - , - , - , - ,B02,B01,B00
+// 0x08 - - , - , - , - , - , - , - , -
+// 0x0A - B17,B16,B15, - , - , - , - , -
+// 0x0C - G17,G16,B14,B13,B12,B11,B10,B09
+// 0x0E - R17,G15,G14,G13,G12,G11,G10,G09
+// 0x10 - R16,R15,R14,R13,R12,R11,R10,R09
+
+const led_control_bitmask g_led_control_bitmask[18] =
+{
+ { 0x02, 0, 0x04, 0, 0x06, 0 }, // R00,G00,B00
+ { 0x00, 0, 0x04, 1, 0x06, 1 }, // R01,G01,B01
+ { 0x00, 1, 0x02, 1, 0x06, 2 }, // R02,G02,B02
+ { 0x00, 2, 0x02, 2, 0x04, 2 }, // R03,G03,B03
+ { 0x00, 3, 0x02, 3, 0x04, 3 }, // R04,G04,B04
+ { 0x00, 4, 0x02, 4, 0x04, 4 }, // R05,G05,B05
+ { 0x00, 5, 0x02, 5, 0x04, 5 }, // R06,G06,B06
+ { 0x00, 6, 0x02, 6, 0x04, 6 }, // R07,G07,B07
+ { 0x00, 7, 0x02, 7, 0x04, 7 }, // R08,G08,B08
+
+ { 0x10, 0, 0x0E, 0, 0x0C, 0 }, // R09,G09,B09
+ { 0x10, 1, 0x0E, 1, 0x0C, 1 }, // R10,G10,B10
+ { 0x10, 2, 0x0E, 2, 0x0C, 2 }, // R11,G11,B11
+ { 0x10, 3, 0x0E, 3, 0x0C, 3 }, // R12,G12,B12
+ { 0x10, 4, 0x0E, 4, 0x0C, 4 }, // R13,G13,B13
+ { 0x10, 5, 0x0E, 5, 0x0C, 5 }, // R14,G14,B14
+ { 0x10, 6, 0x0E, 6, 0x0A, 5 }, // R15,G15,B15
+ { 0x10, 7, 0x0C, 6, 0x0A, 6 }, // R16,G16,B16
+ { 0x0E, 7, 0x0C, 7, 0x0A, 7 }, // R17,G17,B17
+};
+
void IS31FL3731_write_register( uint8_t addr, uint8_t reg, uint8_t data )
{
g_twi_transfer_buffer[0] = (addr << 1) | 0x00;
@@ -189,6 +239,57 @@ void IS31FL3731_set_color_all( uint8_t red, uint8_t green, uint8_t blue )
}
}
+void IS31FL3731_set_led_control_register( uint8_t index, bool red, bool green, bool blue )
+{
+ uint8_t driver = 0;
+ if ( index >= 36 )
+ {
+ driver = 1;
+ index -= 36;
+ }
+
+ // index now in range 0..35
+ uint8_t matrix = 0; // Matrix A
+ if ( index >= 18 )
+ {
+ matrix = 1; // Matrix B
+ index -= 18;
+ }
+
+ led_control_bitmask bitmask = g_led_control_bitmask[index];
+
+ // Matrix A and B registers are interleaved.
+ // Add 1 to Matrix A register to get Matrix B register
+ if ( red )
+ {
+ g_led_control_registers[driver][bitmask.red_register+matrix] |= (1<.
//#define NO_ACTION_FUNCTION
// enable/disable LEDs based on layout
-#define USE_SPLIT_BACKSPACE 0
-#define USE_SPLIT_LEFT_SHIFT 0
-#define USE_SPLIT_RIGHT_SHIFT 0
-#define USE_7U_SPACEBAR 0
-#define USE_ISO_ENTER 0
+#define BACKLIGHT_USE_SPLIT_BACKSPACE 0
+#define BACKLIGHT_USE_SPLIT_LEFT_SHIFT 0
+#define BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 0
+#define BACKLIGHT_USE_7U_SPACEBAR 0
+#define BACKLIGHT_USE_ISO_ENTER 0
+
+// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
+#define BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
+
+// disable backlight after timeout in minutes, 0 = no timeout
+#define BACKLIGHT_DISABLE_AFTER_TIMEOUT 0
// These define which keys in the matrix are alphas/mods
// Used for backlight effects so colors are different for
// alphas vs. mods
// Each value is for a row, bit 0 is column 13
// Alpha=0 Mod=1
-#define ALPHAS_MODS_ROW_0 0b0010000000000001
-#define ALPHAS_MODS_ROW_1 0b0010000000000000
-#define ALPHAS_MODS_ROW_2 0b0010000000000010
-#define ALPHAS_MODS_ROW_3 0b0010000000000011
-#define ALPHAS_MODS_ROW_4 0b0011100000001111
+#define BACKLIGHT_ALPHAS_MODS_ROW_0 0b0010000000000001
+#define BACKLIGHT_ALPHAS_MODS_ROW_1 0b0010000000000000
+#define BACKLIGHT_ALPHAS_MODS_ROW_2 0b0010000000000010
+#define BACKLIGHT_ALPHAS_MODS_ROW_3 0b0010000000000011
+#define BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011100000001111
#define USE_KEYMAPS_IN_EEPROM 1
diff --git a/keyboards/zeal60/keymaps/default/keymap.c b/keyboards/zeal60/keymaps/default/keymap.c
index 6134783b048f..6e7a848d9989 100644
--- a/keyboards/zeal60/keymaps/default/keymap.c
+++ b/keyboards/zeal60/keymaps/default/keymap.c
@@ -1,7 +1,6 @@
// Default layout for Zeal60
#include "zeal60.h"
-#include "action_layer.h"
// [0,13] is either left key of split backspace (e.g. HHKB \| key) or 2U backspace
// [1,13] is either backslash or ISO Enter
@@ -14,38 +13,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Default layer
[0] = {
- {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC},
- {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS},
- {KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO },
- {KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO },
- {KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_RALT, FN_TT13, FN_TT23, KC_RCTL}
+ {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC},
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS},
+ {KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO },
+ {KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO },
+ {KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_RALT, FN_MO13, FN_MO23, KC_RCTL}
},
-// Fn1 LayerS
+// Fn1 Layer
[1] = {
- {KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL },
- {KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS},
- {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL },
+ {KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS},
+ {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
// Fn2 Layer
[2] = {
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
// Fn3 Layer (zeal60 Configuration)
[3] = {
- {RESET, EF_DEC, EF_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
}
};
diff --git a/keyboards/zeal60/keymaps/hhkb_ansi/keymap.c b/keyboards/zeal60/keymaps/hhkb_ansi/keymap.c
index f6d56fb9e0fc..889c380366dd 100644
--- a/keyboards/zeal60/keymaps/hhkb_ansi/keymap.c
+++ b/keyboards/zeal60/keymaps/hhkb_ansi/keymap.c
@@ -1,7 +1,6 @@
// HHKB layout for Zeal60
#include "zeal60.h"
-#include "action_layer.h"
// [0,13] is either left key of split backspace (e.g. HHKB \| key) or 2U backspace
// [1,13] is either backslash or ISO Enter
@@ -14,44 +13,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Default layer
[0] = {
- {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS},
- {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC},
- {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_GRV },
- {KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_TT13},
- {KC_NO, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_RALT, FN_TT23, KC_NO }
+ {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS},
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC},
+ {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_GRV },
+ {KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, FN_MO13},
+ {KC_NO, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_RALT, FN_MO23, KC_NO }
},
// Fn1 Layer
[1] = {
- {KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS },
- {KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, KC_DEL },
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS },
+ {KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, KC_DEL },
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
// Fn2 Layer
[2] = {
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
// Fn3 Layer (zeal60 Configuration)
[3] = {
- {RESET, EF_DEC, EF_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
}
};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-
-
diff --git a/keyboards/zeal60/keymaps/poker2_ansi/keymap.c b/keyboards/zeal60/keymaps/poker2_ansi/keymap.c
index dce36252a0be..94e9471ab47b 100644
--- a/keyboards/zeal60/keymaps/poker2_ansi/keymap.c
+++ b/keyboards/zeal60/keymaps/poker2_ansi/keymap.c
@@ -1,7 +1,6 @@
// Poker2 ANSI layout for Zeal60
#include "zeal60.h"
-#include "action_layer.h"
// [0,13] is either left key of split backspace (e.g. HHKB \| key) or 2U backspace
// [1,13] is either backslash or ISO Enter
@@ -14,38 +13,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Default layer
[0] = {
- {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC},
- {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS},
- {KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO },
- {KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO },
- {KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_RALT, FN_TT13, FN_TT23, KC_RCTL}
+ {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC},
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS},
+ {KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO },
+ {KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO },
+ {KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_RALT, FN_MO13, FN_MO23, KC_RCTL}
},
// Fn1 Layer
[1] = {
- {KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL },
- {KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS},
- {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL },
+ {KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS},
+ {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
// Fn2 Layer
[2] = {
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
// Fn3 Layer (zeal60 Configuration)
[3] = {
- {RESET, EF_DEC, EF_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
}
};
diff --git a/keyboards/zeal60/keymaps/poker2_iso/keymap.c b/keyboards/zeal60/keymaps/poker2_iso/keymap.c
index 46acebfa11f9..8ce15fae3c70 100644
--- a/keyboards/zeal60/keymaps/poker2_iso/keymap.c
+++ b/keyboards/zeal60/keymaps/poker2_iso/keymap.c
@@ -1,7 +1,6 @@
// Poker2 ANSI layout for Zeal60
#include "zeal60.h"
-#include "action_layer.h"
// [0,13] is either left key of split backspace (e.g. HHKB \| key) or 2U backspace
// [1,13] is either backslash or ISO Enter
@@ -14,38 +13,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Default layer
[0] = {
- {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC},
- {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT },
- {KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_NO },
- {KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO },
- {KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_RALT, FN_TT13, FN_TT23, KC_RCTL}
+ {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC},
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT },
+ {KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_NO },
+ {KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO },
+ {KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_RALT, FN_MO13, FN_MO23, KC_RCTL}
},
// Fn1 Layer
[1] = {
- {KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL },
- {KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS},
- {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL },
+ {KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS},
+ {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
// Fn2 Layer
[2] = {
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
// Fn3 Layer (zeal60 Configuration)
[3] = {
- {RESET, EF_DEC, EF_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
}
};
diff --git a/keyboards/zeal60/keymaps/test/config.h b/keyboards/zeal60/keymaps/test/config.h
index 6150f938718d..7053731fcf9f 100644
--- a/keyboards/zeal60/keymaps/test/config.h
+++ b/keyboards/zeal60/keymaps/test/config.h
@@ -1,3 +1,5 @@
+// This is only used for factory test, some features are disabled
+
#ifndef CONFIG_USER_H
#define CONFIG_USER_H
diff --git a/keyboards/zeal60/keymaps/test/keymap.c b/keyboards/zeal60/keymaps/test/keymap.c
index de2d02b3dfd5..4a978ffd364f 100644
--- a/keyboards/zeal60/keymaps/test/keymap.c
+++ b/keyboards/zeal60/keymaps/test/keymap.c
@@ -1,7 +1,6 @@
-// Poker2 ANSI layout for Zeal60
+// Test layout for Zeal60 - This is only used for factory test, some features are disabled
#include "zeal60.h"
-#include "action_layer.h"
// [0,13] is either left key of split backspace (e.g. HHKB \| key) or 2U backspace
// [1,13] is either backslash or ISO Enter
@@ -14,38 +13,38 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Default layer
[0] = {
- {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC},
- {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS},
- {KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO },
- {KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO },
- {KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_RALT, FN_TT13, FN_TT23, KC_RCTL}
+ {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC},
+ {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS},
+ {KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_NO },
+ {KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_NO },
+ {KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_RALT, FN_MO13, FN_MO23, KC_RCTL}
},
// Fn1 Layer
[1] = {
- {KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL },
- {KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS},
- {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_NO },
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL },
+ {KC_CAPS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_TRNS},
+ {KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
// Fn2 Layer
[2] = {
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
},
// Fn3 Layer (zeal60 Configuration)
[3] = {
- {RESET, EF_DEC, EF_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
+ {KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BR_DEC, BR_INC, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS}
}
};
diff --git a/keyboards/zeal60/zeal60.c b/keyboards/zeal60/zeal60.c
index e85fff52ea8b..ec9d13a24d0e 100644
--- a/keyboards/zeal60/zeal60.c
+++ b/keyboards/zeal60/zeal60.c
@@ -24,13 +24,13 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
case id_keymap_keycode_load:
{
msg_keymap_keycode_load *msg = (msg_keymap_keycode_load*)&data[1];
- msg->keycode = keymap_keycode_load( msg->layer, msg->row, msg->col );
+ msg->keycode = keymap_keycode_load( msg->layer, msg->row, msg->column );
break;
}
case id_keymap_keycode_save:
{
msg_keymap_keycode_save *msg = (msg_keymap_keycode_save*)&data[1];
- keymap_keycode_save( msg->layer, msg->row, msg->col, msg->keycode);
+ keymap_keycode_save( msg->layer, msg->row, msg->column, msg->keycode);
break;
}
case id_keymap_default_save:
@@ -39,10 +39,10 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
break;
}
#endif // USE_KEYMAPS_IN_EEPROM
- case id_backlight_config_set_flags:
+ case id_backlight_config_set_values:
{
- msg_backlight_config_set_flags *msg = (msg_backlight_config_set_flags*)&data[1];
- backlight_config_set_flags(msg->flags);
+ msg_backlight_config_set_values *msg = (msg_backlight_config_set_values*)&data[1];
+ backlight_config_set_values(msg);
backlight_config_save();
backlight_init_drivers();
break;
@@ -57,7 +57,7 @@ void raw_hid_receive( uint8_t *data, uint8_t length )
case id_backlight_set_key_color:
{
msg_backlight_set_key_color *msg = (msg_backlight_set_key_color*)&data[1];
- backlight_set_key_color(msg->row, msg->col, msg->hsv);
+ backlight_set_key_color(msg->row, msg->column, msg->hsv);
break;
}
default:
@@ -88,17 +88,17 @@ void bootmagic_lite(void)
// If the Esc and space bar are held down on power up,
// reset the EEPROM valid state and jump to bootloader.
- // Assumes Esc is at [0,0] and spacebar is at [4,7].
- // This isn't very generalized, but we need something that doesn't
- // rely on user's keymaps in firmware or EEPROM.
- if ( ( matrix_get_row(0) & (1<<0) ) &&
- ( matrix_get_row(4) & (1<<7) ) )
+ // Assumes Esc is at [0,0] and spacebar is at [4,7].
+ // This isn't very generalized, but we need something that doesn't
+ // rely on user's keymaps in firmware or EEPROM.
+ if ( ( matrix_get_row(0) & (1<<0) ) &&
+ ( matrix_get_row(4) & (1<<7) ) )
{
- // Set the Zeal60 specific EEPROM state as invalid.
+ // Set the Zeal60 specific EEPROM state as invalid.
eeprom_set_valid(false);
- // Set the TMK/QMK EEPROM state as invalid.
+ // Set the TMK/QMK EEPROM state as invalid.
eeconfig_disable();
- // Jump to bootloader.
+ // Jump to bootloader.
bootloader_jump();
}
}
@@ -127,12 +127,12 @@ void matrix_init_kb(void)
for ( int row=0; row < MATRIX_ROWS; row++ )
{
HSV hsv;
- for ( int col=0; col < MATRIX_COLS; col++ )
+ for ( int column=0; column < MATRIX_COLS; column++ )
{
hsv.h = rand() & 0xFF;
hsv.s = rand() & 0xFF;
hsv.v = 255;
- backlight_set_key_color( row, col, hsv );
+ backlight_set_key_color( row, column, hsv );
}
}
@@ -141,12 +141,12 @@ void matrix_init_kb(void)
keymap_default_save();
// Save the magic number last, in case saving was interrupted
- eeprom_set_valid(true);
+ eeprom_set_valid(true);
}
#endif
- // Initialize LED drivers for backlight.
- backlight_init_drivers();
+ // Initialize LED drivers for backlight.
+ backlight_init_drivers();
backlight_timer_init();
backlight_timer_enable();
@@ -371,20 +371,28 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
void led_set_kb(uint8_t usb_led)
{
if (usb_led & (1<x += 4;
- break;
+ break;
case 36+16: // LC16A
if ( !g_config.use_split_left_shift )
point->x += 8;
@@ -119,7 +127,7 @@ void map_led_to_point( uint8_t index, Point *point )
// C16, C15, C5, C4, C3, C2, C1, D9, D10, D11, D12, D6, D7, D8,
// C17, C8, C7, C6, ---, ---, ---, C0, ---, D13, D14, D15, D16, D17,
//
-const uint8_t g_map_row_col_to_led[5][14] PROGMEM = {
+const uint8_t g_map_row_column_to_led[5][14] PROGMEM = {
{ 0+17, 0+16, 0+15, 0+14, 0+13, 0+12, 0+11, 0+10, 0+9, 18+0, 18+1, 18+2, 18+3, 18+4 },
{ 0+7, 0+6, 0+5, 0+4, 0+3, 0+2, 0+1, 0+0, 18+9, 18+10, 18+11, 18+12, 18+13, 18+14 },
{ 0+8, 36+14, 36+13, 36+12, 36+11, 36+10, 36+9, 54+0, 54+1, 54+2, 54+3, 54+4, 54+5, 18+5 },
@@ -128,18 +136,19 @@ const uint8_t g_map_row_col_to_led[5][14] PROGMEM = {
};
-void map_row_col_to_led( uint8_t row, uint8_t col, uint8_t *led )
+void map_row_column_to_led( uint8_t row, uint8_t column, uint8_t *led )
{
*led = 255;
- if ( row < MATRIX_ROWS && col < MATRIX_COLS )
+ if ( row < MATRIX_ROWS && column < MATRIX_COLS )
{
- *led = pgm_read_byte(&g_map_row_col_to_led[row][col]);
+ *led = pgm_read_byte(&g_map_row_column_to_led[row][column]);
}
}
void backlight_update_pwm_buffers(void)
{
IS31FL3731_update_pwm_buffers( ISSI_ADDR_1, ISSI_ADDR_2 );
+ IS31FL3731_update_led_control_registers( ISSI_ADDR_1, ISSI_ADDR_2 );
}
void backlight_set_color( int index, uint8_t red, uint8_t green, uint8_t blue )
@@ -152,11 +161,13 @@ void backlight_set_color_all( uint8_t red, uint8_t green, uint8_t blue )
IS31FL3731_set_color_all( red, green, blue );
}
-void backlight_set_key_hit(uint8_t row, uint8_t col)
+void backlight_set_key_hit(uint8_t row, uint8_t column)
{
uint8_t led;
- map_row_col_to_led(row,col,&led);
+ map_row_column_to_led(row,column,&led);
g_key_hit[led] = 0;
+
+ g_any_key_hit = 0;
}
// This is (F_CPU/1024) / 20 Hz
@@ -195,15 +206,71 @@ void backlight_timer_disable(void)
TIMSK3 &= ~_BV(OCIE3A);
}
+void backlight_set_suspend_state(bool state)
+{
+ g_suspend_state = state;
+}
+
+// This tests the LEDs
+// Note that it will change the LED control registers
+// in the LED drivers, and leave them in an invalid
+// state for other backlight effects.
+// ONLY USE THIS FOR TESTING LEDS!
void backlight_effect_test(void)
{
- uint8_t offset = (g_tick<<3) & 0xFF;
- // Relies on hue being 8-bit and wrapping
- HSV hsv = { .h = offset, .s = 255, .v = 127 };
- RGB rgb = hsv_to_rgb( hsv );
+ if ( g_tick < 4*20 )
+ {
+ backlight_set_color_all( 255, 0, 0 );
+ return;
+ }
+ else if ( g_tick < 7*20 )
+ {
+ backlight_set_color_all( 0, 255, 0 );
+ return;
+ }
+ else if ( g_tick < 10*20 )
+ {
+ backlight_set_color_all( 0, 0, 255 );
+ return;
+ }
+ else if ( g_tick < 13*20 )
+ {
+ backlight_set_color_all( 255, 255, 255 );
+ return;
+ }
- backlight_set_color_all( rgb.r, rgb.g, rgb.b );
- }
+ static uint8_t color = 0; // 0,1,2 for R,G,B
+ static uint8_t row = 0;
+ static uint8_t column = 0;
+
+ static uint8_t tick = 0;
+ tick++;
+
+ if ( tick > 2 )
+ {
+ tick = 0;
+ column++;
+ }
+ if ( column > 14 )
+ {
+ column = 0;
+ row++;
+ }
+ if ( row > 4 )
+ {
+ row = 0;
+ color++;
+ }
+ if ( color > 2 )
+ {
+ color = 0;
+ }
+
+ uint8_t index;
+ map_row_column_to_led( row, column, &index );
+ backlight_set_color_all( 255, 255, 255 );
+ backlight_test_led( index, color==0, color==1, color==2 );
+}
// All LEDs off
void backlight_effect_all_off(void)
@@ -227,13 +294,13 @@ void backlight_effect_alphas_mods(void)
for ( int row = 0; row < MATRIX_ROWS; row++ )
{
- for ( int col = 0; col < MATRIX_COLS; col++ )
+ for ( int column = 0; column < MATRIX_COLS; column++ )
{
uint8_t index;
- map_row_col_to_led( row, col, &index );
+ map_row_column_to_led( row, column, &index );
if ( index < 72 )
{
- if ( ( g_config.alphas_mods[row] & (0b0010000000000000>>col) ) == 0 )
+ if ( ( g_config.alphas_mods[row] & (0b0010000000000000>>column) ) == 0 )
{
backlight_set_color( index, rgb1.r, rgb1.g, rgb1.b );
}
@@ -287,15 +354,14 @@ void backlight_effect_cycle_all(void)
for ( int i=0; i<72; i++ )
{
uint16_t offset2 = g_key_hit[i]<<2;
-
// stabilizer LEDs use spacebar hits
if ( i == 36+6 || i == 54+13 || // LC6, LD13
( g_config.use_7u_spacebar && i == 54+14 ) ) // LD14
{
offset2 = g_key_hit[36+0]<<2;
}
-
offset2 = (offset2<=63) ? (63-offset2) : 0;
+
HSV hsv = { .h = offset+offset2, .s = 255, .v = g_config.brightness };
RGB rgb = hsv_to_rgb( hsv );
backlight_set_color( i, rgb.r, rgb.g, rgb.b );
@@ -310,14 +376,23 @@ void backlight_effect_cycle_all(void)
Point point;
for ( int i=0; i<72; i++ )
{
+ uint16_t offset2 = g_key_hit[i]<<2;
+ // stabilizer LEDs use spacebar hits
+ if ( i == 36+6 || i == 54+13 || // LC6, LD13
+ ( g_config.use_7u_spacebar && i == 54+14 ) ) // LD14
+ {
+ offset2 = g_key_hit[36+0]<<2;
+ }
+ offset2 = (offset2<=63) ? (63-offset2) : 0;
+
map_led_to_point( i, &point );
// Relies on hue being 8-bit and wrapping
- hsv.h = point.x + offset;
+ hsv.h = point.x + offset + offset2;
rgb = hsv_to_rgb( hsv );
backlight_set_color( i, rgb.r, rgb.g, rgb.b );
- }
+ }
}
-
+
void backlight_effect_cycle_up_down(void)
{
uint8_t offset = g_tick & 0xFF;
@@ -326,9 +401,18 @@ void backlight_effect_cycle_up_down(void)
Point point;
for ( int i=0; i<72; i++ )
{
+ uint16_t offset2 = g_key_hit[i]<<2;
+ // stabilizer LEDs use spacebar hits
+ if ( i == 36+6 || i == 54+13 || // LC6, LD13
+ ( g_config.use_7u_spacebar && i == 54+14 ) ) // LD14
+ {
+ offset2 = g_key_hit[36+0]<<2;
+ }
+ offset2 = (offset2<=63) ? (63-offset2) : 0;
+
map_led_to_point( i, &point );
// Relies on hue being 8-bit and wrapping
- hsv.h = point.y + offset;
+ hsv.h = point.y + offset + offset2;
rgb = hsv_to_rgb( hsv );
backlight_set_color( i, rgb.r, rgb.g, rgb.b );
}
@@ -352,6 +436,11 @@ ISR(TIMER3_COMPA_vect)
{
g_tick++;
+ if ( g_any_key_hit < 0xFFFFFFFF )
+ {
+ g_any_key_hit++;
+ }
+
// delay 1 second before driving LEDs
if ( g_tick < 20 )
{
@@ -366,67 +455,63 @@ ISR(TIMER3_COMPA_vect)
}
}
- // Store backlight config to EEPROM every 6.4 seconds
- // A slightly hacky way of reducing the number of EEPROM writes
- // should the user be hammering away on backlight changes
- // Paranoid? Probably...
- // Note this will only write if it's different, so it's safe to
- // call often.
- if ( ( g_tick & 0x7F ) == 0 )
- {
- backlight_config_save();
- }
-
#ifdef ZEAL60_TEST
backlight_effect_test();
- return;
+ return;
#endif
+ // Ideally we would also stop sending zeros to the LED driver PWM buffers
+ // while suspended and just do a software shutdown. This is a cheap hack for now.
+ uint8_t effect = ( ( g_suspend_state && g_config.disable_when_usb_suspended ) ||
+ ( g_config.disable_after_timeout > 0 && g_any_key_hit > g_config.disable_after_timeout*60*20 ) )
+ ? 0 : g_config.effect;
+
// this gets ticked at 20 Hz.
// each effect can opt to do calculations
// and/or request PWM buffer updates.
- if ( g_config.effect == 0 )
+ if ( effect == 0 )
{
backlight_effect_all_off();
}
- else if ( g_config.effect == 1 )
+ else if ( effect == 1 )
{
backlight_effect_solid_color();
}
- else if ( g_config.effect == 2 )
+ else if ( effect == 2 )
{
backlight_effect_alphas_mods();
}
- else if ( g_config.effect == 3 )
+ else if ( effect == 3 )
{
backlight_effect_gradient_up_down();
}
- else if ( g_config.effect == 4 )
+ else if ( effect == 4 )
{
backlight_effect_cycle_all();
}
- else if ( g_config.effect == 5 )
+ else if ( effect == 5 )
{
backlight_effect_cycle_left_right();
}
- else if ( g_config.effect == 6 )
+ else if ( effect == 6 )
{
backlight_effect_cycle_up_down();
}
- else if ( g_config.effect >= 7 )
+ else if ( effect >= 7 )
{
backlight_effect_custom();
}
}
-void backlight_config_set_flags(uint16_t flags)
+void backlight_config_set_values(msg_backlight_config_set_values *values)
{
- // TODO: replace with #define bitmasks
- g_config.use_split_backspace = ( flags&(1<<0) ? true : false );
- g_config.use_split_left_shift = ( flags&(1<<1) ? true : false );
- g_config.use_split_right_shift = ( flags&(1<<2) ? true : false );
- g_config.use_7u_spacebar = ( flags&(1<<3) ? true : false );
- g_config.use_iso_enter = ( flags&(1<<4) ? true : false );
+ g_config.use_split_backspace = values->use_split_backspace;
+ g_config.use_split_left_shift = values->use_split_left_shift;
+ g_config.use_split_right_shift = values->use_split_right_shift;
+ g_config.use_7u_spacebar = values->use_7u_spacebar;
+ g_config.use_iso_enter = values->use_iso_enter;
+ g_config.disable_when_usb_suspended = values->disable_when_usb_suspended;
+ g_config.disable_after_timeout = values->disable_after_timeout;
}
void backlight_config_set_alphas_mods( uint16_t *alphas_mods )
@@ -435,145 +520,49 @@ void backlight_config_set_alphas_mods( uint16_t *alphas_mods )
{
g_config.alphas_mods[i] = alphas_mods[i];
}
+
+ backlight_config_save();
}
void backlight_config_load(void)
{
- void *addr = EEPROM_BACKLIGHT_CONFIG_ADDR;
- uint16_t flags = eeprom_read_word(addr);
- addr += 2;
- backlight_config_set_flags(flags);
-
- for ( int i=0; i<5; i++ )
- {
- g_config.alphas_mods[i] = eeprom_read_word(addr);
- addr += 2;
- }
-
- g_config.brightness = eeprom_read_byte( addr++ );
- g_config.effect = eeprom_read_byte( addr++ );
- g_config.color_1.h = eeprom_read_byte( addr++ );
- g_config.color_1.s = eeprom_read_byte( addr++ );
- g_config.color_1.v = eeprom_read_byte( addr++ );
- g_config.color_2.h = eeprom_read_byte( addr++ );
- g_config.color_2.s = eeprom_read_byte( addr++ );
- g_config.color_2.v = eeprom_read_byte( addr++ );
+ eeprom_read_block( &g_config, EEPROM_BACKLIGHT_CONFIG_ADDR, sizeof(zeal_backlight_config) );
}
void backlight_config_save(void)
{
- // TODO: replace with #define bitmasks
- uint16_t flags = ( g_config.use_split_backspace ? (1<<0) : 0 ) |
- ( g_config.use_split_left_shift ? (1<<1) : 0 ) |
- ( g_config.use_split_right_shift ? (1<<2) : 0 ) |
- ( g_config.use_7u_spacebar ? (1<<3) : 0 ) |
- ( g_config.use_iso_enter ? (1<<4) : 0 );
-
- void *addr = EEPROM_BACKLIGHT_CONFIG_ADDR;
- eeprom_update_word( addr, flags );
- addr += 2;
-
- for ( int i=0; i<5; i++ )
- {
- eeprom_update_word( addr, g_config.alphas_mods[i] );
- addr += 2;
- }
-
- eeprom_update_byte( addr++, g_config.brightness );
- eeprom_update_byte( addr++, g_config.effect );
- eeprom_update_byte( addr++, g_config.color_1.h );
- eeprom_update_byte( addr++, g_config.color_1.s );
- eeprom_update_byte( addr++, g_config.color_1.v );
- eeprom_update_byte( addr++, g_config.color_2.h );
- eeprom_update_byte( addr++, g_config.color_2.s );
- eeprom_update_byte( addr++, g_config.color_2.v );
+ eeprom_update_block( &g_config, EEPROM_BACKLIGHT_CONFIG_ADDR, sizeof(zeal_backlight_config) );
}
void backlight_init_drivers(void)
{
- uint8_t enable_led_LB5 = g_config.use_split_backspace;
- uint8_t enable_led_LC15 = g_config.use_split_left_shift;
- uint8_t enable_led_LD8 = g_config.use_split_right_shift;
- uint8_t enable_led_LD13 = g_config.use_7u_spacebar ? 0 : 1;
-
sei();
// Initialize TWI
TWIInit();
IS31FL3731_init( ISSI_ADDR_1 );
IS31FL3731_init( ISSI_ADDR_2 );
-
- // This is how you define which LEDs are present in the matrix.
- // If you don't turn off missing LEDs, the LED driver doesn't work properly.
-
- // This is the bit pattern in the LED control registers
- // (per matrix)
- //
- // R08,R07,R06,R05,R04,R03,R02,R01
- // G08,G07,G06,G05,G04,G03,G02,R00
- // B08,B07,B06,B05,B04,B03,G01,G00
- // - , - , - , - , - ,B02,B01,B00
- // - , - , - , - , - , - , - , -
- // B17,B16,B15, - , - , - , - , -
- // G17,G16,B14,B13,B12,B11,B19,B09
- // R17,G15,G14,G13,G12,G11,G10,G09
- // R16,R15,R14,R13,R12,R11,R10,R09
- //
- // I could probably write some fancy wrapper for this to allow easy
- // reconfiguration, but it's really too much work and will probably use
- // up program/data. Easier to just work out which LEDs are not being used
- // by referencing the Nth LED per matrix and replacing some 1s with 0s below.
- //
- // Since this never needs to change at runtime, and only happens once,
- // it doesn't matter that it's 36 discrete calls ;-)
- //
-
- // Driver 1, Matrix A (LA0-LA17)
- IS31FL3731_write_register(ISSI_ADDR_1, 0x00, 0b11111111 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x02, 0b11111111 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x04, 0b11111111 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x06, 0b00000111 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x08, 0b00000000 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x0A, 0b11100000 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x0C, 0b11111111 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x0E, 0b11111111 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x10, 0b11111111 );
-
- // Driver 1, Matrix B (LB0-LB17)
- // Disabled LB6 LB7 LB8 LB15 LB16 LB17
- // Not present on Zeal60. Present on Zeal65
-
- IS31FL3731_write_register(ISSI_ADDR_1, 0x01, 0b00001111 | (enable_led_LB5<<4));
- IS31FL3731_write_register(ISSI_ADDR_1, 0x03, 0b00001111 | (enable_led_LB5<<4));
- IS31FL3731_write_register(ISSI_ADDR_1, 0x05, 0b00001111 | (enable_led_LB5<<4));
- IS31FL3731_write_register(ISSI_ADDR_1, 0x07, 0b00000111 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x09, 0b00000000 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x0B, 0b00000000 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x0D, 0b00111111 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x0F, 0b00111111 );
- IS31FL3731_write_register(ISSI_ADDR_1, 0x11, 0b00111111 );
-
- // Driver 2, Matrix A (LC0-LC17)
- IS31FL3731_write_register(ISSI_ADDR_2, 0x00, 0b11111111 );
- IS31FL3731_write_register(ISSI_ADDR_2, 0x02, 0b11111111 );
- IS31FL3731_write_register(ISSI_ADDR_2, 0x04, 0b11111111 );
- IS31FL3731_write_register(ISSI_ADDR_2, 0x06, 0b00000111 );
- IS31FL3731_write_register(ISSI_ADDR_2, 0x08, 0b00000000 );
- IS31FL3731_write_register(ISSI_ADDR_2, 0x0A, 0b11000000 | (enable_led_LC15<<5));
- IS31FL3731_write_register(ISSI_ADDR_2, 0x0C, 0b11111111 );
- IS31FL3731_write_register(ISSI_ADDR_2, 0x0E, 0b10111111 | (enable_led_LC15<<6));
- IS31FL3731_write_register(ISSI_ADDR_2, 0x10, 0b10111111 | (enable_led_LC15<<6));
-
- // Driver 2, Matrix B (LD0-LD17)
- IS31FL3731_write_register(ISSI_ADDR_2, 0x01, 0b01111111 | (enable_led_LD8<<7));
- IS31FL3731_write_register(ISSI_ADDR_2, 0x03, 0b01111111 | (enable_led_LD8<<7));
- IS31FL3731_write_register(ISSI_ADDR_2, 0x05, 0b01111111 | (enable_led_LD8<<7));
- IS31FL3731_write_register(ISSI_ADDR_2, 0x07, 0b00000111 );
- IS31FL3731_write_register(ISSI_ADDR_2, 0x09, 0b00000000 );
- IS31FL3731_write_register(ISSI_ADDR_2, 0x0B, 0b11100000 );
- IS31FL3731_write_register(ISSI_ADDR_2, 0x0D, 0b11101111 | (enable_led_LD13<<4));
- IS31FL3731_write_register(ISSI_ADDR_2, 0x0F, 0b11101111 | (enable_led_LD13<<4));
- IS31FL3731_write_register(ISSI_ADDR_2, 0x11, 0b11101111 | (enable_led_LD13<<4));
+
+ for ( int index = 0; index < 72; index++ )
+ {
+ // OR the possible "disabled" cases together, then NOT the result to get the enabled state
+ // LB6 LB7 LB8 LB15 LB16 LB17 not present on Zeal60, but present on Zeal65
+ bool enabled = !( ( index == 18+5 && !g_config.use_split_backspace ) || // LB5
+ ( index == 36+15 && !g_config.use_split_left_shift ) || // LC15
+ ( index == 54+8 && !g_config.use_split_right_shift ) || // LD8
+ ( index == 54+13 && g_config.use_7u_spacebar ) || // LD13
+ ( index == 18+6 ) || // LB6
+ ( index == 18+7 ) || // LB7
+ ( index == 18+8 ) || // LB8
+ ( index == 18+15 ) || // LB15
+ ( index == 18+16 ) || // LB16
+ ( index == 18+17 ) ); // LB17
+
+ // This only caches it for later
+ IS31FL3731_set_led_control_register( index, enabled, enabled, enabled );
+ }
+ // This actually updates the LED drivers
+ IS31FL3731_update_led_control_registers( ISSI_ADDR_1, ISSI_ADDR_2 );
// TODO: put the 1 second startup delay here?
@@ -686,10 +675,10 @@ void backlight_get_key_color( uint8_t led, HSV *hsv )
hsv->v = eeprom_read_byte(address+2);
}
-void backlight_set_key_color( uint8_t row, uint8_t col, HSV hsv )
+void backlight_set_key_color( uint8_t row, uint8_t column, HSV hsv )
{
uint8_t led;
- map_row_col_to_led( row, col, &led );
+ map_row_column_to_led( row, column, &led );
if ( led < 72 )
{
void *address = backlight_get_custom_key_color_eeprom_address(led);
@@ -698,3 +687,18 @@ void backlight_set_key_color( uint8_t row, uint8_t col, HSV hsv )
eeprom_update_byte(address+2, hsv.v);
}
}
+
+void backlight_test_led( uint8_t index, bool red, bool green, bool blue )
+{
+ for ( int i=0; i<72; i++ )
+ {
+ if ( i == index )
+ {
+ IS31FL3731_set_led_control_register( i, red, green, blue );
+ }
+ else
+ {
+ IS31FL3731_set_led_control_register( i, false, false, false );
+ }
+ }
+}
diff --git a/keyboards/zeal60/zeal_backlight.h b/keyboards/zeal60/zeal_backlight.h
index 1d4821fe8c98..de7c6e2eaa8f 100644
--- a/keyboards/zeal60/zeal_backlight.h
+++ b/keyboards/zeal60/zeal_backlight.h
@@ -5,23 +5,27 @@
#include
#include "zeal_color.h"
+#include "zeal_rpc.h"
-typedef struct zeal_backlight_config
+typedef struct
{
- bool use_split_backspace:1;
- bool use_split_left_shift:1;
- bool use_split_right_shift:1;
- bool use_7u_spacebar:1;
- bool use_iso_enter:1;
- uint16_t alphas_mods[5];
- uint8_t brightness;
- uint8_t effect;
-
- HSV color_1;
- HSV color_2;
-} zeal_backlight_config;
-
-void backlight_config_set_flags(uint16_t value);
+ bool use_split_backspace:1; // |
+ bool use_split_left_shift:1; // |
+ bool use_split_right_shift:1; // |
+ bool use_7u_spacebar:1; // |
+ bool use_iso_enter:1; // |
+ bool disable_when_usb_suspended:1; // |
+ bool __pad6:1; // |
+ bool __pad7:1; // 1 byte
+ uint8_t disable_after_timeout; // 1 byte
+ uint16_t alphas_mods[5]; // 10 bytes
+ uint8_t brightness; // 1 byte
+ uint8_t effect; // 1 byte
+ HSV color_1; // 3 bytes
+ HSV color_2; // 3 bytes
+} zeal_backlight_config; // = 20 bytes
+
+void backlight_config_set_values(msg_backlight_config_set_values *values);
void backlight_config_set_alphas_mods( uint16_t *value );
void backlight_config_load(void);
void backlight_config_save(void);
@@ -32,6 +36,8 @@ void backlight_timer_init(void);
void backlight_timer_enable(void);
void backlight_timer_disable(void);
+void backlight_set_suspend_state(bool state);
+
// This should not be called from an interrupt
// (eg. from a timer interrupt).
// Call this while idle (in between matrix scans).
@@ -57,6 +63,8 @@ void backlight_color_2_sat_decrease(void);
void *backlight_get_key_color_eeprom_address(uint8_t led);
void backlight_get_key_color( uint8_t led, HSV *hsv );
-void backlight_set_key_color( uint8_t row, uint8_t col, HSV hsv );
+void backlight_set_key_color( uint8_t row, uint8_t column, HSV hsv );
+
+void backlight_test_led( uint8_t index, bool red, bool green, bool blue );
#endif //ZEAL_BACKLIGHT_H
diff --git a/keyboards/zeal60/zeal_color.c b/keyboards/zeal60/zeal_color.c
index 9497dd5b2372..974f4156cc06 100644
--- a/keyboards/zeal60/zeal_color.c
+++ b/keyboards/zeal60/zeal_color.c
@@ -1,105 +1,101 @@
-
#include "zeal_color.h"
#include "progmem.h"
-
// Lightness curve using the CIE 1931 lightness formula
-//Generated by the python script provided in http://jared.geek.nz/2013/feb/linear-led-pwm
-const uint8_t DIM_CURVE_ZEAL[] PROGMEM = {
- 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
- 3, 4, 4, 4, 4, 4, 4, 5, 5, 5,
- 5, 5, 6, 6, 6, 6, 6, 7, 7, 7,
- 7, 8, 8, 8, 8, 9, 9, 9, 10, 10,
- 10, 10, 11, 11, 11, 12, 12, 12, 13, 13,
- 13, 14, 14, 15, 15, 15, 16, 16, 17, 17,
- 17, 18, 18, 19, 19, 20, 20, 21, 21, 22,
- 22, 23, 23, 24, 24, 25, 25, 26, 26, 27,
- 28, 28, 29, 29, 30, 31, 31, 32, 32, 33,
- 34, 34, 35, 36, 37, 37, 38, 39, 39, 40,
- 41, 42, 43, 43, 44, 45, 46, 47, 47, 48,
- 49, 50, 51, 52, 53, 54, 54, 55, 56, 57,
- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
- 68, 70, 71, 72, 73, 74, 75, 76, 77, 79,
- 80, 81, 82, 83, 85, 86, 87, 88, 90, 91,
- 92, 94, 95, 96, 98, 99, 100, 102, 103, 105,
- 106, 108, 109, 110, 112, 113, 115, 116, 118, 120,
- 121, 123, 124, 126, 128, 129, 131, 132, 134, 136,
- 138, 139, 141, 143, 145, 146, 148, 150, 152, 154,
- 155, 157, 159, 161, 163, 165, 167, 169, 171, 173,
- 175, 177, 179, 181, 183, 185, 187, 189, 191, 193,
- 196, 198, 200, 202, 204, 207, 209, 211, 214, 216,
- 218, 220, 223, 225, 228, 230, 232, 235, 237, 240,
- 242, 245, 247, 250, 252, 255,
+// Generated by the python script provided in http://jared.geek.nz/2013/feb/linear-led-pwm
+const uint8_t g_cie_curve[] PROGMEM = {
+ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
+ 3, 4, 4, 4, 4, 4, 4, 5, 5, 5,
+ 5, 5, 6, 6, 6, 6, 6, 7, 7, 7,
+ 7, 8, 8, 8, 8, 9, 9, 9, 10, 10,
+ 10, 10, 11, 11, 11, 12, 12, 12, 13, 13,
+ 13, 14, 14, 15, 15, 15, 16, 16, 17, 17,
+ 17, 18, 18, 19, 19, 20, 20, 21, 21, 22,
+ 22, 23, 23, 24, 24, 25, 25, 26, 26, 27,
+ 28, 28, 29, 29, 30, 31, 31, 32, 32, 33,
+ 34, 34, 35, 36, 37, 37, 38, 39, 39, 40,
+ 41, 42, 43, 43, 44, 45, 46, 47, 47, 48,
+ 49, 50, 51, 52, 53, 54, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 70, 71, 72, 73, 74, 75, 76, 77, 79,
+ 80, 81, 82, 83, 85, 86, 87, 88, 90, 91,
+ 92, 94, 95, 96, 98, 99, 100, 102, 103, 105,
+ 106, 108, 109, 110, 112, 113, 115, 116, 118, 120,
+ 121, 123, 124, 126, 128, 129, 131, 132, 134, 136,
+ 138, 139, 141, 143, 145, 146, 148, 150, 152, 154,
+ 155, 157, 159, 161, 163, 165, 167, 169, 171, 173,
+ 175, 177, 179, 181, 183, 185, 187, 189, 191, 193,
+ 196, 198, 200, 202, 204, 207, 209, 211, 214, 216,
+ 218, 220, 223, 225, 228, 230, 232, 235, 237, 240,
+ 242, 245, 247, 250, 252, 255,
};
-
RGB hsv_to_rgb( HSV hsv )
{
- RGB rgb;
- uint8_t region, p, q, t;
- uint16_t h, s, v, remainder;
+ RGB rgb;
+ uint8_t region, p, q, t;
+ uint16_t h, s, v, remainder;
- if (hsv.s == 0)
- {
- rgb.r = hsv.v;
- rgb.g = hsv.v;
- rgb.b = hsv.v;
- return rgb;
- }
+ if ( hsv.s == 0 )
+ {
+ rgb.r = hsv.v;
+ rgb.g = hsv.v;
+ rgb.b = hsv.v;
+ return rgb;
+ }
- h = hsv.h;
- s = hsv.s;
- v = hsv.v;
+ h = hsv.h;
+ s = hsv.s;
+ v = hsv.v;
- region = h / 43;
- remainder = (h - (region * 43)) * 6;
+ region = h / 43;
+ remainder = (h - (region * 43)) * 6;
- p = (v * (255 - s)) >> 8;
- q = (v * (255 - ((s * remainder) >> 8))) >> 8;
- t = (v * (255 - ((s * (255 - remainder)) >> 8))) >> 8;
+ p = (v * (255 - s)) >> 8;
+ q = (v * (255 - ((s * remainder) >> 8))) >> 8;
+ t = (v * (255 - ((s * (255 - remainder)) >> 8))) >> 8;
- switch (region)
- {
- case 0:
- rgb.r = v;
- rgb.g = t;
- rgb.b = p;
- break;
- case 1:
- rgb.r = q;
- rgb.g = v;
- rgb.b = p;
- break;
- case 2:
- rgb.r = p;
- rgb.g = v;
- rgb.b = t;
- break;
- case 3:
- rgb.r = p;
- rgb.g = q;
- rgb.b = v;
- break;
- case 4:
- rgb.r = t;
- rgb.g = p;
- rgb.b = v;
- break;
- default:
- rgb.r = v;
- rgb.g = p;
- rgb.b = q;
- break;
- }
+ switch ( region )
+ {
+ case 0:
+ rgb.r = v;
+ rgb.g = t;
+ rgb.b = p;
+ break;
+ case 1:
+ rgb.r = q;
+ rgb.g = v;
+ rgb.b = p;
+ break;
+ case 2:
+ rgb.r = p;
+ rgb.g = v;
+ rgb.b = t;
+ break;
+ case 3:
+ rgb.r = p;
+ rgb.g = q;
+ rgb.b = v;
+ break;
+ case 4:
+ rgb.r = t;
+ rgb.g = p;
+ rgb.b = v;
+ break;
+ default:
+ rgb.r = v;
+ rgb.g = p;
+ rgb.b = q;
+ break;
+ }
- rgb.r = pgm_read_byte(&DIM_CURVE_ZEAL[rgb.r]);
- rgb.g = pgm_read_byte(&DIM_CURVE_ZEAL[rgb.g]);
- rgb.b = pgm_read_byte(&DIM_CURVE_ZEAL[rgb.b]);
+ rgb.r = pgm_read_byte( &g_cie_curve[rgb.r] );
+ rgb.g = pgm_read_byte( &g_cie_curve[rgb.g] );
+ rgb.b = pgm_read_byte( &g_cie_curve[rgb.b] );
- return rgb;
+ return rgb;
}
-
diff --git a/keyboards/zeal60/zeal_eeprom.h b/keyboards/zeal60/zeal_eeprom.h
index 566c8fc27d3a..f88d9c2d9656 100644
--- a/keyboards/zeal60/zeal_eeprom.h
+++ b/keyboards/zeal60/zeal_eeprom.h
@@ -11,7 +11,7 @@
// Bump this every time we change what we store
// This will automatically reset the EEPROM with defaults
// and avoid loading invalid data from the EEPROM
-#define EEPROM_VERSION 0x00
+#define EEPROM_VERSION 0x01
#define EEPROM_VERSION_ADDR ((void*)34)
#define EEPROM_BACKLIGHT_CONFIG_ADDR ((void*)35)
diff --git a/keyboards/zeal60/zeal_keymap.c b/keyboards/zeal60/zeal_keymap.c
index f400c2fd47b5..b4d2b614cb28 100644
--- a/keyboards/zeal60/zeal_keymap.c
+++ b/keyboards/zeal60/zeal_keymap.c
@@ -6,25 +6,25 @@
#if USE_KEYMAPS_IN_EEPROM
-void *keymap_key_to_eeprom_address(uint8_t layer, uint8_t row, uint8_t col)
+void *keymap_key_to_eeprom_address(uint8_t layer, uint8_t row, uint8_t column)
{
// TODO: optimize this with some left shifts
return EEPROM_KEYMAP_ADDR + ( layer * MATRIX_ROWS * MATRIX_COLS * 2 ) +
- ( row * MATRIX_COLS * 2 ) + ( col * 2 );
+ ( row * MATRIX_COLS * 2 ) + ( column * 2 );
}
-uint16_t keymap_keycode_load(uint8_t layer, uint8_t row, uint8_t col)
+uint16_t keymap_keycode_load(uint8_t layer, uint8_t row, uint8_t column)
{
- void *address = keymap_key_to_eeprom_address(layer, row, col);
+ void *address = keymap_key_to_eeprom_address(layer, row, column);
// Big endian, so we can read/write EEPROM directly from host if we want
uint16_t keycode = eeprom_read_byte(address) << 8;
keycode |= eeprom_read_byte(address + 1);
return keycode;
}
-void keymap_keycode_save(uint8_t layer, uint8_t row, uint8_t col, uint16_t keycode)
+void keymap_keycode_save(uint8_t layer, uint8_t row, uint8_t column, uint16_t keycode)
{
- void *address = keymap_key_to_eeprom_address(layer, row, col);
+ void *address = keymap_key_to_eeprom_address(layer, row, column);
// Big endian, so we can read/write EEPROM directly from host if we want
eeprom_update_byte(address, (uint8_t)(keycode >> 8));
eeprom_update_byte(address+1, (uint8_t)(keycode & 0xFF));
@@ -37,9 +37,9 @@ void keymap_default_save(void)
{
for ( int row = 0; row < MATRIX_ROWS; row++ )
{
- for ( int col = 0; col < MATRIX_COLS; col++ )
+ for ( int column = 0; column < MATRIX_COLS; column++ )
{
- keymap_keycode_save(layer, row, col, KC_EENULL);
+ keymap_keycode_save(layer, row, column, KC_EENULL);
}
}
}
@@ -64,7 +64,7 @@ uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
}
}
- return pgm_read_word(&keymaps[layer][key.row][key.col]);
+ return pgm_read_word(&keymaps[layer][key.row][key.col]);
}
#endif // USE_KEYMAPS_IN_EEPROM
diff --git a/keyboards/zeal60/zeal_keymap.h b/keyboards/zeal60/zeal_keymap.h
index 5631400ae1f8..5578a0de12c5 100644
--- a/keyboards/zeal60/zeal_keymap.h
+++ b/keyboards/zeal60/zeal_keymap.h
@@ -6,9 +6,9 @@
#include "zeal_keycode.h"
-void *keymap_key_to_eeprom_address(uint8_t layer, uint8_t row, uint8_t col);
-uint16_t keymap_keycode_load(uint8_t layer, uint8_t row, uint8_t col);
-void keymap_keycode_save(uint8_t layer, uint8_t row, uint8_t col, uint16_t keycode);
+void *keymap_key_to_eeprom_address(uint8_t layer, uint8_t row, uint8_t column);
+uint16_t keymap_keycode_load(uint8_t layer, uint8_t row, uint8_t column);
+void keymap_keycode_save(uint8_t layer, uint8_t row, uint8_t column, uint16_t keycode);
void keymap_default_save(void);
// This overrides the one in quantum/keymap_common.c
diff --git a/keyboards/zeal60/zeal_rpc.h b/keyboards/zeal60/zeal_rpc.h
index a80971bc82c0..81831d01de27 100644
--- a/keyboards/zeal60/zeal_rpc.h
+++ b/keyboards/zeal60/zeal_rpc.h
@@ -3,7 +3,7 @@
#include "zeal_color.h"
-#define PROTOCOL_VERSION 0x0001
+#define PROTOCOL_VERSION 0x0002
enum
{
@@ -11,7 +11,7 @@ enum
id_keymap_keycode_load,
id_keymap_keycode_save,
id_keymap_default_save,
- id_backlight_config_set_flags,
+ id_backlight_config_set_values,
id_backlight_config_set_alphas_mods,
id_backlight_set_key_color,
@@ -37,7 +37,7 @@ typedef struct PACKED
{
uint8_t layer;
uint8_t row;
- uint8_t col;
+ uint8_t column;
uint16_t keycode;
} msg_keymap_keycode_load;
@@ -45,14 +45,20 @@ typedef struct PACKED
{
uint8_t layer;
uint8_t row;
- uint8_t col;
+ uint8_t column;
uint16_t keycode;
} msg_keymap_keycode_save;
typedef struct PACKED
{
- uint16_t flags;
-} msg_backlight_config_set_flags;
+ bool use_split_backspace:1;
+ bool use_split_left_shift:1;
+ bool use_split_right_shift:1;
+ bool use_7u_spacebar:1;
+ bool use_iso_enter:1;
+ bool disable_when_usb_suspended:1;
+ uint8_t disable_after_timeout;
+} msg_backlight_config_set_values;
typedef struct PACKED
{
@@ -62,7 +68,7 @@ typedef struct PACKED
typedef struct PACKED
{
uint8_t row;
- uint8_t col;
+ uint8_t column;
HSV hsv;
} msg_backlight_set_key_color;
diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c
index 0c81e8361213..3ceeaaf4e9c1 100644
--- a/tmk_core/common/avr/suspend.c
+++ b/tmk_core/common/avr/suspend.c
@@ -102,8 +102,12 @@ static void power_down(uint8_t wdto)
}
#endif
+__attribute__ ((weak)) void suspend_power_down_kb(void) {}
+
void suspend_power_down(void)
{
+ suspend_power_down_kb();
+
#ifndef NO_SUSPEND_POWER_DOWN
power_down(WDTO_15MS);
#endif
@@ -122,9 +126,13 @@ bool suspend_wakeup_condition(void)
return false;
}
+__attribute__ ((weak)) void suspend_wakeup_init_kb(void) {}
+
// run immediately after wakeup
void suspend_wakeup_init(void)
{
+ suspend_wakeup_init_kb();
+
// clear keyboard state
clear_keyboard();
#ifdef BACKLIGHT_ENABLE