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