Compare commits
3 Commits
ae7c2b9534
...
7cb29a6bba
Author | SHA1 | Date |
---|---|---|
Mark | 7cb29a6bba | |
Mark | 87029d00c1 | |
Mark | e3e82a1109 |
|
@ -1,23 +1,3 @@
|
||||||
/*
|
|
||||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
|
||||||
Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
|
|
||||||
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
|
||||||
Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "betalupi_ergodox.h"
|
#include "betalupi_ergodox.h"
|
||||||
#include "features/beta_rawhid.h"
|
#include "features/beta_rawhid.h"
|
||||||
|
|
||||||
|
@ -66,16 +46,16 @@ void matrix_init_kb(void) {
|
||||||
PORTE |= (1<<6);
|
PORTE |= (1<<6);
|
||||||
|
|
||||||
keyboard_config.raw = eeconfig_read_kb();
|
keyboard_config.raw = eeconfig_read_kb();
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
|
||||||
if (keyboard_config.rgb_matrix_enable) {
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
if (keyboard_config.rgb_matrix_enable) {
|
||||||
} else {
|
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||||
rgb_matrix_set_flags(LED_FLAG_NONE);
|
} else {
|
||||||
}
|
rgb_matrix_set_flags(LED_FLAG_NONE);
|
||||||
#endif
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
ergodox_blink_all_leds();
|
ergodox_blink_all_leds();
|
||||||
|
|
||||||
matrix_init_user();
|
matrix_init_user();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,139 +124,6 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef SWAP_HANDS_ENABLE
|
|
||||||
__attribute__ ((weak))
|
|
||||||
// swap-hands action needs a matrix to define the swap
|
|
||||||
const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Left hand, matrix positions */
|
|
||||||
{{0,13}, {1,13}, {2,13}, {3,13}, {4,13}, {5,13}},
|
|
||||||
{{0,12}, {1,12}, {2,12}, {3,12}, {4,12}, {5,12}},
|
|
||||||
{{0,11}, {1,11}, {2,11}, {3,11}, {4,11}, {5,11}},
|
|
||||||
{{0,10}, {1,10}, {2,10}, {3,10}, {4,10}, {5,10}},
|
|
||||||
{{0,9}, {1,9}, {2,9}, {3,9}, {4,9}, {5,9}},
|
|
||||||
{{0,8}, {1,8}, {2,8}, {3,8}, {4,8}, {5,8}},
|
|
||||||
{{0,7}, {1,7}, {2,7}, {3,7}, {4,7}, {5,7}},
|
|
||||||
/* Right hand, matrix positions */
|
|
||||||
{{0,6}, {1,6}, {2,6}, {3,6}, {4,6}, {5,6}},
|
|
||||||
{{0,5}, {1,5}, {2,5}, {3,5}, {4,5}, {5,5}},
|
|
||||||
{{0,4}, {1,4}, {2,4}, {3,4}, {4,4}, {5,4}},
|
|
||||||
{{0,3}, {1,3}, {2,3}, {3,3}, {4,3}, {5,3}},
|
|
||||||
{{0,2}, {1,2}, {2,2}, {3,2}, {4,2}, {5,2}},
|
|
||||||
{{0,1}, {1,1}, {2,1}, {3,1}, {4,1}, {5,1}},
|
|
||||||
{{0,0}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}},
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
|
||||||
|
|
||||||
void suspend_power_down_kb(void) {
|
|
||||||
rgb_matrix_set_suspend_state(true);
|
|
||||||
suspend_power_down_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
void suspend_wakeup_init_kb(void) {
|
|
||||||
rgb_matrix_set_suspend_state(false);
|
|
||||||
suspend_wakeup_init_user();
|
|
||||||
}
|
|
||||||
|
|
||||||
const is31_led g_is31_leds[RGB_MATRIX_LED_COUNT] = {
|
|
||||||
//{driver, R location, G location, B location}
|
|
||||||
|
|
||||||
{0, C3_1, C2_1, C4_1}, // LED1 on right
|
|
||||||
{0, C6_1, C5_1, C7_1}, // LED2
|
|
||||||
{0, C4_2, C3_2, C5_2}, // LED3
|
|
||||||
{0, C7_2, C6_2, C8_2}, // LED4
|
|
||||||
{0, C2_3, C1_3, C3_3}, // LED5
|
|
||||||
{0, C5_3, C4_3, C6_3}, // LED6
|
|
||||||
{0, C8_3, C7_3, C9_3}, // LED7
|
|
||||||
{0, C2_4, C1_4, C3_4}, // LED8
|
|
||||||
{0, C6_4, C5_4, C7_4}, // LED9
|
|
||||||
{0, C2_5, C1_5, C3_5}, // LED10
|
|
||||||
{0, C7_5, C6_5, C8_5}, // LED11
|
|
||||||
{0, C2_6, C1_6, C3_6}, // LED12
|
|
||||||
{0, C5_6, C4_6, C6_6}, // LED13
|
|
||||||
{0, C8_6, C7_6, C9_6}, // LED14
|
|
||||||
{0, C2_7, C1_7, C3_7}, // LED15
|
|
||||||
{0, C5_7, C4_7, C6_7}, // LED16
|
|
||||||
{0, C2_8, C1_8, C3_8}, // LED17
|
|
||||||
{0, C5_8, C4_8, C6_8}, // LED18
|
|
||||||
|
|
||||||
{0, C3_9, C2_9, C4_9}, // LED19
|
|
||||||
{0, C6_9, C5_9, C7_9}, // LED20
|
|
||||||
{0, C4_10, C3_10, C5_10}, // LED21
|
|
||||||
{0, C7_10, C6_10, C8_10}, // LED22
|
|
||||||
{0, C2_11, C1_11, C3_11}, // LED23
|
|
||||||
{0, C5_11, C4_11, C6_11}, // LED24
|
|
||||||
|
|
||||||
{1, C3_1, C2_1, C4_1}, // LED1 on left
|
|
||||||
{1, C6_1, C5_1, C7_1}, // LED2
|
|
||||||
{1, C4_2, C3_2, C5_2}, // LED3
|
|
||||||
{1, C7_2, C6_2, C8_2}, // LED4
|
|
||||||
{1, C2_3, C1_3, C3_3}, // LED5
|
|
||||||
{1, C5_3, C4_3, C6_3}, // LED6
|
|
||||||
{1, C8_3, C7_3, C9_3}, // LED7
|
|
||||||
{1, C2_4, C1_4, C3_4}, // LED8
|
|
||||||
{1, C6_4, C5_4, C7_4}, // LED9
|
|
||||||
{1, C2_5, C1_5, C3_5}, // LED10
|
|
||||||
{1, C7_5, C6_5, C8_5}, // LED11
|
|
||||||
{1, C2_6, C1_6, C3_6}, // LED12
|
|
||||||
{1, C5_6, C4_6, C6_6}, // LED13
|
|
||||||
{1, C8_6, C7_6, C9_6}, // LED14
|
|
||||||
{1, C2_7, C1_7, C3_7}, // LED15
|
|
||||||
{1, C5_7, C4_7, C6_7}, // LED16
|
|
||||||
{1, C2_8, C1_8, C3_8}, // LED17
|
|
||||||
{1, C5_8, C4_8, C6_8}, // LED18
|
|
||||||
|
|
||||||
{1, C3_9, C2_9, C4_9}, // LED19
|
|
||||||
{1, C6_9, C5_9, C7_9}, // LED20
|
|
||||||
{1, C4_10, C3_10, C5_10}, // LED21
|
|
||||||
{1, C7_10, C6_10, C8_10}, // LED22
|
|
||||||
{1, C2_11, C1_11, C3_11}, // LED23
|
|
||||||
{1, C5_11, C4_11, C6_11} // LED24
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
led_config_t g_led_config = { {
|
|
||||||
// Key matrix to LED index
|
|
||||||
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
|
|
||||||
{ 28, 33, 38, 43, 47, NO_LED },
|
|
||||||
{ 27, 32, 37, 42, 46, NO_LED },
|
|
||||||
{ 26, 31, 36, 41, 45, NO_LED },
|
|
||||||
{ 25, 30, 35, 40, 44, NO_LED },
|
|
||||||
{ 24, 29, 34, 39, NO_LED, NO_LED },
|
|
||||||
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
|
|
||||||
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
|
|
||||||
{ 0, 5, 10, 15, NO_LED, NO_LED },
|
|
||||||
{ 1, 6, 11, 16, 20, NO_LED },
|
|
||||||
{ 2, 7, 12, 17, 21, NO_LED },
|
|
||||||
{ 3, 8, 13, 18, 22, NO_LED },
|
|
||||||
{ 4, 9, 14, 19, 23, NO_LED },
|
|
||||||
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
|
|
||||||
}, {
|
|
||||||
// LED index to physical position
|
|
||||||
{ 137, 0 }, { 154, 0 }, { 172, 0 }, { 189, 0 }, { 206, 0 }, { 137, 12 },
|
|
||||||
{ 154, 12 }, { 172, 12 }, { 189, 12 }, { 206, 12 }, { 137, 25 }, { 154, 25 },
|
|
||||||
{ 172, 25 }, { 189, 25 }, { 206, 25 }, { 137, 38 }, { 154, 38 }, { 172, 38 },
|
|
||||||
{ 189, 38 }, { 206, 38 }, { 154, 51 }, { 172, 51 }, { 189, 51 }, { 206, 51 },
|
|
||||||
{ 86, 0 }, { 68, 0 }, { 51, 0 }, { 34, 0 }, { 17, 0 }, { 86, 12 },
|
|
||||||
{ 68, 12 }, { 51, 12 }, { 34, 12 }, { 17, 12 }, { 86, 25 }, { 68, 25 },
|
|
||||||
{ 51, 25 }, { 34, 25 }, { 17, 25 }, { 86, 38 }, { 68, 38 }, { 51, 38 },
|
|
||||||
{ 34, 38 }, { 17, 38 }, { 68, 51 }, { 51, 51 }, { 34, 51 }, { 17, 51 }
|
|
||||||
}, {
|
|
||||||
// LED index to flag
|
|
||||||
4, 4, 4, 4, 4, 4,
|
|
||||||
4, 4, 4, 4, 4, 4,
|
|
||||||
4, 4, 4, 4, 4, 4,
|
|
||||||
4, 4, 1, 1, 1, 1,
|
|
||||||
4, 4, 4, 4, 4, 4,
|
|
||||||
4, 4, 4, 4, 4, 4,
|
|
||||||
4, 4, 4, 4, 4, 4,
|
|
||||||
4, 4, 1, 1, 1, 1
|
|
||||||
} };
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void keyboard_post_init_kb(void) {
|
void keyboard_post_init_kb(void) {
|
||||||
|
|
||||||
// Start with matrix enabled
|
// Start with matrix enabled
|
||||||
|
@ -295,196 +142,6 @@ void keyboard_post_init_kb(void) {
|
||||||
keyboard_post_init_user();
|
keyboard_post_init_user();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case LED_LEVEL:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
keyboard_config.led_level++;
|
|
||||||
if (keyboard_config.led_level > 4) {
|
|
||||||
keyboard_config.led_level = 0;
|
|
||||||
}
|
|
||||||
ergodox_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4 );
|
|
||||||
eeconfig_update_kb(keyboard_config.raw);
|
|
||||||
layer_state_set_kb(layer_state);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#ifdef RGB_MATRIX_ENABLE
|
|
||||||
case TOGGLE_LAYER_COLOR:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
keyboard_config.disable_layer_led ^= 1;
|
|
||||||
if (keyboard_config.disable_layer_led) {
|
|
||||||
rgb_matrix_set_color_all(0, 0, 0);
|
|
||||||
}
|
|
||||||
eeconfig_update_kb(keyboard_config.raw);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case RGB_TOG:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
switch (rgb_matrix_get_flags()) {
|
|
||||||
case LED_FLAG_ALL: {
|
|
||||||
rgb_matrix_set_flags(LED_FLAG_NONE);
|
|
||||||
keyboard_config.rgb_matrix_enable = false;
|
|
||||||
rgb_matrix_set_color_all(0, 0, 0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default: {
|
|
||||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
|
||||||
keyboard_config.rgb_matrix_enable = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
eeconfig_update_kb(keyboard_config.raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
hid_send_state();
|
|
||||||
return false;
|
|
||||||
|
|
||||||
case RGB_MOD:
|
|
||||||
// Tell the host whenever we change animation mode.
|
|
||||||
hid_send_state();
|
|
||||||
return true;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Custom RGBLIGHT macros
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
#ifdef RGBLIGHT_NO_EEPROM
|
|
||||||
case LIGHT_TOG:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_toggle_noeeprom();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_MOD:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_step_noeeprom();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_HUI:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_increase_hue_noeeprom();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_HUD:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_decrease_hue_noeeprom();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_SAI:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_increase_sat_noeeprom();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_SAD:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_decrease_sat_noeeprom();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_VAI:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_increase_val_noeeprom();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_VAD:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_decrease_val_noeeprom();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_SPI:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_increase_speed_noeeprom();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_SPD:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_decrease_speed_noeeprom();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#else
|
|
||||||
case LIGHT_TOG:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_toggle();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_MOD:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_step();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_HUI:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_increase_hue();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_HUD:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_decrease_hue();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_SAI:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_increase_sat();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_SAD:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_decrease_sat();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_VAI:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_increase_val();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_VAD:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_decrease_val();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_SPI:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_increase_speed();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LIGHT_SPD:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_decrease_speed();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
return process_record_user(keycode, record);
|
|
||||||
}
|
|
||||||
|
|
||||||
layer_state_t layer_state_set_kb(layer_state_t state) {
|
|
||||||
//uint8_t layer = biton32(state);
|
|
||||||
|
|
||||||
hid_send_state(
|
|
||||||
.state = state
|
|
||||||
);
|
|
||||||
return layer_state_set_user(state);
|
|
||||||
};
|
|
||||||
|
|
||||||
// EEPROM is getting reset!
|
// EEPROM is getting reset!
|
||||||
void eeconfig_init_kb(void) {
|
void eeconfig_init_kb(void) {
|
||||||
keyboard_config.raw = 0;
|
keyboard_config.raw = 0;
|
||||||
|
@ -495,22 +152,30 @@ void eeconfig_init_kb(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
layer_state_t layer_state_set_kb(layer_state_t state) {
|
||||||
|
//uint8_t layer = biton32(state);
|
||||||
|
|
||||||
|
hid_send_state(
|
||||||
|
.state = state
|
||||||
|
);
|
||||||
|
return layer_state_set_user(state);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
void matrix_scan_kb(void) {
|
void matrix_scan_kb(void) {
|
||||||
|
|
||||||
#ifdef CAPS_LOCK_STATUS
|
#ifdef CAPS_LOCK_STATUS
|
||||||
led_t led_state = host_keyboard_led_state();
|
led_t led_state = host_keyboard_led_state();
|
||||||
if(led_state.caps_lock) {
|
if(led_state.caps_lock) {
|
||||||
ergodox_right_led_3_on();
|
ergodox_right_led_3_on();
|
||||||
}
|
|
||||||
else {
|
|
||||||
uint8_t layer = get_highest_layer(layer_state);
|
|
||||||
if(layer != 3) {
|
|
||||||
ergodox_right_led_3_off();
|
|
||||||
}
|
}
|
||||||
}
|
else {
|
||||||
#endif
|
uint8_t layer = get_highest_layer(layer_state);
|
||||||
|
if(layer != 3) {
|
||||||
|
ergodox_right_led_3_off();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
matrix_scan_user();
|
matrix_scan_user();
|
||||||
}
|
}
|
|
@ -1,29 +1,10 @@
|
||||||
/*
|
|
||||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
|
||||||
Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
|
|
||||||
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
|
||||||
Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "quantum.h"
|
#include "quantum.h"
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include "i2c_master.h"
|
#include "i2c_master.h"
|
||||||
|
#include "hardware/macros.h"
|
||||||
|
|
||||||
// I2C aliases and register addresses (see "mcp23018.md")
|
// I2C aliases and register addresses (see "mcp23018.md")
|
||||||
#define I2C_ADDR 0b0100000
|
#define I2C_ADDR 0b0100000
|
||||||
|
@ -122,186 +103,3 @@ typedef union {
|
||||||
} keyboard_config_t;
|
} keyboard_config_t;
|
||||||
|
|
||||||
extern keyboard_config_t keyboard_config;
|
extern keyboard_config_t keyboard_config;
|
||||||
|
|
||||||
// Turns {h, s, v} triples into a macro, so that
|
|
||||||
// the LEDS_ergodox macro can take them as inputs.
|
|
||||||
#define LC_HSV(h, s, v) {h, s, v}
|
|
||||||
|
|
||||||
// Rearrange a human-readable LED layout into the correct Ergodox order.
|
|
||||||
// LEDS_ergodox ONLY WORKS WITH MACROS.
|
|
||||||
// Don't input a standalone triple {h, s, v};
|
|
||||||
// Use LC_HSV if you need a single-instance color.
|
|
||||||
#define LEDS_ergodox( \
|
|
||||||
l01,l02,l03,l04,l05, \
|
|
||||||
l06,l07,l08,l09,l10, \
|
|
||||||
l11,l12,l13,l14,l15, \
|
|
||||||
l16,l17,l18,l19,l20, \
|
|
||||||
l21,l22,l23,l24, \
|
|
||||||
\
|
|
||||||
l25,l26,l27,l28,l29, \
|
|
||||||
l30,l31,l32,l33,l34, \
|
|
||||||
l35,l36,l37,l38,l39, \
|
|
||||||
l40,l41,l42,l43,l44, \
|
|
||||||
l45,l46,l47,l48 \
|
|
||||||
) \
|
|
||||||
{ \
|
|
||||||
l25,l26,l27,l28,l29, \
|
|
||||||
l30,l31,l32,l33,l34, \
|
|
||||||
l35,l36,l37,l38,l39, \
|
|
||||||
l40,l41,l42,l43,l44, \
|
|
||||||
l45,l46,l47,l48, \
|
|
||||||
\
|
|
||||||
l05,l04,l03,l02,l01, \
|
|
||||||
l10,l09,l08,l07,l06, \
|
|
||||||
l15,l14,l13,l12,l11, \
|
|
||||||
l20,l19,l18,l17,l16, \
|
|
||||||
l24,l23,l22,l21 \
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
LEFT HAND: LINES 115-122
|
|
||||||
RIGHT HAND: LINES 124-131
|
|
||||||
*/
|
|
||||||
#define LAYOUT_ergodox( \
|
|
||||||
\
|
|
||||||
k00,k01,k02,k03,k04,k05,k06, \
|
|
||||||
k10,k11,k12,k13,k14,k15,k16, \
|
|
||||||
k20,k21,k22,k23,k24,k25, \
|
|
||||||
k30,k31,k32,k33,k34,k35,k36, \
|
|
||||||
k40,k41,k42,k43,k44, \
|
|
||||||
k55,k56, \
|
|
||||||
k54, \
|
|
||||||
k53,k52,k51, \
|
|
||||||
\
|
|
||||||
k07,k08,k09,k0A,k0B,k0C,k0D, \
|
|
||||||
k17,k18,k19,k1A,k1B,k1C,k1D, \
|
|
||||||
k28,k29,k2A,k2B,k2C,k2D, \
|
|
||||||
k37,k38,k39,k3A,k3B,k3C,k3D, \
|
|
||||||
k49,k4A,k4B,k4C,k4D, \
|
|
||||||
k57,k58, \
|
|
||||||
k59, \
|
|
||||||
k5C,k5B,k5A ) \
|
|
||||||
\
|
|
||||||
/* matrix positions */ \
|
|
||||||
{ \
|
|
||||||
{ k00, k10, k20, k30, k40, KC_NO }, \
|
|
||||||
{ k01, k11, k21, k31, k41, k51 }, \
|
|
||||||
{ k02, k12, k22, k32, k42, k52 }, \
|
|
||||||
{ k03, k13, k23, k33, k43, k53 }, \
|
|
||||||
{ k04, k14, k24, k34, k44, k54 }, \
|
|
||||||
{ k05, k15, k25, k35, KC_NO, k55 }, \
|
|
||||||
{ k06, k16, KC_NO, k36, KC_NO, k56 }, \
|
|
||||||
\
|
|
||||||
{ k07, k17, KC_NO, k37,KC_NO, k57 }, \
|
|
||||||
{ k08, k18, k28, k38,KC_NO, k58 }, \
|
|
||||||
{ k09, k19, k29, k39, k49, k59 }, \
|
|
||||||
{ k0A, k1A, k2A, k3A, k4A, k5A }, \
|
|
||||||
{ k0B, k1B, k2B, k3B, k4B, k5B }, \
|
|
||||||
{ k0C, k1C, k2C, k3C, k4C, k5C }, \
|
|
||||||
{ k0D, k1D, k2D, k3D, k4D, KC_NO } \
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
LEFT HAND: LINES 158-165
|
|
||||||
RIGHT HAND: LINES 167-174
|
|
||||||
*/
|
|
||||||
#define LAYOUT_ergodox_80( \
|
|
||||||
\
|
|
||||||
k00,k01,k02,k03,k04,k05,k06, \
|
|
||||||
k10,k11,k12,k13,k14,k15,k16, \
|
|
||||||
k20,k21,k22,k23,k24,k25, \
|
|
||||||
k30,k31,k32,k33,k34,k35,k36, \
|
|
||||||
k40,k41,k42,k43,k44, \
|
|
||||||
k55,k56, \
|
|
||||||
k45,k46,k54, \
|
|
||||||
k53,k52,k51, \
|
|
||||||
\
|
|
||||||
k07,k08,k09,k0A,k0B,k0C,k0D, \
|
|
||||||
k17,k18,k19,k1A,k1B,k1C,k1D, \
|
|
||||||
k28,k29,k2A,k2B,k2C,k2D, \
|
|
||||||
k37,k38,k39,k3A,k3B,k3C,k3D, \
|
|
||||||
k49,k4A,k4B,k4C,k4D, \
|
|
||||||
k57,k58, \
|
|
||||||
k59,k47,k48, \
|
|
||||||
k5C,k5B,k5A ) \
|
|
||||||
\
|
|
||||||
/* matrix positions */ \
|
|
||||||
{ \
|
|
||||||
{ k00, k10, k20, k30, k40, KC_NO }, \
|
|
||||||
{ k01, k11, k21, k31, k41, k51 }, \
|
|
||||||
{ k02, k12, k22, k32, k42, k52 }, \
|
|
||||||
{ k03, k13, k23, k33, k43, k53 }, \
|
|
||||||
{ k04, k14, k24, k34, k44, k54 }, \
|
|
||||||
{ k05, k15, k25, k35, k45, k55 }, \
|
|
||||||
{ k06, k16, KC_NO, k36, k46, k56 }, \
|
|
||||||
\
|
|
||||||
{ k07, k17, KC_NO, k37, k47, k57 }, \
|
|
||||||
{ k08, k18, k28, k38, k48, k58 }, \
|
|
||||||
{ k09, k19, k29, k39, k49, k59 }, \
|
|
||||||
{ k0A, k1A, k2A, k3A, k4A, k5A }, \
|
|
||||||
{ k0B, k1B, k2B, k3B, k4B, k5B }, \
|
|
||||||
{ k0C, k1C, k2C, k3C, k4C, k5C }, \
|
|
||||||
{ k0D, k1D, k2D, k3D, k4D, KC_NO } \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- */
|
|
||||||
#define LAYOUT_ergodox_pretty( \
|
|
||||||
L00,L01,L02,L03,L04,L05,L06, R00,R01,R02,R03,R04,R05,R06, \
|
|
||||||
L10,L11,L12,L13,L14,L15,L16, R10,R11,R12,R13,R14,R15,R16, \
|
|
||||||
L20,L21,L22,L23,L24,L25, R21,R22,R23,R24,R25,R26, \
|
|
||||||
L30,L31,L32,L33,L34,L35,L36, R30,R31,R32,R33,R34,R35,R36, \
|
|
||||||
L40,L41,L42,L43,L44, R42,R43,R44,R45,R46, \
|
|
||||||
L55,L56, R50,R51, \
|
|
||||||
L54, R52, \
|
|
||||||
L53,L52,L51, R55,R54,R53 ) \
|
|
||||||
\
|
|
||||||
/* matrix positions */ \
|
|
||||||
{ \
|
|
||||||
{ L00, L10, L20, L30, L40, KC_NO }, \
|
|
||||||
{ L01, L11, L21, L31, L41, L51 }, \
|
|
||||||
{ L02, L12, L22, L32, L42, L52 }, \
|
|
||||||
{ L03, L13, L23, L33, L43, L53 }, \
|
|
||||||
{ L04, L14, L24, L34, L44, L54 }, \
|
|
||||||
{ L05, L15, L25, L35, KC_NO, L55 }, \
|
|
||||||
{ L06, L16, KC_NO, L36, KC_NO, L56 }, \
|
|
||||||
\
|
|
||||||
{ R00, R10, KC_NO, R30,KC_NO, R50 }, \
|
|
||||||
{ R01, R11, R21, R31,KC_NO, R51 }, \
|
|
||||||
{ R02, R12, R22, R32, R42, R52 }, \
|
|
||||||
{ R03, R13, R23, R33, R43, R53 }, \
|
|
||||||
{ R04, R14, R24, R34, R44, R54 }, \
|
|
||||||
{ R05, R15, R25, R35, R45, R55 }, \
|
|
||||||
{ R06, R16, R26, R36, R46, KC_NO } \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ---------- LEFT HAND ----------- ---------- RIGHT HAND ---------- */
|
|
||||||
#define LAYOUT_ergodox_pretty_80( \
|
|
||||||
L00,L01,L02,L03,L04,L05,L06, R00,R01,R02,R03,R04,R05,R06, \
|
|
||||||
L10,L11,L12,L13,L14,L15,L16, R10,R11,R12,R13,R14,R15,R16, \
|
|
||||||
L20,L21,L22,L23,L24,L25, R21,R22,R23,R24,R25,R26, \
|
|
||||||
L30,L31,L32,L33,L34,L35,L36, R30,R31,R32,R33,R34,R35,R36, \
|
|
||||||
L40,L41,L42,L43,L44, R42,R43,R44,R45,R46, \
|
|
||||||
L55,L56, R50,R51, \
|
|
||||||
L45,L46,L54, R52,R40,R41, \
|
|
||||||
L53,L52,L51, R55,R54,R53 ) \
|
|
||||||
\
|
|
||||||
/* matrix positions */ \
|
|
||||||
{ \
|
|
||||||
{ L00, L10, L20, L30, L40, KC_NO }, \
|
|
||||||
{ L01, L11, L21, L31, L41, L51 }, \
|
|
||||||
{ L02, L12, L22, L32, L42, L52 }, \
|
|
||||||
{ L03, L13, L23, L33, L43, L53 }, \
|
|
||||||
{ L04, L14, L24, L34, L44, L54 }, \
|
|
||||||
{ L05, L15, L25, L35, L45, L55 }, \
|
|
||||||
{ L06, L16, KC_NO, L36, L46, L56 }, \
|
|
||||||
\
|
|
||||||
{ R00, R10, KC_NO, R30, R40, R50 }, \
|
|
||||||
{ R01, R11, R21, R31, R41, R51 }, \
|
|
||||||
{ R02, R12, R22, R32, R42, R52 }, \
|
|
||||||
{ R03, R13, R23, R33, R43, R53 }, \
|
|
||||||
{ R04, R14, R24, R34, R44, R54 }, \
|
|
||||||
{ R05, R15, R25, R35, R45, R55 }, \
|
|
||||||
{ R06, R16, R26, R36, R46, KC_NO } \
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
#pragma once
|
||||||
|
#ifdef ENABLE_BETA_LEADER
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
bool beta_process_leader(uint16_t keycode, keyrecord_t *record);
|
||||||
|
|
||||||
|
void beta_leader_start(void);
|
||||||
|
void beta_leader_end(void);
|
||||||
|
bool beta_leader_check(void);
|
||||||
|
void beta_qk_leader_check(void);
|
||||||
|
void beta_qk_leader_start(void);
|
||||||
|
|
||||||
|
|
||||||
|
#define BETA_LEADER_EXTERNS() \
|
||||||
|
extern bool beta_leading; \
|
||||||
|
extern uint16_t beta_leader_time; \
|
||||||
|
extern uint16_t beta_leader_sequence[5]; \
|
||||||
|
extern uint8_t beta_leader_sequence_size
|
||||||
|
|
||||||
|
// Normal sequence
|
||||||
|
// These do the same thing as SEQ_X_KEYS from qmk.
|
||||||
|
#define BETA_SEQ_1_LONG(key) if (beta_leader_sequence[0] == (key) && beta_leader_sequence[1] == 0 && beta_leader_sequence[2] == 0 && beta_leader_sequence[3] == 0 && beta_leader_sequence[4] == 0 && timer_elapsed(beta_leader_time) > LEADER_TIMEOUT)
|
||||||
|
#define BETA_SEQ_2_LONG(key1, key2) if (beta_leader_sequence[0] == (key1) && beta_leader_sequence[1] == (key2) && beta_leader_sequence[2] == 0 && beta_leader_sequence[3] == 0 && beta_leader_sequence[4] == 0 && timer_elapsed(beta_leader_time) > LEADER_TIMEOUT)
|
||||||
|
#define BETA_SEQ_3_LONG(key1, key2, key3) if (beta_leader_sequence[0] == (key1) && beta_leader_sequence[1] == (key2) && beta_leader_sequence[2] == (key3) && beta_leader_sequence[3] == 0 && beta_leader_sequence[4] == 0 && timer_elapsed(beta_leader_time) > LEADER_TIMEOUT)
|
||||||
|
#define BETA_SEQ_4_LONG(key1, key2, key3, key4) if (beta_leader_sequence[0] == (key1) && beta_leader_sequence[1] == (key2) && beta_leader_sequence[2] == (key3) && beta_leader_sequence[3] == (key4) && beta_leader_sequence[4] == 0 && timer_elapsed(beta_leader_time) > LEADER_TIMEOUT)
|
||||||
|
#define BETA_SEQ_5_LONG(key1, key2, key3, key4, key5) if (leader_sequence[0] == (key1) && beta_leader_sequence[1] == (key2) && beta_leader_sequence[2] == (key3) && beta_leader_sequence[3] == (key4) && beta_leader_sequence[4] == (key5) && timer_elapsed(beta_leader_time) > LEADER_TIMEOUT)
|
||||||
|
|
||||||
|
// Short-circuit sequence
|
||||||
|
// These match as soon as a matching sequence is seen,
|
||||||
|
// not waiting for the leader timeout. They thus register
|
||||||
|
// immediately, but cannot be used in longer sequences.
|
||||||
|
#define BETA_SEQ_1_SHORT(key) if (beta_leader_sequence[0] == (key))
|
||||||
|
#define BETA_SEQ_2_SHORT(key1, key2) if (beta_leader_sequence[0] == (key1) && beta_leader_sequence[1] == (key2))
|
||||||
|
#define BETA_SEQ_3_SHORT(key1, key2, key3) if (beta_leader_sequence[0] == (key1) && beta_leader_sequence[1] == (key2))
|
||||||
|
#define BETA_SEQ_4_SHORT(key1, key2, key3, key4) if (beta_leader_sequence[0] == (key1) && beta_leader_sequence[1] == (key2))
|
||||||
|
#define BETA_SEQ_5_SHORT(key1, key2, key3, key4, key5) if (beta_leader_sequence[0] == (key1) && beta_leader_sequence[1] == (key2))
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,103 @@
|
||||||
|
#ifdef ENABLE_BETA_LEADER
|
||||||
|
|
||||||
|
#include "beta_leader.h"
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifndef LEADER_TIMEOUT
|
||||||
|
#define LEADER_TIMEOUT 300
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__attribute__((weak)) void beta_leader_start(void) {}
|
||||||
|
__attribute__((weak)) void beta_leader_end(void) {}
|
||||||
|
__attribute__((weak)) bool beta_leader_check(void) { return true; }
|
||||||
|
|
||||||
|
// Leader key stuff
|
||||||
|
bool beta_leading = false;
|
||||||
|
uint16_t beta_leader_time = 0;
|
||||||
|
bool beta_leader_change = false;
|
||||||
|
|
||||||
|
uint16_t beta_leader_sequence[5] = {0, 0, 0, 0, 0};
|
||||||
|
uint8_t beta_leader_sequence_size = 0;
|
||||||
|
|
||||||
|
void beta_qk_leader_start(void) {
|
||||||
|
if (beta_leading) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
beta_leader_start();
|
||||||
|
beta_leading = true;
|
||||||
|
beta_leader_time = timer_read();
|
||||||
|
beta_leader_sequence_size = 0;
|
||||||
|
beta_leader_change = false; // If true, run
|
||||||
|
memset(beta_leader_sequence, 0, sizeof(beta_leader_sequence));
|
||||||
|
}
|
||||||
|
|
||||||
|
void beta_qk_leader_check() {
|
||||||
|
|
||||||
|
#ifdef LEADER_NO_TIMEOUT
|
||||||
|
bool timeout = (beta_leading && beta_leader_sequence_size > 0 && timer_elapsed(beta_leader_time) > LEADER_TIMEOUT);
|
||||||
|
#else
|
||||||
|
bool timeout = (beta_leading && timer_elapsed(beta_leader_time) > LEADER_TIMEOUT);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (beta_leader_change || timeout) {
|
||||||
|
beta_leader_change = false;
|
||||||
|
|
||||||
|
if (
|
||||||
|
beta_leader_sequence[beta_leader_sequence_size - 1] == (KC_LEAD)
|
||||||
|
) {
|
||||||
|
beta_leading = false;
|
||||||
|
beta_leader_end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (timeout) {
|
||||||
|
beta_leading = false;
|
||||||
|
beta_leader_end();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!beta_leader_check()) {
|
||||||
|
beta_leading = false;
|
||||||
|
beta_leader_end();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool beta_process_leader(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
// Leader key set-up
|
||||||
|
if (record->event.pressed) {
|
||||||
|
if (beta_leading) {
|
||||||
|
# ifndef LEADER_NO_TIMEOUT
|
||||||
|
if (timer_elapsed(beta_leader_time) < LEADER_TIMEOUT)
|
||||||
|
# endif // LEADER_NO_TIMEOUT
|
||||||
|
{
|
||||||
|
# ifndef LEADER_KEY_STRICT_KEY_PROCESSING
|
||||||
|
if (IS_QK_MOD_TAP(keycode)) {
|
||||||
|
keycode = QK_MOD_TAP_GET_TAP_KEYCODE(keycode);
|
||||||
|
} else if (IS_QK_LAYER_TAP(keycode)) {
|
||||||
|
keycode = QK_LAYER_TAP_GET_TAP_KEYCODE(keycode);
|
||||||
|
}
|
||||||
|
# endif // LEADER_KEY_STRICT_KEY_PROCESSING
|
||||||
|
if (beta_leader_sequence_size < ARRAY_SIZE(beta_leader_sequence)) {
|
||||||
|
beta_leader_sequence[beta_leader_sequence_size] = keycode;
|
||||||
|
beta_leader_sequence_size++;
|
||||||
|
beta_leader_change = true;
|
||||||
|
} else {
|
||||||
|
beta_leading = false;
|
||||||
|
beta_leader_end();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
# ifdef LEADER_PER_KEY_TIMING
|
||||||
|
beta_leader_time = timer_read();
|
||||||
|
# endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (keycode == QK_LEADER) {
|
||||||
|
beta_qk_leader_start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,34 @@
|
||||||
|
// Turns {h, s, v} triples into a macro, so that
|
||||||
|
// the LEDS_ergodox macro can take them as inputs.
|
||||||
|
#define LC_HSV(h, s, v) {h, s, v}
|
||||||
|
|
||||||
|
// Rearrange a human-readable LED layout into the correct Ergodox order.
|
||||||
|
// LEDS_ergodox ONLY WORKS WITH MACROS.
|
||||||
|
// Don't input a standalone triple {h, s, v};
|
||||||
|
// Use LC_HSV if you need a single-instance color.
|
||||||
|
#define LEDS_ergodox( \
|
||||||
|
l01,l02,l03,l04,l05, \
|
||||||
|
l06,l07,l08,l09,l10, \
|
||||||
|
l11,l12,l13,l14,l15, \
|
||||||
|
l16,l17,l18,l19,l20, \
|
||||||
|
l21,l22,l23,l24, \
|
||||||
|
\
|
||||||
|
l25,l26,l27,l28,l29, \
|
||||||
|
l30,l31,l32,l33,l34, \
|
||||||
|
l35,l36,l37,l38,l39, \
|
||||||
|
l40,l41,l42,l43,l44, \
|
||||||
|
l45,l46,l47,l48 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
l25,l26,l27,l28,l29, \
|
||||||
|
l30,l31,l32,l33,l34, \
|
||||||
|
l35,l36,l37,l38,l39, \
|
||||||
|
l40,l41,l42,l43,l44, \
|
||||||
|
l45,l46,l47,l48, \
|
||||||
|
\
|
||||||
|
l05,l04,l03,l02,l01, \
|
||||||
|
l10,l09,l08,l07,l06, \
|
||||||
|
l15,l14,l13,l12,l11, \
|
||||||
|
l20,l19,l18,l17,l16, \
|
||||||
|
l24,l23,l22,l21 \
|
||||||
|
}
|
|
@ -0,0 +1,133 @@
|
||||||
|
#include "betalupi_ergodox.h"
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef SWAP_HANDS_ENABLE
|
||||||
|
__attribute__ ((weak))
|
||||||
|
// swap-hands action needs a matrix to define the swap
|
||||||
|
const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Left hand, matrix positions */
|
||||||
|
{{0,13}, {1,13}, {2,13}, {3,13}, {4,13}, {5,13}},
|
||||||
|
{{0,12}, {1,12}, {2,12}, {3,12}, {4,12}, {5,12}},
|
||||||
|
{{0,11}, {1,11}, {2,11}, {3,11}, {4,11}, {5,11}},
|
||||||
|
{{0,10}, {1,10}, {2,10}, {3,10}, {4,10}, {5,10}},
|
||||||
|
{{0,9}, {1,9}, {2,9}, {3,9}, {4,9}, {5,9}},
|
||||||
|
{{0,8}, {1,8}, {2,8}, {3,8}, {4,8}, {5,8}},
|
||||||
|
{{0,7}, {1,7}, {2,7}, {3,7}, {4,7}, {5,7}},
|
||||||
|
/* Right hand, matrix positions */
|
||||||
|
{{0,6}, {1,6}, {2,6}, {3,6}, {4,6}, {5,6}},
|
||||||
|
{{0,5}, {1,5}, {2,5}, {3,5}, {4,5}, {5,5}},
|
||||||
|
{{0,4}, {1,4}, {2,4}, {3,4}, {4,4}, {5,4}},
|
||||||
|
{{0,3}, {1,3}, {2,3}, {3,3}, {4,3}, {5,3}},
|
||||||
|
{{0,2}, {1,2}, {2,2}, {3,2}, {4,2}, {5,2}},
|
||||||
|
{{0,1}, {1,1}, {2,1}, {3,1}, {4,1}, {5,1}},
|
||||||
|
{{0,0}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}},
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
void suspend_power_down_kb(void) {
|
||||||
|
rgb_matrix_set_suspend_state(true);
|
||||||
|
suspend_power_down_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
void suspend_wakeup_init_kb(void) {
|
||||||
|
rgb_matrix_set_suspend_state(false);
|
||||||
|
suspend_wakeup_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
const is31_led g_is31_leds[RGB_MATRIX_LED_COUNT] = {
|
||||||
|
//{driver, R location, G location, B location}
|
||||||
|
|
||||||
|
{0, C3_1, C2_1, C4_1}, // LED1 on right
|
||||||
|
{0, C6_1, C5_1, C7_1}, // LED2
|
||||||
|
{0, C4_2, C3_2, C5_2}, // LED3
|
||||||
|
{0, C7_2, C6_2, C8_2}, // LED4
|
||||||
|
{0, C2_3, C1_3, C3_3}, // LED5
|
||||||
|
{0, C5_3, C4_3, C6_3}, // LED6
|
||||||
|
{0, C8_3, C7_3, C9_3}, // LED7
|
||||||
|
{0, C2_4, C1_4, C3_4}, // LED8
|
||||||
|
{0, C6_4, C5_4, C7_4}, // LED9
|
||||||
|
{0, C2_5, C1_5, C3_5}, // LED10
|
||||||
|
{0, C7_5, C6_5, C8_5}, // LED11
|
||||||
|
{0, C2_6, C1_6, C3_6}, // LED12
|
||||||
|
{0, C5_6, C4_6, C6_6}, // LED13
|
||||||
|
{0, C8_6, C7_6, C9_6}, // LED14
|
||||||
|
{0, C2_7, C1_7, C3_7}, // LED15
|
||||||
|
{0, C5_7, C4_7, C6_7}, // LED16
|
||||||
|
{0, C2_8, C1_8, C3_8}, // LED17
|
||||||
|
{0, C5_8, C4_8, C6_8}, // LED18
|
||||||
|
|
||||||
|
{0, C3_9, C2_9, C4_9}, // LED19
|
||||||
|
{0, C6_9, C5_9, C7_9}, // LED20
|
||||||
|
{0, C4_10, C3_10, C5_10}, // LED21
|
||||||
|
{0, C7_10, C6_10, C8_10}, // LED22
|
||||||
|
{0, C2_11, C1_11, C3_11}, // LED23
|
||||||
|
{0, C5_11, C4_11, C6_11}, // LED24
|
||||||
|
|
||||||
|
{1, C3_1, C2_1, C4_1}, // LED1 on left
|
||||||
|
{1, C6_1, C5_1, C7_1}, // LED2
|
||||||
|
{1, C4_2, C3_2, C5_2}, // LED3
|
||||||
|
{1, C7_2, C6_2, C8_2}, // LED4
|
||||||
|
{1, C2_3, C1_3, C3_3}, // LED5
|
||||||
|
{1, C5_3, C4_3, C6_3}, // LED6
|
||||||
|
{1, C8_3, C7_3, C9_3}, // LED7
|
||||||
|
{1, C2_4, C1_4, C3_4}, // LED8
|
||||||
|
{1, C6_4, C5_4, C7_4}, // LED9
|
||||||
|
{1, C2_5, C1_5, C3_5}, // LED10
|
||||||
|
{1, C7_5, C6_5, C8_5}, // LED11
|
||||||
|
{1, C2_6, C1_6, C3_6}, // LED12
|
||||||
|
{1, C5_6, C4_6, C6_6}, // LED13
|
||||||
|
{1, C8_6, C7_6, C9_6}, // LED14
|
||||||
|
{1, C2_7, C1_7, C3_7}, // LED15
|
||||||
|
{1, C5_7, C4_7, C6_7}, // LED16
|
||||||
|
{1, C2_8, C1_8, C3_8}, // LED17
|
||||||
|
{1, C5_8, C4_8, C6_8}, // LED18
|
||||||
|
|
||||||
|
{1, C3_9, C2_9, C4_9}, // LED19
|
||||||
|
{1, C6_9, C5_9, C7_9}, // LED20
|
||||||
|
{1, C4_10, C3_10, C5_10}, // LED21
|
||||||
|
{1, C7_10, C6_10, C8_10}, // LED22
|
||||||
|
{1, C2_11, C1_11, C3_11}, // LED23
|
||||||
|
{1, C5_11, C4_11, C6_11} // LED24
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
led_config_t g_led_config = { {
|
||||||
|
// Key matrix to LED index
|
||||||
|
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
|
||||||
|
{ 28, 33, 38, 43, 47, NO_LED },
|
||||||
|
{ 27, 32, 37, 42, 46, NO_LED },
|
||||||
|
{ 26, 31, 36, 41, 45, NO_LED },
|
||||||
|
{ 25, 30, 35, 40, 44, NO_LED },
|
||||||
|
{ 24, 29, 34, 39, NO_LED, NO_LED },
|
||||||
|
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
|
||||||
|
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
|
||||||
|
{ 0, 5, 10, 15, NO_LED, NO_LED },
|
||||||
|
{ 1, 6, 11, 16, 20, NO_LED },
|
||||||
|
{ 2, 7, 12, 17, 21, NO_LED },
|
||||||
|
{ 3, 8, 13, 18, 22, NO_LED },
|
||||||
|
{ 4, 9, 14, 19, 23, NO_LED },
|
||||||
|
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
|
||||||
|
}, {
|
||||||
|
// LED index to physical position
|
||||||
|
{ 137, 0 }, { 154, 0 }, { 172, 0 }, { 189, 0 }, { 206, 0 }, { 137, 12 },
|
||||||
|
{ 154, 12 }, { 172, 12 }, { 189, 12 }, { 206, 12 }, { 137, 25 }, { 154, 25 },
|
||||||
|
{ 172, 25 }, { 189, 25 }, { 206, 25 }, { 137, 38 }, { 154, 38 }, { 172, 38 },
|
||||||
|
{ 189, 38 }, { 206, 38 }, { 154, 51 }, { 172, 51 }, { 189, 51 }, { 206, 51 },
|
||||||
|
{ 86, 0 }, { 68, 0 }, { 51, 0 }, { 34, 0 }, { 17, 0 }, { 86, 12 },
|
||||||
|
{ 68, 12 }, { 51, 12 }, { 34, 12 }, { 17, 12 }, { 86, 25 }, { 68, 25 },
|
||||||
|
{ 51, 25 }, { 34, 25 }, { 17, 25 }, { 86, 38 }, { 68, 38 }, { 51, 38 },
|
||||||
|
{ 34, 38 }, { 17, 38 }, { 68, 51 }, { 51, 51 }, { 34, 51 }, { 17, 51 }
|
||||||
|
}, {
|
||||||
|
// LED index to flag
|
||||||
|
4, 4, 4, 4, 4, 4,
|
||||||
|
4, 4, 4, 4, 4, 4,
|
||||||
|
4, 4, 4, 4, 4, 4,
|
||||||
|
4, 4, 1, 1, 1, 1,
|
||||||
|
4, 4, 4, 4, 4, 4,
|
||||||
|
4, 4, 4, 4, 4, 4,
|
||||||
|
4, 4, 4, 4, 4, 4,
|
||||||
|
4, 4, 1, 1, 1, 1
|
||||||
|
} };
|
||||||
|
#endif
|
|
@ -18,97 +18,386 @@
|
||||||
"layouts": {
|
"layouts": {
|
||||||
"LAYOUT_ergodox": {
|
"LAYOUT_ergodox": {
|
||||||
"layout": [
|
"layout": [
|
||||||
{"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25},
|
{"matrix": [0, 0], "x": 0, "y": 0.375, "w": 1.5},
|
||||||
{"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5},
|
{"matrix": [1, 0], "x": 1.5, "y": 0.375},
|
||||||
{"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25},
|
{"matrix": [2, 0], "x": 2.5, "y": 0.125},
|
||||||
{"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5},
|
{"matrix": [3, 0], "x": 3.5, "y": 0},
|
||||||
{"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125},
|
{"matrix": [4, 0], "x": 4.5, "y": 0.125},
|
||||||
|
{"matrix": [5, 0], "x": 5.5, "y": 0.25},
|
||||||
|
{"matrix": [6, 0], "x": 6.5, "y": 0.25},
|
||||||
|
|
||||||
{"x":6, "y":5}, {"x":7, "y":5},
|
{"matrix": [0, 1], "x": 0, "y": 1.375, "w": 1.5},
|
||||||
{"x":7, "y":6},
|
{"matrix": [1, 1], "x": 1.5, "y": 1.375},
|
||||||
{"x":5, "y":6, "h":2}, {"x":6, "y":6, "h":2}, {"x":7, "y":7},
|
{"matrix": [2, 1], "x": 2.5, "y": 1.125},
|
||||||
|
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||||
|
{"matrix": [4, 1], "x": 4.5, "y": 1.125},
|
||||||
|
{"matrix": [5, 1], "x": 5.5, "y": 1.25},
|
||||||
|
{"matrix": [6, 1], "x": 6.5, "y": 1.25, "h": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [0, 2], "x": 0, "y": 2.375, "w": 1.5},
|
||||||
|
{"matrix": [1, 2], "x": 1.5, "y": 2.375},
|
||||||
|
{"matrix": [2, 2], "x": 2.5, "y": 2.125},
|
||||||
|
{"matrix": [3, 2], "x": 3.5, "y": 2},
|
||||||
|
{"matrix": [4, 2], "x": 4.5, "y": 2.125},
|
||||||
|
{"matrix": [5, 2], "x": 5.5, "y": 2.25},
|
||||||
|
|
||||||
{"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5},
|
{"matrix": [0, 3], "x": 0, "y": 3.375, "w": 1.5},
|
||||||
{"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5},
|
{"matrix": [1, 3], "x": 1.5, "y": 3.375},
|
||||||
{"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5},
|
{"matrix": [2, 3], "x": 2.5, "y": 3.125},
|
||||||
{"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5},
|
{"matrix": [3, 3], "x": 3.5, "y": 3},
|
||||||
{"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375},
|
{"matrix": [4, 3], "x": 4.5, "y": 3.125},
|
||||||
|
{"matrix": [5, 3], "x": 5.5, "y": 3.25},
|
||||||
|
{"matrix": [6, 3], "x": 6.5, "y": 2.75, "h": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [0, 4], "x": 0.5, "y": 4.375},
|
||||||
|
{"matrix": [1, 4], "x": 1.5, "y": 4.375},
|
||||||
|
{"matrix": [2, 4], "x": 2.5, "y": 4.125},
|
||||||
|
{"matrix": [3, 4], "x": 3.5, "y": 4},
|
||||||
|
{"matrix": [4, 4], "x": 4.5, "y": 4.125},
|
||||||
|
|
||||||
{"x":9, "y":5}, {"x":10, "y":5},
|
{"matrix": [5, 5], "x": 6, "y": 5},
|
||||||
{"x":9, "y":6},
|
{"matrix": [6, 5], "x": 7, "y": 5},
|
||||||
{"x":9, "y":7}, {"x":10, "y":6, "h":2}, {"x":11, "y":6, "h":2}
|
{"matrix": [4, 5], "x": 7, "y": 6},
|
||||||
|
{"matrix": [3, 5], "x": 5, "y": 6, "h": 2},
|
||||||
|
{"matrix": [2, 5], "x": 6, "y": 6, "h": 2},
|
||||||
|
{"matrix": [1, 5], "x": 7, "y": 7},
|
||||||
|
|
||||||
|
{"matrix": [7, 0], "x": 9.5, "y": 0.25},
|
||||||
|
{"matrix": [8, 0], "x": 10.5, "y": 0.25},
|
||||||
|
{"matrix": [9, 0], "x": 11.5, "y": 0.125},
|
||||||
|
{"matrix": [10, 0], "x": 12.5, "y": 0},
|
||||||
|
{"matrix": [11, 0], "x": 13.5, "y": 0.125},
|
||||||
|
{"matrix": [12, 0], "x": 14.5, "y": 0.375},
|
||||||
|
{"matrix": [13, 0], "x": 15.5, "y": 0.375, "w": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [7, 1], "x": 9.5, "y": 1.25, "h": 1.5},
|
||||||
|
{"matrix": [8, 1], "x": 10.5, "y": 1.25},
|
||||||
|
{"matrix": [9, 1], "x": 11.5, "y": 1.125},
|
||||||
|
{"matrix": [10, 1], "x": 12.5, "y": 1},
|
||||||
|
{"matrix": [11, 1], "x": 13.5, "y": 1.125},
|
||||||
|
{"matrix": [12, 1], "x": 14.5, "y": 1.375},
|
||||||
|
{"matrix": [13, 1], "x": 15.5, "y": 1.375, "w": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [8, 2], "x": 10.5, "y": 2.25},
|
||||||
|
{"matrix": [9, 2], "x": 11.5, "y": 2.125},
|
||||||
|
{"matrix": [10, 2], "x": 12.5, "y": 2},
|
||||||
|
{"matrix": [11, 2], "x": 13.5, "y": 2.125},
|
||||||
|
{"matrix": [12, 2], "x": 14.5, "y": 2.375},
|
||||||
|
{"matrix": [13, 2], "x": 15.5, "y": 2.375, "w": 1.5},
|
||||||
|
{"matrix": [7, 3], "x": 9.5, "y": 2.75, "h": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [8, 3], "x": 10.5, "y": 3.25},
|
||||||
|
{"matrix": [9, 3], "x": 11.5, "y": 3.125},
|
||||||
|
{"matrix": [10, 3], "x": 12.5, "y": 3},
|
||||||
|
{"matrix": [11, 3], "x": 13.5, "y": 3.125},
|
||||||
|
{"matrix": [12, 3], "x": 14.5, "y": 3.375},
|
||||||
|
{"matrix": [13, 3], "x": 15.5, "y": 3.375, "w": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [9, 4], "x": 11.5, "y": 4.125},
|
||||||
|
{"matrix": [10, 4], "x": 12.5, "y": 4},
|
||||||
|
{"matrix": [11, 4], "x": 13.5, "y": 4.125},
|
||||||
|
{"matrix": [12, 4], "x": 14.5, "y": 4.375},
|
||||||
|
{"matrix": [13, 4], "x": 15.5, "y": 4.375},
|
||||||
|
|
||||||
|
{"matrix": [7, 5], "x": 9, "y": 5},
|
||||||
|
{"matrix": [8, 5], "x": 10, "y": 5},
|
||||||
|
{"matrix": [9, 5], "x": 9, "y": 6},
|
||||||
|
{"matrix": [12, 5], "x": 9, "y": 7},
|
||||||
|
{"matrix": [11, 5], "x": 10, "y": 6, "h": 2},
|
||||||
|
{"matrix": [10, 5], "x": 11, "y": 6, "h": 2}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"LAYOUT_ergodox_pretty": {
|
"LAYOUT_ergodox_pretty": {
|
||||||
"layout": [
|
"layout": [
|
||||||
{"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25},
|
{"matrix": [0, 0], "x": 0, "y": 0.375, "w": 1.5},
|
||||||
{"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5},
|
{"matrix": [1, 0], "x": 1.5, "y": 0.375},
|
||||||
|
{"matrix": [2, 0], "x": 2.5, "y": 0.125},
|
||||||
|
{"matrix": [3, 0], "x": 3.5, "y": 0},
|
||||||
|
{"matrix": [4, 0], "x": 4.5, "y": 0.125},
|
||||||
|
{"matrix": [5, 0], "x": 5.5, "y": 0.25},
|
||||||
|
{"matrix": [6, 0], "x": 6.5, "y": 0.25},
|
||||||
|
|
||||||
{"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5},
|
{"matrix": [7, 0], "x": 9.5, "y": 0.25},
|
||||||
{"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5},
|
{"matrix": [8, 0], "x": 10.5, "y": 0.25},
|
||||||
|
{"matrix": [9, 0], "x": 11.5, "y": 0.125},
|
||||||
|
{"matrix": [10, 0], "x": 12.5, "y": 0},
|
||||||
|
{"matrix": [11, 0], "x": 13.5, "y": 0.125},
|
||||||
|
{"matrix": [12, 0], "x": 14.5, "y": 0.375},
|
||||||
|
{"matrix": [13, 0], "x": 15.5, "y": 0.375, "w": 1.5},
|
||||||
|
|
||||||
{"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25},
|
{"matrix": [0, 1], "x": 0, "y": 1.375, "w": 1.5},
|
||||||
{"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5},
|
{"matrix": [1, 1], "x": 1.5, "y": 1.375},
|
||||||
|
{"matrix": [2, 1], "x": 2.5, "y": 1.125},
|
||||||
|
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||||
|
{"matrix": [4, 1], "x": 4.5, "y": 1.125},
|
||||||
|
{"matrix": [5, 1], "x": 5.5, "y": 1.25},
|
||||||
|
{"matrix": [6, 1], "x": 6.5, "y": 1.25, "h": 1.5},
|
||||||
|
|
||||||
{"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5},
|
{"matrix": [7, 1], "x": 9.5, "y": 1.25, "h": 1.5},
|
||||||
{"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5},
|
{"matrix": [8, 1], "x": 10.5, "y": 1.25},
|
||||||
|
{"matrix": [9, 1], "x": 11.5, "y": 1.125},
|
||||||
|
{"matrix": [10, 1], "x": 12.5, "y": 1},
|
||||||
|
{"matrix": [11, 1], "x": 13.5, "y": 1.125},
|
||||||
|
{"matrix": [12, 1], "x": 14.5, "y": 1.375},
|
||||||
|
{"matrix": [13, 1], "x": 15.5, "y": 1.375, "w": 1.5},
|
||||||
|
|
||||||
{"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125},
|
{"matrix": [0, 2], "x": 0, "y": 2.375, "w": 1.5},
|
||||||
{"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375},
|
{"matrix": [1, 2], "x": 1.5, "y": 2.375},
|
||||||
|
{"matrix": [2, 2], "x": 2.5, "y": 2.125},
|
||||||
|
{"matrix": [3, 2], "x": 3.5, "y": 2},
|
||||||
|
{"matrix": [4, 2], "x": 4.5, "y": 2.125},
|
||||||
|
{"matrix": [5, 2], "x": 5.5, "y": 2.25},
|
||||||
|
|
||||||
{"x":6, "y":5}, {"x":7, "y":5}, {"x":9, "y":5}, {"x":10, "y":5},
|
{"matrix": [8, 2], "x": 10.5, "y": 2.25},
|
||||||
{"x":7, "y":6}, {"x":9, "y":6},
|
{"matrix": [9, 2], "x": 11.5, "y": 2.125},
|
||||||
{"x":5, "y":6, "h":2}, {"x":6, "y":6, "h":2}, {"x":7, "y":7}, {"x":9, "y":7}, {"x":10, "y":6, "h":2}, {"x":11, "y":6, "h":2}
|
{"matrix": [10, 2], "x": 12.5, "y": 2},
|
||||||
|
{"matrix": [11, 2], "x": 13.5, "y": 2.125},
|
||||||
|
{"matrix": [12, 2], "x": 14.5, "y": 2.375},
|
||||||
|
{"matrix": [13, 2], "x": 15.5, "y": 2.375, "w": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [0, 3], "x": 0, "y": 3.375, "w": 1.5},
|
||||||
|
{"matrix": [1, 3], "x": 1.5, "y": 3.375},
|
||||||
|
{"matrix": [2, 3], "x": 2.5, "y": 3.125},
|
||||||
|
{"matrix": [3, 3], "x": 3.5, "y": 3},
|
||||||
|
{"matrix": [4, 3], "x": 4.5, "y": 3.125},
|
||||||
|
{"matrix": [5, 3], "x": 5.5, "y": 3.25},
|
||||||
|
{"matrix": [6, 3], "x": 6.5, "y": 2.75, "h": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [7, 3], "x": 9.5, "y": 2.75, "h": 1.5},
|
||||||
|
{"matrix": [8, 3], "x": 10.5, "y": 3.25},
|
||||||
|
{"matrix": [9, 3], "x": 11.5, "y": 3.125},
|
||||||
|
{"matrix": [10, 3], "x": 12.5, "y": 3},
|
||||||
|
{"matrix": [11, 3], "x": 13.5, "y": 3.125},
|
||||||
|
{"matrix": [12, 3], "x": 14.5, "y": 3.375},
|
||||||
|
{"matrix": [13, 3], "x": 15.5, "y": 3.375, "w": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [0, 4], "x": 0.5, "y": 4.375},
|
||||||
|
{"matrix": [1, 4], "x": 1.5, "y": 4.375},
|
||||||
|
{"matrix": [2, 4], "x": 2.5, "y": 4.125},
|
||||||
|
{"matrix": [3, 4], "x": 3.5, "y": 4},
|
||||||
|
{"matrix": [4, 4], "x": 4.5, "y": 4.125},
|
||||||
|
|
||||||
|
{"matrix": [9, 4], "x": 11.5, "y": 4.125},
|
||||||
|
{"matrix": [10, 4], "x": 12.5, "y": 4},
|
||||||
|
{"matrix": [11, 4], "x": 13.5, "y": 4.125},
|
||||||
|
{"matrix": [12, 4], "x": 14.5, "y": 4.375},
|
||||||
|
{"matrix": [13, 4], "x": 15.5, "y": 4.375},
|
||||||
|
|
||||||
|
{"matrix": [5, 5], "x": 6, "y": 5},
|
||||||
|
{"matrix": [6, 5], "x": 7, "y": 5},
|
||||||
|
|
||||||
|
{"matrix": [7, 5], "x": 9, "y": 5},
|
||||||
|
{"matrix": [8, 5], "x": 10, "y": 5},
|
||||||
|
|
||||||
|
{"matrix": [4, 5], "x": 7, "y": 6},
|
||||||
|
{"matrix": [9, 5], "x": 9, "y": 6},
|
||||||
|
|
||||||
|
{"matrix": [3, 5], "x": 5, "y": 6, "h": 2},
|
||||||
|
{"matrix": [2, 5], "x": 6, "y": 6, "h": 2},
|
||||||
|
{"matrix": [1, 5], "x": 7, "y": 7},
|
||||||
|
|
||||||
|
{"matrix": [12, 5], "x": 9, "y": 7},
|
||||||
|
{"matrix": [11, 5], "x": 10, "y": 6, "h": 2},
|
||||||
|
{"matrix": [10, 5], "x": 11, "y": 6, "h": 2}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"LAYOUT_ergodox_80": {
|
"LAYOUT_ergodox_80": {
|
||||||
"layout": [
|
"layout": [
|
||||||
{"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25},
|
{"matrix": [0, 0], "x": 0, "y": 0.375, "w": 1.5},
|
||||||
{"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5},
|
{"matrix": [1, 0], "x": 1.5, "y": 0.375},
|
||||||
{"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25},
|
{"matrix": [2, 0], "x": 2.5, "y": 0.125},
|
||||||
{"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5},
|
{"matrix": [3, 0], "x": 3.5, "y": 0},
|
||||||
{"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125},
|
{"matrix": [4, 0], "x": 4.5, "y": 0.125},
|
||||||
|
{"matrix": [5, 0], "x": 5.5, "y": 0.25},
|
||||||
|
{"matrix": [6, 0], "x": 6.5, "y": 0.25},
|
||||||
|
|
||||||
{"x":6, "y":5}, {"x":7, "y":5},
|
{"matrix": [0, 1], "x": 0, "y": 1.375, "w": 1.5},
|
||||||
{"x":5, "y":6}, {"x":6, "y":6}, {"x":7, "y":6},
|
{"matrix": [1, 1], "x": 1.5, "y": 1.375},
|
||||||
{"x":5, "y":7}, {"x":6, "y":7}, {"x":7, "y":7},
|
{"matrix": [2, 1], "x": 2.5, "y": 1.125},
|
||||||
|
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||||
|
{"matrix": [4, 1], "x": 4.5, "y": 1.125},
|
||||||
|
{"matrix": [5, 1], "x": 5.5, "y": 1.25},
|
||||||
|
{"matrix": [6, 1], "x": 6.5, "y": 1.25, "h": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [0, 2], "x": 0, "y": 2.375, "w": 1.5},
|
||||||
|
{"matrix": [1, 2], "x": 1.5, "y": 2.375},
|
||||||
|
{"matrix": [2, 2], "x": 2.5, "y": 2.125},
|
||||||
|
{"matrix": [3, 2], "x": 3.5, "y": 2},
|
||||||
|
{"matrix": [4, 2], "x": 4.5, "y": 2.125},
|
||||||
|
{"matrix": [5, 2], "x": 5.5, "y": 2.25},
|
||||||
|
|
||||||
{"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5},
|
{"matrix": [0, 3], "x": 0, "y": 3.375, "w": 1.5},
|
||||||
{"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5},
|
{"matrix": [1, 3], "x": 1.5, "y": 3.375},
|
||||||
{"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5},
|
{"matrix": [2, 3], "x": 2.5, "y": 3.125},
|
||||||
{"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5},
|
{"matrix": [3, 3], "x": 3.5, "y": 3},
|
||||||
{"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375},
|
{"matrix": [4, 3], "x": 4.5, "y": 3.125},
|
||||||
|
{"matrix": [5, 3], "x": 5.5, "y": 3.25},
|
||||||
|
{"matrix": [6, 3], "x": 6.5, "y": 2.75, "h": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [0, 4], "x": 0.5, "y": 4.375},
|
||||||
|
{"matrix": [1, 4], "x": 1.5, "y": 4.375},
|
||||||
|
{"matrix": [2, 4], "x": 2.5, "y": 4.125},
|
||||||
|
{"matrix": [3, 4], "x": 3.5, "y": 4},
|
||||||
|
{"matrix": [4, 4], "x": 4.5, "y": 4.125},
|
||||||
|
|
||||||
{"x":9, "y":5}, {"x":10, "y":5},
|
{"matrix": [5, 5], "x": 6, "y": 5},
|
||||||
{"x":9, "y":6}, {"x":10, "y":6}, {"x":11, "y":6},
|
{"matrix": [6, 5], "x": 7, "y": 5},
|
||||||
{"x":9, "y":7}, {"x":10, "y":7}, {"x":11, "y":7}
|
|
||||||
]
|
{"matrix": [5, 4], "x": 5, "y": 6},
|
||||||
},
|
{"matrix": [6, 4], "x": 6, "y": 6},
|
||||||
|
{"matrix": [4, 5], "x": 7, "y": 6},
|
||||||
|
|
||||||
|
{"matrix": [3, 5], "x": 5, "y": 7},
|
||||||
|
{"matrix": [2, 5], "x": 6, "y": 7},
|
||||||
|
{"matrix": [1, 5], "x": 7, "y": 7},
|
||||||
|
|
||||||
|
{"matrix": [7, 0], "x": 9.5, "y": 0.25},
|
||||||
|
{"matrix": [8, 0], "x": 10.5, "y": 0.25},
|
||||||
|
{"matrix": [9, 0], "x": 11.5, "y": 0.125},
|
||||||
|
{"matrix": [10, 0], "x": 12.5, "y": 0},
|
||||||
|
{"matrix": [11, 0], "x": 13.5, "y": 0.125},
|
||||||
|
{"matrix": [12, 0], "x": 14.5, "y": 0.375},
|
||||||
|
{"matrix": [13, 0], "x": 15.5, "y": 0.375, "w": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [7, 1], "x": 9.5, "y": 1.25, "h": 1.5},
|
||||||
|
{"matrix": [8, 1], "x": 10.5, "y": 1.25},
|
||||||
|
{"matrix": [9, 1], "x": 11.5, "y": 1.125},
|
||||||
|
{"matrix": [10, 1], "x": 12.5, "y": 1},
|
||||||
|
{"matrix": [11, 1], "x": 13.5, "y": 1.125},
|
||||||
|
{"matrix": [12, 1], "x": 14.5, "y": 1.375},
|
||||||
|
{"matrix": [13, 1], "x": 15.5, "y": 1.375, "w": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [8, 2], "x": 10.5, "y": 2.25},
|
||||||
|
{"matrix": [9, 2], "x": 11.5, "y": 2.125},
|
||||||
|
{"matrix": [10, 2], "x": 12.5, "y": 2},
|
||||||
|
{"matrix": [11, 2], "x": 13.5, "y": 2.125},
|
||||||
|
{"matrix": [12, 2], "x": 14.5, "y": 2.375},
|
||||||
|
{"matrix": [13, 2], "x": 15.5, "y": 2.375, "w": 1.5},
|
||||||
|
{"matrix": [7, 3], "x": 9.5, "y": 2.75, "h": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [8, 3], "x": 10.5, "y": 3.25},
|
||||||
|
{"matrix": [9, 3], "x": 11.5, "y": 3.125},
|
||||||
|
{"matrix": [10, 3], "x": 12.5, "y": 3},
|
||||||
|
{"matrix": [11, 3], "x": 13.5, "y": 3.125},
|
||||||
|
{"matrix": [12, 3], "x": 14.5, "y": 3.375},
|
||||||
|
{"matrix": [13, 3], "x": 15.5, "y": 3.375, "w": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [9, 4], "x": 11.5, "y": 4.125},
|
||||||
|
{"matrix": [10, 4], "x": 12.5, "y": 4},
|
||||||
|
{"matrix": [11, 4], "x": 13.5, "y": 4.125},
|
||||||
|
{"matrix": [12, 4], "x": 14.5, "y": 4.375},
|
||||||
|
{"matrix": [13, 4], "x": 15.5, "y": 4.375},
|
||||||
|
|
||||||
|
{"matrix": [7, 5], "x": 9, "y": 5},
|
||||||
|
{"matrix": [8, 5], "x": 10, "y": 5},
|
||||||
|
|
||||||
|
{"matrix": [9, 5], "x": 9, "y": 6},
|
||||||
|
{"matrix": [7, 4], "x": 10, "y": 6},
|
||||||
|
{"matrix": [8, 4], "x": 11, "y": 6},
|
||||||
|
|
||||||
|
{"matrix": [12, 5], "x": 9, "y": 7},
|
||||||
|
{"matrix": [11, 5], "x": 10, "y": 7},
|
||||||
|
{"matrix": [10, 5], "x": 11, "y": 7}
|
||||||
|
]
|
||||||
|
},
|
||||||
"LAYOUT_ergodox_pretty_80": {
|
"LAYOUT_ergodox_pretty_80": {
|
||||||
"layout": [
|
"layout": [
|
||||||
{"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25},
|
{"matrix": [0, 0], "x": 0, "y": 0.375, "w": 1.5},
|
||||||
{"x":9.5, "y":0.25}, {"x":10.5, "y":0.25}, {"x":11.5, "y":0.125}, {"x":12.5, "y":0}, {"x":13.5, "y":0.125}, {"x":14.5, "y":0.375}, {"x":15.5, "y":0.375, "w":1.5},
|
{"matrix": [1, 0], "x": 1.5, "y": 0.375},
|
||||||
|
{"matrix": [2, 0], "x": 2.5, "y": 0.125},
|
||||||
|
{"matrix": [3, 0], "x": 3.5, "y": 0},
|
||||||
|
{"matrix": [4, 0], "x": 4.5, "y": 0.125},
|
||||||
|
{"matrix": [5, 0], "x": 5.5, "y": 0.25},
|
||||||
|
{"matrix": [6, 0], "x": 6.5, "y": 0.25},
|
||||||
|
|
||||||
{"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25, "h":1.5},
|
{"matrix": [7, 0], "x": 9.5, "y": 0.25},
|
||||||
{"x":9.5, "y":1.25, "h":1.5}, {"x":10.5, "y":1.25}, {"x":11.5, "y":1.125}, {"x":12.5, "y":1}, {"x":13.5, "y":1.125}, {"x":14.5, "y":1.375}, {"x":15.5, "y":1.375, "w":1.5},
|
{"matrix": [8, 0], "x": 10.5, "y": 0.25},
|
||||||
|
{"matrix": [9, 0], "x": 11.5, "y": 0.125},
|
||||||
|
{"matrix": [10, 0], "x": 12.5, "y": 0},
|
||||||
|
{"matrix": [11, 0], "x": 13.5, "y": 0.125},
|
||||||
|
{"matrix": [12, 0], "x": 14.5, "y": 0.375},
|
||||||
|
{"matrix": [13, 0], "x": 15.5, "y": 0.375, "w": 1.5},
|
||||||
|
|
||||||
{"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25},
|
{"matrix": [0, 1], "x": 0, "y": 1.375, "w": 1.5},
|
||||||
{"x":10.5, "y":2.25}, {"x":11.5, "y":2.125}, {"x":12.5, "y":2}, {"x":13.5, "y":2.125}, {"x":14.5, "y":2.375}, {"x":15.5, "y":2.375, "w":1.5},
|
{"matrix": [1, 1], "x": 1.5, "y": 1.375},
|
||||||
|
{"matrix": [2, 1], "x": 2.5, "y": 1.125},
|
||||||
|
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||||
|
{"matrix": [4, 1], "x": 4.5, "y": 1.125},
|
||||||
|
{"matrix": [5, 1], "x": 5.5, "y": 1.25},
|
||||||
|
{"matrix": [6, 1], "x": 6.5, "y": 1.25, "h": 1.5},
|
||||||
|
|
||||||
{"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":2.75, "h":1.5},
|
{"matrix": [7, 1], "x": 9.5, "y": 1.25, "h": 1.5},
|
||||||
{"x":9.5, "y":2.75, "h":1.5}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.125}, {"x":12.5, "y":3}, {"x":13.5, "y":3.125}, {"x":14.5, "y":3.375}, {"x":15.5, "y":3.375, "w":1.5},
|
{"matrix": [8, 1], "x": 10.5, "y": 1.25},
|
||||||
|
{"matrix": [9, 1], "x": 11.5, "y": 1.125},
|
||||||
|
{"matrix": [10, 1], "x": 12.5, "y": 1},
|
||||||
|
{"matrix": [11, 1], "x": 13.5, "y": 1.125},
|
||||||
|
{"matrix": [12, 1], "x": 14.5, "y": 1.375},
|
||||||
|
{"matrix": [13, 1], "x": 15.5, "y": 1.375, "w": 1.5},
|
||||||
|
|
||||||
{"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125},
|
{"matrix": [0, 2], "x": 0, "y": 2.375, "w": 1.5},
|
||||||
{"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375},
|
{"matrix": [1, 2], "x": 1.5, "y": 2.375},
|
||||||
|
{"matrix": [2, 2], "x": 2.5, "y": 2.125},
|
||||||
|
{"matrix": [3, 2], "x": 3.5, "y": 2},
|
||||||
|
{"matrix": [4, 2], "x": 4.5, "y": 2.125},
|
||||||
|
{"matrix": [5, 2], "x": 5.5, "y": 2.25},
|
||||||
|
|
||||||
{"x":6, "y":5}, {"x":7, "y":5}, {"x":9, "y":5}, {"x":10, "y":5},
|
{"matrix": [8, 2], "x": 10.5, "y": 2.25},
|
||||||
{"x":5, "y":6}, {"x":6, "y":6}, {"x":7, "y":6}, {"x":9, "y":6}, {"x":10, "y":6}, {"x":11, "y":6},
|
{"matrix": [9, 2], "x": 11.5, "y": 2.125},
|
||||||
{"x":5, "y":7}, {"x":6, "y":7}, {"x":7, "y":7}, {"x":9, "y":7}, {"x":10, "y":7}, {"x":11, "y":7}
|
{"matrix": [10, 2], "x": 12.5, "y": 2},
|
||||||
]
|
{"matrix": [11, 2], "x": 13.5, "y": 2.125},
|
||||||
}
|
{"matrix": [12, 2], "x": 14.5, "y": 2.375},
|
||||||
|
{"matrix": [13, 2], "x": 15.5, "y": 2.375, "w": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [0, 3], "x": 0, "y": 3.375, "w": 1.5},
|
||||||
|
{"matrix": [1, 3], "x": 1.5, "y": 3.375},
|
||||||
|
{"matrix": [2, 3], "x": 2.5, "y": 3.125},
|
||||||
|
{"matrix": [3, 3], "x": 3.5, "y": 3},
|
||||||
|
{"matrix": [4, 3], "x": 4.5, "y": 3.125},
|
||||||
|
{"matrix": [5, 3], "x": 5.5, "y": 3.25},
|
||||||
|
{"matrix": [6, 3], "x": 6.5, "y": 2.75, "h": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [7, 3], "x": 9.5, "y": 2.75, "h": 1.5},
|
||||||
|
{"matrix": [8, 3], "x": 10.5, "y": 3.25},
|
||||||
|
{"matrix": [9, 3], "x": 11.5, "y": 3.125},
|
||||||
|
{"matrix": [10, 3], "x": 12.5, "y": 3},
|
||||||
|
{"matrix": [11, 3], "x": 13.5, "y": 3.125},
|
||||||
|
{"matrix": [12, 3], "x": 14.5, "y": 3.375},
|
||||||
|
{"matrix": [13, 3], "x": 15.5, "y": 3.375, "w": 1.5},
|
||||||
|
|
||||||
|
{"matrix": [0, 4], "x": 0.5, "y": 4.375},
|
||||||
|
{"matrix": [1, 4], "x": 1.5, "y": 4.375},
|
||||||
|
{"matrix": [2, 4], "x": 2.5, "y": 4.125},
|
||||||
|
{"matrix": [3, 4], "x": 3.5, "y": 4},
|
||||||
|
{"matrix": [4, 4], "x": 4.5, "y": 4.125},
|
||||||
|
|
||||||
|
{"matrix": [9, 4], "x": 11.5, "y": 4.125},
|
||||||
|
{"matrix": [10, 4], "x": 12.5, "y": 4},
|
||||||
|
{"matrix": [11, 4], "x": 13.5, "y": 4.125},
|
||||||
|
{"matrix": [12, 4], "x": 14.5, "y": 4.375},
|
||||||
|
{"matrix": [13, 4], "x": 15.5, "y": 4.375},
|
||||||
|
|
||||||
|
{"matrix": [5, 5], "x": 6, "y": 5},
|
||||||
|
{"matrix": [6, 5], "x": 7, "y": 5},
|
||||||
|
|
||||||
|
{"matrix": [7, 5], "x": 9, "y": 5},
|
||||||
|
{"matrix": [8, 5], "x": 10, "y": 5},
|
||||||
|
|
||||||
|
{"matrix": [5, 4], "x": 5, "y": 6},
|
||||||
|
{"matrix": [6, 4], "x": 6, "y": 6},
|
||||||
|
{"matrix": [4, 5], "x": 7, "y": 6},
|
||||||
|
|
||||||
|
{"matrix": [9, 5], "x": 9, "y": 6},
|
||||||
|
{"matrix": [7, 4], "x": 10, "y": 6},
|
||||||
|
{"matrix": [8, 4], "x": 11, "y": 6},
|
||||||
|
|
||||||
|
{"matrix": [3, 5], "x": 5, "y": 7},
|
||||||
|
{"matrix": [2, 5], "x": 6, "y": 7},
|
||||||
|
{"matrix": [1, 5], "x": 7, "y": 7},
|
||||||
|
|
||||||
|
{"matrix": [12, 5], "x": 9, "y": 7},
|
||||||
|
{"matrix": [11, 5], "x": 10, "y": 7},
|
||||||
|
{"matrix": [10, 5], "x": 11, "y": 7}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
|
#define ENABLE_BETA_LEADER
|
||||||
|
|
||||||
// No timeout after initial leader key press
|
// No timeout after initial leader key press
|
||||||
#define LEADER_NO_TIMEOUT
|
#define LEADER_NO_TIMEOUT
|
||||||
|
|
||||||
// Timeout resets after each keypress
|
// Timeout resets after each keypress
|
||||||
#define LEADER_PER_KEY_TIMING
|
#define LEADER_PER_KEY_TIMING
|
||||||
#define LEADER_TIMEOUT 200
|
#define LEADER_TIMEOUT 500
|
||||||
|
|
||||||
|
|
||||||
// Enable spellcheck over HID
|
// Enable spellcheck over HID
|
||||||
|
|
|
@ -73,6 +73,10 @@ enum tap_dance_codes {
|
||||||
#include "features/autocorrect/autocorrect.h"
|
#include "features/autocorrect/autocorrect.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_BETA_LEADER
|
||||||
|
#include "features/leader/beta_leader.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "features/beta_rawhid.h"
|
#include "features/beta_rawhid.h"
|
||||||
|
|
||||||
// Send a special character.
|
// Send a special character.
|
||||||
|
@ -86,6 +90,14 @@ bool send_special_character(uint16_t keycode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
#ifdef ENABLE_BETA_LEADER
|
||||||
|
beta_qk_leader_check();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Include all other parts of configuration
|
// Include all other parts of configuration
|
||||||
#include "layers/layers.c"
|
#include "layers/layers.c"
|
||||||
#include "parts/leader.c"
|
#include "parts/leader.c"
|
||||||
|
@ -96,6 +108,10 @@ bool send_special_character(uint16_t keycode) {
|
||||||
// Return TRUE to allow QMK to handle keypress.
|
// Return TRUE to allow QMK to handle keypress.
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
|
||||||
|
#ifdef ENABLE_BETA_LEADER
|
||||||
|
if (!beta_process_leader(keycode, record)) { return false; }
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_HID_SPELLCHECK
|
#ifdef ENABLE_HID_SPELLCHECK
|
||||||
if (!process_spellcheck(keycode, record)) { return false; }
|
if (!process_spellcheck(keycode, record)) { return false; }
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#include "keymap.h"
|
||||||
#include "extra_mappings.h"
|
#include "extra_mappings.h"
|
||||||
#define LAYER_INCLUDE_FILE "definitions/layers.inc"
|
#define LAYER_INCLUDE_FILE "definitions/layers.inc"
|
||||||
|
|
||||||
|
|
|
@ -1,49 +1,56 @@
|
||||||
LEADER_EXTERNS();
|
#include "features/leader/beta_leader.h"
|
||||||
|
|
||||||
void leader_start(void) {
|
BETA_LEADER_EXTERNS();
|
||||||
|
|
||||||
|
void beta_leader_start(void) {
|
||||||
ergodox_right_led_3_on();
|
ergodox_right_led_3_on();
|
||||||
}
|
}
|
||||||
|
|
||||||
void leader_end(void) {
|
void beta_leader_end(void) {
|
||||||
ergodox_right_led_3_off();
|
ergodox_right_led_3_off();
|
||||||
}
|
}
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
bool beta_leader_check(void) {
|
||||||
LEADER_DICTIONARY() {
|
|
||||||
leading = false;
|
|
||||||
leader_end();
|
|
||||||
|
|
||||||
SEQ_TWO_KEYS(KC_E, KC_M) {
|
BETA_SEQ_2_SHORT(KC_E, KC_M) {
|
||||||
SEND_STRING(SECRET_EMAIL);
|
SEND_STRING(SECRET_EMAIL);
|
||||||
}
|
return false;
|
||||||
|
|
||||||
SEQ_TWO_KEYS(KC_G, KC_M) {
|
|
||||||
SEND_STRING(SECRET_GMAIL);
|
|
||||||
}
|
|
||||||
|
|
||||||
SEQ_TWO_KEYS(KC_L, KC_I) {
|
|
||||||
SEND_STRING(SECRET_SCHOOL_EMAIL);
|
|
||||||
}
|
|
||||||
|
|
||||||
SEQ_TWO_KEYS(KC_K, KC_B) {
|
|
||||||
layer_move(LAYER_KEYBOARD);
|
|
||||||
}
|
|
||||||
|
|
||||||
//SEQ_ONE_KEY(KC_F) {
|
|
||||||
// doesn't work, no deactivate
|
|
||||||
// also, this is slow since laeder key uses dumb logic
|
|
||||||
// set_oneshot_layer(LAYER_FKEYS, ONESHOT_START);
|
|
||||||
//}
|
|
||||||
|
|
||||||
SEQ_TWO_KEYS(KC_F, KC_1) { tap_code(KC_F1); }
|
|
||||||
SEQ_TWO_KEYS(KC_F, KC_2) { tap_code(KC_F2); }
|
|
||||||
SEQ_TWO_KEYS(KC_F, KC_3) { tap_code(KC_F3); }
|
|
||||||
SEQ_TWO_KEYS(KC_F, KC_4) { tap_code(KC_F4); }
|
|
||||||
SEQ_TWO_KEYS(KC_F, KC_5) { tap_code(KC_F5); }
|
|
||||||
SEQ_TWO_KEYS(KC_F, KC_Q) { tap_code(KC_F6); }
|
|
||||||
SEQ_TWO_KEYS(KC_F, KC_W) { tap_code(KC_F7); }
|
|
||||||
SEQ_TWO_KEYS(KC_F, KC_E) { tap_code(KC_F8); }
|
|
||||||
SEQ_TWO_KEYS(KC_F, KC_R) { tap_code(KC_F9); }
|
|
||||||
SEQ_TWO_KEYS(KC_F, KC_T) { tap_code(KC_F10); }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BETA_SEQ_2_SHORT(KC_G, KC_M) {
|
||||||
|
SEND_STRING(SECRET_GMAIL);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
BETA_SEQ_2_SHORT(KC_L, KC_I) {
|
||||||
|
SEND_STRING(SECRET_SCHOOL_EMAIL);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
BETA_SEQ_2_LONG(KC_K, KC_B) {
|
||||||
|
layer_move(LAYER_KEYBOARD);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
BETA_SEQ_1_SHORT(KC_F) {
|
||||||
|
// doesn't work, no deactivate
|
||||||
|
// also, this is slow since laeder key uses dumb logic
|
||||||
|
set_oneshot_layer(LAYER_FKEYS, ONESHOT_START);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
BETA_SEQ_2_SHORT(KC_F, KC_1) { tap_code(KC_F1); return false; }
|
||||||
|
BETA_SEQ_2_SHORT(KC_F, KC_2) { tap_code(KC_F2); return false; }
|
||||||
|
BETA_SEQ_2_SHORT(KC_F, KC_3) { tap_code(KC_F3); return false; }
|
||||||
|
BETA_SEQ_2_SHORT(KC_F, KC_4) { tap_code(KC_F4); return false; }
|
||||||
|
BETA_SEQ_2_SHORT(KC_F, KC_5) { tap_code(KC_F5); return false; }
|
||||||
|
BETA_SEQ_2_SHORT(KC_F, KC_Q) { tap_code(KC_F6); return false; }
|
||||||
|
BETA_SEQ_2_SHORT(KC_F, KC_W) { tap_code(KC_F7); return false; }
|
||||||
|
BETA_SEQ_2_SHORT(KC_F, KC_E) { tap_code(KC_F8); return false; }
|
||||||
|
BETA_SEQ_2_SHORT(KC_F, KC_R) { tap_code(KC_F9); return false; }
|
||||||
|
BETA_SEQ_2_SHORT(KC_F, KC_T) { tap_code(KC_F10); return false; }
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
|
@ -1,4 +1,3 @@
|
||||||
# rules.mk overrides
|
# rules.mk overrides
|
||||||
|
|
||||||
LEADER_ENABLE = yes
|
|
||||||
TAP_DANCE_ENABLE = yes
|
TAP_DANCE_ENABLE = yes
|
|
@ -1,23 +1,3 @@
|
||||||
/*
|
|
||||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
|
||||||
Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
|
|
||||||
Copyright 2015 ZSA Technology Labs Inc (@zsa)
|
|
||||||
Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 2 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -0,0 +1,187 @@
|
||||||
|
#include "betalupi_ergodox.h"
|
||||||
|
#include "features/beta_rawhid.h"
|
||||||
|
|
||||||
|
|
||||||
|
// Handle a keypress.
|
||||||
|
// Returns true if we should keep looking for keypresses,
|
||||||
|
// returns false if we should stop.
|
||||||
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch (keycode) {
|
||||||
|
case LED_LEVEL:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
keyboard_config.led_level++;
|
||||||
|
if (keyboard_config.led_level > 4) {
|
||||||
|
keyboard_config.led_level = 0;
|
||||||
|
}
|
||||||
|
ergodox_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4 );
|
||||||
|
eeconfig_update_kb(keyboard_config.raw);
|
||||||
|
layer_state_set_kb(layer_state);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
#ifdef RGB_MATRIX_ENABLE
|
||||||
|
case TOGGLE_LAYER_COLOR:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
keyboard_config.disable_layer_led ^= 1;
|
||||||
|
if (keyboard_config.disable_layer_led) {
|
||||||
|
rgb_matrix_set_color_all(0, 0, 0);
|
||||||
|
}
|
||||||
|
eeconfig_update_kb(keyboard_config.raw);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RGB_TOG:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
switch (rgb_matrix_get_flags()) {
|
||||||
|
case LED_FLAG_ALL: {
|
||||||
|
rgb_matrix_set_flags(LED_FLAG_NONE);
|
||||||
|
keyboard_config.rgb_matrix_enable = false;
|
||||||
|
rgb_matrix_set_color_all(0, 0, 0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: {
|
||||||
|
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||||
|
keyboard_config.rgb_matrix_enable = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
eeconfig_update_kb(keyboard_config.raw);
|
||||||
|
}
|
||||||
|
|
||||||
|
hid_send_state();
|
||||||
|
return false;
|
||||||
|
|
||||||
|
case RGB_MOD:
|
||||||
|
// Tell the host whenever we change animation mode.
|
||||||
|
hid_send_state();
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Custom RGBLIGHT macros
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
#ifdef RGBLIGHT_NO_EEPROM
|
||||||
|
case LIGHT_TOG:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_toggle_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_MOD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_step_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_HUI:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_increase_hue_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_HUD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_decrease_hue_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_SAI:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_increase_sat_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_SAD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_decrease_sat_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_VAI:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_increase_val_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_VAD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_decrease_val_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_SPI:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_increase_speed_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_SPD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_decrease_speed_noeeprom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#else
|
||||||
|
case LIGHT_TOG:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_toggle();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_MOD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_step();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_HUI:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_increase_hue();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_HUD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_decrease_hue();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_SAI:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_increase_sat();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_SAD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_decrease_sat();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_VAI:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_increase_val();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_VAD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_decrease_val();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_SPI:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_increase_speed();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LIGHT_SPD:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
rgblight_decrease_speed();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
return process_record_user(keycode, record);
|
||||||
|
}
|
|
@ -1,31 +0,0 @@
|
||||||
# Betalupi Ergodox
|
|
||||||
|
|
||||||
This is a modified version of the [ZSA ErgoDox firmware](https://git.betalupi.com/mirrors-QMK/zsa_firmware), based on the `ergodox_ex/glow` keyboard.
|
|
||||||
|
|
||||||
|
|
||||||
# Notes
|
|
||||||
|
|
||||||
This keyboard adds a few extra options in `config.h`:
|
|
||||||
|
|
||||||
```cpp
|
|
||||||
#define RGBLIGHT_OFF_AT_START
|
|
||||||
#define RGBLIGHT_NO_EEPROM
|
|
||||||
#ifdef ENABLE_HID_SPELLCHECK
|
|
||||||
#ifdef ENABLE_AUTOCORRECT
|
|
||||||
```
|
|
||||||
|
|
||||||
Also, there are a few custom kecodes defined in `betalupi_keyboard.c`. This allows us to control the rgb matrix and rgb lighting seperately---my keyboard has both.
|
|
||||||
|
|
||||||
```
|
|
||||||
// Custom RGBLIGHT macros
|
|
||||||
LIGHT_TOG, // Toggle backlight
|
|
||||||
LIGHT_HUI, // Increase backlight hue
|
|
||||||
LIGHT_HUD, // Decrease backlight hue
|
|
||||||
LIGHT_SAI, // Increase backlight sat
|
|
||||||
LIGHT_SAD, // Decrease backlight sat
|
|
||||||
LIGHT_VAI, // Increase backlight val
|
|
||||||
LIGHT_VAD, // Decrease backlight val
|
|
||||||
LIGHT_SPI, // Increase backlight speed
|
|
||||||
LIGHT_SPD, // Decrease backlight speed
|
|
||||||
LIGHT_MOD, // Change backlight animation mode
|
|
||||||
```
|
|
|
@ -30,7 +30,7 @@ SLEEP_LED_ENABLE = no
|
||||||
API_SYSEX_ENABLE = no
|
API_SYSEX_ENABLE = no
|
||||||
MOUSE_SHARED_EP = no
|
MOUSE_SHARED_EP = no
|
||||||
MAGIC_ENABLE = no
|
MAGIC_ENABLE = no
|
||||||
LEADER_ENABLE = yes
|
LEADER_ENABLE = no
|
||||||
TAP_DANCE_ENABLE = yes
|
TAP_DANCE_ENABLE = yes
|
||||||
AUDIO_SUPPORTED = no
|
AUDIO_SUPPORTED = no
|
||||||
BACKLIGHT_SUPPORTED = no
|
BACKLIGHT_SUPPORTED = no
|
||||||
|
@ -38,12 +38,15 @@ BACKLIGHT_SUPPORTED = no
|
||||||
DEBOUNCE_TYPE = sym_eager_pr
|
DEBOUNCE_TYPE = sym_eager_pr
|
||||||
|
|
||||||
SRC += \
|
SRC += \
|
||||||
matrix.c \
|
extra_mappings.c \
|
||||||
led_i2c.c \
|
process_record.c \
|
||||||
|
hardware/matrix.c \
|
||||||
|
hardware/led_i2c.c \
|
||||||
|
hardware/maps.c \
|
||||||
features/beta_rawhid.c \
|
features/beta_rawhid.c \
|
||||||
features/hid_spellcheck.c \
|
features/hid_spellcheck.c \
|
||||||
features/autocorrect/autocorrect.c \
|
features/autocorrect/autocorrect.c \
|
||||||
extra_mappings.c
|
features/leader/leader.c
|
||||||
|
|
||||||
QUANTUM_LIB_SRC += i2c_master.c
|
QUANTUM_LIB_SRC += i2c_master.c
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue