From 17a3dbc1591b6cdd96076b94a9d3648c19f7e2ab Mon Sep 17 00:00:00 2001 From: Olivier Date: Sun, 3 Jul 2016 14:38:03 +0200 Subject: [PATCH 001/727] Integrate mouse keys into function layer, delete mouse layer. --- keyboards/ergodox_ez/keymaps/bepo/keymap.c | 64 +++++----------------- 1 file changed, 13 insertions(+), 51 deletions(-) diff --git a/keyboards/ergodox_ez/keymaps/bepo/keymap.c b/keyboards/ergodox_ez/keymaps/bepo/keymap.c index 921a94d63a..5c127ab78e 100644 --- a/keyboards/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboards/ergodox_ez/keymaps/bepo/keymap.c @@ -9,7 +9,6 @@ #define AQWER 3 // alted qwerty compat layer #define FNAV 4 // function / navigation keys #define NUM 5 // numeric keypad keys -#define MSE 6 // mouse keys #define KP_00 0 #define CA_Fx 1 @@ -26,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| * | E_CIRC |A_GRAV| Y | X | . | K | | | | ' | Q | G | H | F | C_CEDIL| * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' - * |QWERTY| |LSuper| LCtrl| LAlt| |Escape| L_Mse| | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| + * |QWERTY| |LSuper| LCtrl| LAlt| |Escape| | | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' * | | | L_Num| | CA_Fx| | | * | Space|LShift|------| |------|RShift|Enter | @@ -40,7 +39,7 @@ BP_PERCENT, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_E_GRAVE, KC_BSPC, BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMMA, BP_ECRC, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, BP_K, KC_TAB, TG(QWER), KC_NO, KC_LGUI, KC_LCTL, KC_LALT, - KC_ESC, MO(MSE), + KC_ESC, KC_NO, MO(NUM), KC_SPC, KC_LSHIFT, MO(FNAV), // Right hand @@ -63,7 +62,7 @@ MO(FNAV), KC_RSHIFT, KC_ENTER), * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| * | e | a | y | x | . | k | | | | ' | q | g | h | f | c | * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' - * | BEPO | |LSuper| LCtrl| LAlt| |Escape| L_Mse| | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| + * | BEPO | |LSuper| LCtrl| LAlt| |Escape| | | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' * | | | L_Num| | | | | * | Space|LShift|------| |------|RShift|Enter | @@ -77,7 +76,7 @@ KC_PERCENT, KC_B, KC_E, KC_P, KC_O, KC_E, KC_BSPC, KC_W, KC_A, KC_U, KC_I, KC_E, KC_COMMA, KC_E, KC_A, KC_Y, KC_X, KC_DOT, KC_K, KC_TAB, KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT, - KC_ESC, MO(MSE), + KC_ESC, KC_NO, MO(NUM), KC_SPC, MO(SQWER), MO(FNAV), // Right hand @@ -100,7 +99,7 @@ MO(FNAV), MO(SQWER), KC_ENTER), * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| * | E | A | Y | X | : | K | | | | ? | Q | G | H | F | C | * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' - * | BEPO | |LSuper| LCtrl| LAlt| |Escape| L_Mse| | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| + * | BEPO | |LSuper| LCtrl| LAlt| |Escape| | | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' * | | | L_Num| | | | | * | Space|LShift|------| |------|RShift|Enter | @@ -114,7 +113,7 @@ KC_GRV, S(KC_B), S(KC_E), S(KC_P), S(KC_O), S(KC_E), KC_TRNS, S(KC_W), S(KC_A), S(KC_U), S(KC_I), S(KC_E), KC_SCOLON, S(KC_E), S(KC_A), S(KC_Y), S(KC_X), KC_COLON, S(KC_K), S(KC_TAB), KC_TRNS, KC_TRNS, S(KC_LGUI), S(KC_LCTL), S(KC_LALT), - KC_TRNS, KC_TRNS, + KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // Right hand @@ -137,7 +136,7 @@ KC_TRNS, KC_TRNS, KC_TRNS), * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| * | e | \ | { | } | . | ~ | | | | ' | q | g | h | f | c | * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' - * | BEPO | |LSuper| LCtrl| LAlt| |Escape| L_Mse| | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| + * | BEPO | |LSuper| LCtrl| LAlt| |Escape| | | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' * | | | L_Num| | | | | * | _ |LShift|------| |------|RShift|Enter | @@ -151,7 +150,7 @@ KC_PERCENT, KC_PIPE, KC_E, KC_AMPR, KC_O, KC_E, KC_BSPC, KC_W, KC_A, KC_U, KC_I, RALT(KC_5), KC_COMMA, KC_E, KC_BSLASH, KC_LCBR, KC_RCBR, KC_DOT, KC_TILDE, KC_TAB, KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT, - KC_ESC, MO(MSE), + KC_ESC, KC_NO, MO(NUM), KC_UNDS, MO(SQWER), MO(FNAV), // Right hand @@ -168,9 +167,9 @@ MO(FNAV), MO(SQWER), KC_ENTER), * ,--------------------------------------------------. ,--------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 |VolMut| | | F6 | F7 | F8 | F9 | F10 | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | | | |VolDwn| | | PgUp | Home | Up | End | F11 | | + * | | Next |LClick| Up |RClick| WhUp |VolDwn| | | PgUp | Home | Up | End | F11 | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | |------| |------| PgDn | Left | Down | Right| F12 | | + * | | Prev | Left | Down | Right|WhDown|------| |------| PgDn | Left | Down | Right| F12 | | * |--------+------+------+------+------+------| VolUp| | |------+------+------+------+------+--------| * | | Undo | Cut | Copy | Paste| | | | | | | | | | | * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' @@ -184,8 +183,8 @@ MO(FNAV), MO(SQWER), KC_ENTER), [FNAV] = KEYMAP( // Left hand KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MUTE, -KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLU, -KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, +KC_NO, KC_MS_BTN5, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_MS_WH_UP, KC_VOLU, +KC_NO, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, KC_NO, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_NO, KC_VOLD, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, @@ -236,44 +235,7 @@ KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, M(KP_00), KC_KP_COMMA, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, -KC_NO, KC_TRNS, KC_KP_ENTER), -/* Keymap 6: mouse layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | | | | | | | |LClick| Up |RClick| WhUp | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | |------| |------| | Left | Down | Right|WhDown| | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | | | | | - * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' - * | | | | | | | | | | | | | | | | | | - * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -[MSE] = KEYMAP( -// Left hand -KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, -KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, -KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, -KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, -KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, - KC_NO, KC_TRNS, - KC_NO, - KC_NO, KC_TRNS, KC_NO, -// Right hand - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_NO, KC_NO, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_MS_WH_UP, KC_NO, - KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, KC_NO, - KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, - KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, -KC_NO, KC_NO, -KC_NO, -KC_NO, KC_TRNS, KC_NO) +KC_NO, KC_TRNS, KC_KP_ENTER) }; const uint16_t PROGMEM fn_actions[] = { From 9aceaaed4cbdf49c12db85cf3ff40a9e762558a6 Mon Sep 17 00:00:00 2001 From: Olivier Date: Sun, 3 Jul 2016 15:51:55 +0200 Subject: [PATCH 002/727] Replace the "Ctrl+Alt+Fx" macro I was using to switch terminals without moving hands by a numeric layer switch key like on the left half, for consistency. --- keyboards/ergodox_ez/keymaps/bepo/keymap.c | 54 +++++++++------------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/keyboards/ergodox_ez/keymaps/bepo/keymap.c b/keyboards/ergodox_ez/keymaps/bepo/keymap.c index 5c127ab78e..dd47357998 100644 --- a/keyboards/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboards/ergodox_ez/keymaps/bepo/keymap.c @@ -11,7 +11,6 @@ #define NUM 5 // numeric keypad keys #define KP_00 0 -#define CA_Fx 1 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Base layer @@ -27,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' * |QWERTY| |LSuper| LCtrl| LAlt| |Escape| | | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' - * | | | L_Num| | CA_Fx| | | + * | | | L_Num| | L_Num| | | * | Space|LShift|------| |------|RShift|Enter | * | | |L_FNav| |L_FNav| | | * `--------------------' `--------------------' @@ -39,7 +38,7 @@ BP_PERCENT, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_E_GRAVE, KC_BSPC, BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMMA, BP_ECRC, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, BP_K, KC_TAB, TG(QWER), KC_NO, KC_LGUI, KC_LCTL, KC_LALT, - KC_ESC, KC_NO, + KC_ESC, KC_TRNS, MO(NUM), KC_SPC, KC_LSHIFT, MO(FNAV), // Right hand @@ -48,8 +47,8 @@ TG(QWER), KC_NO, KC_LGUI, KC_LCTL, KC_LALT, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, KC_NUMLOCK, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED, BP_ALGR, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, -KC_NO, KC_INS, -M(CA_Fx), +KC_TRNS, KC_INS, +MO(NUM), MO(FNAV), KC_RSHIFT, KC_ENTER), /* Keymap 1: QWERTY system compatibility layer * @@ -64,7 +63,7 @@ MO(FNAV), KC_RSHIFT, KC_ENTER), * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' * | BEPO | |LSuper| LCtrl| LAlt| |Escape| | | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' - * | | | L_Num| | | | | + * | | | L_Num| | L_Num| | | * | Space|LShift|------| |------|RShift|Enter | * | | |L_FNav| |L_FNav| | | * `--------------------' `--------------------' @@ -76,7 +75,7 @@ KC_PERCENT, KC_B, KC_E, KC_P, KC_O, KC_E, KC_BSPC, KC_W, KC_A, KC_U, KC_I, KC_E, KC_COMMA, KC_E, KC_A, KC_Y, KC_X, KC_DOT, KC_K, KC_TAB, KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT, - KC_ESC, KC_NO, + KC_ESC, KC_TRNS, MO(NUM), KC_SPC, MO(SQWER), MO(FNAV), // Right hand @@ -85,8 +84,8 @@ KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT, KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C, MO(AQWER), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, -KC_NO, KC_INS, -KC_TRNS, +KC_TRNS, KC_INS, +MO(NUM), MO(FNAV), MO(SQWER), KC_ENTER), /* Keymap 2: QWERTY shifted system compatibility layer * @@ -101,7 +100,7 @@ MO(FNAV), MO(SQWER), KC_ENTER), * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' * | BEPO | |LSuper| LCtrl| LAlt| |Escape| | | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' - * | | | L_Num| | | | | + * | | | L_Num| | L_Num| | | * | Space|LShift|------| |------|RShift|Enter | * | | |L_FNav| |L_FNav| | | * `--------------------' `--------------------' @@ -113,7 +112,7 @@ KC_GRV, S(KC_B), S(KC_E), S(KC_P), S(KC_O), S(KC_E), KC_TRNS, S(KC_W), S(KC_A), S(KC_U), S(KC_I), S(KC_E), KC_SCOLON, S(KC_E), S(KC_A), S(KC_Y), S(KC_X), KC_COLON, S(KC_K), S(KC_TAB), KC_TRNS, KC_TRNS, S(KC_LGUI), S(KC_LCTL), S(KC_LALT), - KC_TRNS, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // Right hand @@ -138,7 +137,7 @@ KC_TRNS, KC_TRNS, KC_TRNS), * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' * | BEPO | |LSuper| LCtrl| LAlt| |Escape| | | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' - * | | | L_Num| | | | | + * | | | L_Num| | L_Num| | | * | _ |LShift|------| |------|RShift|Enter | * | | |L_FNav| |L_FNav| | | * `--------------------' `--------------------' @@ -150,7 +149,7 @@ KC_PERCENT, KC_PIPE, KC_E, KC_AMPR, KC_O, KC_E, KC_BSPC, KC_W, KC_A, KC_U, KC_I, RALT(KC_5), KC_COMMA, KC_E, KC_BSLASH, KC_LCBR, KC_RCBR, KC_DOT, KC_TILDE, KC_TAB, KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT, - KC_ESC, KC_NO, + KC_ESC, KC_TRNS, MO(NUM), KC_UNDS, MO(SQWER), MO(FNAV), // Right hand @@ -159,8 +158,8 @@ KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT, KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C, KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, -KC_NO, KC_INS, -KC_TRNS, +KC_TRNS, KC_INS, +MO(NUM), MO(FNAV), MO(SQWER), KC_ENTER), /* Keymap 4: function / navigation layer * @@ -187,8 +186,8 @@ KC_NO, KC_MS_BTN5, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_MS_WH_UP, KC_VOLU, KC_NO, KC_MS_BTN4, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, KC_NO, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_NO, KC_VOLD, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, - KC_NO, KC_NO, - KC_NO, + KC_TRNS, KC_TRNS, + KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, // Right hand KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO, @@ -196,7 +195,7 @@ KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDOWN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, -KC_NO, KC_NO, +KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO), /* Keymap 5: numeric layer, sends keypad codes @@ -224,18 +223,18 @@ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, - KC_NO, KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, - KC_NO, KC_TRNS, KC_NO, + KC_NO, KC_TRNS, KC_TRNS, // Right hand KC_NO, KC_NO, KC_KP_PLUS, KC_KP_MINUS, KC_KP_SLASH, KC_KP_ASTERISK, KC_NO, KC_NO, KC_NO, KC_KP_7, KC_KP_8, KC_KP_9, KC_NO, KC_NO, KC_NO, KC_KP_4, KC_KP_5, KC_KP_6, KC_NO, KC_NO, KC_NO, KC_NO, KC_KP_1, KC_KP_2, KC_KP_3, KC_NO, KC_NO, KC_KP_0, M(KP_00), KC_KP_COMMA, KC_NO, KC_NO, -KC_NO, KC_NO, -KC_NO, -KC_NO, KC_TRNS, KC_KP_ENTER) +KC_TRNS, KC_TRNS, +KC_TRNS, +KC_TRNS, KC_TRNS, KC_KP_ENTER) }; const uint16_t PROGMEM fn_actions[] = { @@ -251,15 +250,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO( U(KP_0), END ); } break; - case CA_Fx: - if (record->event.pressed) { - layer_on(FNAV); - return MACRO( D(LALT), D(LCTL), END ); - } else { - layer_off(FNAV); - return MACRO( U(LCTL), U(LALT), END ); - } - break; } return MACRO_NONE; }; From 6d195dc60c696d2e07bfe7d098b00598f36fe5a6 Mon Sep 17 00:00:00 2001 From: Olivier Date: Sun, 3 Jul 2016 16:27:08 +0200 Subject: [PATCH 003/727] Add a Makefile for the keymap to disable command mode (to keep the keyboard from going into command mode when both Shift keys are hold at the same time) and to allow issuing a simple "make" in the keymap folder to compile it. --- keyboards/ergodox_ez/keymaps/bepo/Makefile | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 keyboards/ergodox_ez/keymaps/bepo/Makefile diff --git a/keyboards/ergodox_ez/keymaps/bepo/Makefile b/keyboards/ergodox_ez/keymaps/bepo/Makefile new file mode 100644 index 0000000000..b673c5ce52 --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/bepo/Makefile @@ -0,0 +1,9 @@ +# Having a file like this allows you to override Makefile definitions +# for your own particular keymap + +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +COMMAND_ENABLE = no # Commands for debug and configuration + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif From 82edc37238a0f4239da0a6eee74d62773362a2d2 Mon Sep 17 00:00:00 2001 From: Olivier Date: Sun, 3 Jul 2016 16:44:57 +0200 Subject: [PATCH 004/727] Move Escape and Insert keys, Escape is now easier to reach (useful for vi). Change the layer switching used to keep a bepo layout on US keyboards. --- keyboards/ergodox_ez/keymaps/bepo/bepo.png | Bin 79747 -> 80838 bytes keyboards/ergodox_ez/keymaps/bepo/keymap.c | 28 ++++++++++---------- keyboards/ergodox_ez/keymaps/bepo/readme.md | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/keyboards/ergodox_ez/keymaps/bepo/bepo.png b/keyboards/ergodox_ez/keymaps/bepo/bepo.png index 3df7aa609f6300a48c36425320323935aeb435e3..bde2e2cfacb326e7934c5743aea2f303c8a42527 100644 GIT binary patch literal 80838 zcmeAS@N?(olHy`uVBq!ia0y~yU=d?rU|hk$#=yYv=~fyC1A_vCr;B4q#hf>Dt3yIk zfB*a4-RkGnmZUf>QT^l8>y92$rXL07of2NQFfDT4Ssh*P$v!o@Ti1lYKrDbZJ!I+8fPY^eft%=-~NYDC(njP+c$^rto<6f`mDlc{ddoIzORnA z`E0{)^P&EKrpc^!E^hArr_Y{AZQ8uqQGf-GF1ENW{#n0s=gzi6hYl6=x_!RD{QX~e zK){2UvuCe9fBw9CW~Szp3qC!VszyJGeCAe7}PBu@TK3%wB!-p%(m6esI zUp}%U*<|IEnW5@XVS}bc>(=pUYHCia-t&K7s*&XT{o#;c z&|5gKSK&u%4{K9KGrL^HfmcFXZ`_Eua`o!RxCv3t>#r-TsU3T@*Z#u+<~{%8IKg^$ zv{acjJrFk%<2ZLQYimbe-?5XE)m>Y?mNvO9&Rn*1t5WH+Gm`hX1FPp)7Po~?oD{SN z92^P#Q>qwV-E86hn)8iOlA9$xV{4R7^fn%&nLLNv`P>S1eg_i#g!DTF#2}$#y9^0&@gJL|Asl+{-fBS@Ke7(&WjkN0)j} zUvqDD)Y`W7>-D$g-afX=UPc5Yt_d`)pDS8({f>A7XN{5>D@g&M=mUM*0qf; zEZlgu+AK6iSIp=9@hcbqU*9}6==`zoHVQl1dsv%<+4$vpoZI=fdMIdWY6fUc_3-d$ zh*~Qq!pX@A;(2;z7T#~?lWl5mXJ4%}b?VesyV_q5j`d1wXloxnGt+ou)z_?ZU03c$ zwu!}Gzhjs%DW9)sGw+I3CXWuA9{o`iE%{nW^=idOTYgZ4IKA-L%ARm}^VDh69xZH_ zJ9KigdSF~!U*+d#i7ziLHG6wgOS|WT{LJPfo42l5XQY_1SIpW@bLl)^hT_HtVn$*d zei?5&=KuInk&>EP`g@X**$f}Gl+;v3JG*DMfk5o5h z_kQd9@$$s;uToM{6DCey z>C{bPljogxJkY&ULpSk%rR~aNukRUFetP1`!paJ=L`3xVw%o%fC#y%#%?`TiD$rsw zA**lFBt1}gl-7PeYhF-N(lU9nFdL6V!=y<b zALClUFUifK?qT|}G-SHpa_5W;jXit!T51R7u8l~LU}M`Wx&MDuule(5!4p@lI&^h) z_``<}8OzJd*F6l2{C)Ct{NR*vZ`BwBU9n3jH+uaD3D$R ztqhT{tFbULHePu7<%hfF_iye=-#uy3;n$l#Pb@yp(0s3Fvf!1?6E`aOf}+N8m1lqN zy1&1_KYl*Hep^gdV68`wid(&yJXJrW=>pkJ-+h2jjJ*1k!Y}dBDyIrNP zuSKr&RTGx0`QYdmrn}|Z=GNNi&b_-&y|46V6W&uiYi-nqmDUb_5YY@=GMH`n`>fi^!dz*T|GT5)2EAjd3hxm&D@ZD zoNv#EL)>#-ZVFoxaw=+%p}M^2Q@0sDJazx}39S~}cz@5v#jaYmwz7YJeSN& zYVZE!9=H-XOYHwP-PqI9be$6t7F@j^927KR#taRMNs}h6c{gj$v}tVz4mhld-0Ze# z*N=12ERF@uA;nWdN;ke_EPH>C*WLZNn2M_E%{A;6zmiq|Jh`d6qb~AzWd7&p^Xm^C zKFl1xF6Q9f-Q^q0-^cMt8nL8po+%uAt!f+hDyuW~mh$!Kk^%AQ$JV#67Wfe)cP1^b zdRy}GzQh+77J`!cqodt{;o<3@=jocg(gPJqXFl${@vo4xWY@F(?nYv7xIy_mVe%I) zZtjcgUm4_|xeqpuB2ev^0J%yA0{ z5Mbk#Vlg*2-}C3w=^eGd&C*ZanWeXRrsIo!Tr7KLbkBTT{PEzbB#|d(|LxZGw6?Xe z+5G?WxuB@%kxOv&u2}|BXCut^GwAo7$@~}CvyRuRD5sx9)me91)TuH$k>|ax=ji@99LO-t=e_t3q#djIa59zIs|I=JoyZ6g!=<9EfycB%&>Z7}=|7A{R7|bv{ zr!9RoR4vTYf7R*pR*SNa_sLeg-Fki3)rcQIe|xdihg?cbUT7LySXii`r}xZOZSBIV zSqnq7)|#!)m0hS>hVb#JdnH@1-Uii*FJHc#b4Pym-^CJb2cMNj-Ff(fF=jbA zGIeU?y7TjFyVK{_UR$Ou_A1MF#i~EgjdL=^U*~T6FP+M7z1R}SEg@X_j>bryX-WbJ3EWnZL7XGI6F6=eN<|&W#`6#3D+A6<8B&A z-CS$%&^ll6j&eov!&g^V-`J4Ie5_ZRz12xkYnji?Ce!R|5qBA5vvyfcI&(J7*l&(S zV7X+;g2nji|b7O*T zoSJa+)b*kdyt?>Om%5$nVXf|%zINyJ1&_VN?|*Go;K&nj>YJ4H?rHS&iy1Bb{rsCY zZ?@dM{acmU%D!V^;^QPy( z0f&~B76lz0pO80qcZ(N4JJaZ+cKG6Ach$Asxkmc>`p5TFetz)sW#{MT=ZmA3L>2E} zt>w!Rwf<xP`N6UK^Ihv$fCM;eutNQ1)sWWDDOpmMTyj-1~fAr8*6WM$5 zktttIyTV`Z;*+sxczC!y`NoFCAD>R^e|*r)U$kk{vb7a|B_o@!r$0}Ac&0|iGN6<5 zp5@u9rf*dYns&mTk>S-G*CGN|hP=4EoL@;vX$_x;p`f53<4hm6sa~p)u{q{UK^h_v zo6~r|RMk!wmYuyM-C)MX8b`)`x8m5E5B_r3Tj3FT{p+vS>kr?&DS7VPIgmLrva%1~ zyy@W<*Snz;ciU`g!X_p5$)c7sp3G*puQXHBE}Br+x?6T(YuANR$uDUvYp}gim?>U-=&tt+opDx9Y956ZQ-hpB<$Tk(_vHie|+A zy1k(jPo6y4(ckYL6EkN4h%PGHbhY~4mQ3Mg{`2)BV{<0mTfhHb*F*cliYSE z`C(3p?zBBo413Sr;klK(FnQOm?4yVF-Y7bH=*P#$vt{R-7C-YjSF*KCybRj=#@*sD558xl!Sb%)%!t&K+=lclO-5V@o_IKX~-0 zNj$EC(LC?YhDu+}Gx-O0dv_b;_OPuM6IC*w{o9xCY?|@Bs#ls%o<1#H^gJ$h?N^30 zjw#Hmwxp^=H#o!6ScLpa;AOx_J8}KS2ItTUM6&ho_ZpK$*oU!Hhj_Q${bxb}PwQ+#f!s;kTU?%lgN z|IgiCHP!szrQ~xX98At50VvOaHB z*;l^WG(APn#bbJD?ANbf3(Cr#r7S)3cS~5!S1V&R?V?$0rwC^6sk4r{duW9+%scPa zX^QK`94J0-o4(Ubf@eqR>uJ8(UcW?Tr|tQ5e$wYQHseplFC*M8soGdA_Fi?~CF%On zWnvxYA_RV^Jo?okzfd7GmdE+zoqHvJzg~|oC@eg9VxscHM~|93C#yYtc6RohJJH#` z3Ey&Um-SvuIJue?Tr*A=Q#5y<r{+&I{ZZg+*krGDaP{R+pmwy#gpCfnSUN;XJ-^QE=vF>-GGc+J%Px=U zu`h#GU!7r9s+D(d59i*v{(ie(9Q*d|1G&N7C^hDC;@>Ve5v>G0|Zr0$ur z{QaY|JAYQ(^iMVvJ9m8hzd#`)F%G9+9GdQ><-Rw!W{am7NrI|^RjagESXmtx2He=P zOongukspFLJvvq&y}Mhj<=yH7pI9HQ(Y!0GztCxy$8>=gS?Ar3G4YyRa^3YNDm*q; zw(84^#!Z_x>D`x}y;oVHtkWi`IWv8!YbW45s^`_>>$;}_{ZBkn89=L6J z_j@a60Ty!(L-*2f-<$jE?U(t^PTRR|{d)KF^K1j-;_^1nDpJ}b_4>VKU*LM<htg=H_(W>sE95`0aiuWM!?9&%G)bmCdw1 z{+i<3q`gmXEig}RD(8EZb@VPvSg6#-nncDeuDmz?%)7Q~r^7KOM-TaZ#aE{3MuW2b zl`B`$;-{ZXF+<*SDD=UL%Ulp0@)3$2Wy83Cmw$7R~C!+nU_CG^0o+{&G{U?sy z-Ti2tW{yJa5^s(hi}lR5ItU#*bZM#g$LI6wA6;7NJ;Sbc*MjCtg0X3vCAnIeX3m^B z=WcYgySV8-_2#GCToa0yrz&nf?&-3t#XY?A=+UEz2O1bpoH)^NF~g;xpkVW|4cc3- zu`FBl+AujrZ&UuuL?c6s54oQ<7E}dTR_!#e*8HS5*9@}#_QRl_iDw}^l9(QziH=j&#Dkv~e^O=!wc~+9a z48!Uqy`ZaKr_I{*%=evttANsy)Bj4AE?IKm_;Ge-Hl72s^Y?ZB`c-x9{r#KI=bb6B zy*F!mzvSbhjkU#^Uu5P#S$g^9hLV>-Yhrc^9Xxn&&+*P)NLV!W_w#dcae?|niKnOO zHt}&q$7)UG(hghGuz0cZ^J7lg-doo%d9fioTl3G8n<+XI^bQ_sU8leQk5Iq;KMPRn zwxOXxj5j+yGrLaKGNALOa4{$-%=WH!?cCN_99xt8_6n#i?)0m~)cx(v&Fua*A6e$i zookqNMI$9OwJ}j*$@1mNhgvv6Eeso5+vpf$p61Qz=aY_f2ufHKC@?WIPn>?eBIMzk z$juL4yx`aw!#CG2{qn3ybLQ~m=jZR(wJYh?mdq0;Gb=-kuA8dDD{tR4XaKD_? zr?>AlkE6hy3sYsL&Y#b(uC5MinC~o74O<(<+Lmb|R`vZ|udH?1f?d0I9WC|r((WU@JP|7X|4bREZ*|TSl&h_W#=O5qy@2mc`_xEQ$ zpXV+9>f^CF^?k*A%OcxbjXzmlojP%1f~xwg5}6E%9_0zhBy>z>)XDt8dl% z_1o7-tzNtK=?S;ND_XZWbCzMhzv7_p;Z;nVb&B~}*J*3oh5$&Dow z^$K5e@$w%1^YgRr^`}ptR(v?fu3Nmv*6Q<}&%f7Sz458>T2X9h<{_5%GBbSc9D99d zXYq}FwYyVWrwMGRPJZ~};^K(?b+%{HjM;dlj#Mq+tQ5N2t=q$z?JmC6^kB|HZ;uIj zmsDBa1R@-1B-MLkTduTQpA2Vwe7w&LgM~9U8r1wKIQ{)zy{wE3Pk4CviKm~^rc9gG zlz1XSA$Cc3{;pNo*Vn~H?5o-N^j3nwfr}RfLqp$~xxYPAeE#7EuQz|TTq(MHA)#&l z95eUSU~ZRO9TpargbNECL1QR;_UyT^I$Xb^x_a@B9T6KG1)DZHXp8N*zP0*$-o4|p zN4rZn1;J%}iK@G+i_3x2r@43T+?gQ3#?CL7lcsaxX%X0ALPAZd-qRx1^|~n=85`?L zTTI&Mu*+lmj?&h)wx~~xhfUT+OgNch7QgYs%eMM&HY-+{B>w5hITx)Ic=?)tG{E3d)H2nCLp zm#4~XO+PQ^Guw>UZLy$KFB_;^d1j{ZL4&u_+?JM>1*N4&pPrtcXdv<7=kxi8&!0d4 zX_t>$b~$_H#^-UDTz9qbh*#_U`0*oR-Q>xWA3l6|@Yi4K&v%MnI@#Wv_5J)ju9xAZ zGyWTGuh!uZ-EA(`#wXj=)x}lw^=ddM&%9@RShZo|MumA5s;a7vdea~O`uh5A(f#-P z|J$89b*kXQ1IHsrj|T4X5SM6kbarMATOY?89v;49*RH5Cf4lmBHJjU_*M>!}tN-~_ z95gJHzvm;{u^vfgdwctol$0&MXKj_eWxWVmua&5NpEh-B;-MB!P$A>iE7kh=c>m$! z$Jr-NocLCXo9FO@CnqO=`0~Z&|G&Qv-@m_~vwp2*@v{e=>hm`ITq)qxQZi9b@j_@U zTQg%b8}Ff=#m_HXxX{qbEuQrH+S)bu_Zy$L<>gHSjTW4q{wmRA*2b@gg<5J)zg;Qd zbaY)W>)ts2^73*6p61ZiVGoaV3h!ZWd416BSksP2Q|Ha&)7RHuvV8gNKl_rClR?F# zh`9LUr_D zA@Ri1q8UER%;I;~w}0z<^=S7w0hWWjQ>t6pUv66Wx?R4mp}n2m#>PfKQ1IYxxvucv zyMls(KxyJ&GyCJS=J#{TMKA3w`Lt1XWvJ!3~^c*5Yf|mdAWb^9uM(8S?e}M=QaghUEZ|KlDxdU z2D8t;mEul5-nVs6n$b*yf(H(F_Ec^@d;Q)0g?kt8`mxTK#j$|-Y1~7{T`h}OFIdGe z+pqRYQ`4$?J0}gd*q~nVmrBWw0XH5eD985B|2^sS(;Zb`v$o&){_E@Oz_75k`E|cI zy_Q}|+x6}3?e-ZnB;t~a|NW`7u(V7(F+tIUFY=X<1ka6~#pzArp z?qo$v%bhbf8sy*GlV*SX_HF6T&d%I@W&io!%3eKMK39>WNm}DO7yqTy`CyZmEK#}l zHDJ$@<=wuz3dxOZ(k~x5fJ@)KduP{fo1DMnLTG$^zj%Dj#O=v3=jYq^cM7XtvUt<5 zuBnMBV{4Q|ubYaxdh(AC4=w8cSe%=0-*1?FEMlL&k#*7DBY*EHb}#uDo6gbnfNfn-zN;&1Ol)j)jjgGvsGOYKiF4<+)#SduwpPNX!obVh zTXFKq1tD66Pfv;d`1R}4r0Q0-mz(@!xyAKbE@nK5lUMeIne7vjd z-JQ;hi`^G5TgE0TDk@=`B?9U}XJ23UaACV#liOm)*jU+RJ~JR zJKo;je)#t7+nbI%Wv{=RucM->x^T~)Ia{H%V1jq@!5p*4f4|>%_w)1HyngqN9SgQ> z`MBoi<>mg1ckGza!+PoHs&rwgn6Ejhsi_se-)^tG?)*4l7ThC?UVpz|-@bkO_NRBU zHoo-o@Nme=(t3Aq@9E!v@B7Eb%3jGb6%rEKCA0qJ<>il0P1W9$sR;6lmX?-5@-dzr zJ9ZqndR6rFbp7_Y_3bB94xO5+4eC5hRCa%KV`Fl~<6iRv2EE4)ZOOcBQ2flt=GTkG z61G((n}Zdjs^8WnA3S+-Zt{$1(1)BOvV_ALCVDjS=V#VE;ba${HQ^@GjqprRsU>#e+<`E&i+ zudWVnPLw!u{P^Ps2b*KBO`SEXtEGkI$gyLO&dfA!Qc_c6)0%qfRc*ORoWJeYkkz~Y zmb0hml=QEQulvcme*eF!_W0MUpz(9zrp(e1t&ca7`xTXynXg{G3Tn0L9CO0jCdr>W zcWz*CFmqetiHHpw^)^a#f4j7K@4sKKWvvVwy}MSeU4LsSvdcrS^V|Pv@SLo+aMh|+ zx8GSC7ziXLCR$W~(}}BksXArKl#vwl|SG-=k zy+Xd+WdD-Y(7YSH{nf8`yWbmBetMGkSNq4F%FhK44lo`$dUWE(3yl?_;o*-r9+!Ju zdS>EAh1}Sh>yk|hI~H!X%zAfc=Z}}m=j&W=ZEY1x22HE3Teoh)>8EEiZiP4Yu-<-k z>dcuff6mRFGe_tD{FyT|H&^fb9&t?7{r;0T5pITu&Ek&t%OBsEe0*1F&qc#o-dDF9N*enTX17AQ9xY$`kKy{YxE40-^;iDcsf14;K>QWxaXG^xpqHz z^ytzX{nBqU%pt|6b9(WW-S79^*5QxaRdO;(r=_JO;p8OMY1ezejfh0E*#`{{nTT!L zvQ9JelZjka&pY&CSj2(_?>S9&Iv7kY2ykd-|eHngk=k$XK8Q(T8eCKw5!SUV4?=L(nt-1~x&a-_>HK%%khAjS8I$7jx zTC;{{goCtqiaxc;`!uP6K4 zz5J%y{M{Lx5EVtOW-mUIX1wp$EA1V-cRzl)e7>892gfqMxmlHeQJN6_x3}j<$0aB0 zL|Cs}rfk`@cHN5?8K8Q6$BrFG&znp2&af`m6Vr)Mm~rR!%z3^X0q51$R(NjRK5>mPIO{;$J6rm&ntnPYcS*-d$7PwlZDVUiR(H7MAI@ zvjrB;J8PAqb0J~#%5__|n5d|$KfbfGxTCvUSmfi!j~;%0d0+R*S3F>pv8fPv_wHRs zclYDH2TGzM-4%>y|^S1A)%(@a@9P|Y`jUL`rAHhtE;oy z+1c$mr*0&6B0_;+a2WVJK5o;-BiYo`!(+h1-0H-*HA*)lHmR-3tWfdkJ-1b`TIy!V^cg$Lg<9L% zoE8Qw2wxv3wl~R9ZF1tB9fchH{Q2c|oiqE+=ubY$A}%g&Vq)^aZ2pM|@OVK}NU?}? z?C$dS+veCjegD3H{r-PaJcl3re!u_t{{MgT4S1RlxAQ0e`SEd@ux`sL?=u1C)%2F! zx$OZSz^zI?m|^nh%gf6%%yMTb_(?oS+VJ3E_DC2qt>5#>YrE{myP}YQxH$3NvK1>hPEXf=ZW~@O z)4ZiCR+{_k*RK-RWje?DWV;tSwnXR5 zy{MWtOD(XVU_)x;+^DtB{_e9nwfFR^ZMnD8rn_ocSxKo)K4~=V@#Dv;8!I3G-POV& z$<3lzyJXhl8?UNfuiXx+YF~Uk+ke}5rq7D?>&1KZ44rLf?@0LV^X2n-`{a9jDnESt zc5FxCc)##x3}w0@lt)?*`+b;qGrc?EfrE# zRh_o+&&%cWAHBG^c+a`z)xE8U4jl?JpPi+he`mdS#unJHn}@0U#;c*RvAs7pr$65L zd>&|mJuoDs<;|O%miBgKW8>h0U66Gle79cTd{?VxH2dt2ACLP#zF6G<=>7ix&ur68 z9FH}Xy5#Eo`EuF+Y!B<^n?0L089B1Mu4>MGc4p>}7mNEV{KH~4*8QzwVPkWGuG@+8 z_w{Y{TIy6%VsdVdrLsm+a&qCjJC;k9E!(!^y>0b3hlK$iW^rrJ>TiwWT^iJ>9llP% z)>d}0TkoOx`oFEx=6N5Ef%0?N+o+iRb+U$rhC3=gCbfS)ws+T$D@nX&yC8K`b4YQB zdr4|)>cjp2|LTJ(deDTPgjtTnvokZB7rXa!`GKa$U)?<7SZ#ZI?|B!s$(-x=ev?W{ zO8W42`~6S=A)~Kh{y*yfojp{*T8KeGL2KT%&6zNPVWyAT&5EsC zV+>SPSwYdfEmwM5&dsJHM_lgBFiPbDbshHnez)7A{+~@yP*Bv~_urK4d)clbg=DlzD824LW|k_CNB!cG_2CLFw4Y$jA@h zzU4WFg^8`-_4XEMox|3xTYo&8oe%06f%+}4udOxv+ge>w5s`X#SLqyHv*^pS*s^(~ z&3e8jba!+#Y~F0l#LNtuKW}Mm?F5zkXXe|>^YQUnRDH>q{n)_FOsurDbdUPJYZqRB z?da@WSmDXAvR-bQ0>?+?t1_ygv7w>gt}+LlKV~o6IbEQKb@9!P3*7e~Zl3X$!~36{ zTk+?|CtLrmxgPoER>X=mYg}Su=RRF5Q2+n0dDZuKXMaEc`KEG1?A|I-Y4g06_3QQ9 z_++)TYHDgWfTDkI)mG=n0V@LbENQ$lJGx2XNI!UGfa%e*aa9bjZvJr3`DirL_eY>? z+kcn*!~Wv+Ehq2P2uD@dUCZVUl;(bYZSCPcS!Z`gUooyoe=NW8sP?;MLd*YmF&#GeVf>hX&Ts2^rF(AVUD2O@I{LuzwDq!*?Qa#W zk`>j|*w~sE8onqjtavsv{lo42{fY_-46m=RKYn7Oa;5F96A1=ecFyVS)l9tqUhV2!dk}J)(vp9ChuY9Jl^3|s8at;0S-sY6( z{GOo8P|isNepdgM$MD8^2snueAB6IxUy9G_^;M zA6whpcz0dZj zQx5yj>kZz&(OCS=#`MXrj3((gVtx>(8C2sR2*7iR~%kk08C<&gl zS2wK$^f%f=r$DWe6?NBsw7E59ipagYJAP-rJ(FP8?E7X{l=UO`6Yu7nOmPYen-*H` zw>IqX!GjBfk2wk7yLZo`?9B{?Ue=YzULWg~26d9na&8=metb;S(b4h4r%z38izi|P zvQ@H<$;QghX*v-b8aDs7{Tj{7_cy>3lq#l9Q+o$X7nwR8qMG$_>rG=XUc9*HUFAi& zx3V8EOC~$6zyA2i$;kypMTfR#U$3})ZDw!k5xMoNR%ylTsSuQtlLJjOK04aHvFvSB z;KquNNjrA$K79K0>YMLQB35lJ0Zg|?z{ytgby6_-&1$S7+jm5`H7P2u_l9(OcSY!%1T8IjgIe? z7e%jRnQqIu$>i_vpJ5_(5;nL7DfV0B9&BF>8o?He&(q#~>Y>4F{-@iF#6We(&(F_` zm-%NMbNZHRyN^RJ`)bUOqS;@Ae_CxWZvp#!tHXw4P3`UNS7if^dPPJ?h;X&0l$L&r zIHtB~^XA>Umba8?-b8>}&_z3CU2o&1tGQ9Nal`Eie zaZyoGv)B8L)^E?#D>)W10agYynTl=8zu)(KUUlF1c(w2oPm6Ny?~C2E%jy$D-P2Q| z_vE~CLzgVc(y96P^LfR$o9TkW!p*a0Nu{KuJeV3Dcd+=pEqn7p1&df_HXetNkdW@{ zSF%i}c&T2xe7W%PF&Yg2xAGbFk?Av+f zWM^mQnAq6Dhlg7Au7A4U7pDBYk1_x3>EmZU?zE7I>TKB&HN$7y``nnA7@glqUteBk zU+mWFR8zBOMfJ9K24WJ+PR3}sIy*1k84z;ghhWD!3GSd;wMn3^87R`iRv&F*1ln{S>so$2%8>({5b#i!1_ z=<4ovE-W;BZ83;iiZGkrSx`nFle)?Al>tXDgAujKCi+clrhnxFmE zQ2P2>;^8*lId_sLZxkq8!Ifs*{P|-k$KBieb~@P3E{(mLsbg@){@I~jPhAscoRj1Z z4ZT#OHfhtkZvtC3283SSA^m<=>FWoNA2%;_ZtvoXkB?sywe{31z8684uTHfUi;0PG znR}+yE4;M!*URM*JByZHoi8gc-kx~4tuttPz()7jn(N{)SCxv2i!UyJe@{bGv+-um zvB~~+o!-;+3XAG}k2zJ&y!dHrx98U%_uqXov*&aC_~?Gbj?dc})sFF$NY)UFBEQyJUi;~{o+dIQJoiD{mvQN%d zD>HUWl4C_lXn013M%uYKnP1cY|M`6W!}ssvOZD0k142Vv_4oe~0?kZ(`uw@Fe`>_> zhkKnTYkc8GCv6?D#lcuKlo9q1mo& zmyb1x%;wRF-NJtHyD6gOxI#f#h9 z^-ZLFH_y*Dn{AkSN(7W|r|fF!x>1sP|5Eh7O-ppM98QFb{xDo}XwyVtY3RV1V~3@e z*G}_SF1*JoQxE&kJ9{hUf!B3^`@byp_4O>QtcjPG`OeAAItyy&z6>w<@pM7y+@ub1 z`NtQo9Xm8tM0Vf5HETlcVv=jmPuy1G`E{lTxbJ*WiaU6j&%s|`U$5=*@$+-5sj+$V z=n;!+O^wZ@$&=UK`@GC|wn6Q$l9R8Lk{v4w7QQ~rZx34ddTzcw|6IRz>+*LAH#enz z`10k++Y_Ga{60>2v~l@e*Jq`+ao;XKxXi0+AaxcrJ6rdEtJKO@RW;j}H^IiG6}HG+ zy}L79Z~FEdFJ@@_sIg^=zy5eu{OOI2OGPwKel?KT^*q9@EioW6va?;jPNJEe|JfG{ zH@nBGE-iUFH=K~y$|y`ex#nF)^}|D~D?+qDV^(X{_yjz8{#;p6krQH4Zs~t{+gZl1!6{pA?4S%Bb93R^HDlc+u_^mv!pS&SKCs-Ob|)Kl-K%JUkWg;_mM9&HsKKm#-IDgS-%I;Z{!( zY3c4&TL0v-ZY^H4=+LW#EPYFl(CM}+#S5Kworria>w4O=!~XMf7oLpJ(8@Tl-hGw8 zr&3m@@1YUrw&(dn=VArC`W|V2zjY~M#VV6Wug{;_Q0A!^wlAzr@kI~oLVu-oeLn=Hg03Dlm~!TAptvOW+{LEJ3-?^uY`O3wPth+87RMX%PA3Cvp56nE{GXd^ZMM@s3OwKXVS_ttq#a_$ zmZXK*bL=9UKPvw-6x(+zuISSE9+RiG{xH>+Q6ipKQ!ZS@t^eHMBeF zbSCib%xe2TADn03Pk%GNyzo!N)|70nmrAiqy6fLui^#~xIFP-5Z<}uPwhwYF>)4}R zU0G#hWp%x`R)2lPDladuqNdgrH9bHv_S^FA9@e}St4tabrTU$M-T5u7t+~zOa>=khyMl^> zH$42#zrm=+a$nc|-c`SzNf&m7hL<1f&W0?oSUZb7cki*K>w=g2EzG~auPNfI%dsYg zhgJQp^K7d@eYlRE9+9nj3zghrCr+IB;rsXYiy24U+T9@#TOq;beB80 z(7C;$KeQS$Xvt#H`7VBAg4yhe)26Y37OCv3iQKZQrAwl8Wr$Xfv^iheX35!Rxre^r zuh-{V>eJ6sQmrC)V1yBD>klVP0`^f5Q>c62-=EcSNluB(h}-- zRaMo6_5c5YrZ*oRZVwC!YML-X;NokHpkKZ2#u|w|g%yI+WNL-;|L>Bz`t|Ch3#qRw zbR##hY)(J#=IhJ5@Ao_F9lLjzzi6>pD8&t0&UTpJzURxAl6%QV!eGfQaPr0ryUX(} zEG-w7zrP3S$KBgo?Yh=`MTc*AWu>KD-H*gK_x4Kv{`R(c@?_y_YoptD7C-NbnjZ4l zbr*QtT=}Yu>#mk|iPBWj^rXx3@(UNNV&FZ-HfOJ7``P+BovPTog6r?xiTUySH)tb4 z(M}nysjHmd>xU#K-rH08;^JcW?&S0Gbw3ip8A~DAv0<{uiV1p&FS>eqjvVO}*1bNz z<`buktZd<*ABBO4fGCBh!4uiX3oX9RKl}4cn(;lGO*?L`Vuh#GrbBY<(l1}x1qBBi zW?WFXa_t&uLdVh3@x|rk{BHeny}y1{T|^{ou%Y4Kg}z>&U-9_EBC$Iq$@`ac=S@@547F4KQJpk{PFH3e=kUXT_oS0 zgH)6fos*3Fn9@#1UMz4v=fORQv*l9F5m*9)ur9k_g17}Wc5a9}uf z`t-))=YBT7-)#Qy<;#(6xwjLHW@gCT@|f*H9M&pwEZQDLRKE8O*9vN3xR|&%;mbyP5-KE;+UI+~cxbW_G zQKn8rHE2_-)2|P6tKXlu%_)+BcKyXS2EmpnC8M|`jN)HbYhnyT8$N+Rw(t@CsYwm5o@MvrO|GGWDUag+? z`qU{e(A4?Gix;P@Z*6M>4f>eyMZWU#_dnjkDZHWJp;JXwRa2tG9NTI!Ww)LK2O60L zB_ulb>^Zid;p{9^?!Lah38$Z4cv%AOOP9O|08Q#wJe?Z8;A+-E10GP*(ca$vboGj> zS*N#d{hquUTBnzoe)pSY!fAgmS>gSSjm+HQdO61Rcjs5%I_9epaY)_2<<{c+(D@VVt6SSshm; zzP!09oPK`Z)|$0Tmas_mwjERSj(z#^WkG4_);HdQVq$5A91_buZk}`Q+_`DjXZN(; z-Cb@TEg2LO!=tXQKEr2OS#N9g{q@SwLf$#NI6p2~sCv4;^v>Et9$MvLyG} z`rpO=)jLmI+ZmqG5qW*$mBSu;<{p@-XQ=$7;;Q+T#hcb$DyrT6#>{N)FAt-~0joZ* z-VCX2GB!-q(+b*i6g1bUr>E!P=jZ0^%xw4L0rQR>I}$D}@m#TLl~ZD(VogmAXkma< zyH4rS<;y{fcc#65@E~Ewu3cu)j7rl_2S!D4wf#IE@#8@=zkrO)oj2*0mX-^*Y}wMf zal)KAcg~;$eZj=)`St%Qj~qMpX!rYlhc7MlzI`_S`}290WG|g*nEbc%dq7lLnUZb>&bB!c$Kt%=+m5ERsOcD6Zaj=F93Y-zK+J08oON-ji9IQ?|m>j@JC zbRst$DatjGnmBW2X5^|HDLOSjpH4q(R}>T#)fKn5>R^V+qdz}COBkp5Y@QKQy;cIY z7T|8S&Yj>$b7f`bW_Et? z5JFp9TiNIE>SInpK|-fapWdzdeO>f+KCh)h>-YWAGBPr%Sg$_!s_Hk;{7<5z?d&Zj z;MN3qj(o`yl@%dcpo0TI9Y7H=u}61y7Vju{=(Kv52p8+VACI{2b#sTew6s9x*}j?W zzafFK77?Zr9eup4O`0nyzDEX}PiL|GH;!%?BHv&#UHh zTP#@r=OepW-klTGwhQO={;%tC&Z&mX?yw&&_p?fo}{dTK)a+ z0cQRO4-PgLl$X25#K^p7UA9_9O>I&9{yNBX=$qWS&RA%z1({R6vN9MnfqBrNSMBhL ziOPv4Qm!k#-`FyI%{kOqW%lxA5@bg~T5xRAvP_}edwV4Fz$Y0@*O-1|Wr)_BTU)t7 zldXJwdBt^|lGStKldeP4sSh6u7Hn!Ju zvf9UOBEDM9XK&x$eR|iCGkYh$cyO>eKtp7jZ^@AsAGKzug$@}R8lswvhtuy_6hGsc zGk31;_2d2W?J;`pv9WV~VRk4!x%d0?42h!k7qYrg9PDuAn3JO;9Wj+8TBCcWvpE>giW=Z*M!R*Bw$)QnFcD zyVaxoX>U_glNe~pwTF*S&bO~8PI$;z7PWjm|FQ>~EEHPq9gC9N9Qtl*mam}kmCc>p z8*POP4I%y&*t&5;>FY3P8#;ggUo*e?cD4SeTf^vcm0OIEB>`9v*7_@a4;vs@nH?uhP%YJK7bW26uLX=Bjs3G5_@W^TQ`kTC%UNTexl= zpLY1VBdbDJA28_UEq{M+@5bcgd?DfC(R=fZg|=f{~I ztIk)+UW6?9-7$a99-A{WjomLe3SLfl-LY{&(8>$T{pDL)TR+a*u zV@)@*yF$Pxa`4Zd=i71KCFTk5#@9)~+$yO$YofMtWoBmXsQj!pul`@9&DSfz9DICY zA<%Rk5*n(gq{MXY+&K;&o+J16Rtt)WscAVmIf0g#SXfv*cyV!YZr|Y>HzNGZwrv)z z+AC*hXegr3dB7}RqSr0w_BLK+_dd{6xth<63u_+A+12cLTD>;b-1N!8g9i&rOIu^~ z^4&5sGrQ}rU;ADZx`d-iz%E9D+gE;lk^~#5msR%ePUg#TcOHzxIi z3duj0CsuHNoY~R6M-e=3meSKY+dMz%;v&}s3AXinK5_ZYx8t4b*S<0NIB4s66KB^9 zwrKa>R?q|?&Kdlvo6|gBoIDu!NHy)ov)+yl4$vf+xw$yc;Rg>6Hm^0ilN;NPvAi() z&+cvewktoLpukahIrf;7`=>d&)ntc2)%~;TpxuNt*#D%P_5!-SkQ;a0r_~rTHxnIvypwlyx#gZnsGr_LFxWn zM1~R1yT7V2d#gmX!`E$zNl!~ldU9eSXj#C9(%0AWcsmXzWE5KlyO(@CyZ4w=^{y>Z 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%0D`ojd*fJlCKgA-TFAi8|5S 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

Z9MY0`oat-sr%zCY^LfAn;EeA$0% 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 diff --git a/keyboards/ergodox_ez/keymaps/bepo/keymap.c b/keyboards/ergodox_ez/keymaps/bepo/keymap.c index dd47357998..7c30d58788 100644 --- a/keyboards/ergodox_ez/keymaps/bepo/keymap.c +++ b/keyboards/ergodox_ez/keymaps/bepo/keymap.c @@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| * | E_CIRC |A_GRAV| Y | X | . | K | | | | ' | Q | G | H | F | C_CEDIL| * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' - * |QWERTY| |LSuper| LCtrl| LAlt| |Escape| | | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| + * |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' * | | | L_Num| | L_Num| | | * | Space|LShift|------| |------|RShift|Enter | @@ -37,8 +37,8 @@ BP_DOLLAR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL, BP_PERCENT, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_E_GRAVE, KC_BSPC, BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMMA, BP_ECRC, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, BP_K, KC_TAB, -TG(QWER), KC_NO, KC_LGUI, KC_LCTL, KC_LALT, - KC_ESC, KC_TRNS, +KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, + DF(BASE), DF(QWER), MO(NUM), KC_SPC, KC_LSHIFT, MO(FNAV), // Right hand @@ -47,7 +47,7 @@ TG(QWER), KC_NO, KC_LGUI, KC_LCTL, KC_LALT, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, KC_NUMLOCK, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED, BP_ALGR, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, -KC_TRNS, KC_INS, +DF(QWER), DF(BASE), MO(NUM), MO(FNAV), KC_RSHIFT, KC_ENTER), /* Keymap 1: QWERTY system compatibility layer @@ -61,7 +61,7 @@ MO(FNAV), KC_RSHIFT, KC_ENTER), * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| * | e | a | y | x | . | k | | | | ' | q | g | h | f | c | * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' - * | BEPO | |LSuper| LCtrl| LAlt| |Escape| | | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| + * |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' * | | | L_Num| | L_Num| | | * | Space|LShift|------| |------|RShift|Enter | @@ -74,8 +74,8 @@ KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LPRN, KC_RPRN, KC_DEL, KC_PERCENT, KC_B, KC_E, KC_P, KC_O, KC_E, KC_BSPC, KC_W, KC_A, KC_U, KC_I, KC_E, KC_COMMA, KC_E, KC_A, KC_Y, KC_X, KC_DOT, KC_K, KC_TAB, -KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT, - KC_ESC, KC_TRNS, +KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, + DF(BASE), DF(QWER), MO(NUM), KC_SPC, MO(SQWER), MO(FNAV), // Right hand @@ -84,7 +84,7 @@ KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT, KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C, MO(AQWER), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, -KC_TRNS, KC_INS, +DF(QWER), DF(BASE), MO(NUM), MO(FNAV), MO(SQWER), KC_ENTER), /* Keymap 2: QWERTY shifted system compatibility layer @@ -98,7 +98,7 @@ MO(FNAV), MO(SQWER), KC_ENTER), * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| * | E | A | Y | X | : | K | | | | ? | Q | G | H | F | C | * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' - * | BEPO | |LSuper| LCtrl| LAlt| |Escape| | | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| + * |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' * | | | L_Num| | L_Num| | | * | Space|LShift|------| |------|RShift|Enter | @@ -111,7 +111,7 @@ KC_HASH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_GRV, S(KC_B), S(KC_E), S(KC_P), S(KC_O), S(KC_E), KC_TRNS, S(KC_W), S(KC_A), S(KC_U), S(KC_I), S(KC_E), KC_SCOLON, S(KC_E), S(KC_A), S(KC_Y), S(KC_X), KC_COLON, S(KC_K), S(KC_TAB), -KC_TRNS, KC_TRNS, S(KC_LGUI), S(KC_LCTL), S(KC_LALT), +S(KC_ESC), S(KC_INS), S(KC_LGUI), S(KC_LCTL), S(KC_LALT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -135,7 +135,7 @@ KC_TRNS, KC_TRNS, KC_TRNS), * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| * | e | \ | { | } | . | ~ | | | | ' | q | g | h | f | c | * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' - * | BEPO | |LSuper| LCtrl| LAlt| |Escape| | | |Insert| | AltGr| RCtrl|RSuper|PrntSc| Pause| + * |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' * | | | L_Num| | L_Num| | | * | _ |LShift|------| |------|RShift|Enter | @@ -148,8 +148,8 @@ KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LBRC, KC_RBRC, KC_DEL, KC_PERCENT, KC_PIPE, KC_E, KC_AMPR, KC_O, KC_E, KC_BSPC, KC_W, KC_A, KC_U, KC_I, RALT(KC_5), KC_COMMA, KC_E, KC_BSLASH, KC_LCBR, KC_RCBR, KC_DOT, KC_TILDE, KC_TAB, -KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT, - KC_ESC, KC_TRNS, +KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, + KC_TRNS, KC_TRNS, MO(NUM), KC_UNDS, MO(SQWER), MO(FNAV), // Right hand @@ -158,7 +158,7 @@ KC_TRNS, KC_NO, KC_LGUI, KC_LCTL, KC_LALT, KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C, KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, -KC_TRNS, KC_INS, +KC_TRNS, KC_TRNS, MO(NUM), MO(FNAV), MO(SQWER), KC_ENTER), /* Keymap 4: function / navigation layer diff --git a/keyboards/ergodox_ez/keymaps/bepo/readme.md b/keyboards/ergodox_ez/keymaps/bepo/readme.md index 4a18cd80ff..207b675715 100644 --- a/keyboards/ergodox_ez/keymaps/bepo/readme.md +++ b/keyboards/ergodox_ez/keymaps/bepo/readme.md @@ -27,7 +27,7 @@ Touche de fonction permettant de saisir les touches F1 à F12, les touches F1 à Touche de fonction permettant l'accès au pavé numérique comme sur la TypeMatrix 2030, mais sans avoir à déplacer la main droite : avec les doigts sur la rangée de repos, possibilité de saisir les chiffres "4", "5" et "6" comme sur un pavé numérique classique. Le double "0" de la TypeMatrix a été conservé, et gagne une possibilité de répétition en simples "0". -L'appui sur une touche permet de basculer en mode BEPO sur un système configuré pour un clavier QWERTY. Cette compatibilité n'est pas parfaite (pas encore de gestion des accents mais ça devrait être faisable avec une disposition en qwerty international, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle. +Touche permettant de basculer en mode BEPO sur un système configuré pour un clavier QWERTY. Cette compatibilité n'est pas parfaite (pas encore de gestion des accents mais ça devrait être faisable avec une disposition en qwerty international, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle. TODO : couche de compatibilité pour utiliser la disposition BÉPO sur un système configuré pour un clavier AZERTY. From 4cfb262faab653247f4d66d44bf5f3339d82bd36 Mon Sep 17 00:00:00 2001 From: Olivier Date: Mon, 4 Jul 2016 01:10:40 +0200 Subject: [PATCH 005/727] Spellchecking. --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index c24d951d8d..02207702c4 100644 --- a/readme.md +++ b/readme.md @@ -570,7 +570,7 @@ Enable the backlight from the Makefile. All of these functions are available in the `*_kb()` or `*_user()` variety. `kb` ones should only be used in the `/.c` file, and `user` ones should only be used in the `keymap.c`. The keyboard ones call the user ones - it's necessary to keep these calls to allow the keymap functions to work correctly. -## `void martix_init_*(void)` +## `void matrix_init_*(void)` This function gets called when the matrix is initiated, and can contain start-up code for your keyboard/keymap. From 32725dae5ba50f41bf16a80083727f08beaea7c6 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Mon, 11 Jul 2016 17:49:12 -0500 Subject: [PATCH 006/727] Created replicaJunction keymaps. --- .../atreus/keymaps/replicaJunction/keymap.c | 75 ++++ .../keymaps/replicaJunction/keymap.c | 414 ++++++++++++++++++ 2 files changed, 489 insertions(+) create mode 100644 keyboards/atreus/keymaps/replicaJunction/keymap.c create mode 100644 keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c new file mode 100644 index 0000000000..7ff8933e89 --- /dev/null +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -0,0 +1,75 @@ +// this is the style you want to emulate. +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, + +#include "atreus.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +// Note that whatever is set as layer 0 will be the default layer of the keyboard. + +#define _CO 0 // Colemak +#define _QW 1 // QWERTY +#define _NU 2 // Numpad +#define _FN 3 // Function +#define _DV 4 // Dvorak + +// Quick alias for visual sake +#define _______ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_CO] = { + {KC_Q, KC_W, KC_F, KC_P, KC_B, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN }, + {KC_A, KC_R, KC_S, KC_T, KC_G, _______, KC_M, KC_N, KC_E, KC_I, KC_O }, + {KC_Z, KC_X, KC_C, KC_D, KC_V, KC_LCTL, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, MO(_NU), KC_MINS, KC_QUOT, KC_ENT } +}, + +[_DV] = { + {KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, _______, KC_F, KC_G, KC_C, KC_R, KC_L }, + {KC_A, KC_O, KC_E, KC_U, KC_I, _______, KC_D, KC_H, KC_T, KC_N, KC_S }, + {KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LCTL, KC_B, KC_M, KC_W, KC_V, KC_Z }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, MO(_NU), KC_MINS, KC_SLSH, KC_ENT } +}, + +[_QW] = { /* Qwerty */ + {KC_Q, KC_W, KC_E, KC_R, KC_T, _______, KC_Y, KC_U, KC_I, KC_O, KC_P }, + {KC_A, KC_S, KC_D, KC_F, KC_G, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN }, + {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC,KC_LALT, KC_SPC, MO(_NU), KC_MINS, KC_QUOT, KC_ENT } +}, + +[_NU] = { /* Numbers and symbols */ + {KC_EXLM, KC_AT, KC_UP, KC_LCBR, KC_RCBR, _______, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, + {KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_DLR, _______, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, + {KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_LCTL, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS}, + {MO(_FN), KC_INS, KC_LGUI, KC_LSFT, KC_DEL, KC_LALT, KC_SPC, _______, KC_DOT, KC_0, KC_EQL} +}, + +[_FN] = { /* Functions */ + {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10}, + {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, _______, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11}, + {_______, _______, _______, _______, _______, KC_LCTL, _______, KC_F1, KC_F2, KC_F3, KC_F12}, + {_______, _______, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, _______, _______, _______, RESET} +}}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c b/keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c new file mode 100644 index 0000000000..e52d04dd6c --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c @@ -0,0 +1,414 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +/* + * Keyboard: Ergodox + * Keymap: replicaJunction + * Version: 1.0 + * + * This keymap is designed to complement my Atreus keyboard layout, found in keyboards/atreus. + * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox, and I now + * have both keyboards, so I've designed these layouts in an effort to make switching between the + * two as easy as possible. + * + * The default key layout in this keymap is Colemak-ModDH. Information on that layout can be found + * here: https://colemakmods.github.io/mod-dh/ + */ + +#define BASE 0 // default layer +#define CODH 1 // Colemak +#define QWRT 2 // QWERTY layer +#define SYMB 3 // symbols +#define MDIA 4 // media keys +#define UTIL 5 // keyboard utilities +#define NUMP 6 // numpad +#define GAME 7 // mouse overlay for gamins + +#define _______ KC_TRNS // Simple alias that just makes the keymaps a bit easier to look at + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Keymap: Colemak-ModDH + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | ~SYMB| 6 | 7 | 8 | 9 | 0 | ' | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | \ | Q | W | F | P | B | Home | | BkSp | J | L | U | Y | ; | = | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | - | + * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| + * | LShft | Z | X | C | D | V | | | | K | H | , | , | / | RShft | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | LGui | [ | ] |CtlShf| SYMB | | Left | Up | Down | Right| \ | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LCtrl| LAlt | | MDIA | RAlt | + * ,------|------|------| |------+------+------. + * | Ctl/ | Alt/ | Home | | PgUp | | SYMB/| + * | BkSp | Del |------| |------| Enter| Space| + * | | | NUMP | | PgDn | | | + * `--------------------' `--------------------' + */ + +[CODH] = KEYMAP( + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_BSLS,KC_Q, KC_W, KC_F, KC_P, KC_B, KC_HOME, + KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_G, + KC_LSFT,KC_Z, KC_X, KC_C, KC_D, KC_V, ALL_T(KC_NO), + KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), MO(SYMB), + + KC_LCTL, KC_LALT, + KC_HOME, + CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(NUMP), + // right hand + TG(SYMB), KC_6, KC_7, KC_8, KC_9, KC_0, KC_QUOT, + KC_BSPC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,KC_EQL, + KC_M, KC_N, KC_E, KC_I, KC_O, KC_MINS, + KC_BSLS, KC_K, KC_H, KC_DOT, KC_COMM,KC_SLSH,KC_RSFT, + KC_LEFT,KC_UP, KC_DOWN,KC_RGHT,KC_BSLS, + + MO(MDIA), KC_RALT, + KC_PGUP, + KC_PGDN, KC_ENT, LT(SYMB,KC_SPC) + ), + + /* + * Keymap: Dvorak layout + * + * The right index backspace is a nod to my TypeMatrix keyboard, which has + * Backspace in the center. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | ~SYMB| 6 | 7 | 8 | 9 | 0 | / | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | \ | ' | , | . | P | Y | Home | | BkSp | F | G | C | R | L | = | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | - | + * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| + * | LShft | ; | Q | J | K | X | | | | B | M | W | V | Z | RShft | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | LGui | [ | ] |CtlShf| SYMB | | Left | Up | Down | Right| \ | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LCtrl| LAlt | | MDIA | RAlt | + * ,------|------|------| |------+------+------. + * | Ctl/ | Alt/ | Home | | PgUp | | SYMB/| + * | BkSp | Del |------| |------| Enter| Space| + * | | | NUMP | | PgDn | | | + * `--------------------' `--------------------' + */ + +// BASE +[BASE] = KEYMAP( + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_BSLS,KC_QUOT,KC_COMM, KC_DOT, KC_P, KC_Y, KC_HOME, + KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, + KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, ALL_T(KC_NO), + KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), MO(SYMB), + + KC_LCTL, KC_LALT, + KC_HOME, + CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(NUMP), + // right hand + TG(SYMB), KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH, + KC_BSPC, KC_F, KC_G, KC_C, KC_R, KC_L, KC_EQL, + KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + KC_BSLS, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + KC_LEFT,KC_UP, KC_DOWN,KC_RGHT,KC_BSLS, + + MO(MDIA), KC_RALT, + KC_PGUP, + KC_PGDN, KC_ENT, LT(SYMB,KC_SPC) + ), + + /* + * Keymap: QWERTY layout. + * + * This is optimized for gaming, not typing, so there aren't as many macros + * as the Dvorak layer. Some of the keys have also been moved to "game- + * like" locations, such as making the spacebar available to the left thumb, + * and repositioning the arrow keys at the bottom right corner. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | Esc | |~SYMB | 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | LShift | Q | W | E | R | T | +L1 | | BkSp | Y | U | I | O | P | ] | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Tab | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | + * |--------+------+------+------+------+------| FN2 | | ~L1 |------+------+------+------+------+--------| + * | LShft | Z | X | C | V | B | | | | N | M | , | . | Up | RShft | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | LCtrl| ` | \ |CtlShf| SYMB | | SYMB | / | Left | Down | Right| + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LCtrl| LAlt | | MDIA | ~GAME| + * ,------|------|------| |------+------+------. + * | | | Home | | PgUp | | SYMB/ + * | Space| LAlt |------| |------| Enter| Space| + * | | | End | | PgDn | | | + * `--------------------' `--------------------' + */ +[QWRT] = KEYMAP( // Layer1: QWERTY + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_LSFT,KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + KC_LCTL,KC_GRV, KC_SLSH,LCTL(KC_LSFT), MO(SYMB), + + KC_LCTL,KC_LALT, + KC_HOME, + KC_SPC, KC_LALT, KC_END, + // right hand + TG(SYMB), KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC, + KC_BSPC,KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, + KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_MINS, + KC_END, KC_N, KC_M, KC_COMM,KC_DOT, KC_UP ,KC_RSFT, + MO(SYMB),KC_UP, KC_LEFT,KC_DOWN,KC_RGHT, + + MO(MDIA),TG(GAME), + KC_PGUP, + KC_PGDN,KC_ENT,LT(SYMB,KC_SPC) + ), + + /* + * Keymap: Symbol / navigation Layer + * + * Inspired by Atreus. + * Note the two keys on the left thumb cluster. These change the "default" layer between key layouts. + * The RESET button also resets the Teensy, but note bug #164. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | Up | { | } | | | | | Home | Up | End | | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | / | | | \ | $ |------| |------| | Left | Down | Right| | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | [ | ] | ( | ) | & | | | | | PgUp | | PgDn | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | SYMB | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |Dvorak|QWERTY| | | RESET| + * ,------|------|------| |------+------+------. + * | | |Colemk| | | | | + * | | |------| |------| | SYMB | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + _______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, + _______,KC_EXLM,KC_AT, KC_UP, KC_LCBR,KC_RCBR,_______, + _______,KC_HASH,KC_SLSH,KC_PIPE,KC_BSLS,KC_DLR, + _______,KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR,_______, + _______,_______,_______,_______,_______, + + DF(BASE),DF(QWRT), + DF(CODH), + _______, _______, _______, + + // right hand + _______,KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______,_______,KC_HOME,KC_UP, KC_END, _______,KC_F12, + _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______, + _______,_______,KC_PGUP,_______,KC_PGDN,_______,_______, + _______,_______,_______,_______,_______, + + _______, RESET, + _______, + _______, _______, _______ +), +/* Keymap: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_MS_U, _______, _______, _______, + _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_BTN1, KC_BTN2, + _______, _______, + _______, + _______, _______, _______, + // right hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, KC_MPRV, KC_MNXT, _______, _______, + KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, + _______, _______, + _______, + _______, _______, KC_WBAK +), + +/* + * Keymap: Number pad. + * + * Note that the number keys here are actually numpad keystrokes. This often doesn't matter, but it may be relevant in a few cases. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | 7 | 8 | 9 | * | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | 1 | 2 | 3 | / | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | 0 | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | Enter| + * | | | | | | | | + * `--------------------' `--------------------' + */ +[NUMP] = KEYMAP( + // left hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + + _______,_______, + _______, + _______,_______,_______, + // right hand + _______,_______,_______,_______,_______,_______,_______, + _______,KC_UP, KC_P7, KC_P8, KC_P9, KC_PAST,KC_F12, + KC_DOWN,KC_P4, KC_P5, KC_P6, KC_PPLS,_______, + _______,KC_AMPR,KC_P1, KC_P2, KC_P3, KC_PSLS,_______, + KC_P0, KC_PDOT,KC_P0, KC_EQL, _______, + + _______, _______, + _______, + _______, _______, KC_PENT + ), + + /* + * Keymap: Gaming + * + * This is mostly a mouse overlay for the right hand while the left hand uses the QWERTY layout. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | |WhlUp | MsUp |WhlDn | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| |MsLeft|MsDown|MsRght| | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | |MClick| | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | ~GAME| + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------|RClick|LClick| + * | | | | | | | | + * `--------------------' `--------------------' + */ +[GAME] = KEYMAP( + // left hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + + _______,_______, + _______, + _______,_______,_______, + + // right hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______, + _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + KC_BTN3, _______, _______, _______, _______, + _______, _______, + _______, + _______, KC_BTN2, KC_BTN1 + ), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case BASE: + ergodox_right_led_1_on(); + break; + case QWRT: + ergodox_right_led_2_on(); + case SYMB: + ergodox_right_led_3_on(); + break; + case GAME: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + default: + // none + break; + } + +}; From fb46eb2de1b16f4700b486c9ef7fb34d35025209 Mon Sep 17 00:00:00 2001 From: Josh Colbeck Date: Tue, 12 Jul 2016 23:52:02 -0500 Subject: [PATCH 007/727] Added open resource macro tap to type, hold for resource --- keyboards/ergodox_ez/keymaps/josh/keymap.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/keyboards/ergodox_ez/keymaps/josh/keymap.c b/keyboards/ergodox_ez/keymaps/josh/keymap.c index de5664a25a..9ceb874236 100644 --- a/keyboards/ergodox_ez/keymaps/josh/keymap.c +++ b/keyboards/ergodox_ez/keymaps/josh/keymap.c @@ -7,15 +7,16 @@ #define MDIA 2 // media keys //macros -#define CTL_SFT_T 100 -#define CTL_SFT_G 101 -#define CTL_ALT_H 102 +#define CTL_SFT_T 100 // open type +#define CTL_SFT_G 101 // find references +#define CTL_ALT_H 102 // open call hierarchy +#define CTL_SFT_R 103 // open resource const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | = | 1 | 2 | 3 | 4 | 5 | ESC | | M 100| 6 | 7 | 8 | 9 | 0 | - | + * | = | 1 | 2 | 3 | 4 | 5 | ESC | |M100/3| 6 | 7 | 8 | 9 | 0 | - | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * |TAB /Alt| Q | W | E | R | T | Meh | | Meh | Y | U | I | O | P |\ / ALT | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -46,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_HOME, KC_SPC,KC_BSPC,KC_END, // right hand - M(CTL_SFT_T),KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + LT(M(CTL_SFT_T), M(CTL_SFT_R)),KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, MEH_T(KC_NO),KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),CTL_T(KC_QUOT), MO(SYMB), KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, @@ -171,6 +172,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } return MACRO(U(LCTL), U(LALT), END); break; + case CTL_SFT_R: + if (record->event.pressed) { + return MACRO(D(LCTL), D(LSFT), T(R), END); + } + return MACRO(U(LCTL), U(LSFT), END); + break; } return MACRO_NONE; }; From f90d89458c9ff8e33f1739c06681f28ffd95b5f9 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Mon, 11 Jul 2016 17:49:12 -0500 Subject: [PATCH 008/727] Created replicaJunction keymaps. --- .../atreus/keymaps/replicaJunction/keymap.c | 89 ++++ .../keymaps/replicaJunction/keymap.c | 414 ++++++++++++++++++ 2 files changed, 503 insertions(+) create mode 100644 keyboards/atreus/keymaps/replicaJunction/keymap.c create mode 100644 keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c new file mode 100644 index 0000000000..79b2738aa3 --- /dev/null +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -0,0 +1,89 @@ +#include "atreus.h" + +/* + * Keyboard: Atreus + * Keymap: replicaJunction + * Version: 0.1 + * + * This keymap is designed to complement my Ergodox keyboard layout, found in keyboards/ergodox_ez. + * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox, and I now + * have both keyboards, so I've designed these layouts in an effort to make switching between the + * two as easy as possible. + * + * Clearly, the Atreus is the limiting factor in this equation, so I've taken heavy advantage of + * function and dual-role keys. + * + * The default key layout in this keymap is Colemak-ModDH. Information on that layout can be found + * here: https://colemakmods.github.io/mod-dh/ + */ + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. + +// Note that whatever is set as layer 0 will be the default layer of the keyboard. + +#define _CO 0 // Colemak +#define _QW 1 // QWERTY +#define _NU 2 // Numpad +#define _FN 3 // Function +#define _DV 4 // Dvorak + +// Quick alias for visual sake +#define _______ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_CO] = { + {KC_Q, KC_W, KC_F, KC_P, KC_B, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN }, + {KC_A, KC_R, KC_S, KC_T, KC_G, _______, KC_M, KC_N, KC_E, KC_I, KC_O }, + {KC_Z, KC_X, KC_C, KC_D, KC_V, KC_LCTL, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, MO(_NU), KC_MINS, KC_QUOT, KC_ENT } +}, + +[_DV] = { + {KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, _______, KC_F, KC_G, KC_C, KC_R, KC_L }, + {KC_A, KC_O, KC_E, KC_U, KC_I, _______, KC_D, KC_H, KC_T, KC_N, KC_S }, + {KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LCTL, KC_B, KC_M, KC_W, KC_V, KC_Z }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, MO(_NU), KC_MINS, KC_SLSH, KC_ENT } +}, + +[_QW] = { /* Qwerty */ + {KC_Q, KC_W, KC_E, KC_R, KC_T, _______, KC_Y, KC_U, KC_I, KC_O, KC_P }, + {KC_A, KC_S, KC_D, KC_F, KC_G, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN }, + {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, MO(_NU), KC_MINS, KC_QUOT, KC_ENT } +}, + +[_NU] = { /* Numbers and symbols */ + {KC_EXLM, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, + {KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, + {KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_LCTL, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS}, + {MO(_FN), KC_INS, KC_LGUI, KC_LSFT, KC_DEL, KC_LALT, KC_SPC, _______, KC_DOT, KC_0, KC_EQL} +}, + +[_FN] = { /* Functions */ + {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10}, + {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, _______, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11}, + {_______, _______, _______, _______, _______, KC_LCTL, _______, KC_F1, KC_F2, KC_F3, KC_F12}, + {_______, _______, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, _______, _______, _______, RESET} +}}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c b/keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c new file mode 100644 index 0000000000..be2290567f --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c @@ -0,0 +1,414 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +/* + * Keyboard: Ergodox + * Keymap: replicaJunction + * Version: 1.0 + * + * This keymap is designed to complement my Atreus keyboard layout, found in keyboards/atreus. + * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox, and I now + * have both keyboards, so I've designed these layouts in an effort to make switching between the + * two as easy as possible. + * + * The default key layout in this keymap is Colemak-ModDH. Information on that layout can be found + * here: https://colemakmods.github.io/mod-dh/ + */ + +#define BASE 0 // default layer +#define CODH 1 // Colemak +#define QWRT 2 // QWERTY layer +#define SYMB 3 // symbols +#define MDIA 4 // media keys +#define UTIL 5 // keyboard utilities +#define NUMP 6 // numpad +#define GAME 7 // mouse overlay for gaming + +#define _______ KC_TRNS // Simple alias that just makes the keymaps a bit easier to look at + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * Keymap: Colemak-ModDH + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | ~SYMB| 6 | 7 | 8 | 9 | 0 | ' | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | \ | Q | W | F | P | B | Home | | BkSp | J | L | U | Y | ; | = | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | - | + * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| + * | LShft | Z | X | C | D | V | | | | K | H | , | , | / | RShft | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | LGui | [ | ] |CtlShf| SYMB | | Left | Up | Down | Right| \ | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LCtrl| LAlt | | MDIA | RAlt | + * ,------|------|------| |------+------+------. + * | Ctl/ | Alt/ | Home | | PgUp | | SYMB/| + * | BkSp | Del |------| |------| Enter| Space| + * | | | NUMP | | PgDn | | | + * `--------------------' `--------------------' + */ + +[CODH] = KEYMAP( + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_BSLS,KC_Q, KC_W, KC_F, KC_P, KC_B, KC_HOME, + KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_G, + KC_LSFT,KC_Z, KC_X, KC_C, KC_D, KC_V, ALL_T(KC_NO), + KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), MO(SYMB), + + KC_LCTL, KC_LALT, + KC_HOME, + CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(NUMP), + // right hand + TG(SYMB), KC_6, KC_7, KC_8, KC_9, KC_0, KC_QUOT, + KC_BSPC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,KC_EQL, + KC_M, KC_N, KC_E, KC_I, KC_O, KC_MINS, + KC_BSLS, KC_K, KC_H, KC_DOT, KC_COMM,KC_SLSH,KC_RSFT, + KC_LEFT,KC_UP, KC_DOWN,KC_RGHT,KC_BSLS, + + MO(MDIA), KC_RALT, + KC_PGUP, + KC_PGDN, KC_ENT, LT(SYMB,KC_SPC) + ), + + /* + * Keymap: Dvorak layout + * + * The right index backspace is a nod to my TypeMatrix keyboard, which has + * Backspace in the center. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | ~SYMB| 6 | 7 | 8 | 9 | 0 | / | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | \ | ' | , | . | P | Y | Home | | BkSp | F | G | C | R | L | = | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | - | + * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| + * | LShft | ; | Q | J | K | X | | | | B | M | W | V | Z | RShft | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | LGui | [ | ] |CtlShf| SYMB | | Left | Up | Down | Right| \ | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LCtrl| LAlt | | MDIA | RAlt | + * ,------|------|------| |------+------+------. + * | Ctl/ | Alt/ | Home | | PgUp | | SYMB/| + * | BkSp | Del |------| |------| Enter| Space| + * | | | NUMP | | PgDn | | | + * `--------------------' `--------------------' + */ + +// BASE +[BASE] = KEYMAP( + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_BSLS,KC_QUOT,KC_COMM, KC_DOT, KC_P, KC_Y, KC_HOME, + KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, + KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, ALL_T(KC_NO), + KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), MO(SYMB), + + KC_LCTL, KC_LALT, + KC_HOME, + CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(NUMP), + // right hand + TG(SYMB), KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH, + KC_BSPC, KC_F, KC_G, KC_C, KC_R, KC_L, KC_EQL, + KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + KC_BSLS, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + KC_LEFT,KC_UP, KC_DOWN,KC_RGHT,KC_BSLS, + + MO(MDIA), KC_RALT, + KC_PGUP, + KC_PGDN, KC_ENT, LT(SYMB,KC_SPC) + ), + + /* + * Keymap: QWERTY layout. + * + * This is optimized for gaming, not typing, so there aren't as many macros + * as the Dvorak layer. Some of the keys have also been moved to "game- + * like" locations, such as making the spacebar available to the left thumb, + * and repositioning the arrow keys at the bottom right corner. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | Esc | |~SYMB | 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | LShift | Q | W | E | R | T | +L1 | | BkSp | Y | U | I | O | P | ] | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Tab | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | + * |--------+------+------+------+------+------| FN2 | | ~L1 |------+------+------+------+------+--------| + * | LShft | Z | X | C | V | B | | | | N | M | , | . | Up | RShft | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | LCtrl| ` | \ |CtlShf| SYMB | | SYMB | / | Left | Down | Right| + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LCtrl| LAlt | | MDIA | ~GAME| + * ,------|------|------| |------+------+------. + * | | | Home | | PgUp | | SYMB/ + * | Space| LAlt |------| |------| Enter| Space| + * | | | End | | PgDn | | | + * `--------------------' `--------------------' + */ +[QWRT] = KEYMAP( // Layer1: QWERTY + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_LSFT,KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + KC_LCTL,KC_GRV, KC_SLSH,LCTL(KC_LSFT), MO(SYMB), + + KC_LCTL,KC_LALT, + KC_HOME, + KC_SPC, KC_LALT, KC_END, + // right hand + TG(SYMB), KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC, + KC_BSPC,KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, + KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_MINS, + KC_END, KC_N, KC_M, KC_COMM,KC_DOT, KC_UP ,KC_RSFT, + MO(SYMB),KC_UP, KC_LEFT,KC_DOWN,KC_RGHT, + + MO(MDIA),TG(GAME), + KC_PGUP, + KC_PGDN,KC_ENT,LT(SYMB,KC_SPC) + ), + + /* + * Keymap: Symbol / navigation Layer + * + * Inspired by Atreus. + * Note the two keys on the left thumb cluster. These change the "default" layer between key layouts. + * The RESET button also resets the Teensy, but note bug #164. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | Up | { | } | | | | | Home | Up | End | | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | / | | | \ | $ |------| |------| | Left | Down | Right| | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | [ | ] | ( | ) | & | | | | | PgUp | | PgDn | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | SYMB | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |Dvorak|QWERTY| | | RESET| + * ,------|------|------| |------+------+------. + * | | |Colemk| | | | | + * | | |------| |------| | SYMB | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + _______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, + _______,KC_EXLM,KC_AT, KC_UP, KC_LCBR,KC_RCBR,_______, + _______,KC_HASH,KC_SLSH,KC_PIPE,KC_BSLS,KC_DLR, + _______,KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR,_______, + _______,_______,_______,_______,_______, + + DF(BASE),DF(QWRT), + DF(CODH), + _______, _______, _______, + + // right hand + _______,KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + _______,_______,KC_HOME,KC_UP, KC_END, _______,KC_F12, + _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______, + _______,_______,KC_PGUP,_______,KC_PGDN,_______,_______, + _______,_______,_______,_______,_______, + + _______, RESET, + _______, + _______, _______, _______ +), +/* Keymap: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_MS_U, _______, _______, _______, + _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_BTN1, KC_BTN2, + _______, _______, + _______, + _______, _______, _______, + // right hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, KC_MPRV, KC_MNXT, _______, _______, + KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, + _______, _______, + _______, + _______, _______, KC_WBAK +), + +/* + * Keymap: Number pad. + * + * Note that the number keys here are actually numpad keystrokes. This often doesn't matter, but it may be relevant in a few cases. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | 7 | 8 | 9 | * | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | 1 | 2 | 3 | / | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | 0 | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | Enter| + * | | | | | | | | + * `--------------------' `--------------------' + */ +[NUMP] = KEYMAP( + // left hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + + _______,_______, + _______, + _______,_______,_______, + // right hand + _______,_______,_______,_______,_______,_______,_______, + _______,KC_UP, KC_P7, KC_P8, KC_P9, KC_PAST,KC_F12, + KC_DOWN,KC_P4, KC_P5, KC_P6, KC_PPLS,_______, + _______,KC_AMPR,KC_P1, KC_P2, KC_P3, KC_PSLS,_______, + KC_P0, KC_PDOT,KC_P0, KC_EQL, _______, + + _______, _______, + _______, + _______, _______, KC_PENT + ), + + /* + * Keymap: Gaming + * + * This is mostly a mouse overlay for the right hand while the left hand uses the QWERTY layout. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | |WhlUp | MsUp |WhlDn | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| |MsLeft|MsDown|MsRght| | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | |MClick| | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | ~GAME| + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------|RClick|LClick| + * | | | | | | | | + * `--------------------' `--------------------' + */ +[GAME] = KEYMAP( + // left hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + + _______,_______, + _______, + _______,_______,_______, + + // right hand + _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______, + _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + KC_BTN3, _______, _______, _______, _______, + _______, _______, + _______, + _______, KC_BTN2, KC_BTN1 + ), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case BASE: + ergodox_right_led_1_on(); + break; + case QWRT: + ergodox_right_led_2_on(); + case SYMB: + ergodox_right_led_3_on(); + break; + case GAME: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + default: + // none + break; + } + +}; From 77377e2784705a6d31b81dc1a855201ff26700dc Mon Sep 17 00:00:00 2001 From: Joshua T Date: Fri, 15 Jul 2016 17:44:39 -0500 Subject: [PATCH 009/727] Fixed a merge conflict --- keyboards/atreus/keymaps/replicaJunction/keymap.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index 992eabdbdb..f2a8ff24c1 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -1,6 +1,3 @@ -<<<<<<< HEAD -#include "atreus.h" - /* * Keyboard: Atreus * Keymap: replicaJunction @@ -17,12 +14,6 @@ * The default key layout in this keymap is Colemak-ModDH. Information on that layout can be found * here: https://colemakmods.github.io/mod-dh/ */ -======= -// this is the style you want to emulate. -// This is the canonical layout file for the Quantum project. If you want to add another keyboard, - -#include "atreus.h" ->>>>>>> 32725dae5ba50f41bf16a80083727f08beaea7c6 // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. From c5768a5f32b4521567688635a628d997ff7784e7 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Fri, 15 Jul 2016 17:49:14 -0500 Subject: [PATCH 010/727] Added default layer switch QWERTY to Colemak --- keyboards/atreus/keymaps/replicaJunction/keymap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index f2a8ff24c1..020d7a77cd 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -26,7 +26,7 @@ #define _QW 1 // QWERTY #define _NU 2 // Numpad #define _FN 3 // Function -#define _DV 4 // Dvorak +#define _DV 4 // Dvorak (not currently used) // Quick alias for visual sake #define _______ KC_TRNS @@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NU] = { /* Numbers and symbols */ {KC_EXLM, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, - {KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, + {KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, {KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_LCTL, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS}, {MO(_FN), KC_INS, KC_LGUI, KC_LSFT, KC_DEL, KC_LALT, KC_SPC, _______, KC_DOT, KC_0, KC_EQL} }, @@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10}, {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, _______, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11}, {_______, _______, _______, _______, _______, KC_LCTL, _______, KC_F1, KC_F2, KC_F3, KC_F12}, - {_______, _______, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, _______, _______, _______, RESET} + {_______, _______, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, _______, DF(_CO), DF(_QW), RESET} }}; const uint16_t PROGMEM fn_actions[] = { From 243ae75256d5458a7ef11985aa008c797ff18add Mon Sep 17 00:00:00 2001 From: Joshua T Date: Fri, 15 Jul 2016 17:49:14 -0500 Subject: [PATCH 011/727] Added default layer switch QWERTY to Colemak --- keyboards/atreus/keymaps/replicaJunction/keymap.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index f2a8ff24c1..30d2ef81a0 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -15,6 +15,8 @@ * here: https://colemakmods.github.io/mod-dh/ */ +#include "atreus.h" + // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. // Layer names don't all need to be of the same length, obviously, and you can also skip them @@ -26,7 +28,7 @@ #define _QW 1 // QWERTY #define _NU 2 // Numpad #define _FN 3 // Function -#define _DV 4 // Dvorak +#define _DV 4 // Dvorak (not currently used) // Quick alias for visual sake #define _______ KC_TRNS @@ -55,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_NU] = { /* Numbers and symbols */ {KC_EXLM, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, - {KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, + {KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, {KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_LCTL, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS}, {MO(_FN), KC_INS, KC_LGUI, KC_LSFT, KC_DEL, KC_LALT, KC_SPC, _______, KC_DOT, KC_0, KC_EQL} }, @@ -64,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10}, {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, _______, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11}, {_______, _______, _______, _______, _______, KC_LCTL, _______, KC_F1, KC_F2, KC_F3, KC_F12}, - {_______, _______, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, _______, _______, _______, RESET} + {_______, _______, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, _______, DF(_CO), DF(_QW), RESET} }}; const uint16_t PROGMEM fn_actions[] = { From 377bcb00fb1a88a9549381f5da1e7b11cd623296 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Tue, 19 Jul 2016 17:01:21 -0500 Subject: [PATCH 012/727] Added Gaming layer and removed Dvorak Also added tap/hold functions on central keys --- .../atreus/keymaps/replicaJunction/keymap.c | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index 30d2ef81a0..ba1331bce4 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -26,47 +26,47 @@ #define _CO 0 // Colemak #define _QW 1 // QWERTY -#define _NU 2 // Numpad -#define _FN 3 // Function -#define _DV 4 // Dvorak (not currently used) +#define _GA 2 // Gaming +#define _NU 3 // Numpad +#define _FN 4 // Function // Quick alias for visual sake #define _______ KC_TRNS const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_CO] = { - {KC_Q, KC_W, KC_F, KC_P, KC_B, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN }, - {KC_A, KC_R, KC_S, KC_T, KC_G, _______, KC_M, KC_N, KC_E, KC_I, KC_O }, - {KC_Z, KC_X, KC_C, KC_D, KC_V, KC_LCTL, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH }, - {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, MO(_NU), KC_MINS, KC_QUOT, KC_ENT } -}, - -[_DV] = { - {KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, _______, KC_F, KC_G, KC_C, KC_R, KC_L }, - {KC_A, KC_O, KC_E, KC_U, KC_I, _______, KC_D, KC_H, KC_T, KC_N, KC_S }, - {KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LCTL, KC_B, KC_M, KC_W, KC_V, KC_Z }, - {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, MO(_NU), KC_MINS, KC_SLSH, KC_ENT } + {KC_Q, KC_W, KC_F, KC_P, KC_B, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN }, + {KC_A, KC_R, KC_S, KC_T, KC_G, _______, KC_M, KC_N, KC_E, KC_I, KC_O }, + {KC_Z, KC_X, KC_C, KC_D, KC_V, CTL_T(KC_BSPC), KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_LSFT, ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_NU), KC_MINS, KC_QUOT, KC_EQL } }, [_QW] = { /* Qwerty */ - {KC_Q, KC_W, KC_E, KC_R, KC_T, _______, KC_Y, KC_U, KC_I, KC_O, KC_P }, - {KC_A, KC_S, KC_D, KC_F, KC_G, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN }, - {KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCTL, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH }, - {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, MO(_NU), KC_MINS, KC_QUOT, KC_ENT } + {KC_Q, KC_W, KC_E, KC_R, KC_T, _______, KC_Y, KC_U, KC_I, KC_O, KC_P }, + {KC_A, KC_S, KC_D, KC_F, KC_G, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN }, + {KC_Z, KC_X, KC_C, KC_V, KC_B, CTL_T(KC_BSPC), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH }, + {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_NU), TG(_GA), KC_QUOT, KC_EQL } }, [_NU] = { /* Numbers and symbols */ - {KC_EXLM, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, + {KC_GRV, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, {KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, - {KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_LCTL, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS}, - {MO(_FN), KC_INS, KC_LGUI, KC_LSFT, KC_DEL, KC_LALT, KC_SPC, _______, KC_DOT, KC_0, KC_EQL} + {KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, CTL_T(KC_BSPC), KC_TILD, KC_1, KC_2, KC_3, KC_BSLS}, + {MO(_FN), KC_INS, KC_LGUI, KC_LSFT, _______, _______, KC_SPC, _______, KC_DOT, KC_0, _______} }, [_FN] = { /* Functions */ {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10}, {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, _______, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11}, - {_______, _______, _______, _______, _______, KC_LCTL, _______, KC_F1, KC_F2, KC_F3, KC_F12}, - {_______, _______, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_SPC, _______, DF(_CO), DF(_QW), RESET} + {_______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12}, + {_______, _______, KC_LGUI, KC_LSFT, _______, _______, KC_SPC, _______, DF(_CO), DF(_QW), RESET} +}, + +[_GA] = { /* Gaming */ + {_______, _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______ }, + {_______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______ }, + {_______, _______, _______, _______, _______, KC_BSPC, KC_BTN3, _______, KC_MS_D, _______, _______ }, + {_______, _______, _______, _______, KC_SPC, KC_BTN2, KC_BTN1, _______, _______, _______, _______ }, }}; const uint16_t PROGMEM fn_actions[] = { From 8cb2cf375b1494875551a42dbf8d6829f0dd7a92 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Tue, 19 Jul 2016 17:33:10 -0500 Subject: [PATCH 013/727] Adjusted Atreus KEYMAP() function. This change adjusts the KEYMAP() function to provide a more visual representation of the key positions on the keyboard. Previously, keymaps have been defined directly using arrays for the Atreus keyboard. While this works, it doesn't utilize the helpful KEYMAP() function at all to allow the user to visually position the key codes for ease of editing. See the Ergodox-EZ KEYMAP() function and layouts for a great example of how this can work. This change should not break any existing Atreus layouts. At the time of this commit, there are two existing layouts for the Atreus board, and neither use the KEYMAP() function. --- keyboards/atreus/atreus.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/keyboards/atreus/atreus.h b/keyboards/atreus/atreus.h index 2b3803bc21..f841c35199 100644 --- a/keyboards/atreus/atreus.h +++ b/keyboards/atreus/atreus.h @@ -10,16 +10,16 @@ // The first section contains all of the arguements // The second converts the arguments into a two-dimensional array #define KEYMAP( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \ ) \ { \ { k00, k01, k02, k03, k04, KC_NO, k05, k06, k07, k08, k09 }, \ { k10, k11, k12, k13, k14, KC_NO, k15, k16, k17, k18, k19 }, \ { k20, k21, k22, k23, k24, k35, k25, k26, k27, k28, k29 }, \ - { k2a, k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a } \ + { k30, k31, k32, k33, k34, k36, k37, k38, k39, k3a, k3b } \ } #endif From 2a4947b28b55c084191e6c51e3194311432c4fc2 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Tue, 19 Jul 2016 17:39:15 -0500 Subject: [PATCH 014/727] Modified Atreus layout to account for keymap() function --- .../atreus/keymaps/replicaJunction/keymap.c | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index ba1331bce4..d96fe008a1 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -34,40 +34,40 @@ #define _______ KC_TRNS const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_CO] = { - {KC_Q, KC_W, KC_F, KC_P, KC_B, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN }, - {KC_A, KC_R, KC_S, KC_T, KC_G, _______, KC_M, KC_N, KC_E, KC_I, KC_O }, - {KC_Z, KC_X, KC_C, KC_D, KC_V, CTL_T(KC_BSPC), KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH }, - {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_LSFT, ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_NU), KC_MINS, KC_QUOT, KC_EQL } -}, +[_CO] = KEYMAP( + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, + KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, + KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_LSFT, CTL_T(KC_BSPC), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_NU), KC_MINS, KC_QUOT, KC_EQL +), -[_QW] = { /* Qwerty */ - {KC_Q, KC_W, KC_E, KC_R, KC_T, _______, KC_Y, KC_U, KC_I, KC_O, KC_P }, - {KC_A, KC_S, KC_D, KC_F, KC_G, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN }, - {KC_Z, KC_X, KC_C, KC_V, KC_B, CTL_T(KC_BSPC), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH }, - {KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_NU), TG(_GA), KC_QUOT, KC_EQL } -}, +[_QW] = KEYMAP( /* Qwerty */ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, CTL_T(KC_BSPC), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_NU), TG(_GA), KC_QUOT, KC_EQL +), -[_NU] = { /* Numbers and symbols */ - {KC_GRV, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR}, - {KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS}, - {KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, CTL_T(KC_BSPC), KC_TILD, KC_1, KC_2, KC_3, KC_BSLS}, - {MO(_FN), KC_INS, KC_LGUI, KC_LSFT, _______, _______, KC_SPC, _______, KC_DOT, KC_0, _______} -}, +[_NU] = KEYMAP( /* Numbers and symbols */ + KC_GRV, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR, + KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS, + KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS, + MO(_FN), KC_INS, KC_LGUI, KC_LSFT, _______, CTL_T(KC_BSPC), _______, KC_SPC, _______, KC_DOT, KC_0, _______ +), -[_FN] = { /* Functions */ - {KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10}, - {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, _______, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11}, - {_______, _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12}, - {_______, _______, KC_LGUI, KC_LSFT, _______, _______, KC_SPC, _______, DF(_CO), DF(_QW), RESET} -}, +[_FN] = KEYMAP( /* Functions */ + KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10, + KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11, + _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12, + _______, _______, KC_LGUI, KC_LSFT, _______, _______, _______, _______, _______, DF(_CO), DF(_QW), RESET +), -[_GA] = { /* Gaming */ - {_______, _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______ }, - {_______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______ }, - {_______, _______, _______, _______, _______, KC_BSPC, KC_BTN3, _______, KC_MS_D, _______, _______ }, - {_______, _______, _______, _______, KC_SPC, KC_BTN2, KC_BTN1, _______, _______, _______, _______ }, -}}; +[_GA] = KEYMAP( /* Gaming */ + _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, + _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, + _______, _______, _______, _______, _______, KC_BTN3, _______, KC_MS_D, _______, _______, + _______, _______, _______, _______, KC_SPC, KC_BSPC, KC_BTN2, KC_BTN1, _______, _______, _______, _______ +)}; const uint16_t PROGMEM fn_actions[] = { From 15ee180f0e70b318d18ff3ec729f3c769eefec94 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Wed, 20 Jul 2016 00:38:56 -0500 Subject: [PATCH 015/727] Created readme and added screenshots --- .../replicaJunction/atreus-replica-base.png | Bin 0 -> 76849 bytes .../replicaJunction/atreus-replica-extend.png | Bin 0 -> 87081 bytes .../atreus-replica-function.png | Bin 0 -> 91768 bytes .../replicaJunction/atreus-replica-num.png | Bin 0 -> 72341 bytes .../atreus/keymaps/replicaJunction/keymap.c | 44 +++++++++++------ .../atreus/keymaps/replicaJunction/readme.md | 45 ++++++++++++++++++ 6 files changed, 74 insertions(+), 15 deletions(-) create mode 100644 keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png create mode 100644 keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png create mode 100644 keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.png create mode 100644 keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png create mode 100644 keyboards/atreus/keymaps/replicaJunction/readme.md diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png new file mode 100644 index 0000000000000000000000000000000000000000..c8efae964eab3acf2be582d8a10eec7dfa2f004d GIT binary patch literal 76849 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

%nXN~;9=zXI%3t`? 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

;AmUJ?{IYQ?MZjaFW6PM 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/KXd+h^3~ao6`9w5 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 literal 0 HcmV?d00001 diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png new file mode 100644 index 0000000000000000000000000000000000000000..8548543f05b945c1aefa24215f78e1570eae56f7 GIT binary patch literal 87081 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¬MbmY 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 literal 0 HcmV?d00001 diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-function.png new file mode 100644 index 0000000000000000000000000000000000000000..262e08ac9451350fbe94e9ba19cf5935ed1ab2d8 GIT binary patch literal 91768 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 Gp$Py4gXOXS literal 0 HcmV?d00001 diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png new file mode 100644 index 0000000000000000000000000000000000000000..fefea53c59ff5cc16ce869753a5793ef19cd7abb GIT binary patch literal 72341 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 N!PC{xWt~$(69BdN)3E>m literal 0 HcmV?d00001 diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index d96fe008a1..aa0e26fa42 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -27,18 +27,25 @@ #define _CO 0 // Colemak #define _QW 1 // QWERTY #define _GA 2 // Gaming -#define _NU 3 // Numpad -#define _FN 4 // Function +#define _EX 3 // Extend +#define _NU 4 // Numpad +#define _FN 5 // Function -// Quick alias for visual sake +// Some quick aliases, just to make it look pretty #define _______ KC_TRNS +#define KCX_CA LCTL(KC_LALT) +#define KCX_CS LCTL(KC_LSFT) +#define KCX_CSA LCTL(LSFT(KC_LALT)) +#define KCX_LST LSFT(KC_TAB) + +; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_CO] = KEYMAP( - KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, - KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, - KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, - KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_LSFT, CTL_T(KC_BSPC), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_NU), KC_MINS, KC_QUOT, KC_EQL + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, + KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, + KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, SFT_T(KC_BSPC), CTL_T(KC_DEL), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL ), [_QW] = KEYMAP( /* Qwerty */ @@ -48,18 +55,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, CTL_T(KC_BSPC), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_NU), TG(_GA), KC_QUOT, KC_EQL ), +[_EX] = KEYMAP( /* Extend */ + _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, + KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, + KC_HYPR, KCX_CSA, KCX_CA, KCX_CS, _______, _______, KCX_LST, _______, KC_TAB, _______, + _______, _______, _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, KC_PSCR +), + [_NU] = KEYMAP( /* Numbers and symbols */ - KC_GRV, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR, - KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS, - KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS, - MO(_FN), KC_INS, KC_LGUI, KC_LSFT, _______, CTL_T(KC_BSPC), _______, KC_SPC, _______, KC_DOT, KC_0, _______ + KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR, + KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_PIPE, KC_4, KC_5, KC_6, KC_MINS, + KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_BSLS, KC_1, KC_2, KC_3, KC_PLUS, + MO(_FN), _______, KC_LABK, KC_RABK, _______, _______, _______, _______, KC_0, KC_DOT, KC_EQL, _______ ), [_FN] = KEYMAP( /* Functions */ - KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10, - KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11, - _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12, - _______, _______, KC_LGUI, KC_LSFT, _______, _______, _______, _______, _______, DF(_CO), DF(_QW), RESET + KC_DEL, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_F7, KC_F8, KC_F9, KC_F10, + KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, _______, KC_F4, KC_F5, KC_F6, KC_F11, + _______, KC_VOLU, KC_MUTE, KC_VOLD, KC_MPLY, _______, KC_F1, KC_F2, KC_F3, KC_F12, + _______, _______, _______, _______, KC_MSTP, _______, _______, _______, KC_NO, DF(_CO), DF(_QW), RESET ), [_GA] = KEYMAP( /* Gaming */ diff --git a/keyboards/atreus/keymaps/replicaJunction/readme.md b/keyboards/atreus/keymaps/replicaJunction/readme.md new file mode 100644 index 0000000000..0e8950cd50 --- /dev/null +++ b/keyboards/atreus/keymaps/replicaJunction/readme.md @@ -0,0 +1,45 @@ +# replicaJunction - Atreus Layout # + +This layout is designed to make the absolute most out of the Atreus 40% keyboard. + +I was enchanted with the idea of the Atreus keyboard after using my Ergodox for several months. I wanted something of a similar form factor that was easily portable, so I could bring and transport a keyboard to my workplace without much hassle. After building the Atreus keyboard, though, I realized very quickly that the 40% form factor requires a lot more creativity than a full-size keyboard (even one as strangely-shaped as the Ergodox). + +The default Atreus keyboard layout provides all the necessary keys in order to function with the keyboard, but as a programmer, I needed quicker access to just about everything. I noticed that the default layer didn't include any dual-role keys, and so I started on my journey to build my perfect layout for the Atreus. + +I won't claim that this layout is perfect for everyone. It does make several significant changes from the "normal" Atreus layout. In my own use, though, I've found this keyboard turbocharges my Atreus, and gives it the power of a full-size keyboard without the size. + +## Base Layer ## + +![Atreus base layout](atreus-replica-base.png) + +The letters on this layout are arranged in the [Colemak Mod-DH layout](https://colemakmods.github.io/mod-dh/). + +Note that there are four dual-purpose keys: Shift (Backspace), Ctrl (Delete), Alt (Enter), and Space (Number layer). In QMK, these dual-role keys can be made to hold their primary key by double-tapping the key and holding on the second tap. For example, if I wanted to insert a long string of Spaces, I would tap the Space key, then tap it again and hold. A single press and hold would trigger the secondary function of the key instead. + +There is still one blank key on this layout. I haven't decided what to use it for yet. On my keyboard, I have this assigned to another Shift key. + +## Extend Layer ## + +![Atreus extend layer](atreus-replica-extend.png) + +This layout is designed primarily for keyboard navigation. Arrow keys are easily accessible under the right hand (a welcome change from the original Atreus layout, which places them under the left hand), along with Home/End and PgUp/PgDn. + +Modifiers are also placed under the home row of the left hand. One of the single keyboard actions I use most is Shift+Ctrl+Left/Right to select a whole word; this layer makes those keypresses simple by adding the Ctrl and Shift keys in easy-to-reach locations. In fact, I liked this idea so much that I added double modifiers in the row beneath it, so I can now press Ctrl+Shift with a single key instead of pressing both keys individually. Using this layer takes some practice to remember which modifiers are under which fingers, but it makes for much less awkward hand motions when using modifiers on a regular basis. + +The Space key exists to prevent going from this layer directly into the Number layer. + +## Number and Symbol Layer ## + +![Atreus number and symbol layer](atreus-replica-num.png) + +This layer provides the only way of accessing number keys on this keyboard, since it's too small for its own number row. Note that even though they are laid out in the number pad fashion, they send the "regular" number keystrokes. Games and programs that specifically use NumPad keys are not supported in this layout at the moment. + +This layer also provides plenty of symbol shortcuts. Most of these can be accessed through other means (like Shift+8 for the asterisk), but having shortcut keys to them makes for one less keypress, which adds up quickly when using these symbols on a regular basis. I've been through many revisions of this concept on my Ergodox as well as the Atreus, and I've finally arrived at this layout as the one that provides the symbols I need most frequently in places I can think to expect them. The Ordinary layout from the Ergodox-EZ keyboard in this repository was a large influence in this design. + +## Function Layer ## + +![Atreus function layer](atreus-replica-function.png) + +Function keys (F1-F12) are on this layer, as well as some more generic "functions" such as media keys. I've also set up a mirror image of the arrows from the Extend layer in case I need to use these with my left hand, but I don't do this very often. + +The reset key is on this layer, as well as a toggle from Colemak to QWERTY and back. The QWERTY layer is not currently documented (nor is a small "gaming" layer that adds mouse keys on top of QWERTY). \ No newline at end of file From aaa180f46309efebd3150ab4f3f9edd619a8f6f6 Mon Sep 17 00:00:00 2001 From: Josh Colbeck Date: Wed, 20 Jul 2016 23:15:15 -0500 Subject: [PATCH 016/727] Added reset keys --- keyboards/ergodox_ez/keymaps/josh/keymap.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/keyboards/ergodox_ez/keymaps/josh/keymap.c b/keyboards/ergodox_ez/keymaps/josh/keymap.c index 9ceb874236..35becaff8d 100644 --- a/keyboards/ergodox_ez/keymaps/josh/keymap.c +++ b/keyboards/ergodox_ez/keymaps/josh/keymap.c @@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [BASE] = KEYMAP( // layer 0 : default // left hand - KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + LT(MDIA, KC_EQL),KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, ALT_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, ALL_T(KC_NO), KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, MO(SYMB), @@ -47,11 +47,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_HOME, KC_SPC,KC_BSPC,KC_END, // right hand - LT(M(CTL_SFT_T), M(CTL_SFT_R)),KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - MEH_T(KC_NO),KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),CTL_T(KC_QUOT), - MO(SYMB), KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, - LALT(KC_LSFT),KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT, + LT(M(CTL_SFT_T), + M(CTL_SFT_R)),KC_6, KC_7, KC_8, KC_9, KC_0, LT(MDIA, KC_MINS), + MEH_T(KC_NO), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), CTL_T(KC_QUOT), + MO(SYMB), KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, + LALT(KC_LSFT),KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT, KC_LALT, KC_CAPS, KC_PGUP, KC_PGDN,KC_DEL, KC_ENT @@ -101,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 2: Media and mouse keys * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | + * | | | | | | |RESET | |RESET | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | | | MsUp | | | | | | | | | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -121,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // MEDIA AND MOUSE [MDIA] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -130,7 +131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, From 876a6bdd4ca9033972d0a2d8c0c563cc6d7d9e7e Mon Sep 17 00:00:00 2001 From: Joshua T Date: Tue, 26 Jul 2016 01:44:57 -0500 Subject: [PATCH 017/727] Modified Atreus extend and Ergodox. Atreus: Removed home row Shift. It's under the thumb anyway. Also replaced dual modifier keys with macro keys (cut, copy, paste, undo). Ergodox: Made Colemak the default layer instead of Dvorak. Also began the process of bringing it in line with the Atreus layout I've been working on. --- .../replicaJunction/atreus-replica-extend.png | Bin 87081 -> 88880 bytes .../atreus/keymaps/replicaJunction/keymap.c | 17 +- .../atreus/keymaps/replicaJunction/readme.md | 6 +- .../keymaps/replicaJunction/keymap.c | 304 ++++++++---------- .../keymaps/replicaJunction/readme.md | 5 + 5 files changed, 152 insertions(+), 180 deletions(-) create mode 100644 keyboards/ergodox_ez/keymaps/replicaJunction/readme.md diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png index 8548543f05b945c1aefa24215f78e1570eae56f7..fd8f0a6e2cdaf014c67ae23a0b3251d8e213cf20 100644 GIT binary patch literal 88880 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 literal 87081 zcmeAS@N?(olHy`uVBq!ia0y~yU^>Xaz-Yn2#=yX^>xiBO1A_vCr;B4qMckWM_6m{E z+qNf{T^8a{^5E1hnG_%-WOaj^LyU!SchYYi4kZmHt}YI-fI!E;46gQdE&+l9EKAxa zv2dsgaKu(QRsEk|eE7)SnRD;@Zkqi@?Yo`7oKsoZvwP)f@8(p#uRLGa9O&)iQ*$!G zpk~he`T2j+f9~#SK!>N@4kQ>T*xUcV`0VWL|KXA?()FHRUZ2h5ZQq-hFMkGpeRWm)X~NS5DJ-y3dUvSf*qy}i9>Io_t6}@ye5=p*F9J&KNNv!%!P0A(rru+zx#4sBYDAb7*?7 zs^Z$y8EBrX0D10_c!SJ7RJVrqfZY0V&1pk4&wT`W?x;S4WeuuZS4n`}`Y3XG@-(>T zRxIFnb9+0#tX0X11&dD~KE?4znvt{V>D3351U)=G5B~f6`(So`-QQ)%g$X)yxFZK4zlr%X8B*n z`j1D&e>`aB?`qU<{4h;7`ofOF|ojZXS!rus-NnFUVaUiy=G?v*ZXqMF01+XAW%orkgc$= zu*mfMvW}CzZzLHxo8C(L?$mF0YnZI-_@RlFJ7BRJ@9h4m6DBkqZs%9l)?QuV*(YqF zp2L*v_ux->kX8=g$~&OEvtW|DL;tA*E=?XILJbR{OZ7t2p%KG8M2aSJ)<>ltP_g}dZqVd2&S=l+oL}jT{Tn#8ShUzjcU1}t8 zeC37>8zkOvU6>u;@aImSlI3t`v{=bxz!k)};^%wQ7^Iu-(yE^OP z^v7!-fKt~%bqBe7-#G3RpSP8;EK;#5f0y%V>6|$-OO`G@c>X;9!i5WOY)?CJ5MbIhalFec-3M^w77@irc3MP7o}Z%W>C;YmGo~a~1>@v1_rK0s z5)#sz?b8?Jw!p~cz`YQ*iFb817MTgW5c<%zg{QH7yZ9a6GvB0gxT5Rw_(wFLqbU?EHN@ zU5=+un_Jpx5g;nU$aK&C-;c#Et9XvZZf!j!aLdYv zAvUez^sQ|9)E()bMIu6mU>U;3lM?_mXD3B<EyBAqlN4D|JyaiYjgO5r*%194J-%ET0QeZE($6zqy>u~ z4gA=6U~BsMd3XYg~j#IBVT7uRZ2kYQeGalB7fTh(&z zj}|Y1H%HW$Z;6fGQ(^e*++6Kx$8XH24cSr@8>(LZ)#iE?;-xP%HPv`h{V> ziq^W!m611AFDdgG|ba{h*q5Ym!KWDw^J0@xR$nW9i^LCq$C(3N&KPupI z(eqjHG=15cV_H@xyA(YR|9!qO`??;Fl!?cw{g!WfrsN(MVwtX6=lA_>+}^5%(cAN0 zTwgEW)ZFa)KSR#(DzmHlbaP$fiCh+CtaD@fx`i@N&6ska*wetsC}_LJIwijehD)0a z)dkGhFIgHE9h&avDOxz~iD4>Bj5(7J*N*R5{e8{(#*!|1VP>Cw%S!#C+&00B*3beF&ADedGN5$}P^~TJG(77pm22an}M_7D_)QQ^S zaqjE60>)Lp6dX4Q&zo|otaA$Ey&b{Jd^YalPM#aHYfT~N@tLJXD|rr@XO-@*`Dyg) z+gt5TtIpks2;5uv*p0F2>MP;++OJb1&XpW}YMM22gX`1hjkV9yLRLRs|MKyc2mf{yJ@wl8?XK9|l%pa?ZhX4AWAYgm zaWN4t-<0Cs$ahWqzjG_-%r16aaH=U`-_6{+ySDzwxuEOw(XxD9a7uN4Q&ZCs-(}l` zpUH6?+fj4=*wadHtDRGrANOyL;1|AeS@YfQ_xp@F+0^CyX8isAeY>rP=!T_5a|4gx z*x@MH~o7v#1;$faRs!v5X66@NT?Cna!aW2$>axbfWV9`jRP-p6n4ys!9ZUvM7syzFqRvdlngg-BWDVN!Fi-BwErc>`b#Wy8dY} zny)^6posm)x4wlRxtWb0O+A>p^;BcRJ&uy4kz2Dw-|cwJSJ-PHyYv0;&%uT4u+}HKhlS%)#6+QLxZM%K%l)$%n z22=j#-rC}s(pXzl}ti9^UEBXb@TIs`wQgW z$^Pe(D$jYo;X&^Got_0vCnL@BHtL@j`F67WZfW?;zFhsePYyNJJb8ZMTjbKoZ{GDy z2wNyM_sN_doj133AI_Opee}U}mcM5O8TR`eH2Rzx9VgLY=^>i<@c!oWcG>UsrriFw zN`~W^w25|rd%xUT>6D@jetA2c2IYLUWIo-Wv!7fLQu*wAB2ubR=_SvrLPKUB<4(KU zUo!&Odb)RMupfJS#cJmki6@I!tC|Fji6OizM5ni?Usn_|-rEOEYhOdu$YAQOCr5ze4imNzI5auc9Rk z-l<;U&(jm)UY%aw+rVbdHQ`Oiw7K&dceGga))pPQrF-H>?(R10Z0|H9y9F0k`E8P$ z+SqXQ#;2JL+qbl~Rx#9He)C`H)cU&CwSOY36EjNxvFtM4!PuJ>;(S=@YL4C8>qSL^ zTT9lSwmZE_ghMU1;q6KFt-HEz-n@C@%o&kAkz1o@m|Dj&J?R$L57StBXre>lNulZO zUkx_zdi7MvYeAu;=h@OSw^WX=XAaIVbbkLnKZ?bP!M@;uL#A-n=MZgkP&31zkDnj63Zgb!E_Q*8(X-PNOC$s2(pT2VQ zh2$g6Oe~uvn^W9fV*M2#{W-We;`5>1hb;Sgi~qE63Llv2_w;7LmTkL3L)p?wyuDI4 zT({6={8M~?{jv4?|7ERro_V)lSD(lHO+^2;M#hZvWfp-qGxc6~aB)qHkLZ~5hbbWE z$oazz{>EZAFW+H`346TLt1-cLfrm1S-rCP<%J$P{1|0R9&JghM!Y5-^1?_9Qs=|va zgSEbNJ@RPn=;|u!XqlmFwe#3VBXMohrA?=6d}o;)ys|QwRpJ@%-7T5Hn@VKhbCB^}MRfeelfNpv9|Z4}Qj(W?GT~r=XX5K`U(?=B z7H#E7(|gHstMG|KN$nH6A6Kqq9h@Cucf0XaLjS>6j5S_M*GgEflX!6ZaYX7uBaP$g zC(bI%Zd&jn{^@_YckdqfKVIPW;hVvOBO51soINW#g(F{7;9l7`CcC|p9#1;IS&Owv zm(exr^(yY^J^De(Z^N5X{s|~Ze@^?k+w>{xsfmINlEGRh^utW5J(mZRROjyXU;Syt z9Lr~$@{O266`7WNTiRxFDT8&g@STN~)rr1m+!~^nU-VUL_;zY$@sG++JT_ncMKiIy z|FK{6$LG)ah6Q)LPn6?)x)6Rp=W=C&|KA3Lew)F14 zQw<63jIL=tGX+x%XEOCw8hLrI4B-0M6RI^u$;Q@FsA#TbV$G+M>T1^+e@~t^O|9$E zoP{$t%RTFM?v*m#5@g9O{^(FEx6{JrjRC@B z+QT&;ZMXhskoV#8wTCAEKB-Ti(y-b{VTVoQqC*R}vM+6_dHnhL`PnN%0_=|6=>OBL zzpo&2!HLg@%tM$GA0P9v^fhqnm12GMnorv7%#-4@z?&Xl3!WW&WApPsmNEZIo`+}B zeZTp-9r&rdz~*vQeRfvgkw^Mb!tQP2jh00r^|K5_SBmQ^uLyRJ@v-W>{F|TiD|?gO zHg9$R$J1BJckY)IzhG&^Wu3ge`|j$ulOr9(3X~*GoPzp$&v*4`Yj(W4cKcndGXE^8 zQ?>JD;-1w;GyOPrlD{c#Rn3OHmgkfIhwnH)Ektq(-z~4ygl*Ro)Y%W-V0M4-{xK`F z>%`t$7yd4f4SKucR71kkwL6uJyS4>siSWi3mn%6M=Fiw!{5b;KYU)_$+ouHSLN~w(LFzU%L}f*c<#gXLdNpS zoHIU0j=XQ{@2Ye7{ba|>`yEc&#SHUnP1&0`CuDjRemvr-^7dx?0X5!>+wud=V%9I6 zv%ll&{JP%yKDoobxlOD`KknOpe2V4aHS8Z2?~m>h3+H0t?OVN1f6s@e1@?TW_N#SW z`4S@e#xZrn^__RBKWO~1;gyQ}@cR0l*rL+Sry3Hx9X2K(?>lsD+oD;jUaT*fV*J9b z_iQ{g<-x?Gp;Jz+T;nkDdCK2kUuXFkGNzoLXKQ+Ew`eKfS=s5&OK)$>O)@gitC{%l z>xvKu>)`pR@u2=xj5^brVncVy6FX)#ty_5a!NNs}FMEAHv8fLpI@%W^t9kDyb`s?i$pV^b(&0wGTE-299+m&E{#aEv+Z7!@@xvc-@ z&!39|dROs$TVizMv5cITg<4tg*~^Dh%0GWseNc0pWBTgil|~8?{*q1kmjwj{{iX+o zXoy;uzY}>S!V>iAWagtIol3!8oHJv0mu0TYXL1d@uH{$wZ3p9OShq%`o!&(zxLF^_TOxX6{(9p)ZwhwrWHDY2ED$ z3NI<{xwLfe%Nw6QO`JKuzi(~yl%GHD9K7^HIV144yyDl_w^Hlxa9&mAlks!OmCv7C ztF=th)6=ueI;`@|3a^HQQ{5kWZ-yFog;d7^Od?|B^#4!YW8eM zu6e+C`BnNVCjpMhd=Jm`o)WN0&)O`S_Mx3mmP^dy6lBym;1)+f)w+8Z?70)8^7dx;!G+&vhzFXl5d2hBHyyKfYi6azt3R z$@kdYd9&63-M88?^W=SQ#+cK~ghCm4*vhYb`PP&fIqRpfY5w)PA5~Qk9!|JcW;?Zt zOYp7u|A$5A3PYJ#E;lr`rcCA4(2LyU5;7$$Y=K8;&+hm8qW2t-Fu%mJqB~}yO z=WkOk!Rq?B-tN<8iy}9tg)!ForHR!^SaZG%pVWFJdhxfltmZqS-ZBJeCcj+5f8p=L z-xpUnOEZ@I&wup$h1Czeg*}c^td$3tQDKpbeZ|b&(GI8 zo|jdGZBi5V5r_$h=-9TlYtHX&b1b?eqrWBGURj(Gc|5-1{^jeJ43;<>#C35suW#4X z55N2Jtopg6!ykiZTu?uxb|L5Wg2#Mvj-~$o3w3ku!~`lX@@h!Xa^A4gxND2&vT5tI z(?vK%W`>4jGYV_8wY4pZGQDkkAa^h0o1Jr27o6yMKSeWGKqlwcwl`d5C$IFWec$dU zt9##fEzdz8KIzphD>-#%_cZi4T=8)KzV={-s^tPEKE^WVFcq&Ks59rya(N zp08V`;bPEOaQ;%iFQ2b>is=FKbdE(eo%8QrF_TCvzpM4n#oR_K#pRAYLn|w*#~n%L zTOPs|+uvShj?>}0V%V+W$+L#B#!mW~nbB0XR7IJ_g5zecB^{-m%Qrj)bS|~uBO=+=XMXMIL+|j9XW#v; z*d3qp@w>MX+uq#A{OX5J-<7q~k~*FK&-L1!buM353n|Qa#aSX&9J;_`rtUq1S3Qpw zI5t0c`!+VSQ7K=o*e36ldysR)+P&HRvv0@!zM%bMarA>XH#Z-hB=~=>Y4)@UQxk(@ z8fV;me%QB=?~1YK#_;&3b)cF+OONT=n*9E2W$t^;bOYA=eolJKk>(}5?N!KR;o}Q}g)g zqg>8{%|Vw1cW242i`~(2JFdp7W?TK;`yM^_k~ghYK9Gywn|47N^NxOIR_K~Hz*Jpm7vDa2?{=K{53>V9~RH-w55mGvZ~*)G$>C zgV>`MfjhF?Cf*6!_ja|kao1E)jdL>$oeSnh%B0`1@C^96sQ&*V&P$QARprdPC2wXd z{QGM4`bCb-Y)20-@Z_+!ulccIL+CT+Ni&ngID{mG6|^OjwVF?WN}vZ)f)Bjk{rmg- zDF6HHfAjx;Qk|~tu<|VPMGG5|f4r|VMFh|EegO5jjFNf+%vYJNP;bgNo6EoHvXOw0 zOwb#l=W7C!7$dhj=;r1m{&#nswEX)S!!SlWN8Qv*yY7{npF1KiHs?X`Z@vYQ*A2eZ z{z;r;J*gvlUUkfi|IeO3?PTe)-L!XFQWp0C`=4h7&g$u1gQcu+BH; zF9nXB4V|L6;>E!x3#Q7)ZgS@Gbx&FXA4lrWUuIqy5ItkT%$X@nsjAg331`?f{y#k& zQn_H)DHfIAn#ut;l@feX6&{4XD}VZQs{W=<-&G5*`F=HdaLz(ZCr|r~e#7j8vTXkT zn-douHF*1UrhuVM;Fdes$_O@R&}C+3N&m68*ZS!F z-{$!#Yj>N~&x;S}*x~FRaQ*t1pT}f(%&IL~%6^bV`V7bHuTuzO87FK>3# zGGH(N;|7ClpN5)`k6ano^lFN-9A`Po*cayEWdAGqUgG$aFaSq3(vlTPUm%Q8IcW$p#8t()C)rl8oq%L{( zWKm#%@|6$Ym_iko<=tq!*0{B>{&#(^{S3~!ul@T!mhI2uSo2Jq;iGoo+za2@7KuK# z7n)S?rN}6*hv#U2HUHzJs%1a!&dWXD$inigB75CQ>+MH&hdeA_%6_n`rDrvhYmxij zJ$p|&yqwu~ZIC2KitmBEI!2C=yLWh*Sd4B<-?H-2xhWlz7qk1@JAu=cZU4dwb>E$#WI=UfdCzF2Mf&)iR+4TnCQWU4ZCj3IMl9@^dW%m4%ZiGo-j-ayVC{^+B_a}y{e{VH8#ghziWwSp zXYpz5YBFLm-g!pg=kM8i#exU;Wh?})uZz8Gns;$?(=$8Hj+YM0|D5X)+<2Q!MrH~zb!=~$Vt zF?#Q7eZDgi^7|@S>*Z`Y>*Mq9+%w`RUH#MQ%aqFohabFSvllh{nQ^_Y;%?3M(;6-z zRRU|$r@wh6>B{7qCbsYYziMB%i&q;TH83)>yuUifs73pRs_|lJS=ruMrrEQ6oVtu! zEX8e@ZasODvM?!VlA9?Y=qN<&%?rhU?X}B4?Z_PZbQm=qc8OKzP zOi3pGe0@fz(_Ajw^KLWTZ-`RL&bf0!Kh^m8x@TNmf~~BrH+I$Tjr{%O6xWB~bAOuW zx9?SZ_ENVzOSn+n$mrtE*ol8`eq60NW3w&a!A8c6dS}@!E2E_u>+H&|{?$GEciz0o z-Af*;2VOosW&J*@mpuEtwOP*YiCGw0B_Jar(&E}Jmf4`h$iDf&5-E%9%~JwZ0#c5> zU%&s~rIP)dm|U4`(gMA?L{9(ylXrJls7%n?5AIp#zP-JDafzoeZ~yFsX}hlOt^Tf8 zT+X>dQv2QHDO~^NUl%ey_Q!Bp@QQGW9{#-Epu*#_(=8a9M~( zz7dm};DSdymcO^xnQx6Kzh1%YI`v>&2wQb)efpcSjoSKGjkX`s7d(TC*sTFUxUSA{YR;Q;N@K8|UY2zv#=V|rp7!T}>ym`X&w7{g4C+}`eK9$hl_&g;| z>DdE0->~q)aOJaJu?}u}MsrUq9iD4ln85kq`FlI9d8JcDAKcG7aZp&+CpPe<)bVRp zJ7(JI$+o{${&qm{$M1?vu6Hpf?REw=C+L+=eE;;6q^sV_)j#L3bp8MHng7tCLs}|} zGy1JhU2RD6Jho;zk7FqJr?UV-tB5~YGL^CareXE(^uSftYY}{ zu{GTHTy$BT-3pOe7^hNUtiBMx$cV$Dm^$eI+V4`M*a2m_176(t&YB2scvz)^2%oKWk!dM&)X=g zT!@)?+&AD%v5YM7cx$Uh0`Eeg)H}D4w|b z^!uE-^PJah-Z_H5k3 zd7<7zjk?(%CI3iYaqj+bZo$;NgaGB7zloY|H722d>d&TsHmrD*ed7E{L4_aZ&+m6U zKapSQjb1Rjgwj$L)qMiPhUrzT(fDOYBodtldhdo)|pH- z`*z&WG7Z0GH|^Q)pF1l%`fjc|`9PZa&tK>F7v9{8P+VkkT(|#y3T&+T+Aa0^D%Inv zB1&4O9M?8`s|BQp+G#(XyY*$N$V&mY$Ni@`L{@hCq}vw@C9O-E?sHPLDE(@h+>^rN z$B%Oteqon0(2YynD1ZF8&URySTLGKGM=p0NpU+K`{V=D}W>bEsK2uj^(B+fMT(@U^ zZe^C<_TbaW%P%a8JPIci85w>2d&BdEX%WY)_Hv>6>x+#*({zh23SWGCu(4xDJ;Sz| z|MeF8()HWwEg~%z|26umyrt(&lT~ltp*!yJE!*d>zmfiULfMX$zTS6kY_i;QCgRe& z8(Ssi?Cv?0o!t>TbE}KUT`8;W8lnf*ztC>f;;OPbA;wsjC3WalNl|6P{$KO%Wkf8V zbu!anoBz5OpBI<^xzofHpub~V|Mrt=kl8EUNt1kf9p)6uOci4ZW}Y-NA^e<1(C?`> zK9AiNoH!%xxMA0W^+wFDN1yG=zrSzR(~9(68+90uo}RA%_}lG#@#{+q7aO%`Unst| zHky53#HzCvafgQNJ2s{oGv*WqAu^)hk6ZmI{vwfA z{ZZ4mAmYh3{lfijib}tBFZGDsE`4^EX|riV{64|$btY+t%a6Sk_}q2NwC}#!fpo`Y z*NYKr`VagPyJqy`nTQgH%52kYrg+h-2Yy{VRnBeO+VQRXe}ndwu8=5!KfmAaPkwi2 zXDF9OSXKvANyhLFhWIC-UUkV-)|9}zzYd+f%X{X@q}kRr*Q{4O`=75U zb?|lTV|9ZMz0;4HW$*tX#_uDkuEF)>$+~%eO|$L>h{wL$EBwDYTWS~oZhpr^*@-pp zY^M3mYgD|fwxH@QgUros!W-+?9InmpcLdFCJim0`#W5xU1X&DWyrG(>gE z-gk@5+I8$~65~v+2jNdFmA+43VE!#2XJf0$@566)ME&x8`TXAe@W+of_3Ckcm}+Ry zod4n5r3@);274QA$@L|f`9)bP1RT4cY`gw;vi7Gvkyd4Q4l1vB_j2V%|1#0m4lnMe zlYf(f^=*Tzr#qaQI(;6eh~}qt&n8R?_liwP*Z;AZO=RU`Ntqli$;EeCSSH=Pc~dHV zi{D%;&MI%$S@Q$ZdS+JHE;wO0qxfKQ+l=RzLSI_y)IE^ipJT+dPJr>;#O>!Qg}>gK z5q3{{_v)pwJGJ0gITwI?LKYY=dw4m7hz=NlXI!nIh+?!gb#W4T&-OXQ;C%@BPB^Nlc_Ed7j zQoFV|w)+wf{MSb&Y^vW{TeOn@-2?q&@_sGTcU#wl*nByue z_bh98{Aq&R<|B{Q@~5@Vcw!@M-q#p;<=@}m(|<^5p4T_v_GecxwQavP!=z-P_F_mN zuQR$@|HF*s{++u^cHhjD1g&!`H?=o-ysP4lNJT~EqS*WMGA^h|Y<+e0=+({tA3Q&4 zY*2Ge=LEdGI^?6_PPFk;vFt1c`-WW!`!WgcDo;yy-54;bIyO;RcoK!EYQ@Jp1baH%AC?1 zjParcr!0$CZ&8@BF6r^{{_80sv8)=CqEDq-mu_CdbFgR8=Hj%k4N6yq)6UFD6w{dY zh3!$Z!^NGZ&wGwdS4itQxq6%W(k6$AM>Ro>zoYl-e)E2PbyZkj|Jd2kiaWE-a)qRh zWx0y3qF_K6C$ImERr*iT(l`ag<-|01o$%4)zOE!M6>{h4mnR}RHBWtc zWWEdK@#OWr{U6=8BlLB_bM3_iKd(gQ{K?z+K=69DoJz$3cC(ygy60{692B@;+tluP z80MxOV_R-2Hlc9onwP@Nx=epA9gFWjrQncfc%xMOW?Z#7Q;nGP_c?~U?lA1LJ)Ypr z_Wz0Tf3ZZZZ?J95Ik;vWM6&P!Ry$Jn;FIDGE$d@L@;&foXEVsPIg}1ugu90C(Ls`;J273J+F$j zzU1KJBJoiDl*xhxtsEQTQa(O9%JH{ii)Z;&F2OTT=Gm5reD|wZTH)$A$w)>G^o(bH;nb&och`v&Y7zWRu-_ zjgYn*&W1<#+`SYe`9`!|v^ic#Z;mSFBN}$dxZLR_g?7R%fz3HPoE`M50QsV##xZ%er?T zc?tRM%yo5Z@M2zax;J9^QnjV=yPDnw{&o32Dd}6%<8phhd+QGUe0tx!Znwl%X)}lR z=&mU$r*@|VVRNo9%>Nv7>}iUG^`oicQx~rJxNzRPJ$1@m zcaNW9`f&Qz^i4JK`pxpcKlyApmmab}KaYFY$tMCUEq7*!T;VVcnN*SbvR!%K?&l6n zOgm34JQZ<&r|P|zQ=7F^Il{Im#ENQcI?-|Z>#L>DD?dNuTq#j3>3S-sa8dEM9wqMM z96zqe#4;T{E?3R7e&4TEkG2`9!w4k$JXNeIacc?^g%QtzRQ}A-Kb1|D2w@*lLbnho)Xm|M9q{-iX*6DFyy>Y7fRKT>2pLR>m|F4xH zSF);5|F7A!a-H7V$;Dh;7tWm& zRmzy}bKOF}dAH{ex4B-Tu7Aq!mQG)MDC*hYFfRe0bK>mF;;PgFQo6gkw2B|d>||zg z)v|e!DiRMGemWy&-1UTewXc-S&GVPuMC&g;q2$(7&s2L!bY8`y&P#9ZJ-lz|zVg9o z_UW4|&RxkrWTXEibMwsLwgOgh8@q-@ix<02yS-!L@x2KLnWh)87X4^d(wtI^Ij5m5RmWCLL;U?R~~zcU6B1 zPo3-c==VQBGx7abf(pFY=6mXIt=+U*!{q{GpyaC73-{gM4!?f3dv28CqM)V(+ucu2 zF^J4`HJu)~#70VW+lqy+*Yq+>>dSgkCTTuzdLuJCSGi>BqQ_=u7F@b{e(G%1-6@xf zCrzH*+SO^ieQosiu6HZB|Lu5mNZdR8LwotNAE)+Bt!J56|F3dMn~Br$gWG4y*r?kI z%g)*^zH9%vJKLZGC7UzuoS2(x%>H3+rHy9#KgUxuKQEApI-5M5Mfcs2PT@nXlT6u9 zan071tVx$yUQu}Sr+H2GwF@g!44U^BT~V3%RcjwEG-u?S+`H%O>I^T8NYszq6^4Q@w?^>NZE$R&fb=Qe-RLN&oyt=+#U&V3e zABEB$?UXscIqN)yE1u0vKeFGafVFqm`5d78N^4a#R+BSu*4$HW?Nj2-riiaWJr5cr{f1a^0J?!v~ zom{rZgAUFQX)9QD+PCc3F^(6v)So})PVPSOA*+mvz^EKyM;C;bom&3vPzYCww zE$^Coq}!KS;NOc{wZkh{@azkU@t7c8ZgI>-eP(3UsiPCib3c6AlELLvX`Liq{OzRX zP0NgnN*s1ts~jum`)41&yxG63thK|7y=m&nvoZlCtO9G;MfU%CrOn7;UG}C!eSXcQ zM_)5yuB7IuENpnVVS@o<&)c<=v)`&MJR@d#`c==PGc%1@FQh&*H!>0ue_zRSRoX=7 z-rb*fZ%-)uW>S?lPkgfGX7-#j>x8}-S)b!<`IvZYhW#9$nR}Ofo-^zK<2FF++ybEHRpJJ;^x>^hl%Vc>{FYuG&_E; z+1b|Yc}tgRxY+!7(EMoUQnnwJH!V+`K2?^%7Jt#R&sv84(<;-WttE$)ALzFFZJKm& z|J@1A>Q*y$Exlwnb8TsXvHM)7-EYGAS*&;07A<8y7+>>|)o-pt<3@vU?Q2@!}It^|m^)HY%yR`b{al_w&-S zhfkKo9lqL95o0OSKP_F@Wm;n-Q&7T=HOEd)k1Tz+SxHlLNxr~}^${DLCNE73o6XOX zzEAG!8Q&iU%Iha7RD6APwQ2kDj|Q_3e?IW}{HKfM)I#xu8@XT8l)ZX{5-1D2i!?BzV@eM1bco|c?~yMZ4CK!|5nnldo}{MN@d@Uqc@m$Wo6Gv3*o+~GQ$y&& z%+ngvo@zbd^)qGL`l@k~>NfSIPWp>I7I;h$G5VX$vL$P|q@QD6U&ZHVNA%P@`2Q|d zP3sXYxbxvl;zx!pZYv+SoXtLVZweQaYtc=Qz{1ojzEIsOCc>_gO_JYbt;;whW$p!g zd3$&WM9%LP*XLq5B)@M?QMGFHd2xo+%q=?CH~h)F+S9P<(}C>n?-uV%*NGJB1v2C( zP0m_T8f?pWh(lne=H4AS%5FUpiaf?=K6-Bs3KG1w&UjBv?Odx3Ro_k)@8S{qD*QH1 zW|iTz4W$n1iyylzoaL07&?EVNQh?-_KGy?Y0V^YP#Gi>f7(RYb{=??e>d@d|2RDI# zrS~81V%Wb#vL<>ZPwLj1ZK}^$4u)TUFL+XVtCLHdBV*8}V!>P6mg?@-x}ICa%{5_q zd_&9P;}0JvURdG0!5F$^Xu0l!btRxBLry!5IDVa&YkICj=)*_%jh9s|)^YIZ{&w5o z@^AGnK@B039vRCZ<^E?KtMA>L!sQK`K{&SmyuPaz%Q0PZ+fb2J5;ZjqhZdQCVq!`v zXTG!J&y$y`CboBZzO1-@{>}}rl?mJC&dh3^e@t90ZTe56fJ<)PiA)}G`B_zb@m3st zSD#6$+O{p;o*p(`Up_09<5Ka7=gKb@_{>@xlhc&ml-zY#`@xLg=I5k@4|sUBE5KyT${uGEIx(#^?fJ+f=H5_4b96t26z zF4na*$93zaAgvV!2P9UN_N)YryzOH&|NX^%a-wLFq{dG!rRw$rzM+z*RkiEpO`qI* zxR)N<5p*+RsnbcR)uJ9#YJ;zTTHJ3Z#HPS< ziQgt6s?{&yOvI#lkI$SHvTZ-wDJUp7Yh$6!sncrp;X7VrN%a`zHD#vtaZdQT+bMVA z6t47rMlzSpZMB$};^fnO9o8b*TzhPJ3d$L#9+WF* zT06ON-H)93(sF&1HHlg0g64fY8B(Qi!q=*dX(wyz32hw#=Px_>Dpm$PeD`db;js(d zhqum&anX&{RtcE9F;q+74CfT_iEy%Dn>S6EKfAf(U2g8Xu)u>(a!HT;noPKuo;u0JhrARL*<5kZYN^uS zJDPtsXG>q1!nO2*^V%TC18$pnwlTBwafI7Mm0y0?(OUURTwKd}!->G3eP@|V}$?U57F+jVb(%F;!1{L3um)-4HP z+q>>#-SeWVeVdNtJ!v^+DZ|?O;p6(15A&k56qF|{&U6bge|}9voxLpnQC;s(r!VE+ ztQY>i*?gYm##5OiZ}jHt&zUX~%J#3fc#~x)+un-kMMed2yqtW34$~X1pS`>GO86Aj zhVym1%d^&KK$4dmU_zjt|og;pdrh{$^|+a^M(JfeA{}0%~fC5 zOL;=hwKbeIZ%+iPPgUH%fWh;)UzbjPoTK6=Zte#s#aYYECGOm5(V4w`_iWcx?&w38 z>ORUJ;^{u`nVvnBizPa!ZA172&KDvHIr(0!)BkYrUAY;=bhM#?A+W~fobhy)$U6(C zw{E!}ae9~hv36m-#tFCn`rZ6~q*M6lr5)dG`4|7R)jE5wr=(>|KEwN0sgrG$Il?vx zZ>;v8HY=#`Yk|!=6&a1Nl>yVze+nqdHazcWQ80bN1to*n@gAumAe>^|kB5 zg}WxsJDhfo)!)BAdS^LD*UwGM>mrT9bT00WtMKt$squPl{COU&~~2s>=-7zAu%j zsISi`lX>@d*TdKEUpYAuw088;qo?V1;_(#^Sq;UFZzgnWIcKiq`6jhlwPF6QJo8zm z*~?Boxc&M@-<|%#LdE!yy8nO61N|3D@CEL-N`ISQvDCYIa$bO9)0CENOE>s$b4&e@ z;PlAq#nbnF8Rymr1ip0m0GjiByZye^Bb%r@%WXA8tE$$pbRGM5dr#nsrh`6f@K9j3nuHc7Fi)PyAoKdsd?YC~Lgr?+C z!QK9uW@q=*2;QwK72)6W=1O*i;V;n^-dc&XzrVPKd2wy4vtz&cGIK}iqZGy|JA0S+ z=No2hE6dq?K6h!z1`YqaGj#t|UupjF@woiaOUlOILBp7F;x!Im-{0TAC01wp`#{fD zp$wV!LS@_b>j`_Sz8a*S5}ADdhmpsscH5W_9ETz`<%ETUv%FZlKXBXHOhsA@;gNZY`nyMM!m zJ1clpd)uq3Pjc#Ivv~ig4SQlN{O4ZvdrQ&$YZVe%UaXE2gG`n^i~Cf~(zS8p#)`+i z<}K&mJ>A#bRsQ^q)y`>t^3%8eJap*L#tr}fEoAJ94A)a!l|SQ0^|7hiKi+=5UT}K0 zu;2w1k3YJ9FRA|dcP!%0uWKqH+&o8Sm8&WL*?2tAe8<$Z_^gIGljpHDFQ0z4A<}uJ zg80S-0&%9SMqkmJ!yG(Wd zrWcjJDrUbis{c3Z(d!!@j;vLi|1>SFQ>UaNV#(fJ4=4PMVER!bxYX`v!+iUTGS+{+ zjP}&jURavk;{0prJx%Uwlm1)w7jwFQyxnvD$Z`I?-_@FSzm~r*bU;0I!}FetOfJ*H zwb%L?#qZF(>K-g$yOi%;_1VS3N4S*2tIpn3=hiFt)7upJn91BRQG;L0Ir8!EvcCBj zo~Y?wkc?is$XSE&nd^}xhAh_042LA&mgMf0;1J22e&*QhlaIIZ>(p&EvDzu>y7Iy8 z_p3rzvpf&Uopf-~wmUr~C9fl=9DKmC;qU659e)cAfAv-~pRM}ZxO~0-r%jt!IL`X` z9h>DTT=;s4CX;~l_B&^M{``EGQd0ZGka5EIfA@v{eEnx~=fW~xwljYuuI3x)I&JuR z=Sf;h!uNBFKk%(s`}0&=_2MHfZWq3Nx$Hl?=3T~ujO_nwbC)mYaV!=Nir8^x)wGJ_ zkGxCSuHH<}KCbopdDpeAre3U?Vz0z~gETE1@7I36+mx+8`zObTr=a<&u<6&{dZunT zzEfd;$@`17AJ*l~y1Mk|p`EI)k94`cIKJ4I@2L@&Aj=Oqxes4VYXemegg=qIdQ3=0 z+W79%MBdtz+kRKpNNYSh`15>^+j@67rz;l@TGW0p`1j|HG|&G6uA0!A+@~%POh4w- z&$2VzaK-AxwRPIjD|oKy%wH?({MXX>l(t)+@X`;Yg|+gD5V~V_&v3ue{x*r*7(!EU4%3yY5PisKl^!2SK8hx<-d@BN_pc^>(~r2r=VAr^zvjA< zb;03J+^lV1*V}&Jz0&j|`G2KHO!bmYD;ky5{k6KMmH}w z#(tj;+3(1Ez&~O)>+*lUcR#o~oB7}sr+3$`hRmCooaSa^Z_m%x++J|Wc)L-i4a2#U znc+*LZ=L@&)iS=xbj?!|D?B?G4=g)(OZ&$v|dvn^@b>WW{4)J%y zN`gJxgB5QdkM}!v@bt+Y0vE&AteH@BOn%qxPdA^x>1_34ZL$nB4tA{5o&M^?desv_ zw_i$S@0ZG+cx`QTxJCO)`8T3Psj>DeHhszA(%2nK_NO)qESv&(4bYdX1%|{vGQ?WWtyHnR5f4ou+Jm<*0yBjRjh0oZKs%w%!>b9`f~c@i)&lkJ0~{lZqz!T zyN0nwY<*wE^0l4@Y(F@o%N~4>jDK)qTP$d@{l~R6joQo4bA71#?R}o(7EAQ6t0`;d z|F`AKyVDhA&hqHn^m)g8bE6+lFHc{XIbEP+*Kf0&--VK4=V!LF->+oWRkBJx`o+KS z^9uJs-2?L8>a`8;`0w|-$=*`XR~P?p{;{@1wr2Xf%B?IPf~VyQo&U)$c5XwbP+*jn zv!~AdwW8u$f4=Q`6XWv!rc&IgE1zS{OmQGsn7o=y^EO2#$tTqiG!)cN1G@m&$C=rI)Az1z_x4&D zvA4=JY+a0I-V(j}|M{;lqhc{JYbgAs`gAC-%^+s}{1G+5g7X zGhe)aM%cA5q&uPe@5&Pu$|Wb9nH1*Vk<{I`yGBQ_{`{=Ydy9`N{F=RfGJH$0x~y6 zC-U<;`K3)`*qHmf#JxTG_k%NyEPsqj#oGMlcbv)2{E>aniLvJUpIuTjS7ut2|Im0> zktz~)?ibT{U#ae_e_KD??y=mlGS}eHJFQ3Y>*sIhsQYJnw9@pt4&xtL;WX~MHP`-? z{5oGyBJo9k`R$1zY}GGSqM3dif37dSS~%BXXW75Klj#y; z5j5x2^V!^vveSJvPlrsL!o|e(ZSn1J`)HP~X~#14=f*^@ZU3qvdS;WnWf4n=xQCAq z%h!HqC#Qrk$w!x1UB3P{|LiRHexAG-=Z9Mxg3~8F-~H{bX2#9`X)O1Pw8Q-8b?|-X zb6dRbp^`|wZ#{qS?zY9Q`~NX1REMtCWB9mo?nR3opUUt2dFB%1XVWG7`T4^0FASU9 z*DUjk*j+ZG@%~=zK#}8;=Eq*XSsr{Odi`o9S1so^cXx*;PhXS5vhuQJ)fUbEOY=?% zTuX|dcHVR9BWJg_44zed-1{;ZlxF8D%wU+|5W(9tb?Mh`b-zRB_lvzU$yrccZ>a5Y z!TZ6MKY#rV9xX0s%?Og(+%4WW|G)wBxMMq8Tn_5K{r<&c;!2z14;<6>eqP9s+~_Oy za-NxOo#yoUnlHo41M*8`YG$AO?kV}=!k)bw)XJVM3wLm9IG=Vd_N>H%`M1gi>T5o! zx}B*x-ZH;BCtN4&{JeH|`&#~!&-D}Dir;_KsQK8%rlKzV{6DF!c`Ld**x3?(Zt1_c z%AI9W(zk`V`{g=*zV*MtpVxNzV>>Hr)6FNc|F<)pe17inHu3pFf0cgt_1sfFw|Zw9 z?*nb2f-5(kcI!Tmwp*>6s$`<>hv`0#W{ClS8l&u z_fCl;NK}j2P-L=XNl=Q-*PhV48yn*oVz;hrU)tAWHC3x%>Sk3*EnW__8C)~}ZFS3@ zrrydLrn9A}xLCYw*ON6nrEN;ymi&}ulGM^K@wC@JU|N4;N_TU<6AKsDgJ6~EZ#-8f zgw5iAVw`^N28)PymHLfn_3ck@wj`a74r1^qebBokKua%XN5C7uBik#EP0`nX_GZ#d z&b~LoQ8p^~dX|^JKeX=sKG#dvbU&;N<$maI)48F&O;KH0w!WvHd2gI-uhrRE&8*p7 zK`w6>EQ|R1Ejq*gL!8M=F-@Z*OTt_1|1CKoF#pCr-oN)|BuxFCrnl|lZT@ci>QyCO z{QnI2<8J>Gx$c$9(#3MT=6AUGpFpWzU9D3eCzpG!FMa&>r_eD`xvh%q;jtEu#iAZ& zmpL@tT&{Jk@yJa0*3Zy&^LATq^uzhe#|5seWPUf_#;;-Fl+WTDe_dYhS{O39@2!j4 z%$tYSY%$TPDpg|JZ+omo{nVpXy7oFpH}I<|np@v)iC)#Pv4PF}Rho$9q!%-CAIW`R z6*lE%$SvrS`NDIipa$ek%Z?Y1?p$w{<5*_;Wn=R3HB5i5cu)U$_{PacGAw5Q%3b^F z<3D_wEn)M~RB#>d=l#cP^ZPZ=i5>s5k4^o%oPff#nGd(d*R{W5{MR8>CU3NU>7(7^ z#}#Wn+}%;_Gf`OM;I~HJ*@dTz`?*D4u@Qw7cGiZJ<9pL@=hkJwnht+ph@3C8X zeqY*IDMNF?H@7CA3J^M-9{r4u>Cf8R*B4jCt`!v2w2EmoPM@E1df(aHw{ctPpNo1145qzd={^09JI$nu0!~NR@ZY_AHcD%!F@(A_IKh9pB zH-)Q6NY_LbUi%rP{`FZ+p4UGYZ*pAK zzKAC=H|C_ef70FG!G+JayllGU@Y2Lp^U#B*nM@PD8XdXTm-z0p?Ci&hA3io7JRMTC z^49fWSFx$Bj3F9^d8bZK-W9RVub`y$um1=G*_EM#&&-@S^2X`EI>|+Yw6A~jwOqdw{zakh_7F}dKuFP&a|xktBM|* zF#V|7lg)JVeSEd__I)2%nDSQjA6@T%aDln|;=F*sW3{Kh|8L)-9qyVool|t*pEuFF z1<%)+vtP|-e^8(AD{L}V?yzrv?4*saQa^Bh&^&zN=hX9pYQa^#@~T&qA}*w_yV-pz zVA8+nTV=1m^}6m!XkO_p{dM)uAXlk0&&q?_0wjB0*YvF9xhr+2!Oe8l%mB%r-}*KD zT-=VkpEfc5J3YTf;?A9i=fuyvethE8X?Ih9{vR_ouFm`O)Za<@{>-SQ3%AG0SQUax z;!g@(&%DQ!eSc<8*!KI1Mn{%r-ZndOX!WxFZd08D+YH!6DrNRu};+AjobepJ9eDcWm!q1!gIRm`!Wz2Om=agG@Y26&l z_WA1P4>-TyuX;dqyW);lpz}RAcP_QNx_V}fyDih+r|GMh|Jb}S4Y+k)>cILFubUdo z?e)cFj^At9k)&>WF7uw17T-3entSK>`~2nLjoNN-a+$I4nv`ex8P`~D|KBcCxcb_| zbK!0eKdsz+ct!awLp2ko&+bs9P!*=;cbJyh> zu5cCJyjzQNYNLt%QOn68Y^}RjUq8O5iRsD5S-a;wOkHNae*?q3cWev&?<~nou8_*u z9>dbmE4{tfwt}V6?%piXu=J9?)glTvg4{031Z*iQ)N0VzSC`&cxV-C)_4?>?u7EWu zz3bB_eEk+4gXCx(+EzHpKaON0eh-GwM_V*^xFE_*QCoGZ?=T2se0|}V*7i} zF^@x0I%{gzd9PexQM*-2s^P?t%5;VHery9~d}) zqGC?_$^A+hDjLi7=~b?ZnYGHJl+|{33X|(BFN3l(BCBU>i~KRA$Q&7;wm9^oCZi!5DW|@i2JT&)o*rNw+x)MK6hAfHoyr#2y z^M|#i=RFQ;+HR;bUR3|jw?X^p+Fp_Fv)upHcN_}QQ`r9H{Q3Py4;1PvnyX9SuKUBv ze|`qb|6gBq=2_X^VwgU^($;2c-9*=h__*t=je5_o-f-UN^s!yi$IP|P?@xAtIGe&W zDaL-|&x+mN)}vbWa{Y?iTR3Nxy;^Z| z&c@Ea$#WO<8Ym{OjAZ)pw&*Vl+k$GD*-pO|%pR=b`Tvw_i|tAtmVKZjA0J$M5XMrr z*Oo`=c6Na|>+WgCwtasPIFUDO)8SLw*2fo@Td~gbVr=4E)@Q<@SL}B27Vm)`!><*d zD>XzW3&$SjdhqTgXOPyNmic?ty}VZ{v`_KgbY_ZH!wi18=msVA)4iMRMDnsuF85!U z7@;00a;)s_9m_SfRjUC;3(L&sCUvFbNBqyQ>CqrtYl>8K5=7LTUqm_E%Uad&!2EJ>&CvV zCvJSJ_)&L-V@>mw)8RhTu72KB{NZv-xuD3kz!T{kv;HmT44zo^(WuF)^vKaAlP&iC zpP*3_ta53E>+W}_S)2SEH%OFS*EMT2-1sM^TmRXz2QC}^%|H!ddGNfr@6IFNI!f#E z?v-wk4(2K2-m&LQddET8ckkFF_H<=Mta5h+<-j+I`Uh(_!V|~H8|F#x_ zo8>>gHecxJQGLh$XX%wy;n(F3>t40{;pDL4g?K_#jZee=f(M(E^j?|172T|#)@PN! zq;bQ?D$~54&nNeO{84$T{Y61>zT?e@T&;1!4EA;AH6dw=XC4SY(AIxal9}>QzWdb9 zTgTF$UtH|oz4LrX>IU|yjSbfiKhU$-o0<#SK@uy#A-(W!kNfq+-MHq;$?2(V-4oL4t7>b>;xeZvIcf4b|ForxL;h^8 zmOl6Yy|kj2|0H|q(x|hHu2Ed=<@w<}B9RYVcdoZyzPJ5w_BDmCcPvZl7oJ!)!D{D~ z!+XEJJ?Z28>K6C(k~`P7_1`NKC@8)z(r4&g_w)42N6XBPKRy?t=^SD0=UU@e+GSha zm(8$8HML{Xm*5ZUKYd!jkdoH()B2!6eb2#-dtb88DfoH8lwIWU<_nSJ9p=Q*Bj~ZI}sdfu5qbNSbEmrtoW3rrK=pj$oyPzbJ23p z$sgZ8g)&LZzf~`g&M)h@SIoCNlxfHQ;E(MS=1$X7*&?-t&upU4<4xAn-*fi#hN`SN zng*Q_j`RhcKru;4b&B0WF~)sc|GutW=boDI=t#lcm?av!Pu~(bee>|7ZwJE~&a2kE z`aNmVr4_Z=CKilc-MKfl(y2?dOH8#HUG-gq#7PIBVIp z+bsU!n9 zR)t13dwjcRpQVBq+0*7B$%vuj`O(;wz6E7bRY z_3`2PRQ0)oYsIu4f`W5fjul@;j1Q<4P3B?5Y?XF>su8&c>A}^B6=AFFdXzrOi-@i_q z4?5nbhj*jXSy$c<-dXc=^tGDzo-=eb2(4OY_R;;kxV+)bwS{c=?sbCAX4-3_s`yIPc#f6iJ^Zu9l3&PSoLn({dlJ_pOZ`4Zyu zL+IPr$@+`0FLplKJ!d1UN&JQgfg80qYLiM2M{Q>L5V^#A?YHIgs<`a$N@ZSivz)!U zoz+!@tvXP0&DWdL&T}5&2Oq~09CP&0-W5x;=dSv8=&7T@Ps42tM|-rxKiq!3{^2xp zb*@tk(%sAI>XUWyYO{s@NKZdE>GCx0Llv`=yj;%|I!b<66UWSQ_*k#^tJiY-c)P`P zjkFcrcAAUzYrf)~^7ocO@~#DGEZcb890CMpeBJl{vwq;_y4swX#?q#*uDc)q{Z71I zzuPR&^O*O76FKee>t9~lY#3nkJ7Ho?-=z}|&z(Q(=<hVdB}CgY&g_JoxxD@$av%Od>0!wKvXPo3-k*F3%`ySvqirTe8>&F5wfzqG?-$g6n#E~x@c#ZeIw_ZKTz^z~s^e6E$@0xf_x6RbMJFZZN~d|p zSHCrtv8mW_hT;CLjWS<%F6F6na$+jFZMuc)!_2*Rzn*?CVf6Lvqp1w8as8iVMD>0Y zxi)w^^T%mdX{pIPKQ#URk-ho*w2YoF+VT1A%N<{TsTIU^)u~bzjOBg;9tIJd3mLP&pw`= zOVfuRBzK?o;(*HC}i|PP-<#HONtmW%KE0DTj1! zstP+?+Bh+UH$AtCwZ3M85%-&%UsKOXxO)ZiMSR$|Oz8fNnns24&x=$K8J>|*pS0)x zRQa>6Z%%DZ>acCQ-+!;4ce5sU%(NK=KP!*F(_ImEJVdhP^!d%Zctm!av47y~D7s|i zqBiNf$ZLJra`KJdVM?h_zdd5gHa!rY{^4|$jeG5Uh2r=}b-hk3#y?iRE^9t!3)%$M z6S3lngH`kY-me#4Uuj!wcEJ7mYS) zub5x+@J446C`uI%m{(MHE(&_=*2O2xtin3gfQ!jk5PQNgg-L)7Uz(X|4D)xd0UoH3`EzhA!M9mxBc_EnK*PGtT;}EQ?8I zlU~0~7|#id!2e(GgrUDm4i_FG!D2KBfb_$(|l-Ju>Z z$D(jiz?OjK>bU%pyG3Q%8DiSUjveD-cYEyinMcg9=&7sOX~7Gj9Ui{U8LKxWxw5DC zF248a^PzwJT|dh{@XKd0*d1Tg5dSaFcj`gOWBWeuw@*I)rnRYBv!qEk<-_7#Ut6O& zwf>*3uBqX?xmQ0bOEuoe0{l! z^f?;0eEj_cU1xvyt8h(ey82Avn3mczodu#Z?Zood{rZyqrMk#sRw?J@f(yOJ7qEZ$ z{%?=e%=&j?)9z*cPMH<7f;yOIjvo-1`H;qo`lo0b-HCv`E4>m`5t zW?`}-koR$Qx$ALh?=Xd(|1ShqNb^YTeQ^Fyci5x3M=j4ibu^gHZS;%ZZL!_5Y12(k zDg-R~A}V|6o9=JPgWK<@g)mqwoZH=fc$Q}V;>#NzzNq-mtTu&lo_Q z>z@wTof*6&ewR*&cwWx^dwP;dr*eK?S($CN_=NO=uTw0g#BGuntVr3!`J`7`Q)mk- zpX4V2vsx4Ga-VAd2=?ir($|;mezD8!mQ>zy{i<%Q1O z;Hd4-xvk1jQs=jB!q3wlevaD}zek1WUA(+LjKS{r*Xk*nrW5Ym*N(jT;)+>B@hPsA zY*Xhp|M|ld^8H)O^n(rWAM-V~X8D(8#_zHH?pS;O@Bf%X;uot6wNypRS=b+LJomOh z%Tn~bPJH|F-DL+R@Ex?M_{eoHazFFs{MU_YtHcGpulr<`@tvDvu{N+HqUeW3+0}f# zb^hrYdi+h1y>cf1oVy(iUq^A($r?-DonI};>*Un+c;1FIQ@`VH9M?~eJ1C#u=l)_s z`-K(RI|8Z<*t(Yp1k`_D_uby%>@VI8iO+aicxBbPF3b>J(yPyXG0SWRXCgnZ=$@Ep zss7E$m+dyLS(kT4BZ{eO;$CN+TfRaomd>$N{^fnJK*}@V^^P^Sc5LhEzWsvHb(Olz z?}R-CM>v1Kmsi^@Jau=tUZjcn#;-s6?)ZuPd26j(GNCv6(R%L(@_V;gEI#p6=akpP zO@~kRNJ@&GDSX3n^o+=EFXezI%-3QL%Bx86#bLlaJ5SRhqmyuI}9Y{cbV$-_4zs%~0q1HMBP7RMTAhDIK5L zg#tg{P>tOiVRt3+kEhmM&_?`sk!sz4-o0DK_~T|KX!Bv=OCG!Utm<7WxG?G8hquMa7r(C*eDUppgQ2^0dWG)F8B>li-MUkn!hHaIWKy_3_{gNwNsGJU z`BWaww*9^F^%>SJYaa8*`|~e(`s7hJ3|B;KldZh3iip^ zb}Gp4l;Rdux@S=;I;Vf`!W}jo*Mi$lcUa;eTyXcMGHIl!2>P34G?P?MVm%cYc z^##+}>aT}pc?w_r{j{Ew!TUnazkIjWzu8yaj_>x}W7w3`lpdtcxBefm=j%H0D_wu) zypFKXX8YAQzo9KLQB^R-zrMcW=g)<|U#O>QiHI_aoLCU)HIce!yj(79o4jJ9t6YzgVYeScw+mtCv0%?jbQk}$hZo5;qbR)}F zInJJ+8?$a~P`tG*xBJ@KXzSD~GaM#b3r~3&7-cs(&0#UW>e&T0?>lv`Un)MhSX+5} zuWD{y^s8U-wrzoKuQuJ^`^omEfCp#FrEi-z_wjF^|6N_ap}fH+a{BG_;$b-=*0Np= z@%L&K-G3S#eE0D2irP=J7_ zXt?p~PDR(_`=?n6&J>Z&&(GK4%3K-Lwqx4t{<7Rz-5&ai>qrC`C@i;RYsRT{;%YGVU=6ykE+T8*AFvq zv7NWsQmnsii@3s!r?>xlT2$&XPySW1eQUJSvbP5&rd;_Fs-15+xptFxbAlgF&z6-+ zU0XQAZm524wA-F;URM8cXUCmiA*vc|dp_w%d+)5(C4UtS(oCA2UOc%L zx1+$(C7Yr1s)&#Z10-oKCzZvw}8h{S;$RpM@HB*uhfo9ww_gg zg7WO$TfP@%X-&TO?eo&ZCvOW|NLw{??X0HvfW4Qw=X_FdGUm~v)Y(nn|CiUo3(d}>(L|E)E)a53IG3O zoxt?7cxz2z_~y1vuZ%u(U)T|u9I|)i;oa~5r0U!(W%$hg)hSdz_(|#Ajh8K|zDmh) z=CyOa-nP)SH_PMv*~4oX1DjTRw{~uI_fI@}Fxle#(T7J@OUT}0G-h{6D)ia&fZ_ht zTPZj9lzew&si=IkP%k(4?KF!%F2Sv)Au(0!ZYq}fNV2SY@#vDm45dqF(!N(b&An-H zOE@s)%l8ZG_j8=nS3Rcp#$Vvt;Vph@Qx{$L{_nEaZ|>10E+;oOSe0JTG4lGeuCT%) zXj1>ftfEaG$Fi*p1oG;0Cs~}kd|v#a|EXTqCC85C`M2zzzCFz)kY6K6ir2hruDnLx zU4H-n3{zVqg#U5O%Ch~qsq46J?~@A?mVF3P(F^_Jy=c$Ad9k0KRWEXJnG&`0RC>^Q z{wIRV<)E^l7ZMoF6s-Z!jwDN3D`UoXP_#@)P5 z@io`}^qb+q7mZ(i+f;UO;q%}?m4_KkT21Ho&HYm{HH{_S^Ww&3QH$O#e!n#kIup=Oo>I!Kb;$FQvdP^N~$UR^N(p-;POOV?BQ)@cfD3lmEpxrb^CI&;5S-U%&cdZIvPwixfXXi+*PEPr7JW2T*A>A%P;DzQdc@| z(|={M`i8fE%ME{=txWQ+x%*}1j_haBPW{tcO}H<&JW-vjcDc%7hQ%{U0gZ0H&la2- zW zOz0TfxtOveIc@R2TcvO5EC1JA!FILXZRM}D?E0PsMj_b|{-28`Ik^@lPR!KP)Dru3 zYD%_p$D%Mp-HNR-&vn!$EM20w=y$H3^uhbzURgKEEn@j0<5K)LEBbw6rF=T?gW_^0 zZ$+iu3j|{G)U48;J%9Z4YIKWCWXj`T8P&xTzkhtkEOBR7`Kmp>3N*37%Taz9ILlG}d{nVoaAluqxRZ7QNB<9y4+o!7on@ zqeXvc3Vr{-_qW0xHl9+hR*vax2dm0Xx-lKyy!+9H`ltOb3`!)Drq}5l$a_+(udu>1 z*l}@3+#kD7n>Qc*zjVH}x`=w)9!q}4($`6EpLo8o&9lkcX0Z0!l&4{AUAvR`4)5Mo z^Lpm@)VFshHqBqQlII~)*~yT{H#Yya*u(TR?%T7nlU`@D?tTBWhKI31^5=8*H*SFw zJyw-`{$f&l#Kz``zbL+AQ(>-%>UiKcRBm3>G)WH)2_Qt#Q##d+T%NMyXu9CR4t@7l?+y3*9m$Oe2xVgkG zXjAdWpcIaC=_wDl+HZR-fAHJZpFVo?sB?4xgYAMHX%Q_C8vp7ux;8nvH7WmYyHPy*)Y~~b=6XJgD(N=XZ=bH; z8h)ng;M3rX#a!GI=TB5ya(|UZ%i)YxB30A~l$wpJ^4!Z(6pf!^7ZVKf{bUhfXEk=6G>a z{j=q=TMj7|`M0%JEm*wcug|QB)A!ey=iXify76M)gL^^Tx8I-3TXAiJ-k#OJl>h!w zUA>CuTacvB`@d&jvB&90-rL;0FA|kfaX~px?s{V`jPh9gVw)D59y*m4E zzW1RQ%~qVPdbL>IwWO;y<;d*%xSd6=Zxn7UI+dV5wXx>jgtCQ?q7(DZ$J}~;TIhiO zz3MwDa}50+UOLH97q@RiTiLTBZ{|O9qgy09gdTYRy1L$c{n|}_%bZ+hUpxDtxH$3r ziudh>oDvuJiSoty9qcoH9(epdfARYlooZK~7R|f%&N%fV#|q7@ZtphiZFQ)*zi{!a zZzsfS>9a-0bF-vftL1~-=eU1m;g7c$ z4bX`(a8#*~WE7FTm>2!3=cWw*`U9_)J}yjOvN(JDv_pNnb&hUvjcVEZaXIVOLxEGc zRyi0P>~H#AvM>4Jy3?ydSG#PQSE(pJ!_#Kc+oH%{&sP+CKE1Iqxt+oAS*yeRUn`gU zot*3^bG0veWt<(q|Noy;wIW~t+FH`m?lzV4gk{y7FCt1a_Ix{?EbP4~nB_o7^}|PD zULIRrryi8kY7VU3#_~b6doT$Fd| zi;p`p^PCzieq5jXVU^bQ?`M>4)i>38eluIV>$rLTp?T}~JDuB_z2f%5<_&w--Cede zRclBm^8t*QDAIA8@E0yE-eX-czPrmrH zl)id*<@WhETj$jpZJ+Ny&!)5Z`MJaw7Z$$w_ei%lVtcGnj8&fGrF+c?5a?sUha|4IQoJUmAh#3!v`a#cQl zYsIcFXMAUD*!KD6#08lxrd53Qvu=y+ZSQ9Pw)p=N%@3<1y+0f`KVKjH;oR)|*G^A( zHf?H&L+5A%*S1~;Ky-T~|RjMqPZNvT@w>cC){yeiRRZse0y2%ZF zk8^>kEdNjMo-fQ@KAr7HXLZZ2_R5KGCQBX+*K!HCr=z@|;o#fc@5Cr)d|1lPA-1m<3#QL@6rMF$rFk~x4&C^de7IK^Jn$WT252yTJ!wi*-otm9^MZ> z%#$tss^DE*>n@wk5>OIy`&5+v)A!%r*{R0-tCP%W0{q+V$p+#k98eZRC>nla8d~i7OtZ$wwP~ z&f=QpKcn-_mJ*v!-*^~(GM{IMY-IUxbX{MYlS^Kenv-=|>-5Rq`M0<~?9?z0zhscL zrgv5QDY?SmWh)r$RKMH3{LXJ^E?-kI;Z@NyEP-uf)hO7_Sw%~6#ne!i5C0C@+B+nP91&QZNHYOE8Tqk;j8EGi_S3- z?cc2+&w4Xb)!|}bu6Fj`Lc{h(tvs#Njuut!KvP3M4W2pm32WXMJt+_ueX`j7Jl~`L znFnJFY~7cdIekBH=L?VG!Q)F#+NYg&`628-ZHI{0)K5F^$ItIt@jO1@@40*bj=r;C zkvgKCDKqJtq3hX~LdRQ|S1vSS+5VD4YR=A_J39m&9UZld`$5_C{j7OTESgL#U4eqN zZ`SXTId|pp^kcOjmH+U~6Fw&7^-gEDYxtf`QO@xeRWh^f|4M!Ls~24^%%@cM*6m|? z^cDFWNhxoJ`G3;BuUmWJ_0r?1p*y`;?A7vCdt`)UDSC6J%wn)N=3e;raE#o8_0rea zdqvVjSMIFLxWCM`vv!m2dG|{B;D8vOSFG1ROjMt2+$H<UcbDlx_pnFTaC$GcH53=hec*y zzrI=U&Pv8T%s$^|ZL0igUGDh%ptFg-H^ZL7chWaDzwvId`C{e>^FiPK> z(b>59`62(qOgFCWn<4MMH|bJwP4?Bmxqj=67cY%EC9p1Gx{qb=BmvK3}b-(O_HxpBUp>-~@Gl|El`Ray5-a^AmxA3l9{p8U>M;Q!z4JBok#9FAdT z<+wMA;r^_xrj7>xCwHcvnlx)xmtF0z19$JxlX`}Fn&Q&^K#c0?EOFTY>ccUPGA|E!{;0(tiOZ_Hx8+!1To|NFUVlemmo z&H~@<6H6w})eciEJF3M~`P4PW%TD#*-ve(vGlcG36sX%^%Wywb=|`1OCd-eR(%%=j zc8lrpez?1LZ;0nomLDa&yytxn@84BA$u`}qm1DNtAubDzhaU`Csw!8Nbk22DJf!Nl z;Yq}jJ5|fh=~&LVbgh{6PWEiQOiqosT_v3N4$B2HAARG)Ql1wg6u9N3lW4&NTZfAt zv$NexZ;CBgk(%dJ<<}oK*L$1QTaM-(*2(|xbX>Mh zF8IAf(_&K@?;`t%mU;R;t;^@jf7-mM;Ah4ph7)e0wsPja7JWX_-Fx=fB+4bk-AHrW zKQ~sg>15Z(j~@@My1nOuO>>s`>1n#gSrY%Bzq%OOapH`V$L)ZM->1u)=j1kg`LQ(q zt30n-ZC}j316l{}Z~w)wa{S%ZCB`Z7-iMd@??3iX*E(RWpDxdz=bJMwEnQq7^|$a@ zO$*Pf{9=eD zKbV+Ov3vL7Wt=iSXWT(p8!#5b=n^M%~SYnj4QYZ+amKDGTTU(2QOY*~!smA8qi|NR;M z+-~`pVP0Th#kb!*=e2C?em+BQyF<3`^~K8WJmIbW$*%C^V7tKH3PGE{HG=<^Wd5G? ze_hmmyIpsx=O=ETWRquG<@f9pf8h4K*fXYH_J z-y1ugc-t7&x1FhJ7Q8?IUIqJFrCmxX7a0DO{*b7vd~IuElP}dIb>;A~rKefGDt=lh z7_t3@@RiJqA`6}0nXI{fjp5&e{P*clkLG8m z80Oa|u+*P#v`Czl7^l*3e!YNJ(Mf+z5B~|XP(``sP zd(%7R>g5Yffq6^02`&pm0LBcDOi7$?wtUvr_W`=cvfK+Sg z(OokyU-&t1;-QTb9%ui{ul~KrM&In$1c_qR{@n+^cOPWYQ2TSYe*c`;XFMeDK65Ih!R!Y` zy$^(M2)z*cpr-OxxLf_xnBYk?JjVqP1wr2JEeZSM(Tl{>%_Z=Ub)Fw`z)@C|6-uZuLaKK(q;n}aZ zlr506ZGWcr#7bBvE0fXKvMcb~i4z`EKQ(R5o_78H*Ef^gdn6QB2$(Rh)cMxSP}y}Q zdw=!P82eeDua>G!aQ(J*{i7m_?ql4$zaKxizip228SmoXKM!^FCM9O`J}|c0;p`4u z3t;r;>uTc*^=Fcete8a=?4kIFH z;k1}v!n1$>f6l!6U-B6jbwgBdr=2f2@~&5`c*$}l<#?taF*kPEtM=PiTQ&JxF*n9J z1vN43I@;>GD4Xet(T#`i)c&0-yB#cX@OjPEKPw;lF@AXal3Dr3zpYs-KKXHc*t>V{ zMvWz^R$3Krw)p2=U$!$?+eJk5{((m2lPg|ohj%=X2;EY<>2zblx(k|D*4?UFR+kmE z%A5J9aX56>#Q_MBf9$$8YkO7&r1Lh|kJVKFadyW$T3pYD!5D z-l<;yx8-+JntBvd7fbWjc@>e9=Luh0%DG3RCM5fV8hZLBcYn3@;B8F zT<=|!bYN}QvMXZ!`%5e&qmP{zw+_F?u{(0_)XGdS< z%r<|N^odjO<5{o0ZMyU8oBt)twYM)d>_0|z5nRoifz%W+qnd{*4BnF?0-H>R#a+2 zfu(>>?m^HHRk(-DV{Qk#4a@5rPH{zT^1jB@buCUNd%ybp85hG&vOIDNT*z>0nZ`!z zo<$)M%w2-=>s=h0-8Ma&Hud<~x+ke=hpY_(8aSWsU)$TOyZ<@6cG+#lg;fi6rno0x z3~CFI^FAl%sJ`H7Pkc^pwEVvXk3vB)7>r zXGQf}>RYnzpK{))UZU_$y$Pdh>$1BljQe(YOm?_&cE#eQa#4?_YcbmW+}oq0{gNl7 z_Qu!8`AUj<=C7^({dwYj$39z0YD@8+!_(*0ZesZ`^Ubdp$MjR254h%jyBhMPXH)N^ z6qTt5w=F;WDUjvh@jhAMiwW6+HOlLrcUZZw%x7eY|Jk?L@<6@e+bM4@UFYTwjHqFj zy}hl(Wirp|;PZArcW$03>g8K(DR3sGXY2J(p@K)FSs?@HGj(T)wX~X=`v{%huskYo zB4iM~L*-gUS<|ZgzN~K02E;czUbu(`OgW=+gMDp_{jAw8-*`36Pqo=5d;U85F7|j! z>-I{+@`J&*RHr|)VmTzFq2{0#pyrS^Wd?(#ipr8F?^(3m#N1Y{lwGyO``_2=@s6Ea zx_piqY??0`DL#41-Kuh@=@UPxq!u+^vj1*; z`dxjwzNq!e)nRM3j1O#oTGeOK7Iv#<*;l0>cjgA%Qs3R>#KLQQ=kBTl{)xhVzf;yT zI&15A-hAq?VP5Q~wG1MfkDqjOEK-gOOP$LCALfo^>N;=xeU8A5?-ftqe#+>3XZmJg z$dNpM7twX+{ys5^p7v&vZ#GI`{OfZS?;8mrCsr}W~-N_pW5|zjcclgo}SR2 zK&IG<7S)r3S6z9p=W9RZ_@ww#=^JlN@L0_duX0c~PD^P|uk}{vzuVTbEM2(gljxUU zJC)NmFPkI5Xt$JkaoXM`Oh00L1UPozH;I4nJ6@RP&8n>( zQ|8!|BCzO-iCId0+W$S^z<%$2=r5GJ_HAF2f zEe~n>X>0av$}8!5{5vf2lo`{c*1ePBPepAGzI0)6_W4OG7L};F2TPv1rhNHk&$J-X zR-po~&#jl3YLss!`^y&oPC9bu=~MmftM6`mv0vj}b&T+X+r@J~***7(VbYVe>kC_X z)ag_ocWGU`%1&pkX(?>x+oTTazc0I8WP3^R(d2KLmpWAbX6gP;(Q?_6d6¬MbmY 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 diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index aa0e26fa42..0470a4fa19 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -1,10 +1,10 @@ /* * Keyboard: Atreus * Keymap: replicaJunction - * Version: 0.1 + * Version: 0.3 * * This keymap is designed to complement my Ergodox keyboard layout, found in keyboards/ergodox_ez. - * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox, and I now + * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox. I now * have both keyboards, so I've designed these layouts in an effort to make switching between the * two as easy as possible. * @@ -37,6 +37,13 @@ #define KCX_CS LCTL(KC_LSFT) #define KCX_CSA LCTL(LSFT(KC_LALT)) #define KCX_LST LSFT(KC_TAB) +#define KX_COPY LCTL(KC_C) +#define KX_CUT LCTL(KC_X) +#define KX_PAST LCTL(KC_V) +#define KX_UNDO LCTL(KC_Z) + +// Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers +#define PREVENT_STUCK_MODIFIERS ; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements. @@ -57,9 +64,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_EX] = KEYMAP( /* Extend */ _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, - KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, - KC_HYPR, KCX_CSA, KCX_CA, KCX_CS, _______, _______, KCX_LST, _______, KC_TAB, _______, - _______, _______, _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, KC_PSCR + _______, KC_LGUI, KC_LALT, KC_LCTL, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, + KX_UNDO, KX_CUT, KX_COPY, _______, KX_PAST, _______, KCX_LST, _______, KC_TAB, _______, + _______, _______, _______, _______, KC_LSFT, _______, _______, KC_SPC, _______, _______, _______, KC_PSCR ), [_NU] = KEYMAP( /* Numbers and symbols */ diff --git a/keyboards/atreus/keymaps/replicaJunction/readme.md b/keyboards/atreus/keymaps/replicaJunction/readme.md index 0e8950cd50..1b96926e44 100644 --- a/keyboards/atreus/keymaps/replicaJunction/readme.md +++ b/keyboards/atreus/keymaps/replicaJunction/readme.md @@ -24,9 +24,11 @@ There is still one blank key on this layout. I haven't decided what to use it fo This layout is designed primarily for keyboard navigation. Arrow keys are easily accessible under the right hand (a welcome change from the original Atreus layout, which places them under the left hand), along with Home/End and PgUp/PgDn. -Modifiers are also placed under the home row of the left hand. One of the single keyboard actions I use most is Shift+Ctrl+Left/Right to select a whole word; this layer makes those keypresses simple by adding the Ctrl and Shift keys in easy-to-reach locations. In fact, I liked this idea so much that I added double modifiers in the row beneath it, so I can now press Ctrl+Shift with a single key instead of pressing both keys individually. Using this layer takes some practice to remember which modifiers are under which fingers, but it makes for much less awkward hand motions when using modifiers on a regular basis. +Modifiers are also placed under the home row of the left hand. One of the single keyboard actions I use most is Shift+Ctrl+Left/Right to select a whole word; this layer makes those keypresses simple by adding the Ctrl and Shift keys in easy-to-reach locations. -The Space key exists to prevent going from this layer directly into the Number layer. +For the common Ctrl shortcuts, I also added some hotkeys to this layer over the letter keys they are associated with. This gives the Extend key some extra utility by letting it "feel" like a Ctrl key in some cases. + +The Space key exists to prevent going from this layer directly into the Number layer. Similarly, the Shift key on the left thumb helps make sure that the Backspace function doesn't fire (the other role of this key on the base layout). ## Number and Symbol Layer ## diff --git a/keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c b/keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c index be2290567f..b0b5cab7b3 100644 --- a/keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c +++ b/keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c @@ -5,7 +5,7 @@ /* * Keyboard: Ergodox * Keymap: replicaJunction - * Version: 1.0 + * Version: 1.1 * * This keymap is designed to complement my Atreus keyboard layout, found in keyboards/atreus. * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox, and I now @@ -16,62 +16,64 @@ * here: https://colemakmods.github.io/mod-dh/ */ -#define BASE 0 // default layer -#define CODH 1 // Colemak -#define QWRT 2 // QWERTY layer -#define SYMB 3 // symbols -#define MDIA 4 // media keys -#define UTIL 5 // keyboard utilities -#define NUMP 6 // numpad -#define GAME 7 // mouse overlay for gaming +#define _CO 0 // Colemak +#define _DV 1 // Dvorak +#define _QW 2 // QWERTY +#define _ME 3 // media keys +#define _NU 4 // numpad +#define _EX 5 // extend +#define _GA 6 // mouse overlay for gaming #define _______ KC_TRNS // Simple alias that just makes the keymaps a bit easier to look at +// Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers +#define PREVENT_STUCK_MODIFIERS + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Keymap: Colemak-ModDH * * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | ~SYMB| 6 | 7 | 8 | 9 | 0 | ' | + * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | = | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | \ | Q | W | F | P | B | Home | | BkSp | J | L | U | Y | ; | = | + * | \ | Q | W | F | P | B | Home | | BkSp | J | L | U | Y | ; | - | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | - | + * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | ' | * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| * | LShft | Z | X | C | D | V | | | | K | H | , | , | / | RShft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | LGui | [ | ] |CtlShf| SYMB | | Left | Up | Down | Right| \ | + * | LGui | [ | ] |CtlShf| | | _EX | - | ' | Right| \ | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | LCtrl| LAlt | | MDIA | RAlt | + * | LCtrl| LAlt | | Left | Right| * ,------|------|------| |------+------+------. - * | Ctl/ | Alt/ | Home | | PgUp | | SYMB/| + * | Ctl/ | Alt/ | Home | | Up | | _NU/ | * | BkSp | Del |------| |------| Enter| Space| - * | | | NUMP | | PgDn | | | + * | | | _NU | | Down | | | * `--------------------' `--------------------' */ -[CODH] = KEYMAP( +[_CO] = KEYMAP( // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, KC_BSLS,KC_Q, KC_W, KC_F, KC_P, KC_B, KC_HOME, KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_G, KC_LSFT,KC_Z, KC_X, KC_C, KC_D, KC_V, ALL_T(KC_NO), - KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), MO(SYMB), + KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), MO(_NU), KC_LCTL, KC_LALT, KC_HOME, - CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(NUMP), + CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(_NU), // right hand - TG(SYMB), KC_6, KC_7, KC_8, KC_9, KC_0, KC_QUOT, - KC_BSPC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,KC_EQL, - KC_M, KC_N, KC_E, KC_I, KC_O, KC_MINS, - KC_BSLS, KC_K, KC_H, KC_DOT, KC_COMM,KC_SLSH,KC_RSFT, - KC_LEFT,KC_UP, KC_DOWN,KC_RGHT,KC_BSLS, + KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + KC_BSPC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,KC_MINS, + KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, + KC_BSLS, KC_K, KC_H, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, + MO(_EX),KC_MINS,KC_QUOT,KC_RGHT,KC_BSLS, - MO(MDIA), KC_RALT, - KC_PGUP, - KC_PGDN, KC_ENT, LT(SYMB,KC_SPC) + KC_LEFT, KC_RGHT, + KC_UP, + KC_DOWN, KC_ENT, LT(_NU,KC_SPC) ), /* @@ -81,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * Backspace in the center. * * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | ~SYMB| 6 | 7 | 8 | 9 | 0 | / | + * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | / | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | \ | ' | , | . | P | Y | Home | | BkSp | F | G | C | R | L | = | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -89,39 +91,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| * | LShft | ; | Q | J | K | X | | | | B | M | W | V | Z | RShft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | LGui | [ | ] |CtlShf| SYMB | | Left | Up | Down | Right| \ | + * | LGui | [ | ] |CtlShf| _NU | | Left | Up | Down | Right| \ | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | LCtrl| LAlt | | MDIA | RAlt | + * | LCtrl| LAlt | | _ME | RAlt | * ,------|------|------| |------+------+------. - * | Ctl/ | Alt/ | Home | | PgUp | | SYMB/| + * | Ctl/ | Alt/ | Home | | PgUp | | _NU/ | * | BkSp | Del |------| |------| Enter| Space| - * | | | NUMP | | PgDn | | | + * | | | _NU | | PgDn | | | * `--------------------' `--------------------' */ -// BASE -[BASE] = KEYMAP( +// _DV +[_DV] = KEYMAP( // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, KC_BSLS,KC_QUOT,KC_COMM, KC_DOT, KC_P, KC_Y, KC_HOME, KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, ALL_T(KC_NO), - KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), MO(SYMB), + KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), MO(_NU), KC_LCTL, KC_LALT, KC_HOME, - CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(NUMP), + CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(_NU), // right hand - TG(SYMB), KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH, + KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH, KC_BSPC, KC_F, KC_G, KC_C, KC_R, KC_L, KC_EQL, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_BSLS, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_LEFT,KC_UP, KC_DOWN,KC_RGHT,KC_BSLS, - MO(MDIA), KC_RALT, + MO(_ME), KC_RALT, KC_PGUP, - KC_PGDN, KC_ENT, LT(SYMB,KC_SPC) + KC_PGDN, KC_ENT, LT(_NU,KC_SPC) ), /* @@ -133,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * and repositioning the arrow keys at the bottom right corner. * * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Esc | |~SYMB | 6 | 7 | 8 | 9 | 0 | - | + * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | - | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | LShift | Q | W | E | R | T | +L1 | | BkSp | Y | U | I | O | P | ] | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -141,156 +143,112 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| FN2 | | ~L1 |------+------+------+------+------+--------| * | LShft | Z | X | C | V | B | | | | N | M | , | . | Up | RShft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | LCtrl| ` | \ |CtlShf| SYMB | | SYMB | / | Left | Down | Right| + * | LCtrl| ` | \ |CtlShf| _NU | | _NU | / | Left | Down | Right| * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | LCtrl| LAlt | | MDIA | ~GAME| + * | LCtrl| LAlt | | _ME | ~_GA| * ,------|------|------| |------+------+------. - * | | | Home | | PgUp | | SYMB/ + * | | | Home | | PgUp | | _NU/ | * | Space| LAlt |------| |------| Enter| Space| * | | | End | | PgDn | | | * `--------------------' `--------------------' */ -[QWRT] = KEYMAP( // Layer1: QWERTY +[_QW] = KEYMAP( // Layer1: QWERTY // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, KC_LSFT,KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME, KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), - KC_LCTL,KC_GRV, KC_SLSH,LCTL(KC_LSFT), MO(SYMB), + KC_LCTL,KC_GRV, KC_SLSH,LCTL(KC_LSFT), MO(_NU), KC_LCTL,KC_LALT, KC_HOME, KC_SPC, KC_LALT, KC_END, // right hand - TG(SYMB), KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC, - KC_BSPC,KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, - KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_MINS, - KC_END, KC_N, KC_M, KC_COMM,KC_DOT, KC_UP ,KC_RSFT, - MO(SYMB),KC_UP, KC_LEFT,KC_DOWN,KC_RGHT, + KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC, + KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, + KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_MINS, + KC_END, KC_N, KC_M, KC_COMM,KC_DOT, KC_UP ,KC_RSFT, + MO(_NU),KC_UP, KC_LEFT,KC_DOWN,KC_RGHT, - MO(MDIA),TG(GAME), + MO(_ME),TG(_GA), KC_PGUP, - KC_PGDN,KC_ENT,LT(SYMB,KC_SPC) + KC_PGDN,KC_ENT,LT(_NU,KC_SPC) + ), + +/* + * Keymap: Numbers and symbols + * + * Note that the number keys here are actually numpad keystrokes. This often doesn't matter, but it may be relevant in a few cases. + * That's why the Num Lock key exists on this layer - just in case. + * + * This layer also contains the layout switches. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | & | | | | / | 7 | 8 | 9 | * | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| | | 4 | 5 | 6 | - | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | \ | 1 | 2 | 3 | + | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | RESET|QWERTY|Dvorak|Colemk| | | 0 | . | = | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * |NumLck| | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[_NU] = KEYMAP( + // left hand + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, + _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, _______, + _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, + _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, + RESET, DF(_QW), DF(_DV), DF(_CO), _______, + + KC_NLCK,_______, + _______, + _______,_______,_______, + // right hand + _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, KC_SLSH, KC_P7, KC_P8, KC_P9, KC_PAST, _______, + KC_PIPE, KC_P4, KC_P5, KC_P6, KC_PMNS, _______, + _______, KC_BSLS, KC_P1, KC_P2, KC_P3, KC_PPLS, _______, + KC_P0, KC_PDOT, KC_EQL, _______, _______, + + _______, _______, + _______, + _______, _______, _______ ), /* - * Keymap: Symbol / navigation Layer - * - * Inspired by Atreus. - * Note the two keys on the left thumb cluster. These change the "default" layer between key layouts. - * The RESET button also resets the Teensy, but note bug #164. - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | @ | Up | { | } | | | | | Home | Up | End | | F12 | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | / | | | \ | $ |------| |------| | Left | Down | Right| | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | [ | ] | ( | ) | & | | | | | PgUp | | PgDn | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | SYMB | | | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * |Dvorak|QWERTY| | | RESET| - * ,------|------|------| |------+------+------. - * | | |Colemk| | | | | - * | | |------| |------| | SYMB | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// SYMBOLS -[SYMB] = KEYMAP( - // left hand - _______,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, - _______,KC_EXLM,KC_AT, KC_UP, KC_LCBR,KC_RCBR,_______, - _______,KC_HASH,KC_SLSH,KC_PIPE,KC_BSLS,KC_DLR, - _______,KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR,_______, - _______,_______,_______,_______,_______, - - DF(BASE),DF(QWRT), - DF(CODH), - _______, _______, _______, - - // right hand - _______,KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - _______,_______,KC_HOME,KC_UP, KC_END, _______,KC_F12, - _______,KC_LEFT,KC_DOWN,KC_RGHT,_______,_______, - _______,_______,KC_PGUP,_______,KC_PGDN,_______,_______, - _______,_______,_______,_______,_______, - - _______, RESET, - _______, - _______, _______, _______ -), -/* Keymap: Media and mouse keys - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | Prev | Next | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | |Brwser| - * | | |------| |------| |Back | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// MEDIA AND MOUSE -[MDIA] = KEYMAP( - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, KC_MS_U, _______, _______, _______, - _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, KC_BTN1, KC_BTN2, - _______, _______, - _______, - _______, _______, _______, - // right hand - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, KC_MPLY, - _______, _______, _______, KC_MPRV, KC_MNXT, _______, _______, - KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, - _______, _______, - _______, - _______, _______, KC_WBAK -), - -/* - * Keymap: Number pad. - * - * Note that the number keys here are actually numpad keystrokes. This often doesn't matter, but it may be relevant in a few cases. + * Keymap: Extend * * ,--------------------------------------------------. ,--------------------------------------------------. * | | | | | | | | | | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | | | | | | | | 7 | 8 | 9 | * | | + * | | | | | | | | | | | | | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | |------| |------| | 4 | 5 | 6 | + | | + * | | | | | | |------| |------| | | | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | 1 | 2 | 3 | / | | + * | | | | | | | | | | | | | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | 0 | . | 0 | = | | + * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | * ,------|------|------| |------+------+------. * | | | | | | | | - * | | |------| |------| | Enter| + * | | |------| |------| | | * | | | | | | | | * `--------------------' `--------------------' */ -[NUMP] = KEYMAP( +[_EX] = KEYMAP( // left hand _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -298,19 +256,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______,_______, - _______, + _______,_______, + _______, _______,_______,_______, // right hand - _______,_______,_______,_______,_______,_______,_______, - _______,KC_UP, KC_P7, KC_P8, KC_P9, KC_PAST,KC_F12, - KC_DOWN,KC_P4, KC_P5, KC_P6, KC_PPLS,_______, - _______,KC_AMPR,KC_P1, KC_P2, KC_P3, KC_PSLS,_______, - KC_P0, KC_PDOT,KC_P0, KC_EQL, _______, - - _______, _______, - _______, - _______, _______, KC_PENT + _______, _______, _______, _______, _______, _______, _______, + _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, _______, + KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, + _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, + _______, _______, + _______, + _______, _______, _______ ), /* @@ -330,14 +287,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | |MClick| | | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | | | | | ~GAME| + * | | | | | ~_GA| * ,------|------|------| |------+------+------. * | | | | | | | | * | | |------| |------|RClick|LClick| * | | | | | | | | * `--------------------' `--------------------' */ -[GAME] = KEYMAP( +[_GA] = KEYMAP( // left hand _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -362,7 +319,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) + [1] = ACTION_LAYER_TAP_TOGGLE(_NU) // FN1 - Momentary Layer 1 (Numbers and symbols) }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -388,22 +345,23 @@ void matrix_init_user(void) { // Runs constantly in the background, in a loop. void matrix_scan_user(void) { - uint8_t layer = biton32(layer_state); + // uint8_t layer = biton32(layer_state); ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); - switch (layer) { - case BASE: + + switch (layer_state) { + case _CO: ergodox_right_led_1_on(); break; - case QWRT: + case _QW: ergodox_right_led_2_on(); - case SYMB: + case _NU: ergodox_right_led_3_on(); break; - case GAME: + case _GA: ergodox_right_led_1_on(); ergodox_right_led_2_on(); default: diff --git a/keyboards/ergodox_ez/keymaps/replicaJunction/readme.md b/keyboards/ergodox_ez/keymaps/replicaJunction/readme.md new file mode 100644 index 0000000000..8c4c03353a --- /dev/null +++ b/keyboards/ergodox_ez/keymaps/replicaJunction/readme.md @@ -0,0 +1,5 @@ +# replicaJunction - Ergodox (EZ) Layout + +I designed this layout, along with my complimentary Atreus layout, to address the challenge of having an Ergodox as my primary home keyboard and an Atreus as my primary work board. I wanted a layout that provided symbols in comfortable locations on both keyboards - but didn't require me to learn two separate sets of symbols for the two keyboards. + +I had originally used several keys as dual-role keys, where a tap would send a keypress and a long press and hold would trigger a different layer. However, after several months of experimenting with those ideas, I've begun moving away from that design due to performance. It's very hard to strike a balance between the time it takes to press a key normally while typing and the "delay" in the typing motion needed to trigger the alternate layer. I was frequently getting strange characters and artifacts because I pressed the function key + the symbol key too quickly, and the layer never shifted. \ No newline at end of file From 0064f1f84cf8470beb32557145dc5d1b9c977fc8 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 30 Jul 2016 08:46:01 -0500 Subject: [PATCH 018/727] Moved my Ergodox keymap to match upstream changes --- .../keymaps/replicaJunction/keymap.c | 18 ++++++++++-------- .../keymaps/replicaJunction/readme.md | 0 2 files changed, 10 insertions(+), 8 deletions(-) rename keyboards/{ergodox_ez => ergodox}/keymaps/replicaJunction/keymap.c (97%) rename keyboards/{ergodox_ez => ergodox}/keymaps/replicaJunction/readme.md (100%) diff --git a/keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c similarity index 97% rename from keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c rename to keyboards/ergodox/keymaps/replicaJunction/keymap.c index b0b5cab7b3..bc5cbc643b 100644 --- a/keyboards/ergodox_ez/keymaps/replicaJunction/keymap.c +++ b/keyboards/ergodox/keymaps/replicaJunction/keymap.c @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-------------. ,-------------. * | LCtrl| LAlt | | Left | Right| * ,------|------|------| |------+------+------. - * | Ctl/ | Alt/ | Home | | Up | | _NU/ | + * |Shift/| Ctrl/| Home | | Up | Alt/| _NU/ | * | BkSp | Del |------| |------| Enter| Space| * | | | _NU | | Down | | | * `--------------------' `--------------------' @@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL, KC_LALT, KC_HOME, - CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(_NU), + SFT_T(KC_BSPC), CTL_T(KC_DEL), MO(_NU), // right hand KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, KC_BSPC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,KC_MINS, @@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LEFT, KC_RGHT, KC_UP, - KC_DOWN, KC_ENT, LT(_NU,KC_SPC) + KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC) ), /* @@ -143,10 +143,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| FN2 | | ~L1 |------+------+------+------+------+--------| * | LShft | Z | X | C | V | B | | | | N | M | , | . | Up | RShft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | LCtrl| ` | \ |CtlShf| _NU | | _NU | / | Left | Down | Right| + * | LCtrl| ` | \ |CtlShf| _NU | | ~_GA | / | Left | Down | Right| * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | LCtrl| LAlt | | _ME | ~_GA| + * | LCtrl| LAlt | | _ME | ~_GA | * ,------|------|------| |------+------+------. * | | | Home | | PgUp | | _NU/ | * | Space| LAlt |------| |------| Enter| Space| @@ -169,7 +169,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_MINS, KC_END, KC_N, KC_M, KC_COMM,KC_DOT, KC_UP ,KC_RSFT, - MO(_NU),KC_UP, KC_LEFT,KC_DOWN,KC_RGHT, + TG(_GA),KC_UP, KC_LEFT,KC_DOWN,KC_RGHT, MO(_ME),TG(_GA), KC_PGUP, @@ -345,19 +345,21 @@ void matrix_init_user(void) { // Runs constantly in the background, in a loop. void matrix_scan_user(void) { - // uint8_t layer = biton32(layer_state); + uint8_t layer = biton32(layer_state); + // uint8_t default_layer = biton32(layer_state); ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); - switch (layer_state) { + switch (layer) { case _CO: ergodox_right_led_1_on(); break; case _QW: ergodox_right_led_2_on(); + break; case _NU: ergodox_right_led_3_on(); break; diff --git a/keyboards/ergodox_ez/keymaps/replicaJunction/readme.md b/keyboards/ergodox/keymaps/replicaJunction/readme.md similarity index 100% rename from keyboards/ergodox_ez/keymaps/replicaJunction/readme.md rename to keyboards/ergodox/keymaps/replicaJunction/readme.md From cf795a6f93a541c2ff5d64daa0aefd1f97d62035 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 30 Jul 2016 09:19:17 -0500 Subject: [PATCH 019/727] Moved PREVENT_STUCK_MODIFIERS to config.h --- keyboards/atreus/config.h | 3 +++ keyboards/atreus/keymaps/replicaJunction/keymap.c | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/atreus/config.h b/keyboards/atreus/config.h index 624d90188c..36624a4a13 100644 --- a/keyboards/atreus/config.h +++ b/keyboards/atreus/config.h @@ -67,6 +67,9 @@ along with this program. If not, see . keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) +/* Prevent modifiers from sticking when switching layers */ +#define PREVENT_STUCK_MODIFIERS + /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index 0470a4fa19..4e88f3bd13 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -42,9 +42,6 @@ #define KX_PAST LCTL(KC_V) #define KX_UNDO LCTL(KC_Z) -// Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers -#define PREVENT_STUCK_MODIFIERS - ; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { From daa83afe2b8e225948e268b8a03b61b8f057ff70 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Tue, 9 Aug 2016 20:51:22 -0500 Subject: [PATCH 020/727] Created keymap local config.h file Reverted the Atreus config.h to default and added one specific to this keymap. --- keyboards/atreus/config.h | 5 +- .../atreus/keymaps/replicaJunction/config.h | 94 +++++++++++++++++++ 2 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 keyboards/atreus/keymaps/replicaJunction/config.h diff --git a/keyboards/atreus/config.h b/keyboards/atreus/config.h index 36624a4a13..0e0393478c 100644 --- a/keyboards/atreus/config.h +++ b/keyboards/atreus/config.h @@ -67,9 +67,6 @@ along with this program. If not, see . keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) -/* Prevent modifiers from sticking when switching layers */ -#define PREVENT_STUCK_MODIFIERS - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -88,4 +85,4 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -#endif +#endif \ No newline at end of file diff --git a/keyboards/atreus/keymaps/replicaJunction/config.h b/keyboards/atreus/keymaps/replicaJunction/config.h new file mode 100644 index 0000000000..437aa662c8 --- /dev/null +++ b/keyboards/atreus/keymaps/replicaJunction/config.h @@ -0,0 +1,94 @@ +/* +Config file - Atreus QMK with replicaJunction layout + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Technomancy +#define PRODUCT Atreus +#define DESCRIPTION q.m.k. keyboard firmware for Atreus + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 11 + +// Change this to how you wired your keyboard +// COLS: Left to right, ROWS: Top to bottom +#if defined(ATREUS_ASTAR) +# define MATRIX_ROW_PINS { D0, D1, D3, D2 } +# define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 } +# define UNUSED_PINS +#elif defined(ATREUS_TEENSY2) +# define MATRIX_ROW_PINS { D0, D1, D2, D3 } +# define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 } +# define UNUSED_PINS +#endif + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +//#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +// Default: 5 +#define DEBOUNCING_DELAY 6 + +// I don't have any locking keys, so I don't need these features + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +//#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +//#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* Prevent modifiers from sticking when switching layers */ +#define PREVENT_STUCK_MODIFIERS + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif From 5d78311612e5ee3824a2d707ce1377661318770e Mon Sep 17 00:00:00 2001 From: Joshua T Date: Tue, 9 Aug 2016 21:27:38 -0500 Subject: [PATCH 021/727] Reverted Ergodox config.h I will create a separate config.h for my keymap --- keyboards/ergodox/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ergodox/config.h b/keyboards/ergodox/config.h index edc60caae1..acb8cacbf3 100644 --- a/keyboards/ergodox/config.h +++ b/keyboards/ergodox/config.h @@ -33,4 +33,4 @@ #endif -#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */ +#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */ \ No newline at end of file From fdb8a4cd658e940587f552e348a5c0b2732ffcba Mon Sep 17 00:00:00 2001 From: Joshua T Date: Tue, 9 Aug 2016 21:28:31 -0500 Subject: [PATCH 022/727] Created keymap-specific config.h --- .../ergodox/keymaps/replicaJunction/config.h | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 keyboards/ergodox/keymaps/replicaJunction/config.h diff --git a/keyboards/ergodox/keymaps/replicaJunction/config.h b/keyboards/ergodox/keymaps/replicaJunction/config.h new file mode 100644 index 0000000000..d03e193db9 --- /dev/null +++ b/keyboards/ergodox/keymaps/replicaJunction/config.h @@ -0,0 +1,63 @@ +/* +Config file - Ergodox QMK with replicaJunction layout + +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 . +*/ + +#ifndef KEYBOARDS_ERGODOX_CONFIG_H_ +#define KEYBOARDS_ERGODOX_CONFIG_H_ + +#define MOUSEKEY_DELAY 100 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_MAX_SPEED 3 +#define MOUSEKEY_TIME_TO_MAX 10 + +#define TAPPING_TOGGLE 1 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +#define TAPPING_TERM 200 +#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.) + +// Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers +#define PREVENT_STUCK_MODIFIERS + +// I don't have any locking keys, so I don't need these features + + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ + +//#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +//#define LOCKING_RESYNC_ENABLE + +/* Prevent modifiers from sticking when switching layers */ +#define PREVENT_STUCK_MODIFIERS + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \ + keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ +) + +#ifdef SUBPROJECT_ez + #include "ez/config.h" +#endif +#ifdef SUBPROJECT_infinity + #include "infinity/config.h" +#endif + + +#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */ From ea8638b9440ca9e8cf99437b01c69c5f9e7693d5 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Tue, 9 Aug 2016 21:29:22 -0500 Subject: [PATCH 023/727] Changed left thumb back to Ctrl/Alt Removed Shift from left thumb --- .../ergodox/keymaps/replicaJunction/keymap.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/keyboards/ergodox/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c index bc5cbc643b..6c8333ab07 100644 --- a/keyboards/ergodox/keymaps/replicaJunction/keymap.c +++ b/keyboards/ergodox/keymaps/replicaJunction/keymap.c @@ -1,7 +1,3 @@ -#include "ergodox_ez.h" -#include "debug.h" -#include "action_layer.h" - /* * Keyboard: Ergodox * Keymap: replicaJunction @@ -16,6 +12,10 @@ * here: https://colemakmods.github.io/mod-dh/ */ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" + #define _CO 0 // Colemak #define _DV 1 // Dvorak #define _QW 2 // QWERTY @@ -26,9 +26,6 @@ #define _______ KC_TRNS // Simple alias that just makes the keymaps a bit easier to look at -// Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers -#define PREVENT_STUCK_MODIFIERS - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Keymap: Colemak-ModDH @@ -42,12 +39,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| * | LShft | Z | X | C | D | V | | | | K | H | , | , | / | RShft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | LGui | [ | ] |CtlShf| | | _EX | - | ' | Right| \ | + * | LGui | [ | ] |CtlShf| LAlt | | _EX | - | ' | Right| \ | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | LCtrl| LAlt | | Left | Right| * ,------|------|------| |------+------+------. - * |Shift/| Ctrl/| Home | | Up | Alt/| _NU/ | + * |LCtrl/| LAlt/| Home | | Up | Alt/| _NU/ | * | BkSp | Del |------| |------| Enter| Space| * | | | _NU | | Down | | | * `--------------------' `--------------------' @@ -59,11 +56,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_BSLS,KC_Q, KC_W, KC_F, KC_P, KC_B, KC_HOME, KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_G, KC_LSFT,KC_Z, KC_X, KC_C, KC_D, KC_V, ALL_T(KC_NO), - KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), MO(_NU), + KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), KC_LALT, KC_LCTL, KC_LALT, KC_HOME, - SFT_T(KC_BSPC), CTL_T(KC_DEL), MO(_NU), + CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(_NU), // right hand KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, KC_BSPC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,KC_MINS, From 82223aec6c6711ed0fd8180b9fc2df0717bf6654 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Tue, 9 Aug 2016 21:34:55 -0500 Subject: [PATCH 024/727] Created build.bat Helper batch file for building the keyboard. --- util/build.bat | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 util/build.bat diff --git a/util/build.bat b/util/build.bat new file mode 100644 index 0000000000..316bbfd54e --- /dev/null +++ b/util/build.bat @@ -0,0 +1,51 @@ +@echo off + +rem Use this batch file from within an IDE to automatically build your firmware. +rem You can pass command-line arguments to indicate which keyboard and keymap to build. +rem +rem Usage: +rem vscode-build.bat "Working directory" "Keyboard" "Keymap" +rem +rem Ex. vscode-build.bat C:\Projects\qmk_firmware Planck default + +SET ROOTDIR="%~dp0..\" + +rem Modify this to define your keyboard +rem SET KEYBOARD="ergodox_ez" +if [%1]==[] ( + echo. Keyboard is undefined; defaulting to Planck + SET KEYBOARD="Planck" +) ELSE ( + SET KEYBOARD="%1" +) + +rem Modify this line to adjust your keymap. +rem SET KEYMAP="replicaJunction" +if [%2]==[] ( + echo. Keyboard is undefined; defaulting to default + SET KEYMAP="default" +) ELSE ( + SET KEYMAP="%2" +) + +echo. +echo. -------------- +echo. Build started. +echo. -------------- +echo. +echo. Working directory: %ROOTDIR% +echo. Keyboard: %KEYBOARD% +echo. Keymap: %KEYMAP% +echo. +echo. +CD /D "%ROOTDIR%" +echo. Cleaning build directory... +make clean KEYBOARD=%KEYBOARD% KEYMAP=%KEYMAP% +echo. +echo. Making keyboard %KEYBOARD% with keymap %KEYMAP% +make KEYBOARD=%KEYBOARD% KEYMAP=%KEYMAP% +echo. +echo. ---------------- +echo. Build completed. +echo. ---------------- +exit /b \ No newline at end of file From 6a24bac9c40ea22e92421f7f9bb7c7af6f562fca Mon Sep 17 00:00:00 2001 From: Joshua T Date: Tue, 9 Aug 2016 22:16:21 -0500 Subject: [PATCH 025/727] Moved Shift keys to Z and ? Instead of using a thumb shift, I was given the idea of using the pinky keys as dual-role keys that also send the Shift keypress. This gives me a Shift key on each hand again, but it will make me learn to Shift with opposite hands after all. --- .../atreus/keymaps/replicaJunction/keymap.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index 4e88f3bd13..bc4011d2c7 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -46,17 +46,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_CO] = KEYMAP( - KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, - KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, - KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, - KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, SFT_T(KC_BSPC), CTL_T(KC_DEL), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL + KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, + SFT_T(KC_Z), KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, SFT_T(KC_SLSH), + KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, CTL_T(KC_DEL), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL ), [_QW] = KEYMAP( /* Qwerty */ - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, - KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, - KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, CTL_T(KC_BSPC), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_NU), TG(_GA), KC_QUOT, KC_EQL + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + SFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SFT_T(KC_SLSH), + KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, CTL_T(KC_BSPC), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_NU), TG(_GA), KC_QUOT, KC_EQL ), [_EX] = KEYMAP( /* Extend */ @@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, KC_BTN3, _______, KC_MS_D, _______, _______, - _______, _______, _______, _______, KC_SPC, KC_BSPC, KC_BTN2, KC_BTN1, _______, _______, _______, _______ + _______, _______, _______, KC_LSFT, KC_SPC, KC_BSPC, KC_BTN2, KC_BTN1, _______, _______, _______, _______ )}; const uint16_t PROGMEM fn_actions[] = { From fe7b46579c05d4aa19d88bc61b8b04967a914f39 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 10 Aug 2016 19:37:59 -0500 Subject: [PATCH 026/727] completes first-pass at base layer --- .../ergodox/keymaps/common-nighthawk/keymap.c | 183 ++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 keyboards/ergodox/keymaps/common-nighthawk/keymap.c diff --git a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c new file mode 100644 index 0000000000..f222ad839c --- /dev/null +++ b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c @@ -0,0 +1,183 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "version.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | Esc | x | x | x | x | x | Home | | End | x | x | x | x | x | `~ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * |Tab/Ctrl| Q | W | E | R | T | Up | | PgUp | Y | U | I | O | P |Bks/Ctrl| + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | '"/Cmd | A | S | D | F | G |------| |------| H | J | K | L | ;: |Entr/Cmd| + * |--------+------+------+------+------+------| Down | | PgDn |------+------+------+------+------+--------| + * |_/LShift| Z | X | C | V | B | | | | N | M | ,< | .> | /? | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | Alt | x | x | x | Left | |Right | x | x | x | Alt | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | x | x | | x | x | + * ,------|------|------| |------+--------+------. + * | | | x | | x | | | + * | ~L1 | x |------| |------| x | ~L1 | + * | | |Teensy| |Teensy| | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_ESC, KC_1, KC_1, KC_1, KC_1, KC_1, KC_HOME, + CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, + GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, + SFT_T(KC_UNDS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, + KC_LALT, KC_1, KC_1, KC_1, KC_LEFT, + KC_1, KC_1, + KC_1, + KC_FN1, KC_1, RESET, + // right hand + KC_END, KC_1, KC_1, KC_1, KC_1, KC_1, KC_GRV, + KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, CTL_T(KC_BSLS), + KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), + KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_RGHT, KC_1, KC_1, KC_1, KC_RALT, + KC_1, KC_1, + KC_1, + RESET, KC_1, KC_FN1 + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; From 916d12f9fab526d55bb864479520901635756f80 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 12 Aug 2016 14:37:13 -0500 Subject: [PATCH 027/727] completes first-pass at symbol layer --- .../ergodox/keymaps/common-nighthawk/keymap.c | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c index f222ad839c..34fae9ac3a 100644 --- a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c +++ b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | x | x | | x | x | * ,------|------|------| |------+--------+------. * | | | x | | x | | | - * | ~L1 | x |------| |------| x | ~L1 | + * |Sp/~L1| L2 |------| |------| L2 |Sp/~L1| * | | |Teensy| |Teensy| | | * `--------------------' `----------------------' */ @@ -33,36 +33,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [BASE] = KEYMAP( // layer 0 : default // left hand - KC_ESC, KC_1, KC_1, KC_1, KC_1, KC_1, KC_HOME, - CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, - GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, - SFT_T(KC_UNDS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, - KC_LALT, KC_1, KC_1, KC_1, KC_LEFT, - KC_1, KC_1, - KC_1, - KC_FN1, KC_1, RESET, + KC_ESC, KC_1, KC_1, KC_1, KC_1, KC_1, KC_HOME, + CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, + GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, + SFT_T(KC_UNDS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, + KC_LALT, KC_1, KC_1, KC_1, KC_LEFT, + KC_1, KC_1, + KC_1, + LT(SYMB, KC_SPC), TG(MDIA), RESET, // right hand - KC_END, KC_1, KC_1, KC_1, KC_1, KC_1, KC_GRV, - KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, CTL_T(KC_BSLS), - KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), - KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_RGHT, KC_1, KC_1, KC_1, KC_RALT, + KC_END, KC_1, KC_1, KC_1, KC_1, KC_1, KC_GRV, + KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, CTL_T(KC_BSPC), + KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), + KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_RGHT, KC_1, KC_1, KC_1, KC_RALT, KC_1, KC_1, KC_1, - RESET, KC_1, KC_FN1 + RESET, TG(MDIA), LT(SYMB, KC_SPC) ), /* Keymap 1: Symbol Layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * | | ! | ^ | { | ( | [ | | | | = | 7 | 8 | 9 | 0 | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * | | & | $ | } | ) | ] |------| |------| + | 4 | 5 | 6 | * | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * | | \ | # | @ | % | | | | | | - | 1 | 2 | 3 | / | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | . | 0 | = | | + * | | | | | | | | | . | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -75,28 +75,28 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // SYMBOLS [SYMB] = KEYMAP( // left hand - M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, - KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, - KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS, + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS, KC_EXLM, KC_CIRC, KC_LCBR, KC_LPRN, KC_LBRC, KC_TRNS, + KC_TRNS, KC_AMPR, KC_DLR, KC_RCBR, KC_RPRN, KC_RBRC, + KC_TRNS, KC_BSLS, KC_HASH, KC_AT, KC_PERC, KC_PIPE, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, // right hand - KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, - KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, - KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, - KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, - KC_TRNS, KC_TRNS, + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, + KC_TRNS, KC_EQL, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_PLUS, KC_4, KC_5, KC_6, KC_ASTR, KC_TRNS, + KC_TRNS, KC_MINS, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_DOT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS ), /* Keymap 2: Media and mouse keys * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | + * |Version | | | | | | | | | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | | | MsUp | | | | | | | | | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -116,7 +116,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ // MEDIA AND MOUSE [MDIA] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, From 558bf2ed07ff04455b509c81a4f3312f5dbd308c Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 12 Aug 2016 19:27:44 -0500 Subject: [PATCH 028/727] completes first-pass at media layer --- .../ergodox/keymaps/common-nighthawk/keymap.c | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c index 34fae9ac3a..7c232246da 100644 --- a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c +++ b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c @@ -11,13 +11,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | Esc | x | x | x | x | x | Home | | End | x | x | x | x | x | `~ | + * | Esc | x | x | x | _ | x | Home | | End | x | Esc | x | x | x | `~ | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * |Tab/Ctrl| Q | W | E | R | T | Up | | PgUp | Y | U | I | O | P |Bks/Ctrl| * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | '"/Cmd | A | S | D | F | G |------| |------| H | J | K | L | ;: |Entr/Cmd| * |--------+------+------+------+------+------| Down | | PgDn |------+------+------+------+------+--------| - * |_/LShift| Z | X | C | V | B | | | | N | M | ,< | .> | /? | RShift | + * |[/LShift| Z | X | C | V | B | | | | N | M | ,< | .> | /? |]/RShift| * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | Alt | x | x | x | Left | |Right | x | x | x | Alt | * `----------------------------------' `----------------------------------' @@ -33,19 +33,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // Otherwise, it needs KC_* [BASE] = KEYMAP( // layer 0 : default // left hand - KC_ESC, KC_1, KC_1, KC_1, KC_1, KC_1, KC_HOME, + KC_ESC, KC_1, KC_1, KC_1, KC_UNDS, KC_1, KC_HOME, CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, - SFT_T(KC_UNDS), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, + SFT_T(KC_LBRC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, KC_LALT, KC_1, KC_1, KC_1, KC_LEFT, KC_1, KC_1, KC_1, LT(SYMB, KC_SPC), TG(MDIA), RESET, // right hand - KC_END, KC_1, KC_1, KC_1, KC_1, KC_1, KC_GRV, + KC_END, KC_1, KC_ESC, KC_1, KC_1, KC_1, KC_GRV, KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, CTL_T(KC_BSPC), KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), - KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RBRC), KC_RGHT, KC_1, KC_1, KC_1, KC_RALT, KC_1, KC_1, KC_1, @@ -98,13 +98,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * |Version | | | | | | | | | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | + * | | | | MsUp | | | | | | Play | Prev | Next | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * | | |MsLeft|MsDown|MsRght| |------| |------| | Lclk | Rclk | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | Prev | Next | | | + * | | | | | | | | | | Mute |VolDn |VolUp | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -120,16 +120,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // right hand KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WBAK From 8019a074cfe39e2bf04c35bb5fb40c9ff9cda9a4 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 14 Aug 2016 20:43:05 -0500 Subject: [PATCH 029/727] minor tweaks to numpad and media layer --- .../ergodox/keymaps/common-nighthawk/keymap.c | 50 +++++++++---------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c index 7c232246da..d57f665317 100644 --- a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c +++ b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c @@ -22,34 +22,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Alt | x | x | x | Left | |Right | x | x | x | Alt | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | x | x | | x | x | + * |CapLok| x | | x | Del | * ,------|------|------| |------+--------+------. * | | | x | | x | | | * |Sp/~L1| L2 |------| |------| L2 |Sp/~L1| * | | |Teensy| |Teensy| | | * `--------------------' `----------------------' */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* [BASE] = KEYMAP( // layer 0 : default // left hand - KC_ESC, KC_1, KC_1, KC_1, KC_UNDS, KC_1, KC_HOME, - CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, - GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, - SFT_T(KC_LBRC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, - KC_LALT, KC_1, KC_1, KC_1, KC_LEFT, - KC_1, KC_1, - KC_1, - LT(SYMB, KC_SPC), TG(MDIA), RESET, + KC_ESC, KC_1, KC_1, KC_1, KC_UNDS, KC_1, KC_HOME, + CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, + GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, + SFT_T(KC_LBRC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, + KC_LALT, KC_1, KC_1, KC_1, KC_LEFT, + KC_CAPS, KC_1, + KC_1, + LT(SYMB, KC_SPC), TG(MDIA), RESET, // right hand - KC_END, KC_1, KC_ESC, KC_1, KC_1, KC_1, KC_GRV, - KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, CTL_T(KC_BSPC), - KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), - KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RBRC), - KC_RGHT, KC_1, KC_1, KC_1, KC_RALT, - KC_1, KC_1, + KC_END, KC_1, KC_ESC, KC_1, KC_1, KC_1, KC_GRV, + KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, CTL_T(KC_BSPC), + KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), + KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RBRC), + KC_RGHT, KC_1, KC_1, KC_1, KC_RALT, + KC_1, KC_DEL, KC_1, - RESET, TG(MDIA), LT(SYMB, KC_SPC) + RESET, TG(MDIA), LT(SYMB, KC_SPC) ), /* Keymap 1: Symbol Layer * @@ -62,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | \ | # | @ | % | | | | | | - | 1 | 2 | 3 | / | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | | . | | | + * | | | | | | | 0 | 0 | . | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -88,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_EQL, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_PLUS, KC_4, KC_5, KC_6, KC_ASTR, KC_TRNS, KC_TRNS, KC_MINS, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_DOT, KC_TRNS, KC_TRNS, + KC_0, KC_0, KC_DOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS @@ -98,11 +96,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * |Version | | | | | | | | | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | Play | Prev | Next | | | | + * | | | xx | MsUp | xx | | | | | Play | Prev | Next | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | Lclk | Rclk | | | | + * | | |MsLeft|MsDown|MsRght| |------| |------| xx | Lclk | Rclk | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | Mute |VolDn |VolUp | | | | + * | | | xx | xx | xx | | | | | Mute |VolDn |VolUp | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' @@ -117,9 +115,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // MEDIA AND MOUSE [MDIA] = KEYMAP( M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_NO, KC_MS_U, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -127,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, + KC_NO, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, From bc1059bc1e288e6db15e442cacad3df369421581 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Tue, 16 Aug 2016 21:55:33 -0500 Subject: [PATCH 030/727] Minor changes to Extend and Number layers. Brought QWERTY layer in line with normal layer. Removed Undo function, as it interfered with Shift. Moved Tab and Shift-Tab, and added Insert. --- .../replicaJunction/atreus-replica-extend.png | Bin 88880 -> 91313 bytes .../replicaJunction/atreus-replica-num.png | Bin 72341 -> 73126 bytes .../atreus/keymaps/replicaJunction/keymap.c | 20 +++++++++--------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png index fd8f0a6e2cdaf014c67ae23a0b3251d8e213cf20..61b5f647e34dd9608fa5883b3488a3dac2be4645 100644 GIT binary patch delta 65694 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 delta 63222 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 Q7#J8lUHx3vIVCg!09^v7#{d8T diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png index fefea53c59ff5cc16ce869753a5793ef19cd7abb..faeef089c508a7ace7cd4ccd8a85b49c0ce6ecbb 100644 GIT binary patch delta 43825 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 delta 43014 zcmZ3sn`P=&mJON3^=nqG`?kM9a>ha)p1t4u_>Kk~S;w(0BI!p?eQ%QELoy+Q+4u~@|L5D=Z7siVseZTj`JL)_7QZW> zEj+V#`J38v_uj|7j(vZcd5KPp=#5oBjFp&fuJd(e*;KZKb@g>d^{;p8_hi<3UtwI} zVQM7Id{kWD_D?Z)!k4PPlv+RcjLt6L zQg?6uDc(N?3)Yk`VhC7aP#35*V?(D-hNQTflGwlZ_jYSNy7ywTZfmvE`w#54$4?$A zI%M1((s=5(|6H-c{4eDX`;s#6ZLi;bWzElcX2IOt(`-jMj7sijXK~N=S-xWS?5Ga; zDO`)H_W$~OKa^{#M`G#c?d%KzA}W@t{5|R1lTIx#YIrItsI|3od-Mih$pe=z6=_E8 zI#pJ8E$TrTYl_SK&X^z{@n_GL2oxS<71z*B`D^Dh%fvJHU8%|5+}qo@UVKWv#~|^( z-aJgJIlk8Qi`c3z;RDZY$^>inpOgPm$goeOUU+N$`@P>q{2aFRm-Aj;>H0n{)7pOf zoBPV|yo(nZt$0(J<~#N5v-f`4b$8UoCWdIbgfu5i4=i3B65^&{8=%F&e_MS0meTb` zMIwx0Iw~GVKWu1UIzwX~d$hZV=BW+LUD4a$igG_by=(gpm%Rx$Z+1@3DV3@J#Pd|9 z^&xxcV;6}9&lk)}VC!;xd+f0!^Y-@^p)dR9ZVL6?RK{9=^f%v%-Xy>C=jQ3T`>$w7 z-rbw(`ei}df+<{jUv8F{X~|xye!n+-snF_Z16v2FUu(DDo1|TT&&yBhPGq2R(-I>Y z4d<>^kM5ck@oS5}kzf+v!(W<}?ok$&R`2rs#rK8&^XB%z^F0bq=4(0c`JVSjPC;U4$bmYe=vxg5YB$X9 zRXFdfuX);(@~!{v&NEZEE`1hsjb-y6!hxK$t@y%nKN}41uwbA5V~aXgM!wT zGc@M$&Hr|-rt;HQ(QSgR#sPP>zi+r>_pLN?SIOcS`(GwM=TB^YY`OGxd5@;7(t>SP zr?+NlCFHo@QLp;?x_z1k?`iYIj!Sb(uSIH|PV$>w zwfEVp^Of%z%>n{;oBWU7T|LpWFgUfN{nP@@oUOOE2Qruma^0S{S5-;cJn~t_W1F)7 zf4{qzusBTEQguUAX+ga+Lj$LWM08!N;%Ppm(`jF;n? zTIZxb8`I-KDN{YzfBcN~U8!MTv0~GT?k$CP*Z8c=XO@|fVE=Ddo0i{>_xpY?Nj*L7 z6i*9>S43Cmqqp+1j*?~@=CvM5V(YrS?d?SC<9~gR-LGD_CF`ojz2IYCZLPgn{~xcI z*)3staA$JbsSZKqD{W7|?|&u75zzD6tv>0`q{(SppE=ZhIHWp_Q%r8V-Vfzl`_gh3 zZpprVWBZG}U4AYLLn;EfFKUVENbS(J{qdmrs^9~O`TZ_-d^c2Mz5iz)X8v*LVu<9U zg+?kxbC12Z@{Eu&j=H?ex7$MYPLRdc<#WY6r9Zu%^~Z|uqHCAq*)6>@jnlQ9IT@zS zoil^2{y^Q!SHDW_k3DAia5G`1>UoAAR*OxGo}5tddt2q>o2sFsQ?j+D&sAOW7w^#? zkK2JSD&GFo)p^Y?zO}f#v*6?JVKHV{xJW(;}fz*KL08BGYy6s{}7U zH>LXh&VX05T(<1}wsijdV6&^<;huNj+{$83&dG`SWPf*U*{iavAKVtacy9W$a!tk; znRBVrvktSacik^HwdTQ}?axkKTf6(I`F^{*=TCQAgqe7?F570Yvejqauhu)?Z}=Q# zWt$MXJ)yecCr_l|uV4E0<=@Ifx<5=l_29Uy=Dy#HMEkNd=N#^f@A}0%@mPqv%iUiG zPTEN>aGR)Mb)xM1u?Rjn8;dLJDqMWU^4{X>MQMmTHb&Gc<1fyj!^Yu3zjoQ0&a=F&9O@0{_XbKQu>FwX?_!yls{Y(;|1p(Yg?AY2ZiZ$t zc9i|TX!&TVQN_j@GjZ{vy$l)F>DFD6np2wZP2$OCwExwY9FQKoVWUUdxj50p6y{jo zysA~NOfRvq=tpjHncP{eRKHPG2Tm38(%zG7BxTgw(91@LZ+^@ zY+u&AS@%4ChUU$iGmCC6eW+gE}<&Ha|HTOGZ@_QJ+w_h@tNIg1Jcb8f8OtmVa#a`Sxjx6TSmc6f@y?xgGCY#z>gv}* z?7H2)ioey#GTXFJe#Lsl37(H5A4$sCR+ZG7${x!5;9)yCX|_q(j+pY36FT}Ceu(M) z-FV4Qyl%4C6ZgXbKXcySTB;SlGJ(}$^X|7d*EsBCTiO+Lu=&!z9rl{)a@GqxwwNpq z?wti+BQM%LTNtM2xBj0}(w;MduK#TRHP)Y)nf_&Ja(jvQ)7{dA?`%(B zTTwqd_Cq~G*U$MPTDzZ>Fn9f8)4X!#+$vp*9}?15y*Wny@*(z5o!)%3;b3^E%RSw5 z^|Oh`7-YCb#kw+rL~}cy*IjyRede-Ar)tpFd8ew&j7=_yy-cgiG-2Nqah23x@CRNZs^qZuW-a`ab3d@zrm)7Ja{4e!AEE zp2qX}^>s&7Sv^w=Hh~JQo82sP?(UwprtZ1TgZ26Q?~63Nsfl z&Lu)(>e96BMV?|yo$9rnZ`@S9y>#B&yqME-Cd8S%esV0!_D%a!UBL(Kaatkk%-$U6 zyfV8{Y1_3Wu3HzF2cE2cSLvO%BXLH_`)ijj|4@7Ee6iutiNv!y=aV&%v78CvV-e2%mjc+#~t0H}7Po#@P23J6At+a+@Zaki`CBq4b=Jq@%mMx#qd~ z^7VG8EMT3GsprF;*7BzR70ZW-?#Z%D_C2!JVXVius2NF{>96AX7$A8-%tZb4^N3%^ zI3FD5E-TXMeflHL{! zb-g$IsR{r88Ew6-@aVPcZ_(@e4Dz?uzljKPU3o#!H7GO9&cI>ft8;hkK3eYok!UN! zy|ihrTyK)ZCBF~V57@qC?9@lQQ5xvD%sc9`BofSW7km4KcPrJ z%H-guKMxkoxV_t3RW#|^8_`XPhx;6!2t1ZmR&V8CIB;QNu;`7gkEbtduKlzoa&yS` z1>!k55{4E#S2I4-*tU)N#~ERUgiWjW|GK*VQO85w#|-rh3Jjhujv;T0;`co-$!Dlh zI%3m>qFRN-+q1k><+`fS65d*eI%%B%g(+x#(zx+o6^1<9S#+~ zmzzQxW0%j;S^LlF!#U5cDcMWrY0SL%;6ihPOwNsiGaHp;y%zepos~LuXzKJ!Iw$() zuDjM(vPy3GG7r|M*vH>9%FIml;ba$)s zh3VqoKSsVN|G(iFlSt%?&*y6PG}&!=5qJ9IWyMME3*%nS`YOh-tXpzseFUg%eDHPe z|GbY?KVK|%Eqbk+zI4xyQ#X_^-m6v$Nn4$e71&`h>#Ro8+syaw>W?^QJle&Wag0rs zK~Jr*CxXFF=Dc`Zg`-^EkHpMdTULJW=6o=D#N$Z+s?N>UnKF8!V|Ee$Rw_Rqn(Eh$5$~5=4 zzJ^z;S?mStV0{O{hX0SY=s&TKUq8)VE%w>!o*D8}xZ;-Wp7+NwH!MPBK}CQ<@Q3&H zw->vK+^?^1{PTRaY0>vsahHgXYM%nsf5mR^xbRWjH<-IkHo!%_>iN9CmsW&7U$RQ| zNYVa0hl?v8^p~e!e>i5ap$5nmlxWDN7`od>*jNL5BXBg!38I2rzr1zw*d3Uz={p-3< zpw`b{SLPoL)tgSP|MyYi_+?hl)PRWB9j28x1uy)LUlZzVWVNN#WYa={t$Ah3jxII4 z`MLCk0JD3=8BWt!Rf1BOMkvCcxm6>&{xM!|2_Um(%j26>@82UGAGyS4xI(3Ir`6dyL{}{ zub;qgAEn|u`^xnDcPrW+FH@P8?f+%-M+VngzZE(bt7Yvi&*r-1`SLldeovN-?09}_^{MhXM&)T;;(8P7 ztA51p{I~1!q`V1_uU)rsp7F#&w3koP=*S|I1}7HY;La4Y2I&Ox2W>Utg7N?SwuJBA zDLD7p{k)*GS@Ew}KCtu2)JL5B*(&5@D0?xa;z(kq-?x*?=T)r=+I(O_*CM;(=68LriQ27%HFi?>ZG1;xglZqR{!FDopbV4X`j)Olc(;q%CS^Gogt`Oe>Xa2 zRhcM{i%##skml+me$(gr@OHeFI%064K|(xpe#R889iBdu(&yK1dvxJ|KhuNTg>!pX zKA&sdJ$3f2-ek8EJ(Auj2O9b`g996a9OD;V?J`lTP>gr85sP(5tm-?ppmUqUC)W2`=qycr`s%%vbl}9!6(^iFc!&M>Ta+?I zI-n)F?C%LbvCCqiAFeM8U7=J~_I`V`2!C9{46(Nn&z6_`(#b3;xpQ`v!I_n=yT66M z@-dFL|Mi?d>IQ?B%bTW6{?{H%`<%eTn8D0o%+6fa`{1lk z`G-$$>TUl2`RpZnjQhZGR)O0UQ^Zy*XRKK~UH4;?BLjo*uByVcEHw{|q(P zqU+AI*5^ntOkO^xs4ITD;0aJWRAI&$?SrPdRZZU;!b911bC)ePN=dsmCF<=h8BVcl zUK-WX)1>+WniJML2=03$>|duNZ7z25TpG{rcEOo`)7My7Qb7hKui0i-5@Oc{Z>$ZhV)4QvYTxWgfbuP;{OY;K@ z)n$zXR2D^4Er^l&>Nj`YlIeV%%fz$TMfS=}KW}i5p-)?FR&$nn?isfYv(=K$xbdCN z-7nq7a8~O2W|uqt^>)u)OSP<1J4y-;CO025zPTxq*?W4Zw)2m_B9`*{VyzwF@xQ&K zOxI|q&%bM5DK7EUC+^F^vs{7=Ar%K*WQB8QonqL*vPAOo=Vu)Gi=JP)&+f3$lY53K zbIk#>iFv#q=GT1kWZm}Q%D0!7-2>Pa0z~iWPDz9Y68bp#cS0CzxD{T&sWOj{qWan`sG3=-ln?^N*6VC zH@6--z^#97%Es;gV?5TszZtBwe^0@LO(lQtAOELn{{Nj%X5M01DgWnH3qvMIDcnlW zi+E@E<&F8Li|+C#FZIYY_6`;BKW z&2_nW*0Ss5zxv~RTSfjH{j4LofALGphUDT#^}ytuWx`8CT$sCJ`scn=nflka@0AqS zs;*#r>yJB5UYKKT74N&^s;;GNgUVEK@4^_R|DWfZF1&H&^}NDvzr-C*n>S0iDKZJX zF`b&XtlmiA?$h=a>nsmRZ_$?4;ws4M)L`TM&|LFtfhhyS*;nEWHBTNIFm$nf=uK0I z(LNx*im~QZh?#lA`5BI1cl>zNo$K4TBX8}g2kKJ~uK!ms`L$2jH@zzgGqyyTEI9Fg z`uZDdw0b)y2*qaH+%!?9K8FA2=l^vI;xQkLU*252H9q-SeT9tjQl@{>dilM@ucLHg z9;#<4cTQaXEW~p`N5h|D;kM|8q|gqHpsiWqXC#g=FH>8;$$9D&E~OJ9&Bwe~7Hsln z)9Bk%xNFL^X;CjMV-8O{WShD0BiCHb;~^u1+1*Y9{cC*Z@=uWKz_mv0gMV|?CbvB~q^ULARcZ#RsxlKeu&9?@rGHGnIeb`5m3VcWKu@iPP-z zH35aKookkDvSh5W*zB_N;Wwd^^Zy+=Iqh^yT}KDQDxSI^$v?07zxXk_0^bt zuAb_rrZlH3Y)i`2ONWdd(((Nu~xo4cxicNTJbz;x-;v=k+D}Og~{-3h@_+0&7sikJO(q#A-1?Ma~ z@j`NTSjU0RGi&C0iwG+CSj{_;yJ-bar=5F2Qe=APj8D(w|9ukYK45-ZUA^j@!oK%M zV|AtK56m~upQokQB7L@)>uWPd(JIFc(g)m``o8^+FP;9mU0(F!)}z1qIYf>etKG%s zwDxndjN$1?y|Z;JI@kO>9)CUHeDVd|D+&^=jO!gHdL0(kHuIjYr~70!Yj*0xLrgm# z{<@r`H|g{0!*dUaDEyexJwIsq$}WeA9ZDq~pfT@7+J>DPd3U#kM}70(yQJ^7#OENn zdmk1jyG*=t`N_%2Pv1}W|N5li@%7J7o?7Hh;rbC@nw37ew_Ch^<&Pfe{@;_l^*nz% zP3yArylTl9B46{t@d~f#%+B_ICb8>w{9$={X=mjsz3WBy=6Z*(EI%qU_tJaLm>aLx z?LPO(wn6x&NW&EI(6*5K1`HD0&6PSM6on7Ee?7?aA+Y7e_4VB#Qt@9zZLH!}ZliCgYBcUAqCsq&Ri1eZRVa_SlDgZgjB)?YUI{Hks8G24%8FIDjE zYL#Mf-ciofb@q4J_Pcj;Zf^3PSNSej^7HJ6pWan-r#yS^{dASK|D?zLujhpXmTf<{ zxAKwB*Pt-d1t;FUJ$XHRNvX@lT*fDxTq558 zKCQn$WY4QNZ#={|{rU6flu!5?26=%qY7e&W|C{TTf1C5c;+yq*Qcq8N#o)%YSU5`H zjp@>5@8`CDc$uE&5f@i28d>r9?9EHta+4)ZHgx}a`SAObMgJw0?(W{|vtV`7?^ph! z8k6Fx9vo|&)}iETs3Eh&*=6I@-bo$bjN8}vC-QW2*?X`gN}qbt?IUD1ZMIo%P&e1b z<8o)sH5ote+Z)y1XSZ;EhF;knlih2$XI<6(^_4?+dCzM;XD{7tHy6IDw-VEezERb@ zbxFZRF87_b>#q03&+3|drcbkeL*n6}!tQzJIdhq1Q#a3I7D{fY&XT*sV7I0D=H~S9 zS6szO4hC;utzQ4FM%J|O%LbE=sjp)WPY;ibCD=Jcc1yTDfS{|0o?+D;!=W1Ydkb3 zB_=b}I=xnBo=|P3Jz?M8s7R&tj<)@N$DjV1`(~1;#Erl?Vm9wW#KTpp?;NVLTkm={ zaWB95Oc#ddx!dn9+fp?7>X{I>2EAh5*#-3n^e*~8lRTg`zjfDv8s{(5L+oNAo+Wzi% zj3qbYD(l~B|9rRm>#5we+0(^5YuoO+EV#Kc%ya=q!*#1!eu78Cn5)!Ed6H~r&JM6s zsTG?Uz24@OQg*r>e{Ex_>ZRn*VOK&YN^a5W+%ussWs=&_V;{rT#jI31wsKJjXmEPZ z$BSvvy(dco+c=uf_^mk~75aZqc;)F0-}R=i`=1}l6Hm<(7WE5l zJ~qp%^7MtKg!N6YS4!1eZ2!EAbKQ3PcmAhVZPa3N-QMx&+uYw;y1|Dn(qbkH_e(GM z@$imNs85pKw~ODMZoT}F7`Uk-!{xTA(lIHS^YQZ*9xxPq6cVI$A=xG6-xtTPxvFb- z^t0IpMa#;*t>kQeP_-rd&&t2|R$mN^_1qG3Ch? zM)o;z2W0=N8Mp2=I2!WIZOfF7_mb&z5*dFKbbtQz=}P(GJ85TTDDK?3Q|z)(%G-?O zV?8T3G1$+#80dJ=O!D*Y{ap2z&e{J@H~RBs@zWQJZ>ySm=hf8(<(7ze3CMJRO_PZC z(7!hO*_BqUcb@DEcI5QFD%$+d(82Kk;nRabr_bhlyAuY2qMo??@%&dW_>R9)_urt5l^QR22G$E(RpCIvBGpLwElE_WPc zM6Y&5*R(hD<{Cugw|$-IceS)~>mL8BUtO*BFRt9w#49Fe|NhmD|9_+Q{r^|(s`$aF zvz}wpsRajh9mF53K5N;*lXQTwl>2ScqB(y)SjwCzDk_@NGkfDhne8bjg+k9Kq#OE} z2(2rhF*}%1@>9kN+mO_T_bHX}>!aCEo;oEWdMKA=l2@~M{UiK;5uEjF8lPM z)THq4$vmwc0Zj?ZHJBWj4>a0D&A2^J!(pQA*C`w8@2*k_kg;4d^NxvD(V`GtyMrxjZM-yvXNk+7Wxp>#K zuNT&w5;^i&%uAr>%avbWU*|SH`ZtMLutB-Q&-2TS4<`$r8o7%w%CfSuehOypauM0Q zJLHYq;X8Mfx^$dg@B7uP8vvR@Sk5YYfGt5UetY1SjjRch4m<{GlXwg`CIvbEXWlUX z)cq9}Cw2JL=M*%(i7Hv2ni0@e&tcs!{jUDxtI|og4TRPRZ1kRXqiV+dmmzVpgJa!y zoo9Dher-+U;(PKt&TH_$cosTUQBJGb?7@K@PXA>EWU`ANO&8iIXIr&}Y4`lPUn`$( z_%Pw{Isrlc1L?($j&4@WH5sLT2TiTdxO@@4Cii8Afr&bw-HcA9^WOS6LJRs5F zQ|J(RbD@K#=&qt!FGPjAqpzi22M>GA+~{%jhsE6Mny;D4i@iOcdnq?;i2d&WuxiyO zo4hML?(yZ9mUw!tRTK+ti&)81XJ_p9te#tBf?>b^e7n0snr=*!es_yye*0{dY%9hv zKf@sE#4)x5``>IjE%IXZDTez#n^l-2ZTolIyDnro7;4#cpy0+*4o}@c@iS($ibxXtMqT)am7UuyVCaRvR_#F;Jn4bocsI2zrDGsuN$QhK4r&;dVwii zVwpzuIyw(-*kA5Q*=V?V@$)6#*I4VS-rkzH@@tBVz@(2c%RXDK%5v+MYAkzu>m;xF z9R-G3vq|D{6$=+fwagD;+dq%JL19nA3*lpJyQMxi#xmY~cXxN{g9D9X#$5Z?om~Ie zg7HtVzisGCweZx2`R88euQI9vxqYfPTR@NNsUzz>>kqDfe1uuV^LO%I>2DoMS0A`= zo?)$b5wV{czb56(8Hd7p&zV!EOw+95yVb3~$0GRJI^8M9<$q5#Im78T*(%VBbyM#2 z`~Nm-)g9y$Dg5*BxXiaRs-Is+etK=O^2wy1rTn2^Ekbv0OTKw6%*&2DHrAy1?4PKh zHyTO@YLDXYl|FTSm1bZ&PH3%sEcmei3y6+L`=RrA5PRe^L9DUhq*=@uWpq+ z=b!V!p&)dv*1zY+yPv*0{#?5^!aDHvDh3h8u(az^4N9y@Y1e0M@LiNQM`cylUJ=iDzV#B9!zJq_q@Stn zT4j-wymY<#)zG7fZ>MjF2@ehX*_eMW#xLc{8gU;%$-v+Pi^9@4PS1Gpx4%?MOsUn@&#KOnPj)Q# zda7QcutV#$w@~1kE{BhA;?D=v|C$unkTgL*Q0aJCamS+_exHnat4h{{_#aqR{r+Ci z&S$SC3-1)UzmL0?m3_~#-d9l~`X=eqJi<(BJ@4zCc+R{uD*n>*+bbuvuU=L4UV_=N zQ^GuNj;orkYzFg=dx;#3s)uge5m9)hb;7uUGVpKWl*Y*7YFm!aK!&z}~8 zu9sfv&W_A=UCFY%lCg{5caB~&Tj|8hes3pFdHt!OeBS4@1r;woB;E|#u{_8r=l(wCqVKjp zi=IwZKXuW)erxwvA*SDZCUeVunFH#1!#duD|4L?>1i!VEzp)^6A+zw66I!te(sP+a zo_%>E^J@3eUW4U!cW$0If3_CC z|IX};ZMYm|`gZNlPam(FPBAMN&@EAraGy0@o!8%cfro4T!$qQo?joz10+yUObS`K{ z_2D~9(#{sV5WKb5Wlv4J`JWYH*2&$h8jp_Gov+P5`S<(Zpjl>H-KI2GRPL22ets#m zi>onj>qgL6LTLTg+ZT%qzB~U^imkkJp?E@r_3t;E_m%{HO=o(;7<2*DdA^mmrK0}T zm2(qvCLh~bSO4qF%jAdC56y11YM3)4&!yr0zTbJO=f9rPUeB@TN{G37x#?N~LGA( zFUyfuu=_lgyM;PaH}VaNw}mF^XXc3iA1`uE`kYoz6$t(mI4 zKC_!b?zP|D=^45`%-l(&mvN$vvOtCdMWk zfA;S5S#;#m=5+tajY+Lc#}gl1WfBWqn-FWX?a!Z@t&ZQgJ_P@4k-Ym^OfP1|ockS5 z4wY^*Zen;~{C=aSnfr&ED-v9i`W`I*^zY5Nw_*p|7kz&Ar1+9q$Bx>MUYYmmm+X7G zt$B+-pD4$=Q^L>w@7oe`Yg=w~syAb55*z!9heD@YX7ZU`Pl*jOOl-?_^l5+X z`TRgzaF^Ih#}z>gCo(TDbLC++>6f)GJ5isx{O|NMmyI$;S@pkf-=AWA^J;kf+)oQ1 zTkZS%Et>m9_4m8wPxpSm7u?vJ!C*hr{NS@D%j| zr2|xYztkV-W!4pReY~-=V)}I1pvAlGEivyxmY$nrR1o?`<)v5Q;)Js2 zlR_uWotwGP*}!F2#&NSX76zm@ zy#HRBotwJu{p|dGfeGRtx^*N1INjIZ0Le z$=2)XCr?aletJXk;YLY4P0h)VL|HGXY|nGqesE(^(ZS2|F83?1&l5Vi;^?B_V53{? z)_fcLvR8F!B<(%->U{SS?~R+U-A-!`-IupmM#EZTt8sQ@jLO#;a<%8Wwd%L_MIJLe zE+cGs#qUqh3xUb%{?pp!s!k~RPkWQjTJZB``h3sHYQ8$l%d{1WnSN}H+duOZ!v)nt z+#6UQFqN3TFn#^#Se4%2O5P8eWp%&bZdc}WW|?0tZI%rsmfEF&6@KDRSZIzF&GH0`kTy~VKKg6k#w5uU*nQ*|De-csloC13K_9{==`8g+g zE;`PTwqH~9BZI4G;@zG8qJJ2V-K%__{WI}qf6>=ab?@bVXN7j=#_xa4BBJj9*XiDm zjLnx$o1A_*L*L>1UODz-twP6p&O}X`85kVsWMrHjnx*=?idm0cJ8DzVrdJWlB@wrh zlIj~wOG>%j`C9_N2`xBX9TT>}@zjj;Q+%fq1-Je@cV^AXe=H2UbN6T-aN%UCTYuAl z`RvU-du&p35^`R=xmS2x_SN#*-`_Ol7f2eXtx(c7uAjDOM+D=(+h;2l8Zngo-1zv@ zubY8+4DwRkQ3qG{UD|y&e+$RHxw8b1D;HeOa`3m`U4Q9&@=~X7Mj;A2w76GWGafCe zFktNZ9WLsT=bY{0`&LSd0lFMO@VN@hiMN+t)$LdGo5IDlm?5<^V#}@Vf!yK=H@&;r zHI{X^NH`c;uikdlkZ(c9j6W}%Uqvrjz30o!LK%_0Pah;&286{)u1%LQvf8q?<4L;P zvgW-q_fOZSPgs{VV{)n?oCZ_(+Q0Jyti;;fTYQTud`1*a8DQDT;?&c_mgONO#MU4ruWBp{&11yk0?9dwG@p{ZCVNIJgwvycWhZ{r7GDV@F)uKRk}= zox-*C!PM}A{@y8EXHCuA$~@}xe&@A5F*~!ZLDPJ}48GRnFRP^kp44t${9MIIPHR)y zlJ{q?i0#)DUAgIo&yxDO`c?O1x981e3UZvaX~s$(c79ngv5>8T&F7q3!UNZ2Mcn&Z zar~%uc;&EOtMI{r38=6rJGc<2)jbA$N@SQsi zN&nPaPj%m&Q>CY=8@`Iux9^?QvuNS%9ZJ_0c8lwW3I8g7T-Ex@u4Kw2`?FKJx>g)j z6je2S&HUL~w=Lg%rpVh{>XCDAFW)L&U%ftVZ_1;y$0KC^HAy(^*A#X6URJw5YL;1_ ziE_id%MX8eZYq0wOCfLZuNj zXIA*J&HWkYMb|I&XLV)oTq&Rt3O&c7zF12V{uXMJ~iQh@(Qj;2PE_N zd~B;v5a*w;|Jkf;CBBokj^+zy7@s+-*~EV$es9&*82e4Zx2!Hdx_4_yU@W(&<_ewo z42KU>G=o$A{`zW^nv;?!=ulXHlJVqQ;k*SMRZMLx4O+>U1&>ZVJnN+IVx@Q;27{GP z*=(&^f7S+1J5+Wt=x@NHmd%ns^(v!#j*@o0bKG#aC7KS+FZVcv540dZd zzo(KjD#SLjHdyrhLdV8I|#N=(dBK-KK&b?py{;&A{@{+gy*HR59=BD?1 zKKs4ASTmVbW107>o4MZ~O{uyT_->hdId^N^y33QFPN`C}-I#W^Uh3%jM{<(RcNSJK zdM@UDxyjXP%gL=TF8un%!d_s|kaTZm|7woo>s-G_otwaC^X~6&eh=_Mo%M}Mdv1Pw zeEhV!ew@H6-|pE_9=)?npL|d}HQhz(`L(SD77sJ>G+(ZU0qYP zrMXmA7^yU$df@(^Xa6^6%lh|wK8Lhi?2GR*`>?>VStm`TZqDuV$rdy910391Dt>)= zDc11*`A=b6v4+~u&(3Ns;%zvZ-!Ok&?Cw=tIW;$it&Q@Wt{0o~;=;nL+@!sW*fi%V z{g{<)TmCL)>&8vSUk%(ooc(t4L2vAC?gm3 z-mwv5yTq$uH1US3$WOVdHA~s~yzZ{?3B59vYi`VT&l8<1_yTM`PMSXDhLtdv-RC#! zww~b?=3i-6x4r187i-VYm-lLR&#B1~XYG4DF~qy%(3elO=A0W>8BCmV<>mUW<9U0( zhCNOA`sv7ICu^~)Juki=ZrA$vbjmY6t)K@_>u0X~*Hg`Jk^1Y0SY+eh->0w4_xPmR zd}_jrirBK}*O`9&I&S}Oq1pd}th0hzB1#zy>kZ5s6as@b^UU1lFK3+Av$R1c^tYE729OI}n znfv6{*6e!gyfqbS`n%t3+QR=}%9^<65gq+AyXWhgDBS2Yp2jDXl;=?R;>5~VOSg1u zNQqZu$gjL`viF-oWv9lW^-K@uU99i7l9_yVPUu-}b}C4_trjLaxivLY|w-K*F*2yw@wlI6v`m7Lg&u=2kWetCfDD-6VT(lhFMl5UFX{C z760~ZWuKE}cWLSRf{x$ce)}4grz(eX)LaR4*UZjS>Xmvh`{&XCUJe$8oubda9Tkt) z2w>e|wC(x)`nZ)RcqEOEd>1L%^3NbhvZ72Q<#BtRds*LB=1Qw;g0te>wVtg%wr(q5 z&a}wM3wB$&f>zpO7%r~wC_B6HpPk0s6qVn1R@7M9T33eocYU4r=f@u5d0eZWDT^rF zSX(6_AoH!uZOhvWvvZ~hzkKlM=#&F57kWt_0NU{*?x26*!S*Ok|eXpcJ{OT?4hKA9t{n@4Q=%{%7n^XF!e#wXVH8_iBn`TejWwY6dB|*O3`dP*% zH%Alw5H>TRg6f|-a{{ilz0=)x`lR!&`c(%yEAM_SnwvAjkkfJL<6W=Ub^q`Z5d4$! zO64_2-7c|G>&67O&M4VU=huYRZ4GEh*skGtva#r9bd1*5-K9Khx3D`*6p?E!Ok42d z{yj2>a46d^#pYdsylXc!Z*)5H&uj+K#MA7?qCO<3emooKoeOhn3Dfg+; zqT`LO@&Y+eu51+8$gxr4qs{8p7aUuc=CA)Dwy5GB28+&6SU|K3(FskzV4}~KHTU15jJ)1tLwXaA1`j&9pCEm_@LKk z;Vh0#n~iiCW%!azc#N297__saZ3O>hgtWQn%-_3Dy&=Kku=>~4xfdJxt9wPWulK2H zhxRsDemM4*ed1g0dRC6IB9TkYe4z{qXPDy_{*HJUCb~so|Mm8Byc$J3YUh6ENj>~p zU|6r`@j6kd>+I}n+eH*JPhWVh#O3S~WBy2N%?w9J8^{$@W^ zzcqT1E0lgN+|bOliy`i;vg#t2S2yNFr7ym|InwdU6|2t*^IdBho-&$!IQA@MzRVZf z<3%+N_ov6#t!&t{@uE6t1yt8QJ~^8k#;QslTFuk;wpgt&J*j-g|JL@E8k^3nSbD7V z_@&UG?S9Kt9iA@xcxE%BfmQw6Eth3>8)|4d>pXt;CDNf_zFqAV@xred{9|AO8dRy~yhoBY|9HqBL2dKKa``{-ZB@6lY}mu&s|WU>C*fCX32?QpQ4 zyvIMUY-0~IL!|o!22qns%T_K5aX5dGwfg&!cYru1LkEI^8>gI=a8V zcl>4T`&=)5?Cbvrzk0JiFY3)H5!7MbD4`|zpd|b9y;=J5^|8*m7JsuAG8_!a-e;3p z;S>}VH6ebf^C_)MO2;^s)Ftk@^|I=1!q))ZsE0GE+^)>x=!j07bG`WIN6Yn7xNh$7 zEPJmzv5j|=?ycht3qV70M@8=MEe}1CdXz~d^cPnGPlSCvQ{UFhvx_9Glj_erQ}gg* zony4fHNP%u(YvQ>HlGWsx%qv5R}V`|ruf@$I&WfjdHJfPRh_$`86B!}X5EAS$8YZi zYaRXV9UAYRqtoBRoZRHPHI}(SAlF-T>7f&)-yYkpv}^ls>#(Kd(h|>2FYa=MudbLq z@svTnYpm;HqhQINQ}rfpTFf>ccGzaZxg zrLV(O52ikwUL@O~wrFKyp5HTW7tz2;iOtr9k6cXkvyPh{*f3ekc})mga{ct_vLY=4 zFN>!naO4=OAKhJMt!cj1K5^5kMh1gTorY$MP6Q}8 zS(A(2@BO~&#J<=GT%G5|{#LOFsa$b0W51p|<g2^7zM6fK$esMU&(fheCa=WzPVvi= z=<0k_%Telbaoq!bjRg`aOPMM+fEJtizA$-Vd41mfLrfx_J(~@#8Ed8IP8xK#7f8~E(txRM}rG}Piy|lrClUDWrYPR-m zylCtdR|L7Sjb8xh)bQC zrW>tPGU*}1;oJLOE}N}2RrpWDah=!i1iQMb!uuj7zy7Wv1zLT$c9MdG)e&ZMz8mq7y+L|&3iDAH zP0=M`H#dNG**)z!a!Be4pVd9P@4sw+CI5aj)$sEUbMbc*pVjU@K3D0o*!F^bxjTO` z255O0ZWc@q{1$9dV#HN%^&^DB_oqO^dv=?hN%ZIRuzSt1C!Lxqt@oW!~ z-d}F{H$HklR1nTo>6N?oEM>mWMCnOg4T&bD?sKmn6FRE?cvt>?M(soIAqwiVJ*;DeVooqiQW_5nw z)pNgiQOK2*lNBv_H|gBD7XJTdug#A$=2?k;tkX~RS3i?by&x4P;xYNoF2VLIS1)8O zGWocpzFBA5g~tpQ-zEng-0lA5-IQek%Q%YNPKh!N0TC&J7^}yEPXglejZ|gOBXQVnk+^+rnslW8mav}Yx z>glu6%XeMSemU<%{exq@uAkm6V*2@I^U|Vkk$<0lNpx3DmQXt9n6vDOsDr@`uJIfa>P0Y*tGH3bc>mJX~%?;L@y*M~$R#4*UtNl(ZFD#G~ zc=NnP;@QTvUf10oFz4~<{ouE4m|qCn+EvYuTIN3eJVEbb>7=vQz0{%V_oLoq5^HM<&Om;^3h*>t9@Bcl8eQDiaHRBPl5F96zyI+H6By2J4l%8loXj zg6n7I&s$M>{@jjlu{&R{+kK@b@b0C>>@&_Y9N_=AZF%eLb234D{x_`cnI!JHWESc}x>6gXX&KK;VSxgts)YqdXjn3%+0kbNX}usw>Q{@VISJ1SQ2xYhkW z={(0=X!v74^LmIp3$4LU~j$PhY!LG#o7xQ4sK3AFSf+? z!I?`Qy_wdrWlNV#K2x@9$(di@vZhX06BUrm8L+4Fk0%;{;0Uym#~bguvRWvS+< zwxch1bx7z(Z}X`&51rCwzb|UhvCfa3Y$E?ZeygecIko=uk81rXd-i;DEG<8CytL~X zgUHRyd3G!6G8&V%%&upBV1DN0CI+{&kGB;cOg^;c^2)g>>F!o?Zr0(O>iCZ)pWkG9 zX+`3;r~59jAIrVqfA>Vn-Ru5eZ5R@sm3;og$Z#(#M5lCf_Uh+`ah_`wes7hyysU|L z+6mJ?mv+m~UoZCJxLmc)BO!(ZE4HE6=FWg>+74%=T~(simg{Hv2tm8 zslVJ(zS8=~g`ALM{qpj`*JqVZ5?*Q~;lFO_uLVU5Cg(iauDy7J^2F#2M~{wMsX=$< z_$TkW$Y9TNTzvK?%hgdKY=3(0q#FoE7ByrY?~}c1Y*F?OZQd!y?x6B%XZa&aGa6Rb5!`vqA5#Lw-+tlb75icX1uT&b-U4N7bZ1@{hdiF|di&~$!K zzw_MY?JwfZqbly)E)((gJMZT;@5O(+NS*vWmeFi{Z@4(bMeK z)`M#f3AN;90_gN6kMY!J7JO0iXXIRI7UaFpf!-C0RRTX4%=Z zpJvv1wwy{x|GB1g(!^KY&k8quz5R4jwy*-jgXGHEzbE|WsdCo7`*!N^$2x|x^mB2l zr?;D}pIA3H%B6nq^sUk5Cl8s<7PXkSe|IC(ahHyl9&b6e6hHS9ZCrX7vazy3Z`bBy z$6T0ilzR7WG=93&s42N`q4Kd?OW7LUTv-&TWx-aPx^2(e2{Ku_>b!kECqD?p*SuE0 zw7z(lMp!!Kp1bT*E#yF0x}k#lPxz__KPBt#f3f z()9EM7(Vge+^fC!;m^2L8lqObhG}OcxaBLpzq@OcaY3P5qjC#-P_(&G;KJ@x`#m=+ z?mq0VGlgsOxdj{7Tj?Q8j| z_@4i>vzzA$q;6&w({N#UbJ@~iL;B6A?kv8~|3FLW7({sww6&W2Juqvz^5lyll0A=~ zw4SPepuXRBUgiD%=clx%9@Kcu_P})#--g#=+N=TB{A$atcb%3`ZhBU+NO!41ge%Lr zH!AA#qLPw2))gLQZ*J;u?f(!rrS|DTXD*IxhZyOFxo=8j-*5-Ju6(fcRrNLDte6Sv zoK{K)j->WU9rs$G~ZesuAj z)vLuJH61TxZn}T2pLKL=!h9ctBkPtm@FbK?=gX8m7{58q*VXY$_WG4hw>O`&^8WXH zicadrx6iC*XiPoWUs%TdrookC&)T2gWBZ<|U0kOasKq=nc6WN$=cdpD`VS;zUobNW zUwM3=<;My^_->Ta6#?G&J--s91 zi<(VmUs`ifNK}JJU_iajo_`#aUBMSt&~ z{LJg?HqI$3dan{Q^?R_zS;bvqEoYyZUXKwjba zF0A|4vP-tB&7Cj%*-9~$2j2a!Klt5=T>Fy$fzpG|_lm`DGQ~5o-Qrl`wDjSGgpIxR zuNO>vwKzdnOv^dOJn6Hld6)b%$qd2zpQl&@{l!(LGA>yCdR_^yh&aoGRyCHZlMGkH z{@%}e>x^iM>RE+Z2kurrpR1mIeO+&r|3$kAMgl%A6FolcQeU?r=JB#cdoR5@a`581 z*uVRfz8>&Sz{HD{UuoN}C5k=08io!(w%yJP7EGFTv$aj@;iOBOw)AQ25*7R~NA&HT^=5G% zrKx2<)_)E$T4TR=56=k()9je@hQ8V2M-SdP(jB{L`e*j9k|lQAbz;=k&Uzl<_i%e_ zTEO>!+B^ThG1LpXo@ri`I@v7$o@Vg8nTp&0|CxGSQ(52NFN-W4`p{MM3)H zJ5Q7+8Xx6(a!tE`lgLEIigJ;+!INg4%H7}`ZF;xLp*QR2vI)AXFL)8^=l0s<)ADUM!vq^|NoGAh%5w6_j5i$( z;*J&8#gjqPos$>uifSl!(w~1mzO1;$s=TC5b^iJ1m&4@s4#+XE)PMXX8YruNSb|sW z!KT;0ulBL7a9R20jQFI9tXCu*4y^0jW7zX-*2D1Eh`-%YZde8|3 zY>Ih;e_UTnp9XD>&1Pu*RvWgwY~ihrnek^cK-1^ak_~o@9#X z^Rr$NY%PIkw@FG^Ma89ymh~KQ62fveGRetF>Zg2LH_tV4iFh;V?!4xT#zoW9xgFLp zY|@IbS@N&%eUMw4?n>tRy|vP;Ce4@ZN}0RTWB=}&zBtk ztz2nfX8(5b+Z8;syjONF?G2jU**9n2f6Knf!5Un~TjpAKKV7Lg|HReBeqpX#6EpJ! zYfAo#>%~ZXy?3Zc|Jmz;BCgg&#`&&yy<|(9`uG2Rn=g7)K`gYbVg*m#*Q?_3H49r< z&dlV}uwr>CRLbKk$#HC9YRdJfskaX7I^0publqarb`yh-Eq`AH?0&4`wXz}o&*$Um zr&z^f6wL3}Y@SrRd9}c|Vj-SY_H$B-EaXKG`AtsPxC=4yJMJ|$Ye zX3rib8Rz8zFHPh%Me`gA4;gn~QAt|<(UZmgO{S0e^mUW0{tC}yc`SMR)q9m|%q)(Z zyu@$Jx>Ucx;rW*}0X&c1>+k;lX0`d zwVX{BtFC`u{9ER;{T4=j!5aH>&%YaXJP_B7RXsb~#clcGovQ^kGA^!n_u8>9?l(h2 z{GLSz7S$zAnQ$fSsRe_T~jh!PmRh;jS@kwVRd}^k16ATU^ZCB^)2IYSGfP1rkU8vN*21 zv9n|<)Af+G($ZlU-u!!8e`nrn zxVuh0aF>@fZruMrwA`}(N1$LktA`Wo>hSe_^2@p3Ncai<`KIm@<{B+uzo(#csfM2H zra4`cHdQQTeQ%Wav*bhA?Aa!LPkVP~r`Suo z{US<1Y)ua@%KdvDJI(Iap3M=nc>hLbSax-(*#FMXoHaRjV*2hcXRkIbmX(ROm5Tv+dS9@$6X!>+bq>-|toXXa3pyKjew61FJ`S$0F%~5VLjb_ol6` zmx)N9%_pP3lxddx!|kU<-7m&0VGp>oDYd&tdTx5;4g>WSSJ(MQ>BQ*HGTorDZ$p7% zk$=?sT}#9H7aZrxJ(K6WxAb;g=FR=?Pk9Z?>%M#}zqGtuI`jHEPmR1QntyFT>q|@O z|4D7-yHo%F?=;hf$~Fa#z);=Xm5cW_^eL?1sVk8ve#~$GXTd$w-5hq(St}B(n%*C` zY_@2-+!p2jL4HSJ!j;NNPJd*ryHbyyI=iXjB-_tluT7iQeGT@H)BO8;xu5L`Uhq*m zt2SJGHN0vA**AoqQ37b?HTBQr5d;TA$y1J6ql?i2Kd9Ln;%KulvW>{aor* zEAY`2v>fw#N763;h7UVeF4+6%O<2+0r4MKFEDF?`@O+`w?zpmCZ;=@vnKc&unE3z4 z&QPO63)Sl#xa=;>OU+AM=w?0RO0KB`UzJ&j{l2oVM{3$XE?Cy^C~+27%bMCNQXHCh z7N=YaQZ#+Kb^9EPA4}$g##Lw8pKTQA<6WS>>1fr1s}D}RHf8;4sgyTa-9OAVbWi-B zndce>wsY(YK6YluKHZ27VQPL=;eC=9Jp1f+&HeJ~W>nPn`g6Q%?j3%;V;AF}XJ==x z<|x=D@_P1rNoHZ|Rt}97oor4)OiedK>pmQ0|Mai)ukt(5)DGL<{2r4Rir%@rVcXo| zePKua(!5v{W?b1EtHsmnQT9iNDKYQOjtBQ`Z=m?B3S+_t%Op zJt+8`_V(TU6(SB3)BLP2%ePv0DPKBw@t1+<{&H{Y{pP!UQsXv!GSl8Dv3{z@w3}Ko z&J4VLrAI8@NM8y0vj48-!%s{ZHxn32D${$eKFe8D{pCescK0cpj?2Q2{%Tx^sjlO` z?OWQrt$wX@{)47FNuQT})isfQBG&nB5^qYd*t285n@tU*-H%NweA@2AwJF5q^-gxB zJge1@#17_9yRN$>#O>HYU)SR+EpEkpK4kds=eg^jPWBu%Du3s-GJ1Po7sveKGJDJC zZx}UCC%9<$wVj%APBP0#{eoFfFOR9NU~9*eh6MH9DP5=QjXw8Hsw#E%TlYU{-Ih~Z zU&(Ki|2*kdD64M2@RcQAU460pXI4LUm0PYAa(+{z;??6y{27m0m8Ee z+<8~dM84cRx~9!i>g$hR{d45pTt=7xsD1MM{mkt?l5Okv(^JqdesRTUyQm)@_PSCS*QQc*%Jm18+y=(hvK`zJ25 zoS5erCEN6Vsh5WBy>^Fseg{L)f&sSz9jBL_an1qv`(aS&Y%$abbVA8$KlYb{(dQ!RUXp#s+go4#FO;IV1uvD*B zaV_V~X=kr|elK?O$|Ns0?~r?<*6K!=Udz}0Sh!ZndzZ+qU7p`-jrK?6PCNVZ`3$*# z^%nMPR`Og~kg?%(+CJxYKCQz?e|)I>U_F=h;mt+J)E=2nKj4oT!inU+bbJ`S80gu zdUR7SE7?rd%5{?I{QEXO*;RhW7x6nhmV6fbaNw7+q-j>wGAAjHf zAJ^+_HG9Vt(VPJ3wB*A_KzopGuVdY4_djobzgy~qnQD&(`@gQeT=}qQ^RdvY9Cm>h zU%QvB+SIq=<*WDuF`qyaBv(a?y+ah0UMk!;skigZ14YeSyW{I;$;;=ZcG!LvTVd#+ zedC7Oerx|v`}M!<8v0u zx^r`0P6jQxt~_G1UOj96oDu<>)Kem+mj0H?LKmk`nd)8W8Tn$W;(xn!Wq7ep+*Qvj zZKhGcBf;Agv~VSl)uHT=)Q+oSp|7t>z2uqYwdmkF*{zDV<{a7MBy}(EW6|vJO}k4b z=uGBG-BPUj`@7#~E-t|w3pReaoJjsT>n4_q&a8-_tN5=sdv77KGC6nN+9b4o9n4% zm3t?q)aJe3|J-vjTi9ZrwLFQ_^AZB(Ofn{@s?J!G{jEw)J(c4UuZ!q4&@$U2jxHM$ z*PmNh-+$xHzrlQJU30v80SYss_w7$BP!D^y>YW<$P#Tm)nQU!j- z6E#+^+_Jbc=4x4IT;k*k;x?Qid zc0QdJeZ|w|w;-o4&zd-__GPFo~@ zTi=|hr;Ph%t~>deNwogbNw1szmIwNiHyAFSX`Xi8?)RE5f#a(MCYA`iS;7;zWxLBJ z_9rX7K1AI9H;Id3?p#sNz>cpLad!JpI!Z1&_LF~=XWp+bFQZ$r{z?`Vk5G7{(wI{2G)0qYH;@*Oj)4gNi!SH14kwSco{|5`7- z^>=~M57Xy6bmLr3+&r`7vvF6bW&P~bWaYnSejjIJ_Y62TomV$GBP{j7{~KRE>CAYk zwJ|`lgyp{e>)Z3QSnTgI)@^C%mu=0ty)AcPct=B!SHN+b=c?e`-}5Kz;_B^Qi>oH~ zr9_vDdcT{H9MjlzdC8v(m*1cI>%T|$uJzU_2WxkqGITGUvbcK7Wprhl_wOFGs_x7)rO$n_zFt6efXDCnLRi&;xnGG(DN`lF(J*WA-ehLwH!j@6nDkTUZwpuXMb?%YO3Oh;3V^2JG~ET>139$oB;rhpShqK3cTW z=tJ%LkhY2!T7KXCS?>GYef;zJ{O~LLCmx=)w3Nkud*U|M{2ijg;i9kNt=M1P2yo^$ zGBZ+pKDWMn-kR9mX6wQ&S1Qby!k>96R=;;+OwOKD0>8cZPP`S4pRTQE5yyDHNq+n3 zPgiHB{9X38=w_w!(m=lyE}M06R-cwWs$CkiEn_3=f!&(U29=C`hv#KA1fMvRGd(L} zQ;O$QJu#0o(+%=dxGt4_=w&?qd3t(?l(;}?)rW)Zq87_m)~`7|W8bzS`>(rNXXksi z)IzpB^gW$gTKpu*N%@i3wl&?$LKaM8(AcIea(Dv6f+H5QW}6inzOMOX88ovY;m2~f zt=%rqtnBxnmO1g~(UuC$2{V@M`8sKm(ars<4our__pUR4>g8E|50u@@UaefdYaMG{ zfaD)3>*XAFS&lZxQ|ecq$#P`j@A@t~LCw8=cf%Q9U5&ep`)03M68)j!QNd=(*7)<2 z;*S?D%J~#m`}^(osoC*5&%L!c%7WSs=v98-7nE6b=Rm}|*xIt&eYQoXo!6h-o2)lM z@9pg4fBr`7+fe<^Tr_m4T58Addq14)BI{3ti3j~YvV5~{V(9eVLZLeUda-~nPAeOt z99eF51~D4c{kmIJ`RnEKsVgiTZk)V%Qsa-@>Cf}eoZl6C@9=HqQ<>}>mlfAOKQghj z*j{PrIi|E{4$QMUS{B$mUe-48%*M^u({Dd|x+Gx|->o%yTxzm?^Or0Nc6s+O`>{)A z-qNK@1qEwBo34Axr(WwV*HF0pm94Cv!9MoO>cxyTn*^@Mmd74Zo}_p5_lGMJO}1*^ zYZvxmP`NfOMBt2z-|UJUmHMpzjYgWf)*8KS7UCrqcW-Pmot^S#iTTs=@V*IqFcMz`0txIZ*KJJ6CXDI-F@=Fo^yq_r55opGOU{`sCm2i+h%T&<=S_j zx--=KJ~Poh=eK44Cg%&Qu12Sxob=TwsUm)5@}qx8e;qpdsnXnwRp!VqwNClIzi(a_ zKY2g@?Ih31YAZbotg<)A#q19(@~OI$vEkmw=Qmd+9FKY6cx2*9n>Rr%F0Q7ghkn?& zFdwYBmb34G?PuY#r;^)`p7vB+q?HkA|NTy}7ynJoCja`dhDDhv&;BeiI%0I*qV}3@ zQ$LI1S-*RFvQyIUDE){yd;8-58U5Se-x1&Hccg!x{}YM4V*&X!TOtbtOi%AvcKXgs zwZ~q|T7NB#hz@czuzol(Hv8n%<&$>06f%sbUg_|L}Ua?-mv&s7v(Y*{f^ZFfnZhLdW+r>^I9 zy~39B-UP@0iTU^Us?pB+Kl)4EzlRmt+Sk=~zPNnvY4#Gg-dUG4)F(yr7bw&-nb!TO zsC>P4yN=DflFqavkB^0lZql0`Q`D&|+azN0z;dp*{@Hf3ee55+@5b^DcQjxdzHyehzE#uugDDE)&kj4zRr(Q7zN0PPMJ znq|IH{-XDp`8z8g$1v7)*V#VeTk_LDr9P0K@qm6@U_#*jg2~f-%ANHy+*ho9kR_4r zt;NyC|L4fjzfYblwsMI{S1LPs{(tVWRVDJpM+-`Qf=(a(?Y*?_uGJ@}f6rGLyxUZ) zJ!kR1U;X+^{oeZQ{4qyyb)PmdM}yMkR&LidW#+d7>( zCllyW?_BQvP%hJSLHe26nP>DF66Pv(3D1jMa%swY`_iZ*s+NpLUAwQHZ06sqd|dvz z^SYhCo=nMB-Yweq@@V-Z-iacLKdMAzO<&1oa?d(r__0V&{o?n{^|sF2a&9U;pHtlD z`bGAg?X)*bP9M4>P`mx~E`^m}pG@|@rRCzFy8HFI-A|6zi^uouFcs5R`*_)}yQb}M z*?+&hDYxuqz6ja1EAU;+E-%Q&>t!ErXhu)H)IGP>Xrj4UZrZFlWhO@ssPpu4*yYVg z>$7EJWvP(cQMh1^{T~hP31{A12zzxiW!0eq|6fvbOy=F5Z(zBWabH)2eq1Kwk2~9= zZCOK%c5F>t7W%RN+?l!7*AM;mbx~AWsSr^p^1pKWQ`;Mm;mnzfKQ>(MF8**qQS$$f z+eSO`#VvnNshjAqY)#C&nSaWE9{n)?Qi>?7}M8#)$fn8h#amrIa#Qy6YwEpqM?!5 zV#ePx-K?uz zH?v(^bJ|j0>qEi+zu&n(1su z?4wgHo7A;M<=QL4cWu0QZ&!Wp`YmtnD_@=dzN&8dm(N?aKRbQ-XSPUb`}3FBD8&eD;>iHx4^TmSU9| z|E_WgmND4RedfP=Q4;S5!xpo^~|Zb`?{TFroxOV;;c;feJ##gU3_~>UANx9 z}1^i&INYQmmK$1VK(4+es<+V&%-$yvEu71-b^+Ze-|j@ z6Z>57$_|yHnB_`-m(E|m`?vm8Y>$}2LCwBJ*M7g-?az3B`MfHxzn;ErJN=X=X7_&G zohSIGgl~dFz2@zWDNDCxWNqEjC#K-Z-XNcQx4A4eY>m?7YwP3pPs!i2$aZm_h%8fi zieqx7C-cFATLP{1|95$~TTD@Wz+x`>Yjec9=vuLcO)CqQKe=*#+lS8Ue|N;n)x47Z zdHJpQ$|TDWm3NhI-WUCUuQz2`Z}Rt|`v4S6q&_ySL%;UzZ0yRIW0s}$MrGTj%#TW1S!|^ryf4>Y z4%?B@x+NzqHvG<|^YzDkrEBt=1e1^Vh4$;M5~~0Ad4B4l7EZC+rzv)~{brlZ3tds< z(y_n#y;gRDc8g$5gZ}4djay%*{{Lr`c|pPZ)vX&v!UsVEr=fPtSf zlH1mkO$2(3T*40O?0o;oqx#IFNt?Q^oP5BzZ{O{w?EGArT9>ZgxcRSsL)B!T-@nDZ zymaN#E!9&wa;Kl^ySrzz)2@sI4UCz4H!H2pV;7NJ^H()>Q?`F6)4?2ptgZQr?_B&* zE^*6WR3qrFkFmbrpLnZ~yx$Y!_zr(gFXzpR6t{by_IKsg(l=uI_b!)AOKf@mcFNS1 z7q^wZ=#8CYcH6yr$@>|O2D4Qc{j2wgRLq>ZO00L^;Zn=oZL^=2cF%nD;&`pmd+iO? z3t~=jnXTHNy;y0Eb>w1({U`ixnZ}yDW%;n$OV`ILeceP4<7}zjD_^%Tu_#~v@>@9i z$pei;zR8JZ z^~E_1AM%VWez|pWOrI`03A{bOC-+0W`kYylZZ7P-vTkl*rt+KTGhD2vP1lOt%so%5 z;ZES3Z#FKwos@rZcg|nq_txnwr`vO(-zCePly|S;zLfDn>+rnNLT!_-WyL@L{eHiC zN~M+e;lPsQxIOb~zeOILaJ;YVsN3!@4wWmoE$bPh%fhzq$&cfPLZ}s2V`CFN-FW7uZS1`3>#ygWner@jamhs-7+a|UqGyJ%7S}xRm zn|6dJ`@??~EEo5dEZxMdXRq=!%e^kZ^*7@TpRSpbrlEymg2`o19Y6lv^Fno5w(Bn8 zfIW$ixZF=_9_uwc&^PUvlB1}(;6w#+ZT<7zAB{g+$ZgDAY*4QhE8DLzuXWm!W9f$r zKi?@nKehhPWBF-%zU@1Y<$kRC`}KNg*4;gtyxDIX%j$GuH^=c!krlD#j$`wT-h5lr zMMCwjM6^<|u)5!rWxlgleSG?Uu2t!zZoOR^*TPR+KW}~U=>lh!(;l2!&0L$-++JbB zTC!z(nHu9Xt_!PmUK(dd)pun+e#s+y&|maG|MOYB_Y<2P9>%W`k>x7ZJmnK^sx4!F z_m$S0U#6N0GdeW%LDS=V%1(CLscfv-zhsNgxBATDvb#g}uR9vc=Ou%RWO4?+0q<2KgEF z$;&35I%Yh34aYulEoasTYa@)CvNT-k4+QW3v*uaRQ+?&RIaj4FE(?93X*FA1XYw=O z*SEFaT*wC&oXnsgGY{bLFhkHxUsB6aL-RQ)e@Ci=KA5e&&?G#b4Uj?q@4JGheDCw;)2aK4#UN zoQ%c2-M8k*EZjU}rLN8o$+ykRx9zxjVVnIs|5Hjkw9;bZs$Qxt++-Qm99DKzH2j8M zTr)fWHjhYG>o}u&|AdB;rF|t*=g-X7*m&p7#AYE*yI(IBho&9d^Uv|3qQSJ=%d;m;pYUPhToEO` zy^rlTRegQ6rF_TPvuC$vNI73rl#=PLEecXPm?5thwcU0rGpsN2YCIC#Uj02U+CcDq zLWWiMvTX)>5|h(Y@%azxhwr4FowZbN zecs&@)yl6A)f{{xyH?To=BiNb+dtLx_4U8FDV{NJu-dG!-z*U@0ykr=Jf``o z)^GW@>G$4cMlY^ZRo-;8)CrmxbbbxP-dVv?=RcmkfAPcJcL>jEW(WR1BV`|bKsc~p0)#8sb*iT`eI-R&~#S*iDzkjA?D^P5ax{owUkraEg8 z^9k_50_zyN_#XGlB+r;F?8^Q(`IXa|iZgHHCNVXwEP5MQzs)P}S7pkP@SCc}9?eRr zmk(Y08U5eZzvy+k_cG1Di>4~Rxx}S&YRSekN{a9!{jQ#8H_}ucj_tK#7aO5$&8#iX`2xR#1sM_Bl@$av%nRnT9n9lH} zd||w}vfF*jl-X{sdIvrRO<5EusihGiI_Hu?@au+zW81aX30pPAZ^>vt%HZ}%$cIN!CTGMr1n?IX+C?| zDT;T>eq>BK6!_9F_eCT0rV}ATyAw z>WtQt4lR|=M+-v&&LoDXxNxmsut1@H?Pfg}CQsShu8xZ}onI7QzG7s&e@aHhF8#Qi zdpDl=NJ>j4GP{T_R;`~>`zvz!wayRI*5B4(uU%yHhJukLpL0k;WT4w zI#GXSMzod4O()YsHH~s_XCW z@@~8LyL>9wrs@fo9F=dpZg%;?ncy0-qx$pPqE8!Rm*lU%w$1wghQ7u7^pdqs7)m-F7B~?da`ZXCdts<;;&;-Iwc%$?Uph z+mt{3XvM#u&qY-Wo@_{)#!(kgJL^QD{ruft*YY$b?bMdm6qT)8v9Lkv06)Wx6&DsU zRV4q4QhBhT{zXb@p8m~cRtsI$on8N4s6!)i>$;@JH&(36o#q_O^p>f@y8KB z$JW38{Mdr!LkHXJpPvFsN*K<+u4H0A=&^srltbRhI@hQ0of2qRbgA`zB*UKBMl9xD zrTYBBB^`~-?5j>a-*B?;$fTfzk4poZGkWLQ+(>A!a`eEH_koK$VU!U~)NuE7U z9UJ^_ZB9QQHZdVN`BK~S-*30yud0*p@H-f8@_Lf-eI8k>D^A-#)I3nB5r{1^Z{^WD zsQ35GXUD9$y_1&dPl)2@?ytYH?)8Id|NiXSzw(ipiSNVdw_HD5o_pRd{hUmwOy0EF zK8GGZso?sxFCls2naHb)iuN*fGrVKi`R7CVHT}=lnKmmH6`9?CBJFzoykev`C36-%Vh7@=GQ3BUt_;SEPiwIWIOe%7d-B7$X1N?Jp8gnevzflt+cv? zMc1WIe-~Dr&fLRzL?_F~;LnG0H3{Cn_L7^6ejNE*wY~G{C8pmxq5DmCGtGJH`a5LF z$@NTg6!My`yr0&3dP(SKnbQv$yQ~(S*s(!5t$umU!_2iy|MyD-CccY0sT226YqpAk$-cU&>7pOLzOl9rz3|{5 zyL^ZUhpupx=u}_O*g31knJ-51*4G{;%sORI{7oxz-`38k<^wWsZ*5&2)BGU$wW;Q{ z>{U9i>Q~e|?R7DCy?C?SVV2BXnO2V6pD}S84vNoB`SPUm!DaIuLQ>JYM7|oAUt1r4 zf7^=t+IxF`^U1JeuRh;-+)Yb+imZ*w?k;a9{-(KaCY`S|Uvqpp&&vin%?n>L{fh<9t8MidG3*O?mvL!H=dGGP2}7q; zM^26l20gz{$Nvj@YO>C-z95lVti&+SM5~!?_r?>+uGM;4%@ynaDLq;oz*lfT=ic_} zEzU>2R4?{3`cuZU{LHlTbuUzcGyWWNpUo=Iuz8R63>F2MvdZw~3UVT{W{z=Oy_1=m zI^BBT{Q7@;H{S=XRcm*9ax9eSDiN5}Aj0a*yTT(_?uS8Bh^S*%1Vf;UOTCDrqeyFe zLrFm3#B@eycbyl)BAWi1P5x0rAucTQ95P=1-_G~`$$aal_hwe7KNI`*b6*Y1jOu4+ zW)-JjyP5uW>*CA2W}}^Td`op$&IroaYYKt zUHlnf{M5Yr@z2kZNw2xjiJxLyv?Jqbp<+9OC(}%a%EUcW4EG#Ovj**dG;zYDZ8O&HN)>&j(vL``1U=YdCQVr zUw^{MdcKoOO3?_1mw8J5vD|(yeZu7>?jIhigzPM|-LE}Q z%2Sd__h-(tU3)EETAUZ^3zY5%e|T?&^t^tKZwUu8ms!fya~|`mxMtgHdQLz>rX()? zT)N<&rtZ#`HYJhED;_@m)UL5Snk8?^!EA~9^Y6b|pp|NSS~c0Fpv~d(?R%TDkLv6nae)*IsB4zUZ*I0;bTYo)zv)RvQe1BCIbt*x8TE)Jcs{eJpQ_ifZIhUu|EPI_*=+B)scaxT1 z@L0rLIqBBPV|~TZZ=KmV54M-Ry`@@qzW!r=)mPpN=96;PTDVyFH67K;dKxkRI&ZJR zrdn6a*c&=epT?U#X`imlQ53}dae?F7g6*>=8XsBr-X3`B&>`{ZySN0t#NH^=s;j=l0HHl{Uw;JdtP>g_jPIP7=n$-?UyPeKn)F#2I? zSz^bs^YMy*r7zd@@!I|qkNZ-QA9MFZlpt@J_o;;ArH;ZqYW;d3wrmPZ^9hB|KaYFH{@s|D70;aP{}A+nI+R@oL{^f4^!?<$}4k<(-SN zLzV}vdSx|@?fIdD$LoH~)C%vp{ASXX99!oJ3AT$mj`Arj>kwIdvc01|s5{T3MADRR z+7hOVJKg4{cWO+IJEA1yG2ec--i<`(XH_fq>{;VeyXQ*5*$YmqXY1^n@b7Fy^dyVF zQ;p8dv2+%YHtw_gQFn5gIOnnd2aR`Eea&WRtoi+RyRDw|{PsUObCiD+u?x0v{p1K@ z*A-s2c9&7aOn*Q5?rg1jTZ6+F71zJ3F`K)4f+~~Oj_-LMl1zK!YSi8Q?s{Hc?k|2` zz@_HuQNs`W96s%{@(_Em^Xc=CJO}v2j%b|J{n=B|hIxUEY3fuJz>|g^ydd z*Dv^$D)Peg*4N6dOPJ!r)+{sF`Bm=2ja!GlMqJdmWg1rh+i+4y!o;Tk%^q?>{4v7Y zwuR}xSX#LHz_qZLy)6^;rt3^H{3f@^>*?0$|3(k}`!$*z9?d&!$NfFtu4conWAB6N z^}=rkb?0pneYR`~li<5kQ?-Tnq$*FfnQ?WU=6?AL_0!oNKYjYXJmjxs$SRkV7+akWh2Jbr71)pqyY`~73$UqmVOa$n&Kzp;_QkT+z} z;%Pr>CcWu~_RDL9BR$oS`7 z;X?v@>;L~#>NFPGKC$rppPQv0zkNE?&9+-^;hjCITxD->g{sK-S8o&M-S^zB|8#-# zsRGLlzyDv1RX&v6qTjLMUb%{$-NaPeg*KYJ$HI0j-dmP%qet$%f5^exTi=)S*IF}` za};^9^Ll=GTd{4{RHFyBNniLj)^jIJNKlbkt!?t^>w68(X>m*UpV@VPUH0ZX{re|z zy>R}2>z8e))?(kT)s}x^`va`Q_N`dacEUX8;D%3A_qB*>hb^%xeU*_@s1x7eEx%#W z(!xxSZF7&!zI(Rw|Gec|zOQbU>8V>8tzzw874mudQtPDh=C@iiCn(7J6y*AOX|b@@ zYibB^d)sVqmCRuF-caDLVI;ja;Jo^tJq_KvemL!T;oYnAc!>xRJF?Qo2(a0I<-V^sp-@&>8@(lC)7@C-1Tj%tnh*Rc5Bi?e^t** zsP&8TUTJ*(@KMP}>ucLrROIw5TO~C~#^Cve-ZyRKYd$GvY+v$dR`$Au^K7ey!af;w z$*(-BxPZ~s$) zLDHz5WBTgnw{9dcK7a4}(@Sp(tJ9iaD$=Sqll%^yW!b6LB)n54^+Ub5{7*}paJN1g zPf1D1WxI;zuslxeoqpp;obJny*3mPhLJatumN4pNuoXP z&Z?B|G^-3%|CDyoBJGTX=9#W`u`SkpQ77M)C;q{i{{z@??$rY?fp(&{}rxYH{0@+WbnoIdT*EW~`qHRrhR zOrusIVPW3AI?lF_I>k?XdwaWe`O-}{H@;5#^68K=Hj7wB2 z!%tH+a>w@x{5tXfCcfKnr{`VNQCENQo=MM_dQTTjamxQ~8Kd;$gml3BgkQn`Zfh+& zXmf8xO_4%!J(uYG6oHxo?#)y4nRlk`w&%XYoqb+d-H&4)r?h>6v2j#_rC7Mf2Ai2C z^3$J|q<%Gc(eWYJ{J(itx$_={dbWzn_U^wf zdgi>UipqtF`EJ=ZI{yE@+e}?IU*gg^0fQL(&+|=I6>MGZCR@*cY1Y~}QSH(RT&3Js z#kEyLJ0>+LB)zHHq_9JN&$nCIi!@rSirUs%?udIZBOuS?jdQSg+kti5+oYHyeI7q; zJ-YE%V}IS`Nt2xRHE=vzJSqNO%_-?{ShT$AoN^PtWs5$4$oBQ2m3E6c>{7I5^zSZz z&-d(ujJ5d=E)~J5_x#4{UsY2J7CqTKv+$urWMavO2M5#aAN?x4anYvY!vc=B1vmQE z9Me!$c+h`9fHADpXwUkCyS$ou*%n_p`>0&NA=UD3)y?)5g=@90Y;*LDzy7%X$A9g) ziZb>y&vDL~6rx~cnt5qSM{S3q6wzK+ODl3#fUS8%a z%%8jY>)WsEF1~mw>USfdaDiIw0XCMx`}O;3x1^ufJG-=*L0tD$X7tM|G69ofe;hj> zxohIKw{||7x<4LhuUE0qT)A;VC6Bz_oLQ#X z&kS>PUPW!m5WFNPm;5PriKl zGGXR{19}0TtYHx+4z<5Cn)9czwsz)}|M^dN7{wK_`eC{L-ER;sJGxzcv}+8+^8vGXsU z){YUgcMB|f;r-EvY36pPrrBm4%dKyjE;A}r%{cr_{$+RmcUBYATPoKVM?U_2@gDR3 zi#M)MyL@9|tj5YZ-do#V8{DnB{MDo`O>3%N=$yQ)BHhwGPuYIuJy(2XTr@9SXwIZd zt{HRk_k29IVeaL7Vr%RF?V8I{vN-0K!M)896^Fi+27G_*B3T(RLH5VyJ&7qnyIgjf zxa{{+W_GEv?yM`#_~e|W*?i}3+3pQqCnhB*%QS1QJn`c*&(_Mq&>Jq^wVqlZSdVs# z@TW%l9D4GHclY6xD>?Th{5Mr=YERdTJGHEccOCD`Y$L7dcb?Cz4~~kORbP~CXO`CwJ(YMH{- zM%t+y*P0aHcx>3df`h|ooA#A$DKl0C1zprwC^S_!^v?RurlOPc=kDr2V^O<&CLzb8hY3a3(+A-#Sn1`$Kysw{rrEG)~Rz4tdyS zr5LTt7y0yf`P=KIZ6Ct)Ea$A-%D5xc!2w(&bqK%${{${_VfmXPasA8Tra*d@-R!) z-@E5m`qiXXy_i>a<;SjyS>K+imppmlSylSwZflCT;PYPZdCT5^PYZa;mAc~P*NJW5CV^Y$2^NX9sBeEU8 z^VZ)sNNrA&a_rf%#aU{9@>XM)_AuTTTho69Ed8|f<(*dVFV9zQo-%i`cYNJ<;l1Ck zEib8_EuHac#l0;RKh>%#|4A{;jQxJh!|LaC%U6bPN~NxCXXbr>y)mi#=!I{#nO9!y zn&ous!x3-qmya#`1B3QTZK*k2wkmL|jq3dg8XfOWov*K7FtOQ+Gxx*J&yic+On&?2 zTvxu$x`QVanN%cHiVilhDn74$yZVbR$A*jVxI1jU;@BV6zC9xI*zT-iLpo;@{|W9% zp0j`amaqR4_~Mj;@YN}yFFx#EGb#I>&%)9xqMl8?d5wDxdU>|`9BF=VfBq@Ig{8aK zpSdV9?fpHQLjnzZ_SDxj*-4~sD=zwU)Z4_$%InXOV=loZXJ0i*G%M`Bdv5;uMSJ4= zgI=z-Nwv|ozwJF)?2X{fClfRF@s~4r$W?uP^_0;v{Q9qYixkl#>ho(ZF)uFAoWCdY zvYKFINVU{qb*cNeWv#ab=j0gnXHWijz^lC@YwGF1^|vR#+;!{fijb2L^{Zkx3#ndP z;SpVD;qt#C+4gMRzq(%)hxr_vE{2_}p0g@M!`V5$qWxaQPsU&0`(J*!P~5%pCvWGM zYflcAd^l0)IKgqo{7RM9DD(C1>ixD;DZp_?!^U_YGNqq|pd7c}s*>J+s)AQnsD*;8~W#t_TZAH$9q{4W5u(KU#kankYTCNx z#o>BR%OlNuZ*$Grck7$HV^6*PzwiUo)2GNxpFG*SSIShZIQh|$&U(4$oGMN4y-zi~ zF5dO!?T?R-k3P~1I<3xbqq(Dbf^&ms!HK&|b~_$JTj@%(3o}*dS}64kbOapp&xOdfsMrbS3w-zm{PT zE0Dert@GgiqenKYRUX~HGO<2k!h?6RvoCKHUjFh=tIn#RjXa{geTypp{|TB9rE>mm zWwfx>gu0$ZT`m_Vh2Fo^{(9TZQf{8#7rWV#8$;IKGIe5Ny1RSR!(9_DyvqIfXv&m> zdr=ds-KgJd z>D*E+Qt;}^$~aFai~P@rrN8g}es6Q`uY>nEqI^nI9p11VaF5WRe1F^I+ZQHY%yZbD zclU_W`x_e<&&t>~PllDY{*0LDhOXmPY3KiEzfP30ds$=> zDC^rLV!Pt*?W1}3UZ0(9-mOzrdg%J5)YC@{-rUifRwQ4_l(^)@q55B$^F6#m&9*wX ztgo&PZ(qhz-}@o@wE5*JuCHrk^KSo_p7`L$50}7i(fQ)+>iY{GHYx1Sm|(C&F_q)X zqUY!4dTSKhWnEd}u=~+@W2SYA2UKpDuK4M4(1qdFC1G{H3v&#w2j9G;+GHtmxOlay z=mqCv$3&JU9o^C=lCOW?@$>Yh-A5J{l(Kzr6S?apQ#cGk;_* z-*-hb=F6|vP*sn(PN8}Cy>%oE_$SP?D}R?G%6TlF+vBCc!`w3$I1b;-Io|*BklWd{ zX)aCC+w-)){Hf}kpVxb~@ACnDG5d~Zhdmiumn3AL=oRD;XPLp$etPbsLbetLlT9BS zk8q3IbKrz<{wy;{%w$~;0|?$as9M8&6WZ99Xnzv$JFn(AG4+DYp|Hk;;( zfQ3!Vq)%Av`}Zq5T6c*7|F5sF-B+$$IqP$4(nr>>3LF3SzpdMv!~B_fonFVX*_!iZ zUf32t`mAu!#nnUg`SLYua=iTV7QTM-=!gZ=+u*n2-1)US0SU8PUAy9Lesef~vVML# z%N>UX&kfQVpDmr(7zNtCzP`@Q)G1%#q&!>FzEpeeqB8TVVoxj{&RXr9cBYE?W0;=h zold1MYd6@>wy&={Au4QOthu4LSHnC;dJ6A%R!)D9noYYUEnQlQuR6F$Y}_g*E9<-5 zKikkad2*Whxv<~HMI8-KliuF?^>p&ud57!YJr4X;_W$2sr%8(QC-30~FUD*C03{RX%m1h|Ld0*9rW8tETn^K7PGA@b%|^gwPww)c}}l8KW(}p7iOk@`jpgEe>a!Csi&t&}>p4An|y_oEOgiLXAN$mU>S&T=VV45sNFezqD$#wHqH= zo)BU;f5$OjS%SlWlaK9H&AAEg3{M>090P3GZ`Uj2Zfa6kq+ou{PEN%0=*!LGE7Mko zvj(zP25c|5!Svlt?wzg>pubj<|$LAJo zU^-De+bmb-j^TIy*7|4So^cxNYjQMLd3c{rP;}0bpR$FKC;iNZi~w~Zzu9KJmo8n( zxV~;~$eM^A_Pj7zr5yIVDee1CsV_F@xpnVc%Jo@?_jpPw?fkNKf5pe=5{zmGZP+Ck zr3DItLGwXVX7#!(;eEiL1=+xQ7V8eKtFP+rvJ~>qo=mYhCLL3k#E0N8g-N z&^F<(^i+ShFEUFz-zr7=Eld-!jo(qQFd`*soqp^tm*QUq7g(hyKA18^&*}Y~i4z@- z)6Q&Q(e;+pIe3)an5m7!fb-eOgB%tu4Z@SSJQRhZ{6#Nbuqu7kq8s>S>tEZN9|c+0 z*33LUw^3w~Yqyx<+Weypy>k>7)aU#9`9$c&fwxvg~~+#fEL>~s;_?(7ykbvqlscFxOH+t0-AtBvz#KY6VDe(iF_UG)ma z7v8?RxA*qOhiWP+7gmL?HgS3N<>h6is&&)SEzAV$t=bm11ujatzAo0apOv*TQIgZF zsKX(2hnnxK&R2~$7$Y~Obk4Yc!a88L(S|7p`#q1!C$jh`98kHz;!(q){D6(=o{DIN zrjnOg>M4;|S5{8maQ~9_PA=~?*Vab2>ju`;|9IHWYy9l6;v&xT(Jzdy3fijAReW;C zq^QGzMRuZFsUes7vn^ALC0s8|GrnV*HYj9&EdG{v!iUqT*U>sy5Z~QtbID^>SJd^i5tDPUoJSy{TJ1X z%DPkk!})dQ%8#}l-qtE6TTY3+J6Y)3<@-(H4YY|>^~#~=7EAg{il?Lx7ogngY&>AO3TiyvK60dTPiBjD+HG36kI*vccM@Bwx-#&%Z1D;5@&N)n@mZZXR*lIG*`g? zeqH?pwe#_>x5{ibZ|_(>zb@)bWnK@1@&h|2pQgLV=bS&m!P3I;X2S(gbN!;fionsw z$NPi5ytG8O&bSeL}+{KpfYZE!n#>&nLI=t(8 zK(p1=m3MouUtH>KS@Pva{34N0^6KY*SELYCi7k$;&|vM@^JdBsZ(8r)qDh6<)`r8erSHTB-lf} zT=61j^slFg)0=56%+EqPTx^!0E`rh>}pqBP| zyCQYom&Mv||NRWFN#=%3$QE7!NT zxASKTr9a_e^bZf|JY2T_GVjHrHzF;s?=ZMs@LL_d;OXT1bN(=tzP~Z2&i2TOGTUz-5$Bur6$qC;L zpBo!7F)AjAyyZ?`)R6%?PNP*$_bYM7Z#>yx!!RUgSQ zbE0#@j&CoEgy-&`;Cj#$ zzhB^J8-01kO8JW)gVQq)b~C@ceAfO_@cKFj{(E=(=G8oS|K-n_kY5FN&8li+;bp03Cp?Y&u(9XB)Fy_>59+m_`h6~SV_~{btHiZNtxJKaVq)9w zcfvtUoxHeO|%^Q{ltC#6UZ}W-im)_;Cyw~D`^Vb~#emX35 z6KoDBI^CTR!Lj#;zx~_Ai(J=QyL@?DwfVw-y?+(PUw3|1+f|@B+s(Ibe$}0MK6CRj zJx-gyS+M(keTL`%iqFDPUmosX@%-&clgt$VS=&pL&(=IQb~^Io#Kqt%=}&BS?e!J% zl`iJryT44^ch>G(%?9iLJYqksVqs?&ctUZ`m2USVhx_%L1Pd4#)eiDCoQgGK@>67B zZ}|H9dUi+B4h!cB zp9?m{Y^s`f(2}J!@9x}` zn_hcUVbOur&Mv>FUBCGH@$XBg&etzkU;f9(`1n2d`nh`@R-31^6J z|Fk2aY8y&3t~v-joO8!UD|C~^-pRXW2Hi4WR@>g!#bO>YU$^e5qt%zw^RFb|cy02s zQ?A7O^DdKwFG{B@swO$C`kwwr(d1a#?1}XM|_dnTA2nX2Wd zD}8m@_pn;+e=bgUR$hMoVp_G@O{3TzkAl2Bxvly2tF>npM(ed$C$cDUFsdCCEHVBW zq$Jr( zp60^yeA>n2Kb$phri3^w+gSU%Y~$SZIeAmO!yYGZ3D|Tx%}+OVLN|Zs%AQxJ_OloL zpE95KiXszdPHyy-<&DW=7x{npb*x(`D)+gdYlBtuU&)fgoL99koXbGHV;0&zyQgYO=lO;2X|am|i!QvqvN*W7s=n%!`rx0LTi^{y_amfE_SD>q(XDgK$Fz2f6Wl*SHgW98>(7uWCqw@T6c-<%jByVRta zS1vROXrJ5|JBdr+sF12x#))rRGB2-4Jlyu^mcu3a$|r*Ldi5tap0Ai3qHw7FC~L>w zTT;BtMVBR=m>%SAWI4&Rj{UoM{Vvs1jxW!2;`T(ics;d=+*Q)K%-eWZLjAFay&ryc zeVAn%@8u;f_!P8>@Miyq!X5_Y1ZF0mrd)=JyAxRMI2<^^eC=GZcIoCaZ><0h#;SzU zNApy=K6oA#v)hwX{k{I3uF~p-cN)$=<#>{M+H7x|?w>DTN_;gF)Yo$dCV0e~<=t6P zEu~YoM0I9#P@BU#@pS^-V!A?|?e2Xtf)n%VWt3`q5AtrxHfdYvEHC>1Y1{NI`Z7QM zOEzkAGO8U6zjXImHg7gd&$gX+cdT$w744X&B($c?|G*7Lk)_p495P+?jSW8%vL%k} zD0+HINl;)@Z$Z}n|NpEV=S%mrsH+65i`uI7L|mxqyYM@q1AIpfA5{0GI7j+0eP&*| zkeln1iM**a=eFom3CHK82<5PM-C20Voya2Ar7LkxK!{zr zy(8cd=l6dP4mNM8|6gZS^<~A5<2#;DuzB$BQC#`EJCVVjye#(m`qLLJvT5Buqd(&m z%gzM1^0f)Qs|q`qiVyN&q!Qjn!{lQEC3BVC`%2!<3G-i4KP}|JXNCP$o#h%$80DTl|wy7T{qKP&_JT?UArP zZtse?y;UL0{pN1C^Np>pZ2CkAMv?m2le#`WKHlw-W-w{)gDs6Geopqcd-=*_Y7pCv zhbMnC1Zllz?$EE}Kf=nmX~E0O@r!Rnq~GGExf48=-e*5Oy#(e@4 z-5q<5%gZZ@u?5{@u6d%=$+;oebcN?L9sY zoZlN5nYkvvHqAjr-qBT%<(s#d6w;JXB~9$C*6 z^ZPZ%OP4GWQR7PL@d)_*?9_uPQx59c+}e`q{PJacJ@4O{Z>{>xHJSJ68*S>2WtnDj zqt)vBVU8W`pqBH7XU2w1ioFez;Hj7V`~|$X{3dKnnCx1=&e=bxvCg3<;G^DzBl`8n zlD|j_JpB3jx$uT#P3&jm!`ZBli)O@o@WpOanwpf<#dd4z4;ydEoW_aPi7bcs7}X9Y zmY=RT&{N;Ao1sPS`}@0iXYxWPiMy^-&x>&|DSYJ?(^04|IjED$ z!BY88M_C|}!+^7I&F_=phdFk%HEcOBX%g2`UC9pJ7_Bc_dlfTzj5@ePwOUd|ZkRUw zbcqvexT0)lH}Be-$feaXOL#84?UVS}a%^hjQXZR~5{z#344?#Cd4R)!X`AALDIprF z%wA`o%(Jb|`10bSNy&?V+viTp##VATyfQ3)=Hun-D=Jof;fYteNMxm-*n@=dHtqbn z52D6QX#xpCIc%zSZGs6bOim0-SeCH%KILb0JSiWh*l_gPuF}^p-rU^$=G1}B&4LLm zI-oIEp_m#2<$93KJq*fV%0WfpfQp6CJEeGLhyYZ)L6v0&OLS8=e;SJfqg#Vu0)*;d zVVS|=ekk@yHdFvgZD?VboZwyX@gU4xh%plz7$!gP*wJ0XizHspVZby^KtRPpS$Xk- zl#`P}wydyK)zIy2K(i}>CB{WTUA+yFW~xFd@KY(t}MJ zi)BPbT@?=N^cFnS`=E*J+XR*vM+I~9a1RA8F0O)oMVy?R%UL<6z5Vd;F!Q3ti^ZQm zeY(>~!HyFpE;{C-rmYTUHn)6&gA@0X9QoKVqjok;P7 Date: Sat, 20 Aug 2016 18:19:03 +0200 Subject: [PATCH 031/727] Rename file following upstream folder rename. --- keyboards/{ergodox_ez => ergodox}/keymaps/bepo/Makefile | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename keyboards/{ergodox_ez => ergodox}/keymaps/bepo/Makefile (100%) diff --git a/keyboards/ergodox_ez/keymaps/bepo/Makefile b/keyboards/ergodox/keymaps/bepo/Makefile similarity index 100% rename from keyboards/ergodox_ez/keymaps/bepo/Makefile rename to keyboards/ergodox/keymaps/bepo/Makefile From cac69cb58029bf246b22038f034205afbedbc695 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Wed, 24 Aug 2016 23:41:14 -0500 Subject: [PATCH 032/727] Several key placement fixes. * Switched Tab and Super on the default layout * Moved Shift on Extend to pinky * Moved Caps Lock to upper right corner * Moved gaming toggle to avoid blocking Escape --- .../atreus-replica-base-colemakdh.png | Bin 0 -> 76319 bytes .../replicaJunction/atreus-replica-base.png | Bin 76849 -> 0 bytes .../replicaJunction/atreus-replica-extend.png | Bin 91313 -> 91555 bytes .../atreus-replica-function.png | Bin 91768 -> 92516 bytes .../replicaJunction/atreus-replica-game.png | Bin 0 -> 72509 bytes .../replicaJunction/atreus-replica-num.png | Bin 73126 -> 73171 bytes .../atreus/keymaps/replicaJunction/keymap.c | 12 +++++------ .../atreus/keymaps/replicaJunction/readme.md | 20 +++++++++++++----- 8 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 keyboards/atreus/keymaps/replicaJunction/atreus-replica-base-colemakdh.png delete mode 100644 keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png create mode 100644 keyboards/atreus/keymaps/replicaJunction/atreus-replica-game.png diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base-colemakdh.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base-colemakdh.png new file mode 100644 index 0000000000000000000000000000000000000000..4640f9f529970fed031da9e838cfbc95a172bdf2 GIT binary patch literal 76319 zcmeAS@N?(olHy`uVBq!ia0y~yU^>Xaz-Yn2#=yX^>xiBO1A_vCr;B4qMckXY>^DM> zZvEGOkHwYMWPw75P>4?FSE{JS}p)oIf=zy6sv?|HSxeaqczY^%>&XYYL-`?kd_ z?aYji^0HPXJ9ci}8u~x~e|bJ58f-ijwZOTZZ_(DRUw1pV@$B@!>tg-SDErzP(-wjG z+w$+nmAt(bTJq+`#!cog_3uO;929s2wK1PO4)-P~RNe%b!S`sRB~=rH2J zWq&(GA#^%E;ez``YJk<*#)gphD$?b$k`vsBnub_YaSP=$cpm=Iv$Og9LBw zV71}Mdn|n5{yr4HI7Dx0U_Y4qapmvoZ(<*iV8&yy4+=Ya{Tb?iqq;WtB9k1;_M^++ zy}yYP@C$mQ4>Uh8vt#`8wi?A%TU@y-1n!8<-?cv-#dnQnc_6?2VEM59J&MmRi0M9X z90HzbY|{B~zW!fu&bFIrtaI{44fA=YZaMILe!X5??bpzQ^H;Cmx9dj9 zW#6as>tK;J-K)T6?#Bi;m`E_e_Yq>|M%+?`|(}(s$QSG|2xC^>-_Ee zne!R*8;hbD61XoMX;HQ1`Ty_tqxbdy zch4|R?<+atBF%8fBI)0s?e)LSIVb$wE)Pp57j+jH6)?m&=+_H947C$gxV<$yeB;Ms z(%rpgw=^y_-miMCTli|_@-EHbWj}J_RJwoiFU@4+Z@Ro?nSIzYu>&`mn%?jKUw3hH z`uP*j51sUzZRV>JxhW;oi;unUFq_2V13xbZYbnjXQhy=(K=gu>x(SPo1UwGJm%YDN zD|%z=&&Q(LVI9+^iT%91(3$<>&f@fo>tc6Xo&I~g{!hEbs}+lnTy&Se`y}k^_HZ-q z3W1ny>W|hR&uWza`@-EQsNhCo`_tc3tz1g;H8&}Uw|+`W zQn&6lf&V{_+b>~0_K>No@PI{9ornWpms^34|H_VkHh8{twp!E6ogwJyx;avQVGOIQOW2| zFq_J_VD$>#hFB)9=)9dvzwFdHAn^3thr=m%u0S)#&Klk&`y^(!*C85$(h0%f}R zExzT~zK;I%{d!Ds?~YfiRv)>r(D~@L+j-hQ53jI05bVv>W0^N=O4o6@Y9Fz-9%=J) z-b|vl8~^;=%c_;d*pUDJ-rl2?&*z4hv%8dk?Dm?e$gAZXl~(od=X2FwCQZ}Y1>!yz zWgK>7IqU0%@H*~bUt*!Z=Yx~}$;e0SuN(_H<^3*sSARIjepJ8yr}s>`WP#d{sGXr# zPuhOFk$m)8biS^p;ID`+853{Rd_J3+(%A9ARXkSZhtBtIIyG%tzmku+X*@$`rL-^D(NWh9IJc$;6ZUHA8OeE0nSf1a0?_xY<> zG~8c!PSID(St@N=$IKU|t!I8M(BP|=E%DEsW4<kUZ0(c!Wb}ZRmqc*{% zW%|4FRhk{%+vjba{`~9g`+tu8{iU!Y!!v|pC-?5k#o9!a_MQQ zz{^IjpDf}z*mp}tzW&d~8>QD{mmXH{D)@L*ynFL`yJ)5wrTwn@EK3ysKd=Ai-jonr z%arSLX=bR;|5iVP|DYC7;~AZV$=xc_ZReE*g04BT@y_q?H$QH^|EKTAlj`%IRJ{x= znZ&v8!{Y5V*YqcO7}#(7+NSaSwEljb#trgMH#y8^J^1F$1)UJ)dn;ZQ$E|Z0`J2VY zE2R>@X@Pj?ORFN2ODTGDV-Bd;r)JvnY*-$AXMNq*)l$h1N(yG|e!FeADv3BT8dV4!{dTdsnya12w znJW*k+Oxzm?YeW2U0%oRMnbdGnRcfmQQ2!lxARSuP3BeZnE1`ZTU~PA)_VdjYu7R) zTnk-vNR72`f$+gudl>6(nO!mGaXB)3;pwc|%m?>ylq{WTkl1u1eSYl|8AYk(mt`J@edOUE0JxsG5{!Db2n<)Q%;scv`P4?~E z9X>}K2-E2K&%9)%Q=-y32Jt4wtQT8_Z|7|GRdjo}i-T*%O~VyA8qeQszhB228y;nK zvdURt?~Vyuh1YFeIk_iS-FKFV#M6K8%J*x(%#URF)7B&U;i-l+n*n=>AlH9C>$h9B z=qql2ywy_R4BsrSD+{`!QcD+gTwdlonW1aC=kp7P?zcE|d!(s{Ok)gC5z4wJuCI4i zr9w~B5kg( zVD|kzQ;CyBz+86UbQZ7Mm;P1UW6C|ue`2joW%@@#beWO8aVGMVu^Mmv#EJ8EezcofE?NvvvrW6@Dq( z)nIR0IOSDSmxQ?M$_^%x!|x{E*N&8x@|d#p>xSO{$BG-A+mx3+nj!o0r22dvYssmZ zJB~b@$erZ;v>n_^bqL|!@K4|ZXSSRRTmM!@Q>j?l=MUTE#oq7v+!u0LGs)rPg68F( zw;3G%z4WhN_4u4yr_ZF!;MS~d)tdq(IRY4pLQkh(HPP(M&0*M|@hkd9TjJ~9s3Ur} zb2Zp_U+A*&u6Uk(JLlugrlUy@`mT4aT9=y3#o{cUFsI~_XX*LkmzS0rP4#oR_(n|Z znxA;XACS#nAa7_YJ(m0Z{k?p*+=4|%D!0g~t;$~3{b0vLH>2`TyNp<_do;=i{!>tG zQ#q&8`~HX7!pw+^@`pi<-Q_~DR#(j|AO2n*`?)ODblzT%n&KGB@UKoa1p*P0=Mk+4y8M*6sV1#o1Q5Q1c!~P@BgkJ6-IvuCr`-6d-wNN51p{^$0h$ zD8@e~=dN;0b(||dVfUWY){M-|sr7YV--lgXsa&yq?~4s}^%s{GyI=hEE@orGL!pgT z>+=?6Pmfag^W4+;$O^+?BlaJeH_q6&&1O2Nx1eK5kGG@4^}4G+o%f_vO^lrJiRq#j z!vw#T3bN}=suu=p+`YGgUuL=c7Lnyie6kvke!ScL-frh+HkR}AY@_E?y;@lmzP7>e zz_htq*I7Q=pUl|u)xcq{lKCa=nB;)nDf13Cv2v%hmdtGTm29d`XE#N_Y(~?u4HpssYozSy%)zky; z7q2iVdU9gcX~rLuE~-?Yu9~VgRk8PXAJd1&^VE5@4tGt}cJ=0Vv^|iwIwN*tkWTb9 zC99GQeXA|``c~!d6s&k<6#m~`c{$wm%d?10DLW%Gn_oXF1;s2oV0hfaYh^%d#V)T_twWnnPCQV$jnQ?-CNH=4ccx4B zuiN`AO7idCx7%*JOxKG|`9ANo-fkbO!;zcQIltY>iUKHksu3P1MGvr?ZsFiJ~ z({MgLmiu$>haAtt%oU>S;`>`fBqt_>FK(BZF8q73Su01);|+<2m-Ne6m*w33D)=X1 zufpM#BK=A8Z652lFxEsjFIlsKNB4B}Q7^@mlI_9Ezb!gk^;h-6+dDhw-4aNf_5J_H zWf9x+bJHfj-y&TSr>gqk77s@sm&jo?hbi}0Z}E|u!WE<;U-QAS*NgQPdzF3BfgF(q z9N|0-+z(hC;>z!q8rd=@&VRh{_6n726N*ndhxI%^bnafs5wGxx9;Pw|x8z+- zw}KkC$C9gO{GQfc50HAXNGwF(Fzt*)(TyDqun>t95!%kX#Eq>zoEPR zj?%rF&%T8RS;bGB&=6r-!MMjKL(7b-rCDuJcMxN2L&>hnI0v1;W53_;kN0}&!q{aY zyF#G){od_=ED$)=!u??Lw@r1*&v*X+Hup$5|J_~h1a%{CDREy7NcEU}YQnLY2#dF} zl{4nq?z$rL?pgIb@ypNFNAI+n4vN5#OG1fzpUGNyD<`kXMWI8_UdI6*B zI@Y|>8DeR1*QLJOxWqo_njOM_^y29#E%kR_f1L-7-h`ZH3S44%y2f3Pw{!(Rzs(1S zSe0=0A8RJ>|9$s;O4yfYv-8Dje}9{LcHx5Wj1Bw$eO)hJ^gHp=jDWxej(^@WvtN(B zzkI&Fn0DA2k-6p)3ZashmKZHbyT?8E$=NIJh8hR*dh>Y&8y!1xW{gE#ntaT2MWw z^jc(Th{aw{q5F!>-LnL2Vj4cYUcX=O-;d+=r%Y!z_y-1F2 zSzeHv;C;D0>m>L8Z5?KlHEb30{z^;>Px*}snM8lN|ax=-0!n>I7|<@&Rr@s4{;ECwGI zKA&42cUFJ3kcNT+v-!<6ZxuY4)5|9Nnsu^#U_7+_Ue#(IF2N&;r#;IypAcmG;BQmW zVe!0WZkAr*!$nI!-M2Nrx8Q^~zwLHk#iXx-;UVjaV`eiPENIhEDQ0wS5Z(RiFu(mC zJ{D#tQ2N(&4R$eIyZXG9=+a&$*Hs0}{pah=b(d`Bj zX?2*jlJ|vbih_?6_bKU;1IE^mTdU;2-5bVy#%80jc3bqyw@1a{}&U92a>!_mfeDf`BQAp7n8%l7G3 zt-ThS#r=A57nfiz6U$nUF4sCcp=b zP>u-N>JafdI-{WEtBS;euAGI30wY=v@k{zJ*@p6p2|VF^6}9{YPvJENt0hj^Ek$7^ z4hLC3T>Pfa@csP9`>R=hXoq+Gl&@91cC#q?=YQ|%+d5VT-xqam`y!gXZfDf0&+8^O z>;6gV6ezyGKDgt@)y4YV>HqHerCF^uy2ZkAFLU|aC5t;AsTgo@34TbEEnO2=fzCP0@FPO+~V|aCsbFBGFr4ap9bDlMCKenLN%tSi&_@qVrb@sWp zOm2qFWS!(;$lAn^%&@6TLOgIuD`VY(5mTh;-q9Y#*iapU>z4j8%rw7J?-cCkSjw!hIX=Hyt6={AY_R$`G@veQd z^Hpwb&sXn$vTkqP9*Z9f)*elp{cN$1=+U$-(Qy{J(;`-v=gt-45=@V`4NRK0s>h76 zN!n9<<*DFR;l5WpY~+d}c6DTDxGmt2?|ES!m{%LJ^Z~OgznO2^LG~I0F?)-|7p`u( zkzSKU9E>xa8a8#wG4@0{{G5C=M0Z8y8Q*$7P>or|{UU^oVSUy8tIwwP>il}c5Nm9Z z{L3on{{_h$Mu{ly$p=-kq+Gr~{+)VXXSwHhWe=xX?rplvq8HdctmJNd_x*$}dxvh@ z_w_SfMK> zsD^LFA13=(_gUgTF#egH%$9ldary$+FR!n!-^AFg(t1D5*1yW%wSc4ugCdr$-lnt*@@Y2>+_d#?Vl~jvOSb@<|^i+ zE2JiB?!UfL_S`Z-&i>i0@4ns6U+-NhB)MRLpl!x3iG80=X>W3ve15aSCeFwHUmxF^ zB4~I`Q&i_%!71CNN?YCE@Ly@ud9cXngWtr9oQsVfOcuTHbnmlvUj6rm3DeKM1C2kv zdcUhOzUHIr&sgK)BWe==v~wq}z7vx1>B-5`iP5Yd9(y!Q%k^@b$gua>mVKtvd&53l zO4Uv3edv6u%zCTf>w3TGa}t6TllEVpKQ(BxNPbwNi7m&ngofEUr;{F~&h5}MEL^n0 z(P1OkDS^bhO#uoUOMh(M+VpIO&Mb|oEA|U3COy2Oe2gI_`gFGcN{!dEAFN-kBjz#t z)Pe>*hG`4UHfVhR@NUsW>C_MFF5BH(W_H+cQ3-Ev(YihM$&3Fmez<7AuIl;)gNFRF zUSm-u4X4=_g|lwt-Bw(x)ffHYna{u*y&e4u6 zUEp!QqGG+H-`rRC@0Q=U&9|3*UE@*`U-fdSRi~WlZ{aJf{jPkfLLr`yc*F!84Ew@d zXMQ;v<~qT4sZw9)-}Ku}tR3%!RyuPTYiltdjbw;5Th*JjL0KI%CuS8T_b13LpnR*= z8rC2C?Ek*>-xR&tGKNb~#N+**&*yk=o1Wg8$NYmu#n1Ao2@TmvivRlCd|tKV-@ffETxy{b zzWhz>yizJt<<4Y9@BLp9DL+Mf5l4W^qxR1R?wgrh9pnP9>~JuA|NQqMZv7L%vt<7* zc;++9#52o(w(PuuX&>$syyD3aT;h2)>}KFQ*Fr8!wJBWx&c+0BZ}eMkaC_>jxJTpt+jJH$z##KzN4i``B@0ZbDbVJ8M@VIZgT`j|_ zj!jCH;m-~xu~wJ{&)veb^si~|&a;aw#I%p`S-(-pvubxFC@+5&74}R=E!WEyp*9XKyl+cm9_z>da&8(+mxb-D$t{dW zb>7UqW_Wl`T)?eK9Ok+^JF^VTL4)3fpH8ZGCmwEFJ1IiSJa5jMHWwAkvj?9!eeBJh z!X>6|?8ThgTCJ#E`0wZQ<&~cQBJMHGjA&pAG+U6u?#r--D>(F+3TV9A+&O@yYewZ= zy;)P^Utii#lYE?``+@w<>sF8E2xl={m-Hroxl_@6%x~Vu?a%!yz1M7YE5EqVIXC=} z)>i+#ECHWg-21|f-}OB|J6rwefmp$#J?9b8u(R|-c`~1e_?ylzKY@Br+>dvay^JXS>mL8dT=RV8t<2?9A6_kta}NG>`pz2I zT7c#U#^)@Yn>rL0+*o6yX}c)m+0ExnT`}fUFQgr5cIq(F4~i*|P-Ka@Z&1Y-(ro>H zPjF22+pVj2)YS0HeSFw1AIG5{6}p^V^qIik^<9UxKU+UsuUpL>ppko7{`s2=6HnR1 zbXj?9n5b*?ciFy!daw81WU!n4X4UomE{s2xIUV^lE$rjV=iRB#cNq1zUcNVRdV9z$ zyS#nRD-Co1?RvD_{%__?{rI@(;O2zcMlPELUOhgQGd0z$jq&Iz??(#BV(O`!?1B?k zzpw-ids;l|P!20?Qhvn$oWIYo;c^el)2}hPnYOzg7}otbEdQ)j^PkN7UhC}25tg)kIQiUaBHWv!qyV-%<^aj9MDGMYy>^>CualZ`_jvR(tJ!qVecOT6OS_jyv*!d2FnO zD`v`6y;!(OT4st|ms=aZeB2ACXRqp9F2)70?>Vz~gMH(62Oe&h+<7dioP0KoQ;c{s z+yf@%xNc8LS+%0`{UygTO&0;pwzO$3uIlHXOR;@e{_kOqVa9=3rqe@OznwfieS6pW z`!h7J#cg&!yS08>!bXW5kGCdWTN7D1%ktvRSz;`QS08CKO%|6`%6IXu|F(JlRhutq zY+b9)eqFcwU6jY~S1a1b4*gfjl`SD7w

%nXN~;9=zXI%3t`? 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%0AZWBNG!66;6aQ*7^C_J)OH>WvBj(`)9ZMZ{y~0 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 Ib4q9e05yZNdH?_b literal 0 HcmV?d00001 diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-base.png deleted file mode 100644 index c8efae964eab3acf2be582d8a10eec7dfa2f004d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76849 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
%nXN~;9=zXI%3t`? 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

;AmUJ?{IYQ?MZjaFW6PM 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/KXd+h^3~ao6`9w5 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 diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-extend.png index 61b5f647e34dd9608fa5883b3488a3dac2be4645..08c2e6140cb1594e342bf796c6dcf6fddac6f90c 100644 GIT binary patch literal 91555 zcmeAS@N?(olHy`uVBq!ia0y~yU^>Xaz-Yn2#=yX^>xiBO1A_vCr;B4qMckWM&XCZn zzwe&mSg}ANi_hYr&I5)HXFlGvnVFNP%{m+QE!*Ieyp$kaB27Vecvk%RDWnFzLsQoxBQ*${hf#R-M@MNo}WQhXJ_a6 z-8**Fq!>u_{MV_UCO82NuGk`2P*~V_FhSz(BG>N!!E6tY$WNLysfID8u&k_Y`EvD` z*jVki3QrqPbDThf67CB6`usCz&eYJ*crgDj6EkzLh(L_Phu81k=_#uzE17pJ5UI@$+ZsPsY=Xr_daFg2R9*d|k{$g@}1vMog&isy34lOZfVq z(-uz^L^FG4LM0!%pF@swobV|qol|O=Cdr5d8?)pXIh$7hE&=Tw2ok<5BO{!pFxR{WrQD@bh_epM#r&+kuVB z4hh~1PX9J&)USVDey_RG-!J!JzgnW=hg^|{TjtmFrOw=ozot-iZuGNyF-23H@F7cdvVMC&GXngv)IR|fUPTyGlJ#UUxsn?y3nYjuA z&w6Lvum18vk-?~by006^UI(`Wzc@6s3s`or?EQ0&XMK^s>V)3U+71r4#W*r9GViM-GaZRUg!9b<}I)%YUBZG+tem|XPb&lzU(1)sPpA02? zYn<&qef~6IetN^^ZsQo6I}e{cS#rDVv2w6M&5r_`9}k*CZB`Xk^ocQYHp%9?J^47J z_rQ@(Vb^63_Wgc$Id}5x+1+p6DUc?>(NUn?7ATu|tdGUbZhRT5aMp{~xJnVI?F(8=cIulk zC9x_PC!d*r*3@(53c2SqWR~_ggmyHnUCE=gdv?4>uEGV?2fTTrJmLK17P}2@zfKCh z!Lzfnqw5}*zWvro{@1peoOy39i8)t}X_~_w(!jMJk1| zJ$ByOc1qxqS_ngITE*#G+j9Q0+kJiYYS+x$r5!qb+Svt9pL@$NayEI(82xPQ>R{-8 zbg%Y%Y|WpK$5-7oKJ4xH-q-wY%H+dA86w{ng=lbz>M%`&r0E4)1QqrsJ~=V*#_sa< z8XDH35vwCY+cpJAdR5Q4bw0QIm-sx>S{JjMJ2qOpyBZ!pH7Ii%*OoWOS8;d<_x&kdiV;X8(pUoR(rg=u{Cmq%Z|#b6}x=q{hho+UWg-nTUt!a3W=ry zo+*!No=y#4qOzRXe+A1yJ{!xWwp*5ZPfxnHr!uLsr}w72tM>Lyub%Wt7&6`6RVqA% z5tQMMI z_iLqYS@L!}5oZBc^_k}*_mzB*T>U~tyG^0@+x+9}Vs{&)oDk6bpSE36Gy1p?%XHm3 zzV9#Z?X6Z;Qeyi1>#K7>zyu4sS?&Q}9WI`H>U!E|2~(eTv!C8^*G`jEAFl^HRc`F9 zF5m20C~D|`2M^dB#P^c#rt(pQ5WL zpJ9x%t>x=xx9?T;o_3;oukxIRS;-R=ZZN7Z-O}!Iib4O*%gf8fZ?|sr(~G^fqvi1l ztDPZj52Uwli``cvS^N8&Xk@5+&YBhXb`&mVI2iS{Q-A-TAf5EEV^8hfd$!uBNjAO` zVqDk3+P9P4_i%Hl^EuD+Et9*Aca`xJ-w1dj&2wX4vGJbQzh3oye7oSEho7I`_2lht z>XC-5hTCe)>^#z%xIb~XsBKz#OsD+c{@<(u)6Q;G3dnUdxc_Eb-rXn@=@RbXnsc(* zU2E)T9XQ}nI5G2W%T4Bk64T$`++maNsXo0Z;ZKps>qMq%tE0LxI|4*`?p0JAesh2S z{;!U!8g!?A?y)*{%(v+Q*9@MW-ja=40*q-*d*AgqTsUi6qOc=)wcm#iVfV9p%ujiF zAHV-uOzF=&#}(JtB)xgOQsCj+c=zuzQFrRMRJ0XNy>#ttnAJ&Fo7b5EFBE%_YxeEHbhm->`njwN*U2*MQ~C-Nv%g+Kcz@^Kb1rrzm%P z<&_efo#vhebG27LE#1m=u%`IoreBX{_D}s`V^wa*`dn{m1B2!5#f=QdYPf?!#HaKW zx&~_Hu!_u#Rh3xQ*s?f+fA(f?HIDbUwrXcx2?&>*UQzV+Pvido|D^x@`?qWFhKi5( z>;F&vWLeg?|4p3Rf>o{!=jGK(+|~sLAF(*MrF;5CZdNz>IHuj4$w*fD^6Vnl@TbL}6dYxEs9*+!LBu_Xy7 zm3}+PS)cEC?EUT1JCWH&lMCxukG@iwz1T=#gH*Jg@P}#JHe8T7aNp$le}R`*7aR)v z*HxXEQTxwAN$Ot1G1I*lS1j9p^>UrAy7gs{x=UFK^8yjpD=7fn*tlBB_ zMw6z!e$#PE;FfT=VRGBO>*291P7L-H9}+T!v%ank%hOO+P)?9x6yx^yiCE6<_3NpK zOUY|ZnR`L{vBxG&UzYGf`mx{zr41Rk58p0JI$eJH!-MKzR{ihSB{yFze)5-zWwT^+ zO0~<~IZj7@HoI>qdlP-gvak3156{VJjoNchZGPw>`#dRBa>hkn&8Y{&9&cg!aK3Ig z+y1}bX0I(v-6WqKCy{q!qukp+e=po~DO_|ZQ}1=hC+-9d4TnBOc@gQ4MWv0iIlJF% zpZiB^?XlvmOb1!IzJJYZov`iyT^@^vmOCp?oH^xqeL^48pJ&e`C(NGR&is+{#Cd&( zyg0d-Idj)DKXz)+SyOs8q-oRnPs>7PXm=@#Dj6AF(i2L$_Tq`wx5Lk_NN<_KrT5u1 z_m+rp+8Kd_8R8|I)6V*6IZrvJcXM62yztz~{j#E>tx;RA6gf;;8@(lC;@$j?r?zoB z?LlprPn`{xtsQ5kWWTs%=rbcQy^n@YCY$4}y>L?>|3F+v337yw}=h zk@oeRHnn>$*4_}<&C}+^6}^4EdFK2z8ZHLKp6VC;7PBqBefax<&C}wz<5GX-Fl#mI zvSsr<2-eDdx`NY{;l9{!E$*p~H|-tsbLM*Q()6aDiFn~oH+ zKc1Lwpx__U^6c>0tD@)5`7x>N-nEM(A;+)spv=;yKS{2erfF3^#3MS?jxU0eSCb}_m=A9O@(i7nJ#R9bK>kABbMVHe#NOz11*cr zJl%MbBcz>U!ma62cOsUH`uG(b7n5xuJGhvAlGg-s6*x@f$|du7rIolQ)Aylpj%6K;BWuMFV&_`=P3lO^M(pq6yMzLuEudj@v@ zek5O&;1Icd>5@y}9A%T>Yln6At&ZHhEKV!^V^YkH0!NJ!1F?Slb=%ld+ z?KPCoy|sn${lxzNnrDMwBbP56t1-X;5n~XhiGZYC%~ zFizuHvHtgiX8u+G&g*DNuaxV%Gh?p0e1tdq#8U!&Hrb#ckg;bvW&Czo{*`AQI{y}# z7JlF0WZ>TSihpvN!q-QsEM@Onx;@nkvi>VB{O54tc-hM%nt!YwJAX8P%w$#VmY9B~ z?Bd>Qb~9O1>W&9HD671^@ng*ik9}PyI%en8Wjt{VcHa5^vGS=q+f^I#=loH4vGf%C zYd4Gee_|inMF*t@@Lh<~V&1%0&#XwG$Fe|T-@JDP3pF+cO7Ht0vNXhcm6<|BW%f0( zqlS}DFWRx;Tt)ZTC|Yd$ROY6&-thEa(D2a>d!|#bp52H&U21I{)**0y>l>LlJ=QI6 zwv<%-yykS+%u(y4NfxVq?OWeFhVLXp8Ry!%PnB&zLXs``z_L7fy*B zc)oEK(?OOKCQElz{9&2&?M-w2Ww(s$+YO}i*2UV^3ufE>Cqo&nC9xq4zf?ALsh@Sm3Z};F2`IsRzYE*rLxqz1Qsi;OVnPk6HIu zo!uFe&_Idp5Tp-m${Do z`DiZpHz#an<-utTb(i*}E^2twsXou)$#*q^xtlS?QiTF z?9JXBdb08GgO!Rcw;wGry4vov@`iM|z!`<>pH?p1ZMpY*?35Ezf}GN>uZ!K4#~~6K zyV~OD&DRm9FRfQy@Z(CbKWF#zr>DQp?Ca9_q5ab0^5x5p%0jwVo1aO_Oy0Y+$g65k zQ8lRMJ0;3k%q6(Qxn0OD*NU4&RKJt|1d3x{H*2#3Z^zA-dDfc&x#%o4QuVl zVs2Wwa!2CHkh_)zPou03?PlrjI*}iqaoX)6nDa)2-pw_rg5M7hmrjUL_l>*wlM7!9A}e zd~sLnX1DJ7T!KySKE7IGnpPTfgO&tOaN%)@D%5AGM8*3Fny!l7UGc7a^{VEen za9m6NnPqbx^-NW?i~J#dYgVplx|nV#Ab<{bln-_S{&-A@caqqZX%Qwcl5+p1+dIQNhQmMcG`- zdBci+E{S8gr>1C1*wt7>JkXd89(8xfRCZYDx-Z9k_Oh_^7jLOg-&S8;pLcxS*@BM+ z;vy&Q8~j4EDM|xy1H=*u}83a_3HuTbsp?e|sZZYiE(YYC==+oew=b z&)b#${qT5+bNK{(xR1&_kD0+qOoKIcMKfYfnI-D%q9P-%j{8{1s+c~q= z{i10#l^*~%=4~EuJ74BS$?|U1i=+)f(EMv5>L24o4UH=%{z%tGoCGLjl5gi z`MZ=$u)037x%;&FqRP+Djxzn3b4I7;`>Bv6>dQGgw;z+e#gVt6T-H87Gx_F~?-w2~ ztiHG-IhwJge%>d(UA%jpHIgT|Im&&AUH^~Y^WyIf&$pX41=l?Pu`$(d@)^dO!%bTs z?UbE1bugInKMcEoxgm zYx-*27iW*3PdL1B@{B9$ceF0#yj_sYFW1&Td-eq}v%IN+ii@He611E*+`SjLHg~$K zt*f)$uGsirKT6-0#q22xy`U)a;E?L1`o-TCzwBk)ad5wxUGyh*vz+_v`)}Pl8%5UM4ihEs zzr4I$S;OP+wiwAblU^=!f0uuESJl4RVUkTVWz51jgN38aKqcNQS;pe3jb0%lGkx}X z%--t1uY~pP;ryn_vMZ}n=c*RJ%j$AsnSZ!>TJ4fsyt)&>fh{*zrm6-}_@_jvRXz zPk82GZljgba=%)f>(l3nJB+2aOjIk#yS`lgPNYo6F`Y#!k9GMTe7o0RpWUqA@BB%A1*trtq%t~C;z;%{X*~etKsom zkLI0P+MmVPv~r%n&0S(uWr6yfOVZO8$G%pmxT+D;wR1`hZ?OGOzQ4-Ng};4cTbN}S z-~a!+iO=}BeNXrF^+^{$eO*+rZdp0+LVcUhpXYx#vDbXD>t(j4V4no*2g{r+^_w2; z{peXyc0`s*V0-RGiM_kG9^dxD`A6~Nyghc`7%MWTHTsygDVd-6o>>DtR@%$=eAV{z=KIhMsoCJF98KhHM$#HkIM>m1I! z`TTI11^X;x&%&0%Q^^wqCkSdpvvh6VXB%`}k})@0X+dtc(qoP^FX4UvL?^5JvsE74 zey%n)C;3js{5z%=cd}YLHuWwlnZL~N__w*UAI65ieRS$x#{4s8hKY06eJA4e zorm2Ge{2=++NOHote3C*nOCJd${s4^Rlno>xc~3#f38VaVYRz@si}*LcON=(e&6TmA3k2os4@7UHr4y~y35ZE)2n&xc5YtJuqc1+ z{l<=Cyam+(3Vd-s$E^RqJF;(}j4H0L@U@&9;y z!)izFjh7-LqqZ^}ED^0vtnlBG6BTc&AJVoUcGK>OSJ;iW+5g$cY5#wx}A?ec3E!Cy&dfGzI9A?ar1tpT+H9``x(bZ-P?UP zSl)E>9slpfFH{?p`sk^8o6>>%;+@COFG@{tzPitMu1U$_WVIXXr~PAjXS`^`h4orY zMlq|bEf`mNLe<6wTa~z%L%VzGfpXNI>~W@BczYxgKGKze}5l!UpK9P zUcT>15v#`5R{L2ktp~OTHuwo1yuxuFIwe(6VUflEvUS1itKXa7Y~f*HXBFRh#4>A2 zgu}D9>zDWHzO#=~sm%M8P_vO?{(@;nnRnmq6kh)L5v%%-C;ON)?&*ru%GYwF^Q%9a zmM$myYk%7wn~4q^UAJ8i@>$FHLw#PA!}X&_&*-#l$yHs`qrWu$(Nxpf23zCHO$?(f zpWToDk*vJz3$J*|8UO9a6TI$oJdxmGVyWMzEVkI`_QL$n$7cNb9@g{j4xcRZpWHI8 z0{eEMzJvb3%UxPKwolS){Aw_DX(+cqj-RB`&nzjW-L2C)HdjCUle&;^;@sKo+jON8 zkH%YnxOMq^=bDew^0nRSZFkj-_OWDtu8--is@uvMKO^eEpF86B|8|Bo@_u}jT)y}r zZ)umU|Bsz7_7)a@2wx9d3*e-5cE?c}pF@8{TQ_Bd3Tmv2+Zz?Y>CtYGH`P@#>GCq) zMGAcm_jdgKa@qgULw7$3(|KDzWj^!c$l?|@F`n$RU`9cO>Nnx^Hvw{46LcZ0laOBkX3M*x@bH z)sLQfYPfZkU}?RlEC=`7yy=CvRs|Qo%QDojQFu{zR!%xb=fM7oH!RoA%H?uIc(n{F@yPscDo(_rN7Twwg{+69((H*#&?UwR5KLT6I-&-3+$W=azC)~%EHdpgRo{DIlQudf&8+S+gV^j&z)!ek+bTlGQD!%ye#16o5`zfIMi-DD7tuu^ZP2b8RrZ%S4zGpylZyp)lKuw z4__8f|9GkA=L<2JmW$56AOD!i{o~Vb(-}737-M|T9+*}C{lU$NNe zM)kvGf^)8w<$Fpd)xL=gv@poKvqOtr#4`Ww?d``W``fLQlHRe>T4{Y{_VUjvtLB3IqcbKi#(Q9KPxL2b$HjD*Z*_(=G9P- zc0rEK=cV>-E#aKqvVZ%78%?4d92^cO++RI+NDb`h=(@+2E}ouvWnmTPjyQ*7)7gR< z=1boFaISB!RG7?x`VGsv&*>C1 zYXzj3J>B_y-sPLB#@wgYw1-t+zg4NV{_UBYs{E2hE)5U#_x*5kZGKQ_Xndf_t#57c za=(tgJ~r+*J8XTOIXZsE{@iq=Gws-o89@h&TlEtr1qH^XH{9_L?P^ffVqU*8_+Q@9 zAW4pt(1hy~_?bf0)5RH?X1?Xk6xN#dCf4NS#MtWcj?|i0H>J#jl+5~Ox4wCk(-X6N zSzn>`+S*OZ=Q!uyP7+Rf_;B&EK23)Ct23j1KRLzs!Tjt``zP-`MZRoH55BT%S7asI zlPAv?|1E9hXu2^uJlJqwc(`G0NdJ$-c&2ajcDJnjtK3ri(f_yb2Ay{t^WMvKZJ85O zvo%|O+4uK-W?x?^{5r#$<73tOd{_ISqbH>jO<$iAx}|>E)Ni$b;j@&irIQ%eeo~lm zO5i#F`vWf)X04R)TD-B8?_I;4J2rca-={Msto#%(>)UPnz$WK4rndrq?J6?m%{F&U ze!lPUi)$N2+3w1ug$CaF7HfFu(#$l;W4V`}*K-s`|E44G?aZYW&TXVq-i%Sl6@L-&V36B(()=!J$*i8 zImeAzrw-`oGfHpXlXK>c(P8g(dX4L@Zaemq^~SbjZ#h?AXU!xCC$e%{l5G{k_Ad;LFYKi25%}7T9dKq5I%hH?#4v zkK&U*UY{uZVeP|4#vO#mFvwpA7?e^W@4*z{-t=;S7GL`+{vp172 z8*RF$c0hr#aC)2~ie_vg}@XuE>v;M%5#uO8|- zWJET;xRxs&aCrT;6H?OVpS*AS>|7nn*4okZhbiaozI#h*i$Ym{g!|7wtk1ts=iTLK zHn&%L+qorYzPPln;Onm&Q&-Q}Z7b&ZukJ;GbL^J2;p}yB^USXP)jj)l-n_}(OOn+C zyf=I8ReNb7woJ6a^}*DIp_KwM5)vKy%Wb=UeZ3NC`Ke?ktJ+nCmseO9zPJ9`%D(p6 zyR9ZWS(dZhocAv8Xi=T+*U8h<8G4Pfu7~IgZ+!pov7M;oe$cS;b=OeVE|!Wji>8Ta zO#9xtqx5yyM(?#oEGsQw{nKM3jN-q1R+Ql$s9qX!{6m;-D=aiX- z&!!vBZL*)8eKb%jZ~x!2%pZZzZcdU7abZ#Ooz-&Q{(p?l?OU@?C9M89^YQde7VlnM zT)e{kiCT$N)$FYDE&lIrENbp^OI)42DbyY`#ylro_rUg)`92NzmnP3RmwPVkcuIHO z8pa>LbT*9 z96#T&Q|IF@v7Wu5H?!v6{P6sPPc|MdS(jsSq~q3Xg|3^gu75s!A$s@XO5v?nW^F4D z()Cy`VYXs=K$k}D=`-gJ?%UDqH2KC3%~Jx)jJiTuH6{uF{_!|VJD|xbEmE`c`H9|7 z22Z~3+Pyk=-ShMF^;0e@DJhk>7V7*+?(Vsg&YEKymh9C!$y85wY14yQ3+DCJ6+b_> z^{V2jx)hc-a*SH%CTy;MeMr)E*Y0E1p&^nvuBjWYHk2L95s%%OJ&&Dhe~3i-o+aC6 zoL{UM5@vR2_qQ!q6K^b?|A?XP?7vt6vtM$u2cFCCYIV8sbVknA%tD6xqRmw=?tNgp z`fgp?^98A=9Txt1aN_Ko+M?8;jun>_A~sIBa!d8HYTqhu!C3CqsxL*#ADwYs_Jy-+5P`uRX8u zSnfl8=?MjT?jru7rVD-?WS4*N;YG>;4UyrA;MVZ!0_^71if{nL0hbZs(4>C;p%22&rK4s9d0RnpxZKGUJ0g zYjU0}N#*b~Dk{(QOxnU)gR!Zb{MTJlm~lGxNj2~5 zmFMmRRhwI@izm))K6>)w$wT)qtnp-E`^p_WS7+tRnKOQUEU(D=!N6j=JMd4xUctpe zch-cs-Ih|Xx4#u-uvFHTp05|z`doe|_m<>;|F-)&G4&10V|A!d6d7kTA=|6@KeyU$wGWnKg&+!9HMoq5z`){psR@z^3F*cdSHt)^4r@IcX z<>3-!dT{)0TYB!+-hxubAHv-0Ry@DJl2A-MKa=)@Z8aysB54ij85Cm3LT<&Jnh^x4--I#GBgGoeysoze~N}C(kJ6 zWnG@v70*=Il9FkKO;bGS&-vG}BqU!0jQF802i^tEBD z@d@c$(^lB3y%d@DX3}b=fRv5bK0W=_^!IQ?Q+`cmrcjNy;{BgR_6Il(UOd}T^eRSSSy+C&Dym2(xs2z_q1~CPZxM) znw|8q!D#(5rKfi)=lEJQ-A}LOy5Gi_A$g5;%cZaUIX!Fd>mEMApWbo*dfhGt=jD5N zoc;P34%XLxGp*{~CBLwIh3tbJhjRn}b6K&xlsa}ch%xfo)sU8L@0q?!eVckl>ot!k z`v>>6bCz$OtajjeclXwy;#AvXmul`!nBBhO#oApw`wS1< z&P<-=8!Ub|>#R5*(t?_%DU&C5=Eu+My0=))q5HMp;%6&(Knq4v?ufYDv6p!G{a&l? z{eL~l)!&ki{Jz{`d~3b2oy+QXv4Pt^_RcW>Wm!>iRiM_4Gp}Fz_BN-#VY(0U4oxZp z4FZ4tBCshNJP5q##kHm0r-K;(blC~7Sd`$$epBgyzprz~?Q>J*9;}xv5th38CCs;Z zV{MV^`Tm`MpFexvTy?P2#x`Vj%;}S^Pd4qJIAw_$Q{j=qkVpX^UXQdU@$)r4;^oPy z9goyn6Q=Bm-*r%O_W{XIpFe)>uRnPFw($0EuXGN4-nDjPMco&LnjdGmdL-+t&&BzO zxt8kNSVg2v^S)$cw7F2h&hfbNy*TXy0G(70H{}*vJHI%I@rtkU5Tif&F?-tc~ zKFWHZtIK%w^mP5?0}YIi_L$^_v?V-j@9)3Gd+Ofts7wE@uZ?Ek7m;<=!mVE}c4dx{ zw^iQG+N+%nK{{)-6^x%WPl}!>*ecZeadvsa@$=e-f97gxajp|Jws-m)c9wO+*^_4u zZCd$$VeEXl7Zus^bL=KG#HXJT3u%+unw@ykdvf9Rmgg50Rj*EDtO@24WSMk!wz(@W z@6`ih$CFRnozZkDiTI_i<-FEoD(k`3VQUZVsr*n_VdTP0gE=j$Au!Je7rGE-4Zu=ei zvy<=p9z(gn{eSxAo~{#TEsV^R{PBFX>!R~*xnF7mv?AWz6IV4U?VWv;$%yyB`V*E) z-={Aye-_{~vDKu%{bu3XFSCp0Ku7e$yc*W`G)mTp^Ow(Ewvp+>;Y~pwlCJZuTDj1P zMR(He*zNx7PE>B*^8QA1`@_f2mTmT5r^6)}D#kMT_tCOycT@hZQ@l&GO1R&qOfT-* z(y`@>&Xq4K6<>&*zMd!CTEx%)HeM-igJo*R_kG<=jY_Wfw#o#3@>rR&N^ z9xkKY__P1h)6-wixoB1XPNzp<%dI_SGgFM`2Bq~(;VX8SC~y3<={S$!^GV0wuQ(fX zFy6_jNu%z8^nOTK?{U9p^}Up3OKA8#>D{ZBs>UBYv{6{V=tJ6)I6t>b@Ag{A?UsKT zzHZU$yW5k0?9PAi>Ez`b8y-Y6rrh1jHQ)H+>T8dV++$`^`EQrK?!>!Ew@>rD<6pnO zH+p`h2yfK(BR`L*toil8m}kCaq{ybZz4lGD^|=kx^K)7FU$jSk{o~snSOnnYTC+9mS+8aktd)WAI-qe z&p+8=qfv^8H@ArI(MdDK)7nIZIfBn+a9QZ_zcloAn7AkMRQJTsId?4B(gJ^fe;+^X z^3iwmQ^n@-IZW|1&f9YA&dy@>X*!Wf-;*a;PY~ST%Ch6sl?MxN3zQV|hnC;Wl;q&! zYHQyvKBF+!D$y$D?%fOf^7Tz}q+4z=el2)<#`2F*u9(}Id3+X@i7!`QHhl86aD{k8 zMwiPweMXa&JWGNNn9t0woI9D_=atLrc@LYo3R8~fZFwoV@bPysbGKsFl-3nOZ0hj8;g;;vHk>$`H6SDVG0I_38KwTYy=Y;;x`pP#(_(%_CCn*SuqOfwW$ z6!qO%rNgmo^$qUB)r(Stx1Qmds_10BRs3jP->nnoX`q2;se%s`x|+@gi(kB$6Itvq z@fGLhw6jK>BHmX1H3Aw|+n3F`=;Y+&a%{$)tmq&u4w1+?i?({J1^oH@{l1`pfI?hc zPju?T!u(rXJXbhnlr}9ja`8Oxx3kvO-62x7q|#^Yz6rBusyf6(WRw?noO!aTVD0Y> zimvT*<`s!{$JfY$7AF02)ZOs+xM)Z0UOwh{ndZ~#=Mx?uTH53;b3rNKLj!-#jh^Uv zl_3odV%K(7RvlQ`6Sm{oovRTJ$EI#d>*w9Z@xfcVz8JJpvircg%_qLy+9mj4^Nk(X z*AzZw`;cqNmTmMyecrG29KkogLx!DM)76i&{&@Cg@=Ae^VV6`l_#K-VJ(cy~vnh&` z)-O}s6rHir+d$MZ^Vt-|jOjMt+s{t5Tb#kCA(S!k)dJlgo3F-bNG7K(_O)C*b!t!| zr^Y6Q<+Z=RReUU`#qMOq0rcq%KZpyqF0P6OZHYVLFEZEyG4Mn8D; zN~>bav9lWzbSvgR+?v7lK>E`sfqOfD{O)l|?XVPyJ#t%Dck02g!U)SRl@AX^{y!M~ zmgz%o>6~f564~zGj*pMxg*fNpl{{R6u<=>7D?VDywMA1|4(<{3nPVYX ztbS*;l{%+cP>}J3$Gi6UR?hjc^d`IR+{gU#7jLSr|7XtjI{ADTQ)A)dE9M_oO$c1F zh<*PX)+XPxt-6|`CI=TN%NUptD#<3xA4gWmdkQ!a(wnD^1_YPqMT=edJCBD%U?o4J3se#Dug;!@Y!ON?A9=g%yv-_`+I|M=y!X2*+b!573Q z`OiJLzq{^0!+%>&e|cNevtq{sXW53y8m`Fn!cgJSzLNt3_(tkdJZdgD~{ zseoCAQuS(&H{WMD+kDar7qoJKMlR3YJsK&x&rm(sRq(%T`JKe|8>a2Nuf^GP@~2gO1-l!6Xn4;h zrI~AsH$-(UITN_0ko|V~QI77^@Uxt$C-r7Zx-to^^=$6tUwh{6%+ng*USIdu;5jqj zUVe$T&9@nG_jjJL-tNf0OhdHh=Yt}#P|Gd(hvtZX+H%uJ(>a7q+{Uh9(V|5z({AsW zczkch#YJ8Zxl)=}PLB;)$gv?!<;PX`izYS^rdr9Z9PYB~RFgTqSyN6`a7e8UOkMHf zqcL+$-Z%b5=bBdg`bcb8aZ%*J@?Wi!4z7Rk*lhd%xrVoo?%xtr;Keros~Bh?c#(kP zVIHqtRheOq_II|*zcau8@&cD&s1VES&E9^ePdK%gV>w(gYDzaBkyfw;W>1t-@7kg)Ps<-d9L37n*U(wA^GFD4OZSofT zGG~g&2i5}0zA6)KlcJ1cUa{K>}{+giSG|M~1sFJ#H?Rmmtk-Y+k% zH)V}wK-i5nCm&cpvN+m(`doeB;xOO2UTnrc>U(BtWt4!%Bl-3l-B4ft{E5=b8=O}z zt%+OjY1P}B$;vlZW91|T3j+fI=#tih*REdSnaEm}lG?GyhB;$O;O=G9UnMCt$lJXO zo|vifJ>)ir!AidaJnf5Lot>t#*dyWV>-GB|otUWn;>O0s59Zvfc-*UWJ9d9vt?b$Z zg84NzYD}&{s{IS(zj>FtU8wM1f>M;) zbM7kn>!CXmK*WSns zmFLeyU#fggFPGQfe0+Jz2VYH>m~&^`ew*n&2y+V+tUh*Vj?)p);`t4lVJEV!vQ`%< z%rH0WTDbnt8`an|-bvGA0)?l|oZDPm$R2n(I`@-fYR6CQvd-B}I}aH)`KT)Uywn$q z`S^CypJ;c6V@Fd(ejfY(^?Ll{$^LeN-tT2z|NHy<;-*yZAHRQhZ!{?O(%i8*{e0JK zB}OCTDQly*yR8me8?bqqU2|Mu@yWkJ8by}9SYy1B$o3yw4bVdJo zrgFH?(yY|E=5}CBZP7eOiRcpk*SWdjqMPRKTw2;1f9m%lu?N$?HyRzTe0U*n%l=0y z4eNq_+*#<%UYM`m+q1gi%#TeUXH@$4f7W(*EB%^#f%gTUT@L^D|28am;IMI0#m1TP zhurQjmhy8={V?^BQ`4OrKQgBJ8EyVDrCa&^t)q9(E>aSG`nDt1=cao6*>jGkr!{`K z62N<^+OGTde9PY{?%^FPiWDMt?#z5U$+B@OBg^~FyZYz0O3iz>s<^N0B>zgq-ZTcOK~poywWGdCggkx(^50nO+!uzP-1)JVxdV zM~#%3)~k1a-sO5&7jx}3I^R88b2EF+nRP;6jI7T|b1)hkAN%v@?3A0{R_A9H&)0re zk^8aURq_#Jeky)<8E;}@qSf2j=r`A=)kZuj{LC94xhmw@fs5V7xsuX1!=LsrFiM7> zJ@zhYowP&hgXzyw(v*HZkdw_lJgIim-n3I9Qyaf$+`C+v|G;+scQ!Tsb8{?}x$ac- ztIb%N9q({k?2zgCpkNWDcl-a>eY|st>5q-o!L-!drp@bLs2o3bylGEXY@y=Z4;&TV z3n#BhfevkEZ4bGnzIiKWR^EEeEuQ01YBphk>`?w6k*d)?1v&n&6VpU?-dSq8LLuOZ??m%c zyYlN2uND*qt$*m{Bs1yp;|s5RnobxQcsqP$)m#1XnfEHj-)lU)SYJxBywVO|cO`Y@ z%&X6s7uwu;vxaL`XYZMrvp*!d#i=@em}Q#HlHdP0(X9RRfuB##|4Dk*zJ>Fj&g`Cs zy~+ow8RI*Cx*8n2|1-AIvhL~B@FVA!oVERTK1r70^o}CY#DxEc5Yco_)U?FDIE6Cmj?GHNVNmyh7;W!roiY zc5nH;>G*S}wXcxGJ$_6}#888`Gw66-&A@xi&3% zP`>%;?v=2$0Q;NbUw_;6@X7OM9p?G>ZXD&kboI|AA>(6Q7I`IFaW)Lyi$gxR`TEUT zt0~IT^<>k;MM+)9Vpx64;h-toC@HtP|UEP$RK;`h*Dzo9x8(<3t!* z;%h9Qe)HNkPoLq`rHsgPi9c_?l4MMM+W1^-ePP_|7|lm}T^RRt`tA+GdGR$tkNs>TlVHL={kvTCH!2D zb~%~0o;o05d{1?u(Tv;TjM|P%lQzaAoM=xvcJTa%$|s?_r>$$~QTVfZpYj=|KavFz>&5;}Q8J}CXTIVp9PGtr)wx<|3FVMGE=dWaA{`8sqNO@XYY|NaC>q-Ug+=)4Q zp5?^TyFbkKsAlzhrgGd;6*lRSGWFWNCa?eT7SpANg4`xLOkA-0{Q6ccmSei+wxJ@c zc2ra`v9{(v`N?wRoL<4BPm^cwzVM}_XrcSwO6{C%P0=&kjDy#Hxa_eqp=_o;vuf@Z z5w!-D@aWTzpLw$%+<47q@si&gzJELO>eEx_)jS`cPLJoZlXqlKy|m_OlCX`iOt4HG zt5a3n9pf- zq|-_dyomMe3H{X9VvlxsS=;P`43AEK&@26Osm`{!*5!I`>wd(1$UbYjPhw8`!ds0; zltS5BPc68TIAz)?hY8UW@*5P@*MHcTJ14NT%&p+Hz>X@Bd;5PbH4#%cI{kKSq5tFm zoF6RTFAh6*x%c#?)7`c!dA9AC^l#Qj&8i=!f~JPQ+wZS?y=jrC(kE^%2ZMQ&(+_-H zGCARyx%qttarN{aR@MvKR>vtvNV2@0Z0~ulFru|Xi@oXWP1R_tz|2L8dI5ep^BftH z&5{ew^laQ4s(R+8>ipd^nm%rx-YH$TJ@2kdYmV#IOF>#I3=X8$ukABDYb>T0qj9fc zcKxTlSrM!;Y+jyj-)A>HTvDm|aFXc%`O_!&&X^(mC~dV)Bxl2$S6VwFTN5JxP6#MV z;$3=ZN6^iPrA{ZMvd`*I*|#$L=fie+E@lCym%rZyhc6VCFrK!z>g%c%E4O6rfA(h5 z$;WAhNfi}4@^aqHxGsGB#Ik~mTTLXMGH@)LX{qM$>^#?2*C4GmvleM>ooK1WY&>Dl zKfj;57kWl;)JU_=U@br9{rcIDnNJcvwN5W(J-cjWwvJZ!&qIB&vmd^Cso1cj(0ktB z$tT)A&)b!9Qt0EN+Es^nlZ00pU9m1(s*#YV^G8 z{I{#+-`p0@$||1rX^a1|OU#aWmo7d&k-BJu!hQk%SoS?3D+|hsE=eZO=svu4PK=A* z?`V$&R!OUa6lRzQ%ya2ZpLRFH@y1Iju9ZxG;y5OJc4?czUu+&Oz9s+mtz}cXdd}n= zk?m^lpMFcY?(;k6AI7g#j`c_?n>5|8`Ru#eIR9zkrA$rHKXV!S|0Esj+W*;FRDMgE z&>4+mM~`-}QJcH%j!etAiAw>k5V7hl^%QPg)W( z<#WpP$M3wnQVq&8_T1Y!Cof>yjovvID)`;&7;S2^U+$Pajq3!*lZ;t{k`Hf4J$-WE zo%fyf#_=6dJA4@K`rH2vX^6eoJmc=uQ^N1PyR?}9AFJM^8Om1tahpr(gIZGyjR=NV zra1NVA|VzjRSp>GbUB@eIz6c6WX(dhmutTwPu9^s{Gg zQUY%tn&tU!!x#U=wxiFNEZ(Zc+N7)Ld_(I4OG)d48TWI&S1zzK@VE0nJKJ`uB2!dr z_ao(^c{^23JmM>k^oZ`=y5_F{&&M`z1(yTKt9)k~x$5**^Hg!@vSpfB8($KTg zvXeH~udk2S=i=SkYm;XdtXEOvxZus~Fjkis>&i+dk@q(@yYG>a+^-|4J#B_{{0@K5 zl^U<7M(&%xoptI$gVQIj&U;-Gw6Q8(Bj#;kpxk!Yoj0AZf&>yZK$XBr2EvW(A6%stw|Oxe_zenUw^zi z_UgKAAsq^;3u86kOzvK6v}2RmE2|ez&wtD4TO$zo)ZxPt&&dYQL$|gquvH7ayyBQmH-EHk<>d!~!G9Sv^6HQM-)_3}QCqWhs}a-A3NDT`v8y5hOJW43YsxzA zzZrAp%*P!w7d}1hT~=l`O+Vb*=cD84jdyE4pAGYG4VvNEu%;pTU(Os;J?^DWnv*7J ziH7-mt~A@CInX0ZQucfD&; z>V-}HIUBWie@*Q5GYUWLp($;aGvmahOEI12CzNN41_?}Y`~76gofwwwTVrI>v$dMn zHYq!9SgVxjYCmP~%zt+RTDI_RNy`46m!!M2NxbCDK8u2{>!$VZQ>uJpZQs3AmnkmH zdASunc{h2Nud#l-i_3ezRf{^c)%zZ=H(%bF`@64R^lMX8_xzs@ zCw5hd%GudjU5L43nDIYfcWIMr<*j2mANMD}JO2HCz5X=0nLE{=-`w$W&jaRF_5c5= z+HNVjJCCnrio;`z9_h+EHtftyOa`^TO0NE&aZ~l`VKKc5mWM1SE?&I2bXmv-j{XI) zfhz+VW)&*Rx&DwXoVhMWeRqrX{_`LvSz-|pQLI*=aAH2wPTedc_%@@BSWPZBg^8fdYm9o$8nppSuS7Ya%(1}%C2}NPs z49+G9&RV!&!JQR6s=e)H)h9XivRS-;RE9mN|9sZG;_pQ}tGry!-J5Pdi}GSUsBd{} zp4_sf`&aM?3JW)1kE`~5@h0w_^^zAiWMb8?2MO$4W1D?VC(uIdSAG4fhNQ4hsxIGn zb$?lF@=B-g=ik4q(ZjM-sMpDQaq502g_(1wbzPkt@BZZSd5#2`@3+0Ko{1mW8TY}AJ$P*j7gLI!r`?we&Pn@HHp?&`>+*iBv**#DXlRapmUMic zF4K#hpd&m?bRwcln&HuA5-tO94YguU;`T&9I< zuk|yE-=TTcJy@XFOZH9m+ZUcmtP{2OE_*YXb-J~>_{}wijguD`OkoEN9M&oy_s%Gq zEcT*ft=C1xDGZ-gk_;JgvuC(OItE`xSczKXU*~vS7;*(#WejoYABeSGPyDRA6 z_WM^?hjX7>c}=C+HFu}v%Z?Xc*cdJw6ZECJW#?I28^EY#D#6^yu z8FQo*okH*$ zK3uW*Qdc3N)Xsl&W%I`$uP?7ReDwF_iiHoewS^NoAAJ6I`OU_IORqWVz1y>??Nq>= zr^SW8FZ`P?`E=@HwT`5hH{Z@)u$QxQ$E0tOfwzr+@BVv+wWelSK=dr_n|-%dsc<|q zlGPUE+~6T;aIH@D!RNE~-M{|r<0xY|^4)bLI69$B$gU@N=PHhSWvb<%<_@e17|= z#D`}*JFc#1EdKpH@%yBsFU%8_{>}YsSEe7?G9mHs#qU$E2OPe>eTTvHU;m^3-)xrp z_sT1-tn5qu;UhcU&utdd`1H*4Zldnl1y|S;m-EjuHkUL?>39$nq~@FL`8I>Kewl`7 z&u+8bXDuadDmEMrGq|1Ewf5b#&t8`M8RzeBl#W{cHd=JM-YS!ht{Uke$xX=1FtlS+ zElrckkG{JgIzjM7j!gItp`~Z1eVR9`PE*oW>35{;;;tJ8*0#(WIX7B0%>VFRY|fwk zp-tiWTr9Jhe#jUbPhxYHi;0P8ojmVbYoN8;x(Q2TJso-Fb5Ui%?pq3NEf(p$fWe5(1H6qiNxG1-}Q*!S0lQ&q?HLV{i(gUX=P>M$4_>r z|J|9c>8BIyF!8vPap#^jItS-&ZueVfySANk*$mcw4`+6AyjT=hwxlgT!y|Y{{PV@f z{(P`CJ5v>YV(!oFTut!_3VLcs9?v_!&tWYaZ^4KDP>cEx48MA$_5bZlK3MZ{^Y;Dw z{gQ7?E6(6!F%~}axo1*YlqkPDbJwy*j(Peo1$5qAHuF9uP;yXt{ngI#yH z`?|~5RV0}IwCGxI$olr&Vo$F4tL<5RQd_f>eqNDejAOU?KV^aMhNbbI2Y<2NfArwk z+7-3U_G~u)Rq}GKOYPrhDt&er+v3l2wbz<)ZuY74yV9Cm|my^-A`^|~yZ8@47#5A>{ zl12adnXdl-_kDfEmy7O4%lfXZ;^9c!aI#U#Fo~s&Pj*$eF?Wi_JAb)XD}$GZltyLQuN{Ru=l2G+Y+9-8 z&?Py0n)T`IhN*uZ&aIweneuUVdBXSn)rJ3O3qO4IFMe9i(KG!l7To*4>rHgrQ}c?) zPu8MkYw@$g+Y=ey&HJG=tK`z{wbJqzuH{NU2)!O&ZXaQ}Wx_4tf5(iizP6lNAdtx2 zu)qH9{u_IXOu^fL*B?5R6Xa1>@i&*H^nKgA!)*%c#@-D#%4(|?JYHK{@XLXzZmyy9 z;rnx&&SYo)NdK3_So8hQHny27GcBa+S+?)DV5>j#Pv*N%E$h8~TR;9@vvbGBSOKT^ z8c*Wa&)?4yw{Po_J+rc=G5qWEEN;pBcV?#X#h>-c7Ya|*&&jI}lFV5;IfwIseDnsV zHGUayC!elqjJ(OXl80qCyI!oLQ$qCQV_L^LU5-X9{rdB9#`E{;88XMxy^ z*IjbMGHSJv!VL4wwA!t%9!FX4L`;bHeERup>w>=1%cg8t<>7TS_WT*KWeil zT3UF^OZ|G(>%`(IT)Tv2?P?@K#65g`SbB|`nwt}YBp+R3b@}#MXVdNa^A*B%zOxs- zKHM*2dt^rAuk>d;SF-Q2y=A}KYI=Fug2#8AFYbtzShQ~*e|f%qi;cmW9WV7S|DV}- zf3J3+$Z<*YV=vFBU)DAaSYmYK-rnlcvXfqJ6RhSwKDM%Q%C?X;jmt+wJ|_k({W0NU zQ^KXwbreOm*!2Rd)oHaf#4^hL;GZN>BCo;AC1)qPmjHNUzfoafq^nf({% zpK&?$ll#Z-&-n%Szi=wa&AD${ywB;a^ee?b`*v@5^tS)Pu5^n@i@q<6-9NA6-(P(b zj;y}m!jDZ%2Xj94%@0?4`lj;Ew>!d*c5v(yUi_`2()4N<^N%hT8Pl?#NvFk&?N;li zs_py~9j3(`zVl3^U3B%l2qwsUlTI|7Th#5?mD_LEeN*BH64hch6qzhp5|m7 z4as{Mc0~pAd$SuoOIdXwv~OC<3L}LX30)2mrvslX3E0%hpK)}{!HD`Rca|7F7L}LR zw>vG|9G`RQW}{EVV=J~vg3h41Y3?~s_apnAuyR~F}&c*OYGG`;h;@3vR> zb@5t!MU%pUv;BAw2&Uvw|ws9rzpDmpxVEyB6&5r!v-gC4=1vP|ZKEI8R z{%}0IwHGwU|3m25BjL4*?A-q_{R}Vb1(@(L9!QPtvVXW-$ z8UyyGOy1frFD@oA*1cMK`p3JenMr(qX8+l)bbP;l)x%Prxt}&!NSf*V5c|HzaGyrB z%-$?rzc;oD4m!q%>+3fP*wyXpsQDn566byN&~r6~oELL<6xS>i);RdBk#~0CY2$vb zu1-aL{|n1rJjz^W*c^X&{kC%-`x)jx2;Ui2Sr;_F_U)~$kM6l_$oAH9_SBibc4xW3 zgZ#Vul-f6PkMP{{8qn+*?D~l4dpRwZ5=!o&K%gzZXus z_^RiloyK)HXTB`S?&k|PZ}#*~y`*tW-b(kCp3KTnP63@gN1B^Ip11%1BI$Hi>Asr* z6K37lJm&9kCadV*x{eRVk5@M&7awIfHib*pqR|4@t}_#! z#dvEnb#1d*`NnZ&!WxP2QvsT8LMDF_uG#+W^jvk={7Fi42!C=aNAP3gCr=){nt9pa z$+N`I$K@Y=+n#>t>Rsk~pE(Twr>(t^dS!*t?z53yulvpx7JU5D(!D#X>g4a$l1kmD z4l!s=kuZPy)H7Nq{q)bxuJL=ORVbUWid62MS#)r5Xwmk(yDa8sCeGg3WPizGMfaPI zJzKl_)ZaUn*vstp&h0z&c+u`zK@MqInSXB`^^W-RN9B&?zep2~tj?vv%NF0BV0~d( zdHI`PU-@%>KMc3|ca**0`xldw|5LwB-*b7Q{9e_rwL5t37eD#C=s?$5i{KnRKg*dj zJM4D2Prte~WB#0Ufh`T60s=M8{t@zUJ(?rD?V@ST*LAbF4yeyq`FYZ@-pd>hWorabwfo4dR8 z_c5oq4c)&~8-87lS()_K)wA;8wE)SU*EKyWc?5a$9UjlRr=`{W@gw*B<|d{Kd6xF` z@Bd6~=$>pm=Vw!8txRMkTgC33hc36omQL2M6Oj7ZcV!g|N7yEjWfomB3si%d!uo|p zg4?Gvw8rOfDLgCRw^m4JcJ{VqAxlzI62IS+QgEMmG+E@AIjacolTBZBo*ddJk@NP7 zxxn|^Tqf^s`L57tvHKx#$29WPrFk{m7KCV+Fg7Km-BI(K(-C`*G2{1x$Eyx6GLedo za9JqmR@kf0a&zU%4=avJcX40RixJrKK&@;rj*jMuL=$T8Ep|6-XA7s~MbiK#3(%x&a*kd<419_i5D>XUo_21V4Z&7EE?h`K4)cIuc$9BbNpV*4JCD3sm_WSfrT5y9(=C)S9+{HmjY?w52 z|H8`Pod1QaN#W}c9}qwO;L}Ot8#@X#K}RTQWY@nuqAByMT>8*E$&e7A@M|;P_T1Fl zWia(%|CcOy6cH%vI!A$5a^TH1DfIcvo*$FA&Y40X4+ z<$nD4`~Bmyd2bDtqy|rpo!WBBVb=6Vb3C=058X8_@2T9flZ4>=bh7Y zn!h7+vsyv%!n;L^3}$(E%$_|+{83%?!s18Y3z=|LhYgbgYyK3P&UnP!@5+BBVagKC zraymd?ymY_-DuR*XiqYAFMLW)OZ(h>i7R=QxwI@Gj$jiX)ZXCEF$_)$m6S3wTD z+RYH&6)mkP207{~L{DM+m-XlO9elufUfEn-`u4v6qWouPaouN|7GH7pBHNBXXFfmd z{OYa4^yib6K1WGqe6OX5a+cDJgDJsJo*yX}Pfuh>S}FKIe^++Tj<{~-A7_@u+g0xB z*mYnDyYZJL)_1JGiYnG0+pqerhwY{28J_YN_oMerxv@F&)C2Xi(Q0A2MNUkDX20Z2 z1x_1tc(J`SUzoc)B6nl%*@#8c{pFEpLhzU+%Qw^}|<6oA&CR%i55gnN!U#CwMbK z)p||N?^mYj?ZFRL3V~W6uHmE&neG@&LBrV&FLvK zHA5K;tDi)jZ_etNZto>YA#zqIaw+wQ6Qh@r%DaOS)-i?uo~D zciPIyZLNK{WT&LbpTcz~+Advq(#Ts_uzqEj!U;c5x9#t8yZ4@){`AMGUy(tEW$zyR zxWdmkYidq?(TWo~Gnu-UeOo;ze94O$QN0V68N~0~(i)R0+r0C9G*j2JDT-R$XPYAv z%=GoQ7BY34{QdJsW?jbNxZ;>ubvuik+bwh-Brr-wZ=b-S;r-gP`WxrWwQjPvI(l-? zx4(1s{lCj&@0>MJVdqbuJIFuzo>M}Gy5jt!tA5I>oppG1^fbqtJDlQ^{T^KT=e+2H z??jKqVsCfpi*Z`99!z>6yFG&S*pW}gx%+0UKG>NwKW9}#4}(2ug86piBWI~_#T&hP zOuK)^#FZ5{PwqCJGdK3Zqqqp}z&Ua2cmAAnyR@U?r5@h{;XQwUUKHopT`th){@(r0 zFW(HQJB;7`sztXlznc22WaG*7A5IP%UOZi{XQy@`-sVRpV^j71zl%; ziSLzuT$7Y9Q#bRUoz=aX$qU{Tv>u8PX0XpQw=qpqJo7;KfwumWlFXEc^4+I)-a3~4 ze4?^@*N*ccsT)|QHa1+pdNi`2>hvu>RTjsimkm?3n|QSCBHZ7=;G>R6XtaHe+3l%Rt=qM8CCOVv-#@3mUHtU*b)^4)QN*jj+r!&O_v z&3)o(ZttJdKI8rLMfY2-U)WPFpQx}R!c06!0GTg!~>c~_5d!piBAABv`wa#e0wsXYh{;peU=ElO+-()T`R(PKhP_+y@ zxc}7Y;E&h0t`_97*k<~-!92#U#Fz2tjvW?(cUHufKJ4ON-#lsEt|=;N+iqN&!!2jp zB-*!7_gk>&?+0Dd+>KkK4zg_8BDrk$tW8_|OgrKhzcY{gvgPk`(Hnb{wlW-3|1N)I zrgOXCg-wwYy%>I5OO|uo%zWwOv^sIN!qgP0>34V5_$TD7Q3{MXQ~u@_Pq;t-#H%KG zCpXt?g*d$wP7-_|etrMW|FahxSqMIfGZ)u9^X^i{k)m%KmK;yeJ@8z}?rW{5XXc%S zyi(hEg>LOz%6ebb*3bL)?9&f~9~d{^e?GS`?DTEP)zc<)9WK3j+RkfP$ zLGa~@y8RPfujpufy0B`_%!ljJg}av;P1u~Rp*rw#;XB30$Jpv|!PLcGeAwui6_{ zG?=_xBH+Z;sL~>|YKlYE{SWo$c!kT;wxw>K{id$|-RBPsC(q2Se!s=|ef7QK8Kp08 zZCxD@yW#1!?CW}hA4Bhzmwdat&TRWr%PUuIe9?57Q0;kg?S~6>Ng1cE>?+#Bq7>4z zpot~;)J{qBf)~$wo&Gu+r5TvG2j4kX@^-!cUzxvetDd~?6wcD~YB;a-@YD_U=&n-< zD~o*ue5THut@~=h`6I^Y? ze@k#}HH)IXar6aiwVJORe{fhAtHho7>B(32E5zrA;J2@z*Drei^DRR z+^BwYSZR0S8cC)fI+vD){chnD{&4zlqE+sc?isc^+RF_hx=tnJoLTl~p2MGtQ<_&w zrw1EG?hxNsx7_z?+znd}HTyRGC%w{FLr-rz5jZ92{u2eGDz^&{mOXgm z0<7(SnoQq*h})gpUC6HEmx!z zBJQW?dahImc+$Sqh|6WciDj!FoR^FF@Z;l#>hF1sTvK|d-q;qlHAY!{+r;KiyDmIk zw`{GzLfy<|+*gcV%@8Yf(Qw%?Bk%mHtxnl9jutL6v3o30S@yAD{gvZZOK&9g%U+vV z*B8Gfs%DC|>I0T~d*$F0OA6PBp4ZgXVm|KI%H|y`=@ZGFeA^((D)*Mj9E-w5rx@_vjH{$S-%jhPtWR@QbC`7fad97)_@5n02bL~mUoTp#r8eg| z|N3)BI%cl#KCx5d-JHD~-}nES!*Jn>f12XL6t1LZRYl`jOyUhuoQcviHYB}F%F4&*)@YIPZ zLInYvr|e1iXUHPLy?OJ8{#nL8{`JbZK?%h5ai(+;bf{qLNTTi>~&sL;`_?9A-uf5FQadzxQ<a6n8(Fb!OL$U2?y;{{2u&6}fTki?;9F@X|bY%~Of@ z^+Q4*WzW_Zcp?|E+0UZwu zxUWx6Dfrme-&y?U=W^}`!UCetpLKhvyw?<49m+m+p;qzJeTA>LDP()6xHfJTdZ4ZR zBh+@@)^F-3d~8a6mI@r?s5`e#c|l?SMvi@Y%3@lU6V3%Z*R%g3`+tT((#>Bd#TRKz zex`71*NIzNYFC1;ZEJXDUHbRVQ4XmZ{adYHS-wtQKhJNy0juE_J(eGSdFvLf2-!Vx z(cuG3+z+;W3EQohCL*#hxZO$Dj<4dOca9rUp0DiLwQ)zg ze(|U5+?_AIZG~Bi|M)c@U(uKp$H%nWWGzD%=l*rhZ*G~sF#pPH^7fkSlhyBP^5t&b zwH8?W>&wAulKBhYuU_A&q35{yOTE~|xBm(hncVvwng17A8U?AIley7SbZutSh-6OUyY~IJ8&;&+bG%!6fzwRjAV0q>L%UbVzwqyW zeh3z+7)E8h$}(>jDp>O3&KakQi29A)OQMWYUU?T37CTqfO!~o5{Q1j)#h>pBxz4Vf z8M!E<_=xrTPLB>q^9a-0wL zeahK*$!_K{k)5il96TB6msUp1FA-W>lf5|lahqE1{Lqjd?nq0EI#cG;N{=tzxXqpa z{dMQM^3Zh-pCXE+?#!7JQgv|tbxr+y+eM#S>}EgcBOVawm}z%FTyC-0wsV0?!}#kWQAN-s){*zqHF^8|sEC3BB_ z-C`ohxKQ}EZT>j{o5#)b^_|~)PJa04W#_fpU#Fg2sJL^Ymb0o+DW7R>*-6RkEb=#I z?CJ3=-#pdq(sG_cV^z*{aUWqp*Sdqk20pV)JS|pSbUZ&#y77^}{a+S)d;6)TJ8e^9 zcYOQ({k{0nRbIyYVvBEGa=tljy)c_B-_!W8rSm=g6H*LSZtT+Q4ULtqy|pHYF|yrr zaqGh-+pWbHKc3iC!8$k3s$oyAU3Es&2hfSYD|kM}R{Z}o^8)caq z=U<`pLq`AU+Z!dWA3m?U?-H@T?vbr}W@x;Jm)q$FdLP!jRknD^?>k>9#O=pF)elpD z?D;y&+;m0KqSH*jQe1i%F3fr)r1*LI{F$v643&AbroXtnej0<_@vW9Ie!ME*zq=(0 z?kWul7S3lpp{Ld67Tgw z_|t#i_2KON)6;g$5$I>k-=pcHdd;^+PWN!Na?T^~9fi+KzSVCNakh(KQ5O%-nQbfF z{A?fle79bg@*acxT9-Rk7#!Txy`0@?-qdVk@8eh5MOMx$_;q-DYm)ni^61pdVpDgU zuT!pZ*r0nyy6U(B*FPbB4%w8qWv}{6R|xOjthDGv_Jr$dn$|Tl43!QyS)QA_V8+Cx z>P(idnuD*jek5OOy_mX6`$m!Rl+uO0+n=OloGxDRa^uISXU79BTw1wlVaT?IHOrm} zidF}>6it1Zes+rD?7c1dcv z>?!}Y>ww+13vc9DUI(`&RFxfQU|gkD5FJsH$@9yiOJ`Q}o{EiE8z22Ve9_~^207Vw zyOtGG<2g4-e|x0z!z^D>=>+@q`nE@VY(8#Y!!7Qz@ouxcj!@K*+t1E9O&46uay}yb z@^T)>1uwQ_FP^Y%rTKsFo9k||)^97BHzm2#sv@RF<$_V zUr0}OP1~ZSrM4{2e94Q7tKs5GlNTLc^fT2lH{_InId}KPgZrm;eA$%iXW4w>^K`@4 z^Dc1B`>;%SdBKxQp*_5B8uS+nvwZlgqr}I2+r)kTG~WpoPp!n>b|3uT%DOQ3uGNQv z(zf=^#u?Rr{>{^{krYvIFt~l5Q`4f@Slam4SCi5xr)9c^mb_nWuB63oOPQZ@U10`4 zo7=4ycFXQcOf^cIp7UwumPc(nckX=pYYNxHx_uM=|9Y+e@xW%a0H28e+C_TtZtqV9 zmz>+QWd(=k?d^(%hu0T;Ue$V`Q=jvviPe?d+G@66`|L!&Ms2^ibG_n%6Q8GD)?{fE zj-UQEI%%Pd-t4v{?Xru zWmcSrpuSnwx=UZ%56rm8!?p19r=I4mc)0pQUfAUV7;K&X=|V8bW)5{lC{6 zzAkc?JoF{oQGWlFm(MRuuru>by)?aUUy%}T_3~-#a#I-Yf0?@S&$L}Dcxvhc*Y%!f zWimXK_UWeA;|Px|=4?n9Yw|DHVS znSEDYn}2jkVE4JdO@8g`Yi?nQg3ow)#A9N$d~$qkyGxJzJrc6#`@ggA<3U-&@&t)# z?ngNJJ}fAEI_<1>a^J#ftGVS~N5xsEWG!}bVV2d>+q+#xNHUnMF>BXNQ;uaFCaZ5Q z_nW%>*_+nI9`7__4@^mu3wjkP9yJEDDU4B_}@GV^;T7MTX5n<#^3Zf*UkT$Q`#3SEh-4$-l4@cJ?ocRpj`a? z*iZ8WA11g=u_<|;DL>03=Tk@i5;^zzP1;JgoC|9H{i*y|pztEKtMB#HdGqu(NtwE? zG+4rOaD`drPp`MJlf@RyGE3T`p{3=uw5ss9-p)_z4I*3O-uoNQs#{lc{@VTKW1@nA z)elRp4=t^A>5TtXbw+J!ZBeLun%2}t`GZqVqC>1N|243h`Og@5UjW6y)&9zLBujjQ&7-`ms80nd$!KYZ(JuF$ezFz4dSrQN!wo0>pTE?lCeMV1jaV%O9>cbruyRMjx`-G8^;H}SjyL%tJ zuYauU$REg5qqk^V-PV=QH|*MO%=ST2R2iQz$A>$Y>t7I$@jeD!RvQ=iV7NaZd2 z|4#fK>Z8>5WBZYtvu`%tI&lB*{b#lnJA$KaL@uxum%DQD8FoMVHh-_i3*q8-ysn?F zN-J%;vprQf@zBQw_1agyPH}(e8>udpW?^Y{Ah@y6uG5n3dZTl$lj5OujvMTDr!4E2 z*clYoIJ@Z5s$%I{8CNE*YWA*nWxoS!`}REOe~|ZjgTX=n%aI?_*~?CDS!5?v%(c$0 zNWVIFcgj+3x%Dd_-N|8Wm>YBV2=|+5ZpvpoWMX4Z#V4IR_o%;lb9Wqb!>mOi6PO(T zS#1{kHmCIA>6YRPdD`LYL@p*qPkg=d-1GjO$0wy|hQ54$NQv>(k}sQg{*A7-cYc{( z^lAUkXVNym4ks-RVa^Vc)Z($oV~%BtH%naq=8aC*&5U~w*Oc0F%RZUGY_<3f%a5GK ze7o#TM>lLe@0|L}T(xO^u;QU}jQ^&IKkrbuc~J4;s;9eV#W%d0d+H@8%c|o4eJ<;l zl|MZAZLQWe+X;1?`&E`Htf^E^c_NzR6(OLP`ux$^x9kRb1`M{desN}WhsQL1F@FBw?JK3*skd)-|1kSL&G&}-ZBvfC zo12zCn5yw~xx~yxI#WNjroZZ3-S^hxW0N)L4#&lbU-j`$RL= zeml9RZ>5=l*rn@R`m!>#m(BMyF8Vqt{qi^c-+T|}^|E}Q7IkCZ_wNpG)#?g9e{;IF zRNF07^2}1BDfho`U%Wdt^^s)2zrZ&w2g(|q(x;tg3{Fx0%J|24b9mFV=e%y;HoxZB z*Pfp%`1M-eF^0PDdWu@66Qp*1DUqAT@IT;5-j%EcWt*lb{n#ae0V$G*eNx00@}EPhn3*Vnh`$Jv_~9aB>jc_&02G~OnA;L7gZi+y7&4=gvz zUhc1`q^T^d?;^{-c479eo4Ooou?@G{MRtapMQ`yA>zgR!`m5>k42RvB%jZoMbmjE< ztIy=>TPPSI;jWz#ofpVHsYQ!LdDpG8uU~(6otRvBqn1NLdwQ?1O&){d!eyeO0W+KB zS(hGl?dZ1ekDgUjprdrO&#z#Itm!tjrA>QWI-RX+f0YC_{JIkCzp(oIyG@nGtL|@3 z_uqYP*9XTnrxnjnTYq?#%lwR zafxh;Sbj{Z`?`Cr)QUBeR|-75zfSc|elV}Z*H}T>{)vpag>SOh_~!0zX^Wc|Q4pVR zvR--mXOpsdn%!;=zAH_O+Rx^)JaX?}{%VW=Hqlm&-K+OpW!OoHzRlM;))j+ z6boZDrz)NZ?CI%oxxOxTqWMGFn_Jx%tkBePS-<X1Z+9B!}q0elD|w$?W+?#jyvXud{{pD_}saz?`&@!h*VsecIxAn?VA1*vjn84 z>#Y#IwkYI-TvDSv>-U#6$B(T!z07yE%f@+S$=6!%RJ(QNZk>4Q;BViVrHU7p*S)&A z`O_ld=(+8>z1`Ojf3E+(Kge?MIJdKvUfh{z%VM&EJKq1hR%3*B%=E(J z{)_r{YtNB+QgAEm&E&UYEWyoFL%*E2*YDr;vGuryw)TwNoiByossH~}BM>bFqQ zx={9jE#EA!gGS|3n2spcyBxY2Eq7P{)Skw9iHxFGZ}+^KcWbk>d)*&KR`dKr>yzET zRQ!@mj9pv8XOe0+ZCS_%=bpzu9=6LLIeq`$W<8x*ot>S5j6bYT2`r0=-L?H<_WU_h zoAc&Y-zxbv)A&;Q{4-xZ&ooXiczB4FN7hQjHong30(*(3@dksllS0@&pFg(0T8in% zeOr@2jU7IHH&<9qu@#x{_dnMMQ};_Q0dL+$o2Ncs>#W=>_Ue_!S&13cGUsw}<;zxU`wb*mfj{o0zxYowBU)}RnaoPM* z4NZf;K7AJJzu#(h7Bs2q$Vmyw&^UM2IWv&cAyZS`{bOM^-_*uc3{QSrX=*)Ry-Va5 z!@o~*%B@+KTJC1QF>5-Xv0?f8Ig3wm{QG`5PDK7)8SjV5eH^9yZ`E$98#k>F=~%EQ zvaFDkiP@*TaP_OLsptNkT)F&cUYy>!O?Ouc1YX$e-)mq0Rt(%1y|OBNeVo?Y*kZqV zrr$3v=TUsQvG3;OB}`pgMEG9b^;|Ev#PoP}*8OP=UCZQF@7lgNwUB|MH7 zq9@JP?Rs=WPhBP9`=i#1jFajgzI|RjgGu@D@w(d@I;%D7r++#Ae#PA#hO^4vE6!Fs zn41_Tb|>p<(`2WY2c~?z;JR`_inONODUB~1^QSF#K4zJC>)>y%nWc%xT4#z^pWAiA zN#)R#&uQ7WJ!V>{?w|59eb{5g;KWb2i!gScIJLe!})%rTvguSzRGEbVuux76#)7VkJFs`N&T<@ILoWuJrR+tudGTPz_cxKQhuqWi?S_fuS6 z{*SgykJz2*E}~s581{VImPk9P>Fb!fo`26d{55}Cm*r}%e_maIlcq;AimWc)Gu1Mz z&B_3ahT#~qt1RC}E-*)3aP8T;tR z!2y=2d6wWWchG1zwFgL zvD#%ey01^gDg6+<_}j&CaS(T;mcnJu55+}-G8fLiWBj+R{nx^kht@oDOB7`K6CHj- zeRff8$agc<)YJuW1+nFohL($OJbYb#t-`l0wkcty)l4I^Q)&FC1bk*+J~S!nz^z^* zzby^dxJ5pH&WW>abePD+rqgpdZz^Ng)!NCks%&b@PJ$+j^nI5fOuq0;(e-I*og9<3 zd0X__PbT7Xze$z8>}pWte`TY?_+cIE`-dlHy%+p)e!mo zvb$40ualbhJ8W%~<8-stwjaE`xw-|a-)uPeWwW2aoQaXD4d<)hIt6k4v;JJW<-Ks* zG{@Kt$w#wFByaGS+gnP#+p6{a#M0MqHlEP^c*QW3QIhdr?|!9L-s;smKSfC`-94)^ zy!GpMr32+3OTtr~B@h0OX9qQAI8>sy=P8EBm(Db6?pU%!WwKJ&wyJ~DOkG#(uHCV|q!F;?>Q32P zde>d#U~2(tLoAMJW-`0am(%GojP{RTQ1l~s*8@rBgL8gwy&~eWHmdVq@O_7KQ|l*e zd1(%vKsa0d&FM~k{jtBBpGTcB4QP0<_v42Z*B#V3p7BRUEX!e;@b}l(=E;*MubpS) zc>TiEQcquB(L4Up7glb$dDPg*z$=9Bcb(#tO$j|L-#Ol-et!9Ug);lYQ2%w8&wcrP z+_tTI=4_@9$#u7tDh}S2t2(gcvd1ouC%b$*qPBDL`&CPZUpm+Izki-R^I2x=$QJn= zz60B*bL_L5X~OhpPOSTdU8UK(*+3IBs}=<@)$D3(6G?ltRc>zT^_fA6hn942U^DBo zFBGy{r>7O06dlm9!COGbQq1<(3Y%BQvD%UvCd)}A{rvp}PyB!8-+iq3(s<*Ik?_At7}K2v*A`2E%8rAk*Nzn?yTVsBOG z1w|DDU%v+@=UNA>_mu{%?ar)!?^Kn-@^0owzDe8j4jw!|ec|^dCksA)aVgBxTeoZ( zM?=oaW&Ou}h5MdFP7VwSQ8~lBMf&)e7v{buIXfj!?b={5HO;zwRwZIq<>52c^K3KA zMP9#M+8_Vx@ZQHqt5dGrQgvheck%4)iDIIwC!d>8ZY;bz{BMVFHUGl0!@nvXOclSd zCtH2O_5F44l2~~6iR(7+ezgC+p2Pc%{N44@i#VTK$TG~YmEPo^#$s<%(r_~--Mi;* zfPBcl4!a_cJyneJ2G_H#)#^=UrIkXrMEr2b!;!w1N~2$lX(|M1heJ- zPRZ`Sc;{cg>hgnUPjbFH_o?9|6Z?Is@;6(&1$=V-UomK}zV!1@a>*e%i>@ao+R9yz zkN1lU9_9Ny?eO-!G29W7fhOORwmhq=+2Q`q+dv}l3aiNJyN`@68gHqcy0v7jseQ7; z#A$mD-p>tXJbI`nn`8g-=%eR38~)F+6P1;dX!1Mk-mxX_RbOt$k5Ak^KXNQ%aZ4IPv2uS)8^frt=bQs zKX0%6{On|3x_;#JzrVk8_w6-$y(#ammEnBrvXjr^-FVz&PVHawX!<6DzKKUCJTUld zy}r%%tE;GLU1q!I;)nJdw&$p@Xx(D?|K=jgn_r)*Z8lc)ovCRSyx;r2wq@JGyMiVa z3VQP_I`50ubsZN!+m!!!_lD}HQjWD8)j2BLbbm|nMsIic(EL3*=h`ube-redt;kuJ ztJ!qEob%wGWm{N2o-9;Y+j%Z)mx%2W*Ujk-=PeDI>QxM*W~619b3PE(&*9TwuRBrd z?WB|3@2&-|Q_R`OebPzxsfg&~q+hI4osR69V%(8=g>8QQzn!gpAwTop2(fIInk!_h zbM0c@w*!G!GE5Y{hs(Q9{CqKU`kX@E#J^0T+jdX2e|qhcMZdYe&SIj3ak$ZdTB>``E;#5#+VzMZY|2z#8-a-jUx; zwj@l6e%Um={I6BgzW-tyv+Ecv_x<~Rx4qFgz0=9u?oau-`Q6|6dE74N-QAe`PNziD zkn3z!Tf^(sf9s2%FS?`u>OtYgXI^sUkN@kjb1#Vau>8!f8{L|{3)gUS|C6f;FgL#) zl>K}E9saLNw&&bzTCgS$3?w{33qqbnWHml72s5ZIE@%r0~8F%ljYav%XYjZDH80$-bzd=DcH1#dFgm zxi=eEFTZSHqA3ZMo^W+-s ziBFzKu&C!O77cWHn&c^16V3kPm)|B1C0V-#i(V8|JAXTQor_CQB9cS9uNN=?G}H{(&b}oyjIRm;YQNq4Q}pC z8gjdr1o<1Vh?Mp=H~a{jxh$q5uH87w;GkjS#tnkgexHa=j(aoN;o`}op%H4?=D7=2 zgtRT-HF+K=Ig6e9@wPpG#a?aCZ9k{%mT!a`hFFA=`8c@ zH$uLC+>x1g=nTujMS8jkbtOipPCc?%dT;Adw(z5UUpxi-WGsUM6f@Y0me1VI^h7gg zeeI1l|5Vuzl~d0%ZQAhfS!oP!^~DNBHASho(x-D00o{5>N?&S+dGAps=T|y|97~j`5#|8W%7^L zo7Wef|NQvEF82*y+s@8;+Rj(?S62<^gU^Sry|k=+a`Tp8%_T{WFOPyBv0l*C zzS^;pbHeF__Q{KXm>-J{d zZhywKCMoom>gDzS*6;r(B$yPe+;!C~Lzq8>N8?!um*ayY*L~mk?v-TR$fGcQ+HJQk z_7&aQP0X{qI~py2?L5Yo%Ap~|bFKbasL5-4k88Zjw;f|=9}Zo}l=LQIiO&S_nC+$6 zE^B{DIg9HGatTT<_fNckTt4wb6aRyE%Hlod*Oo85|JvC6rm<2?f%40w6=!yBuy2x$ zJO5{cGRHIdTk7oW?A!%0m%~n-*<~Pfravup_hO#FsoKx(*Y4c5i|d4js+iQJ<;RRI zWHcA|u*4UhbZ7msYpEu)jBJTlZsBij^-CMdvnm}9NgSB|V{dMC>Ew%&T$_qEq}|ft zseG$yvUBdLzWckl|1X&NU9b@=qvJ^k$7y>}z*Lpm}Z zJY2V^@!P$k6>iKzW$aB$MdsKRi*WM&XtZHlIAum29tX^KCUJ+oe-(8r^Ojh^r%Gj`xW1nhYdas=e%X~%_ zeoMOxY(MnV=S`Kh+P_6)Y3lY1D{G~*c}^zPzS`_x_pzq$gxNI_)3fg!47v?1UWmt4 zIMyjXdER|O#MC!;=R|&=+Jw|8XBNa3`I+r1%}zD+)X84kZ?|Aarh~em=bGP#N~X5V z*m^9<(~Fg{?8`wF(SRvuR4mx%+Pr%mE_ls;#Vrl#XKPeniW|23A6mQ3=GT(9P0P1< zuRBx7(V`mQ)8Mnfr{T=&`3#mC8Y>>%pSCPS;?%AHrL}6^hFY83w(ZgFo+A6Z%T-v z+KzzLmzLZ0DP7g$=vyloxaL%a@7?JR9}A9f?zlQ}`8?GHKOS}KbG?oQO(ES{8oJH6 zJxH)rfs^l#)%PjfH>Edu>xJ*xq3N(e*Syx|op5&eA?08BAC1;?aa=PkuUnJVocwP# z!%V>>?;x#jZ*Qv`>3JFVPt^{;wnL|1H(q$Ea}(5sWZ+yb$>41BbIG1ktXt>TWQBrZP%9Vk*;t>@En4m~IO{p_v^*8RQJ%wGf^v~Tt6 z@^e#js=k*iEFxR`*;M4<{ZEf%1T8EqRARR7w!NYLTy(m^-!qmK+8NTf&&3^aQ=cz2 zdG!`+fjgU0y*EbmN}ErM<@mOM=b*T4uhFY36UCDS4)9Bx@%)L7cL|J6TfK^(C;QF$ zjz<$`1Q&!BgmQ{}-uFAii%L{X1~6y=6tuioHJ0ATk7?G ztNQi)EX6!+B1%SFT^E)*M+;_dy}ArOlD*#WvC?j)gOfs+>-8t`H}1@> zUYVn*r>DK#;{B|Q_4@i#ThekrD)smI2p$e{^X3$(eiD1IiIv;I?z{E-JM@YYq35#|ErnvVC;-J>y0Z)V@Q zxz>-DPLC5hJn@QcpRBc-+@UEex;}ntUSF^N<5zjh>g|7+7g{|JxS8z9THpIWe_Ge; zm^pJ>^X^99HtnD7@NwgDIpHqt#csW;-h7HEt#+Qm_42^Id-qmp7;M%(+|Gae=H^e2 zgjVx?tKU;xm$64~Gv_329PC-%>` zZ{lv%P4&B0&x~>iyZUj)Zu{=9ee*g(8MU0>Wj&KSE%n>*P_^k#6RW!=0`Gb23O@4R zS2sDL6x;f}`0cH&7xz>ae_Zp(x>ZD$?aZrvdgW7=O13UrA+fjWPHykRSyz{D+Oc8F z3YQtFFD|)EQ~JSgA^LcyUQs{Gu4AT|7e(&neOgqqnJx9`+(&)$U1ZC{Ei_GfvoG1* zT<7qiOH|vX>)X%gPXo=pObkz*VxOjKe#&&><~2_=f||5!ZDZ42CVo!bwa-G`+o$&w zw`1(=(A|FPHkS6@5M~dbZ)K(2Ip`5O_dUVjhqfAFLIkKjtC_pUR|FBt0_$T@rZ)r@8X^G=_zk2{L> zV-KuTXX9Mpp&PMG{AW{QO3&x5Pt`1XQd6})X!ri?GirHye%`(>n=8uh`mMFLu!@Kg zI{nF*kwf7B92@b|)AhwCx?Xxe@BeRh(F5nfvk3*EQ*KKo8*TTmUHNrQ_x}gG+ts)P zR&qa>U2RkR{c**Kmrrl~p0iKy9)HcdExEVD7-IGr|EycUe_*NibeE6T_XYpeNxqQ3 z6(;lTO{;Xo*W0Xt4Yo-~I2c<(znxqv6<~EPq^ob|=Zo9pTbb|W&P{pS@8r4j$j!5% z`OhW_)|{PaBB)dS`g)xO{F4$nv{UtAb#|3u`8;?GB!N0z86UH(3;;=@FJ-*x8NH9tQj zd(GzGzh#RF%1HBqIGy0>4|rZzfE&puafHUDRgxzTFxEamw>&(1OxK41HfGq+e& zclIx(6^mn(!>iZKyvZu@>r&Xqm|xFk=V$3Otv{PTU1$E(pxS3IRI=SaOyv?>nwok- zPtP%-;p@}ytBPt>md_L0U42(?&y-(_oLn5w+nIif*`_V9#$U22FyWQlx7XL#Ydt^y z>i4VQwgjXmcC@zv`9~PxvBT-CsI)|wPhz+x(p|~abLKyJJG%8wfUVFQt`VA zSx<_ee^B&S=;H(xhUAtRfsMbuzV7Cbw@m2airH7Q^O%Nc+Z4qX){;Ckr{86!R`+M! zaggt~{&%|H@W%B}k$%A+pZMd$a%vOd=KXzpFR*SqdTfoi zud7T>p{4&1yr`XX z)z-5vryIZ#rN6>`heZtp-i2lef6kLSw`0Txx6+ z=5&b2SJ!MPxPY5Aoc4vD!M*@DlpNDO?UbDs$Puaz^=+yTyyVEx%7r< z`vV4c3v0`lwpSi*aS>2>ZdNSZ(4%j-4ZPT+O5K%PVBHq)Ya(J!!7(jy<>f}(N=$!M z*XmU~DHPT)GCKcy+O`vua*bZHXliOEd~1E~P$|cuv*P^fCEH9gE;zWM!z*~6tdV>e-n8x z6?b~=vs0QCOI?pTFY(nTB)$VT@A{@5t$F;o^iag2#KUc?c7~?y2wiH# zQkv6aW%ucj?aLohzLFW+qhn&af_TrCp9%c$s01rEg&f-7_RTdoe`m_`-a|?(Keli4{GC#_V~&q? z^PWdRSH2en2ii#-<%{3H*)7ZT4I7Jh=m}}_Rox;L4?lU&6HMH zZjaIw-6EnUx?scmfGw3CfejPqw;wpy`!MYEwx65Z%j8?D=k9W1blxpnTeYF%jnIRj ztw$vIXUG@zoDxkj(=sge=coy(0%)R`uPycf12XQZiTcx658dP zwLnw(g06EWXR~rcxAFbkeg%2=Sp59@3QBduH$L1ZdHm9a1$vu7a_E^k`d@yLSt*HzQhpE;*$4;6nX?0=}_@Ugx$R`A-6g*oO-C$FuIKH%(VYOpll zJI`6uq;5}u@C-M(rQ1)re9!aq`%qHWw0Yk5%IEX9UF*o|zuS<|l~DijsJL48G_R|V zZ|Q|jQm|*-Xl4<%YkTCUrU}22LV71=EuG13+4V=#(r4F>rPn07H=SPh1t{QrpjvfK!H_!hx_MOS59yB>HCW_1V=39O# z_vb~YW8K{ur^L>AGAZuX+=$shj+rJ*F8ltJYC4Bp)!P|$t};?m>D#fxi{qHDK0NU_ zZA;_#+3QZMUGn_2Ebm?Gl2m1fePwT>T(8V%T`RQIY0X8m?eq zAaHnJe1<^8tZJ9w6+C}_JhJtaTNx5D`$;u-9b+yJlg&Q$FEewNytCEgNZ_tBr5)uuL1jOlGlvy>7M{9<%# zwPy2b?)mTe3NkN>=;_tiU$!{D;aP6kr_924d-gt&dhQ+m{_y$R{~TXmTN@gf=U9F6 zjM&7F4;u2Gu4~qG4?I>lWy^6_`F{T1ZkMrSWJUwa?^jEU*ZcaNZzgx;o72tS?u7jQe`K*qmE4J>>g;r+EoYO7|6$sg8{lpXVQ>xTM|2!S-Tcat54aG@zbeRJoL$0BllHWQyUw?H7~2l&R1~X z6fRbOzs#w)pnye2_QAu&&(0RzmwzX#KhJjYHN8N_nx(Zxsn4QfZwozfm9^wpUscqs zRw)1Dez&xFUWmv(qeB325bAsc5mJOxZU&4p7kF- z9+&S&ROwYdFr#ArRvE~WwkU!x93gu-n#RJo>79!MBT)f^H&L`KDpzPQQ*&*ayGX| z!ni9SCaUML=1C?Q?lXGKF#QMBXR=7-Nz*%PP5-dy#4nZIHa!+b7-OMgE+Y?trq zuhyJ(@ACdFOm8+t_{Oi+nY!?mvDW*>^L0T=Qr9NG4*p!ur@Oo>ch%%Y$tx>8{|fv_ zi`~U^{qM;ipU>N~`Yp(je{VX=FPHDVhP8_F#wV=huQjd3fctn@tf@+mNObF}-@Knft^8UHU>^M?WO>=iK1i z`YtPJv(?VFJSNRWFW$ZD+j?F2K&Y3Un-nE)~wMRm@$8$>8rs$_J#^KA00@MPv zPS{>!Kc(Wu`t#V!zL|$CyV~T}NTs(levw(Fc4hYer7{}RM4Iyo7uG(RnD1?GuiK{Vivr*PhF3HZxse0NoAo&~}ITto9PoiNV=Hk~8*+MXlc6sCU-#hKtngo05(H z8kt_qTErqCS{+bxVfT*H!LMh9-ah*G!Hu=Ov*M!yH2P$PWYXrcZVg!f>&;}&530XE zsL!tn(lGt=;o;w^)Ds@5358Mz(?eJCh|QAHJFd1k(0S{@pwD*RN39c1h!^+NO^M9X zdG>8_Y|IUv#WA9u(dsiR5WU<*u4|`$b#+eK^L`WO+?ZtbhgalZ2Yfl+ue4~#hku@%&U$-!PYe%f zxbUDT)52_(%NyUGBmMRHhtA&7VKK??Ue0dE^IvW47pBnUNe3Mgb~_yWDDubGSTm>RmD)V3Wm*c}H#YE2zy4O}{Kf@K zpI&rbDR@4qfPq1Q!PCVtM6ktpZQf@tK{f`v=Z8+{>mIwlXZ(rtZ@Y{^tA@J9e!ut53f^UBV<|!jFVP$*(-KzRIiIUe*%xeBIgH zTaRWjUrWz(y2>55{mSJ~v7>@V0`$(tcuiPXoT#G{p+`Yao{1e??!1~Sl&zS3 zN1d~Yl<6neiU{kN{qve%=KpOubEd||aGUuf;Y)_U?*^tZzB==GIg7>jPg8rqtzJG+0$#UU|@h{m}EyY~z=m4%DXrFS``m$GZW;bQR?Tj$))CmN^~E&9a# zYg5GbyjWM3id)U+SBQvg`8~0uNdK2e*s2*TmT8FgXnacjQL|of$MWtu-wv$EI{uCE zLy`XVEFX)>J*xZbdXEaH9a!)8w=46#XUCys9d9E(oGGc85#W&iYM1owz5^Ckc4G6^ zdx8{2AHG~1V$i%L>#Ej4*0dw9{Wibj`Y><#8j0(>u1fpA2<_gW zGWDR4@grM7$-VM%Uu#3}ZfxlB72j|2{+Dk{+ZRJ?rrger(ytE-9O$n~pLxM?U+FjH zP;*K1&kwJzW4%+F@lncp*{ARBeRCXT>-W6D>{{P^rtJMbC&peha{o7pmKKICh z#@G)}cHCR>bSa;Wgq7Ihle0dHKMeNXcR&Aj|HHld!X<7Ww5`jWZ%Z#W@{o-6^2my| z3oe`FFujp2S!l|s$HqcF3r-xkae8L@SHANTK6R>IU!YYRcrEw$&F&e}vttrNS=THCad|j1dDEs{;8VE-z&a(_Uzd^1WR7Nkec1B z_&U+~*P5%2D<>#*-S?^RciFa8daB~CQofegZ?o=Py?uS*f)xV#_FtCd?7q`vlk)WW zq4V42l>Co8Jbrifg(dUkkA0EtD)Wt!ik_$Sci)B`9Gu7d4;~MWD>>Ld@v8fOk*hoX zLr7iurX~{Z)oX-JGSG9?Z)7 zr6JmLZQ{QLPb&X^ILyDJ>TA~4;8z^8&CtN9@87T#ujE<8 zU}`Nc<*PYo&YV`Q7Q4FrD_<9AB=w(rwBx?}UZtSdd(-@bX6oN)c4C=(R%y{UDV86< z917<4tqm27niW3Bu2{5kr|XLg3k~<=c~3FCb$eB+bII#vb!O?Q;t%fZeEs6WKEp}D zdWp|=zjg_^arrcF^!8)P|L(X8NZg3=SRA^nP{&d;J(NqZ@VI``nbq}OQ4J>zckN}> zDwfI1)|=Ys=6FP7?$zW{IJ1OIP-R$RW* zQgynAMVRGwk@l&xj(;|KYZXrhO;^1<5bwmA{3^uq|3v;wuf;c4nOZh}T*KrPu2yeqdW>KTD6)jl|5}GTF=U_KX9@`;?C7| zTPK+9E_^6-=vdDI=Jh@;tKFX}b>2$85bhxM{gu1Z`#lFw)V;9s@~c-;-{C#`T*3D+ zZIKzq_StWfIUY=2|Mz6{LoF*7<%9R$Mu!C`R^E z?b>!%Z$I9j&ENHK@}mVgJ^$)9m1sXZTg!5Ln`*+{^??)drYBn+yt8f18?klAmOom@mX)le<+7pU`r>#6r(^axpDsl;pHh&Gk$&-M zrdH-UV1EhdIKZrdU&{J!6@F5!?(Kc#6Xc<*rA!`ml~H&kB{-lQ9~L}g*+ zt3sQ|0@ibD9@&=j^*ukYyx3cO&Zlo~yPBE5rKLXn{-q?v+Nx_kZ`i)ihaO#z^bOSd zk(738Lj7x|uAXT@M;GiqGJER+zja$RMNLjVXg#C9SG51!gt_`fjhjDh7QDAM{OEb! z#s_cy#Q4N-6mw2Rs=)c>`f zW1;M+pU0kUyK%%~qxQ~&w{p+k^R*~Y^}Jzf?f*OAo3+>Ro2^Di8dWTI?mq14Xt*$D<#=-|u&%*&A?uJ=n;evds{UENdHWxv0vb1T@?-U^WEvuwRv?WeFI+gRsk1vl5H z?u}n2t6#LfBR_LyWkvBZ{fhKs1tyt~x_5pyPx!#x$ibc4o_c!w;p4|;cmK2NTk*o= z$M)=&(0G3bXW3Q!yRLnnzgW|1?&DoNf7yi9d=Bh>zps1u{W%Q_+}lr-ZC9J>$h2MP z!qg?os;)AR`2Iytns~)jKY3Nq9rx)@E~RnBPd?2%apK6;IOdQ$=}8QA7J`p6isx6# zoA%t&&6%%y-J0on{H!vecRO!ws=aC`zPp3vIv>vw|HboUVkc&uV><-C#NX> z+nsN`E-j72s%6ThCucWnzgtky_B-#on@(jN+pDVS-22?s}S3LXo>w)1w<(R0K8u{ppu42*1l#vEw`Qqw=FmRTEmS-*%pB6uvIM=FmnPJ1vMV?3yjGz5R|d4MVDGYC-k{EN z>hlg<^WT4Dvi#Zh_G#R=Ue2({iQXpk*#0-e%%r}nHa`l!yog-$qext=-a>3^?URFy|K=(D{3*Wg*pKDEx-vd= z3X6aI*(DpX=?7ev_mT%W3d~&)$k_-Qx((t!lpPRmF zy7bHyRKDk2VqEij?e>mtft1Y{SE8auV2O2 z9O88^|NXYC1)KcWJzBb`xV$!mE%}(%zn3RpM6Bnty86Afe|4epq|nZlH=e#|yt9ho=Ixek?tHEJ?yEaN>REyane) zd5?XS){`!)3vB#Rzg_Qt5F1Cs{g|x+{9j(QCnkR9e6U-&%zodkU&8lf{tAWV{$`c8 zF^+ABH7n}4dF-w+Q}^}SPWRt-8cVL+;FGg&V)ist^4jzCgWMd8>1qsy>nG}){nu#t z@?syq)KYJmuHL5p_U&GJZ|NP9pUuS2B$=E!vV%t|=s^)ff7Tf%`uN$9zEjN6#HvGbg{k^w ze^_>3cy=bXpP4=Q;<~%BFYc_=w6TdPyk9%_;=TQXdH2p7UcG+(!87G<2ln5MJ#kX^ z$eWw{A3dG^UYxbCdwP!B@rGj+9}XtSSj=d$t@iIYQ4kYjWf#3q_PqUddD~sv+h))H z^Z3pU+i8=F+;SFe@t?Q3M4Ibv)6w4@y)!-Cq&Ri77oSp)y&t00Eb`XWEHAij{rSvk zuWXn5&p*cOceG+%_s?e%rwl`;ojR~a(OzdpVzzX7fX6n&L#tPF-e*nPwki5hh4cK~ zG4FNTSD8xXd{(%Tdz8y!u6;kJ@V$v^wZ*6W@qYOAY{xa-lVY3yX!~S%?3$A8zRAOL z{%XnXYdO7+o|ve7Q2z*@U!5AGYjB=~^X-URRiH8L3yvRFpMAct=kDf%&Y@)|mzbBl zy%Cu@y~g&p+P?cc8SUTwD15)?e#;wMkr;*2f(AbbtTxKg;9X z=SF1}mOj1pw!hPXS$?Z`(Dm?kt_F)I{T@?8O&kq0*=(IoDXVY0(GpvfVsz)#iRZ^O z{+-+Sy}O?|h-*skAKk94w~H3fWDnJy!Z0sV+>6`rY}xY2a@LCb+iN~1hB8JbighPe zhs_9lvB)$fes|yd_)2!?`xTP9&AXLepEAw){U%%RWbVbSlQmXVzc{P;=1@D8C zFQ`30~!DPnH?GW%qsfxnhgeeMpg26vRAKN$oZjO+B|m2n$1FKtJ?~HW|>Kq zz7F_UTvVVRv!ikI%j+x}em*w+_SmQD7VV^juN^*7h`-5*H`MVG8=9T7GHrAF;mV4W}t5o~=dOZydw~I4BuUOpS zciFD;*`|uZ``)WmouYD{cuahGDO@>)6Lh+l`fHgRQ{+xd^f z_3cGPo0hSps;a&yEmyz#N3;B}($Y(hl#U#oe_Yo$)790;aWgZc(SHle!;bwsc5T%V zt-0}mDedv}m6{G0XSoSYVP37Zv?=g${^Wl`FV)-xJwGNip1CF&&;6>gZ1>FBy>g8Q zm2PEcX=`a7`*!2+jf#TV3(WUeJmECSzajB_ee9tl=kGaI9Di4l_~Efr^o***+{gAS z*7+O!J*fZx;O%~2p}+*OvtM5)%@99fXgEo(T1T#Q&y%BKB@?UjuIhX|B(cxhv-a*( zk;NA3?1~Q=3yQAhs^-3$vvzANeDYs0mBY=UsJJ-vndCL8#XJ8>RV8kCk#ew!^;ubM zy1j6CgXDrOyZTl+sfbP3_?1U%y7v{=?1YbZW@T=^`23{%#XZ^Tf4*F^`6BaE!RiaI z^O^i;fsd#2E8cah-q`sl+T`5@vAuGVVTM|6P1pC>aW78WuefM$yZwd=q$fu2SN({ry0}x2gYc zZD~J}{Cs1wyV5crxt2L|m})-1wey)%;lK1H|Ebo+PA+AiB(JR3uD?EKZvk_o^R!ML z0nNB2$`@Y6?XBNv@MdDg?mv4~SMW@;IC#wN4d=U=zHu*N-%VSwI&$(UhY8*d-V3}R zoc{kg->q`4jLd~ap~X8atvQSNqV%%2w+Lr`C@5>%?IgHl*W1ataxB%CC7-?wFIcqu z&a6p++rgV_11&RO9MZnN?23Y!o~%yNqy70)ryjg`bg9y!99=KgV75I8p3M(>Jr32a z4qIFBp*fz1>F6w@Nd_(}7i^iSr_A{&b!DqX{ym#7Z*PmUKU*6*mv5<&OQ@Vkd$90^ zhY!qn-j?!*{r%d_qp&&t)VjU@KR?g7yTbBZ?A{K^WVOzYO&gE>?NgNxpDTW9@yp=0 z3BRt0h%ZzzcXwI3G{>bNp?KoN4Xg<=vNM(1UOm#RPdrlp({Rt^MXph=e?EVDr}~t0 z;QHy$uS}c0@JeE-n^;a|?;6`}qS|2{{SSAox7V^3nX2f;-F;#8@w<_fYkmpxpRaQkIk53Z?%g%55$BOuR_h(PFB}`JAZnRB&9(-}5gx%xNX72+`MqDz&h*SFvQ5kK5s?*6~-Y2S>RbGi2?cDy*e{NuOi!y7(smx$Rnr&DwCX?we} zzjIqUPE2n477)s5?fiPxdApru*LNPe(a{znZN6&hr5}aonM}maO?s8;snx8yj@hpK zXW{z(N22ob{nz8`Wv{P`J$zu3P05<~*_*VQT~agZRb$_zb4^{?a(za@++geTf*-6l zZ@A)8d7)`i&>X8$v8|%trBtuj?GB8|ooPLr{ouaR*N=|cdYh=(1Y^I=XSRK+zr`DOgm7CFy15L|k9*B9>=n@<9l`sJK2z5AOX zctf)POs(+Nzfv9lBs1;yJ!g0~`^%ai3|FU2>w0}?M%{M1cR63Szn-{X-EYOAEwi-$ zd#D^(&bDdmo5`N(3Kvpa%oR=LQfC=`j1fF96eS)UcY5a?qgnOg+dLWmUu@+4@M`lX z{@8^Aj{9ym)W*w>bxvOlRYo z<(#?FZOv}YqV%b<+rNFgF6_5xTmSBY{>yn={Ga`vRxei@@-Z|Qi;O0m_TJ#F#k_cLjsL9M94q>l&vA+^->E2C zdGg`w@~~*$cHia%v2}(*YgTLYEn|83{m*I6-P2|@y)8~te%bGvac!~sE?YysgURz7 zRx3S9eZ{%iWa*=gxvw8inA>|tzD~gE_@&cMD|r^ObRFwak-D1O&~o|Y4UwJ9`F(YQ z@AUGtL|g0^l`Sm1+xFt#y6%;i&3DOiAJ3}(#UW|__ShlAmkU3;EVkQpUv%1q=6xcz z%va^Uy78|_ZvK0mk2|l>|NpwG^5?%ky46-aIIQNbq||@x!0EHhdR$*ywr~6IUa(;f zTfgJ%_9y%y!Nog^Q-2UT%*2GlhCJl-AucGAk8h-4)btSoYxAX4)Lwo&VMR{Mm zxZLb&zH5r&n#}1jGdD`#nija>?(Xu%aeJ#)ot1dHb1_fi%Bf~|`d4xZ)_DH^_D|i3 zchULa#i7@${EqSd`SQ%BXO5*PZeOi~cnW*obUk;joE6;=Zus z7Po$9G5^^re?s?Fcekm6z`E;C?_0HJU*A+{q9?0*bZN%DJ$6h?QsK9r912RF{%hyV zDQx`Z;XAauUd2UK1Qn#O%vsEG@JzwSor$M6_0PFK&o<=J3e`ndZu$OxJn#G6$^Lel zn?!lG%v^LTKoryzx(`0+RJU}+UC=?NVGK3ivflCbX1q-+f4|SG_Ek1V-5<^^FYOsxBO@)o%zvtJ>h#gSo1b-=m~1aB{Jx^d>z0ZaEB7Z6aUJyw z&-+U&%HE2fxVep&d;broGbbeiOwv>i+HDCH_))K=^2WR8Q1s$>p-Bm!ujw5&{%#+% za6v+6x0if?3db_G;`;r1TGAO>&Of&2wnuTz+n{=E@ten2o|YWs{FnNE{tVl9Q@K(( zgZoN9c&NO(7PLR)__`Wzn+_?zD(O0|sy@xXQY?i{^Mc!qcr9zXa#}WXH#J9v%nVYz zbgcUE!@%`6QOoY~+*B2I2>L(O$bQ?c8D>2l9RZwcKeL|DFi=)2kNUcXL3L$Y?f!t& z84F9oyMI(J?zy%=CiclLUyDsI^#x_^>ff;Fsm^bSza8eL$s0Oz>9Qpv7v1>}Ufv$V z9-dXQ{Pzy`otJv`WK*`ZG#%aL{24-@_b^fYcF?-eobwuo{lCQh>tv^GFNS zQ-!iY2kkuX3F$vBSM77AaH9Xrte+~OY~DeVXDr=!ee1L@3=%o6IaNu{zHH&GP3301 zO`Huk<0N9w{hc&x*#?1Glaju?x*PaM$cX0UhJIez3g$= z+glQ)?_>_W`XSBQwX7jwshr;8`Eu*>ByLs<*!`$vz4m9XVDc~CqhH+BW-aMSIK`UB zq49~k`WW;1l~WX_l$~5AbNo*33DJA?I#TO`C4qsDgZ};`*YcEZz*A(qh@XicSWRI})YPH+_WVWWK$2?O>S65f9dosrl zyx6{0+c{vLmY$xUg+Z3NTcF3}h|Oue8-wege;12l+{-0sxs!wM1>5!8LQU$*e2*X8 z`YQ4Jq0HP#8GF8I%yyI98g_S=lKEpczQ20{-+vR6viqXx@~7Z^MWBso)>|Rb1IvH4 zPF~GjRWeolp41{Ei<66XKMR!9F?=rjzP_*eU6y)=&aOA0<6OkA+{^K5R!>Z<7qw|1r@&PycC{eZJ0rTk~_e zdX9COD+5wN^IbvD-$sBAKfQ9akXxqasO97*Z*@v-V*lPS;aFz(VY?#p#`uXxBC*ko5@1D;uI3I0%VOM_r!mFpI+bM5iojLP{UAox2`NsYXNh>!7 z)g7-czWDiNI*Wzhk5buxaXT1znVAgUEMB_eYJi?x+)QD?QU%WjkyOT@0~0xX;?3k8 zx925Zdmw&cp=WmFcCQ5)Cp?-yCHB7l{qXL4yF)MbIkW0E^yR$&yM?ED*LTr%nJdN5 zCtTh3Kk3zq=YjjT>C4DI`O`#|2y0)%i{`~nGSy%G5i%+9SwSvAKfQA|Hdn3vp^#EI$28jIi`|Z^pF#@1E@j%pH`(oQ{enAE z5e4&%H$QyyjLE_xOnU0VRj&_leAhp$&gu7ZN8#fQ@0TyXuxVwCU0~*X9ofmxjjWdo zyi8xuxw-q<+1H%x7OBQ5%VVy7^#0x5@pYq#$(rTsq8HQ}F~lr!g{=jU{<-Ot+e`PN z?5U+J)1;=W{z?qc)Y9^r`gGC~`O2P;TV)JZqzd1B7*P?n;Nk-B_HCh$-bE$x{rYu6 zQ|s8#FWeuBCI;JHTRO+lXR+CjKc9<^yJwrtW;f_@V>u;5m$QcGTJgDzeeRSZ{`3t-9?VrT%?h{K)Y%*VSc4vx8 z`SCwHljbkGTdnZ2|9;@^!sL(n#j`FX_j)x(=T^E*RH!({z4+jgnVJq4CrmuDT>qTd z#Jk(~$M%G`*(-DHUvYT#-+HSR7ZZE0aCnD4e>GV^IiRNcak^6J=5Ie+H>Eyi{_K{g zR#mP)-DA_$Y0(qfpG;o4;;9~cSG~Gh((k7c6RVbDwzeU>o$%>lcsS74|Qy7ao3lR}r$+LeL?i=Xi9*?afnfdvkZ*SUCeyZPQquWmb(WToX%^6rX{ z#R=2gAo2Wth9a@M&CJtpRDHj=T;SrK^Fe|Kmmh4|zkklPMEYjF(+otNC5(&h*L z?{oa{?XxidqSGHg-muFz+tn-EzOLV!f#Pjamh8gEF-T|;L4 zZrlIGsI2yb-K4tzys~V(Za2Iq7o?o!*ZSp>`Yys*q2f}#*n@YMf+jaEvQy^VwItBF z{NJtAjN3a{+rG#&=(d+XUO%JuN7AWkCWXmTjt=ghIlN749SVcL`2Cr-Dc(gy{GPpM znT6Pqr=p@K-b~UpmGk~qY+)BBa%AIyfZcy9D);};SMHj!BUv@?Hf#LCu;j}t#iq$D zUs>xph0ASu$;T@<`QJ{G%vFeZbASK-HQASVnwpwIOqhfF<701cY?|d-c#7Ya>+xhR z$Cul!*H(o!Oxv=@y)E}gNSQ-i_fN^09Q>2xldl?UUG8_X+;$}Rc*wgf(2)wCcEvvW zxs2tc+4zjZ8n>-;K;Zv{N$b5HI`pZA-~zi+p+ z@VwXkQ?Aq-{Quhw5FFp^d75;Od-~KBqGADEGkDA3&M}9M&eIvwj z*;daGbSmnT_tEFp|D3)*#M^Q6*`|bBs?~e{7|r{cxB8W%SLK!uj0Yb*Z@n4$<8klG z7q*#PQtWJDIkR`wO6$q=9<|Ls=kVp#)I}P7S%NwL`}e+YShpx@|NSKsConDa;x(Nz z!AW7E$HwLdn-?>Qt?78XGD4ts#fpxvKXWt|eE6g3f0V6BRKU?oVZsGx&b`~e)a8GQ z|J`!(zu)fCcW3X+*c=wdRQ_&?vGMaapKE{Lw*I{OmDBDHG2McU!&Mv4-mJYD@$*}> zgxO2aHUCS@%xXVcPRf&P?w()8mdGU?mL7L)(;=pudu2YZ?Fof$e$2&oNlh>2*>iNTqMfYrTp?57*wFDJP-*yYA@L=2s<4mc&UO`kpWS zcJfxP6J6(?BqaP#^b?=(^WPc8B_}SKFXz0>bGxkQdE6h%m%I~S1~L7)W#PX!+2~NU zmbSEddD`OFJG}}54;Ah#eSIxyp@*cSo7>GDFP2&{ZFcaUrXx6Om$%)XkZswztsHp; z?_v^reTzO?oU;aKrzOe4lwB=`xUdUdr?^g4^j7dfM zYEgL#cjuN5Zl6{>dNOnQtCD4}pPZb$V}Iq0F22BkIK?Mt4mqz%P1)=>|FHjV{s#*g zJIfXy4!v^Ku8__6dj7$OdzfM*Zwr=x>vf*twsF7U_dYH`-9t{Hj6Ap0e=9X4MhVCm z)!RAM{o*X&|7GKv`BP5`{FxAQ&-b&vIK#HsqWB4~cYk@B`J(J)YRBF`Tz`H&3ON#A zZF_6^lCE0a`nRDa9-c>cGXEA7l51QtJOAKA-q#yHFIV01X6H(a*?Yw^=bt&~I(eSR z#ia5jt1gATU!k`lct+(JtNB&`&apd8oRo6@Ty3yRXa4RlR)<3*-!Qr^oBr-)y{=y8 z^viN96z{CA_HSu#ll*wEB3Hhu?BwEmvowzE_PqB0$K(E^3r@{n7rVPjyJVHylV{Jm zlr}v+-rw!ndhz&|4`CgBz0M^$`j;=NFY(*5oaZ6`9825Oj;h@$>-VbhmHQ-5{kPtx zC(QP#*dwo2j&|!+t-LF4ZOHqp)nXnle*98wuP^t5>xWi09rzP+&F;uk6M@HqU!VVU z?qWW!WxMx=oGu^NyZ2qC)gQmEZ*Tp@z4%bigZx;X=P{evo;-QUG_%%d{nVowlb6?Y z&d!%=I5#&cDgT@27yq|Sk0urA#La13zb~%+`@drLs4X2wyx0F}_*l;4nzNnT#k}_C z)hHRe8ovk)>8lx!b8Krw0tFXtiv9QDw%MLPAI0{stBly1HFZYvmMl3Ht=r8z*;B5c zZL+u}e7y9%(!cuaGiA<1>}34EZ&Q_E)uII)yU#y)(7WHP>wNs)KTa_cm)Y2hK7G8k zig$*M3F}#@)o@Gh>dI?LldWiF1-ZHR*fFG=%x~c-r1%?&>i(v-f-I zmdsmTW%p}V@;rPuJ1TK&!r^DVPIA6CSMWIAds+MaZu^rbDT0m*|JyW*#eSNR_c-Cm z3T|oTBVU%KSIy&QzND`5H-+iR)I{BjTcY({w12#NH*fdu`E=PRmii60fcx67>lu739#rnYZxhrS+8ogNSt(bKZ-BS){v_K&A#ZPmW8VrGXzE6GdDl4j`NsrobtB+FBbQkh${Kb(R1i-$vebwc-!8O&xE#QUS@fGEUrV@{oKQ; z;o?f_+c}c+B|GNV-Rs$XjNdscOT1urOUpNjI@hhscCVegDe$k`?>*r&Gp+lQ zz9@IUTJwu{@%J-+f7WlGGs|83@ggp6p>z5!=S8PK+BpCJkt^No9c$jSw4N?-pC2bN z`G%~u|J=junX^AWo9bMsVJ^RZt)yQ{5qY^&?a8k+lu4KYm`d zF7v_NtKW78EtX{Ee)3Cw_U;RlzMWKjn5fm-amM}rp^3`w7ZTrah#oM1WM}Q2n$Xsk z+@4Z9TPS-a<8H4~_Vjbz4i;%2UhjC&#QovpmeU0n8(zIwc;$d^5+Ax@m)|827w?siJwl zuR3p}U99-?+}?GI`L;@vPp3|OJhQ$&@zR5R9hpL%^ULKAH04$otXUus?KkJ(54*h| z9;GtxWoqj_rCm_)U(sdW@>~z`kFOgS|FAPS_4?DaWvmB#g@r#JX^(&0v*?3|x8$LF z-hP%VH#IQ@3b;pm7S(eW{l04_r+vRNx*^%B#MA1~*j_+zN|Ihf4FJ? z-Rkcv-b}LpU#w^*E`R9aVt2#*dp2i-6IkX*a`L%VY030l5Rm!YF06TQqsE5Su3oM` z-h{WXsj3IN?aY;aJL%@Drp1%Y=gO}98jor1yDKSygt=Grt^0H&;%zi0voVu4iT-8zfC$#wJ(rcmaK5@4f za$a@RxLvkwiI2w;!%L^Wy_zq5LDP!s`nOkI;?ve2-El;&Bmb(*(=hF2dePmlt4m$8 zc5^$tPO;Peb5dLP@aFyN1t%slr7f23U%OObYNf zEr;}O-jz<`?&FN&@|!0zG3npm%TrEf+}kSs>t0=Tuh>TI;|uLR9{ZBh;&L*!U8BG3 z{_e{Kz4FXQeWQ(C!%ea@`i}@}{3|Wmy@1i?^8Q^6fmu(d6^TrrIx|i(srH#$OIwSA zibq_;$HZ$%u?tRQr#zWnwW}m#a$Rt_k%dLXANl$z)246x8$5dom)KE5E8D_HE{^Xv zT@6MFj$?x?=7R=2aTPjw~f9on)ohDoNw2W z?dne+UDP-~ZKt-g>+J=b4&D2{|IoR))*t)%;|jWj9{OrEGi;w4svx@Hk8zNjA zBN7srS&nXTK0HBzk?Uu0V4`T%E?;SLCy$Pp^?zH->yBRHbzL;iaiu_DP*mfkOq<=bL-9I9U9_*6@5mh2MMm>zc0ybzU@Irlh*G`!<`j-o16R&VCh9I%YSyulD!1 z#3LPot9<0de{*tj9-4LIOzzE1sU3ZNVVP3>^7e6azU{Z#dLg8vgy+Txw&-S_=nZShw- z&F%4k8{y4JP&gx5h{g71LK%pW0cYXPe~;S?#{l<}l;IjQy$& zYt%2jb8-WOkVT*awN)lA=kKM2T+t#7Ac57S-S9Ze?tXoITHph4Jm8+v?nc|Hb2L z1bf-Ox}B1}-ktpgv=h8>Vr)}H+BJ>}&KlMoORY0K6q>BIxCR6$G&R4SEg1N0P0s&B zQTH3yVtq5``?PYrVm0@lFgtO=w++S5154iDlS)kd^uRIq&h4hy-$xUb4?mq0Ep$Nr z>zjGi?N|3MtX<63>@$De zKj*;nnbsd~btpzm+A4pXyX(V;1FtG8Bflknv}7#u^VHmTcVD$i&0x;NiHb_cSWdB=__I#e;hWmhrsolHGx{gQ?-M#u zcWq6igi%Vz2C*=+Pkd+dru*c5ZR3>|5LKPNc~y8@!55RN|HZMtpX^~$`R*4uGqB=+ zPmFcbyjmksrEl-=>)(?vnjbks#WX!s^3Fn|7M9|VG73G~93`9;%;%QxjNNIpmuVBT z`?;IKkU&xzq-ux_mgWUZDTB_oZnu`_CWjXWJ|TpJHl2@eD`^BdBFkG>}wsm zQ@)*)IqbPQ*`(Slv@b_LHB8$}H|)#1K-q)m?WVVjPhWrdb~xYBkB5}j+$d+^=kXAE zaCsWj!`Io@gF7m$>>WfZ`((AJ$C!Tll;6b&JJi}m|(SF){ES0 z+sa&*6?A1U=+L+o-1eb-fyY-CH=+8OM(h(4i@2}MIaKq-`%Uu$htFgZ~~wSJ0Fh3oML{gBw!vgS1q#7@khB*x+&J>@EvKgHw8vj5A8ttT_GLH1(9o zn_Q`eD<92I=uKW%n4{_WtgJs~^E>~AqCR;Wau?TbTAOC^wKTr|Z|TIqLf5GWL$#VG zp6{BsTZ;RHMW1}s-z{1}HP2!MrM|y;V{j?wN#(9x`b>ZRtofU9FT{>r@PT^F&vgr| ztCD5PzuMfrIgh(8%3j;JEat=h@As;kzAX*uP}p!*f4xJ}`Bxlub&-~7xi`9QPpVoJ z+Hyzq>fB) zc}7RlYj1P!esXnvUFh?MM{_sN7Zz;UzwB&y>0)~g=P6UBCPiQ4yIQ-@s3qjXbMFN& zc)eKFUmkAf@8+EI?R-v83TJM*YuALAj>|azTDrb?%h440*fsVp|JjrudrWI|6UXq$43Q=EBdAO(mP2--~Pb_VzZnoNc3>_@v3lzK4lU_Pj0anQE}= z@QOtOcP)Gh+Hb#ZuDc9g>gke#ZSfB^We#a({o4 zb(iu}O+TxnOXDP#Pg?u&YH!gqi>k7dXZvLj_WWMwetm(0&PW} zXb>5f`^G2!SJCV*x{`~8!XiJIf1dvHMo>Y(i5W8+y`O0=Z8{~=)3@nI>we8Xd1>j_ z+m9;syebF^C|dph=lS|mi%R#^OncQIdY8G1OK_@~w$~>vgNy?P!R1%m&Xhj-qcJt@ z_Ogp}N%Z(2joZAn0eE1>1>Zks; zwMP_EIm+{=7~j{{*K%@u<~Y?l;=btqN7r_~&(LzdBD%mM!F1hMfk^X?D1f z+ij&l;e*BbuD>e3s0Oa$D2Qxj-C3#H@#-F@;`6DJXUg)waGkjKvqV))$5uC_?%DoZ z{&v%*M+St%^rd|)YUS7*J6pLSKK!Y|&wZJiE&?89?_`<{gvA$ql3Y|+JM^~NoHOh-@d zuhsaXy8e}s!1X0@YP<8aoR5^fO`DOrd3)Z!SG})Wg69N1E`KxUPJ<#%87`GBx?yE;IO8F6+&FyKlDKq_4)Iifcrl zzNk;s&;PPN@%IuVmZcY`l%1UaC!6V>eG!Z6Uj3Dm9VY&{nC^CG?WU%0?7LHnzFo`n za^CE*RltJ#-;F<_8m~e{HqU69Tj+KPY|zH`R+yi(o2KR=zcHWfcVSE0KqsEpI=cgp6t z``gy+&5)4j2w?TEt!mB?Jn?bb=jAUQ3XZJZo)q^gHR3COrJ<{9AfwRZ+dEU^9-f}P z?^!=ji&^fvE{$`0AA8*iit3uZuA0U6)~WE6QdW(uo2v75PaJHp)8ydUus-(X>FOmm z)8-kuT)S91-OZ$ABucG7V=d7;QM(bCPb-gO3?2e&riKvT^F&tPF2dyBy2+rnKo^i5yPhC0*Px^F;yNs zxz|VTpuYC;i_PvKT!P$XZ{4e2>p9K7Eq%5`!6NHLz#fCAzA|t0t}~Tg)w?M@_i4ub zsbSjJ*4}B_kfs|l+v}7-si=mLtMUJNlB-^;amdZM6E8A%=GKdPmf7d?Tv|>AH=o|V z?(qNAe{ZfkOf2CDQryy@#6A7QV>#QXeGit1@T)t%VxPV9W#@7KxmKc68l+9Lrp)yJ zpI?~Q6Y%%TWq+;i#QKf?ez&(oF+50cJ=phk@_my53yS>mdmR_`(UD|Y0FiTRtI7mLFuizvx3)*SXb@<8@!&Uv?h zfQBx2gA^m0;=%GWn(uPP(X z+ugj)CAf_FU`X4J+Q*4kdG#!-rI_1Q7d1BNCw=(+_~N@SQxr3%|2gqG*ua5V!$_)V zoq@RcH`DED%j5!LcGPLs-Pr2Ia8xqfX2C1_qNbTyUVbl(y4`*OiYs0O-p|_3 zej<1Y)5)v%|GJkc$$alR|19akf$psDEV43tw=58d-n@OKh|;#2@7jI(5o*Wws>;V{ z-R8b~b;XheItte1>je7k{#nke{uXtlY&XNsov!F3>`MF3`|T79p8tPYn)SD<&=GbC z(^dV6f2ZzNj*if3Z#~spr*_`vsmKBIH!e0e0#jAzepz$Xud2O&(UvnxGG7+WZpl1n z&hn$`vE0j0Pft&+s;TVDpHE%?>gJK+JINa!+jGtpxbE|A!OY;OKDmu^ebx#%{(iqU zvihQq&pH7`F@5>^r(2!UgBu?lSQ{<)??Lm9&-?9Hv-zA_%)9Hx4#or0{^^m4jAr@P z%Qkt-eR|9k^X;yU&6Ra?xio?-7p_>t!u;!mcH!Q_x_NIVI~ZDMa4bCdi9Lj=i*usk z3=5~*S6hWLRi7^9;N)>jNKmLc_D$e77Z;BatHHJ4wgs_8v2q5IZ?ATB2(WCvXmoSU z*+7?;*4nRUWo!?uxH{$T=@9kc5;b<_-~7(Z<}v4MN>i&8empt1_eb$1X(!v%*N?1I zmmijD4o>GPbd=w@Qh4Vo=m@vMjsr`)-ki1T{I@bTASS5qXt(i)tJhzDIF_Ak_1CvVrTKHorZ_d%vjtCWumh$_baIsZG2`QHEga?=_1>Az!d)MH%# z^+Mnj!7owTPd^nuf4g|fFCt1L4e8~0FB>s+h zc%NfyhgjmmRR@l>+OPc>m2fyj!6M~fP0ODz!td%{CjVUUNd1&R=IU|<0}GZ$F5~{l z`2G4}*Y0OBxHdU2JNHXFDb2?ULPKz%@S_0 z!LfniD9dr5yT5Nm`kmLSyb>+Us=GjM`ME7z|4wkKO`qW=8M9@^#=xIRZ*Og#b!W$U zyWc$a|9&i%^#7e-=~vVDYyT&MsIODJvuDOCE?TvTD|7Zgr+~w4v&7DC@lU&~rC?pS zi$Patmtw#}v+u`ddtX@QJ9*Zk?U~&N-on-bU>^WJJYReBgb5eq4zKqRI6mX^NiG)` zlOww3(#IEGdweeKokiEhew`xD2hu+iydO+^9$xri1;ef@(P}$*d2$rqERtqp@7zE2 z@9P&fbw6^Y_45?vcY@ZDwkIW=54KNmXV!P^Web;j;Tg1w!5D+O;Y;u>Ynh!g;}*W z?#Dkrecspb=uUOK+w5g)W9(F!k}h#^ba3{tI;`8$p<#HiaQ!=5fkUmX4h`X5ueH{Q z<=og4cw({UY}?e1T|q7j*G!uBt3j|}89QgwPJ_f*6E@lW*)G|zG47!JL497wJ)tfS zKQYJsXT4MPdM$^@tFM#b5L$r3W{{huWPsoP1jH<;|r3 z)rB&8Jp9K$OF3MWpQ8AsL5cBC>-jr6a(-)@?ETqTG_!mfV)8aF*tAMYLE3kvhOWNz zvu|rNg!JT1-rQ8Zu4*~gbF$jay}mtMldBZOv_wUfjLx|w=rlfl@E~En_~bP)JA-5< zzs$Jpw$~^B)XR!bKL2C)d$)3IJFt8Ggi^+{8W9TD?QeeHQ^gc3W|W?mx@gkl?xR}g zbQLrN7#$rSnR7p45}6otoBKq~7u^dL&(>w%TE%1BvODVbwT_SgULzyEgnQ|$KfKa5 zS5{cSxXkAF)ET$kc>E8%_uiiPb=KVs5wRxeJddNRLL*;XS}MxL?QNKqA~eg)v~FX8 zQnGlIS%1LAOOMvidTn%I`}Z1a=TwCYyj*-AtX$8{b86ZDdhuqB84UGbJxr&bm47q2 z8#>mll_9-f&Z6r*^Wr^9)tOoXcPtDA{cC=hp4*bCUOoShqhwR_&o=Pb^`5NFpt0*+ z8hlsWE--a1|9n2t!~Stl%)J>IoFd!b+-O_j_Q`RE!^g`#N1f(h$PidlDqA&$OUs{y zmE~%Hmc&XP&Pn3cFTQef|0{ccckw3ge}B%m{`h=jnw9n%zw8j*=PK#*B`5tG=Dw7tpcbp{wbQvnv>P zPn{aZSRl>9rqEEbMxg1Qf++vRi=peQ-tS*=XNoRYdb&@J=IuR8wlJkW6*GCM>TfS^ zRU&rYH@4w=++J6gQqT5^_s#bcwuU5q>0RmJ`BLe?#`Ux2IUQNSKCN@bi@%GlS2EaL z)%WlZh?71a86bYHxV(3nk;Fyy9+vyxuH+{zT=RTNW?3so-}d@HAKNv!!py3<1k=4w z3EW@2x?{_%tuHlQa_nb!|GrdKag^btiNX%YIJsFRua>OkdB|RNa@wV!9G~-U9#ihb zcAOIUzSr9Kvfj*zXZJj+;qiKxe=R*|&h=$$XFe)l+*Wjotud)?wL<{g%h&Gz--^i| z>fqkKG{mDOS#@dC7p_lzxnH{?4{Xv)W?pnisl}=#_qRc|;g^O*_9A^BquwyOe%i4$ z=7Y^n`AM~#buFIV-xip>SVOc*^wO1|OM+$8cm7K2ld~v!A&@bv@b;$4Rl-K6>>@o= zSEO7FacwPl&$FfT9b3V|Wde`Ow@=TQzvt&x|D&6~T^GN8y3Dz?>FPwa?@Zb`yk__(C3l}G(?%%$W$1Uc| zjr2?9h(to-Zh zirNo1PuUpKXXNAAy?enbE6qnz6xeijSt z{#O3ST8-`e7kPDg4c(_2dfLW&jgI^})62oj>F6<`=7L(llF}F3a&Nb+IitLH{a3I1 zyLJZ$X?ZMukgvM5>Gzhf(5{Y+LGm-^2TD5eYdm}YTv=7sb?M&M?<%WaSAT0rIzP|0 z@Oo_d!u1 zyJ$~j$>}6NV{_Y=-eQICZ*S)}Zw*Z>`R=#LdqHi{?HOeqIT63R^{Z=V?@Z>O)zYRA z@KE=G?(dY#4G-Fk)0IAaNW4@1e)Fb(8>dZgoObdr`{}dBXTCLD(zDc9Bgo|ZMEljv z&G82p=|)eur^UCOZ?{|7t&p~aEKAFKcNpr=E;DgybzQY+DNC2is^I>q+OJw#SZpNf zd6f=7;bz=?SNqhZjfSP?nRwQkRlJHQ%oo#*YB}Ly89(FOtSju_!dBhy`1i=c?{tc4 zfKAz(85$vrCbopB9O+25-prq_AzJ(E%gQkBzy`@rjhrZ=|ncISfLSUaN1*o%f&!3Hsj)>i=vm7 z?b?3+>eRp9B^+x#KCFq{yrK4YnW4J>%2N}WYq~{K!?dfuPguQWM^R3E&g$g?A4}>Q zW|SZAyE-kY^!ptjX5_)ysWZWYvkvQazIex4{kl3kJY`Yh;|!C4C0E~SIvY66j1SVt zX+8U9#j@o*j$d2;{{G%wq7Z&Hc$tsjyMP+TlasS+tvJ@s-WGDxrTVp;#Mb-C&;63V z?3WkKJoNPR^wnkFsT`Zb1ulQ>{gm#-pwH;47Z+Fa(RI(yXR}x3_Pla0|8|&hUTZ~= z;5?U&3KGx$DpaIBHePOW@&U_%*0Wz;UcPHt^0$1?4Q3hXZ)Us>uYO3UxGUx^R8i-5 zA2!h&!LWF>7D$xzf;5} z6#lW;@+(vHfcd8%^WJqg%uOgidMoFR-BliwjEDZ$*To*SaAfYhwl;dP_jEm{-*bwE zpRYc0#AUzK{iTKzx1HqS(P(CP<6iykPo{?}Y+OEP(c{ej(trQ1x%>Nw-eJ+3 z3+tEXJA0lIIDEYPazjFFYR4a&FK@52I(BIlEVjOP`R_|j=L>o}ol{iy%`tK}cJgXv zU8Uc`)_!G{-@3io`s-I5Se83G6m&W7_j9$5AM`C3)cpB)JgM~TRFn8HJ{y*#KRNI3 z?PZeqy!@l3!qRM}TPC@I*)mD)-*3$`YO#0Ws;KQ@+H9Jovb{+yAcdt7)J&}Y_U2%) zziq2o?k$T~)1v;)`K!m6u$RLoxba?x$dy;E*C#fgpJOT9&M)tF`S??@yL)UVifZUG zSMFUDah5%V&42gT1Kjf)BB#FJ_uEhB-|p=;eeUlkEx*v}#M0p58g=V(vh?5DQ%hXU z`GQYQ@cef2y{&l&>xW)D_Vn-H)1%Cc%4H6(3tpRjKu`RXp`oGD>!XED7qgoZg1$<8 zRedpa%lZ0$KhqscD}Fwm&dL$DqhR4nqgo!O5A8Si_|7)tOqE-?t*N_4H&kZj{~tbm z(&m0F9NT(#23=kIZ-GEyP@-emH%61N3ub##=jTWX`0Rf2J3Pm|FlEY{V?SGsTq-Ti zmb?|3m~i{rpBsW_cD%3JqM>yt{_?Ze`<`E&bM;fy#gnBbKcJ)Nq7BohC~_=2v0mxG z+dDfq-;muobGiTgb&^Xgets-o7bAI5dG3P;2b-0$)EghK5DqKJzb*N9*SE3~uekp; z&-6cUT>4;v#r9n%Bsa5mO%$Q_?EyAJMDB+YH{zUJmXscrSVSd=FpY z@=f0s-fgT2W>G(aJRLLV=WNS9cXOY3;zC7^T#e_c{&P0E zi?H|aThq$*p!&B|&Ptw|vWOGMYLKez!g(7ZT&Td%^7crWu{_oma`T@xl&3Mg_h|4VwTRcsocaS^Z7>1LF1>#7#m}B#BLUT z)m!@@yE*7%)-CZxI}(m`2$pWDno+{&=3epMBR+AMj)4XEl_l%8t$CXu|o}MZEv}vYLvUp4Z z*9qC&Wm8S`)7Kp@la7yZ<2E(z?Jjy;o}*0&!y7z zr+yayespKjC8-+nic79Sq)1y7_MROU1L*P6|1idO}IhS!O%ku+iW+>1nt~ z;Oy-ni#|CKE$09!U4;le+fOI=t36<6s1Gqactr46n8~eqlg-z*hv&zr>$FZ?9n9o< z>ZHxjCzG{i>N3SIo1#)~IB)foOB2KPe48T5k-@Pet2xMV-DltTHfrbQx2B$Y_P)=F zr7LJjtme(-d#@~Xxk#r zk|Mi@cbr@$i_$Fbf7rJ!YO5DRB3nq#>|Dl~L5fYk)eUxix#V5C`(ktmTll-#_qMSd zEG#U1G_y{3RnWGXGv7>Jsp~uQQc<@k`#1TftzG}uIb|d)IA!R!tK%i_BHnTqQ&x_? z9bd!Fc<<#|{coY(tbltNOb=Iit!6k9dg$FIrqHQVITkPnI4DdKvR2SgSt6zJ+C`za z;zG{%jnH9urmo`mJA~wyEJ;W|+*YyRc&MBFwTJ&~mWFK5(5ro|#@IBq_mn_Rl*2@Z zNzDSsw>Z50>#mN`%`f^04F0B0gEXn85qF%p@Z7WON%66B(e;1Y&duiFT86S@cuUy4s z#B}n(j53b!8G#i`nQd;Yoaf}yuK1pVb!PSZz2d?0`#8$)&xu+r0$L!m)~iSN#n!p% za|)L}v2j*7=ew+^Vu|v7e(C#vUJm+Sqz9{p~g z_XN+lf+GFsjil*)=XWoC2Y?2<2LJAwQC+UUsTs*E8*tiF$~j~HEqu8 zusp|z&0?#nol-ld*8kJ2So)3YanG)q=iVHT^g6n3@9w~msHPJe+_Wb1xN$76`M<7X z%9+{f<&8zG8n?U>HCHDrJ=mvRQ@v7ISwnPUqM(9kLTur-7l$S)yL0V(vnBI#O6)7o zS!ZTeCtop>`Es-V)QjUytlTatJ(+H6T_xX_7glyM9AG)5*m(7#=s#-<4GBla#$DGo z^(>ILE%*A8oExAeF>&&ab8cUg|JL=qWpwifP3Ql4e7oG{)<)f_3y=PjnYb_@NHS+? zX3k2Uo>xL&Uaees<5l==y?a0H0yA3!-BOhwSd_jJVLQ(LsMWpwv|U=F%>AV+)&x;u3>VUgt+Q))1tz!A(AmmjWm?^*ywj!9eAPloMG+0@@I~hjCpsx z+x6OI+obRQo?9OjJ9xQ7M$VLA&NZHKZ;6pbvF*2QKR+DiXElBM^Z9)71OG3y%nqF$ zthmU3eZ=|`n(@SyEbR>V!Qb@5&DWow1JnC>xjO=(kfm=<d>~9T| zk8vpGxvjb3);}#>&0=FwQcBf@Grs42J2H)eBJ#X<2~9t8`YflH_NjoNu(p4-zpnE1 zonZ;sm;e0Tn$M?HuX3MW(4b(bc`<92*_DHhzw+YuEeQGZ<8l9wZ@2Rug?oRcy^~YW zxA=I_&|^m&pV-%Pw<5KggM_-dOEh<_-k#s59b^@|Izm%Z)3ZR^@?AmnDZVVmM7#PW zj|6ITeg@2QT3&0k^wODi0uy&DOY=H62`sx{GSBAoloxhPiDr5h%lzhQ>D;^-6PUVz zb=RqXY9~@su5SxCvqJsmy^0gXk1X=jih11s9&iw7_BazG^x0#TYR&buukTxTq(&E6qY}|A2yvwzoc`wp;{r`Oy z`@CG@PPBd&4fvwAwCPjA`aPezBre>1vBGVp`NNth@8& zwOpX&j3;8E3YvOy3%QOvKdp?`UYY1A7j9Yh?p|o{3QvPG9)^vD0SN+3J3fU=9KZ4I zG=~=}d!6607#&YRt@v-ne>cXwXY7*}R`+xHq`Y0}-!AQ}vIl%q8{ca?u2j})&b7KL z*5P?mtx4Zaa_5G}{c(?#Dh{{t9;!UEZQ`=8$E5Q+&fK_mwEUD^veu6)Go4~C9KVz1 z&)T|lg;fy`Xg&Pr`QOj7=|s%aZx9ui3XiWfeYgLAogl}B?q$~AsS`HUth0ArSKB<( zP_Fy?@okZEIY#dgGpf%fff~>+M=0w=hR&e~7o@qa!bwws^c~JK%7?fhB#N z>(1VJwMN}{@~U5%8@dGrPd~_b>35Fw;{HA9lXxWTjk``gIJZ?}zw=AqRmU`%#rI5) zvB^#~>9ts={yU-2LewLt`*3dQB-OgzYyFJ+kC(q}lg<;kSoP}rX3$JRnbs0b0S@&q zZ?vS}&s}OX;c#?x?(ds1ccyPU93ZL??9$}??7aJjF42l73&lgzB)49@d8zQLhUlZ> zNxPJl1a1VxRi5h4nC`>yXaD2ltf>tLx|r=6r)VE_*}8D@>lNqS_nHPSVSg#KyoYTD ztH!H9EeX!22`fT&FSs*NWwtZJ%1|B0ohp7zRg?1jew`JcKlz#*3kz(sv|5DLR&OABRBBN*=d;>rYS973TJN`r}{&!~MOi z@8f!x#CaT~V zY978|5_C8H-IrF6jgdO0Q@G?dABs}^ar9h}mP&SZQ-U(POZmFx|E$-2XAqyWMS7XC zvT}D-8~e8vJWKRECPnnE;8{0+;WzUyKbEotn=n;n_?Y+XH+21$nmGT?Hd7_h5az|_ zPOkVn=fsWHX=jx~ZZ7z-`q?7)emSN;+P$hAe|B<68XYN?ty#Rzd8fRcbN!!>?RPo$ zU5iQk^7BQYq)Mo4n$#AZ`I#Y4Jk%pA*Da|s_;q&8=~ol4YWbd0Q#q-%THr!MsoYla zyQRzKzZ5gys}pi2ch2daGk<2Xv20eB5aj#&LYc8mx0(I0lzczy!?gt(W_;~Q)id?H z)|7vi5`FS`ardJO3u~(dUv5}#ymBjl^xT;6FOjv5D<>Ramv^dX?eb|hlv;B|>)C;W ztsLvmdN7uz#}zH!mRKmEoO#OYm1Xg>j%@Fap1{m7@##}L4yzwmU$|ijhkyMqsduu4 z+`G2FZ*pGVm-Mx-_ebH~pg+(5J-@gxReG^s=vH}KFW18h1Rh4Lcp_2k`0WRO{^OhJ z^F_CG{CXyDdmuxc(O~CyuTz4I+`+G7R0Lyg21(ADc;r(V|Aa#ai-WY*2Q2DuXg>e2 zr&Bj|d0*^77Izx2r{ z=himKz(heU1)tw}UYjIWO27Qf{b#o91cn)!B~O1S&J+3 zF?(P6lb8@Lm)SRWhVsqm?oAB`ObLVgMKjZH8`-%9ypQ7I8BAH@NznxWP z{9R!FELg60reoakZvA~Pf~Ffzu6}fc^Y99uZS2#R{F<^wKDs(JPyglH;xpl9X=XRK zyqO%kD?mTbr|-bhpx~u#@cXh9}=dl+* zJFC4`W?bIVs&S%tnV?SZ%%4jh+`bqzy(nqhS?PJN&&`>>`nCmAS5(+?l(J5I%e2Tz>2*LZV(P3QG@RZ@b94@I<(|y+$;?nw86y9u=zdUWB@8xMPZu{~bnESTB zCwKPIpTA_{YNI`cEy+oSfNx-g&iL=v|Kb z4gPwXn(jCM9X3sqxa4}l?&rhl;am?Ep7|%(Qka+!B62m_-$41t9OtPfhHf7$ml+40 z`8Ze0FRHhAixETWYpWNWQyou#n)zIT_4pE=j(dwHe5!e(`mr&I0eVNk6>VmDmLFU8 z?9*JswRm^=r?Bf*Tkk8gx>^K9=#jO*C$+>rki1r(7>hPwbHIyMr-AY z(_%8W_lazC6RP@tO>k+`Z-wKbnU&I|hq~V7TCWb#%4qxWXZ>at_Wr<(wVrF%F}SXB z(NMO1qrFP-#^&m8UsAt(`CXG|;h^#JTujKM*JnH(PH%Zy^3RgzW%${{|1%GB-TCzD zaK`;bypOEQ+~=<=yir)N-QaY^=Xshxva7AO$=_<;-G0AiPLs`^PfveK6koh5aj#tC z+>_@I?zVp3@cBXi|X%b z-J7V@Y#qWD-J7L*Iz7D0((>8nOvaj^l8UBX4^b9#dX9Ui8*%ulT zF>(G@`Lm0pSNe5x3Cg_xYw56HsldU)`4{7vw9J^y^olriET4N$^mJdvvrYCH&(wn+ zb-QgF^m~7M{Z3JyXPv&1XPZ$T%bwMTHVa(SV!Fur>#J(X|E0gen8V&?Zh7`!S73{4 zR$uk4EK!!%t}Hu(6e6Y^n8U)5TYGr!*2`Z_moECbQMn@fPQix0d*Tig9cHYQ@YfLi zwx+%M+Z)Xv8>h$D?X0-A+20){;IxUvdZw<+cQVR>vddir>!mcd|`D9SL@nC9=*f)=EpC&+uaY| z-`^k4!s&57W#QWs6O~;VPEXWoULL}x{L4X~*`winlYP=k)8zF|yH8|Q&0c*rSj#!( z`7@5LfZM&FZB}WmURAI4;)QqneXo!x?TZajM?ym%l^g88?ZDSoyiLaWaI0n8g$G%p zEWt&smsC%6D8-xc88EY-T6#&v*5jn#^auWrF5F^D`Ip=8{94zGHB`~A;)mE9IXfBV zw6m+Ob}R~^r0e&BUlM?*``d}^)HTzSdATO-!2u&4;Ja5U@9 zTar1$xbT=IdU2r9yok?b1}5xo`dwM3)6gW z?__N{^i<(iP()vEd2Ks0`x7^XcVE)iHYT`8p zGf5|q?Tgh(VK3Lhlw_YfllvAtJ)OAoN75g&q9tkpYu+j`xliHxCi*mNN~WEj6i3Va znophwXC?*TQk~p&$nlW;A`73RT08d!2_EbaR1WF$NIDu7s@h=id%}64%aN0`C)utJ zEsygm-+%Z~--{O+cTLt#Giq5IYqU~u`R8*BGgFdHc*54-;h$^Oruq5afy3eV8})LN zHdy3Jimi=qv+Up3rJUZETzIRfSHYmpZw$9_^a5M`(*r&)1*5iv-&kc8Rj=c5gA$`MJMj!{bFp zDk=g89UD1vHNvNCw7pnv7u(6|?Vr7hsqjv^SKW;biFW(V!uc}%?Kai^{&t9`r6KTT zhx-F<$)4 z^qBaR5XSrHFY}hngP(XL3*y6YnTwzh4z&Eeyk8M*XTR%9g`B3NxP0D zUfi|RVsbfOe|&wv#=PW*GB5f4&&_O{a)afKZJof)<9vsLGDYXx+Ez8adswOCwZxQj zy0v_&?A>cXRrt^n=Bz`1!f3CJjmqX%`n? zD!V!L-{)`J`WWnXZaxzt@WPnE(~95tLmxQw4R+n`PB4FAbK~oQEX(4*W{#Z#BAm0s z{#+_^-qf&_ttp#ZqpCURAmhZ6>PrHM6-mqfQB=ZS>w| ze#3%UG`tq#vkZZawR?{P%U%keydB>7HJX5EJ35s6Jc3rA^ zW2d#Z%jDeKpVq$KpzxaCxgv31T=n1Yv9B5TRtfYOv&j6@arM}+CGBABiyMCPb{br= zi|jsiAj6n3FCd_y%mG)JgKHF2IThA6Hfd%q zJAB58_d*q8?OVn3&$}c!HIvTlm-L+Wk$pY87sKW?A8-9oR{yR9RkwYB9`nSW}> ziX-3T_?zzS`Sz95%2U}UjO_R!(0eDPJ+U+GM3 zOqkAaV|Fi>;1b>+#Vqw#SA`z>7pZ+9ng7A$fC9B^e(NI^r|6sMJ`nyy})E*WYISw+szv(@H0{zp>d)2^32DYtK^?=jo#&h&=S zHA+o*PL`&##8)Hl-yhkQHZ@zHkC$|OTw3_`{GpA7YuiugEnTulTb)^gD58!OzvNRqmT# znm6Th!I?p!^?gf_r3j_1h zPBHv;T;I@h{Yc@=t%_;KRI0vDifC=U=+$ukt>m6XzgYKj-m<+Mzx1&8gKW)}4yijs z1NeHD7)gA56M0(a#x_;%gMptEIs&-_x3V==ZvG>vVYJHqUvC(rQ2c_lv$GsGT?k=v zb@SHW`z1(u9{2jU&6%QFP8#gS>r}+`<9fo@MkU_blDX;eX8#kMX4Q!;whK-i6<1Hw zjkI20x-IGWyC5xHX;GDY4e2M_)+Zc7DMyd*@oO`0i&D zFKR8Yd9}9F>B+pzy}zEt+d9~WT{^Z!?8-kQzaU-5%zy)hpQgvx34T5>iT`P`ZRO|Z zMP00}id%}=58j;`BDu#i)!@;|gv2}VUy448z1;O+vq9hE2{)C0RB>4avCQA9=+$uk z0Vi|xKb{Zo_kNFC7!&ldXqk4cH?7Fu^5oB~PF@ zo5QD_k&fO9{>}oMP28t&rHOicPH^$+c0b9%E^5Cl{yRt2mbW^)b+nvSzWa%kolMKU z=B0hf=<-FArc<{+rLE?1JjK2>-Ev#OqGc1Tg13KV*je^|&68K2bF=R8H!b0lwd$C> zNt|Qnk4N3UbL*}x4m14g)2X|!KU)0$%2zc^4<}9Hni4)iEOhOu2i#iC>i&$~kK`&o z@;k16^!w=je=;0Dtt}M>GF#PdO=cr}TR4BiUrzj+>f=Ro^GRmo={I`JpxY%Q?`ho72S~A&Z`b zFUF@`u(11N`{_Hwwfm-*H3J`oDD1eRq;e)iVF#CnzK-j`i!m)OtxAuYj_rDvJL`Oj zXo1>mi%a)o`^uVkFZx|tD{#l-w!z_<90ayfEDbgro7M1R=rZnNyjRW6QouU!SB zG^g%5H1pSw$NhhUuALA}_qsIeslxe1zNh31AEoWuT>brB)B9)ny@8sqrfoXAKfUeE zm$g$&wN4#wtv#Fl@1XE9#pCbxR)>_G8IcJx{y6@o&Jp5kW z-&r;7q7I+foF^-PI94&fLU-4?>8$M-Y; zU)p{Ffxz@B4%6Q^2ED(2u~t1GCBE1`>X>!fmEiEW$#VNc9zC=-Stfn#{)|T}v}->7 zY*c>EawB%5ne=Xd)72-Zl)Swas=@W*r z&g={NwF;cjUnGw(AV{CT({8@p|b|k6q;)Qso(4hlGDB zTzz=w-Q*W_weoA~o~nP@p(uIx-^7MFdzWwg`v2OaLz>F1Ya(ym-oN&F&9 z-?M0kjCJ{2*9l6qYO>BUZt>+8l5{MOUfb|sm(~?wbLZ&rtrvbs-ek^H(Qrtie^e)B9$;5mHJvC_EBzbJ-NlWbZ!zPsbMW-hO_|S6V<)tZ#usrBqMZ$*M0ha&wOA z)XclNVpd}I>UAaDTWlls>Lg;PX^095tT{b}D}4n|%$JWduWgz<^;iFa(3O+Vmb-dO zM@KEl)ZFyLd*Rx++!N4cv>PMl8E#yf_`Yeg^`sR%yZyGVW8A$*AGCb&@X_yW@7a&D zX>uQW{`+qE|K^4Uwp}rAr1ST9p2>}2`MH|U?)Qa2migyaoYHBV8M6AzJmz$Ue^2+{ zS^lf4GLKW}_t8#|*EeI;H>SSJiuv)zqs1j`wPA#pHp>OorHUrICjQv{cfz_CR$7dV zjl3Juj_G^stCyHnlEvrNc75N!Y~F->pYEGx+}Wp@r1x>ni*r$lN4K4stJT`k^k%ch zoSohsqC0Na@HPE3D1CKhrJTmD>f?KU*j77CTvyG~@J}l<<$PfKgRiUC?-TN?|E5;i zq}-&Udrnik-E!e&%g(ULI&-Ep1m^~7E$K?vg=`&qcab}h_vt3%xSBn8ZkbM1-124; zyT7b9%l-X79&ul7Y8JM!mo~`=_^Ob%kz;MzNy|y~w{NYw&6Kit@|7*2-<`c$)kD}; z=I5yX`>|a`_2g03`PEW~1%4C-rMX&lADI%AR5N{E#Usu_dC)H7(Czari;wB6i2w8{ zJeYG^rBuN!V(Pb(d3#x`;)`5TAMAag6qi|RoqsQevFz@|S3VvdLK7eFk~+Bj%JU9E z-VMK&s=oMr;V9FWO&jw5)=yLXHcQ3i^*yesqG3z^R%=@Ezi$oed|OyhDfWqP zzVjj3tH~R8_dfplY)dXjr&*lhq2~$_=k;bbXV%s2d(bg+=grM=Pa4i&-6o`QjWxgY z6r&;20@b|pzf~FeHs7XUTj~kn8)QNlHC4>iQof>BaAhDV=RG(K1MUf{%~I zJB{3{ssTO$>W!&u(;XLuyt%d2dxw#yB(rgVmc&!#^l+`P$uD>&Sv4Dnu-RE(VmcJI zwB>Rb0M{ zY$hv|Oh5JE?e_Z|tX%i>Rr4cns_(hJ%{RZg`)F57i;J&ssh-|W2Gi<5L-D3Pc1!on z6*;JWVE^-Z)hT}ut`T}~uBn)oS0y5QYWus}+xc6Y4_|opDdMJTgtyj(#nI_3?dBqZ z_f6OT>oLCFzwm>L+^l2UoZ1!dvYg<}mD02Gul{U)B<}k1wnq~TvsGu6z56lL zO3JNu(dnss3#)z`=KOsx^<|GGtM235TwN`@b&KzYv6%CPioU4Kn*XL)z^B@Y@7$^O zGw}^d@2yiiP>y_H|k3ob}BVx@V&U4#51zmOJB*gVtCj84OUL_v* zv;C!cdt`k z8%v*;xtMlM$kozxHc(o+U@#@yFv|9&6RSnZgWjT&xVxMrw+Wz|5Ua$L~@B;*|bv% zu7~H&^>~x}T*GRqY2(k}2M+mmJ3gPY{`li@|KryBxE^cw0ZHJ=#)&l&3$*B?EZ zXRUfki|h2nDN$<$HapTAG7kCl~Ja^>Fr+^6q(Y>&@o=+xii zvhu+KCD*?>m)|~#nsi*JaHizhA8)tcXHlR0MKmo|?nU9$oHv@=r!3yGM`opG7N@p9 zo95#EtJA0d$+{)3z}gr%^Hz+{?ZqJ;QyASPnf>;#Y+>2PBKqx&ZN>lf`+j9jT)WWK za(%qy*4qtRWlF%s=OoZKdbn6%7SBo2bTZ8zI{bm zSlPNAZi-E(_^ZWoj~zIv95N~6kCGav1?=UaXFUO(_hfqea+g;IMo9Uq;S*|7gGSCIDCnD8K%s4p`9N?rG!%rUxk{ELRNo6lQM zEm0W_i;tK7_C1)eZOdD4<$~86vQv_Irz$4xE^~H?*rA;~;r#a4&6>Qu(yodI4(s$i zQ#p+N4+-@;EeiP%`5>vYVMe#GUd$9hvsJ1E6FqO|?frH_xxb_K!#*u(b^Dh)+=3)~ zcD$@{Gtar9aA0?C@szrpCTCVHaD*F>C{;!@|*R_zwYGH zjD4K?*K_xiB|9ow+D>dO=Y3nkU+z|Y^Q!dqOfBaNdNX~!yCyJ8Dd(jve(oX3EOuT< z#N9o-d(Uk%DIo!kk9JzKQywi^y5vBs#{AX){{FtcgI(+AcDZ|e{rk=tPMDLbD%<(; zU-r6{aSMLFo|E7oHffnc%pDKGno|@1emq_jxaQf4O0U#{E%oVk*B`S^pB}y-|9)NR zE{;3%v#Z~THhzx064Ife;~W#SChf`fndwKvZ@;*yzWnYNRkQqiYZmRWD2}sZJy>;0 zpp;dk=+oNnL+?vt&D{Kd%w6E5`S!^f@29WK&IM>iG@h4Fy|}1Ehbftwqnev)h@N`+s|^VYO7X^f~{nHGK?ri-UXaOkV%@r21yl z-2vPmZi%g|y!3uvUAVT?8P}NS=dP+r|63*fzVFoJ{V&3APi9X2_^WiY)bGY1F zIkx>+GH;%pQQY6UXTNee`ZxkF8rTGOe9+{0=5Q{IUu5sEIXku%S2I1jlepJ;LiF8N z7pK1o)S3|%?)B$G!u{Isb2}#N`}ga$)9a#>OJ=Sr{=lBvvFMV}n>%w`I|3?AKYm*K z`oqOn`7E+7mW;nos~kPr<drD%Y-Q8d6*%)*PiIY-%_{S@PZ=HGPfdUO@^A5*h0QN!T0gmU&Fgo{ z%OfkKCYHaD(K-6GC5&GB}e|%vuAz^ z+h-iq_4BBB{1Nl}HH(AVK8Wvr@3RLxKdE-xL}Wy!wC~z6L(Vv@M@_bA z+txV;{@h&S_Q?5m-^WR-6JuiLEMv1|6z@KI=FW_|Ws!Z8nw(q3R(5>QT7Sh95K$`y>;w)jqUa!D1ETsQXTs2kb+64n*ErD&lOA#!+Q#JbY` zeUB!jR;u3kS!&g{?5%sq?~E@q4Me6*$||=!8K|eTYvRJA#gOqu|D^(jZ@%C4u(&2A zU-O~y^!v&Fjs`yu{F4ey3F&K=RSr0n=Kp1G2vb<$?#JgIf4W=pnY(Jy`zfDiS(R#? zI&~^!WxAi=9<#8Ovv*EB?pwv6u6g@d^~tW>Wtz)Vnh70}Ui z>5;dOTRPWU!811V>5S}c>>>S&ob&eCGuI@E2CbXIF#oT9qNwig6fGAO-VSls-8+Au zPq^$}pLAgI;fpIOOA9{T`1O~GL-(dw1wklikbRXTw%U)1(nDNUlOV;f8 z-%F1Lo_kU4*S;$^dQ-@^lk+rOeu%JqUY6l1@|r2&2?OYwwwt!<0V!Lq$g62gIyJRf zOnt@CZt>ry0Z&+5|E(}unq}>%sob?D?YV--Rv}|^+dNI>0Gt1Yd-ad2e!MDmJV;wd z*X{fbIS&4>XO5n_{nu&t6VNE5XzRvewdRR@dNEVPuKyEgEZQ>TS;fNZZ+hqV$$Z*V zyI z#naRJ9~gHmU=>jn7T0Y!-&z(FH0eI`pBc~D6gPF-EJ)9u?<2Y8ZTynN3&!C}Dnavl zA2<7SxjcIlD)Hk=!OiDUeMNo8*uw3WFZ=lH%Uh1jq&c;l&N~>ao*k(Wz%LTJ^Xa~u z*JgUO32FTD-f~4QKxIbKugI57PyCr>)gzYP5mS~l`8lKRuJVhE+cv*ZTx8@@^xh@- zwraHYT94B{?w2`s?&Q=zGS8^Rxa{P<%Ee#$A93((TH(6haI)KG#d_BN?{297{%u?P z`K&8p5^4emIx>wEgbV~2EBXrE12m@&t!>(KA)S2qO%zC0J* zxLDkcTf-|*%I{3tWj7ev?or?^3AL7VEKG!YsEp9 zrnS-AMMVVaE5$i$W_BiiYh)C-v}}h%;I{qVY$cbET5j^*J}oLBG_teBZts!*lRpJi zDDktp7qMLbo^y>;CSqRe4{NqXhbQDk*#1>lxoazNF*f?z4c+as7dVeD=T0>{<#t}Q z>f6bXjsSDW?E?AO8a^!jrJi@&_E{5LNytsXRbxa#&FN6AGSmT>I;{x0yQs(#FVk?zgc zyI%Ol#`t_r%RIT*(>%~W_W1pm)@!U4&PVHOKjyc|-+R>TIcwkKxsc%I99zCFh8tYc(%2diq&Wn?enGnf=TbxEZ*uZ7NpgwP#J zinH&`w7xglICN8#)%4P(7hcT#_c&zkl<<&-d$!ezF^aa&c9_?0Kl*O02*lao}P*l*2W`jEqB%AY@xo6{11e|uZE`p3fb(9^#) z82`Mzyp3+yFwD7I%H)16Mfp#YhM?@VNBq*Z#UUcolb^5K%aNrrJ==QgGlpBs z*dKmAZ(sg$f*te0n6t)L-A{+#e%3wx=u)|hH*Ul(sCafp^73l+8^tzN@ArN;VZAu_ zr9Yp?pN9^rOBbrVj^GQ>(R*+}r7<=A+sjvG=U%A(%67H-ne$C$Idrrxbb6$=_Qd!Y z4iknZ=4OHGdza5paq>~Qx~1$gn@d}(vPQr<*39#IH}9LKM%tXtnQUt(Eo%e{l`_RnYEZ1*OeI_j6 zv*7m1;N?|`x#916`nQ#`YwW7d3c3=(bo|n(xs%!1jTUQ)_RT4-`u=Y1O5anjKbL=Q zJgz6Te3SRKz4=$T*KG)ESTMu>&uqS;MqVZX8IhK_=LZcNH?5bRsu<;R@~d?vU-R-l z(Tn$Xz0rHNV*OVUr9ZY-uFjl&%xRb3Y)g+&wzQZOzG`~ZauH?A%`7LQx23GgTOX+@ zDA?=t@y6W48%wVz)_nGs+L0ADO>oN8smiLVS1)kvGY(0(FPJDV@)dR|&+cqEz~Fv(O1S-V>&=$A(oTzd z13Nx&a$MW&{VYq>+&o;QddAM3$s13+VAxr;#n`lXGrP$5H#e0_Sf`#6aEtHXvdVl` z(8CkXvEG|+-B<3anQq~sQ}IT2OXjUpOQT)?J~*Yd`hwsy{(~ErUTRu!K!JsoWl?%g zc?(NBhcI`3q+WQ0uE+g3jW0ShZtfJHB9eIIOLdEDL2Sv&UvD;_cS+s6_!#HUZ@2TW z``G_J_3ZXV%U8AMzR%eda(1?Pccm|x6^(5ISxMab5GAo*G}1)r`;sozR0m* z&w<}RgtHB5f0gXsV)XRq4;B{C_WIk~a)Ub;UT0l!!s|UFGh4!&h{{(pWn9fRyNg(A zy1Ke{I^Nn=sCuUJ<&~AetA0Q0ZI8;HKQBP*i-wL(AB%`M_+W~iwJPGNd(xLk&Di?! z)(g37OFCnme2ThHpFiI|&8TJf^}{PRZat;7Lig#P-ItWgL`4Kt7L{L-P5W|#!^_n( zQghq8JAEtMioSbjIsd6XDn9FrjGg+PwE8%o;yn)@yj>BPwyE^>wONmQ?RVteGOoC| z+5g#IUtizQnSmCswD+D@)nY!lZp#O;^PhiC*~PN2hv}}+f&Pw+C6lC#vsGsN{do9H zz0#UQj<)+>+xnbbL>DcR>VA}QFFf^e#gSu2B^ftgxxX!h?RG2cf3v1j58f3k*7mm+ zhDa)GpK^4CR~O%L>9l~UUw!AvU4QZZHS2qoETjutWLundnTsoN(vpUAKI$~ z1DA9Lv4jNdh~ZY?;tJopprffnX;Fm3(v=P`I20GQ#tAu9eX75Aa_$}5=yNxV&%K*> z_wbp|PZVd}y?L`dt^EGaXLG-AZeclmTgdIvK@X9&RfW=4O)66}-)6BbJkVz8lCa@V z5C3}EE;&!uKF4X+J(iVX>Mm)Zn_Rzb3au`*c8u;6ZJTRdzUgH5mJdgmXB0?zHeLNS z_bao~G1khXfyv4$qV?}|qm25xN@8FAI)6U<<@Dm;kyT#>mECrja4uoHRi^Hewn5X! z?x0f&+a(#>%J+f+7L}itEH*q)tf@Z3#%k#|#?Ph;9(bNQVD3|BIW6+N`GkZo`9YTg zTk~$@srQdjEOOOg6I62dts8*F5mfc;vIHgFJ4i3JMG_rj9)ve%jHw9 zb7()ERrcpb{l5i`8)Nqrb!=#1$<}=+X?xh5yHa;i$8>4Anynp+gw6hBN`7zFI5gSB z(sHKVj|a@4Ys2<_I;Gv^+ne_At@qv_Pu6qSHyxO`kD;lst-oJPhNW)q-buN7n|Fz1 z_H=h_)SuLK|KA}=1Xt_Lo1<7^pXGVFNztnH z(xmTfx2;w3z8w$?xV6jZ-;iJo5R!g;;l%)_8-|D=u|yRN?2w{C65 zH|zMFxn=kDbXP_mmb$XVQRnX6eTLR$U$^hSyyB&N&~)qBm!gB^7TqtCUAldGz5nI; z@7&KyU0JYkbC^NwhNvmimivcIo+jBk|K`_*A5Op8Jxo7IDsY|2-S+6wql~w=wyx4{ zo3TN1YgEE9+oY`mwQA>6G*+#Deux&OdMzSt{k~GT&j1fN0x6i?~<3QYHa& zf8PFi(DC*XZ%4mAjV#y8A8cy>d^~<-Z<+L~%iFqhcO9O*gz2QU!q$d+5xskM7q@Y= zo!qj!L6uqG*ClEVBskK8`4J@AC_lJSI?ANz}Th6r}*6tO=D z>nT%Izff8K@8|O~%#wnCo}RW3`Z7DpL_+%Vzq0D&U3*n`>9y>gE%->Zi?q z)31uVHitTkZMB_MH1FN}i__*w-kO>fy4qpp&7EIvw$1%=Xiw;uL-zmt{B4W)-&)Ra z3cerV%e;I0!hPSjEPDQI%@Vb*$u}#{@7vT=cc*TG!;JJ^X^;1HpOnv5|IZE;`tzWf zfATby3ugNAp3Vk&4onZddv&(`VEi|M?EyPW#H$OB^ct=&^ObJBJ74yl1J_Rf3a-cuSDIO@+btAjw(LSdc)6VQ9qD}L;*J}o6J9ngRs9@erP}vz z7VC#EVwXJ)a%$)7S@NJyW7lSZ!wyHfr3F20bQ(XL{A$8+C$lXnDJf=}$cK-u{+f$S z|2%DsRI9HHSsB#o+U5A?ZOo5Nt3|ijr9FJ$7v9Oi_KPpFSnW&Il`xlxzV?uy#`}&% zPwpM~BQsAgGS{egy2PK-w@x)ze%-yBB4u^ow))!(IlT@)$MqW9XY;VxS~~S+mnXvYi1Y_bnqgCd%7gpOUA6RYvZizd4$s*_D=PtBZYQOyGSbq6%?fWH` z-TRk$hp)f<=HvIvo6ehEUQ>R}aMABqEx$8grblbo=uBz*vTyFO{l7SKZ_M#n@qKr_ z|AP2`Kf34DF74QJdgHm1Czpn;jS7ByYb*1%au@F3SFVKYDtPGh@jF)xizCy7m_HB7 zYxX;cZ0)+cbWX+k2Qweootz=D$f1b!<{QLda*gc%R?v+5H?d(}*xgHNyW5abz z_Ak(}3ec|o^zFBO;``w8zgoGAUaCZ7|KyWx*I0G;=+h`~u6I25EDuC1Yc>;Qp33hh zxAB49&c-_pPxHR7kSny5QxZr@Xc6bB`(PbsFh?eQRY>Q{&ZjFob*ubDrXO4vFS7Ni z^_~99`=ls@ULLi)a9r_J#kV(+PWzQI7$haX9V(a| z;Qw;+{dtB{thRP8U!GQTWYNY;OhH{9xj#1rZuv2J{)*b}DxZBDlnpzzj!j7veC)sP zo*Qdx>y^cqb4}i!y&7V+OQl<_eDCY9Tf1Isoc;g8I?5zjW9{!mbKly>#aTDEnCZ^7 z1?82Fy1$P(_L?lS*Nyurymwy?^Y7c6!sQn)RzDZ~KQMn~USIKZfkfB%0!`*HlZA~( z%{k^QPCGm6=zWD38-JRgylr+fHQ4_9t>e}#`+vWl{O4Zv`;8p`Ztl7n@?P<}i+Vwa z!_KXh6Jw68Oa0zgD-yVi<+I5&u_gZ3wDk{HE}NXNHe|lv#SNK)t|?5HjJU2#nOyRX zz2qVkG(W~AsP<&Rr^hzab3S6|>)5D~>@FLZ2t+G1)~e66-tqKGdz489D3GfA2o#h4RrZ{NLE&epJ0(zT`i;%p`He}V~t*4~L&C=5``BE$$`vP71p2k=eLMOIJZG!i`Ok&C}`0%FN5l-Yo7ZJhhSC z@R+-#pl3q=;|&jaSa|=-%TKtZzA5s^j?&udHv(~65?NK3EtkkT_5SP*(?=2IlQUnq zD#l-o{=u#ju~|0hj@`c>kE%BranRqsB|yRxV-*J@@}=d`+QGx^k(UYc1P9^z?m zPCx#i*tScSwZBSQ>$mF9WnR-e!RSX(?$+WhLRTD``E%E<_q5)!gy-L~nrp@P^JJB{ zxHQdmyJv0Jp0(%Z#)cK@|0)~2rUa{X;-c1n0yR&|Ko&Ryq%eSs)(hB68#QmF9WxTwlKr z^U`vVOVDLwvM7G$GhNNncF~Tkt6FM%Be&&9_DUMNm0s$UK6YG6UNVz~TafXEx8T7; z?y~YGdmi-5*+%6^#B1-5IiMms*=*lgvrS)KUG*-EpCGAlsO>7NwfNeTCNa!nIuQXf zx>t(%XI$`^XEXEb)-4ZeTg9z{3~ukth%|Q;+LU;hO>FKY;Tr9C?cS0f{OoIgnatjx zd?MUhe z$f-JipGUzokMk#zT&~BSJbn6VNyh;$d9xMgW*9n`htJeay>M56pZ(EaCMVVF4_;3_ zFR7bq@MzzUXXSf-U%jM$SaDJ1@95lzw|ky1R#@NgQ(WGrW(rp^_l+aQi+q+iaWUrX zDeW+r%aVO|(GywC^I~dOFMKN5rEoGVE5laMb&tx`H^Ds;OQK38R97BYW^rYyXyB1! zvmL}1tBO`U#3~=7C#;`j;=^LM+*_@XG1t2Mo26Ci(HqyR z)_-~-5~lHl<^GAXmlKUV)SGH%?)5#qCux&(xbw_ww_~NN?RIuf%-EB@E$3%s;ffF; z#+`>+PrtlU{$%#5(55X)o2tJZGEFPrR(Lwjt>w9$`3y_joIk1hYyVVP-@Us|@bBAi zY9+SHv%_jPH`_&g?v6Len)pC{eodF{{24D2RWmOvaO8Sht+0fr?(Ui=DQl9xzrOCj zv7Yn$nZG9mdAE6;N;p#MDBQzzx9ZK3Z6V9%z240^F(LC;it@UZ%lTX?94q+ctWN#Y zJ)^(iP?HlEFaJ`3KP`{$3-q58yowDNP&S+H@6u&axXK%h$rL!hg*&fS+&Lmn_Ua~|K8dwWKn@4hL`9ZFo^J-;ly zf5zsxxF@UKx(W6T50ajBtLpr0^KlUojGX>`>&)+uyzhQk!!~o$>m45_v2lhecl|i< z=%0Y5+eAC#7xm@qxNNdyG(1_&j^6!$Y_ra(CEH#J@hmw%Jyd+nhQ#N)g4J1fq-QL= zs>b@G{zKe!_j@&!aWzwoOjb>CQrK0#ef{#vn|JoqoI0(&;LjhXQ|Hd6AD^lv=@_WB z`_=v%JNnhm+&rYVQd9Hz-AM^2M3c0qr+;FJQwYwe&X!g4mAJFnmUqu~-rmYo%dOrk z!q*7a{oj1nq%=hS*{cl|Py2f~q$5AbojiX&cu#dv@#hus`+wiC6Y|)&LB8?zf}d@f z`LU8cIotP_W@df})c^8e#to6o#m-&#*IxQ^{$Jev7oR`+=tOR6iL3ux`i;->u2sL* zeZl8NGxtbaUa{C`=jt+ZvZd&gZ3`Am;41p`;=sbiE?-1=dDzU@D5q`Td{yrRvDn&r7)pFQ(3m;V!O_K%V`H>)+2YpL)_{t)QX-LyG~U+STKG6*k&DDs-M6peyY{yp=}kUfQPfdU`>FZNt~ckI zHA7b4()AIR3Duf($=E3K=k#dKNu7_E>s?S57Tf%5gXOy?H&4qw<@vWSy>MTYiNyN} zRbQn9?)hrW`SGZHPqU?>*`r^LE0`|^2~_WF(G$r1_mf>8?B=q;_JFO_18z4=i&vzf|7nAk zzcb3E?(JuuySJh@vuXQVJGa@}?t`A2 zn9ZBN6JFgG+~GW-+d8A5Y5wmL-sx$-9tkXrKE<#}yV|Vh7>A04bYG(Xi{LqIcVb1`3GcmYh`XnHM8jGtp>6 zMt&V*aY{!A$I=b6Huk(|`fy73tj*oeOZU33^eItMK6{BN*1)Xd-TnRjN=jWy$M+=2 z6t{Eue`WvlK1yXr*;}g|*TXLZ<8^bszRTUTEB{We-jQPFO|Q?X&n({J=KU_z#P+$D zn(CIkMHlYR(oHpBI(+5h{+HV-O{cOvPW#aK>i+)yNpAT^dVdACTYIv;a#dNAb8}Ny zkG4d~jfzKk*R=0mQQf+1Q?vg%>oZSYPWpTBdf)SVJ=cQLDvo=ZH%RENToJgKjaR~; zVZ*IMi+>!PCBtOIr{n+X;@Xq*)%PUJ)%{3}+FP~tQDCvtuat}{cO(CP?A@ubFXHY2 zIkrFVdbOP|R>#br(&$>v8`bA)J>`hf@ry>bPrsP&Tl&5{%^>O1x7*wzf0s?OyP5Ys zP*>>ALT7cc%Hl~q=cIG)?u@An?zcZ)bt~qCa7)GO$vjQ#p9xHyKiB=Id6A~crVOL- zjEPeY%J&q!oBB8X<%yp8CCmNH=CV9a?d`vj+;4kKPH4BdOHjauFRQnGJ$Bz2wie*c zYyQA5sln5yRy3*{Qam8uyJ+g$FJGf>ury3%+}fe^swM5(xuernn8VTpjh%uTR~T{# z{OQ?f$>ky;EtaUfEG>|wzffB?d5^680hU1j9H*&bU%03J-Fvc7fB&|y5-#Bqb@ker zCYeIYCngx%e!UWWroQ~nhP0f?v!-b`3kI>}{|+azN7Jq!Xnl1#0wt=s3-maWM(5Bc5AZ1y8rzB6hcbN%aS^VeTjpSisL+xK5P zmcOwx6qy_lYiW4++158UYVir{c*Hy;|LmOqC3*Ub2i*5JhZ?D@z8LJIelUZj!+?Wh zI#fvT z@r2(FLaybLxN@voSGVp-&^h!o@!TBCkmY`|q3ImzE;b7p?`}+Hj}DzARkKEdi zYp(A%nQ&fRZL!C@pp8kcuEsl5xNG@;9=Iev)iZj7p{})c|4t(b%~S&>;TIj3`PGA4 zXJ|}+HOW7AnKheUD&w@(;riN~?um-6?d}p6SuVf2P}Fha^y%f(bfYV${=2=!ZC1d> zuwN<=4hjNoSfP_X3FUr{^E}LqJ5|VNorr;=X8$cI=4*n^QPWf zjljTlEhjoon%Kpi;Lxalm^^9Tgb4}1S(GH!XPNa*IHb^d;>N~g&8O2lyI4fbHxkRGYi9u|($uCb$<*BNF>Hp>PGv|<m z$6DpT@z0JuuPvw4{Sk`2S=@F@^oVh$NZ7TVEG&NnC6o?m-RF6~a^ti~32Tpely3eZ z%MvilPh5V&j~^A$7Wy7@6>S=`kKI2zDMZ2O>!;KD>~Fn!E*jogY}u*db)3KK?_o6` z-9;Al|7yNHSS{#U5qsKp;#rC5|E|33<4JVt30({tB9CFZn3@;z{`}UncH*<*RXiuS zKYD(4_VKt|RiAIK-a5H{&zv6KdvA-r%O*5?Ui|m>_si)|zwf+bwP>ICx|D#YEp2i6 z5yp$w3)a?EUK78vFV}Y0_j}JuK3tHj`npyB<<^_cE33Z#|0y^BesPP|l>VR>J@2au zOea^WsLF==&d>Sou|bUU*nj@Cc8)vpVVe~%7fl!SUq6L$$=T>lX-9s9u5Qkk=%01# z${O#A(DzgKuAEY-H`gl7BrQh3eul!Qgq0VC*`g;Tn6~WjVPH@w;(5lOD|`JQi&s$N z(p`^__uo!qV79JT72ObYP_O2NUUO-3^E6`?r7k~(t|-ByN4v#0KWCn}KS9}fMnO_3 z$G(kO7yWu_cfa0|__nQou8n4|;N+JHa+fRA6Bj9~AGEamIc45NU(vj^`m;rz244F3 zc}k(}Y$?-Keitu#b@qnGC*^FI=u-3g%1RgETN@_#Ua!{Z&A&Z&XQZay z{<~9b-{u(=hrVsC{{BwKfSuc@#(s;^}^>@jJo70O{#_Od%SbaZC zJ#3>c=e1Y84qjRtj3vD%oKSk+^2jr&kzGVSXwQ^NBTn@@)Ae(Co~?)s3KA+#EYu1t z5$8O{UG?R~#Ve~qwWsH`i!92$y{*f|Y+nzr@p;EK`|@4k_3LhG6ZSXUc;`SJgX z`HQ@!F4&g)`eH8U))j?|UtL+?7^)Tes{ZEIOZ?)gt<9mcw(QwhV!Za(Kc?AR^y2?b zTvY2f!6jqjgSfp_zxVEXxbbjK0mHtT948+B?s}mz?a5BrnY^=}2Ma5R=4}09$EBZJ z(`KK(CnKXfB!4j&rL0Axw)QakyhxbjsMvXaVhnj$PFvg zn`>1%lTXIN^|N^1l2=!gUbK4do!R#N)m5IV#8b;nYBJQb?(X7yd$YJnOz&6UKg;iq zyDALlKKuJRdzNjs!Bp+&RXcdEUoy)4)AIDon;F$BJs(GW`@jF@hW0)=TldBDUq#i( zc$9=);_T9VzKZpK=50f%zn{{MTf3~VRDb&9$)yhu`=z#J-kF{5EAv{O>4d|~OF!D~ z&wjjSn$eH)>#phSyqsao&RQ!O6px+p)mwSsT}j0J3a@IOPuzd!t=~7#tz_DY!{sbn z$}TzcHOB7RFlCZ{dWkdvAN(;-S8$V56d& z--E=`_Uc1RZrvAp)2H5f-)8Lw*WDGC&8N&(IjefLTwWJ@a?6Xmz9!}81jIL;DrEJn zOM3GA%a4xz7Z?1#ZOr@Ld;OY)*VA~HO;S~U@nU1~m36tcyC%+bj<4O?9agui_t}2S zDFTJ_{=S<2<-8?-z|T(?*H{TePg%e3p6mSeH&2=!iQPZX*Zbb@#)g|)Sy5_NcYQYfcJAX8yPNknCVu&ON0RC5s)-3XWw{rXDrA*lz%g_Ap$XKkpCKR^G{#GlNkJ5y5T&hn{a@Q*torV!eovM}


+
+,--------------------------------------------------.           ,--------------------------------------------------.
+ |        |   1  |   2  |   3  |   4  |   5  |  Esc |           |  Esc |   6  |   7  |   8  |   9  |   0  |   =    |
+ |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ |   ~    |  '   |   ,  |   .  |   P  |   Y  |   [  |           |   ]  |   F  |   G  |   C  |   H  |   L  |   /    |
+ |--------+------+------+------+------+------|   {  |           |   }  |------+------+------+------+------+--------|
+ |  Tab   |   A  |   O  |   E  |U/LSft| I/L1 |------|           |------|  D/L1|R/RSft|   T  |   N  |   S  |   -    |
+ |--------+------+------+------+------+------| LGUI |           | LGUI |------+------+------+------+------+--------|
+ | {/LSft |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
+ `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+   |      |      |      |      | ~L1  |                                       | ~L1  |      |      |   \  |        |
+   `----------------------------------'                                       `----------------------------------'
+                                        ,-------------.       ,-------------.
+                                        | HOME |  END |       | LEFT | RIGHT|
+                                 ,------|------|------|       |------+--------+------.
+                                 | BSPC |  DEL | PGUP |       |  UP  | SPACE  |RETURN|
+                                 |  /   |  /   |------|       |------|   /    |  /   |
+                                 | LCTL | LALT |PGDWN |       | DOWN | LALT   | LCTL |
+                                 `--------------------'       `----------------------'
+
+
+ +### Keymap 1: Aux layer + +

+
+,--------------------------------------------------.           ,--------------------------------------------------.
+|  VolUp |      |      |      |      |      | SLEEP            | PWR  |      |      |      |      |      |        |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|  VolDn |  F1  |  F2  |  F3  |  F4  |      |      |           |      |      |   7  |   8  |   9  |   *  |        |
+|--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+|        |  F5  |  F6  |  F7  |  F8  | TRANS|------|           |------|TRANS |   4  |   5  |   6  |   +  |        |
+|--------+------+------+------+------+------|      |           |PSCR  |------+------+------+------+------+--------|
+|  TRANS |  F9  |  F10 |  F11 |  F12 |      |      |           |      |      |   1  |   2  |   3  |   /  |  TRANS |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |CTRL-S|CTRL-Z|CTRL-X|CTRL-C| TRANS|                                       | TRANS|    . |   0  |   =  |      |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       | TRANS| TRANS|       | TRANS| TRANS|
+                                ,------|------|------|       |------+------+------.
+                                |      |      | TRANS|       | TRANS|      |      |
+                                |TRANS |TRANS |------|       |------| TRANS| TRANS|
+                                |      |      | TRANS|       | TRANS|      |      |
+                                `--------------------'       `--------------------'
+
+
+ + + +## Generation of .hex file +> In the "qmk_firmware/keyboards/ergodox" directory. + +> Execute "make dvorak_emacs". Then the hex file "ergodox_ez_dvorak_emacs.hex" is in the root directory : "qmk_firmware". + +> Flash with `teensy_loader` binary From b8679bbe045a2285d6ab6bbc420121b26f516b9a Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 5 Oct 2016 20:41:33 -0400 Subject: [PATCH 039/727] RGBW lights --- keyboards/ergodox/config.h | 2 ++ keyboards/ergodox/keymaps/jack/Makefile | 5 +++++ keyboards/ergodox/keymaps/jack/config.h | 14 ++++++++++++++ keyboards/ergodox/keymaps/jack/keymap.c | 4 ++-- quantum/rgblight.c | 18 +++++++++++++++--- quantum/rgblight.h | 1 + 6 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 keyboards/ergodox/keymaps/jack/Makefile create mode 100644 keyboards/ergodox/keymaps/jack/config.h diff --git a/keyboards/ergodox/config.h b/keyboards/ergodox/config.h index edc60caae1..049c707a56 100644 --- a/keyboards/ergodox/config.h +++ b/keyboards/ergodox/config.h @@ -1,6 +1,8 @@ #ifndef KEYBOARDS_ERGODOX_CONFIG_H_ #define KEYBOARDS_ERGODOX_CONFIG_H_ +#include "config_common.h" + #define MOUSEKEY_DELAY 100 #define MOUSEKEY_INTERVAL 20 #define MOUSEKEY_MAX_SPEED 3 diff --git a/keyboards/ergodox/keymaps/jack/Makefile b/keyboards/ergodox/keymaps/jack/Makefile new file mode 100644 index 0000000000..1e57612788 --- /dev/null +++ b/keyboards/ergodox/keymaps/jack/Makefile @@ -0,0 +1,5 @@ +RGBLIGHT_ENABLE = yes + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/ergodox/keymaps/jack/config.h b/keyboards/ergodox/keymaps/jack/config.h new file mode 100644 index 0000000000..01ccfb3a2a --- /dev/null +++ b/keyboards/ergodox/keymaps/jack/config.h @@ -0,0 +1,14 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D7 +// #define RGBLIGHT_TIMER +#define RGBLED_NUM 20 // Number of LEDs +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 + +#endif \ No newline at end of file diff --git a/keyboards/ergodox/keymaps/jack/keymap.c b/keyboards/ergodox/keymaps/jack/keymap.c index dda253fa45..1dd5a76187 100644 --- a/keyboards/ergodox/keymaps/jack/keymap.c +++ b/keyboards/ergodox/keymaps/jack/keymap.c @@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_ENT, MO(1), KC_LEFT,KC_DOWN,KC_UP, KC_RGHT, - KC_NO, KC_NO, + RGB_TOG, RGB_HUI, KC_PGUP, KC_PGDN, KC_SPC,KC_SPC ), @@ -90,7 +90,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // Runs just one time when the keyboard initializes. void matrix_init_user(void) { - + }; // Runs constantly in the background, in a loop. diff --git a/quantum/rgblight.c b/quantum/rgblight.c index f82e3ec558..801ca1d0d9 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -50,7 +50,11 @@ const uint8_t RGBLED_KNIGHT_INTERVALS[] PROGMEM = {100, 50, 20}; rgblight_config_t rgblight_config; rgblight_config_t inmem_config; -struct cRGB led[RGBLED_NUM]; +#ifdef RGBW + struct cRGBW led[RGBLED_NUM]; +#else + struct cRGB led[RGBLED_NUM]; +#endif uint8_t rgblight_inited = 0; @@ -334,14 +338,22 @@ void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b) { void rgblight_set(void) { if (rgblight_config.enable) { - ws2812_setleds(led, RGBLED_NUM); + #ifdef RGBW + ws2812_setleds_rgbw(led, RGBLED_NUM); + #else + ws2812_setleds(led, RGBLED_NUM); + #endif } else { for (uint8_t i = 0; i < RGBLED_NUM; i++) { led[i].r = 0; led[i].g = 0; led[i].b = 0; } - ws2812_setleds(led, RGBLED_NUM); + #ifdef RGBW + ws2812_setleds_rgbw(led, RGBLED_NUM); + #else + ws2812_setleds(led, RGBLED_NUM); + #endif } } diff --git a/quantum/rgblight.h b/quantum/rgblight.h index def26c428c..2a712d8be4 100644 --- a/quantum/rgblight.h +++ b/quantum/rgblight.h @@ -1,6 +1,7 @@ #ifndef RGBLIGHT_H #define RGBLIGHT_H +#define RGBW 1 #if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) #define RGBLIGHT_MODES 23 From 99ca59baf8d508f3221df5dd89158241925aca14 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Wed, 12 Oct 2016 12:03:54 -0400 Subject: [PATCH 040/727] I keep mis-using UPPER|LOWER/SLASH, and getting RESET. With RESET shifted to the UPPER+LOWER layer, it is now time to change that key to Alt-Slash, which, in Emacs, does automatic word completion --- keyboards/planck/keymaps/cbbrowne/keymap.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index 7f1601af75..4742ca5c06 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -94,6 +94,7 @@ enum macro_id { #define SHIFTQUOTE MT(MOD_RSFT, KC_QUOT) #define ALTRIGHT MT(MOD_LALT, KC_RGHT) #define MVERSION M(M_VERSION) +#define ALTSLASH LALT(KC_SLSH) /* Note that Planck has dimensions 4 rows x 12 columns */ @@ -109,13 +110,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RAISE] = { /* RAISE */ {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QWERTY, KEYPAD, KEYPAD, RESET, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QWERTY, KEYPAD, KEYPAD, ALTSLASH,_______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [_LOWER] = { /* LOWER */ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QWERTY, KEYPAD, KEYPAD, RESET, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QWERTY, KEYPAD, KEYPAD, ALTSLASH, _______}, {_______, KEYPAD, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, [_KEYPAD] = { /* Key Pad */ From 8ec7341fb27186e9b3dceb8acd97c5d7fb263e1d Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 15 Oct 2016 15:28:16 -0500 Subject: [PATCH 041/727] Added Ctrl+` (ConEmu shortcut) --- keyboards/atreus/keymaps/replicaJunction/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index 52d3677fa7..f7ef1174dc 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [_EX] = KEYMAP( /* Extend */ - KC_CAPS, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, + KC_CAPS, _______, _______, _______, LCTL(KC_GRV), KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, _______, KC_LGUI, KC_LALT, KC_LCTL, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, _______, KX_CUT, KX_COPY, _______, KX_PAST, _______, KC_TAB, KCX_LST, _______, KC_INSERT, _______, _______, _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, KC_PSCR From a9c8f2f5b888e18857bc2987c4b5058912404abe Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 15 Oct 2016 16:44:26 -0500 Subject: [PATCH 042/727] Reduced TAPPING_TERM to 150 Also removed duplicate definition of PREVENT_STUCK_MODIFIERS --- keyboards/ergodox/keymaps/replicaJunction/config.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/keyboards/ergodox/keymaps/replicaJunction/config.h b/keyboards/ergodox/keymaps/replicaJunction/config.h index d03e193db9..c620349ad0 100644 --- a/keyboards/ergodox/keymaps/replicaJunction/config.h +++ b/keyboards/ergodox/keymaps/replicaJunction/config.h @@ -28,12 +28,9 @@ along with this program. If not, see . /* define if matrix has ghost */ //#define MATRIX_HAS_GHOST -#define TAPPING_TERM 200 +#define TAPPING_TERM 150 #define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.) -// Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers -#define PREVENT_STUCK_MODIFIERS - // I don't have any locking keys, so I don't need these features @@ -44,6 +41,7 @@ along with this program. If not, see . //#define LOCKING_RESYNC_ENABLE /* Prevent modifiers from sticking when switching layers */ +/* Uses 5 bytes of memory per 8 keys, but makes sure modifiers don't get "stuck" switching layers */ #define PREVENT_STUCK_MODIFIERS /* key combination for command */ From d9db5395b3f11728926dcde77046a5ac7bff0123 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 15 Oct 2016 16:51:40 -0500 Subject: [PATCH 043/727] Updated layout to 1.2 - lots of changes Rewrote QWERTY to make it a first-class citizen instead of just a glorified game layer. Added a lot of keys to Extend layer to bring it in line with my Atreus. Plenty of other changes too. --- .../ergodox/keymaps/replicaJunction/keymap.c | 186 +++++++----------- 1 file changed, 74 insertions(+), 112 deletions(-) diff --git a/keyboards/ergodox/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c index 6c8333ab07..7c2b051f97 100644 --- a/keyboards/ergodox/keymaps/replicaJunction/keymap.c +++ b/keyboards/ergodox/keymaps/replicaJunction/keymap.c @@ -1,7 +1,7 @@ /* * Keyboard: Ergodox * Keymap: replicaJunction - * Version: 1.1 + * Version: 1.2 * * This keymap is designed to complement my Atreus keyboard layout, found in keyboards/atreus. * The Atreus keyboard is a 40% board whose design was heavily influenced by the Ergodox, and I now @@ -17,14 +17,22 @@ #include "action_layer.h" #define _CO 0 // Colemak -#define _DV 1 // Dvorak -#define _QW 2 // QWERTY -#define _ME 3 // media keys -#define _NU 4 // numpad -#define _EX 5 // extend -#define _GA 6 // mouse overlay for gaming +#define _QW 1 // QWERTY +#define _ME 2 // media keys +#define _NU 3 // numpad +#define _EX 4 // extend +#define _GA 5 // mouse overlay for gaming -#define _______ KC_TRNS // Simple alias that just makes the keymaps a bit easier to look at +// Some quick aliases, just to make it look pretty +#define _______ KC_TRNS +#define KCX_CGR LCTL(KC_GRV) +#define KCX_LST LSFT(KC_TAB) +#define KX_COPY LCTL(KC_C) +#define KX_CUT LCTL(KC_X) +#define KX_PAST LCTL(KC_V) +#define KX_UNDO LCTL(KC_Z) + +; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* @@ -33,16 +41,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | = | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | \ | Q | W | F | P | B | Home | | BkSp | J | L | U | Y | ; | - | + * | Tab | Q | W | F | P | B | Home | | BkSp | J | L | U | Y | ; | - | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | ' | + * | LCtl | A | R | S | T | G |------| |------| M | N | E | I | O | ' | * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| * | LShft | Z | X | C | D | V | | | | K | H | , | , | / | RShft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | LGui | [ | ] |CtlShf| LAlt | | _EX | - | ' | Right| \ | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | LCtrl| LAlt | | Left | Right| + * | LCtrl| ~GA | | Left | Right| * ,------|------|------| |------+------+------. * |LCtrl/| LAlt/| Home | | Up | Alt/| _NU/ | * | BkSp | Del |------| |------| Enter| Space| @@ -53,12 +61,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_CO] = KEYMAP( // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, - KC_BSLS,KC_Q, KC_W, KC_F, KC_P, KC_B, KC_HOME, - KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_G, + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_HOME, + KC_LCTL,KC_A, KC_R, KC_S, KC_T, KC_G, KC_LSFT,KC_Z, KC_X, KC_C, KC_D, KC_V, ALL_T(KC_NO), KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), KC_LALT, - KC_LCTL, KC_LALT, + KC_LCTL, TG(_GA), KC_HOME, CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(_NU), // right hand @@ -73,56 +81,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC) ), - /* - * Keymap: Dvorak layout - * - * The right index backspace is a nod to my TypeMatrix keyboard, which has - * Backspace in the center. - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | / | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | \ | ' | , | . | P | Y | Home | | BkSp | F | G | C | R | L | = | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | Tab | A | O | E | U | I |------| |------| D | H | T | N | S | - | - * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| - * | LShft | ; | Q | J | K | X | | | | B | M | W | V | Z | RShft | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | LGui | [ | ] |CtlShf| _NU | | Left | Up | Down | Right| \ | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | LCtrl| LAlt | | _ME | RAlt | - * ,------|------|------| |------+------+------. - * | Ctl/ | Alt/ | Home | | PgUp | | _NU/ | - * | BkSp | Del |------| |------| Enter| Space| - * | | | _NU | | PgDn | | | - * `--------------------' `--------------------' - */ - -// _DV -[_DV] = KEYMAP( - // left hand - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, - KC_BSLS,KC_QUOT,KC_COMM, KC_DOT, KC_P, KC_Y, KC_HOME, - KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, - KC_LSFT,KC_SCLN,KC_Q, KC_J, KC_K, KC_X, ALL_T(KC_NO), - KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), MO(_NU), - - KC_LCTL, KC_LALT, - KC_HOME, - CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(_NU), - // right hand - KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_SLSH, - KC_BSPC, KC_F, KC_G, KC_C, KC_R, KC_L, KC_EQL, - KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, - KC_BSLS, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, - KC_LEFT,KC_UP, KC_DOWN,KC_RGHT,KC_BSLS, - - MO(_ME), KC_RALT, - KC_PGUP, - KC_PGDN, KC_ENT, LT(_NU,KC_SPC) - ), - /* * Keymap: QWERTY layout. * @@ -132,45 +90,45 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * and repositioning the arrow keys at the bottom right corner. * * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | - | + * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | = | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | LShift | Q | W | E | R | T | +L1 | | BkSp | Y | U | I | O | P | ] | + * | LShift | Q | W | E | R | T | Home | | BkSp | Y | U | I | O | P | - | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | Tab | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | - * |--------+------+------+------+------+------| FN2 | | ~L1 |------+------+------+------+------+--------| - * | LShft | Z | X | C | V | B | | | | N | M | , | . | Up | RShft | + * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| + * | LShft | Z | X | C | V | B | | | | N | M | , | . | / | RShft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | LCtrl| ` | \ |CtlShf| _NU | | ~_GA | / | Left | Down | Right| + * | LGui | ` | \ |CtlShf| _NU | | _EX | - | ' | [ | ] | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | LCtrl| LAlt | | _ME | ~_GA | + * | LCtrl| ~GA | | Left | Right| * ,------|------|------| |------+------+------. - * | | | Home | | PgUp | | _NU/ | - * | Space| LAlt |------| |------| Enter| Space| - * | | | End | | PgDn | | | + * |LCtrl/| LAlt/| Home | | Up | Alt/| _NU/ | + * | BkSp | Del |------| |------| Enter| Space| + * | | | _NU | | Down | | | * `--------------------' `--------------------' */ [_QW] = KEYMAP( // Layer1: QWERTY // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, - KC_LSFT,KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME, - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME, + KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), KC_LCTL,KC_GRV, KC_SLSH,LCTL(KC_LSFT), MO(_NU), - KC_LCTL,KC_LALT, - KC_HOME, - KC_SPC, KC_LALT, KC_END, + KC_LCTL,TG(_GA), + KC_HOME, + CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(_NU) // right hand - KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RBRC, - KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL, - KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_MINS, - KC_END, KC_N, KC_M, KC_COMM,KC_DOT, KC_UP ,KC_RSFT, - TG(_GA),KC_UP, KC_LEFT,KC_DOWN,KC_RGHT, + KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, + KC_BSLS, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, + MO(_EX),KC_MINS,KC_QUOT,KC_RGHT,KC_BSLS, - MO(_ME),TG(_GA), - KC_PGUP, - KC_PGDN,KC_ENT,LT(_NU,KC_SPC) + KC_LEFT, KC_RGHT, + KC_UP, + KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC) ), /* @@ -190,10 +148,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | % | ^ | [ | ] | ~ | | | | \ | 1 | 2 | 3 | + | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | RESET|QWERTY|Dvorak|Colemk| | | 0 | . | = | | | + * | |QWERTY|Colemk| | | | 0 | . | = | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * |NumLck| | | | | + * |NumLck| RESET| | | | * ,------|------|------| |------+------+------. * | | | | | | | | * | | |------| |------| | | @@ -206,9 +164,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, _______, _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, - RESET, DF(_QW), DF(_DV), DF(_CO), _______, + _______, DF(_QW), DF(_CO), _______, _______, - KC_NLCK,_______, + KC_NLCK,RESET, _______, _______,_______,_______, // right hand @@ -227,13 +185,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * Keymap: Extend * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | + * | | F11 | F12 | F13 | F14 | F15 | Mute | | | F16 | F17 | F18 | F19 | F20 | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | |------| |------| | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | | | | | + * | | | | | | Ctrl`| Vol | | | PgUp | Home | Up | End | Del | | + * |--------+------+------+------+------+------| Up | | |------+------+------+------+------+--------| + * | | | Gui | Alt | Ctrl | |------| |------| PgDn | Left | Down | Right| BkSp | PrntScr| + * |--------+------+------+------+------+------| Vol | | |------+------+------+------+------+--------| + * | | Undo | Cut | Copy | | Paste| Down | | | | ^Tab | Tab | |Insert| | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' @@ -244,23 +202,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | |------| |------| | | * | | | | | | | | * `--------------------' `--------------------' + * + * Ctrl+` is a keyboard shortcut for the program ConEmu, which provides a Quake-style drop-down command prompt. + * */ [_EX] = KEYMAP( // left hand - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, + _______, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_MUTE, + _______, _______, _______, _______, _______, KCX_CGR, KC_VOLU, + _______, _______, KC_LGUI, KC_LALT, KC_LCTL, _______, + _______, KX_UNDO, KX_CUT, KX_COPY, _______, KX_PAST, KC_VOLD, _______, _______, _______, _______, _______, _______,_______, _______, _______,_______,_______, // right hand - _______, _______, _______, _______, _______, _______, _______, - _______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, _______, - KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, - _______, _______, _______, _______, _______, _______, _______, + _______, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, _______, + _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, _______, + KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, KC_PSCR, + _______, KCX_LST, KC_TAB, _______, _______, KC_INS, _______, _______, _______, _______, _______, _______, _______, _______, _______, @@ -270,7 +231,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Keymap: Gaming * - * This is mostly a mouse overlay for the right hand while the left hand uses the QWERTY layout. + * Provides a mouse overlay for the right hand, and also moves some "gamer friendly" keys to the left, such as space. + * This layer also removes a lot of dual-role keys, as when gaming, it's nicer not to need to keep track of those. * * ,--------------------------------------------------. ,--------------------------------------------------. * | | | | | | | | | | | | | | | | @@ -281,13 +243,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | | | | | | | | | | | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | |MClick| | | | | + * | LCtrl| | | | | | | | | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | | | | | ~_GA| + * | | ~_GA | | |MClick| * ,------|------|------| |------+------+------. * | | | | | | | | - * | | |------| |------|RClick|LClick| + * | Space| |------| |------|RClick|LClick| * | | | | | | | | * `--------------------' `--------------------' */ @@ -297,19 +259,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, + KC_LCTL, _______, _______, _______, _______, _______,_______, _______, - _______,_______,_______, + KC_SPC, _______,_______, // right hand _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, _______, - KC_BTN3, _______, _______, _______, _______, - _______, _______, + _______, _______, _______, _______, _______, + _______, KC_BTN3, _______, _______, KC_BTN2, KC_BTN1 ), From c67f6ee872561358c1f4d29b2e36087b03080253 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 15 Oct 2016 17:03:27 -0500 Subject: [PATCH 044/727] Added Menu key (the rclick menu) --- keyboards/ergodox/keymaps/replicaJunction/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/ergodox/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c index 7c2b051f97..f57e7373f4 100644 --- a/keyboards/ergodox/keymaps/replicaJunction/keymap.c +++ b/keyboards/ergodox/keymaps/replicaJunction/keymap.c @@ -189,9 +189,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | | | | | Ctrl`| Vol | | | PgUp | Home | Up | End | Del | | * |--------+------+------+------+------+------| Up | | |------+------+------+------+------+--------| - * | | | Gui | Alt | Ctrl | |------| |------| PgDn | Left | Down | Right| BkSp | PrntScr| + * | | | Gui | Alt | Ctrl | |------| |------| PgDn | Left | Down | Right| BkSp | Menu | * |--------+------+------+------+------+------| Vol | | |------+------+------+------+------+--------| - * | | Undo | Cut | Copy | | Paste| Down | | | | ^Tab | Tab | |Insert| | + * | | Undo | Cut | Copy | | Paste| Down | | | | ^Tab | Tab | |Insert| PrntScr| * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' @@ -220,8 +220,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand _______, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, _______, - KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, KC_PSCR, - _______, KCX_LST, KC_TAB, _______, _______, KC_INS, _______, + KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, KC_MENU, + _______, KCX_LST, KC_TAB, _______, _______, KC_INS, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, From 07149812889e433ce684b14666e89e27264a41ce Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 15 Oct 2016 17:19:07 -0500 Subject: [PATCH 045/727] Fixed typo --- keyboards/ergodox/keymaps/replicaJunction/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c index f57e7373f4..f3a2e95138 100644 --- a/keyboards/ergodox/keymaps/replicaJunction/keymap.c +++ b/keyboards/ergodox/keymaps/replicaJunction/keymap.c @@ -118,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LCTL,TG(_GA), KC_HOME, - CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(_NU) + CTL_T(KC_BSPC), ALT_T(KC_DEL), MO(_NU), // right hand KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, From 80fe2ea676d54d917209567a346963ab9fd93614 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 15 Oct 2016 17:23:25 -0500 Subject: [PATCH 046/727] Switched Tab and Ctrl back --- keyboards/ergodox/keymaps/replicaJunction/keymap.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/keyboards/ergodox/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c index f3a2e95138..eaa7810706 100644 --- a/keyboards/ergodox/keymaps/replicaJunction/keymap.c +++ b/keyboards/ergodox/keymaps/replicaJunction/keymap.c @@ -41,9 +41,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | = | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Tab | Q | W | F | P | B | Home | | BkSp | J | L | U | Y | ; | - | + * | LCtrl | Q | W | F | P | B | Home | | BkSp | J | L | U | Y | ; | - | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | LCtl | A | R | S | T | G |------| |------| M | N | E | I | O | ' | + * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | ' | * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| * | LShft | Z | X | C | D | V | | | | K | H | , | , | / | RShft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' @@ -61,8 +61,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_CO] = KEYMAP( // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_HOME, - KC_LCTL,KC_A, KC_R, KC_S, KC_T, KC_G, + KC_LCTL,KC_Q, KC_W, KC_F, KC_P, KC_B, KC_HOME, + KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_G, KC_LSFT,KC_Z, KC_X, KC_C, KC_D, KC_V, ALL_T(KC_NO), KC_LGUI,KC_LBRC,KC_RBRC, LCTL(KC_LSFT), KC_LALT, @@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | = | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | LShift | Q | W | E | R | T | Home | | BkSp | Y | U | I | O | P | - | + * | LCtrl | Q | W | E | R | T | Home | | BkSp | Y | U | I | O | P | - | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | Tab | A | S | D | F | G |------| |------| H | J | K | L | ; | ' | * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| @@ -111,8 +111,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QW] = KEYMAP( // Layer1: QWERTY // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME, - KC_LCTL,KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LCTL,KC_Q, KC_W, KC_E, KC_R, KC_T, KC_HOME, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), KC_LCTL,KC_GRV, KC_SLSH,LCTL(KC_LSFT), MO(_NU), From 1455a44a449378c55e178ac20d37146ab5132e7c Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 15 Oct 2016 17:41:36 -0500 Subject: [PATCH 047/727] Added = to match Atreus --- keyboards/ergodox/keymaps/replicaJunction/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/ergodox/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c index eaa7810706..d467c56b4e 100644 --- a/keyboards/ergodox/keymaps/replicaJunction/keymap.c +++ b/keyboards/ergodox/keymaps/replicaJunction/keymap.c @@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| * | LShft | Z | X | C | D | V | | | | K | H | , | , | / | RShft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | LGui | [ | ] |CtlShf| LAlt | | _EX | - | ' | Right| \ | + * | LGui | [ | ] |CtlShf| LAlt | | _EX | - | ' | = | \ | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | LCtrl| ~GA | | Left | Right| @@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_BSPC, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,KC_MINS, KC_M, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_BSLS, KC_K, KC_H, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, - MO(_EX),KC_MINS,KC_QUOT,KC_RGHT,KC_BSLS, + MO(_EX),KC_MINS,KC_QUOT,KC_EQL, KC_BSLS, KC_LEFT, KC_RGHT, KC_UP, @@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| * | LShft | Z | X | C | V | B | | | | N | M | , | . | / | RShft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | LGui | ` | \ |CtlShf| _NU | | _EX | - | ' | [ | ] | + * | LGui | ` | \ |CtlShf| _NU | | _EX | - | ' | = | \ | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | LCtrl| ~GA | | Left | Right| @@ -124,7 +124,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS, KC_H, KC_J, KC_K, KC_L, KC_SCLN,KC_QUOT, KC_BSLS, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH,KC_RSFT, - MO(_EX),KC_MINS,KC_QUOT,KC_RGHT,KC_BSLS, + MO(_EX),KC_MINS,KC_QUOT,KC_EQL, KC_BSLS, KC_LEFT, KC_RGHT, KC_UP, From 825563f34d233728b03e5311cc0d77c40123c1cb Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 15 Oct 2016 17:56:09 -0500 Subject: [PATCH 048/727] Moved Extend tab and ^tab --- keyboards/ergodox/keymaps/replicaJunction/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/ergodox/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c index d467c56b4e..949a713baf 100644 --- a/keyboards/ergodox/keymaps/replicaJunction/keymap.c +++ b/keyboards/ergodox/keymaps/replicaJunction/keymap.c @@ -26,7 +26,7 @@ // Some quick aliases, just to make it look pretty #define _______ KC_TRNS #define KCX_CGR LCTL(KC_GRV) -#define KCX_LST LSFT(KC_TAB) +#define KX_STAB LSFT(KC_TAB) #define KX_COPY LCTL(KC_C) #define KX_CUT LCTL(KC_X) #define KX_PAST LCTL(KC_V) @@ -221,7 +221,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, KC_MENU, - _______, KCX_LST, KC_TAB, _______, _______, KC_INS, KC_PSCR, + _______, _______, KX_STAB, KC_TAB, _______, KC_INS, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, From a2adff94bb52b5fb7c50b90716255ccfae9f53c3 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 15 Oct 2016 18:05:22 -0500 Subject: [PATCH 049/727] Reversed tilde and grave --- keyboards/ergodox/keymaps/replicaJunction/keymap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/ergodox/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c index 949a713baf..610fa5856c 100644 --- a/keyboards/ergodox/keymaps/replicaJunction/keymap.c +++ b/keyboards/ergodox/keymaps/replicaJunction/keymap.c @@ -144,9 +144,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | | ! | @ | { | } | & | | | | / | 7 | 8 | 9 | * | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| | | 4 | 5 | 6 | - | | + * | | # | $ | ( | ) | ~ |------| |------| | | 4 | 5 | 6 | - | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | \ | 1 | 2 | 3 | + | | + * | | % | ^ | [ | ] | ` | | | | \ | 1 | 2 | 3 | + | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | |QWERTY|Colemk| | | | 0 | . | = | | | * `----------------------------------' `----------------------------------' @@ -162,8 +162,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, _______, - _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, - _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, + _______, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_TILD, + _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_GRV, _______, _______, DF(_QW), DF(_CO), _______, _______, KC_NLCK,RESET, From 896c1e6f1efbc7827249872ef64261facec484c5 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 15 Oct 2016 18:19:09 -0500 Subject: [PATCH 050/727] Added a bit more detail to header --- .../ergodox/keymaps/replicaJunction/keymap.c | 51 ++++++++++--------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/keyboards/ergodox/keymaps/replicaJunction/keymap.c b/keyboards/ergodox/keymaps/replicaJunction/keymap.c index 610fa5856c..b7a14c10c8 100644 --- a/keyboards/ergodox/keymaps/replicaJunction/keymap.c +++ b/keyboards/ergodox/keymaps/replicaJunction/keymap.c @@ -8,6 +8,10 @@ * have both keyboards, so I've designed these layouts in an effort to make switching between the * two as easy as possible. * + * I've also tried to make use of the extra keys on the Ergodox in as logical of a manner as possible, + * adding to the layers in the Atreus config without disturbing what's there already. This allows for + * things like F11-F20, the Application (Menu) key, and better media key placement. + * * The default key layout in this keymap is Colemak-ModDH. Information on that layout can be found * here: https://colemakmods.github.io/mod-dh/ */ @@ -35,29 +39,28 @@ ; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* - * Keymap: Colemak-ModDH - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | = | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | LCtrl | Q | W | F | P | B | Home | | BkSp | J | L | U | Y | ; | - | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | ' | - * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| - * | LShft | Z | X | C | D | V | | | | K | H | , | , | / | RShft | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | LGui | [ | ] |CtlShf| LAlt | | _EX | - | ' | = | \ | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | LCtrl| ~GA | | Left | Right| - * ,------|------|------| |------+------+------. - * |LCtrl/| LAlt/| Home | | Up | Alt/| _NU/ | - * | BkSp | Del |------| |------| Enter| Space| - * | | | _NU | | Down | | | - * `--------------------' `--------------------' - */ - + /* + * Keymap: Colemak-ModDH + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | Esc | | | 6 | 7 | 8 | 9 | 0 | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | LCtrl | Q | W | F | P | B | Home | | BkSp | J | L | U | Y | ; | - | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Tab | A | R | S | T | G |------| |------| M | N | E | I | O | ' | + * |--------+------+------+------+------+------| Hyper| | \ |------+------+------+------+------+--------| + * | LShft | Z | X | C | D | V | | | | K | H | , | , | / | RShft | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | LGui | [ | ] |CtlShf| LAlt | | _EX | - | ' | = | \ | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LCtrl| ~GA | | Left | Right| + * ,------|------|------| |------+------+------. + * |LCtrl/| LAlt/| Home | | Up | Alt/| _NU/ | + * | BkSp | Del |------| |------| Enter| Space| + * | | | _NU | | Down | | | + * `--------------------' `--------------------' + */ [_CO] = KEYMAP( // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, @@ -131,7 +134,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_DOWN, ALT_T(KC_ENT), LT(_NU,KC_SPC) ), -/* + /* * Keymap: Numbers and symbols * * Note that the number keys here are actually numpad keystrokes. This often doesn't matter, but it may be relevant in a few cases. From d9dede476fe91ea1ec99186ceb55cfad64e3f247 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Sat, 15 Oct 2016 18:40:26 -0500 Subject: [PATCH 051/727] Added VS Code dir to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 153fea093c..1abaeb2177 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ CMakeLists.txt .browse.VC.db* *.stackdump util/Win_Check_Output.txt +.vscode \ No newline at end of file From 5f91fb413624781ac79db641549b9e08753c04b5 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 16 Oct 2016 16:03:33 -0400 Subject: [PATCH 052/727] working with power limit --- build_keyboard.mk | 6 ++ keyboards/ergodox/keymaps/jack/config.h | 2 +- keyboards/ergodox/keymaps/jack/keymap.c | 4 +- quantum/keymap.h | 4 + quantum/light_ws2812.c | 137 +++++++++++++++++++++++- quantum/light_ws2812.h | 7 ++ quantum/quantum.c | 3 + quantum/quantum.h | 4 + 8 files changed, 163 insertions(+), 4 deletions(-) diff --git a/build_keyboard.mk b/build_keyboard.mk index 03a69b1464..cd9f44c7bd 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -169,6 +169,12 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes) SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c endif +ifeq ($(strip $(PRINTING_ENABLE)), yes) + OPT_DEFS += -DPRINTING_ENABLE + SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c + SRC += $(TMK_DIR)/protocol/serial_uart.c +endif + ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes) SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC)) OPT_DEFS += $(SERIAL_DEFS) diff --git a/keyboards/ergodox/keymaps/jack/config.h b/keyboards/ergodox/keymaps/jack/config.h index 01ccfb3a2a..f0932084a0 100644 --- a/keyboards/ergodox/keymaps/jack/config.h +++ b/keyboards/ergodox/keymaps/jack/config.h @@ -6,7 +6,7 @@ /* ws2812 RGB LED */ #define RGB_DI_PIN D7 // #define RGBLIGHT_TIMER -#define RGBLED_NUM 20 // Number of LEDs +#define RGBLED_NUM 15 // Number of LEDs #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 diff --git a/keyboards/ergodox/keymaps/jack/keymap.c b/keyboards/ergodox/keymaps/jack/keymap.c index 1dd5a76187..fabd27a618 100644 --- a/keyboards/ergodox/keymaps/jack/keymap.c +++ b/keyboards/ergodox/keymaps/jack/keymap.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_ENT, MO(1), KC_LEFT,KC_DOWN,KC_UP, KC_RGHT, RGB_TOG, RGB_HUI, - KC_PGUP, + RGB_MOD, KC_PGDN, KC_SPC,KC_SPC ), [SYMB] = KEYMAP( @@ -90,7 +90,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // Runs just one time when the keyboard initializes. void matrix_init_user(void) { - + }; // Runs constantly in the background, in a loop. diff --git a/quantum/keymap.h b/quantum/keymap.h index 98ddfd0c53..41aa116228 100644 --- a/quantum/keymap.h +++ b/quantum/keymap.h @@ -174,6 +174,10 @@ enum quantum_keycodes { // Right shift, close paren KC_RSPC, + // Printing + PRINT_ON, + PRINT_OFF, + // always leave at the end SAFE_RANGE }; diff --git a/quantum/light_ws2812.c b/quantum/light_ws2812.c index 401845e855..d38dac4c69 100755 --- a/quantum/light_ws2812.c +++ b/quantum/light_ws2812.c @@ -16,6 +16,122 @@ #include #include "debug.h" +#define RGBW_BB_TWI 1 + +#ifdef RGBW_BB_TWI + +// Port for the I2C +#define I2C_DDR DDRD +#define I2C_PIN PIND +#define I2C_PORT PORTD + +// Pins to be used in the bit banging +#define I2C_CLK 0 +#define I2C_DAT 1 + +#define I2C_DATA_HI()\ +I2C_DDR &= ~ (1 << I2C_DAT);\ +I2C_PORT |= (1 << I2C_DAT); +#define I2C_DATA_LO()\ +I2C_DDR |= (1 << I2C_DAT);\ +I2C_PORT &= ~ (1 << I2C_DAT); + +#define I2C_CLOCK_HI()\ +I2C_DDR &= ~ (1 << I2C_CLK);\ +I2C_PORT |= (1 << I2C_CLK); +#define I2C_CLOCK_LO()\ +I2C_DDR |= (1 << I2C_CLK);\ +I2C_PORT &= ~ (1 << I2C_CLK); + +#define I2C_DELAY 1 + +void I2C_WriteBit(unsigned char c) +{ + if (c > 0) + { + I2C_DATA_HI(); + } + else + { + I2C_DATA_LO(); + } + + I2C_CLOCK_HI(); + _delay_us(I2C_DELAY); + + I2C_CLOCK_LO(); + _delay_us(I2C_DELAY); + + if (c > 0) + { + I2C_DATA_LO(); + } + + _delay_us(I2C_DELAY); +} + +// Inits bitbanging port, must be called before using the functions below +// +void I2C_Init() +{ + I2C_PORT &= ~ ((1 << I2C_DAT) | (1 << I2C_CLK)); + + I2C_CLOCK_HI(); + I2C_DATA_HI(); + + _delay_us(I2C_DELAY); +} + +// Send a START Condition +// +void I2C_Start() +{ + // set both to high at the same time + I2C_DDR &= ~ ((1 << I2C_DAT) | (1 << I2C_CLK)); + _delay_us(I2C_DELAY); + + I2C_DATA_LO(); + _delay_us(I2C_DELAY); + + I2C_CLOCK_LO(); + _delay_us(I2C_DELAY); +} + +// Send a STOP Condition +// +void I2C_Stop() +{ + I2C_CLOCK_HI(); + _delay_us(I2C_DELAY); + + I2C_DATA_HI(); + _delay_us(I2C_DELAY); +} + +// write a byte to the I2C slave device +// +unsigned char I2C_Write(unsigned char c) +{ + for (char i = 0; i < 8; i++) + { + I2C_WriteBit(c & 128); + + c <<= 1; + } + + + I2C_WriteBit(0); + _delay_us(I2C_DELAY); + _delay_us(I2C_DELAY); + + // _delay_us(I2C_DELAY); + //return I2C_ReadBit(); + return 0; +} + + +#endif + // Setleds for standard RGB void inline ws2812_setleds(struct cRGB *ledarray, uint16_t leds) { @@ -41,6 +157,25 @@ void inline ws2812_setleds_rgbw(struct cRGBW *ledarray, uint16_t leds) _SFR_IO8((RGB_DI_PIN >> 4) + 1) |= _BV(RGB_DI_PIN & 0xF); ws2812_sendarray_mask((uint8_t*)ledarray,leds<<2,_BV(RGB_DI_PIN & 0xF)); + + #ifdef RGBW_BB_TWI + cli(); + TWCR = 0; + I2C_Init(); + I2C_Start(); + I2C_Write(0x84); + uint16_t datlen = leds<<2; + uint8_t curbyte; + uint8_t * data = (uint8_t*)ledarray; + while (datlen--) { + curbyte=*data++; + I2C_Write(curbyte % 0x10); + } + I2C_Stop(); + sei(); + #endif + + _delay_us(80); } @@ -123,7 +258,7 @@ void inline ws2812_sendarray_mask(uint8_t *data,uint16_t datlen,uint8_t maskhi) cli(); while (datlen--) { - curbyte=*data++; + curbyte=(*data++) % 0x10; asm volatile( " ldi %0,8 \n\t" diff --git a/quantum/light_ws2812.h b/quantum/light_ws2812.h index 54eef22d9e..576c3bc483 100755 --- a/quantum/light_ws2812.h +++ b/quantum/light_ws2812.h @@ -16,6 +16,13 @@ #include #include //#include "ws2812_config.h" +#include "i2cmaster.h" + +#define LIGHT_I2C 1 +#define LIGHT_I2C_ADDR 0x84 +#define LIGHT_I2C_ADDR_WRITE ( (LIGHT_I2C_ADDR<<1) | I2C_WRITE ) +#define LIGHT_I2C_ADDR_READ ( (LIGHT_I2C_ADDR<<1) | I2C_READ ) + /* * Structure of the LED array diff --git a/quantum/quantum.c b/quantum/quantum.c index a16bd5443c..5fa5e66b32 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -128,6 +128,9 @@ bool process_record_quantum(keyrecord_t *record) { #endif #ifdef UCIS_ENABLE process_ucis(keycode, record) && + #endif + #ifdef PRINTING_ENABLE + process_printer(keycode, record) && #endif true)) { return false; diff --git a/quantum/quantum.h b/quantum/quantum.h index 0c60466495..06a2e049dc 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -59,6 +59,10 @@ extern uint32_t default_layer_state; #include "process_tap_dance.h" +#ifdef PRINTING_ENABLE + #include "process_printer.h" +#endif + #define SEND_STRING(str) send_string(PSTR(str)) void send_string(const char *str); From a889b899e2cf52b3b7807d8a7ad39f12e0761a10 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 16 Oct 2016 16:03:56 -0400 Subject: [PATCH 053/727] working with power limit --- .../planck/keymaps/thermal_printer/Makefile | 26 ++ .../planck/keymaps/thermal_printer/config.h | 23 ++ .../planck/keymaps/thermal_printer/keymap.c | 314 ++++++++++++++++++ .../planck/keymaps/thermal_printer/readme.md | 2 + quantum/process_keycode/process_printer.c | 254 ++++++++++++++ quantum/process_keycode/process_printer.h | 8 + quantum/process_keycode/process_printer_bb.c | 260 +++++++++++++++ 7 files changed, 887 insertions(+) create mode 100644 keyboards/planck/keymaps/thermal_printer/Makefile create mode 100644 keyboards/planck/keymaps/thermal_printer/config.h create mode 100644 keyboards/planck/keymaps/thermal_printer/keymap.c create mode 100644 keyboards/planck/keymaps/thermal_printer/readme.md create mode 100644 quantum/process_keycode/process_printer.c create mode 100644 quantum/process_keycode/process_printer.h create mode 100644 quantum/process_keycode/process_printer_bb.c diff --git a/keyboards/planck/keymaps/thermal_printer/Makefile b/keyboards/planck/keymaps/thermal_printer/Makefile new file mode 100644 index 0000000000..3d1d11877f --- /dev/null +++ b/keyboards/planck/keymaps/thermal_printer/Makefile @@ -0,0 +1,26 @@ + + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +PRINTING_ENABLE = yes + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/planck/keymaps/thermal_printer/config.h b/keyboards/planck/keymaps/thermal_printer/config.h new file mode 100644 index 0000000000..430b6493cf --- /dev/null +++ b/keyboards/planck/keymaps/thermal_printer/config.h @@ -0,0 +1,23 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +# define SERIAL_UART_BAUD 19200 +# define SERIAL_UART_DATA UDR1 +# define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1) +# define SERIAL_UART_RXD_VECT USART1_RX_vect +# define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1)) +# define SERIAL_UART_INIT() do { \ + /* baud rate */ \ + UBRR1L = SERIAL_UART_UBRR; \ + /* baud rate */ \ + UBRR1H = SERIAL_UART_UBRR >> 8; \ + /* enable TX */ \ + UCSR1B = _BV(TXEN1); \ + /* 8-bit data */ \ + UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); \ + sei(); \ + } while(0) + + #endif \ No newline at end of file diff --git a/keyboards/planck/keymaps/thermal_printer/keymap.c b/keyboards/planck/keymaps/thermal_printer/keymap.c new file mode 100644 index 0000000000..e880597319 --- /dev/null +++ b/keyboards/planck/keymaps/thermal_printer/keymap.c @@ -0,0 +1,314 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "planck.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _PLOVER 5 +#define _ADJUST 16 + +enum planck_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + PLOVER, + LOWER, + RAISE, + BACKLIT, + EXT_PLV +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = { + {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = { + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, + {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = { + {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, + {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, + {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, + {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = { + {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = { + {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Plover layer (http://opensteno.org) + * ,-----------------------------------------------------------------------------------. + * | # | # | # | # | # | # | # | # | # | # | # | # | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | S | T | P | H | * | * | F | P | L | T | D | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Exit | | | A | O | | E | U | | | | + * `-----------------------------------------------------------------------------------' + */ + +[_PLOVER] = { + {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 }, + {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC}, + {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, + {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | Print|no prnt | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = { + {_______, RESET, _______, PRINT_ON, PRINT_OFF, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, + {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +} + + +}; + +#ifdef AUDIO_ENABLE + +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_dvorak[][2] = SONG(DVORAK_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_plover[][2] = SONG(PLOVER_SOUND); +float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); +float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); + +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case BACKLIT: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + return false; + break; + case PLOVER: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + stop_all_notes(); + PLAY_NOTE_ARRAY(tone_plover, false, 0); + #endif + layer_off(_RAISE); + layer_off(_LOWER); + layer_off(_ADJUST); + layer_on(_PLOVER); + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + keymap_config.raw = eeconfig_read_keymap(); + keymap_config.nkro = 1; + eeconfig_update_keymap(keymap_config.raw); + } + return false; + break; + case EXT_PLV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_plover_gb, false, 0); + #endif + layer_off(_PLOVER); + } + return false; + break; + } + return true; +} + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif +} + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +void music_on_user(void) +{ + music_scale_user(); +} + +void music_scale_user(void) +{ + PLAY_NOTE_ARRAY(music_scale, false, 0); +} + +#endif diff --git a/keyboards/planck/keymaps/thermal_printer/readme.md b/keyboards/planck/keymaps/thermal_printer/readme.md new file mode 100644 index 0000000000..de9680b498 --- /dev/null +++ b/keyboards/planck/keymaps/thermal_printer/readme.md @@ -0,0 +1,2 @@ +# The Default Planck Layout + diff --git a/quantum/process_keycode/process_printer.c b/quantum/process_keycode/process_printer.c new file mode 100644 index 0000000000..2e11dd366c --- /dev/null +++ b/quantum/process_keycode/process_printer.c @@ -0,0 +1,254 @@ +#include "process_printer.h" +#include "action_util.h" + +bool printing_enabled = false; +uint8_t character_shift = 0; + +void enabled_printing() { + printing_enabled = true; + serial_init(); +} + +void disable_printing() { + printing_enabled = false; +} + +uint8_t shifted_numbers[10] = {0x21, 0x40, 0x23, 0x24, 0x25, 0x5E, 0x26, 0x2A, 0x28, 0x29}; + +// uint8_t keycode_to_ascii[0xFF][2]; + +// keycode_to_ascii[KC_MINS] = {0x2D, 0x5F}; + +void print_char(char c) { + USB_Disable(); + serial_send(c); + USB_Init(); +} + +void print_box_string(uint8_t text[]) { + uint8_t len = strlen(text); + uint8_t out[len * 3 + 8]; + out[0] = 0xDA; + for (uint8_t i = 0; i < len; i++) { + out[i+1] = 0xC4; + } + out[len + 1] = 0xBF; + out[len + 2] = '\n'; + + out[len + 3] = 0xB3; + for (uint8_t i = 0; i < len; i++) { + out[len + 4 + i] = text[i]; + } + out[len * 2 + 4] = 0xB3; + out[len * 2 + 5] = '\n'; + + + out[len * 2 + 6] = 0xC0; + for (uint8_t i = 0; i < len; i++) { + out[len * 2 + 7 + i] = 0xC4; + } + out[len * 3 + 7] = 0xD9; + out[len * 3 + 8] = '\n'; + + print_string(out); +} + +void print_string(char c[]) { + for(uint8_t i = 0; i < strlen(c); i++) + print_char(c[i]); +} + +bool process_printer(uint16_t keycode, keyrecord_t *record) { + if (keycode == PRINT_ON) { + enabled_printing(); + return false; + } + if (keycode == PRINT_OFF) { + disable_printing(); + return false; + } + + if (printing_enabled) { + switch(keycode) { + case KC_EXLM ... KC_RPRN: + case KC_UNDS: + case KC_PLUS: + case KC_LCBR: + case KC_RCBR: + case KC_PIPE: + case KC_TILD: + keycode &= 0xFF; + case KC_LSFT: + case KC_RSFT: + if (record->event.pressed) { + character_shift++; + } else { + character_shift--; + } + return false; + break; + } + + switch(keycode) { + case KC_F1: + if (record->event.pressed) { + print_box_string("This is a line of text!"); + } + return false; + case KC_ESC: + if (record->event.pressed) { + print_char(0x1B); + } + return false; + break; + case KC_SPC: + if (record->event.pressed) { + print_char(0x20); + } + return false; + break; + case KC_A ... KC_Z: + if (record->event.pressed) { + if (character_shift) { + print_char(0x41 + (keycode - KC_A)); + } else { + print_char(0x61 + (keycode - KC_A)); + } + } + return false; + break; + case KC_1 ... KC_0: + if (record->event.pressed) { + if (character_shift) { + print_char(shifted_numbers[keycode - KC_1]); + } else { + print_char(0x30 + ((keycode - KC_1 + 1) % 10)); + } + } + return false; + break; + case KC_ENT: + if (record->event.pressed) { + if (character_shift) { + print_char(0x0C); + } else { + print_char(0x0A); + } + } + return false; + break; + case KC_BSPC: + if (record->event.pressed) { + if (character_shift) { + print_char(0x18); + } else { + print_char(0x1A); + } + } + return false; + break; + case KC_DOT: + if (record->event.pressed) { + if (character_shift) { + print_char(0x3E); + } else { + print_char(0x2E); + } + } + return false; + break; + case KC_COMM: + if (record->event.pressed) { + if (character_shift) { + print_char(0x3C); + } else { + print_char(0x2C); + } + } + return false; + break; + case KC_SLSH: + if (record->event.pressed) { + if (character_shift) { + print_char(0x3F); + } else { + print_char(0x2F); + } + } + return false; + break; + case KC_QUOT: + if (record->event.pressed) { + if (character_shift) { + print_char(0x22); + } else { + print_char(0x27); + } + } + return false; + break; + case KC_GRV: + if (record->event.pressed) { + if (character_shift) { + print_char(0x7E); + } else { + print_char(0x60); + } + } + return false; + break; + case KC_MINS: + if (record->event.pressed) { + if (character_shift) { + print_char(0x5F); + } else { + print_char(0x2D); + } + } + return false; + break; + case KC_EQL: + if (record->event.pressed) { + if (character_shift) { + print_char(0x2B); + } else { + print_char(0x3D); + } + } + return false; + break; + case KC_LBRC: + if (record->event.pressed) { + if (character_shift) { + print_char(0x7B); + } else { + print_char(0x5B); + } + } + return false; + break; + case KC_RBRC: + if (record->event.pressed) { + if (character_shift) { + print_char(0x7D); + } else { + print_char(0x5D); + } + } + return false; + break; + case KC_BSLS: + if (record->event.pressed) { + if (character_shift) { + print_char(0x7C); + } else { + print_char(0x5C); + } + } + return false; + break; + } + } + return true; + +} \ No newline at end of file diff --git a/quantum/process_keycode/process_printer.h b/quantum/process_keycode/process_printer.h new file mode 100644 index 0000000000..fdd36d75a8 --- /dev/null +++ b/quantum/process_keycode/process_printer.h @@ -0,0 +1,8 @@ +#ifndef PROCESS_PRINTER_H +#define PROCESS_PRINTER_H + +#include "quantum.h" + +#include "protocol/serial.h" + +#endif \ No newline at end of file diff --git a/quantum/process_keycode/process_printer_bb.c b/quantum/process_keycode/process_printer_bb.c new file mode 100644 index 0000000000..1924d03774 --- /dev/null +++ b/quantum/process_keycode/process_printer_bb.c @@ -0,0 +1,260 @@ +#include "process_printer.h" +#include "action_util.h" + +bool printing_enabled = false; +uint8_t character_shift = 0; + +#define SERIAL_PIN_DDR DDRD +#define SERIAL_PIN_PORT PORTD +#define SERIAL_PIN_MASK _BV(PD3) +#define SERIAL_DELAY 52 + +inline static +void serial_delay(void) { + _delay_us(SERIAL_DELAY); +} + +inline static +void serial_high(void) { + SERIAL_PIN_PORT |= SERIAL_PIN_MASK; +} + +inline static +void serial_low(void) { + SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK; +} + +inline static +void serial_output(void) { + SERIAL_PIN_DDR |= SERIAL_PIN_MASK; +} + + +void enabled_printing() { + printing_enabled = true; + serial_output(); + serial_high(); +} + +void disable_printing() { + printing_enabled = false; +} + +uint8_t shifted_numbers[10] = {0x21, 0x40, 0x23, 0x24, 0x25, 0x5E, 0x26, 0x2A, 0x28, 0x29}; + +// uint8_t keycode_to_ascii[0xFF][2]; + +// keycode_to_ascii[KC_MINS] = {0x2D, 0x5F}; + +void print_char(char c) { + uint8_t b = 8; + serial_output(); + while( b-- ) { + if(c & (1 << b)) { + serial_high(); + } else { + serial_low(); + } + serial_delay(); + } +} + +void print_string(char c[]) { + for(uint8_t i = 0; i < strlen(c); i++) + print_char(c[i]); +} + +bool process_printer(uint16_t keycode, keyrecord_t *record) { + if (keycode == PRINT_ON) { + enabled_printing(); + return false; + } + if (keycode == PRINT_OFF) { + disable_printing(); + return false; + } + + if (printing_enabled) { + switch(keycode) { + case KC_EXLM ... KC_RPRN: + case KC_UNDS: + case KC_PLUS: + case KC_LCBR: + case KC_RCBR: + case KC_PIPE: + case KC_TILD: + keycode &= 0xFF; + case KC_LSFT: + case KC_RSFT: + if (record->event.pressed) { + character_shift++; + } else { + character_shift--; + } + return false; + break; + } + + switch(keycode) { + case KC_F1: + if (record->event.pressed) { + print_string("This is a line of text!\n\n\n"); + } + return false; + case KC_ESC: + if (record->event.pressed) { + print_char(0x1B); + } + return false; + break; + case KC_SPC: + if (record->event.pressed) { + print_char(0x20); + } + return false; + break; + case KC_A ... KC_Z: + if (record->event.pressed) { + if (character_shift) { + print_char(0x41 + (keycode - KC_A)); + } else { + print_char(0x61 + (keycode - KC_A)); + } + } + return false; + break; + case KC_1 ... KC_0: + if (record->event.pressed) { + if (character_shift) { + print_char(shifted_numbers[keycode - KC_1]); + } else { + print_char(0x30 + ((keycode - KC_1 + 1) % 10)); + } + } + return false; + break; + case KC_ENT: + if (record->event.pressed) { + if (character_shift) { + print_char(0x0C); + } else { + print_char(0x0A); + } + } + return false; + break; + case KC_BSPC: + if (record->event.pressed) { + if (character_shift) { + print_char(0x18); + } else { + print_char(0x1A); + } + } + return false; + break; + case KC_DOT: + if (record->event.pressed) { + if (character_shift) { + print_char(0x3E); + } else { + print_char(0x2E); + } + } + return false; + break; + case KC_COMM: + if (record->event.pressed) { + if (character_shift) { + print_char(0x3C); + } else { + print_char(0x2C); + } + } + return false; + break; + case KC_SLSH: + if (record->event.pressed) { + if (character_shift) { + print_char(0x3F); + } else { + print_char(0x2F); + } + } + return false; + break; + case KC_QUOT: + if (record->event.pressed) { + if (character_shift) { + print_char(0x22); + } else { + print_char(0x27); + } + } + return false; + break; + case KC_GRV: + if (record->event.pressed) { + if (character_shift) { + print_char(0x7E); + } else { + print_char(0x60); + } + } + return false; + break; + case KC_MINS: + if (record->event.pressed) { + if (character_shift) { + print_char(0x5F); + } else { + print_char(0x2D); + } + } + return false; + break; + case KC_EQL: + if (record->event.pressed) { + if (character_shift) { + print_char(0x2B); + } else { + print_char(0x3D); + } + } + return false; + break; + case KC_LBRC: + if (record->event.pressed) { + if (character_shift) { + print_char(0x7B); + } else { + print_char(0x5B); + } + } + return false; + break; + case KC_RBRC: + if (record->event.pressed) { + if (character_shift) { + print_char(0x7D); + } else { + print_char(0x5D); + } + } + return false; + break; + case KC_BSLS: + if (record->event.pressed) { + if (character_shift) { + print_char(0x7C); + } else { + print_char(0x5C); + } + } + return false; + break; + } + } + return true; + +} \ No newline at end of file From 826417bfc001377719c9034fe273d1596ba62c9c Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 18 Oct 2016 16:45:45 -0500 Subject: [PATCH 054/727] Updating Vision keyboard files --- .../vision_division/keymaps/default/Makefile | 4 +- .../vision_division/keymaps/default/keymap.c | 195 ++++++++++-------- 2 files changed, 108 insertions(+), 91 deletions(-) diff --git a/keyboards/vision_division/keymaps/default/Makefile b/keyboards/vision_division/keymaps/default/Makefile index 5a930e85ed..28060947af 100644 --- a/keyboards/vision_division/keymaps/default/Makefile +++ b/keyboards/vision_division/keymaps/default/Makefile @@ -2,7 +2,7 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = yes # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = yes # Console for debug(+400) @@ -18,4 +18,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR include ../../../../Makefile -endif \ No newline at end of file +endif diff --git a/keyboards/vision_division/keymaps/default/keymap.c b/keyboards/vision_division/keymaps/default/keymap.c index 64118abdce..8622ee5211 100644 --- a/keyboards/vision_division/keymaps/default/keymap.c +++ b/keyboards/vision_division/keymaps/default/keymap.c @@ -121,6 +121,7 @@ enum keyboard_macros { #define M_CP_CT M(MACRO_COPY_CUT) +#define M_COPY KC_FN1 #define SC_UNDO LCTL(KC_Z) #define SC_REDO LCTL(KC_Y) @@ -145,31 +146,31 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* LAYER = LAYER_QWERTY .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | FN | PRINT | SCR LK | PAUSE | | F1 | F2 | F3 | F4 | XXXXXX | F5 | F6 | F7 | F8 | XXXXXX | F9 | F10 | F11 | F12 | | VOL DN | MUTE | VOL UP | BACKLT | + | VOL DN | MUTE | VOL UP | BACKLT | | F1 | F2 | F3 | F4 | XXXXXX | F5 | F6 | F7 | F8 | XXXXXX | F9 | F10 | F11 | F12 | | PRINT | SCR LK | PAUSE | FN | '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | M1 | INS | HOME | PG UP | | ESC | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = | BACKSP | | NUM LK | KP / | KP * | KP - | + | NUM LK | KP / | KP * | KP - | | ESC | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = | BACKSP | | INS | HOME | PG UP | M1 | |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | M2 | DEL | END | PG DN | | TAB | TAB | Q | W | E | R | T | Y | U | I | O | P | - | \ | | KP 7 | KP 8 | KP 9 | KP + | + | KP 7 | KP 8 | KP 9 | KP + | | TAB | TAB | Q | W | E | R | T | Y | U | I | O | P | - | \ | | DEL | END | PG DN | M2 | |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | M3 | UL | UP | UR | | CAP LK | BACKSP | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | o | KP 4 | KP 5 | KP 6 | KP + | + | KP 4 | KP 5 | KP 6 | KP + | | CAP LK | BACKSP | A | S | D | F | G | H | J | K | L | ; | ' | ENTER | o | CP/CT | UNDO | PASTE | M3 | |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | M4 | LEFT | CP/CT | RIGHT | | LSHIFT | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | RSHIFT | | KP 1 | KP 2 | KP 3 | KP Ent | + | KP 1 | KP 2 | KP 3 | KP Ent | | LSHIFT | LSHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | RSHIFT | | XXXXXX | UP | XXXXXX | M4 | |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | M5 | DL | DOWN | DR | | LCTRL | XXXXXX | XXXXXX | LWIN | LALT | LOWER | SPACE . SPACE | UPPER | OSHIFT | RALT | APP | XXXXXX | RCTRL | | KP 0 | KP , | KP . | KP Ent | + | KP 0 | KP , | KP . | KP Ent | | LCTRL | XXXXXX | LWIN | XXXXXX | LALT | UPPER | SPACE . SPACE | LOWER | OSHIFT | RALT | APP | XXXXXX | RCTRL | | LEFT | DOWN | RIGHT | M5 | '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' */ KEYMAP(LAYER_QWERTY, \ - M_HELP , KC_PSCR, KC_SLCK, KC_PAUS, KC_F1 , KC_F2 , KC_F3 , KC_F4 , XXXXXXX, KC_F5 , KC_F6 , KC_F7 , KC_F8 , XXXXXXX, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_VOLD, KC_MUTE, KC_VOLU, M_BACKL, \ - M_M1 , KC_INS , KC_HOME, KC_PGUP, KC_ESC , KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL , KC_BSPC, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \ - M_M2 , KC_DEL , KC_END , KC_PGDN, KC_TAB , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, KC_BSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, \ - M_M3 , M_UL , KC_UP , M_UR , KC_CAPS, KC_BSPC, 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_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, \ - M_M4 , KC_LEFT, M_CP_CT, KC_RGHT, KC_LSFT, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_RSFT, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, \ - M_M5 , M_DL , KC_DOWN, M_DR , KC_LCTL, XXXXXXX, XXXXXXX, KC_LGUI, KC_LALT, M_LOWER, KC_SPC , KC_SPC , M_UPPER, OS_SHFT, KC_RALT, KC_APP , XXXXXXX, KC_RCTL, KC_KP_0, KC_PCMM, KC_PDOT, KC_PENT \ + KC_VOLD, KC_MUTE, KC_VOLU, M_BACKL, KC_F1 , KC_F2 , KC_F3 , KC_F4 , XXXXXXX, KC_F5 , KC_F6 , KC_F7 , KC_F8 , XXXXXXX, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SLCK, KC_PAUS, M_HELP , \ + KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_ESC , KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP, M_M1 , \ + KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, KC_TAB , KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_MINS, KC_BSLS, KC_DEL , KC_END , KC_PGDN, M_M2 , \ + KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, KC_CAPS, KC_BSPC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , M_CP_CT, SC_UNDO, SC_PSTE, M_M3 , \ + KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, KC_LSFT, KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_RSFT, XXXXXXX, KC_UP , XXXXXXX, M_M4 , \ + KC_KP_0, KC_PCMM, KC_PDOT, KC_PENT, KC_LCTL, XXXXXXX, KC_LGUI, XXXXXXX, KC_LALT, M_UPPER, KC_SPC , KC_SPC , M_LOWER, OS_SHFT, KC_RALT, KC_APP , XXXXXXX, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, M_M5 \ ), /* LAYER = LAYER_LOWER .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | ______ | ______ | ______ | ______ | | F13 | F14 | F15 | F16 | XXXXXX | F17 | F18 | F19 | F20 | XXXXXX | F21 | F22 | F23 | F24 | | ______ | MUTE A | ______ | ______ | + | ______ | MUTE A | ______ | ______ | | F13 | F14 | F15 | F16 | XXXXXX | F17 | F18 | F19 | F20 | XXXXXX | F21 | F22 | F23 | F24 | | ______ | ______ | ______ | ______ | '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | @@ -180,20 +181,20 @@ KEYMAP(LAYER_QWERTY, \ |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| | ______ | ______ | ______ | ______ | | ______ | ______ | | | & | ! | ~ | ; | : | = | < | > | ? | ______ | ______ | | ______ | ______ | ______ | ______ | |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | XXXXXX | XXXXXX | ______ | ______ | ______ | ______ . ______ | LOWER | ______ | ______ | ______ | XXXXXX | ______ | | ______ | ______ | ______ | ______ | + | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ . ______ | LOWER | ______ | ______ | ______ | XXXXXX | ______ | | ______ | ______ | ______ | ______ | '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' */ KEYMAP(LAYER_LOWER, \ - _______, _______, _______, _______, KC_F13 , KC_F14 , KC_F15 , KC_F16 , XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , XXXXXXX, KC_F21 , KC_F22 , KC_F23 , KC_F24 , _______, M_MUTEA, _______, _______, \ + _______, M_MUTEA, _______, _______, KC_F13 , KC_F14 , KC_F15 , KC_F16 , XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , XXXXXXX, KC_F21 , KC_F22 , KC_F23 , KC_F24 , _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, KC_DLR , KC_LCBR, KC_LBRC, KC_LPRN, KC_PERC, KC_HASH, KC_RPRN, KC_RBRC, KC_RCBR, KC_AT , _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, KC_CIRC, KC_ASTR, KC_PLUS, KC_MINS, KC_SLSH, KC_BSLS, KC_UNDS, KC_QUOT, KC_DQT , KC_GRV , _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, KC_PIPE, KC_AMPR, KC_EXLM, KC_TILD, KC_SCLN, KC_COLN, KC_EQL , KC_LT , KC_GT , KC_QUES, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______ \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, M_LOWER, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______ \ ), /* LAYER = LAYER_UPPER .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | ______ | ______ | ______ | ______ | | F13 | F14 | F15 | F16 | XXXXXX | F17 | F18 | F19 | F20 | XXXXXX | F21 | F22 | F23 | F24 | | ______ | MUTE A | ______ | ______ | + | ______ | MUTE A | ______ | ______ | | F13 | F14 | F15 | F16 | XXXXXX | F17 | F18 | F19 | F20 | XXXXXX | F21 | F22 | F23 | F24 | | ______ | ______ | ______ | ______ | '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | @@ -204,44 +205,44 @@ KEYMAP(LAYER_LOWER, \ |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| | ______ | ______ | ______ | ______ | | ______ | ______ | F9 | F10 | F11 | F12 | SCR LK | KP 0 | KP 1 | KP 2 | KP 3 | KP Ent | ______ | ______ | | ______ | ______ | ______ | ______ | |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | ______ | ______ | ______ | ______ | | ______ | XXXXXX | XXXXXX | ______ | ______ | UPPER | KP 0 . KP 0 | ______ | RALT | KP . | KP Ent | XXXXXX | ______ | | ______ | ______ | ______ | ______ | + | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | UPPER | KP 0 . KP 0 | ______ | RALT | KP . | KP Ent | XXXXXX | ______ | | ______ | ______ | ______ | ______ | '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' */ KEYMAP(LAYER_UPPER, \ - _______, _______, _______, _______, KC_F13 , KC_F14 , KC_F15 , KC_F16 , XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , XXXXXXX, KC_F21 , KC_F22 , KC_F23 , KC_F24 , _______, M_MUTEA, _______, _______, \ + _______, M_MUTEA, _______, _______, KC_F13 , KC_F14 , KC_F15 , KC_F16 , XXXXXXX, KC_F17 , KC_F18 , KC_F19 , KC_F20 , XXXXXXX, KC_F21 , KC_F22 , KC_F23 , KC_F24 , _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NLCK, KC_PSLS, KC_KP_7, KC_KP_8, KC_KP_9, KC_PMNS, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_CAPS, KC_PAST, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_SLCK, KC_KP_0, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, XXXXXXX, _______, _______, _______, _______, _______ \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, M_UPPER, KC_KP_0, KC_KP_0, _______, KC_RALT, KC_PDOT, KC_PENT, XXXXXXX, _______, _______, _______, _______, _______ \ ), /* LAYER = LAYER_MOUSE .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | MS BT1 | MS AC0 | MS WHU | MS AC2 | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | + | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | MS AC0 | MS WHU | MS AC2 | MS BT1 | |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | MS BT2 | MS WHL | MS WHD | MS WHU | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | + | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | MS WHL | MS WHD | MS WHU | MS BT2 | |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | MS BT3 | MS UL | MS U | MS UR | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | o | ______ | ______ | ______ | ______ | + | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | o | MS BT1 | MS BT2 | MS BT3 | MS BT3 | |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| o |--------|--------|--------+--------| - | MS BT4 | MS L | MS BT1 | MS R | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | + | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | ______ | | XXXXXX | MS U | XXXXXX | MS BT4 | |--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------|--------|--------+--------| - | MS BT5 | MS DL | MS D | MS DR | | ______ | ______ | ______ | ______ | ______ | ______ | ______ . ______ | ______ | ______ | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | + | ______ | ______ | ______ | ______ | | ______ | ______ | ______ | ______ | ______ | ______ | ______ . ______ | ______ | ______ | ______ | ______ | ______ | ______ | | MS L | MS D | MS R | MS BT5 | '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' */ KEYMAP(LAYER_MOUSE, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - KC_BTN1, KC_ACL0, KC_WH_U, KC_ACL2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - KC_BTN2, KC_WH_L, KC_WH_D, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - KC_BTN3, M_MS_UL, KC_MS_U, M_MS_UR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - KC_BTN4, KC_MS_L, KC_BTN1, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - KC_BTN5, M_MS_DL, KC_MS_D, M_MS_DR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ACL0, KC_WH_U, KC_ACL2, KC_BTN1, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_BTN2, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN3, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_MS_U, XXXXXXX, KC_BTN4, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5 \ ), /* LAYER = LAYER_ADJUST .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. - | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | HELP 1 | HELP 2 | HELP 3 | HELP 4 | XXXXXX | HELP 5 | HELP 6 | HELP 7 | HELP 8 | XXXXXX | HELP 9 | HELP 0 | XXXXXX | XXXXXX | | VOICE- | AUDIO | VOICE+ | MUSIC | + | VOICE- | AUDIO | VOICE+ | MUSIC | | HELP 1 | HELP 2 | HELP 3 | HELP 4 | XXXXXX | HELP 5 | HELP 6 | HELP 7 | HELP 8 | XXXXXX | HELP 9 | HELP 0 | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' .-----------------------------------. .-----------------------------------------------------------------------------------------------------------------------------. .-----------------------------------. | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | | XXXXXX | XXXXXX | XXXXXX | XXXXXX | @@ -256,14 +257,13 @@ KEYMAP(LAYER_MOUSE, \ '-----------------------------------' '-----------------------------------------------------------------------------------------------------------------------------' '-----------------------------------' */ KEYMAP(LAYER_ADJUST, \ - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_HELP1, M_HELP2, M_HELP3, M_HELP4, XXXXXXX, M_HELP5, M_HELP6, M_HELP7, M_HELP8, XXXXXXX, M_HELP9, M_HELP0, XXXXXXX, XXXXXXX, MUV_DE , AU_TOG , MUV_IN , MU_TOG , \ + MUV_DE , AU_TOG , MUV_IN , MU_TOG , M_HELP1, M_HELP2, M_HELP3, M_HELP4, XXXXXXX, M_HELP5, M_HELP6, M_HELP7, M_HELP8, XXXXXXX, M_HELP9, M_HELP0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \ ), - }; #ifdef AUDIO_ENABLE @@ -296,6 +296,7 @@ void persistant_default_layer_set(uint16_t default_layer) const uint16_t PROGMEM fn_actions[] = { [0] = ACTION_MODS_ONESHOT(MOD_LSFT), + [1] = ACTION_MACRO_TAP(MACRO_COPY_CUT), }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -305,68 +306,84 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) switch(id) { - case MACRO_HELP_1: - if (record->event.pressed) - { - uprint("H1"); - } - break; + case MACRO_COPY_CUT: + if (record->event.pressed) { + register_code(KC_LCTL); + if (record->tap.count == 1) { + register_code(KC_C); + unregister_code(KC_C); + } + else if (record->tap.count == 2) { + register_code(KC_X); + unregister_code(KC_X); + } + unregister_code(KC_LCTL); + } + break; - case MACRO_HELP_2: - if (record->event.pressed) - { - uprint("H2"); - } - break; - case MACRO_HELP_3: - if (record->event.pressed) - { - uprint("H3"); - } - break; + // case MACRO_HELP_1: + // if (record->event.pressed) + // { + // uprint("H1"); + // } + // break; - case MACRO_HELP_4: - if (record->event.pressed) - { - uprint("H4"); - } - break; + // case MACRO_HELP_2: + // if (record->event.pressed) + // { + // uprint("H2"); + // } + // break; - case MACRO_HELP_5: - if (record->event.pressed) - { - uprint("H5"); - } - break; + // case MACRO_HELP_3: + // if (record->event.pressed) + // { + // uprint("H3"); + // } + // break; - case MACRO_HELP_6: - if (record->event.pressed) - { - uprint("H6"); - } - break; + // case MACRO_HELP_4: + // if (record->event.pressed) + // { + // uprint("H4"); + // } + // break; - case MACRO_HELP_7: - if (record->event.pressed) - { - uprint("H7"); - } - break; + // case MACRO_HELP_5: + // if (record->event.pressed) + // { + // uprint("H5"); + // } + // break; - case MACRO_HELP_8: - if (record->event.pressed) - { - uprint("H8"); - } - break; + // case MACRO_HELP_6: + // if (record->event.pressed) + // { + // uprint("H6"); + // } + // break; - case MACRO_HELP_9: - if (record->event.pressed) - { - uprint("H9"); - } - break; + // case MACRO_HELP_7: + // if (record->event.pressed) + // { + // uprint("H7"); + // } + // break; + + // case MACRO_HELP_8: + // if (record->event.pressed) + // { + // uprint("H8"); + // } + // break; + + // case MACRO_HELP_9: + // if (record->event.pressed) + // { + // uprint("H9"); + // } + // break; case MACRO_BREATH_TOGGLE: if (record->event.pressed) @@ -566,12 +583,12 @@ void led_set_user(uint8_t usb_led) void startup_user() { _delay_ms(10); // gets rid of tick - PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO); + // PLAY_NOTE_ARRAY(tone_my_startup, false, STACCATO); } void shutdown_user() { - PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO); + // PLAY_NOTE_ARRAY(tone_my_goodbye, false, STACCATO); _delay_ms(2000); stop_all_notes(); } From 17170ba76d3c94edcf1ab263520238fdb0384774 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sun, 23 Oct 2016 23:00:43 -0500 Subject: [PATCH 055/727] Fixed some large keyboard bugs Fixed some bugs relating to keyboards with more than 16 columns. Also added the ability to mask off keyboard matrix bits. --- keyboards/vision_division/config.h | 2 + .../vision_division/keymaps/default/keymap.c | 11 ++++++ quantum/matrix.c | 37 +++++++++++++++++-- readme.md | 1 + tmk_core/common/command.c | 6 +-- 5 files changed, 50 insertions(+), 7 deletions(-) diff --git a/keyboards/vision_division/config.h b/keyboards/vision_division/config.h index 1f8466a546..93c9606712 100644 --- a/keyboards/vision_division/config.h +++ b/keyboards/vision_division/config.h @@ -33,6 +33,8 @@ along with this program. If not, see . /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCING_DELAY 5 +#define MATRIX_MASKED + /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST diff --git a/keyboards/vision_division/keymaps/default/keymap.c b/keyboards/vision_division/keymaps/default/keymap.c index 8622ee5211..3282761c0f 100644 --- a/keyboards/vision_division/keymaps/default/keymap.c +++ b/keyboards/vision_division/keymaps/default/keymap.c @@ -142,6 +142,17 @@ enum keyboard_macros { #define ________________ _______, _______ #define XXXXXXXXXXXXXXXX XXXXXXX, XXXXXXX +const matrix_row_t matrix_mask[MATRIX_ROWS] = +{ +// 1098765432109876543210987654321 + 0b0000000001111111101111011111111, + 0b0000000001111111111111111111111, + 0b0000000001111111111111111111111, + 0b0000000001111111111111111111111, + 0b0000000001010111111111111111111, + 0b0000000001111101111111101011111, +}; + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* LAYER = LAYER_QWERTY diff --git a/quantum/matrix.c b/quantum/matrix.c index 3174e07390..ac81794e59 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -26,6 +26,10 @@ along with this program. If not, see . #include "util.h" #include "matrix.h" +#ifdef MATRIX_MASKED +extern const matrix_row_t matrix_mask[]; +#endif + /* Set 0 if debouncing isn't needed */ #ifndef DEBOUNCING_DELAY @@ -218,15 +222,34 @@ bool matrix_is_on(uint8_t row, uint8_t col) inline matrix_row_t matrix_get_row(uint8_t row) { + // Matrix mask lets you disable switches in the returned matrix data. For example, if you have a + // switch blocker installed and the switch is always pressed. +#ifdef MATRIX_MASKED + return matrix[row] & matrix_mask[row]; +#else return matrix[row]; +#endif } void matrix_print(void) { +#if (MATRIX_COLS <= 8) + print("\nr/c 01234567\n"); +#elif (MATRIX_COLS <= 16) print("\nr/c 0123456789ABCDEF\n"); +#elif (MATRIX_COLS <= 32) + print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n"); +#endif + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { phex(row); print(": "); - pbin_reverse16(matrix_get_row(row)); +#if (MATRIX_COLS <= 8) + print_bin_reverse8(matrix_get_row(row)); +#elif (MATRIX_COLS <= 16) + print_bin_reverse16(matrix_get_row(row)); +#elif (MATRIX_COLS <= 32) + print_bin_reverse32(matrix_get_row(row)); +#endif print("\n"); } } @@ -235,7 +258,13 @@ uint8_t matrix_key_count(void) { uint8_t count = 0; for (uint8_t i = 0; i < MATRIX_ROWS; i++) { +#if (MATRIX_COLS <= 8) + count += bitpop(matrix[i]); +#elif (MATRIX_COLS <= 16) count += bitpop16(matrix[i]); +#elif (MATRIX_COLS <= 32) + count += bitpop32(matrix[i]); +#endif } return count; } @@ -259,7 +288,7 @@ static matrix_row_t read_cols(void) matrix_row_t result = 0; #if DIODE_DIRECTION == COL2ROW - for(int x = 0; x < MATRIX_COLS; x++) { + for(int x = 0; x < MATRIX_COLS; x++) { int pin = col_pins[x]; #else for(int x = 0; x < MATRIX_ROWS; x++) { @@ -273,10 +302,10 @@ static matrix_row_t read_cols(void) static void unselect_rows(void) { #if DIODE_DIRECTION == COL2ROW - for(int x = 0; x < MATRIX_ROWS; x++) { + for(int x = 0; x < MATRIX_ROWS; x++) { int pin = row_pins[x]; #else - for(int x = 0; x < MATRIX_COLS; x++) { + for(int x = 0; x < MATRIX_COLS; x++) { int pin = col_pins[x]; #endif _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); diff --git a/readme.md b/readme.md index 62d479ff1d..c460933a70 100644 --- a/readme.md +++ b/readme.md @@ -241,6 +241,7 @@ You can also add extra options at the end of the make command line, after the ta * `make COLOR=false` - turns off color output * `make SILENT=true` - turns off output besides errors/warnings * `make VERBOSE=true` - outputs all of the gcc stuff (not interesting, unless you need to debug) +* `make EXTRAFLAGS=-E` - Preprocess the code without doing any compiling (useful if you are trying to debug #define commands) The make command itself also has some additional options, type `make --help` for more information. The most useful is probably `-jx`, which specifies that you want to compile using more than one CPU, the `x` represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option. diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index f3e1bf6234..5f29bc0b4e 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -379,11 +379,11 @@ static bool command_common(uint8_t code) debug_enable = !debug_enable; if (debug_enable) { print("\ndebug: on\n"); - debug_matrix = true; - debug_keyboard = true; - debug_mouse = true; } else { print("\ndebug: off\n"); + debug_matrix = false; + debug_keyboard = false; + debug_mouse = false; } break; From ef8f6180272c3e112f97a6beb9dd90bece3c2131 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sun, 23 Oct 2016 23:03:26 -0500 Subject: [PATCH 056/727] Fixing Line Terminations --- .../keymaps/win10_writers-block/config.h | 72 +- .../keymaps/win10_writers-block/keymap.c | 648 +++++++++--------- .../keymaps/win10_writers-block/readme.md | 224 +++--- 3 files changed, 472 insertions(+), 472 deletions(-) diff --git a/keyboards/ergodox/keymaps/win10_writers-block/config.h b/keyboards/ergodox/keymaps/win10_writers-block/config.h index 568a711a86..43259db088 100644 --- a/keyboards/ergodox/keymaps/win10_writers-block/config.h +++ b/keyboards/ergodox/keymaps/win10_writers-block/config.h @@ -1,36 +1,36 @@ -#ifndef KEYBOARDS_ERGODOX_CONFIG_H_ -#define KEYBOARDS_ERGODOX_CONFIG_H_ - -#define MOUSEKEY_DELAY 100 -#define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_MAX_SPEED 3 -#define MOUSEKEY_TIME_TO_MAX 10 - -#define TAPPING_TOGGLE 1 - -/* define if matrix has ghost */ -//#define MATRIX_HAS_GHOST - -#define TAPPING_TERM 300 -#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.) - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* key combination for command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \ - keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ -) - -#ifdef SUBPROJECT_ez - #include "ez/config.h" -#endif -#ifdef SUBPROJECT_infinity - #include "infinity/config.h" -#endif - - -#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */ +#ifndef KEYBOARDS_ERGODOX_CONFIG_H_ +#define KEYBOARDS_ERGODOX_CONFIG_H_ + +#define MOUSEKEY_DELAY 100 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_MAX_SPEED 3 +#define MOUSEKEY_TIME_TO_MAX 10 + +#define TAPPING_TOGGLE 1 + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +#define TAPPING_TERM 300 +#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.) + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \ + keyboard_report->mods == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \ +) + +#ifdef SUBPROJECT_ez + #include "ez/config.h" +#endif +#ifdef SUBPROJECT_infinity + #include "infinity/config.h" +#endif + + +#endif /* KEYBOARDS_ERGODOX_CONFIG_H_ */ diff --git a/keyboards/ergodox/keymaps/win10_writers-block/keymap.c b/keyboards/ergodox/keymaps/win10_writers-block/keymap.c index ea640ee96f..3106b33747 100644 --- a/keyboards/ergodox/keymaps/win10_writers-block/keymap.c +++ b/keyboards/ergodox/keymaps/win10_writers-block/keymap.c @@ -1,324 +1,324 @@ -#include "ergodox.h" -#include "debug.h" -#include "action_layer.h" -#include "version.h" -#include "wait.h" - -#define BASE 0 // default layer - helpful for writing in Office-style word processors. -#define SYMB 1 // symbol layer - NumPad, etc. - same as Ergodox EZ default but no EEPROM or Version key -#define RIMW 2 // rimworld layer - made for the game RimWorld, by Tynan Sylvester | feel free to remap for your favorite game! -#define MDIA 3 // media layer - mouse and music - close to Ergodox EZ default media layer - -#define CO_PA M(0) // hold copy, tap paste - -#define W_CUT LCTL(KC_X) // C-x Cut -#define W_COPY LCTL(KC_C) // C-c Copy -#define W_PASTE LCTL(KC_V) // C-v Paste -#define W_UNDO LCTL(KC_Z) // C-z Undo -#define W_FIND LCTL(KC_F) // C-v Find -#define W_CAD LCTL(LALT(KC_DEL)) // one-tap ctrl-alt-del - - - -//Tap Dance Declarations -enum { - CAKEWARP, - CTRLALTMDIA, -}; - -void cake_count (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 2) { - layer_on (SYMB); //define double tap here - layer_off (MDIA); - } - else { - layer_off (SYMB); //define single tap or hold here - layer_off (MDIA); - } - if (state->count == 3) { - layer_on (RIMW); //define triple tap here - layer_off (MDIA); - } - else { - layer_off (RIMW); //define single tap or hold here - layer_off (MDIA); - reset_tap_dance (state); - } -} - -void dance_cad_mdia_fin (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - register_code (KC_LCTL); - register_code (KC_LALT); - register_code (KC_DEL); - } else { - layer_on (MDIA); - } -} - -void dance_cad_mdia_reset (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - unregister_code (KC_DEL); - unregister_code (KC_LALT); - unregister_code (KC_LCTL); - } else { - ; - } -} - -//Tap Dance Definitions -qk_tap_dance_action_t tap_dance_actions[] = { - // tap for Layer 0, tap twice to switch to symbol layer, and tap three times to switch to rimworld layer. - [CAKEWARP] = ACTION_TAP_DANCE_FN(cake_count) - // tap for ctrl-alt-del, tap twice for media layer - ,[CTRLALTMDIA] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cad_mdia_fin, dance_cad_mdia_reset) - // Other declarations would go here, separated by commas, if you have them -}; - -//In Layer declaration, add tap dance item in place of a key code - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Keymap 0: Basic layer - TD(one_tap, two_taps, three_taps...) - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 7 | 8 | 9 | 0 | - | = | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | F12/L1 | Q | W | E | R | T | {/[ | |TD(L0 | Y | U | I | O | P | \ | - * |--------+------+------+------+------+------| | |L1 L2)|------+------+------+------+------+--------| - * |Caps/Win| A | S | D | F | G |------| |------| H | J | K | L | ; | ' | - * |--------+------+------+------+------+------| }/] | TD(ctrl|------+------+------+------+------+--------| - * |LShift/(|Z/Ctrl| X | C | V | B | | |altdel| N | M | , | . | / |RShift/)| - * `--------+------+------+------+------+-------------' |L3) |------+------+------+------+------+--------' - * | Undo | Cut |CopyPa| Meh | LGui | '------| | Enter| Left | Up | Down | Right | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Esc | VolUp| | F4 | Mute | - * ,------|------|------| |------+--------+------. - * | | | VolDn| | F5 | | | - * |Backsp|Delete|------| |------| Tab / |Space | - * |ace | | Find | | Alt | CTRL | | - * `--------------------' `----------------------' - */ -// If it accepts an argument (i.e, is a function), it doesn't need KC_. -// Otherwise, it needs KC_* -[BASE] = KEYMAP( // layer 0 : default - // left hand - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, -LT(SYMB, KC_F12), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, - GUI_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSPO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_RBRC, - W_UNDO, W_CUT, CO_PA, MEH_T(KC_NO), KC_LGUI, - KC_ESC, KC_VOLU, - KC_VOLD, - KC_BSPC, KC_DELETE, W_FIND, - // right hand - KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, - TD(CAKEWARP), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, - TD(CTRLALTMDIA), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, - KC_ENT, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, - KC_F4, KC_MUTE, - KC_F5, - KC_RALT, CTL_T(KC_TAB), KC_SPC - ), - -/* Keymap 1: Symbol Layer | No EEPROM Or Version keys - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | F1 | F2 | F3 | F4 | F5 | xx | | xx | F6 | F7 | F8 | F9 | F10 | F11 | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | @ | { | } | | | | |TD(L0 | Up | 7 | 8 | 9 | * | F12 | - * |--------+------+------+------+------+------| | |L1 L2)|------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | - | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | . | 0 | = | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// SYMBOLS -[SYMB] = KEYMAP( - // left hand - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, - KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, - KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, - KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS, - KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, - // right hand - KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, - KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_MINS, - KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, - KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_NO, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS -), - -/* Keymap 2: RimWorld Layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 7 | 8 | 9 | 0 | - | = | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | TAB | C | ,< | W | >. | R | | |TD(L0 | U | B | N | J | M | PGUP | - * |--------+------+------+------+------+------| F10 | |L1 L2)|------+------+------+------+------+--------| - * | I | F | A | S | D | 8 |------| |------| X | L | P | Y | H | ENTER | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | K | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | PGDN | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | F | | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | | | - * |SPACE | C |------| |------| E |SPACE | - * | | | Q | | | | | - * `--------------------' `--------------------' - */ -// RIMWORLD -[RIMW] = KEYMAP( - // left hand - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, - KC_TAB, KC_C, KC_COMM, KC_W, KC_DOT, KC_R, KC_F10, - KC_I, KC_F, KC_A, KC_S, KC_D, KC_8, - KC_K, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, - KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS, - KC_TRNS, - KC_C,KC_Q,KC_TRNS, - // right hand - KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, - KC_TRNS, KC_U, KC_B, KC_N, KC_J, KC_M, KC_PGUP, - KC_X, KC_L, SFT_T(KC_P), KC_Y, KC_H, KC_ENT, - KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PGDN, - KC_F, KC_LEFT, KC_UP, KC_DOWN,KC_RIGHT, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_E, KC_TRNS -), -/* Keymap 3: Media and mouse keys - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | | | Prev | Next | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | | | | | | - * ,------|------|------| |------+------+------. - * | | | | | | |Brwser| - * | Lclk | Rclk |------| |------| |Back | - * | | | | | | | | - * `--------------------' `--------------------' - */ -// MEDIA AND MOUSE -[MDIA] = KEYMAP( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_BTN1, KC_BTN2, KC_TRNS, - // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, - KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_WBAK -), -}; - -static uint16_t key_timer; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch(id) { - case 0: { - if (record->event.pressed) { - key_timer = timer_read(); // if the key is being pressed, we start the timer. - } - else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down"). - if (timer_elapsed(key_timer) > 150) { // 150 being 150ms, the threshhold we pick for counting something as a tap. - return MACRO( D(LCTL), T(C), U(LCTL), END ); - } - else { - return MACRO( D(LCTL), T(V), U(LCTL), END ); - } - } - break; - } - } - return MACRO_NONE; -}; - -// Anything you want to do once when the keyboard initializes. -// Tests LED function when the keyboard initializes. -void matrix_init_user(void) { - - wait_ms(500); - ergodox_board_led_on(); - wait_ms(200); - ergodox_right_led_1_on(); - wait_ms(200); - ergodox_right_led_2_on(); - wait_ms(200); - ergodox_right_led_3_on(); - wait_ms(200); - ergodox_board_led_off(); - wait_ms(200); - ergodox_right_led_1_off(); - wait_ms(200); - ergodox_right_led_2_off(); - wait_ms(200); - ergodox_right_led_3_off(); - -}; - - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { - - uint8_t layer = biton32(layer_state); - - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - switch (layer) { - case 1: - ergodox_right_led_1_on(); - break; - case 2: - ergodox_right_led_2_on(); - break; - case 3: - ergodox_right_led_3_on(); - break; - default: - // none - break; - } - -}; +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "version.h" +#include "wait.h" + +#define BASE 0 // default layer - helpful for writing in Office-style word processors. +#define SYMB 1 // symbol layer - NumPad, etc. - same as Ergodox EZ default but no EEPROM or Version key +#define RIMW 2 // rimworld layer - made for the game RimWorld, by Tynan Sylvester | feel free to remap for your favorite game! +#define MDIA 3 // media layer - mouse and music - close to Ergodox EZ default media layer + +#define CO_PA M(0) // hold copy, tap paste + +#define W_CUT LCTL(KC_X) // C-x Cut +#define W_COPY LCTL(KC_C) // C-c Copy +#define W_PASTE LCTL(KC_V) // C-v Paste +#define W_UNDO LCTL(KC_Z) // C-z Undo +#define W_FIND LCTL(KC_F) // C-v Find +#define W_CAD LCTL(LALT(KC_DEL)) // one-tap ctrl-alt-del + + + +//Tap Dance Declarations +enum { + CAKEWARP, + CTRLALTMDIA, +}; + +void cake_count (qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 2) { + layer_on (SYMB); //define double tap here + layer_off (MDIA); + } + else { + layer_off (SYMB); //define single tap or hold here + layer_off (MDIA); + } + if (state->count == 3) { + layer_on (RIMW); //define triple tap here + layer_off (MDIA); + } + else { + layer_off (RIMW); //define single tap or hold here + layer_off (MDIA); + reset_tap_dance (state); + } +} + +void dance_cad_mdia_fin (qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + register_code (KC_LCTL); + register_code (KC_LALT); + register_code (KC_DEL); + } else { + layer_on (MDIA); + } +} + +void dance_cad_mdia_reset (qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + unregister_code (KC_DEL); + unregister_code (KC_LALT); + unregister_code (KC_LCTL); + } else { + ; + } +} + +//Tap Dance Definitions +qk_tap_dance_action_t tap_dance_actions[] = { + // tap for Layer 0, tap twice to switch to symbol layer, and tap three times to switch to rimworld layer. + [CAKEWARP] = ACTION_TAP_DANCE_FN(cake_count) + // tap for ctrl-alt-del, tap twice for media layer + ,[CTRLALTMDIA] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cad_mdia_fin, dance_cad_mdia_reset) + // Other declarations would go here, separated by commas, if you have them +}; + +//In Layer declaration, add tap dance item in place of a key code + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer - TD(one_tap, two_taps, three_taps...) + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 7 | 8 | 9 | 0 | - | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | F12/L1 | Q | W | E | R | T | {/[ | |TD(L0 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | |L1 L2)|------+------+------+------+------+--------| + * |Caps/Win| A | S | D | F | G |------| |------| H | J | K | L | ; | ' | + * |--------+------+------+------+------+------| }/] | TD(ctrl|------+------+------+------+------+--------| + * |LShift/(|Z/Ctrl| X | C | V | B | | |altdel| N | M | , | . | / |RShift/)| + * `--------+------+------+------+------+-------------' |L3) |------+------+------+------+------+--------' + * | Undo | Cut |CopyPa| Meh | LGui | '------| | Enter| Left | Up | Down | Right | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Esc | VolUp| | F4 | Mute | + * ,------|------|------| |------+--------+------. + * | | | VolDn| | F5 | | | + * |Backsp|Delete|------| |------| Tab / |Space | + * |ace | | Find | | Alt | CTRL | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, +LT(SYMB, KC_F12), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, + GUI_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSPO, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_RBRC, + W_UNDO, W_CUT, CO_PA, MEH_T(KC_NO), KC_LGUI, + KC_ESC, KC_VOLU, + KC_VOLD, + KC_BSPC, KC_DELETE, W_FIND, + // right hand + KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + TD(CAKEWARP), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + TD(CTRLALTMDIA), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, + KC_ENT, KC_LEFT, KC_UP, KC_DOWN, KC_RIGHT, + KC_F4, KC_MUTE, + KC_F5, + KC_RALT, CTL_T(KC_TAB), KC_SPC + ), + +/* Keymap 1: Symbol Layer | No EEPROM Or Version keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | xx | | xx | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | |TD(L0 | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | |L1 L2)|------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | - | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_MINS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_NO, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), + +/* Keymap 2: RimWorld Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 7 | 8 | 9 | 0 | - | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | TAB | C | ,< | W | >. | R | | |TD(L0 | U | B | N | J | M | PGUP | + * |--------+------+------+------+------+------| F10 | |L1 L2)|------+------+------+------+------+--------| + * | I | F | A | S | D | 8 |------| |------| X | L | P | Y | H | ENTER | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | K | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | PGDN | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | F | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * |SPACE | C |------| |------| E |SPACE | + * | | | Q | | | | | + * `--------------------' `--------------------' + */ +// RIMWORLD +[RIMW] = KEYMAP( + // left hand + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_TAB, KC_C, KC_COMM, KC_W, KC_DOT, KC_R, KC_F10, + KC_I, KC_F, KC_A, KC_S, KC_D, KC_8, + KC_K, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_C,KC_Q,KC_TRNS, + // right hand + KC_7, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, + KC_TRNS, KC_U, KC_B, KC_N, KC_J, KC_M, KC_PGUP, + KC_X, KC_L, SFT_T(KC_P), KC_Y, KC_H, KC_ENT, + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PGDN, + KC_F, KC_LEFT, KC_UP, KC_DOWN,KC_RIGHT, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_E, KC_TRNS +), +/* Keymap 3: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | Lclk | Rclk |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_BTN1, KC_BTN2, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +static uint16_t key_timer; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case 0: { + if (record->event.pressed) { + key_timer = timer_read(); // if the key is being pressed, we start the timer. + } + else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down"). + if (timer_elapsed(key_timer) > 150) { // 150 being 150ms, the threshhold we pick for counting something as a tap. + return MACRO( D(LCTL), T(C), U(LCTL), END ); + } + else { + return MACRO( D(LCTL), T(V), U(LCTL), END ); + } + } + break; + } + } + return MACRO_NONE; +}; + +// Anything you want to do once when the keyboard initializes. +// Tests LED function when the keyboard initializes. +void matrix_init_user(void) { + + wait_ms(500); + ergodox_board_led_on(); + wait_ms(200); + ergodox_right_led_1_on(); + wait_ms(200); + ergodox_right_led_2_on(); + wait_ms(200); + ergodox_right_led_3_on(); + wait_ms(200); + ergodox_board_led_off(); + wait_ms(200); + ergodox_right_led_1_off(); + wait_ms(200); + ergodox_right_led_2_off(); + wait_ms(200); + ergodox_right_led_3_off(); + +}; + + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + case 3: + ergodox_right_led_3_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboards/ergodox/keymaps/win10_writers-block/readme.md b/keyboards/ergodox/keymaps/win10_writers-block/readme.md index 66b1aaf40d..e51e3c48fc 100644 --- a/keyboards/ergodox/keymaps/win10_writers-block/readme.md +++ b/keyboards/ergodox/keymaps/win10_writers-block/readme.md @@ -1,113 +1,113 @@ - - -Win10 Writer's Block ErgoDox - v1.0 - -======================= - -This is a QWERTY layout for QMK. It's designed to work well in MS Office-like environments. It's tested on Windows 7 and 10. - -Professional writers may find this layout useful -- copywriters, technical writers, novelists, etc. - -I use my ErgoDox with this keymap as a daily driver at my office. - -A gaming layer is unobtrusively built into this layout. I use that layer to play RimWorld. - -Feel free to modify the gaming layer to your personal taste. - -## Table of Contents - -* [Layouts](#layouts) - - [Base layer](#base-layer) - - [Symbol layer](#symbol-layer) - - [Gaming layer](#rimworld-layer) - - [Media layer](#media-layer) -* [Tools](#tools) - - [Layer notification](#layer-notification) -* [Building](#building) - - [Using on Windows](#using-on-windows) -* [License](#license) -* [Special Thanks](#special-thanks) - -# Layouts - -* TapDance will teleport you to the layer you want: -* One Tap for the Base layer -* Two Taps for the Symbol layer -* Three Taps for the Rimworld/Gaming layer - -* Where the "Meh" key is located on the Ergodox EZ default layout, I've changed it to another tap dance key: -* One Tap for CTRL-ALT-DEL -* Two Taps for the Media/Mouse layer - -## Base layer - -[![Base layer](images/base-layer.png)](http://www.keyboard-layout-editor.com/#/gists/8fd9bbdd3a23bbb5a8779de3624a3be1) - -This is a QWERTY layout with some quirks. - -* Enter is located on a key that won't cause as much thumb fatigue. -* Copy and Paste work from the same key. Just hold the key to copy and tap the key to paste! -* Undo, Find and Cut are also one-touch keys. -* F12 is where you would normally find TAB on standard layouts. Quickly save in Word, safely. -* You'll find bracket keys below the "6" key. - -* The Meh Key is a single-button CTRL+ALT+SHIFT modifier. - -* Space Cadet Shift: Tap L Shift for "(" and R Shift for ")" -- holding either shift works like a normal shift. -* Tap "Z" or Tab to use either normally. Hold them for CTRL. -* Tap Caps Lock to use it normally. Hold it for Win key combinations (Win+D to minimize all programs, etc). - -## Symbol layer - -[![Symbol layer](images/symbol-layer.png)](http://www.keyboard-layout-editor.com/#/gists/04eb6458b8b17882e472f64d482f12b4) - -Your standard Ergodox EZ symbol + numpad layout, minus the Version and EEPROM keys. - -* From the base layer, hold the F12 Key to temporarily access this layer (use for quick access to numpad) -* Release F12 to return to the base layer. - -## Rimworld layer - -[![Rimworld / Gaming Layer](images/rimworld-layer.png)](http://www.keyboard-layout-editor.com/#/gists/d53af8391e6e443ed0a98ccfbdb4eace) - -This layer was made to play RimWorld, a Sci-Fi Colony Survival Game by Tynan Sylvester and Ludeon Studios, available on Steam. - -* Have fun! - -## Media layer - -[![Media layer](images/media-layer.png)](http://www.keyboard-layout-editor.com/#/gists/3209d09ed4bd997e4f49f28c6ada2ab3) - -This is the standard Ergodox EZ media layout with more options for mouseclick buttons. - -* In this layer, your "space" key changes into a back button for your browser. - -## LED states - -Your LEDs will change to indicate your layer. You'll know you are in the base layer if all LEDs are off. - -# Building - -To build, you will need the [QMK][qmk] firmware checked out. from there, dive into `keyboards/ergodox/keymaps/win10_writers-block/` - -[qmk]: https://github.com/jackhumbert/qmk_firmware - -``` -$ make keyboard=ergodox keymap=win10_writers-block -``` - -## Using on Windows - -This layout is tested in Windows 7 Pro and Windows 10 Home environments. - -# License - -GPL 3+ - -# Special Thanks - -* To algernon for his coding help. I'm a novice but I still made this work (and figured out tap dance) with his help. - -* To /r/MechanicalKeyboards for being an all-around great community. - + + +Win10 Writer's Block ErgoDox - v1.0 + +======================= + +This is a QWERTY layout for QMK. It's designed to work well in MS Office-like environments. It's tested on Windows 7 and 10. + +Professional writers may find this layout useful -- copywriters, technical writers, novelists, etc. + +I use my ErgoDox with this keymap as a daily driver at my office. + +A gaming layer is unobtrusively built into this layout. I use that layer to play RimWorld. + +Feel free to modify the gaming layer to your personal taste. + +## Table of Contents + +* [Layouts](#layouts) + - [Base layer](#base-layer) + - [Symbol layer](#symbol-layer) + - [Gaming layer](#rimworld-layer) + - [Media layer](#media-layer) +* [Tools](#tools) + - [Layer notification](#layer-notification) +* [Building](#building) + - [Using on Windows](#using-on-windows) +* [License](#license) +* [Special Thanks](#special-thanks) + +# Layouts + +* TapDance will teleport you to the layer you want: +* One Tap for the Base layer +* Two Taps for the Symbol layer +* Three Taps for the Rimworld/Gaming layer + +* Where the "Meh" key is located on the Ergodox EZ default layout, I've changed it to another tap dance key: +* One Tap for CTRL-ALT-DEL +* Two Taps for the Media/Mouse layer + +## Base layer + +[![Base layer](images/base-layer.png)](http://www.keyboard-layout-editor.com/#/gists/8fd9bbdd3a23bbb5a8779de3624a3be1) + +This is a QWERTY layout with some quirks. + +* Enter is located on a key that won't cause as much thumb fatigue. +* Copy and Paste work from the same key. Just hold the key to copy and tap the key to paste! +* Undo, Find and Cut are also one-touch keys. +* F12 is where you would normally find TAB on standard layouts. Quickly save in Word, safely. +* You'll find bracket keys below the "6" key. + +* The Meh Key is a single-button CTRL+ALT+SHIFT modifier. + +* Space Cadet Shift: Tap L Shift for "(" and R Shift for ")" -- holding either shift works like a normal shift. +* Tap "Z" or Tab to use either normally. Hold them for CTRL. +* Tap Caps Lock to use it normally. Hold it for Win key combinations (Win+D to minimize all programs, etc). + +## Symbol layer + +[![Symbol layer](images/symbol-layer.png)](http://www.keyboard-layout-editor.com/#/gists/04eb6458b8b17882e472f64d482f12b4) + +Your standard Ergodox EZ symbol + numpad layout, minus the Version and EEPROM keys. + +* From the base layer, hold the F12 Key to temporarily access this layer (use for quick access to numpad) +* Release F12 to return to the base layer. + +## Rimworld layer + +[![Rimworld / Gaming Layer](images/rimworld-layer.png)](http://www.keyboard-layout-editor.com/#/gists/d53af8391e6e443ed0a98ccfbdb4eace) + +This layer was made to play RimWorld, a Sci-Fi Colony Survival Game by Tynan Sylvester and Ludeon Studios, available on Steam. + +* Have fun! + +## Media layer + +[![Media layer](images/media-layer.png)](http://www.keyboard-layout-editor.com/#/gists/3209d09ed4bd997e4f49f28c6ada2ab3) + +This is the standard Ergodox EZ media layout with more options for mouseclick buttons. + +* In this layer, your "space" key changes into a back button for your browser. + +## LED states + +Your LEDs will change to indicate your layer. You'll know you are in the base layer if all LEDs are off. + +# Building + +To build, you will need the [QMK][qmk] firmware checked out. from there, dive into `keyboards/ergodox/keymaps/win10_writers-block/` + +[qmk]: https://github.com/jackhumbert/qmk_firmware + +``` +$ make keyboard=ergodox keymap=win10_writers-block +``` + +## Using on Windows + +This layout is tested in Windows 7 Pro and Windows 10 Home environments. + +# License + +GPL 3+ + +# Special Thanks + +* To algernon for his coding help. I'm a novice but I still made this work (and figured out tap dance) with his help. + +* To /r/MechanicalKeyboards for being an all-around great community. + * To /u/profet23 for his amazing custom Ergodox boards. \ No newline at end of file From 7d698cc494f984d8e526a6fb29f838ae0166e909 Mon Sep 17 00:00:00 2001 From: Joshua T Date: Mon, 24 Oct 2016 10:30:00 -0500 Subject: [PATCH 057/727] Added comments with ASCII art keymaps --- .../atreus/keymaps/replicaJunction/keymap.c | 106 +++++++++++++++++- 1 file changed, 105 insertions(+), 1 deletion(-) diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index f7ef1174dc..4d46db69e0 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -45,6 +45,21 @@ ; // This doesn't do anything. It's just for VSCode because its syntax highlighting is weird for the above #define statements. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + * Colemak-ModDH + * + * ,----------------------------------. ,----------------------------------. + * | Q | W | F | P | B | | J | L | U | Y | ; | + * +------+------+------+------+------| +------+------+------+------+------| + * | A | R | S | T | G | | M | N | E | I | O | + * +------+------+------+------+------| +------+------+------+------+------| + * |Z Shft| X | C | D | V | ,------. ,------. | K | H | , | . |/ Shft| + * +------+------+------+------+------| | Ctrl | | Alt | +------+------+------+------+------| + * | Esc | Gui | Tab | Alt | Bksp | | Del | | Enter| |Sp/_NU| _EX | - | ' | = | + * `----------------------------------' `------' `------' `----------------------------------' + * + */ [_CO] = KEYMAP( KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, @@ -52,6 +67,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_LGUI, KC_TAB, KC_LALT, KC_BSPC, CTL_T(KC_DEL), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL ), +/* + * QWERTY + * + * ,----------------------------------. ,----------------------------------. + * | Q | W | E | R | T | | Y | U | I | O | P | + * +------+------+------+------+------| +------+------+------+------+------| + * | A | S | D | F | G | | H | J | K | L | ; | + * +------+------+------+------+------| +------+------+------+------+------| + * |Z Shft| X | C | V | B | ,------. ,------. | N | M | , | . |/ Shft| + * +------+------+------+------+------| | Ctrl | | Alt | +------+------+------+------+------| + * | Esc | Gui | Tab | Alt | Bksp | | Del | | Enter| |Sp/_NU| _EX | - | ' | = | + * `----------------------------------' `------' `------' `----------------------------------' + * + */ [_QW] = KEYMAP( /* Qwerty */ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, @@ -59,13 +88,45 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_LGUI, KC_TAB, KC_LALT, KC_BSPC, CTL_T(KC_DEL), ALT_T(KC_ENT), LT(_NU, KC_SPC), MO(_EX), KC_MINS, KC_QUOT, KC_EQL ), +/* + * Extend + * + * Ctrl+` is a keyboard shortcut for the program ConEmu, which brings up a dropdown console window. + * + * Also note that some dual-role keys are overridden here with their modifiers + * + * ,----------------------------------. ,----------------------------------. + * | Caps | | | |Ctrl `| | PgUp | Home | Up | End | Del | + * +------+------+------+------+------| +------+------+------+------+------| + * | | Gui | Alt | Ctrl | | | PgDn | Left | Down | Right| Bksp | + * +------+------+------+------+------| +------+------+------+------+------| + * | Shift| Cut | Copy | | Paste| ,------. ,------. | | ^Tab | Tab | |Insert| + * +------+------+------+------+------| | | | | +------+------+------+------+------| + * | | | | | | | | | | | Space| | | |PrntSc| + * `----------------------------------' `------' `------' `----------------------------------' + * + */ [_EX] = KEYMAP( /* Extend */ KC_CAPS, _______, _______, _______, LCTL(KC_GRV), KC_PGUP, KC_HOME, KC_UP, KC_END, KC_DEL, _______, KC_LGUI, KC_LALT, KC_LCTL, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, - _______, KX_CUT, KX_COPY, _______, KX_PAST, _______, KC_TAB, KCX_LST, _______, KC_INSERT, + KC_LSFT, KX_CUT, KX_COPY, _______, KX_PAST, _______, KCX_LST, KC_TAB, _______, KC_INS, _______, _______, _______, _______, _______, _______, _______, KC_SPC, _______, _______, _______, KC_PSCR ), +/* + * Numbers and symbols + * + * ,----------------------------------. ,----------------------------------. + * | ! | @ | { | } | & | | / | 7 | 8 | 9 | * | + * +------+------+------+------+------| +------+------+------+------+------| + * | # | $ | ( | ) | ~ | | | | 4 | 5 | 6 | - | + * +------+------+------+------+------| +------+------+------+------+------| + * | % | ^ | [ | ] | ` | ,------. ,------. | \ | 1 | 2 | 3 | + | + * +------+------+------+------+------| | | | | +------+------+------+------+------| + * | | _GA | | _FN | | | | | | | | 0 | . | = | | + * `----------------------------------' `------' `------' `----------------------------------' + * + */ [_NU] = KEYMAP( /* Numbers and symbols */ KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_AMPR, KC_SLSH, KC_7, KC_8, KC_9, KC_ASTR, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_TILD, KC_PIPE, KC_4, KC_5, KC_6, KC_MINS, @@ -73,6 +134,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, TG(_GA), _______, MO(_FN), _______, _______, _______, _______, KC_0, KC_DOT, KC_EQL, _______ ), +/* + * Functions + * + * ,----------------------------------. ,----------------------------------. + * | | | | | | | | F7 | F8 | F9 | F10 | + * +------+------+------+------+------| +------+------+------+------+------| + * | | | | | | | | F4 | F5 | F6 | F11 | + * +------+------+------+------+------| +------+------+------+------+------| + * | | Vol ^| Mute | Vol v| Play | ,------. ,------. | | F1 | F2 | F3 | F12 | + * +------+------+------+------+------| | | | | +------+------+------+------+------| + * | | | | | Stop | | | | | | | | _CO | _GA | RESET| + * `----------------------------------' `------' `------' `----------------------------------' + * + */ [_FN] = KEYMAP( /* Functions */ KC_DEL, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, _______, KC_F4, KC_F5, KC_F6, KC_F11, @@ -80,6 +155,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, KC_MSTP, _______, _______, _______, KC_NO, DF(_CO), DF(_QW), RESET ), +/* + * Gaming + * + * ,----------------------------------. ,----------------------------------. + * | | | | | | | |Whl Up| MUp |Whl Dn| | + * +------+------+------+------+------| +------+------+------+------+------| + * | | | | | | | | MLeft| MDown|MRight| | + * +------+------+------+------+------| +------+------+------+------+------| + * | Z | | | | | ,------. ,------. |MClick| | | | | + * +------+------+------+------+------| | Bksp | |RClick| +------+------+------+------+------| + * | | _GA | | Shift| Space| | | | | |LClick| | | | | + * `----------------------------------' `------' `------' `----------------------------------' + * + */ [_GA] = KEYMAP( /* Gaming */ _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, @@ -87,6 +176,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, TG(_GA), _______, KC_LSFT, KC_SPC, KC_BSPC, KC_BTN2, KC_BTN1, _______, _______, _______, _______ )}; +/* + * Template + * + * ,----------------------------------. ,----------------------------------. + * | | | | | | | | | | | | + * +------+------+------+------+------| +------+------+------+------+------| + * | | | | | | | | | | | | + * +------+------+------+------+------| +------+------+------+------+------| + * | | | | | | ,------. ,------. | | | | | | + * +------+------+------+------+------| | | | | +------+------+------+------+------| + * | | | | | | | | | | | | | | | | + * `----------------------------------' `------' `------' `----------------------------------' + * + */ + const uint16_t PROGMEM fn_actions[] = { }; From 2082c6f11076dd8232aea65ed178dea27d3a4109 Mon Sep 17 00:00:00 2001 From: dbroqua Date: Wed, 26 Oct 2016 22:24:26 +0200 Subject: [PATCH 058/727] - Fixed typo in gh60/dbroqua layout --- keyboards/kc60/keymaps/dbroqua/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/kc60/keymaps/dbroqua/keymap.c b/keyboards/kc60/keymaps/dbroqua/keymap.c index 1b645ea938..8b5efd0cee 100644 --- a/keyboards/kc60/keymaps/dbroqua/keymap.c +++ b/keyboards/kc60/keymaps/dbroqua/keymap.c @@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |-----------------------------------------------------------------------------------------+ * | | | | | | | | Psc | | | | | | * |-----------------------------------------------------------------------------------------+ - * | | Led | Led-| Led+| | Mute| Vol+| Vol-| | | | Play | | + * | | Led | Led+| Led-| | Mute| Vol+| Vol-| | | | Play | | * |-----------------------------------------------------------------------------------------+ * | | | | | | Prev | Stop | Next | * `-----------------------------------------------------------------------------------------' From 508eddf8ba8548d3f71e1c09a404839beb49f45c Mon Sep 17 00:00:00 2001 From: IBNobody Date: Fri, 28 Oct 2016 14:21:38 -0500 Subject: [PATCH 059/727] Fixing Debounce - WIP --- keyboards/vision_division/config.h | 2 +- quantum/matrix.c | 256 +++++++++++++++++++---------- tmk_core/common/matrix.h | 10 ++ 3 files changed, 179 insertions(+), 89 deletions(-) diff --git a/keyboards/vision_division/config.h b/keyboards/vision_division/config.h index 93c9606712..5798d91adf 100644 --- a/keyboards/vision_division/config.h +++ b/keyboards/vision_division/config.h @@ -31,7 +31,7 @@ along with this program. If not, see . #define BACKLIGHT_LEVELS 3 /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCING_DELAY 5 +#define DEBOUNCING_DELAY 0 #define MATRIX_MASKED diff --git a/quantum/matrix.c b/quantum/matrix.c index ac81794e59..a7dab09877 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -26,6 +26,33 @@ along with this program. If not, see . #include "util.h" #include "matrix.h" +#if (MATRIX_COLS <= 8) +# define print_matrix_header() print("\nr/c 01234567\n") +# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) +# define matrix_bitpop(i) bitpop(matrix[i]) +# define ROW_SHIFTER ((uint8_t)1) +#elif (MATRIX_COLS <= 16) +# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") +# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) +# define matrix_bitpop(i) bitpop16(matrix[i]) +# define ROW_SHIFTER ((uint16_t)1) +#elif (MATRIX_COLS <= 32) +# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") +# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) +# define matrix_bitpop(i) bitpop32(matrix[i]) +# define ROW_SHIFTER ((uint32_t)1) +#endif + +#if (MATRIX_ROWS <= 8) +# define COL_SHIFTER ((uint8_t)1) +#elif (MATRIX_ROWS <= 16) +# define COL_SHIFTER ((uint16_t)1) +#elif (MATRIX_ROWS <= 32) +# define COL_SHIFTER ((uint32_t)1) +#endif + + + #ifdef MATRIX_MASKED extern const matrix_row_t matrix_mask[]; #endif @@ -42,24 +69,28 @@ static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; /* matrix state(1:on, 0:off) */ static matrix_row_t matrix[MATRIX_ROWS]; -static matrix_row_t matrix_debouncing[MATRIX_ROWS]; -#if DIODE_DIRECTION == ROW2COL - static matrix_row_t matrix_reversed[MATRIX_COLS]; - static matrix_row_t matrix_reversed_debouncing[MATRIX_COLS]; +#if DIODE_DIRECTION == COL2ROW + static matrix_row_t matrix_debouncing[MATRIX_ROWS]; +#else // ROW2COL + static matrix_col_t matrix_transposed[MATRIX_COLS]; + static matrix_col_t matrix_transposed_debouncing[MATRIX_COLS]; #endif -#if MATRIX_COLS > 16 - #define SHIFTER 1UL -#else - #define SHIFTER 1 +#if (DIODE_DIRECTION == COL2ROW) + static void init_cols(void); + static matrix_row_t read_cols(void); + static void unselect_rows(void); + static void select_row(uint8_t row); + static void unselect_row(uint8_t row); +#else // ROW2COL + static void init_rows(void); + static matrix_col_t read_rows(void); + static void unselect_cols(void); + static void unselect_col(uint8_t col); + static void select_col(uint8_t col); #endif -static matrix_row_t read_cols(void); -static void init_cols(void); -static void unselect_rows(void); -static void select_row(uint8_t row); - __attribute__ ((weak)) void matrix_init_quantum(void) { matrix_init_kb(); @@ -99,7 +130,7 @@ uint8_t matrix_cols(void) { } // void matrix_power_up(void) { -// #if DIODE_DIRECTION == COL2ROW +// #if (DIODE_DIRECTION == COL2ROW) // for (int8_t r = MATRIX_ROWS - 1; r >= 0; --r) { // /* DDRxn */ // _SFR_IO8((row_pins[r] >> 4) + 1) |= _BV(row_pins[r] & 0xF); @@ -123,13 +154,15 @@ uint8_t matrix_cols(void) { // } void matrix_init(void) { + // To use PORTF disable JTAG with writing JTD bit twice within four cycles. - #ifdef __AVR_ATmega32U4__ + #if (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega32U4__)) MCUCR |= _BV(JTD); MCUCR |= _BV(JTD); #endif // initialize row and col +#if (DIODE_DIRECTION == COL2ROW) unselect_rows(); init_cols(); @@ -139,25 +172,43 @@ void matrix_init(void) { matrix_debouncing[i] = 0; } +#else // ROW2COL + unselect_cols(); + init_rows(); + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + } + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_COLS; i++) { + matrix_transposed_debouncing[i] = 0; + } +#endif + matrix_init_quantum(); } uint8_t matrix_scan(void) { -#if DIODE_DIRECTION == COL2ROW +#if (DIODE_DIRECTION == COL2ROW) + + // Set row, read cols + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { select_row(i); wait_us(30); // without this wait read unstable value. - matrix_row_t cols = read_cols(); - if (matrix_debouncing[i] != cols) { - matrix_debouncing[i] = cols; + matrix_row_t current_row = read_cols(); + if (matrix_debouncing[i] != current_row) { + matrix_debouncing[i] = current_row; if (debouncing) { debug("bounce!: "); debug_hex(debouncing); debug("\n"); } debouncing = DEBOUNCING_DELAY; } - unselect_rows(); + unselect_row(i); } if (debouncing) { @@ -169,19 +220,23 @@ uint8_t matrix_scan(void) } } } -#else + +#else // ROW2COL + + // Set col, read rows + for (uint8_t i = 0; i < MATRIX_COLS; i++) { - select_row(i); + select_col(i); wait_us(30); // without this wait read unstable value. - matrix_row_t rows = read_cols(); - if (matrix_reversed_debouncing[i] != rows) { - matrix_reversed_debouncing[i] = rows; + matrix_col_t current_col = read_rows(); + if (matrix_transposed_debouncing[i] != current_col) { + matrix_transposed_debouncing[i] = current_col; if (debouncing) { debug("bounce!: "); debug_hex(debouncing); debug("\n"); } debouncing = DEBOUNCING_DELAY; } - unselect_rows(); + unselect_col(i); } if (debouncing) { @@ -189,17 +244,20 @@ uint8_t matrix_scan(void) wait_ms(1); } else { for (uint8_t i = 0; i < MATRIX_COLS; i++) { - matrix_reversed[i] = matrix_reversed_debouncing[i]; + matrix_transposed[i] = matrix_transposed_debouncing[i]; } } } + + // Untranspose matrix for (uint8_t y = 0; y < MATRIX_ROWS; y++) { matrix_row_t row = 0; for (uint8_t x = 0; x < MATRIX_COLS; x++) { - row |= ((matrix_reversed[x] & (1<> y) << x; + row |= ((matrix_transposed[x] & (1<> y) << x; } matrix[y] = row; } + #endif matrix_scan_quantum(); @@ -233,23 +291,11 @@ matrix_row_t matrix_get_row(uint8_t row) void matrix_print(void) { -#if (MATRIX_COLS <= 8) - print("\nr/c 01234567\n"); -#elif (MATRIX_COLS <= 16) - print("\nr/c 0123456789ABCDEF\n"); -#elif (MATRIX_COLS <= 32) - print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n"); -#endif + print_matrix_header(); for (uint8_t row = 0; row < MATRIX_ROWS; row++) { phex(row); print(": "); -#if (MATRIX_COLS <= 8) - print_bin_reverse8(matrix_get_row(row)); -#elif (MATRIX_COLS <= 16) - print_bin_reverse16(matrix_get_row(row)); -#elif (MATRIX_COLS <= 32) - print_bin_reverse32(matrix_get_row(row)); -#endif + print_matrix_row(row); print("\n"); } } @@ -258,28 +304,21 @@ uint8_t matrix_key_count(void) { uint8_t count = 0; for (uint8_t i = 0; i < MATRIX_ROWS; i++) { -#if (MATRIX_COLS <= 8) - count += bitpop(matrix[i]); -#elif (MATRIX_COLS <= 16) - count += bitpop16(matrix[i]); -#elif (MATRIX_COLS <= 32) - count += bitpop32(matrix[i]); -#endif + count += matrix_bitpop(i); } return count; } + + +#if (DIODE_DIRECTION == COL2ROW) + static void init_cols(void) { -#if DIODE_DIRECTION == COL2ROW - for(int x = 0; x < MATRIX_COLS; x++) { - int pin = col_pins[x]; -#else - for(int x = 0; x < MATRIX_ROWS; x++) { - int pin = row_pins[x]; -#endif - _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); - _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); + for(uint8_t x = 0; x < MATRIX_COLS; x++) { + uint8_t pin = col_pins[x]; + _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN + _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI } } @@ -287,40 +326,81 @@ static matrix_row_t read_cols(void) { matrix_row_t result = 0; -#if DIODE_DIRECTION == COL2ROW - for(int x = 0; x < MATRIX_COLS; x++) { - int pin = col_pins[x]; -#else - for(int x = 0; x < MATRIX_ROWS; x++) { - int pin = row_pins[x]; -#endif - result |= (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)) ? 0 : (SHIFTER << x); + for(uint8_t x = 0; x < MATRIX_COLS; x++) { + uint8_t pin = col_pins[x]; + result |= (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)) ? 0 : (ROW_SHIFTER << x); } - return result; -} -static void unselect_rows(void) -{ -#if DIODE_DIRECTION == COL2ROW - for(int x = 0; x < MATRIX_ROWS; x++) { - int pin = row_pins[x]; -#else - for(int x = 0; x < MATRIX_COLS; x++) { - int pin = col_pins[x]; -#endif - _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); - _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); - } + return result; } static void select_row(uint8_t row) { - -#if DIODE_DIRECTION == COL2ROW - int pin = row_pins[row]; -#else - int pin = col_pins[row]; -#endif - _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); - _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); + uint8_t pin = row_pins[row]; + _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT + _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW } + +static void unselect_row(uint8_t row) +{ + uint8_t pin = row_pins[row]; + _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN + _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI +} + +static void unselect_rows(void) +{ + for(uint8_t x = 0; x < MATRIX_ROWS; x++) { + uint8_t pin = row_pins[x]; + _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN + _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI + } +} + +#else // ROW2COL + +static void init_rows(void) +{ + for(uint8_t x = 0; x < MATRIX_ROWS; x++) { + uint8_t pin = row_pins[x]; + _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN + _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI + } +} + +static matrix_col_t read_rows(void) +{ + matrix_col_t result = 0; + + for(uint8_t x = 0; x < MATRIX_ROWS; x++) { + uint8_t pin = row_pins[x]; + result |= (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)) ? 0 : (COL_SHIFTER << x); + } + + return result; +} + +static void select_col(uint8_t col) +{ + uint8_t pin = col_pins[col]; + _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF); // OUT + _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF); // LOW +} + +static void unselect_col(uint8_t col) +{ + uint8_t pin = col_pins[col]; + _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN + _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI +} + +static void unselect_cols(void) +{ + for(uint8_t x = 0; x < MATRIX_COLS; x++) { + uint8_t pin = col_pins[x]; + _SFR_IO8((pin >> 4) + 1) &= ~_BV(pin & 0xF); // IN + _SFR_IO8((pin >> 4) + 2) |= _BV(pin & 0xF); // HI + } +} + +#endif diff --git a/tmk_core/common/matrix.h b/tmk_core/common/matrix.h index cee3593eee..84e066c673 100644 --- a/tmk_core/common/matrix.h +++ b/tmk_core/common/matrix.h @@ -31,6 +31,16 @@ typedef uint32_t matrix_row_t; #error "MATRIX_COLS: invalid value" #endif +#if (MATRIX_ROWS <= 8) +typedef uint8_t matrix_col_t; +#elif (MATRIX_ROWS <= 16) +typedef uint16_t matrix_col_t; +#elif (MATRIX_ROWS <= 32) +typedef uint32_t matrix_col_t; +#else +#error "MATRIX_COLS: invalid value" +#endif + #define MATRIX_IS_ON(row, col) (matrix_get_row(row) && (1< Date: Fri, 28 Oct 2016 16:24:20 -0500 Subject: [PATCH 060/727] Refactoring Matrix scanning --- quantum/matrix.c | 173 +++++++++++++++++++++------------------ tmk_core/common/matrix.h | 10 --- 2 files changed, 95 insertions(+), 88 deletions(-) diff --git a/quantum/matrix.c b/quantum/matrix.c index a7dab09877..1bacea1bed 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -43,16 +43,6 @@ along with this program. If not, see . # define ROW_SHIFTER ((uint32_t)1) #endif -#if (MATRIX_ROWS <= 8) -# define COL_SHIFTER ((uint8_t)1) -#elif (MATRIX_ROWS <= 16) -# define COL_SHIFTER ((uint16_t)1) -#elif (MATRIX_ROWS <= 32) -# define COL_SHIFTER ((uint32_t)1) -#endif - - - #ifdef MATRIX_MASKED extern const matrix_row_t matrix_mask[]; #endif @@ -70,6 +60,9 @@ static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; /* matrix state(1:on, 0:off) */ static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_row_t matrix_raw[MATRIX_ROWS]; + + #if DIODE_DIRECTION == COL2ROW static matrix_row_t matrix_debouncing[MATRIX_ROWS]; #else // ROW2COL @@ -79,13 +72,13 @@ static matrix_row_t matrix[MATRIX_ROWS]; #if (DIODE_DIRECTION == COL2ROW) static void init_cols(void); - static matrix_row_t read_cols(void); + static void read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) static void unselect_rows(void); static void select_row(uint8_t row); static void unselect_row(uint8_t row); #else // ROW2COL static void init_rows(void); - static matrix_col_t read_rows(void); + static void read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) static void unselect_cols(void); static void unselect_col(uint8_t col); static void select_col(uint8_t col); @@ -169,6 +162,7 @@ void matrix_init(void) { // initialize matrix state: all keys off for (uint8_t i=0; i < MATRIX_ROWS; i++) { matrix[i] = 0; + matrix_raw[i] = 0; matrix_debouncing[i] = 0; } @@ -178,6 +172,7 @@ void matrix_init(void) { // initialize matrix state: all keys off for (uint8_t i=0; i < MATRIX_ROWS; i++) { + matrix_raw[i] = 0; matrix[i] = 0; } @@ -196,67 +191,73 @@ uint8_t matrix_scan(void) #if (DIODE_DIRECTION == COL2ROW) // Set row, read cols - - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - select_row(i); - wait_us(30); // without this wait read unstable value. - matrix_row_t current_row = read_cols(); - if (matrix_debouncing[i] != current_row) { - matrix_debouncing[i] = current_row; - if (debouncing) { - debug("bounce!: "); debug_hex(debouncing); debug("\n"); - } - debouncing = DEBOUNCING_DELAY; - } - unselect_row(i); + for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { + read_cols_on_row(matrix, current_row); } - if (debouncing) { - if (--debouncing) { - wait_ms(1); - } else { - for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - matrix[i] = matrix_debouncing[i]; - } - } - } + // select_row(i); + // wait_us(30); // without this wait read unstable value. + // matrix_row_t current_row = read_cols(); + // if (matrix_debouncing[i] != current_row) { + // matrix_debouncing[i] = current_row; + // if (debouncing) { + // debug("bounce!: "); debug_hex(debouncing); debug("\n"); + // } + // debouncing = DEBOUNCING_DELAY; + // } + // unselect_row(i); + // } + + // if (debouncing) { + // if (--debouncing) { + // wait_ms(1); + // } else { + // for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + // matrix[i] = matrix_debouncing[i]; + // } + // } + // } #else // ROW2COL // Set col, read rows - - for (uint8_t i = 0; i < MATRIX_COLS; i++) { - select_col(i); - wait_us(30); // without this wait read unstable value. - matrix_col_t current_col = read_rows(); - if (matrix_transposed_debouncing[i] != current_col) { - matrix_transposed_debouncing[i] = current_col; - if (debouncing) { - debug("bounce!: "); debug_hex(debouncing); debug("\n"); - } - debouncing = DEBOUNCING_DELAY; - } - unselect_col(i); + for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { + read_rows_on_col(matrix, current_col); } - if (debouncing) { - if (--debouncing) { - wait_ms(1); - } else { - for (uint8_t i = 0; i < MATRIX_COLS; i++) { - matrix_transposed[i] = matrix_transposed_debouncing[i]; - } - } - } - // Untranspose matrix - for (uint8_t y = 0; y < MATRIX_ROWS; y++) { - matrix_row_t row = 0; - for (uint8_t x = 0; x < MATRIX_COLS; x++) { - row |= ((matrix_transposed[x] & (1<> y) << x; - } - matrix[y] = row; - } + // for (uint8_t i = 0; i < MATRIX_COLS; i++) { + // select_col(i); + // wait_us(30); // without this wait read unstable value. + // matrix_col_t current_col = read_rows(); + // if (matrix_transposed_debouncing[i] != current_col) { + // matrix_transposed_debouncing[i] = current_col; + // if (debouncing) { + // debug("bounce!: "); debug_hex(debouncing); debug("\n"); + // } + // debouncing = DEBOUNCING_DELAY; + // } + // unselect_col(i); + // } + + // if (debouncing) { + // if (--debouncing) { + // wait_ms(1); + // } else { + // for (uint8_t i = 0; i < MATRIX_COLS; i++) { + // matrix_transposed[i] = matrix_transposed_debouncing[i]; + // } + // } + // } + + // // Untranspose matrix + // for (uint8_t y = 0; y < MATRIX_ROWS; y++) { + // matrix_row_t row = 0; + // for (uint8_t x = 0; x < MATRIX_COLS; x++) { + // row |= ((matrix_transposed[x] & (1<> y) << x; + // } + // matrix[y] = row; + // } #endif @@ -322,16 +323,25 @@ static void init_cols(void) } } -static matrix_row_t read_cols(void) +static void read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { - matrix_row_t result = 0; + // Clear data in matrix row + current_matrix[current_row] = 0; - for(uint8_t x = 0; x < MATRIX_COLS; x++) { - uint8_t pin = col_pins[x]; - result |= (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)) ? 0 : (ROW_SHIFTER << x); + // Select row and wait for row selecton to stabilize + select_row(current_row); + wait_us(30); + + // For each col... + for(uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++) { + + // Select the col pin to read (active low) + uint8_t pin = col_pins[col_index]; + uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); + + // Populate the matrix row with the state of the col pin + current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); } - - return result; } static void select_row(uint8_t row) @@ -368,16 +378,23 @@ static void init_rows(void) } } -static matrix_col_t read_rows(void) +static void read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { - matrix_col_t result = 0; - for(uint8_t x = 0; x < MATRIX_ROWS; x++) { - uint8_t pin = row_pins[x]; - result |= (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)) ? 0 : (COL_SHIFTER << x); + // Select col and wait for col selecton to stabilize + select_col(current_col); + wait_us(30); + + // For each row... + for(uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { + + // Select the row pin to read (active low) + uint8_t pin = row_pins[row_index]; + uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); + + // Populate the matrix row with the state of the col pin + current_matrix[row_index] &= pin_state ? ~(ROW_SHIFTER << current_col) : 0; } - - return result; } static void select_col(uint8_t col) diff --git a/tmk_core/common/matrix.h b/tmk_core/common/matrix.h index 84e066c673..cee3593eee 100644 --- a/tmk_core/common/matrix.h +++ b/tmk_core/common/matrix.h @@ -31,16 +31,6 @@ typedef uint32_t matrix_row_t; #error "MATRIX_COLS: invalid value" #endif -#if (MATRIX_ROWS <= 8) -typedef uint8_t matrix_col_t; -#elif (MATRIX_ROWS <= 16) -typedef uint16_t matrix_col_t; -#elif (MATRIX_ROWS <= 32) -typedef uint32_t matrix_col_t; -#else -#error "MATRIX_COLS: invalid value" -#endif - #define MATRIX_IS_ON(row, col) (matrix_get_row(row) && (1< Date: Sat, 29 Oct 2016 10:39:03 -0500 Subject: [PATCH 061/727] Made scanning more efficient --- quantum/matrix.c | 57 +++++++++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/quantum/matrix.c b/quantum/matrix.c index 1bacea1bed..f45b251e4d 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -61,24 +61,18 @@ static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; static matrix_row_t matrix[MATRIX_ROWS]; static matrix_row_t matrix_raw[MATRIX_ROWS]; +static matrix_row_t matrix_debouncing[MATRIX_ROWS]; -#if DIODE_DIRECTION == COL2ROW - static matrix_row_t matrix_debouncing[MATRIX_ROWS]; -#else // ROW2COL - static matrix_col_t matrix_transposed[MATRIX_COLS]; - static matrix_col_t matrix_transposed_debouncing[MATRIX_COLS]; -#endif - #if (DIODE_DIRECTION == COL2ROW) static void init_cols(void); - static void read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) + static void read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row); static void unselect_rows(void); static void select_row(uint8_t row); static void unselect_row(uint8_t row); #else // ROW2COL static void init_rows(void); - static void read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) + static void read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col); static void unselect_cols(void); static void unselect_col(uint8_t col); static void select_col(uint8_t col); @@ -158,6 +152,10 @@ void matrix_init(void) { #if (DIODE_DIRECTION == COL2ROW) unselect_rows(); init_cols(); +#else // ROW2COL + unselect_cols(); + init_rows(); +#endif // initialize matrix state: all keys off for (uint8_t i=0; i < MATRIX_ROWS; i++) { @@ -166,22 +164,6 @@ void matrix_init(void) { matrix_debouncing[i] = 0; } -#else // ROW2COL - unselect_cols(); - init_rows(); - - // initialize matrix state: all keys off - for (uint8_t i=0; i < MATRIX_ROWS; i++) { - matrix_raw[i] = 0; - matrix[i] = 0; - } - - // initialize matrix state: all keys off - for (uint8_t i=0; i < MATRIX_COLS; i++) { - matrix_transposed_debouncing[i] = 0; - } -#endif - matrix_init_quantum(); } @@ -262,7 +244,7 @@ uint8_t matrix_scan(void) #endif matrix_scan_quantum(); - +// matrix_print(); return 1; } @@ -342,6 +324,9 @@ static void read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) // Populate the matrix row with the state of the col pin current_matrix[current_row] |= pin_state ? 0 : (ROW_SHIFTER << col_index); } + + // Unselect row + unselect_row(current_row); } static void select_row(uint8_t row) @@ -388,13 +373,21 @@ static void read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) // For each row... for(uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { - // Select the row pin to read (active low) - uint8_t pin = row_pins[row_index]; - uint8_t pin_state = (_SFR_IO8(pin >> 4) & _BV(pin & 0xF)); - - // Populate the matrix row with the state of the col pin - current_matrix[row_index] &= pin_state ? ~(ROW_SHIFTER << current_col) : 0; + // Check row pin state + if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0) + { + // Pin LO, set col bit + current_matrix[row_index] |= (ROW_SHIFTER << current_col); + } + else + { + // Pin HI, clear col bit + current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); + } } + + // Unselect col + unselect_col(current_col); } static void select_col(uint8_t col) From f4030289744fc6dc82dd85c955070c0845813cc5 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sat, 29 Oct 2016 16:12:58 -0500 Subject: [PATCH 062/727] added fixed debounce code --- quantum/matrix.c | 143 +++++++++++++++++++++++------------------------ 1 file changed, 70 insertions(+), 73 deletions(-) diff --git a/quantum/matrix.c b/quantum/matrix.c index f45b251e4d..3c488b417d 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -25,6 +25,19 @@ along with this program. If not, see . #include "debug.h" #include "util.h" #include "matrix.h" +#include "timer.h" + + +/* Set 0 if debouncing isn't needed */ + +#ifndef DEBOUNCING_DELAY +# define DEBOUNCING_DELAY 5 +#endif + +#if (DEBOUNCING_DELAY > 0) + static uint16_t debouncing_time; + static bool debouncing = false; +#endif #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") @@ -44,16 +57,9 @@ along with this program. If not, see . #endif #ifdef MATRIX_MASKED -extern const matrix_row_t matrix_mask[]; + extern const matrix_row_t matrix_mask[]; #endif -/* Set 0 if debouncing isn't needed */ - -#ifndef DEBOUNCING_DELAY -# define DEBOUNCING_DELAY 5 -#endif -static uint8_t debouncing = DEBOUNCING_DELAY; - static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; @@ -66,13 +72,13 @@ static matrix_row_t matrix_debouncing[MATRIX_ROWS]; #if (DIODE_DIRECTION == COL2ROW) static void init_cols(void); - static void read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row); + static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row); static void unselect_rows(void); static void select_row(uint8_t row); static void unselect_row(uint8_t row); #else // ROW2COL static void init_rows(void); - static void read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col); + static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col); static void unselect_cols(void); static void unselect_col(uint8_t col); static void select_col(uint8_t col); @@ -174,83 +180,56 @@ uint8_t matrix_scan(void) // Set row, read cols for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) { - read_cols_on_row(matrix, current_row); +# if (DEBOUNCING_DELAY > 0) + bool matrix_changed = read_cols_on_row(matrix_debouncing, current_row); + + if (matrix_changed) { + debouncing = true; + debouncing_time = timer_read(); + } + +# else + read_cols_on_row(matrix, current_row); +# endif + } - // select_row(i); - // wait_us(30); // without this wait read unstable value. - // matrix_row_t current_row = read_cols(); - // if (matrix_debouncing[i] != current_row) { - // matrix_debouncing[i] = current_row; - // if (debouncing) { - // debug("bounce!: "); debug_hex(debouncing); debug("\n"); - // } - // debouncing = DEBOUNCING_DELAY; - // } - // unselect_row(i); - // } - - // if (debouncing) { - // if (--debouncing) { - // wait_ms(1); - // } else { - // for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - // matrix[i] = matrix_debouncing[i]; - // } - // } - // } - #else // ROW2COL // Set col, read rows for (uint8_t current_col = 0; current_col < MATRIX_COLS; current_col++) { - read_rows_on_col(matrix, current_col); +# if (DEBOUNCING_DELAY > 0) + bool matrix_changed = read_rows_on_col(matrix_debouncing, current_col); + if (matrix_changed) { + debouncing = true; + debouncing_time = timer_read(); + } +# else + read_rows_on_col(matrix, current_col); +# endif + } - - // for (uint8_t i = 0; i < MATRIX_COLS; i++) { - // select_col(i); - // wait_us(30); // without this wait read unstable value. - // matrix_col_t current_col = read_rows(); - // if (matrix_transposed_debouncing[i] != current_col) { - // matrix_transposed_debouncing[i] = current_col; - // if (debouncing) { - // debug("bounce!: "); debug_hex(debouncing); debug("\n"); - // } - // debouncing = DEBOUNCING_DELAY; - // } - // unselect_col(i); - // } - - // if (debouncing) { - // if (--debouncing) { - // wait_ms(1); - // } else { - // for (uint8_t i = 0; i < MATRIX_COLS; i++) { - // matrix_transposed[i] = matrix_transposed_debouncing[i]; - // } - // } - // } - - // // Untranspose matrix - // for (uint8_t y = 0; y < MATRIX_ROWS; y++) { - // matrix_row_t row = 0; - // for (uint8_t x = 0; x < MATRIX_COLS; x++) { - // row |= ((matrix_transposed[x] & (1<> y) << x; - // } - // matrix[y] = row; - // } - #endif +# if (DEBOUNCING_DELAY > 0) + if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCING_DELAY)) { + for (uint8_t i = 0; i < MATRIX_ROWS; i++) { + matrix[i] = matrix_debouncing[i]; + } + debouncing = false; + } +# endif + matrix_scan_quantum(); -// matrix_print(); return 1; } bool matrix_is_modified(void) { +#if (DEBOUNCING_DELAY > 0) if (debouncing) return false; +#endif return true; } @@ -305,8 +284,11 @@ static void init_cols(void) } } -static void read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) +static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[current_row]; + // Clear data in matrix row current_matrix[current_row] = 0; @@ -327,6 +309,8 @@ static void read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) // Unselect row unselect_row(current_row); + + return (last_row_value == current_matrix[current_row]); } static void select_row(uint8_t row) @@ -363,15 +347,20 @@ static void init_rows(void) } } -static void read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) +static bool read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) { + bool matrix_changed = false; // Select col and wait for col selecton to stabilize select_col(current_col); wait_us(30); // For each row... - for(uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) { + for(uint8_t row_index = 0; row_index < MATRIX_ROWS; row_index++) + { + + // Store last value of row prior to reading + matrix_row_t last_row_value = current_matrix[row_index]; // Check row pin state if ((_SFR_IO8(row_pins[row_index] >> 4) & _BV(row_pins[row_index] & 0xF)) == 0) @@ -384,10 +373,18 @@ static void read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col) // Pin HI, clear col bit current_matrix[row_index] &= ~(ROW_SHIFTER << current_col); } + + // Determine if the matrix changed state + if ((last_row_value != current_matrix[row_index]) && !(matrix_changed)) + { + matrix_changed = true; + } } // Unselect col unselect_col(current_col); + + return matrix_changed; } static void select_col(uint8_t col) From 78976d8f7a7702eb4e94819af40fb3b32ac6825f Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 1 Nov 2016 11:52:58 -0500 Subject: [PATCH 063/727] Adding SKIP_GIT to speed up compiles. --- Makefile | 57 ++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 66c0ff30f4..aa33c40f1f 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,7 @@ ERROR_FILE := $(BUILD_DIR)/error_occured MAKEFILE_INCLUDED=yes -# Helper function to process the newt element of a space separated path +# Helper function to process the newt element of a space separated path # It works a bit like the traditional functional head tail # so the CURRENT_PATH_ELEMENT will beome the new head # and the PATH_ELEMENTS are the rest that are still unprocessed @@ -47,16 +47,16 @@ define NEXT_PATH_ELEMENT $$(eval PATH_ELEMENTS := $$(wordlist 2,9999,$$(PATH_ELEMENTS))) endef -# We change the / to spaces so that we more easily can work with the elements +# We change the / to spaces so that we more easily can work with the elements # separately PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR)) # Initialize the path elements list for further processing $(eval $(call NEXT_PATH_ELEMENT)) -# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct +# This function sets the KEYBOARD; KEYMAP and SUBPROJECT to the correct # variables depending on which directory you stand in. -# It's really a very simple if else chain, if you squint enough, -# but the makefile syntax makes it very verbose. +# It's really a very simple if else chain, if you squint enough, +# but the makefile syntax makes it very verbose. # If we are in a subfolder of keyboards ifeq ($(CURRENT_PATH_ELEMENT),keyboards) $(eval $(call NEXT_PATH_ELEMENT)) @@ -111,7 +111,7 @@ endif .DEFAULT_GOAL := all ifneq ($(KEYMAP),) ifeq ($(SUBPROJECT),) - # Inside a keymap folder, just build the keymap, with the + # Inside a keymap folder, just build the keymap, with the # default subproject .DEFAULT_GOAL := $(KEYBOARD)-$(KEYMAP) else @@ -163,7 +163,7 @@ define TRY_TO_MATCH_RULE_FROM_LIST_HELPER3 ifneq ($1,) ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1)),true) MATCHED_ITEM := $$(firstword $1) - else + else $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$$(wordlist 2,9999,$1))) endif endif @@ -171,10 +171,10 @@ endef # A recursive helper function for finding the longest match # $1 The list to be checed -# It works by always removing the currently matched item from the list +# It works by always removing the currently matched item from the list # and call itself recursively, until a match is found define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2 - # Stop the recursion when the list is empty + # Stop the recursion when the list is empty ifneq ($1,) RULE_BEFORE := $$(RULE) $$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1)) @@ -270,7 +270,7 @@ define PARSE_KEYBOARD $$(eval $$(call PARSE_SUBPROJECT,$$(SUBPROJECT))) # If there's no matching subproject, we assume it's the default # This will allow you to leave the subproject part of the target out - else + else $$(eval $$(call PARSE_SUBPROJECT,)) endif endef @@ -285,7 +285,7 @@ endef # When entering this, the keyboard and subproject are known, so now we need # to determine which keymaps are going to get compiled define PARSE_SUBPROJECT - # If we want to compile the default subproject, then we need to + # If we want to compile the default subproject, then we need to # include the correct makefile to determine the actual name of it CURRENT_SP := $1 ifeq ($$(CURRENT_SP),) @@ -304,7 +304,7 @@ define PARSE_SUBPROJECT endif endif # The special allsp is handled later - ifneq ($$(CURRENT_SP),allsp) + ifneq ($$(CURRENT_SP),allsp) # get a list of all keymaps KEYMAPS := $$(notdir $$(patsubst %/.,%,$$(wildcard $(ROOT_DIR)/keyboards/$$(CURRENT_KB)/keymaps/*/.))) ifneq ($$(CURRENT_SP),) @@ -343,7 +343,7 @@ define PARSE_SUBPROJECT endif endef -# If we want to parse all subprojects, but the keyboard doesn't have any, +# If we want to parse all subprojects, but the keyboard doesn't have any, # then use defaultsp instead define PARSE_ALL_SUBPROJECTS ifeq ($$(SUBPROJECTS),) @@ -448,7 +448,7 @@ endef # Set the silent mode depending on if we are trying to compile multiple keyboards or not -# By default it's on in that case, but it can be overriden by specifying silent=false +# By default it's on in that case, but it can be overriden by specifying silent=false # from the command line define SET_SILENT_MODE ifdef SUB_IS_SILENT @@ -481,11 +481,12 @@ endef # Allow specifying just the subproject, in the keyboard directory, which will compile all keymaps SUBPROJECTS := $(notdir $(patsubst %/Makefile,%,$(wildcard ./*/Makefile))) .PHONY: $(SUBPROJECTS) -$(SUBPROJECTS): %: %-allkm +$(SUBPROJECTS): %: %-allkm # Let's match everything, we handle all the rule parsing ourselves .PHONY: % -%: +ifndef SKIP_GIT +%: # Check if we have the CMP tool installed cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; # Check if the submodules are dirty, and display a warning if they are @@ -505,8 +506,24 @@ $(SUBPROJECTS): %: %-allkm # But we return the error code at the end, to trigger travis failures $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; - $(foreach TEST,$(TESTS),$(RUN_TEST)) + $(foreach TEST,$(TESTS),$(RUN_TEST)) if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; +else +%: + # Check if we have the CMP tool installed + cmp --version >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi; + rm -f $(ERROR_FILE) > /dev/null 2>&1 + $(eval $(call PARSE_RULE,$@)) + $(eval $(call SET_SILENT_MODE)) + # Run all the commands in the same shell, notice the + at the first line + # it has to be there to allow parallel execution of the submake + # This always tries to compile everything, even if error occurs in the middle + # But we return the error code at the end, to trigger travis failures + $(foreach COMMAND,$(COMMANDS),$(RUN_COMMAND)) + if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; + $(foreach TEST,$(TESTS),$(RUN_TEST)) + if [ -f $(ERROR_FILE) ]; then printf "$(MSG_ERRORS)" & exit 1; fi; +endif # All should compile everything .PHONY: all @@ -526,7 +543,11 @@ test: test-all test-clean: test-all-clean # Generate the version.h file -GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") +ifndef SKIP_GIT + GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S") +else + GIT_VERSION := NA +endif BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S") $(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h) $(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h) From ff8b4a1d8971cea74ecdaa9cae24ffa1e0e4c120 Mon Sep 17 00:00:00 2001 From: lucwastiaux Date: Sat, 5 Nov 2016 11:56:59 +0800 Subject: [PATCH 064/727] removed brackets anywhere but in brackets layer, added mouse layer back in, replaced all HYPR with MEH, put semicolon-newline and end-newline on symbol layer --- .../keymaps/dvorak_programmer/Makefile | 2 +- .../keymaps/dvorak_programmer/README.md | 9 +++ .../keymaps/dvorak_programmer/keymap.c | 59 +++++++++++++------ 3 files changed, 50 insertions(+), 20 deletions(-) diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/Makefile b/keyboards/ergodox/keymaps/dvorak_programmer/Makefile index 1fd6cb9ffd..3c65e25e19 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/Makefile +++ b/keyboards/ergodox/keymaps/dvorak_programmer/Makefile @@ -5,4 +5,4 @@ FORCE_NKRO ?= yes DEBUG_ENABLE = no CONSOLE_ENABLE = no TAP_DANCE_ENABLE = yes -MOUSEKEY_ENABLE = no +MOUSEKEY_ENABLE = yes diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/README.md b/keyboards/ergodox/keymaps/dvorak_programmer/README.md index a4580fe064..76eb50ec29 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/README.md +++ b/keyboards/ergodox/keymaps/dvorak_programmer/README.md @@ -13,3 +13,12 @@ Layers * NUMBER: keypad layer. * SYMBOL: all the symbols as well as brackets at the bottom. * SHORTCUTS: sends Hyper keys for Autohotkey to interpret. I use this to switch between specific apps. +* MOUSE: use mouse keys + +Updates +------- + +2016/11/05: +* removed brackets anywhere but in brackets layer +* added mouse layer back in +* replaced all HYPR with MEH \ No newline at end of file diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c index 5100115a64..ab9f2389b9 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c +++ b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c @@ -13,6 +13,7 @@ #define SYMBOL 6 #define BRACKETS 7 #define SHORTCUTS 8 +#define MOUSE 9 // macros #define MC_COPY_LINE 0 @@ -57,13 +58,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = KEYMAP( // layer 0 : default // left hand KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, - LT(BRACKETS,KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(KEY_SEL), + LT(BRACKETS,KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(KEY_SEL), MO(SHELL_NAV), KC_A, KC_O, KC_E, KC_U, KC_I, KC_FN3, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, MO(KEY_NAV), OSL(SHORTCUTS),KC_FN4, KC_FN5,OSL(SYMBOL),MO(NUMBER), // thumb cluster - RCTL(KC_F), RCTL(KC_S), - RCTL(KC_DEL), + MO(MOUSE), RCTL(KC_S), + RCTL(KC_DEL), KC_BSPC,RCTL(KC_BSPC),KC_DEL, // right hand KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSLS, @@ -73,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // lower keys - browser tab control RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), RCTL(KC_T), RCTL(KC_K), RCTL(KC_W), // thumb cluster - M(SEMICOLON_NEWLINE), M(END_NEWLINE), + LALT(KC_LEFT),LALT(KC_RIGHT), KC_UP, KC_DOWN,KC_ENT, KC_SPC ), @@ -96,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RCTL(KC_L), RCTL(KC_W), KC_HOME, KC_UP, KC_END, LALT(KC_D), RCTL(KC_R), LALT(KC_B), KC_LEFT, KC_DOWN, KC_RIGHT, LALT(KC_F), LALT(KC_DOT), - RCTL(KC_C), RCTL(KC_U), M(SCREEN_COPY_MODE), M(SCREEN_PASTE), HYPR(KC_V), RCTL(KC_K), M(SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND), + RCTL(KC_C), RCTL(KC_U), M(SCREEN_COPY_MODE), M(SCREEN_PASTE), MEH(KC_V), RCTL(KC_K), M(SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND), // bottom row M(SCREEN_TAB_LEFT), M(SCREEN_TAB_RIGHT), M(SCREEN_NEW_TAB), KC_TRNS, KC_TRNS, // thumb cluster @@ -187,21 +188,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SYMBOL] = KEYMAP( // left hand - KC_NO,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, - KC_TRNS,KC_TRNS, M(OPEN_CLOSE_PAREN), KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS, M(OPEN_CLOSE_BRACKET), KC_LBRC, KC_RBRC, M(OPEN_CLOSE_DOUBLE_QUOTE), - KC_TRNS,M(SEMICOLON_NEWLINE),M(OPEN_CLOSE_CURLY), KC_LCBR, KC_RCBR, M(OPEN_CLOSE_SINGLE_QUOTE),KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, // right hand - KC_LPRN, KC_RPRN, KC_LBRC, KC_RBRC, KC_LCBR, KC_RCBR, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PLUS, KC_AMPR, KC_ASTR, KC_GRAVE,KC_TILD, KC_TRNS, KC_MINS, KC_DLR, KC_PERC, KC_CIRC, KC_PIPE, KC_TRNS, KC_TRNS, KC_EQUAL,KC_EXLM, KC_AT, KC_HASH, KC_TRNS, KC_TRNS, - KC_LBRC, KC_RBRC, TD(TD_BRK_LEFT), TD(TD_BRK_RIGHT), KC_TRNS, - KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + M(SEMICOLON_NEWLINE), M(END_NEWLINE), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), @@ -229,7 +230,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SHORTCUTS] = KEYMAP( // left hand - KC_NO, HYPR(KC_F1), HYPR(KC_F2), HYPR(KC_F3), HYPR(KC_F4), HYPR(KC_F5), HYPR(KC_F6), + KC_NO, MEH(KC_F1), MEH(KC_F2), MEH(KC_F3), MEH(KC_F4), MEH(KC_F5), MEH(KC_F6), KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, @@ -238,17 +239,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, // right hand - HYPR(KC_F7), HYPR(KC_F8), HYPR(KC_F9), HYPR(KC_F10), HYPR(KC_F11), HYPR(KC_F12), M(SWITCH_NDS), - KC_TRNS, HYPR(KC_A), HYPR(KC_B), HYPR(KC_C), HYPR(KC_D), HYPR(KC_E), HYPR(KC_F), - HYPR(KC_G), HYPR(KC_H), HYPR(KC_I), HYPR(KC_J), HYPR(KC_K), HYPR(KC_L), - KC_TRNS, HYPR(KC_M), HYPR(KC_N), HYPR(KC_O), HYPR(KC_P), HYPR(KC_Q), HYPR(KC_R), - LALT(KC_LEFT),LALT(KC_RIGHT),KC_F5, LCTL(LGUI(KC_LEFT)), LCTL(LGUI(KC_RIGHT)), + MEH(KC_F7), MEH(KC_F8), MEH(KC_F9), MEH(KC_F10), MEH(KC_F11), MEH(KC_F12), M(SWITCH_NDS), + KC_TRNS, MEH(KC_A), MEH(KC_B), MEH(KC_C), MEH(KC_D), MEH(KC_E), MEH(KC_F), + MEH(KC_G), MEH(KC_H), MEH(KC_I), MEH(KC_J), MEH(KC_K), MEH(KC_L), + KC_TRNS, MEH(KC_M), MEH(KC_N), MEH(KC_O), MEH(KC_P), MEH(KC_Q), MEH(KC_R), + KC_TRNS, KC_TRNS,KC_F5, LCTL(LGUI(KC_LEFT)), LCTL(LGUI(KC_RIGHT)), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ), +[MOUSE] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_BTN1, KC_BTN2 +), + }; From 78a1dc84dd8ac98eac6bc36d3014dea7ab300c1a Mon Sep 17 00:00:00 2001 From: lucwastiaux Date: Sat, 5 Nov 2016 11:58:23 +0800 Subject: [PATCH 065/727] updated readme --- keyboards/ergodox/keymaps/dvorak_programmer/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/README.md b/keyboards/ergodox/keymaps/dvorak_programmer/README.md index 76eb50ec29..931bc48960 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/README.md +++ b/keyboards/ergodox/keymaps/dvorak_programmer/README.md @@ -21,4 +21,5 @@ Updates 2016/11/05: * removed brackets anywhere but in brackets layer * added mouse layer back in -* replaced all HYPR with MEH \ No newline at end of file +* replaced all HYPR with MEH +* put semicolon-newline and end-newline on symbol layer \ No newline at end of file From b8e204322ad8b067dc11b03668f0d32c67440b84 Mon Sep 17 00:00:00 2001 From: lucwastiaux Date: Sat, 5 Nov 2016 12:07:33 +0800 Subject: [PATCH 066/727] added more shortcut keys --- .../ergodox/keymaps/dvorak_programmer/README.md | 4 ++-- .../ergodox/keymaps/dvorak_programmer/keymap.c | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/README.md b/keyboards/ergodox/keymaps/dvorak_programmer/README.md index 931bc48960..63896909cc 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/README.md +++ b/keyboards/ergodox/keymaps/dvorak_programmer/README.md @@ -21,5 +21,5 @@ Updates 2016/11/05: * removed brackets anywhere but in brackets layer * added mouse layer back in -* replaced all HYPR with MEH -* put semicolon-newline and end-newline on symbol layer \ No newline at end of file +* put semicolon-newline and end-newline on symbol layer +* replaced all HYPR with MEH, added more shortcut keys \ No newline at end of file diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c index ab9f2389b9..38359128f9 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c +++ b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c @@ -235,18 +235,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS, - KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, + MEH(KC_0),MEH(KC_1), + MEH(KC_2), + MEH(KC_3),MEH(KC_4),MEH(KC_5), // right hand MEH(KC_F7), MEH(KC_F8), MEH(KC_F9), MEH(KC_F10), MEH(KC_F11), MEH(KC_F12), M(SWITCH_NDS), KC_TRNS, MEH(KC_A), MEH(KC_B), MEH(KC_C), MEH(KC_D), MEH(KC_E), MEH(KC_F), MEH(KC_G), MEH(KC_H), MEH(KC_I), MEH(KC_J), MEH(KC_K), MEH(KC_L), KC_TRNS, MEH(KC_M), MEH(KC_N), MEH(KC_O), MEH(KC_P), MEH(KC_Q), MEH(KC_R), - KC_TRNS, KC_TRNS,KC_F5, LCTL(LGUI(KC_LEFT)), LCTL(LGUI(KC_RIGHT)), - KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS + MEH(KC_S), MEH(KC_T), MEH(KC_U), MEH(KC_V), MEH(KC_X), + MEH(KC_6), MEH(KC_7), + MEH(KC_8), + MEH(KC_9), MEH(KC_Y), MEH(KC_Z) ), From c06e2486abda43205a490fc6b233f72f34667857 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sat, 5 Nov 2016 22:45:21 +0200 Subject: [PATCH 067/727] Increase the infinity60 system tick frequency --- keyboards/infinity60/chconf.h | 2 +- keyboards/infinity60/matrix.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/keyboards/infinity60/chconf.h b/keyboards/infinity60/chconf.h index 43c845739a..d9114ec858 100644 --- a/keyboards/infinity60/chconf.h +++ b/keyboards/infinity60/chconf.h @@ -48,7 +48,7 @@ * @details Frequency of the system timer that drives the system ticks. This * setting also defines the system tick time unit. */ -#define CH_CFG_ST_FREQUENCY 1000 +#define CH_CFG_ST_FREQUENCY 100000 /** * @brief Time delta constant for the tick-less mode. diff --git a/keyboards/infinity60/matrix.c b/keyboards/infinity60/matrix.c index 62c165aa53..d2f1852885 100644 --- a/keyboards/infinity60/matrix.c +++ b/keyboards/infinity60/matrix.c @@ -96,7 +96,12 @@ uint8_t matrix_scan(void) } #endif - wait_us(1); // need wait to settle pin state + // need wait to settle pin state + // if you wait too short, or have a too high update rate + // the keyboard might freeze, or there might not be enough + // processing power to update the LCD screen properly. + // 20us, or two ticks at 100000Hz seems to be OK + wait_us(20); // read col data data = (palReadPort(GPIOD)>>1); From 7aa31ad338325477199f752ac3e344a6ab9b27d0 Mon Sep 17 00:00:00 2001 From: Potiguar Faga Date: Tue, 8 Nov 2016 13:32:04 -0200 Subject: [PATCH 068/727] Add brazilian ABNT2 keymap --- quantum/keymap_extras/keymap_br_abnt2.h | 58 +++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 quantum/keymap_extras/keymap_br_abnt2.h diff --git a/quantum/keymap_extras/keymap_br_abnt2.h b/quantum/keymap_extras/keymap_br_abnt2.h new file mode 100644 index 0000000000..0df177721d --- /dev/null +++ b/quantum/keymap_extras/keymap_br_abnt2.h @@ -0,0 +1,58 @@ +#ifndef KEYMAP_BR_ABNT2_H +#define KEYMAP_BR_ABNT2_H + +#include "keymap_common.h" + +/* Scan codes for the Brazilian ABNT2 keyboard layout */ + +#define BR_CCDL KC_SCLN // Ç same scancode as ;: on US layout +#define BR_SCLN KC_SLSH // ;: same scancode as /? on US layout +#define BR_QUOT KC_GRV // '" same scancode as `~ on US layout +#define BR_TILD KC_QUOT // ~^ dead keys, same scancode as '" on US layout +#define BR_ACUT KC_LBRC // ´` dead keys, same scancode as [{ on US layout +#define BR_LBRC KC_RBRC // [{ same scancode as ]} on US layout +#define BR_RBRC KC_BSLS // ]} same scancode as \| on US layout +#define BR_BSLS KC_NUBS // \| uses the non-US hash scancode (#~, sometimes §±) +#define BR_SLSH KC_INT1 // /? uses the INTL1 scancode + +#define BR_COLN LSFT(BR_SCLN) // shifted : +#define BR_DQT LSFT(BR_QUOT) // shifted " +#define BR_CIRC LSFT(BR_TILD) // shifted ^ (dead key) +#define BR_GRAV LSFT(BR_ACUT) // shifted ` (dead key) +#define BR_LCBR LSFT(BR_LBRC) // shifted { +#define BR_RCBR LSFT(BR_RBRC) // shifted } +#define BR_PIPE LSFT(BR_BSLS) // shifted | +#define BR_QUES LSFT(BR_SLSH) // shifted ? +#define BR_TRMA LSFT(KC_6) // shifted ¨ (dead key - trema accent) + +// On the ABNT2 the keypad comma and the keypad dot scancodes are switched +// (presumably because in Brazil comma is used as the decimal separator) +#define BR_KPDT KC_KP_COMMA // keypad . +#define BR_KPCM KC_KP_DOT // keypad , + +#define BR_1UP LALT(KC_1) // 1 superscript ¹ alt+1 +#define BR_2UP LALT(KC_2) // 2 superscript ² alt+2 +#define BR_3UP LALT(KC_3) // 3 superscript ³ alt+3 +#define BR_PND LALT(KC_4) // Pound sign £ alt+4 +#define BR_CENT LALT(KC_5) // Cent sign ¢ alt+5 +#define BR_NOT LALT(KC_6) // Not sign ¬ alt+6 +#define BR_SECT LALT(KC_EQL) // Section sign § alt+= +#define BR_FORD LALT(BR_LBRC) // Feminine Ordinal Sign ª alt+[ +#define BR_MORD LALT(BR_RBRC) // Masculine Ordinal Sign º alt+] +#define BR_DGRE LALT(BR_SLSH) // Degree sign ° alt+/ + +#define BR_EURO LALT(KC_E) // Euro sign € alt+e +#define BR_NDTD LALT(BR_TILD) // Non-dead key tilde ~ alt+~ +#define BR_NDAC LALT(BR_ACUT) // Non-dead key acute accent ´ alt+´ +#define BR_NDGV LALT(BR_QUOT) // Non-dead key grave accent ` alt+' +#define BR_NDCR LALT(BR_CIRC) // Non-dead key circumflex accent ^ alt+^ (alt+shift+~) +#define BR_NDTR LALT(BR_TRMA) // Non-dead key trema accent ¨ alt+¨ (alt+shift+6) + +// For 101-key keyboard layouts, the ABNT2 layout allows +// the slash and question mark to be typed using alt+q and alt+w. +// The shortcuts are provided here for completeness' sake, +// but it's recommended to use BR_SLSH and BR_QUES instead +#define BR_ASLS LALT(KC_Q) +#define BR_AQST LALT(KC_W) + +#endif From 6e27f6fbde47804035d508eb84690ed7ee9acee7 Mon Sep 17 00:00:00 2001 From: climbalima Date: Thu, 10 Nov 2016 18:19:13 -0500 Subject: [PATCH 069/727] Changes to be committed: new file: keyboards/lets_splitv2/Makefile new file: keyboards/lets_splitv2/config.h new file: keyboards/lets_splitv2/i2c.c new file: keyboards/lets_splitv2/i2c.h new file: keyboards/lets_splitv2/imgs/split-keyboard-i2c-schematic.png new file: keyboards/lets_splitv2/imgs/split-keyboard-serial-schematic.png new file: keyboards/lets_splitv2/keymaps/default/keymap.c new file: keyboards/lets_splitv2/lets_split.c new file: keyboards/lets_splitv2/lets_split.h new file: keyboards/lets_splitv2/matrix.c new file: keyboards/lets_splitv2/pro_micro.h new file: keyboards/lets_splitv2/readme.md new file: keyboards/lets_splitv2/serial.c new file: keyboards/lets_splitv2/serial.h new file: keyboards/lets_splitv2/split_util.c new file: keyboards/lets_splitv2/split_util.h new file: keyboards/maxipad/Makefile new file: keyboards/maxipad/config.h new file: keyboards/maxipad/keymaps/default/Makefile new file: keyboards/maxipad/keymaps/default/config.h new file: keyboards/maxipad/keymaps/default/keymap.c new file: keyboards/maxipad/keymaps/default/readme.md new file: keyboards/maxipad/maxipad.c new file: keyboards/maxipad/maxipad.h new file: keyboards/maxipad/readme.md --- keyboards/lets_split/Makefile | 2 +- keyboards/lets_split/config.h | 6 +- keyboards/lets_split/keymaps/default/keymap.c | 65 +--- keyboards/lets_split/lets_split.h | 8 +- keyboards/lets_splitv2/Makefile | 78 ++++ keyboards/lets_splitv2/config.h | 98 +++++ keyboards/lets_splitv2/i2c.c | 159 ++++++++ keyboards/lets_splitv2/i2c.h | 31 ++ .../imgs/split-keyboard-i2c-schematic.png | Bin 0 -> 26565 bytes .../imgs/split-keyboard-serial-schematic.png | Bin 0 -> 19487 bytes .../lets_splitv2/keymaps/default/keymap.c | 159 ++++++++ keyboards/lets_splitv2/lets_split.c | 30 ++ keyboards/lets_splitv2/lets_split.h | 25 ++ keyboards/lets_splitv2/matrix.c | 311 +++++++++++++++ keyboards/lets_splitv2/pro_micro.h | 362 ++++++++++++++++++ keyboards/lets_splitv2/readme.md | 102 +++++ keyboards/lets_splitv2/serial.c | 225 +++++++++++ keyboards/lets_splitv2/serial.h | 26 ++ keyboards/lets_splitv2/split_util.c | 76 ++++ keyboards/lets_splitv2/split_util.h | 22 ++ keyboards/maxipad/Makefile | 75 ++++ keyboards/maxipad/config.h | 162 ++++++++ keyboards/maxipad/keymaps/default/Makefile | 21 + keyboards/maxipad/keymaps/default/config.h | 8 + keyboards/maxipad/keymaps/default/keymap.c | 54 +++ keyboards/maxipad/keymaps/default/readme.md | 1 + keyboards/maxipad/maxipad.c | 28 ++ keyboards/maxipad/maxipad.h | 25 ++ keyboards/maxipad/readme.md | 28 ++ 29 files changed, 2119 insertions(+), 68 deletions(-) create mode 100644 keyboards/lets_splitv2/Makefile create mode 100644 keyboards/lets_splitv2/config.h create mode 100644 keyboards/lets_splitv2/i2c.c create mode 100644 keyboards/lets_splitv2/i2c.h create mode 100644 keyboards/lets_splitv2/imgs/split-keyboard-i2c-schematic.png create mode 100644 keyboards/lets_splitv2/imgs/split-keyboard-serial-schematic.png create mode 100644 keyboards/lets_splitv2/keymaps/default/keymap.c create mode 100644 keyboards/lets_splitv2/lets_split.c create mode 100644 keyboards/lets_splitv2/lets_split.h create mode 100644 keyboards/lets_splitv2/matrix.c create mode 100644 keyboards/lets_splitv2/pro_micro.h create mode 100644 keyboards/lets_splitv2/readme.md create mode 100644 keyboards/lets_splitv2/serial.c create mode 100644 keyboards/lets_splitv2/serial.h create mode 100644 keyboards/lets_splitv2/split_util.c create mode 100644 keyboards/lets_splitv2/split_util.h create mode 100644 keyboards/maxipad/Makefile create mode 100644 keyboards/maxipad/config.h create mode 100644 keyboards/maxipad/keymaps/default/Makefile create mode 100644 keyboards/maxipad/keymaps/default/config.h create mode 100644 keyboards/maxipad/keymaps/default/keymap.c create mode 100644 keyboards/maxipad/keymaps/default/readme.md create mode 100644 keyboards/maxipad/maxipad.c create mode 100644 keyboards/maxipad/maxipad.h create mode 100644 keyboards/maxipad/readme.md diff --git a/keyboards/lets_split/Makefile b/keyboards/lets_split/Makefile index b9f07636be..982cfc591b 100644 --- a/keyboards/lets_split/Makefile +++ b/keyboards/lets_split/Makefile @@ -67,7 +67,7 @@ AUDIO_ENABLE ?= yes # Audio output on port C6 UNICODE_ENABLE ?= no # Unicode BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - +USE_I2C ?= yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h index 6f90997ab4..bf618704cd 100644 --- a/keyboards/lets_split/config.h +++ b/keyboards/lets_split/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . #define PRODUCT_ID 0x3060 #define DEVICE_VER 0x0001 #define MANUFACTURER Wootpatoot -#define PRODUCT Lets Split +#define PRODUCT Lets Split v2 #define DESCRIPTION A split keyboard for the cheap makers /* key matrix size */ @@ -34,8 +34,8 @@ along with this program. If not, see . #define MATRIX_COLS 6 // wiring of each half -#define MATRIX_ROW_PINS { B5, B4, E6, D7 } -#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 } +#define MATRIX_ROW_PINS { D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 } #define CATERINA_BOOTLOADER diff --git a/keyboards/lets_split/keymaps/default/keymap.c b/keyboards/lets_split/keymaps/default/keymap.c index 0d2d94b672..8c8466ebd5 100644 --- a/keyboards/lets_split/keymaps/default/keymap.c +++ b/keyboards/lets_split/keymaps/default/keymap.c @@ -42,64 +42,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_QWERTY] = KEYMAP( \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ - ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ + KC_LCTL, _LOWER, KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, KC_LSFT, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ ), -/* Colemak - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_COLEMAK] = KEYMAP( \ - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ - KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ - ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -), - -/* Dvorak - * ,-----------------------------------------------------------------------------------. - * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | O | E | U | I | D | H | T | N | S | / | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_DVORAK] = KEYMAP( \ - KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ - KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ - KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ - ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -), - -/* Lower - * ,-----------------------------------------------------------------------------------. - * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ [_LOWER] = KEYMAP( \ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ + _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ ), /* Raise @@ -117,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ + _______, _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ ), /* Adjust (Lower + Raise) @@ -131,14 +84,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ -[_ADJUST] = KEYMAP( \ - _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ - _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ -) - - }; #ifdef AUDIO_ENABLE diff --git a/keyboards/lets_split/lets_split.h b/keyboards/lets_split/lets_split.h index fe7ae07679..04844ed639 100644 --- a/keyboards/lets_split/lets_split.h +++ b/keyboards/lets_split/lets_split.h @@ -6,10 +6,10 @@ void promicro_bootloader_jmp(bool program); #define KEYMAP( \ - k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \ - k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \ - k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \ - k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \ + k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ + k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ + k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ + k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \ ) \ { \ { k00, k01, k02, k03, k04, k05 }, \ diff --git a/keyboards/lets_splitv2/Makefile b/keyboards/lets_splitv2/Makefile new file mode 100644 index 0000000000..982cfc591b --- /dev/null +++ b/keyboards/lets_splitv2/Makefile @@ -0,0 +1,78 @@ +SRC += matrix.c \ + i2c.c \ + split_util.c \ + serial.c + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= yes # Audio output on port C6 +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +USE_I2C ?= yes +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend + +CUSTOM_MATRIX = yes + +ifndef QUANTUM_DIR + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/lets_splitv2/config.h b/keyboards/lets_splitv2/config.h new file mode 100644 index 0000000000..bf618704cd --- /dev/null +++ b/keyboards/lets_splitv2/config.h @@ -0,0 +1,98 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x3060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Wootpatoot +#define PRODUCT Lets Split v2 +#define DESCRIPTION A split keyboard for the cheap makers + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 } + +#define CATERINA_BOOTLOADER + +// #define USE_I2C + +// #define EE_HANDS + +#define I2C_MASTER_LEFT +// #define I2C_MASTER_RIGHT + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* ws2812 RGB LED */ +#define ws2812_PORTREG PORTD +#define ws2812_DDRREG DDRD +#define ws2812_pin PD1 +#define RGBLED_NUM 28 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif \ No newline at end of file diff --git a/keyboards/lets_splitv2/i2c.c b/keyboards/lets_splitv2/i2c.c new file mode 100644 index 0000000000..c72789403e --- /dev/null +++ b/keyboards/lets_splitv2/i2c.c @@ -0,0 +1,159 @@ +#include +#include +#include +#include +#include +#include +#include "i2c.h" + +// Limits the amount of we wait for any one i2c transaction. +// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is +// 9 bits, a single transaction will take around 90μs to complete. +// +// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit +// poll loop takes at least 8 clock cycles to execute +#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8 + +#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE) + +volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE]; + +static volatile uint8_t slave_buffer_pos; +static volatile bool slave_has_register_set = false; + +// Wait for an i2c operation to finish +inline static +void i2c_delay(void) { + uint16_t lim = 0; + while(!(TWCR & (1<10. + // Check datasheets for more info. + TWBR = ((F_CPU/SCL_CLOCK)-16)/2; +} + +// Start a transaction with the given i2c slave address. The direction of the +// transfer is set with I2C_READ and I2C_WRITE. +// returns: 0 => success +// 1 => error +uint8_t i2c_master_start(uint8_t address) { + TWCR = (1< slave ACK +// 1 => slave NACK +uint8_t i2c_master_write(uint8_t data) { + TWDR = data; + TWCR = (1<= SLAVE_BUFFER_SIZE ) { + ack = 0; + slave_buffer_pos = 0; + } + slave_has_register_set = true; + } else { + i2c_slave_buffer[slave_buffer_pos] = TWDR; + BUFFER_POS_INC(); + } + break; + + case TW_ST_SLA_ACK: + case TW_ST_DATA_ACK: + // master has addressed this device as a slave transmitter and is + // requesting data. + TWDR = i2c_slave_buffer[slave_buffer_pos]; + BUFFER_POS_INC(); + break; + + case TW_BUS_ERROR: // something went wrong, reset twi state + TWCR = 0; + default: + break; + } + // Reset everything, so we are ready for the next TWI interrupt + TWCR |= (1< + +#ifndef F_CPU +#define F_CPU 16000000UL +#endif + +#define I2C_READ 1 +#define I2C_WRITE 0 + +#define I2C_ACK 1 +#define I2C_NACK 0 + +#define SLAVE_BUFFER_SIZE 0x10 + +// i2c SCL clock frequency +#define SCL_CLOCK 100000L + +extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE]; + +void i2c_master_init(void); +uint8_t i2c_master_start(uint8_t address); +void i2c_master_stop(void); +uint8_t i2c_master_write(uint8_t data); +uint8_t i2c_master_read(int); +void i2c_reset_state(void); +void i2c_slave_init(uint8_t address); + +#endif diff --git a/keyboards/lets_splitv2/imgs/split-keyboard-i2c-schematic.png b/keyboards/lets_splitv2/imgs/split-keyboard-i2c-schematic.png new file mode 100644 index 0000000000000000000000000000000000000000..8882947187b15ae4c0cf70c90725d67fb2386d87 GIT binary patch literal 26565 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.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); + #endif + persistant_default_layer_set(1UL<<_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + } + return true; +} \ No newline at end of file diff --git a/keyboards/lets_splitv2/lets_split.c b/keyboards/lets_splitv2/lets_split.c new file mode 100644 index 0000000000..574c116a75 --- /dev/null +++ b/keyboards/lets_splitv2/lets_split.c @@ -0,0 +1,30 @@ +#include "lets_split.h" + +#ifdef AUDIO_ENABLE + float tone_startup[][2] = SONG(STARTUP_SOUND); + float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + +void matrix_init_kb(void) { + + #ifdef AUDIO_ENABLE + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif + + // // green led on + // DDRD |= (1<<5); + // PORTD &= ~(1<<5); + + // // orange led on + // DDRB |= (1<<0); + // PORTB &= ~(1<<0); + + matrix_init_user(); +}; + +void shutdown_user(void) { + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} diff --git a/keyboards/lets_splitv2/lets_split.h b/keyboards/lets_splitv2/lets_split.h new file mode 100644 index 0000000000..04844ed639 --- /dev/null +++ b/keyboards/lets_splitv2/lets_split.h @@ -0,0 +1,25 @@ +#ifndef LETS_SPLIT_H +#define LETS_SPLIT_H + +#include "quantum.h" + +void promicro_bootloader_jmp(bool program); + +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ + k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ + k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ + k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \ + ) \ + { \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { k40, k41, k42, k43, k44, k45 }, \ + { k50, k51, k52, k53, k54, k55 }, \ + { k60, k61, k62, k63, k64, k65 }, \ + { k70, k71, k72, k73, k74, k75 } \ + } + +#endif \ No newline at end of file diff --git a/keyboards/lets_splitv2/matrix.c b/keyboards/lets_splitv2/matrix.c new file mode 100644 index 0000000000..1d768c59b3 --- /dev/null +++ b/keyboards/lets_splitv2/matrix.c @@ -0,0 +1,311 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +/* + * scan matrix + */ +#include +#include +#include +#include +#include +#include +#include "print.h" +#include "debug.h" +#include "util.h" +#include "matrix.h" +#include "i2c.h" +#include "serial.h" +#include "split_util.h" +#include "pro_micro.h" +#include "config.h" + +#ifndef DEBOUNCE +# define DEBOUNCE 5 +#endif + +#define ERROR_DISCONNECT_COUNT 5 + +static uint8_t debouncing = DEBOUNCE; +static const int ROWS_PER_HAND = MATRIX_ROWS/2; +static uint8_t error_count = 0; + +static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; + +/* matrix state(1:on, 0:off) */ +static matrix_row_t matrix[MATRIX_ROWS]; +static matrix_row_t matrix_debouncing[MATRIX_ROWS]; + +static matrix_row_t read_cols(void); +static void init_cols(void); +static void unselect_rows(void); +static void select_row(uint8_t row); + +__attribute__ ((weak)) +void matrix_init_quantum(void) { + matrix_init_kb(); +} + +__attribute__ ((weak)) +void matrix_scan_quantum(void) { + matrix_scan_kb(); +} + +__attribute__ ((weak)) +void matrix_init_kb(void) { + matrix_init_user(); +} + +__attribute__ ((weak)) +void matrix_scan_kb(void) { + matrix_scan_user(); +} + +__attribute__ ((weak)) +void matrix_init_user(void) { +} + +__attribute__ ((weak)) +void matrix_scan_user(void) { +} + +inline +uint8_t matrix_rows(void) +{ + return MATRIX_ROWS; +} + +inline +uint8_t matrix_cols(void) +{ + return MATRIX_COLS; +} + +void matrix_init(void) +{ + debug_enable = true; + debug_matrix = true; + debug_mouse = true; + // initialize row and col + unselect_rows(); + init_cols(); + + TX_RX_LED_INIT; + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) { + matrix[i] = 0; + matrix_debouncing[i] = 0; + } + + matrix_init_quantum(); +} + +uint8_t _matrix_scan(void) +{ + // Right hand is stored after the left in the matirx so, we need to offset it + int offset = isLeftHand ? 0 : (ROWS_PER_HAND); + + for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { + select_row(i); + _delay_us(30); // without this wait read unstable value. + matrix_row_t cols = read_cols(); + if (matrix_debouncing[i+offset] != cols) { + matrix_debouncing[i+offset] = cols; + debouncing = DEBOUNCE; + } + unselect_rows(); + } + + if (debouncing) { + if (--debouncing) { + _delay_ms(1); + } else { + for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { + matrix[i+offset] = matrix_debouncing[i+offset]; + } + } + } + + return 1; +} + +// Get rows from other half over i2c +int i2c_transaction(void) { + int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; + + int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE); + if (err) goto i2c_error; + + // start of matrix stored at 0x00 + err = i2c_master_write(0x00); + if (err) goto i2c_error; + + // Start read + err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ); + if (err) goto i2c_error; + + if (!err) { + int i; + for (i = 0; i < ROWS_PER_HAND-1; ++i) { + matrix[slaveOffset+i] = i2c_master_read(I2C_ACK); + } + matrix[slaveOffset+i] = i2c_master_read(I2C_NACK); + i2c_master_stop(); + } else { +i2c_error: // the cable is disconnceted, or something else went wrong + i2c_reset_state(); + return err; + } + + return 0; +} + +#ifndef USE_I2C +int serial_transaction(void) { + int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; + + if (serial_update_buffers()) { + return 1; + } + + for (int i = 0; i < ROWS_PER_HAND; ++i) { + matrix[slaveOffset+i] = serial_slave_buffer[i]; + } + return 0; +} +#endif + +uint8_t matrix_scan(void) +{ + int ret = _matrix_scan(); + + + +#ifdef USE_I2C + if( i2c_transaction() ) { +#else + if( serial_transaction() ) { +#endif + // turn on the indicator led when halves are disconnected + TXLED1; + + error_count++; + + if (error_count > ERROR_DISCONNECT_COUNT) { + // reset other half if disconnected + int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; + for (int i = 0; i < ROWS_PER_HAND; ++i) { + matrix[slaveOffset+i] = 0; + } + } + } else { + // turn off the indicator led on no error + TXLED0; + error_count = 0; + } + + matrix_scan_quantum(); + + return ret; +} + +void matrix_slave_scan(void) { + _matrix_scan(); + + int offset = (isLeftHand) ? 0 : (MATRIX_ROWS / 2); + +#ifdef USE_I2C + for (int i = 0; i < ROWS_PER_HAND; ++i) { + /* i2c_slave_buffer[i] = matrix[offset+i]; */ + i2c_slave_buffer[i] = matrix[offset+i]; + } +#else + for (int i = 0; i < ROWS_PER_HAND; ++i) { + serial_slave_buffer[i] = matrix[offset+i]; + } +#endif +} + +bool matrix_is_modified(void) +{ + if (debouncing) return false; + return true; +} + +inline +bool matrix_is_on(uint8_t row, uint8_t col) +{ + return (matrix[row] & ((matrix_row_t)1<> 4) + 1) &= ~_BV(col_pins[x] & 0xF); + _SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF); + } +} + +static matrix_row_t read_cols(void) +{ + matrix_row_t result = 0; + for(int x = 0; x < MATRIX_COLS; x++) { + result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x); + } + return result; +} + +static void unselect_rows(void) +{ + for(int x = 0; x < ROWS_PER_HAND; x++) { + _SFR_IO8((row_pins[x] >> 4) + 1) &= ~_BV(row_pins[x] & 0xF); + _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF); + } +} + +static void select_row(uint8_t row) +{ + _SFR_IO8((row_pins[row] >> 4) + 1) |= _BV(row_pins[row] & 0xF); + _SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF); +} diff --git a/keyboards/lets_splitv2/pro_micro.h b/keyboards/lets_splitv2/pro_micro.h new file mode 100644 index 0000000000..09e219b7b1 --- /dev/null +++ b/keyboards/lets_splitv2/pro_micro.h @@ -0,0 +1,362 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +// Workaround for wrong definitions in "iom32u4.h". +// This should be fixed in the AVR toolchain. +#undef UHCON +#undef UHINT +#undef UHIEN +#undef UHADDR +#undef UHFNUM +#undef UHFNUML +#undef UHFNUMH +#undef UHFLEN +#undef UPINRQX +#undef UPINTX +#undef UPNUM +#undef UPRST +#undef UPCONX +#undef UPCFG0X +#undef UPCFG1X +#undef UPSTAX +#undef UPCFG2X +#undef UPIENX +#undef UPDATX +#undef TCCR2A +#undef WGM20 +#undef WGM21 +#undef COM2B0 +#undef COM2B1 +#undef COM2A0 +#undef COM2A1 +#undef TCCR2B +#undef CS20 +#undef CS21 +#undef CS22 +#undef WGM22 +#undef FOC2B +#undef FOC2A +#undef TCNT2 +#undef TCNT2_0 +#undef TCNT2_1 +#undef TCNT2_2 +#undef TCNT2_3 +#undef TCNT2_4 +#undef TCNT2_5 +#undef TCNT2_6 +#undef TCNT2_7 +#undef OCR2A +#undef OCR2_0 +#undef OCR2_1 +#undef OCR2_2 +#undef OCR2_3 +#undef OCR2_4 +#undef OCR2_5 +#undef OCR2_6 +#undef OCR2_7 +#undef OCR2B +#undef OCR2_0 +#undef OCR2_1 +#undef OCR2_2 +#undef OCR2_3 +#undef OCR2_4 +#undef OCR2_5 +#undef OCR2_6 +#undef OCR2_7 + +#define NUM_DIGITAL_PINS 30 +#define NUM_ANALOG_INPUTS 12 + +#define TX_RX_LED_INIT DDRD |= (1<<5), DDRB |= (1<<0) +#define TXLED0 PORTD |= (1<<5) +#define TXLED1 PORTD &= ~(1<<5) +#define RXLED0 PORTB |= (1<<0) +#define RXLED1 PORTB &= ~(1<<0) + +static const uint8_t SDA = 2; +static const uint8_t SCL = 3; +#define LED_BUILTIN 13 + +// Map SPI port to 'new' pins D14..D17 +static const uint8_t SS = 17; +static const uint8_t MOSI = 16; +static const uint8_t MISO = 14; +static const uint8_t SCK = 15; + +// Mapping of analog pins as digital I/O +// A6-A11 share with digital pins +static const uint8_t A0 = 18; +static const uint8_t A1 = 19; +static const uint8_t A2 = 20; +static const uint8_t A3 = 21; +static const uint8_t A4 = 22; +static const uint8_t A5 = 23; +static const uint8_t A6 = 24; // D4 +static const uint8_t A7 = 25; // D6 +static const uint8_t A8 = 26; // D8 +static const uint8_t A9 = 27; // D9 +static const uint8_t A10 = 28; // D10 +static const uint8_t A11 = 29; // D12 + +#define digitalPinToPCICR(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0)) +#define digitalPinToPCICRbit(p) 0 +#define digitalPinToPCMSK(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0)) +#define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4)))))) + +// __AVR_ATmega32U4__ has an unusual mapping of pins to channels +extern const uint8_t PROGMEM analog_pin_to_channel_PGM[]; +#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) ) + +#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT))))) + +#ifdef ARDUINO_MAIN + +// On the Arduino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA32U4 / ARDUINO LEONARDO +// +// D0 PD2 RXD1/INT2 +// D1 PD3 TXD1/INT3 +// D2 PD1 SDA SDA/INT1 +// D3# PD0 PWM8/SCL OC0B/SCL/INT0 +// D4 A6 PD4 ADC8 +// D5# PC6 ??? OC3A/#OC4A +// D6# A7 PD7 FastPWM #OC4D/ADC10 +// D7 PE6 INT6/AIN0 +// +// D8 A8 PB4 ADC11/PCINT4 +// D9# A9 PB5 PWM16 OC1A/#OC4B/ADC12/PCINT5 +// D10# A10 PB6 PWM16 OC1B/0c4B/ADC13/PCINT6 +// D11# PB7 PWM8/16 0C0A/OC1C/#RTS/PCINT7 +// D12 A11 PD6 T1/#OC4D/ADC9 +// D13# PC7 PWM10 CLK0/OC4A +// +// A0 D18 PF7 ADC7 +// A1 D19 PF6 ADC6 +// A2 D20 PF5 ADC5 +// A3 D21 PF4 ADC4 +// A4 D22 PF1 ADC1 +// A5 D23 PF0 ADC0 +// +// New pins D14..D17 to map SPI port to digital pins +// +// MISO D14 PB3 MISO,PCINT3 +// SCK D15 PB1 SCK,PCINT1 +// MOSI D16 PB2 MOSI,PCINT2 +// SS D17 PB0 RXLED,SS/PCINT0 +// +// Connected LEDs on board for TX and RX +// TXLED D24 PD5 XCK1 +// RXLED D17 PB0 +// HWB PE2 HWB + +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, + (uint16_t) &DDRE, + (uint16_t) &DDRF, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, + (uint16_t) &PORTE, + (uint16_t) &PORTF, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, + (uint16_t) &PINE, + (uint16_t) &PINF, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PD, // D0 - PD2 + PD, // D1 - PD3 + PD, // D2 - PD1 + PD, // D3 - PD0 + PD, // D4 - PD4 + PC, // D5 - PC6 + PD, // D6 - PD7 + PE, // D7 - PE6 + + PB, // D8 - PB4 + PB, // D9 - PB5 + PB, // D10 - PB6 + PB, // D11 - PB7 + PD, // D12 - PD6 + PC, // D13 - PC7 + + PB, // D14 - MISO - PB3 + PB, // D15 - SCK - PB1 + PB, // D16 - MOSI - PB2 + PB, // D17 - SS - PB0 + + PF, // D18 - A0 - PF7 + PF, // D19 - A1 - PF6 + PF, // D20 - A2 - PF5 + PF, // D21 - A3 - PF4 + PF, // D22 - A4 - PF1 + PF, // D23 - A5 - PF0 + + PD, // D24 - PD5 + PD, // D25 / D6 - A7 - PD7 + PB, // D26 / D8 - A8 - PB4 + PB, // D27 / D9 - A9 - PB5 + PB, // D28 / D10 - A10 - PB6 + PD, // D29 / D12 - A11 - PD6 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(2), // D0 - PD2 + _BV(3), // D1 - PD3 + _BV(1), // D2 - PD1 + _BV(0), // D3 - PD0 + _BV(4), // D4 - PD4 + _BV(6), // D5 - PC6 + _BV(7), // D6 - PD7 + _BV(6), // D7 - PE6 + + _BV(4), // D8 - PB4 + _BV(5), // D9 - PB5 + _BV(6), // D10 - PB6 + _BV(7), // D11 - PB7 + _BV(6), // D12 - PD6 + _BV(7), // D13 - PC7 + + _BV(3), // D14 - MISO - PB3 + _BV(1), // D15 - SCK - PB1 + _BV(2), // D16 - MOSI - PB2 + _BV(0), // D17 - SS - PB0 + + _BV(7), // D18 - A0 - PF7 + _BV(6), // D19 - A1 - PF6 + _BV(5), // D20 - A2 - PF5 + _BV(4), // D21 - A3 - PF4 + _BV(1), // D22 - A4 - PF1 + _BV(0), // D23 - A5 - PF0 + + _BV(5), // D24 - PD5 + _BV(7), // D25 / D6 - A7 - PD7 + _BV(4), // D26 / D8 - A8 - PB4 + _BV(5), // D27 / D9 - A9 - PB5 + _BV(6), // D28 / D10 - A10 - PB6 + _BV(6), // D29 / D12 - A11 - PD6 +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + TIMER0B, /* 3 */ + NOT_ON_TIMER, + TIMER3A, /* 5 */ + TIMER4D, /* 6 */ + NOT_ON_TIMER, + + NOT_ON_TIMER, + TIMER1A, /* 9 */ + TIMER1B, /* 10 */ + TIMER0A, /* 11 */ + + NOT_ON_TIMER, + TIMER4A, /* 13 */ + + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, +}; + +const uint8_t PROGMEM analog_pin_to_channel_PGM[] = { + 7, // A0 PF7 ADC7 + 6, // A1 PF6 ADC6 + 5, // A2 PF5 ADC5 + 4, // A3 PF4 ADC4 + 1, // A4 PF1 ADC1 + 0, // A5 PF0 ADC0 + 8, // A6 D4 PD4 ADC8 + 10, // A7 D6 PD7 ADC10 + 11, // A8 D8 PB4 ADC11 + 12, // A9 D9 PB5 ADC12 + 13, // A10 D10 PB6 ADC13 + 9 // A11 D12 PD6 ADC9 +}; + +#endif /* ARDUINO_MAIN */ + +// These serial port names are intended to allow libraries and architecture-neutral +// sketches to automatically default to the correct port name for a particular type +// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, +// the first hardware serial port whose RX/TX pins are not dedicated to another use. +// +// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor +// +// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial +// +// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library +// +// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. +// +// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX +// pins are NOT connected to anything by default. +#define SERIAL_PORT_MONITOR Serial +#define SERIAL_PORT_USBVIRTUAL Serial +#define SERIAL_PORT_HARDWARE Serial1 +#define SERIAL_PORT_HARDWARE_OPEN Serial1 + +#endif /* Pins_Arduino_h */ diff --git a/keyboards/lets_splitv2/readme.md b/keyboards/lets_splitv2/readme.md new file mode 100644 index 0000000000..73fdb0f789 --- /dev/null +++ b/keyboards/lets_splitv2/readme.md @@ -0,0 +1,102 @@ +Let's Split +====== + +This readme and most of the code are from https://github.com/ahtn/tmk_keyboard/ + +Split keyboard firmware for Arduino Pro Micro or other ATmega32u4 +based boards. + +Features +-------- + +Some features supported by the firmware: + +* Either half can connect to the computer via USB, or both halves can be used + independently. +* You only need 3 wires to connect the two halves. Two for VCC and GND and one + for serial communication. +* Optional support for I2C connection between the two halves if for some + reason you require a faster connection between the two halves. Note this + requires an extra wire between halves and pull-up resistors on the data lines. + +Required Hardware +----------------- + +Apart from diodes and key switches for the keyboard matrix in each half, you +will need: + +* 2 Arduino Pro Micro's. You can find theses on aliexpress for ≈3.50USD each. +* 2 TRS sockets +* 1 TRS cable. + +Alternatively, you can use any sort of cable and socket that has at least 3 +wires. If you want to use I2C to communicate between halves, you will need a +cable with at least 4 wires and 2x 4.7kΩ pull-up resistors + +Optional Hardware +----------------- + +A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and turned on via `AUDIO_ENABLE`. + +Wiring +------ + +The 3 wires of the TRS cable need to connect GND, VCC, and digital pin 3 (i.e. +PD0 on the ATmega32u4) between the two Pro Micros. + +Then wire your key matrix to any of the remaining 17 IO pins of the pro micro +and modify the `matrix.c` accordingly. + +The wiring for serial: + +![serial wiring](imgs/split-keyboard-serial-schematic.png) + +The wiring for i2c: + +![i2c wiring](imgs/split-keyboard-i2c-schematic.png) + +The pull-up resistors may be placed on either half. It is also possible +to use 4 resistors and have the pull-ups in both halves, but this is +unnecessary in simple use cases. + +Notes on Software Configuration +------------------------------- + +Configuring the firmware is similar to any other TMK project. One thing +to note is that `MATIX_ROWS` in `config.h` is the total number of rows between +the two halves, i.e. if your split keyboard has 4 rows in each half, then +`MATRIX_ROWS=8`. + +Also the current implementation assumes a maximum of 8 columns, but it would +not be very difficult to adapt it to support more if required. + + +Flashing +-------- + +If you define `EE_HANDS` in your `config.h`, you will need to set the +EEPROM for the left and right halves. The EEPROM is used to store whether the +half is left handed or right handed. This makes it so that the same firmware +file will run on both hands instead of having to flash left and right handed +versions of the firmware to each half. To flash the EEPROM file for the left +half run: +``` +make eeprom-left +``` +and similarly for right half +``` +make eeprom-right +``` + +After you have flashed the EEPROM for the first time, you then need to program +the flash memory: +``` +make program +``` +Note that you need to program both halves, but you have the option of using +different keymaps for each half. You could program the left half with a QWERTY +layout and the right half with a Colemak layout. Then if you connect the left +half to a computer by USB the keyboard will use QWERTY and Colemak when the +right half is connected. + + diff --git a/keyboards/lets_splitv2/serial.c b/keyboards/lets_splitv2/serial.c new file mode 100644 index 0000000000..f439c2f20b --- /dev/null +++ b/keyboards/lets_splitv2/serial.c @@ -0,0 +1,225 @@ +/* + * WARNING: be careful changing this code, it is very timing dependent + */ + +#ifndef F_CPU +#define F_CPU 16000000 +#endif + +#include +#include +#include +#include + +#include "serial.h" + +// Serial pulse period in microseconds. Its probably a bad idea to lower this +// value. +#define SERIAL_DELAY 24 + +uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0}; +uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0}; + +#define SLAVE_DATA_CORRUPT (1<<0) +volatile uint8_t status = 0; + +inline static +void serial_delay(void) { + _delay_us(SERIAL_DELAY); +} + +inline static +void serial_output(void) { + SERIAL_PIN_DDR |= SERIAL_PIN_MASK; +} + +// make the serial pin an input with pull-up resistor +inline static +void serial_input(void) { + SERIAL_PIN_DDR &= ~SERIAL_PIN_MASK; + SERIAL_PIN_PORT |= SERIAL_PIN_MASK; +} + +inline static +uint8_t serial_read_pin(void) { + return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK); +} + +inline static +void serial_low(void) { + SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK; +} + +inline static +void serial_high(void) { + SERIAL_PIN_PORT |= SERIAL_PIN_MASK; +} + +void serial_master_init(void) { + serial_output(); + serial_high(); +} + +void serial_slave_init(void) { + serial_input(); + + // Enable INT0 + EIMSK |= _BV(INT0); + // Trigger on falling edge of INT0 + EICRA &= ~(_BV(ISC00) | _BV(ISC01)); +} + +// Used by the master to synchronize timing with the slave. +static +void sync_recv(void) { + serial_input(); + // This shouldn't hang if the slave disconnects because the + // serial line will float to high if the slave does disconnect. + while (!serial_read_pin()); + serial_delay(); +} + +// Used by the slave to send a synchronization signal to the master. +static +void sync_send(void) { + serial_output(); + + serial_low(); + serial_delay(); + + serial_high(); +} + +// Reads a byte from the serial line +static +uint8_t serial_read_byte(void) { + uint8_t byte = 0; + serial_input(); + for ( uint8_t i = 0; i < 8; ++i) { + byte = (byte << 1) | serial_read_pin(); + serial_delay(); + _delay_us(1); + } + + return byte; +} + +// Sends a byte with MSB ordering +static +void serial_write_byte(uint8_t data) { + uint8_t b = 8; + serial_output(); + while( b-- ) { + if(data & (1 << b)) { + serial_high(); + } else { + serial_low(); + } + serial_delay(); + } +} + +// interrupt handle to be used by the slave device +ISR(SERIAL_PIN_INTERRUPT) { + sync_send(); + + uint8_t checksum = 0; + for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) { + serial_write_byte(serial_slave_buffer[i]); + sync_send(); + checksum += serial_slave_buffer[i]; + } + serial_write_byte(checksum); + sync_send(); + + // wait for the sync to finish sending + serial_delay(); + + // read the middle of pulses + _delay_us(SERIAL_DELAY/2); + + uint8_t checksum_computed = 0; + for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) { + serial_master_buffer[i] = serial_read_byte(); + sync_send(); + checksum_computed += serial_master_buffer[i]; + } + uint8_t checksum_received = serial_read_byte(); + sync_send(); + + serial_input(); // end transaction + + if ( checksum_computed != checksum_received ) { + status |= SLAVE_DATA_CORRUPT; + } else { + status &= ~SLAVE_DATA_CORRUPT; + } +} + +inline +bool serial_slave_DATA_CORRUPT(void) { + return status & SLAVE_DATA_CORRUPT; +} + +// Copies the serial_slave_buffer to the master and sends the +// serial_master_buffer to the slave. +// +// Returns: +// 0 => no error +// 1 => slave did not respond +int serial_update_buffers(void) { + // this code is very time dependent, so we need to disable interrupts + cli(); + + // signal to the slave that we want to start a transaction + serial_output(); + serial_low(); + _delay_us(1); + + // wait for the slaves response + serial_input(); + serial_high(); + _delay_us(SERIAL_DELAY); + + // check if the slave is present + if (serial_read_pin()) { + // slave failed to pull the line low, assume not present + sei(); + return 1; + } + + // if the slave is present syncronize with it + sync_recv(); + + uint8_t checksum_computed = 0; + // receive data from the slave + for (int i = 0; i < SERIAL_SLAVE_BUFFER_LENGTH; ++i) { + serial_slave_buffer[i] = serial_read_byte(); + sync_recv(); + checksum_computed += serial_slave_buffer[i]; + } + uint8_t checksum_received = serial_read_byte(); + sync_recv(); + + if (checksum_computed != checksum_received) { + sei(); + return 1; + } + + uint8_t checksum = 0; + // send data to the slave + for (int i = 0; i < SERIAL_MASTER_BUFFER_LENGTH; ++i) { + serial_write_byte(serial_master_buffer[i]); + sync_recv(); + checksum += serial_master_buffer[i]; + } + serial_write_byte(checksum); + sync_recv(); + + // always, release the line when not in use + serial_output(); + serial_high(); + + sei(); + return 0; +} diff --git a/keyboards/lets_splitv2/serial.h b/keyboards/lets_splitv2/serial.h new file mode 100644 index 0000000000..15fe4db7b4 --- /dev/null +++ b/keyboards/lets_splitv2/serial.h @@ -0,0 +1,26 @@ +#ifndef MY_SERIAL_H +#define MY_SERIAL_H + +#include "config.h" +#include + +/* TODO: some defines for interrupt setup */ +#define SERIAL_PIN_DDR DDRD +#define SERIAL_PIN_PORT PORTD +#define SERIAL_PIN_INPUT PIND +#define SERIAL_PIN_MASK _BV(PD0) +#define SERIAL_PIN_INTERRUPT INT0_vect + +#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2 +#define SERIAL_MASTER_BUFFER_LENGTH 1 + +// Buffers for master - slave communication +extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH]; +extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH]; + +void serial_master_init(void); +void serial_slave_init(void); +int serial_update_buffers(void); +bool serial_slave_data_corrupt(void); + +#endif diff --git a/keyboards/lets_splitv2/split_util.c b/keyboards/lets_splitv2/split_util.c new file mode 100644 index 0000000000..65003a71a4 --- /dev/null +++ b/keyboards/lets_splitv2/split_util.c @@ -0,0 +1,76 @@ +#include +#include +#include +#include +#include +#include +#include "split_util.h" +#include "matrix.h" +#include "i2c.h" +#include "serial.h" +#include "keyboard.h" +#include "config.h" + +volatile bool isLeftHand = true; + +static void setup_handedness(void) { + #ifdef EE_HANDS + isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS); + #else + #ifdef I2C_MASTER_RIGHT + isLeftHand = !has_usb(); + #else + isLeftHand = has_usb(); + #endif + #endif +} + +static void keyboard_master_setup(void) { +#ifdef USE_I2C + i2c_master_init(); +#else + serial_master_init(); +#endif +} + +static void keyboard_slave_setup(void) { +#ifdef USE_I2C + i2c_slave_init(SLAVE_I2C_ADDRESS); +#else + serial_slave_init(); +#endif +} + +bool has_usb(void) { + USBCON |= (1 << OTGPADE); //enables VBUS pad + _delay_us(5); + return (USBSTA & (1< + +#ifdef EE_HANDS + #define EECONFIG_BOOTMAGIC_END (uint8_t *)10 + #define EECONFIG_HANDEDNESS EECONFIG_BOOTMAGIC_END +#endif + +#define SLAVE_I2C_ADDRESS 0x32 + +extern volatile bool isLeftHand; + +// slave version of matix scan, defined in matrix.c +void matrix_slave_scan(void); + +void split_keyboard_setup(void); +bool has_usb(void); +void keyboard_slave_loop(void); + +#endif diff --git a/keyboards/maxipad/Makefile b/keyboards/maxipad/Makefile new file mode 100644 index 0000000000..3f6d133c9b --- /dev/null +++ b/keyboards/maxipad/Makefile @@ -0,0 +1,75 @@ + + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 + +ifndef QUANTUM_DIR + include ../../Makefile +endif + + diff --git a/keyboards/maxipad/config.h b/keyboards/maxipad/config.h new file mode 100644 index 0000000000..59b8cebecd --- /dev/null +++ b/keyboards/maxipad/config.h @@ -0,0 +1,162 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Wootpatoot +#define PRODUCT maxipad +#define DESCRIPTION g8ming keeb + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 6 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { B6, F7, B2, B3, B1 } +#define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/maxipad/keymaps/default/Makefile b/keyboards/maxipad/keymaps/default/Makefile new file mode 100644 index 0000000000..f4671a9d11 --- /dev/null +++ b/keyboards/maxipad/keymaps/default/Makefile @@ -0,0 +1,21 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/maxipad/keymaps/default/config.h b/keyboards/maxipad/keymaps/default/config.h new file mode 100644 index 0000000000..df06a26206 --- /dev/null +++ b/keyboards/maxipad/keymaps/default/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif \ No newline at end of file diff --git a/keyboards/maxipad/keymaps/default/keymap.c b/keyboards/maxipad/keymaps/default/keymap.c new file mode 100644 index 0000000000..7ca127fe4d --- /dev/null +++ b/keyboards/maxipad/keymaps/default/keymap.c @@ -0,0 +1,54 @@ +#include "maxipad.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, \ + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, \ + KC_LCTL, KC_LALT, MO(1), KC_ENT,KC_GRV,KC_SPC \ +), +[1] = KEYMAP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ + 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[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + +} \ No newline at end of file diff --git a/keyboards/maxipad/keymaps/default/readme.md b/keyboards/maxipad/keymaps/default/readme.md new file mode 100644 index 0000000000..a6c0d4a3f0 --- /dev/null +++ b/keyboards/maxipad/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for maxipad \ No newline at end of file diff --git a/keyboards/maxipad/maxipad.c b/keyboards/maxipad/maxipad.c new file mode 100644 index 0000000000..879ae86a76 --- /dev/null +++ b/keyboards/maxipad/maxipad.c @@ -0,0 +1,28 @@ +#include "maxipad.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} diff --git a/keyboards/maxipad/maxipad.h b/keyboards/maxipad/maxipad.h new file mode 100644 index 0000000000..eee1309ddc --- /dev/null +++ b/keyboards/maxipad/maxipad.h @@ -0,0 +1,25 @@ +#ifndef MAXIPAD_H +#define MAXIPAD_H + +#include "quantum.h" + +// This a shortcut to help you visually see your layout. +// The following is an example using the Planck MIT layout +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, \ + k10, k11, k12, k13, k14, k15, \ + k20, k21, k22, k23, k24, k25, \ + k30, k31, k32, k33, k34, k35, \ + k40, k41, k42, k43, k44, k45 \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { k40, k41, k42, k43, k44, k45} \ +} + +#endif diff --git a/keyboards/maxipad/readme.md b/keyboards/maxipad/readme.md new file mode 100644 index 0000000000..964212b8a6 --- /dev/null +++ b/keyboards/maxipad/readme.md @@ -0,0 +1,28 @@ +maxipad keyboard firmware +====================== + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/doc/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/maxipad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make`. + +### Other Keymaps + +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. + +To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: + +``` +$ make keymap=[default|jack|] +``` + +Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` \ No newline at end of file From 79f82d3d80a24483d14b078d325bb0f45af58e3d Mon Sep 17 00:00:00 2001 From: climbalima Date: Thu, 10 Nov 2016 18:43:31 -0500 Subject: [PATCH 070/727] returned to o --- keyboards/lets_split/config.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h index bf618704cd..05439facb9 100644 --- a/keyboards/lets_split/config.h +++ b/keyboards/lets_split/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . #define PRODUCT_ID 0x3060 #define DEVICE_VER 0x0001 #define MANUFACTURER Wootpatoot -#define PRODUCT Lets Split v2 +#define PRODUCT Lets Split #define DESCRIPTION A split keyboard for the cheap makers /* key matrix size */ @@ -34,8 +34,8 @@ along with this program. If not, see . #define MATRIX_COLS 6 // wiring of each half -#define MATRIX_ROW_PINS { D7, E6, B4, B5 } -#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 } +#define MATRIX_ROW_PINS { B5, B4, E6, D7 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 } #define CATERINA_BOOTLOADER @@ -95,4 +95,4 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -#endif \ No newline at end of file +#endif From b5cecb4cc9df2d541050a9a95f48c1d5fb796ae4 Mon Sep 17 00:00:00 2001 From: climbalima Date: Thu, 10 Nov 2016 20:03:24 -0500 Subject: [PATCH 071/727] Added both revisions into one folder --- keyboards/lets_split/Makefile | 2 +- keyboards/lets_split/config.h | 16 ++- keyboards/lets_split/keymaps/default/keymap.c | 51 ++-------- keyboards/lets_split/lets_split.c | 27 ----- keyboards/lets_split/lets_split.h | 26 ++--- keyboards/lets_split/rev1/config.h | 98 +++++++++++++++++++ keyboards/lets_split/rev1/rev1.c | 30 ++++++ keyboards/lets_split/rev1/rev1.h | 25 +++++ keyboards/lets_split/rev2/config.h | 98 +++++++++++++++++++ keyboards/lets_split/rev2/rev2.c | 30 ++++++ keyboards/lets_split/rev2/rev2.h | 25 +++++ 11 files changed, 327 insertions(+), 101 deletions(-) create mode 100644 keyboards/lets_split/rev1/config.h create mode 100644 keyboards/lets_split/rev1/rev1.c create mode 100644 keyboards/lets_split/rev1/rev1.h create mode 100644 keyboards/lets_split/rev2/config.h create mode 100644 keyboards/lets_split/rev2/rev2.c create mode 100644 keyboards/lets_split/rev2/rev2.h diff --git a/keyboards/lets_split/Makefile b/keyboards/lets_split/Makefile index 982cfc591b..396d515553 100644 --- a/keyboards/lets_split/Makefile +++ b/keyboards/lets_split/Makefile @@ -72,7 +72,7 @@ USE_I2C ?= yes SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend CUSTOM_MATRIX = yes - +SUBPROJECT_DEFAULT = rev2 ifndef QUANTUM_DIR include ../../Makefile endif \ No newline at end of file diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h index bf618704cd..245529ae08 100644 --- a/keyboards/lets_split/config.h +++ b/keyboards/lets_split/config.h @@ -28,15 +28,6 @@ along with this program. If not, see . #define PRODUCT Lets Split v2 #define DESCRIPTION A split keyboard for the cheap makers -/* key matrix size */ -// Rows are doubled-up -#define MATRIX_ROWS 8 -#define MATRIX_COLS 6 - -// wiring of each half -#define MATRIX_ROW_PINS { D7, E6, B4, B5 } -#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 } - #define CATERINA_BOOTLOADER // #define USE_I2C @@ -94,5 +85,10 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - +#ifdef SUBPROJECT_rev1 + #include "rev1/config.h" +#endif +#ifdef SUBPROJECT_rev2 + #include "rev2/config.h" +#endif #endif \ No newline at end of file diff --git a/keyboards/lets_split/keymaps/default/keymap.c b/keyboards/lets_split/keymaps/default/keymap.c index 8c8466ebd5..d940638164 100644 --- a/keyboards/lets_split/keymaps/default/keymap.c +++ b/keyboards/lets_split/keymaps/default/keymap.c @@ -29,61 +29,24 @@ enum custom_keycodes { #define XXXXXXX KC_NO const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Qwerty - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_QWERTY] = KEYMAP( \ - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ +[0] = KEYMAP( \ + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ - KC_LCTL, _LOWER, KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, KC_LSFT, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ + KC_LCTL, _LOWER, KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ ), - -[_LOWER] = KEYMAP( \ - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ +[3] = KEYMAP( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ ), - -/* Raise - * ,-----------------------------------------------------------------------------------. - * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_RAISE] = KEYMAP( \ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ +[4] = KEYMAP( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ _______, _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ ), - -/* Adjust (Lower + Raise) - * ,-----------------------------------------------------------------------------------. - * | | Reset| | | | | | | | | | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | - * `-----------------------------------------------------------------------------------' - */ }; #ifdef AUDIO_ENABLE diff --git a/keyboards/lets_split/lets_split.c b/keyboards/lets_split/lets_split.c index 574c116a75..fe2d4bc193 100644 --- a/keyboards/lets_split/lets_split.c +++ b/keyboards/lets_split/lets_split.c @@ -1,30 +1,3 @@ #include "lets_split.h" -#ifdef AUDIO_ENABLE - float tone_startup[][2] = SONG(STARTUP_SOUND); - float tone_goodbye[][2] = SONG(GOODBYE_SOUND); -#endif -void matrix_init_kb(void) { - - #ifdef AUDIO_ENABLE - _delay_ms(20); // gets rid of tick - PLAY_NOTE_ARRAY(tone_startup, false, 0); - #endif - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - -void shutdown_user(void) { - PLAY_NOTE_ARRAY(tone_goodbye, false, 0); - _delay_ms(150); - stop_all_notes(); -} diff --git a/keyboards/lets_split/lets_split.h b/keyboards/lets_split/lets_split.h index 04844ed639..2cdfb061f2 100644 --- a/keyboards/lets_split/lets_split.h +++ b/keyboards/lets_split/lets_split.h @@ -1,25 +1,13 @@ #ifndef LETS_SPLIT_H #define LETS_SPLIT_H +#ifdef SUBPROJECT_rev1 + #include "rev1.h" +#endif +#ifdef SUBPROJECT_rev2 + #include "rev2.h" +#endif + #include "quantum.h" -void promicro_bootloader_jmp(bool program); - -#define KEYMAP( \ - k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ - k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ - k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ - k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \ - ) \ - { \ - { k00, k01, k02, k03, k04, k05 }, \ - { k10, k11, k12, k13, k14, k15 }, \ - { k20, k21, k22, k23, k24, k25 }, \ - { k30, k31, k32, k33, k34, k35 }, \ - { k40, k41, k42, k43, k44, k45 }, \ - { k50, k51, k52, k53, k54, k55 }, \ - { k60, k61, k62, k63, k64, k65 }, \ - { k70, k71, k72, k73, k74, k75 } \ - } - #endif \ No newline at end of file diff --git a/keyboards/lets_split/rev1/config.h b/keyboards/lets_split/rev1/config.h new file mode 100644 index 0000000000..b609ada077 --- /dev/null +++ b/keyboards/lets_split/rev1/config.h @@ -0,0 +1,98 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x3060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Wootpatoot +#define PRODUCT Lets Split v1 +#define DESCRIPTION A split keyboard for the cheap makers + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { B5, B4, E6, D7 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 } + +#define CATERINA_BOOTLOADER + +// #define USE_I2C + +// #define EE_HANDS + +#define I2C_MASTER_LEFT +// #define I2C_MASTER_RIGHT + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* ws2812 RGB LED */ +#define ws2812_PORTREG PORTD +#define ws2812_DDRREG DDRD +#define ws2812_pin PD1 +#define RGBLED_NUM 28 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif \ No newline at end of file diff --git a/keyboards/lets_split/rev1/rev1.c b/keyboards/lets_split/rev1/rev1.c new file mode 100644 index 0000000000..574c116a75 --- /dev/null +++ b/keyboards/lets_split/rev1/rev1.c @@ -0,0 +1,30 @@ +#include "lets_split.h" + +#ifdef AUDIO_ENABLE + float tone_startup[][2] = SONG(STARTUP_SOUND); + float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + +void matrix_init_kb(void) { + + #ifdef AUDIO_ENABLE + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif + + // // green led on + // DDRD |= (1<<5); + // PORTD &= ~(1<<5); + + // // orange led on + // DDRB |= (1<<0); + // PORTB &= ~(1<<0); + + matrix_init_user(); +}; + +void shutdown_user(void) { + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} diff --git a/keyboards/lets_split/rev1/rev1.h b/keyboards/lets_split/rev1/rev1.h new file mode 100644 index 0000000000..04fe0ddeb8 --- /dev/null +++ b/keyboards/lets_split/rev1/rev1.h @@ -0,0 +1,25 @@ +#ifndef REV1_H +#define REV1_H + +#include "quantum.h" + +void promicro_bootloader_jmp(bool program); + +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \ + k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \ + k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \ + k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \ + ) \ + { \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { k40, k41, k42, k43, k44, k45 }, \ + { k50, k51, k52, k53, k54, k55 }, \ + { k60, k61, k62, k63, k64, k65 }, \ + { k70, k71, k72, k73, k74, k75 } \ + } + +#endif \ No newline at end of file diff --git a/keyboards/lets_split/rev2/config.h b/keyboards/lets_split/rev2/config.h new file mode 100644 index 0000000000..bf618704cd --- /dev/null +++ b/keyboards/lets_split/rev2/config.h @@ -0,0 +1,98 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x3060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Wootpatoot +#define PRODUCT Lets Split v2 +#define DESCRIPTION A split keyboard for the cheap makers + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 } + +#define CATERINA_BOOTLOADER + +// #define USE_I2C + +// #define EE_HANDS + +#define I2C_MASTER_LEFT +// #define I2C_MASTER_RIGHT + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* ws2812 RGB LED */ +#define ws2812_PORTREG PORTD +#define ws2812_DDRREG DDRD +#define ws2812_pin PD1 +#define RGBLED_NUM 28 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif \ No newline at end of file diff --git a/keyboards/lets_split/rev2/rev2.c b/keyboards/lets_split/rev2/rev2.c new file mode 100644 index 0000000000..574c116a75 --- /dev/null +++ b/keyboards/lets_split/rev2/rev2.c @@ -0,0 +1,30 @@ +#include "lets_split.h" + +#ifdef AUDIO_ENABLE + float tone_startup[][2] = SONG(STARTUP_SOUND); + float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + +void matrix_init_kb(void) { + + #ifdef AUDIO_ENABLE + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif + + // // green led on + // DDRD |= (1<<5); + // PORTD &= ~(1<<5); + + // // orange led on + // DDRB |= (1<<0); + // PORTB &= ~(1<<0); + + matrix_init_user(); +}; + +void shutdown_user(void) { + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} diff --git a/keyboards/lets_split/rev2/rev2.h b/keyboards/lets_split/rev2/rev2.h new file mode 100644 index 0000000000..2a2246f056 --- /dev/null +++ b/keyboards/lets_split/rev2/rev2.h @@ -0,0 +1,25 @@ +#ifndef REV2_H +#define REV2_H + +#include "quantum.h" + +void promicro_bootloader_jmp(bool program); + +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ + k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ + k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ + k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \ + ) \ + { \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { k40, k41, k42, k43, k44, k45 }, \ + { k50, k51, k52, k53, k54, k55 }, \ + { k60, k61, k62, k63, k64, k65 }, \ + { k70, k71, k72, k73, k74, k75 } \ + } + +#endif \ No newline at end of file From 19ebf6161f174902a33816bdab4ea3a209e4113e Mon Sep 17 00:00:00 2001 From: dbroqua Date: Sat, 12 Nov 2016 19:23:38 +0100 Subject: [PATCH 072/727] - Added dbroqua_hhkb layout for Satan PCB --- keyboards/satan/keymaps/dbroqua_hhkb/keymap.c | 110 ++++++++++++++++++ .../satan/keymaps/dbroqua_hhkb/readme.md | 9 ++ 2 files changed, 119 insertions(+) create mode 100644 keyboards/satan/keymaps/dbroqua_hhkb/keymap.c create mode 100644 keyboards/satan/keymaps/dbroqua_hhkb/readme.md diff --git a/keyboards/satan/keymaps/dbroqua_hhkb/keymap.c b/keyboards/satan/keymaps/dbroqua_hhkb/keymap.c new file mode 100644 index 0000000000..98a298e762 --- /dev/null +++ b/keyboards/satan/keymaps/dbroqua_hhkb/keymap.c @@ -0,0 +1,110 @@ +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "satan.h" + +#define _DEFAULT 0 +#define _ALTDISP 1 +#define _FN 2 + +enum planck_keycodes { + DEFAULT = SAFE_RANGE, + ALTDISP +}; + +// Fillers to make layering more clear +#define ______ KC_TRNS + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Qwerty alt/gui/space/gui/alt + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + * |-----------------------------------------------------------------------------------------+ + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-----------------------------------------------------------------------------------------+ + * | Shift | Z | X | C | V | B | N | M | , | . | / | RShift | FN | + * |-----------------------------------------------------------------------------------------+ + * | LAlt| LGUI | Space | RGUI | RAlt | + * `-----------------------------------------------------------------' + */ + [_DEFAULT] = KEYMAP_HHKB( /* Basic QWERTY */ + 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_GRV, \ + 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), \ + ______, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, ______, ______ \ + ), + +/* Qwerty gui/alt/space/alt/gui + * ,-----------------------------------------------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` | + * |-----------------------------------------------------------------------------------------+ + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Bksp | + * |-----------------------------------------------------------------------------------------+ + * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' | Enter | + * |-----------------------------------------------------------------------------------------+ + * | Shift | Z | X | C | V | B | N | M | , | . | / | RShift | FN | + * |-----------------------------------------------------------------------------------------+ + * |LGUI | LAlt | Space | RAlt |RGUI | + * `-----------------------------------------------------------------' + */ + [_ALTDISP] = KEYMAP_HHKB( /* Basic QWERTY */ + 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_GRV, \ + 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN), \ + ______, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, ______, ______ \ + ), + +/* FN Layer + * ,-----------------------------------------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | + * |-----------------------------------------------------------------------------------------+ + * | CAPS | BL- | BL+ | BL | | | | | Psc | Slck| Paus| Up | | | + * |-----------------------------------------------------------------------------------------+ + * | | Vol-| Vol+| Mute| | | * | / | Home| PgUp| Left|Right| | + * |-----------------------------------------------------------------------------------------+ + * | | Prev| Play| Next| | | + | - | End |PgDn| Down| | | + * |-----------------------------------------------------------------------------------------+ + * | | | | Stop | | + * `-----------------------------------------------------------------' + */ + [_FN] = KEYMAP_HHKB( /* Layer 1 */ + ______, 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_DEL, \ + KC_CAPS, BL_DEC, BL_INC, BL_TOGG, ______, ______, ______, ______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, ______, \ + ______, KC_VOLD, KC_VOLU, KC_MUTE, ______, ______, KC_PAST, KC_PSLS,KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, ______, \ + ______, KC_MPRV, KC_MPLY, KC_MNXT,______,______,KC_PPLS,KC_PMNS,KC_END, KC_PGDN, KC_DOWN, ______,______, \ + ______, DEFAULT, ALTDISP, ______, KC_MSTP, ______, ______, ______ \ + ) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + return MACRO_NONE; +}; + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case DEFAULT: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_DEFAULT); + } + return false; + break; + case ALTDISP: + if (record->event.pressed) { + persistant_default_layer_set(1UL<<_ALTDISP); + } + return false; + break; + } + return true; +} \ No newline at end of file diff --git a/keyboards/satan/keymaps/dbroqua_hhkb/readme.md b/keyboards/satan/keymaps/dbroqua_hhkb/readme.md new file mode 100644 index 0000000000..39e71beedd --- /dev/null +++ b/keyboards/satan/keymaps/dbroqua_hhkb/readme.md @@ -0,0 +1,9 @@ +# Dbroqua HHKB like Layout + +Like the HHKB but with a Satan GH60 PCB :D. + +# Programming Instructions: +Enter into programming mode and run the following command. +``` +$ sudo KEYMAP=dbroqua_hhkb make dfu +``` \ No newline at end of file From 28249498bc621cd8e766a501de0e0c18e525d3f1 Mon Sep 17 00:00:00 2001 From: Seth Chandler Date: Sat, 12 Nov 2016 23:56:57 -0500 Subject: [PATCH 073/727] update sethbc keymap --- keyboards/satan/keymaps/sethbc/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/satan/keymaps/sethbc/keymap.c b/keyboards/satan/keymaps/sethbc/keymap.c index 82c779081a..b59efd1d94 100644 --- a/keyboards/satan/keymaps/sethbc/keymap.c +++ b/keyboards/satan/keymaps/sethbc/keymap.c @@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FL), \ - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL), + KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_MENU, KC_RCTL), [_FL] = KEYMAP_HHKB( #ifdef RGBLIGHT_ENABLE From b2bc215934ddd31315db4304223750aee3eaf38d Mon Sep 17 00:00:00 2001 From: Seth Chandler Date: Sun, 13 Nov 2016 00:42:07 -0500 Subject: [PATCH 074/727] add sethbc keymap for gh60 and update macro expansion in connection with same --- keyboards/gh60/gh60.h | 32 ++++++----- keyboards/gh60/keymaps/sethbc/Makefile | 3 + keyboards/gh60/keymaps/sethbc/keymap.c | 76 ++++++++++++++++++++++++++ 3 files changed, 96 insertions(+), 15 deletions(-) create mode 100644 keyboards/gh60/keymaps/sethbc/Makefile create mode 100644 keyboards/gh60/keymaps/sethbc/keymap.c diff --git a/keyboards/gh60/gh60.h b/keyboards/gh60/gh60.h index 82624b6148..899f7dc6a3 100644 --- a/keyboards/gh60/gh60.h +++ b/keyboards/gh60/gh60.h @@ -4,7 +4,7 @@ #include "quantum.h" #include "led.h" -/* GH60 LEDs +/* GH60 LEDs * GPIO pads * 0 F7 WASD LEDs * 1 F6 ESC LED @@ -49,13 +49,13 @@ inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); } K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ K40, K41, K42, K45, K4A, K4B, K4C, K4D \ -) KEYMAP( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO, K2D, \ - K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, NO, K3D, \ - K40, K41, K42, K45, NO, K4A, K4B, K4C, K4D \ -) +) { \ + { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \ + { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \ + { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_NO, KC_##K2D }, \ + { KC_##K30, KC_NO, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_NO, KC_##K3D }, \ + { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \ +} #define KEYMAP_HHKB( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\ @@ -63,12 +63,14 @@ inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); } K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \ K40, K41, K42, K45, K4A, K4B, K4C, K4D \ -) KEYMAP( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, NO, K2D, \ - K30, NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ - K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \ -) +) { \ + { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \ + { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \ + { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_NO, KC_##K2D }, \ + { KC_##K30, KC_NO, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D }, \ + { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \ +} + + #endif diff --git a/keyboards/gh60/keymaps/sethbc/Makefile b/keyboards/gh60/keymaps/sethbc/Makefile new file mode 100644 index 0000000000..457a3d01d4 --- /dev/null +++ b/keyboards/gh60/keymaps/sethbc/Makefile @@ -0,0 +1,3 @@ +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/gh60/keymaps/sethbc/keymap.c b/keyboards/gh60/keymaps/sethbc/keymap.c new file mode 100644 index 0000000000..85a46a29bd --- /dev/null +++ b/keyboards/gh60/keymaps/sethbc/keymap.c @@ -0,0 +1,76 @@ +#include "gh60.h" +#include "action_layer.h" + +#define MODS_CTRL_MASK (MOD_BIT(KC_LSHIFT)|MOD_BIT(KC_RSHIFT)) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: qwerty */ + KEYMAP_HHKB( + FN0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, GRV, \ + TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ + LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \ + LSFT, Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT, FN1, \ + LCTL,LALT,LGUI, SPC, RGUI,RALT,APP, RCTL), + /* 1: fn */ + KEYMAP_HHKB( + GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ + CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,UP,TRNS,TRNS, \ + TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RIGHT,PENT, \ + TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END,PGDN,DOWN,TRNS,TRNS, \ + TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), +}; + +enum function_id { + SHIFT_ESC, +}; + +const uint16_t PROGMEM fn_actions[] = { + [0] = ACTION_FUNCTION(SHIFT_ESC), + [1] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +void matrix_scan_user(void) { + +} + +void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) { + static uint8_t shift_esc_shift_mask; + switch (id) { + case SHIFT_ESC: + shift_esc_shift_mask = get_mods()&MODS_CTRL_MASK; + if (record->event.pressed) { + if (shift_esc_shift_mask) { + add_key(KC_GRV); + send_keyboard_report(); + } else { + add_key(KC_ESC); + send_keyboard_report(); + } + } else { + if (shift_esc_shift_mask) { + del_key(KC_GRV); + send_keyboard_report(); + } else { + del_key(KC_ESC); + send_keyboard_report(); + } + } + break; + } +} From 34bf8558cdfa3baa46db704299ef66b79b2d0a15 Mon Sep 17 00:00:00 2001 From: Seth Chandler Date: Sun, 13 Nov 2016 00:56:46 -0500 Subject: [PATCH 075/727] update sethbc ergodox keymap --- keyboards/ergodox/keymaps/sethbc/Makefile | 11 ----------- keyboards/ergodox/keymaps/sethbc/keymap.c | 2 +- keyboards/ergodox/keymaps/sethbc/readme.md | 3 ++- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/keyboards/ergodox/keymaps/sethbc/Makefile b/keyboards/ergodox/keymaps/sethbc/Makefile index 8c4ff87845..457a3d01d4 100644 --- a/keyboards/ergodox/keymaps/sethbc/Makefile +++ b/keyboards/ergodox/keymaps/sethbc/Makefile @@ -1,14 +1,3 @@ -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = no # Commands for debug and configuration -CUSTOM_MATRIX = yes # Custom matrix file for the ErgoDox EZ -SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -MIDI_ENABLE = no # MIDI controls -UNICODE_ENABLE = yes # Unicode - ifndef QUANTUM_DIR include ../../../../Makefile endif diff --git a/keyboards/ergodox/keymaps/sethbc/keymap.c b/keyboards/ergodox/keymaps/sethbc/keymap.c index 6846c4d529..8816ad63bb 100644 --- a/keyboards/ergodox/keymaps/sethbc/keymap.c +++ b/keyboards/ergodox/keymaps/sethbc/keymap.c @@ -15,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LGUI, KC_GRV, KC_BSLS, KC_LEFT, KC_RGHT, KC_LCTL, KC_LALT, KC_HOME, - KC_SPC, KC_BSPC, KC_END, + KC_BSPC, KC_DEL, KC_END, // right hand MO(FN2), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_LBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC, diff --git a/keyboards/ergodox/keymaps/sethbc/readme.md b/keyboards/ergodox/keymaps/sethbc/readme.md index 510b2f99c8..57b5d0ec7c 100644 --- a/keyboards/ergodox/keymaps/sethbc/readme.md +++ b/keyboards/ergodox/keymaps/sethbc/readme.md @@ -1,3 +1,4 @@ # sethbc's Ergodox EZ keymap -Largely based on the Ergodox Infinity default keymap +Largely based on the Ergodox Infinity default keymap, but layer locking has been +removed in favor of momentary layer activation From aa76425395028d304e223d43e76145343850f0db Mon Sep 17 00:00:00 2001 From: Seth Chandler Date: Sun, 13 Nov 2016 01:04:10 -0500 Subject: [PATCH 076/727] oops, fixed inverted if statement --- keyboards/satan/keymaps/sethbc/keymap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/satan/keymaps/sethbc/keymap.c b/keyboards/satan/keymaps/sethbc/keymap.c index b59efd1d94..93610258b3 100644 --- a/keyboards/satan/keymaps/sethbc/keymap.c +++ b/keyboards/satan/keymaps/sethbc/keymap.c @@ -37,16 +37,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FL] = KEYMAP_HHKB( #ifdef RGBLIGHT_ENABLE 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, _______, RESET, \ - KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_DEL, \ - _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ - _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______), - #else - 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, _______, RESET, \ KC_CAPS, _______, RGB_TOG,RGB_MOD,RGB_HUI, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_DEL, \ _______, KC_VOLD, RGB_HUD,RGB_SAI,RGB_SAD, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ _______, RGB_VAI,RGB_VAD,_______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______), + #else + 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, _______, RESET, \ + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_DEL, \ + _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \ + _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______), #endif }; From 162f603b1c36c63aa170170998b361a86413767f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Elleg=C3=A5rd?= Date: Sat, 29 Oct 2016 20:31:12 +0200 Subject: [PATCH 077/727] Added keymap "videck", an ErgoDox keymap for Vi(m) users. --- keyboards/ergodox/keymaps/videck/Makefile | 19 + keyboards/ergodox/keymaps/videck/config.h | 13 + keyboards/ergodox/keymaps/videck/keymap.c | 179 ++++++++ keyboards/ergodox/keymaps/videck/readme.md | 24 + keyboards/ergodox/keymaps/videck/videck.json | 443 +++++++++++++++++++ keyboards/ergodox/keymaps/videck/videck.png | Bin 0 -> 106851 bytes 6 files changed, 678 insertions(+) create mode 100644 keyboards/ergodox/keymaps/videck/Makefile create mode 100644 keyboards/ergodox/keymaps/videck/config.h create mode 100644 keyboards/ergodox/keymaps/videck/keymap.c create mode 100644 keyboards/ergodox/keymaps/videck/readme.md create mode 100644 keyboards/ergodox/keymaps/videck/videck.json create mode 100644 keyboards/ergodox/keymaps/videck/videck.png diff --git a/keyboards/ergodox/keymaps/videck/Makefile b/keyboards/ergodox/keymaps/videck/Makefile new file mode 100644 index 0000000000..5c7d21f2cc --- /dev/null +++ b/keyboards/ergodox/keymaps/videck/Makefile @@ -0,0 +1,19 @@ +AUDIO_ENABLE:=no +BACKLIGHT_ENABLE:=no +BLUETOOTH_ENABLE:=no +BOOTMAGIC_ENABLE:=no +COMMAND_ENABLE:=no +CONSOLE_ENABLE:=no +EXTRAKEY_ENABLE:=yes +MIDI_ENABLE:=no +MOUSEKEY_ENABLE:=yes +NKRO_ENABLE:=no +RGBLIGHT_ENABLE:=no +SLEEP_LED_ENABLE:=no +TAP_DANCE_ENABLE:=yes +UNICODEMAP_ENABLE:=no +UNICODE_ENABLE:=no + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/ergodox/keymaps/videck/config.h b/keyboards/ergodox/keymaps/videck/config.h new file mode 100644 index 0000000000..d89aabe779 --- /dev/null +++ b/keyboards/ergodox/keymaps/videck/config.h @@ -0,0 +1,13 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +#ifndef NO_DEBUG + #define NO_DEBUG +#endif +#ifndef NO_PRINT + #define NO_PRINT +#endif + +#endif diff --git a/keyboards/ergodox/keymaps/videck/keymap.c b/keyboards/ergodox/keymaps/videck/keymap.c new file mode 100644 index 0000000000..7bd6274e94 --- /dev/null +++ b/keyboards/ergodox/keymaps/videck/keymap.c @@ -0,0 +1,179 @@ +#include + +#include "ergodox.h" +#include "action_layer.h" + +enum { + BASE = 0, // Default layer + ARROWS = 1, // Arrows and Fx keys layer + MOUSE = 2, // Mouse movement and buttons layer + PARENS = 3, // Parenthesis easy access layer + + TD_L = 0, // Tap dance index for left shift + TD_R = 1 // Tap dance index for right shift +}; + +// See the videck.png image for a visualization of the layout. +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [BASE] = KEYMAP( + // left hand + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_HOME, + KC_EQL, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_END, + MO(PARENS), KC_A, KC_S, KC_D, KC_F, KC_G, + TD(TD_L), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSPC, + KC_LCTL, KC_LALT, KC_VOLD, KC_VOLU, KC_MUTE, + KC_ESC, KC_LGUI, + TG(MOUSE), + KC_SPC, KC_TAB, TG(ARROWS), + // right hand + KC_PGUP, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_PGDN, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_DELT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, TD(TD_R), + KC_LBRC, KC_RBRC, KC_EQL, KC_RALT, KC_RCTL, + KC_APP, KC_ESC, + KC_INS, + KC_SLCK, KC_ENT, KC_SPC + ), + [ARROWS] = KEYMAP( + // left hand + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_NO, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, + KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + [MOUSE] = KEYMAP( + // left hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_BTN3, KC_TRNS, + KC_TRNS, + KC_BTN1, KC_BTN2, KC_NO, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ), + [PARENS] = KEYMAP( + // left hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_NO, + KC_TRNS, KC_TRNS, KC_NO, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +typedef void (*videck_tap_dance_trigger_t) (const uint16_t kc); + +typedef struct +{ + uint16_t kc1; + uint16_t kc2; + videck_tap_dance_trigger_t trigger; +} videck_tap_dance_tuple_t; + +static void videck_tap_dance_finished (qk_tap_dance_state_t *state, void *user_data) { + videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data; + + if (state->count == 1) { + register_code16 (tuple->kc1); + } else if (state->count == 2) { + register_code16 (tuple->kc2); + } +} + +static void videck_tap_dance_reset (qk_tap_dance_state_t *state, void *user_data) { + videck_tap_dance_tuple_t *const tuple = (videck_tap_dance_tuple_t *)user_data; + + if (state->count == 1) { + unregister_code16 (tuple->kc1); + } else if (state->count == 2) { + unregister_code16 (tuple->kc2); + tuple->trigger(tuple->kc2); + } +} + +static bool caps_lock_is_on; + +// Toggles caps lock status. +static void videck_caps_trigger (const uint16_t kc) { + caps_lock_is_on ^= true; +} + +#define ACTION_TAP_DANCE_DOUBLE_TRIGGER(kc1, kc2, double_trigger) { \ + .fn = { NULL, videck_tap_dance_finished, videck_tap_dance_reset }, \ + .user_data = (void *)&((videck_tap_dance_tuple_t) { kc1, kc2, double_trigger }), \ + } + +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_L] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_LSFT, KC_CAPS, videck_caps_trigger), + [TD_R] = ACTION_TAP_DANCE_DOUBLE_TRIGGER(KC_RSFT, KC_CAPS, videck_caps_trigger) +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + ergodox_led_all_set(LED_BRIGHTNESS_LO); + caps_lock_is_on = false; +}; + +static void indicate_using_led(const uint8_t led, const bool enabled) { + if (enabled) { + ergodox_right_led_on(led); + } else { + ergodox_right_led_off(led); + } +} + +static inline void indicate_caps_lock_state(const bool enabled) { + indicate_using_led(1, enabled); +} + +static inline void indicate_arrows_layer_state(const bool enabled) { + indicate_using_led(2, enabled); +} + +static inline void indicate_mouse_layer_state(const bool enabled) { + indicate_using_led(3, enabled); +} + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + // Check if we have shift locked. + indicate_caps_lock_state(caps_lock_is_on); + indicate_arrows_layer_state(IS_LAYER_ON(ARROWS)); + indicate_mouse_layer_state(IS_LAYER_ON(MOUSE)); +}; diff --git a/keyboards/ergodox/keymaps/videck/readme.md b/keyboards/ergodox/keymaps/videck/readme.md new file mode 100644 index 0000000000..759e81bac5 --- /dev/null +++ b/keyboards/ergodox/keymaps/videck/readme.md @@ -0,0 +1,24 @@ +ViDeck keymap for ErgoDox +========================= + +This is a QWERTY layout based on the US layout, where Vi functionality has been +especially considered. + +# Features +* Mouse movements using the Vi movement keys. +* Vi movement keys doubling as arrow keys. +* Shift lock using double tap. +* A coder's modifier key for easy input of parenthesis. +* Acess to the escape key using either thumb. +* Reasonably accessible Scroll Lock key (useful if you, like me, want to switch + to a non-US layout once in a while in X). + +# Missing keys +* Caps Lock (shift lock is used instead). +* Pause/Break. +* Print Screen. + +# LEDs +* Shift lock is indicated using first LED. +* Arrow keys layer is indicated using second LED. +* Mouse keys layer is indicated using third LED. diff --git a/keyboards/ergodox/keymaps/videck/videck.json b/keyboards/ergodox/keymaps/videck/videck.json new file mode 100644 index 0000000000..7068cf5485 --- /dev/null +++ b/keyboards/ergodox/keymaps/videck/videck.json @@ -0,0 +1,443 @@ +[ + { + "backcolor": "#333333", + "background": { + "name": "PBT Black", + "style": "background-image: url('/bg/plastic/pbt-black.png');" + }, + "switchMount": "cherry", + "switchBrand": "gateron", + "switchType": "KS-3-Red" + }, + [ + { + "x": 3.5, + "c": "#323232", + "t": "#ffffff\n\n\n#ac97d8" + }, + "#\n3\n\nF3", + { + "x": 10.5 + }, + "*\n8\n\nF8" + ], + [ + { + "y": -0.875, + "x": 2.5 + }, + "@\n2\n\nF2", + { + "x": 1 + }, + "$\n4\n\nF4", + { + "x": 8.5 + }, + "&\n7\n\nF7", + { + "x": 1, + "t": "#ffffff\n\n\n#ac97d8\n\n\n\n#555454" + }, + "(\n9\n\nF9" + ], + [ + { + "y": -0.875, + "x": 5.5, + "t": "#ffffff\n\n\n#ac97d8" + }, + "%\n5\n\nF5", + { + "t": "#ffffff" + }, + "home", + { + "x": 4.5 + }, + "pgup", + { + "t": "#ffffff\n\n\n#ac97d8" + }, + "^\n6\n\nF6" + ], + [ + { + "y": -0.875, + "t": "#ffffff", + "w": 1.5 + }, + "~\n`", + { + "t": "#ffffff\n\n\n#ac97d8" + }, + "!\n1\n\nF1", + { + "x": 14.5 + }, + ")\n0\n\nF10", + { + "w": 1.5 + }, + "_\n-\n\nF11" + ], + [ + { + "y": -0.375, + "x": 3.5, + "t": "#ffffff" + }, + "E", + { + "x": 10.5 + }, + "I" + ], + [ + { + "y": -0.875, + "x": 2.5 + }, + "W", + { + "x": 1 + }, + "R", + { + "x": 8.5 + }, + "U", + { + "x": 1, + "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615" + }, + "O\n\n\n\n\n\n\n\n\n{" + ], + [ + { + "y": -0.875, + "x": 5.5, + "t": "#ffffff" + }, + "T", + { + "h": 1.5 + }, + "end", + { + "x": 4.5, + "h": 1.5 + }, + "pgdn", + "Y" + ], + [ + { + "y": -0.875, + "w": 1.5 + }, + "+\n=", + "Q", + { + "x": 14.5, + "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615" + }, + "P\n\n\n\n\n\n\n\n\n}", + { + "t": "#ffffff\n\n\n#ac97d8", + "w": 1.5 + }, + "|\n\\\n\nF12" + ], + [ + { + "y": -0.375, + "x": 3.5, + "t": "#ffffff" + }, + "D", + { + "x": 10.5, + "t": "#ffffff\n\n#5eb1e7\n#ac97d8" + }, + "K\n\n\n" + ], + [ + { + "y": -0.875, + "x": 2.5, + "t": "#ffffff" + }, + "S", + { + "x": 1, + "n": true + }, + "F", + { + "x": 8.5, + "t": "#ffffff\n\n#5eb1e7\n#ac97d8", + "n": true + }, + "J\n\n\n", + { + "x": 1, + "t": "#ffffff\n\n#5eb1e7\n#ac97d8\n\n\n\n\n\n#f8d615" + }, + "L\n\n\n\n\n\n\n\n\n(" + ], + [ + { + "y": -0.875, + "x": 5.5, + "t": "#ffffff" + }, + "G", + { + "x": 6.5, + "t": "#ffffff\n\n#5eb1e7\n#ac97d8" + }, + "H\n\n\n" + ], + [ + { + "y": -0.875, + "t": "#f8d615", + "a": 6, + "w": 1.5 + }, + "( ) [ ] { }", + { + "t": "#ffffff", + "a": 4 + }, + "A", + { + "x": 14.5, + "t": "#ffffff\n\n\n\n\n\n\n#60605b\n\n#f8d615" + }, + ":\n;\n\n\n\n\n\nÖ\n\n)", + { + "t": "#ffffff\n\n\n\n\n\n\n#60605b", + "w": 1.5 + }, + "\"\n'\n\n\n\n\n\nÄ" + ], + [ + { + "y": -0.625, + "x": 6.5, + "t": "#ffffff", + "h": 1.5 + }, + "", + { + "x": 4.5, + "h": 1.5 + }, + "" + ], + [ + { + "y": -0.75, + "x": 3.5 + }, + "C", + { + "x": 10.5 + }, + "<\n," + ], + [ + { + "y": -0.875, + "x": 2.5 + }, + "X", + { + "x": 1 + }, + "V", + { + "x": 8.5 + }, + "M", + { + "x": 1, + "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615" + }, + ">\n.\n\n\n\n\n\n\n\n[" + ], + [ + { + "y": -0.875, + "x": 5.5, + "t": "#ffffff" + }, + "B", + { + "x": 6.5 + }, + "N" + ], + [ + { + "y": -0.875, + "t": "#ffffff\n\n#f67f00", + "a": 6, + "fa": [ + 5 + ], + "w": 1.5 + }, + "⇑\n\n2-tap
locks", + { + "t": "#ffffff", + "a": 4, + "f": 3 + }, + "Z", + { + "x": 14.5, + "t": "#ffffff\n\n\n\n\n\n\n\n\n#f8d615", + "f": 3 + }, + "?\n/\n\n\n\n\n\n\n\n]", + { + "t": "#ffffff\n\n#f67f00", + "a": 6, + "f": 3, + "w": 1.5 + }, + "⇑\n\n2-tap
locks" + ], + [ + { + "y": -0.375, + "x": 3.5, + "t": "#ffffff", + "a": 4 + }, + "\n", + { + "x": 10.5, + "f": 3 + }, + "}\n]" + ], + [ + { + "y": -0.875, + "x": 2.5 + }, + "\n", + { + "x": 1 + }, + "\n", + { + "x": 8.5, + "t": "#ffffff\n\n\n\n\n\n\n#60605b", + "f": 3 + }, + "{\n[\n\n\n\n\n\nÅ", + { + "x": 1, + "t": "#ffffff", + "f": 3 + }, + "+\n=" + ], + [ + { + "y": -0.75, + "x": 0.5, + "f": 3 + }, + "ctrl", + { + "f": 3 + }, + "alt", + { + "x": 14.5, + "f": 3 + }, + "altgr", + { + "f": 3 + }, + "ctrl" + ], + [ + { + "r": 30, + "rx": 6.5, + "ry": 4.25, + "y": -1, + "x": 1, + "t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7", + "f": 3 + }, + "esc\n\n\n\n\n\n\n\n\n\nM", + { + "t": "#ffffff", + "f": 7 + }, + "" + ], + [ + { + "t": "#ffffff\n\n\n\n\n\n\n\n\n\n#5eb1e7", + "f": 3, + "h": 2 + }, + "space\n\n\n\n\n\n\n\n\n\nL", + { + "h": 2 + }, + "\n\n\n\n\n\n\n\n\n\nR", + { + "t": "#5eb1e7" + }, + "" + ], + [ + { + "x": 2, + "t": "#ac97d8" + }, + "" + ], + [ + { + "r": -30, + "rx": 13, + "y": -1, + "x": -3, + "t": "#ffffff" + }, + "", + "esc" + ], + [ + { + "x": -3 + }, + "ins", + { + "h": 2 + }, + "", + { + "h": 2 + }, + "space" + ], + [ + { + "x": -3 + }, + "scroll
lock" + ] +] \ No newline at end of file diff --git a/keyboards/ergodox/keymaps/videck/videck.png b/keyboards/ergodox/keymaps/videck/videck.png new file mode 100644 index 0000000000000000000000000000000000000000..c99323f53b1849872b261310a197addba435fe41 GIT binary patch literal 106851 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 f Date: Sun, 13 Nov 2016 23:02:38 -0500 Subject: [PATCH 078/727] mostly working --- keyboards/ergodox/ez/ez.c | 10 ++- keyboards/ergodox/ez/matrix.c | 2 +- keyboards/ergodox/keymaps/jack/Makefile | 1 + keyboards/ergodox/keymaps/jack/config.h | 4 +- quantum/light_ws2812.c | 21 +++-- quantum/light_ws2812.h | 14 +++- quantum/quantum.c | 1 + quantum/rgblight.c | 101 ++++++++++++------------ quantum/rgblight.h | 10 ++- tmk_core/protocol/lufa/lufa.c | 33 +++++++- 10 files changed, 125 insertions(+), 72 deletions(-) diff --git a/keyboards/ergodox/ez/ez.c b/keyboards/ergodox/ez/ez.c index ddb8ff0cf7..039e4c6bb1 100644 --- a/keyboards/ergodox/ez/ez.c +++ b/keyboards/ergodox/ez/ez.c @@ -16,10 +16,10 @@ void matrix_init_kb(void) { // unused pins - C7, D4, D5, D7, E6 // set as input with internal pull-ip enabled DDRC &= ~(1<<7); - DDRD &= ~(1<<7 | 1<<5 | 1<<4); + DDRD &= ~(1<<5 | 1<<4); DDRE &= ~(1<<6); PORTC |= (1<<7); - PORTD |= (1<<7 | 1<<5 | 1<<4); + PORTD |= (1<<5 | 1<<4); PORTE |= (1<<6); ergodox_blink_all_leds(); @@ -51,6 +51,10 @@ uint8_t init_mcp23018(void) { mcp23018_status = 0x20; // I2C subsystem + + uint8_t sreg_prev; + sreg_prev=SREG; + cli(); if (i2c_initialized == 0) { i2c_init(); // on pins D(1,0) i2c_initialized++; @@ -79,6 +83,8 @@ uint8_t init_mcp23018(void) { out: i2c_stop(); + SREG=sreg_prev; + return mcp23018_status; } diff --git a/keyboards/ergodox/ez/matrix.c b/keyboards/ergodox/ez/matrix.c index a19bab90b2..43f5152591 100644 --- a/keyboards/ergodox/ez/matrix.c +++ b/keyboards/ergodox/ez/matrix.c @@ -121,7 +121,7 @@ void matrix_init(void) matrix_scan_count = 0; #endif - matrix_init_kb(); + matrix_init_quantum(); } diff --git a/keyboards/ergodox/keymaps/jack/Makefile b/keyboards/ergodox/keymaps/jack/Makefile index 1e57612788..7c257af501 100644 --- a/keyboards/ergodox/keymaps/jack/Makefile +++ b/keyboards/ergodox/keymaps/jack/Makefile @@ -1,4 +1,5 @@ RGBLIGHT_ENABLE = yes +MIDI_ENABLE = yes ifndef QUANTUM_DIR include ../../../../Makefile diff --git a/keyboards/ergodox/keymaps/jack/config.h b/keyboards/ergodox/keymaps/jack/config.h index 1781563b84..5bf109c184 100644 --- a/keyboards/ergodox/keymaps/jack/config.h +++ b/keyboards/ergodox/keymaps/jack/config.h @@ -5,10 +5,12 @@ /* ws2812 RGB LED */ #define RGB_DI_PIN D7 -// #define RGBLIGHT_TIMER +#define RGBLIGHT_TIMER #define RGBLED_NUM 15 // Number of LEDs #define RGBLIGHT_HUE_STEP 12 #define RGBLIGHT_SAT_STEP 255 #define RGBLIGHT_VAL_STEP 12 +#define RGB_MIDI + #endif \ No newline at end of file diff --git a/quantum/light_ws2812.c b/quantum/light_ws2812.c index 497543339b..6edbc0f2bd 100755 --- a/quantum/light_ws2812.c +++ b/quantum/light_ws2812.c @@ -133,13 +133,13 @@ unsigned char I2C_Write(unsigned char c) #endif // Setleds for standard RGB -void inline ws2812_setleds(struct cRGB *ledarray, uint16_t leds) +void inline ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) { // ws2812_setleds_pin(ledarray,leds, _BV(ws2812_pin)); ws2812_setleds_pin(ledarray,leds, _BV(RGB_DI_PIN & 0xF)); } -void inline ws2812_setleds_pin(struct cRGB *ledarray, uint16_t leds, uint8_t pinmask) +void inline ws2812_setleds_pin(LED_TYPE *ledarray, uint16_t leds, uint8_t pinmask) { // ws2812_DDRREG |= pinmask; // Enable DDR // new universal format (DDR) @@ -150,12 +150,15 @@ void inline ws2812_setleds_pin(struct cRGB *ledarray, uint16_t leds, uint8_t pin } // Setleds for SK6812RGBW -void inline ws2812_setleds_rgbw(struct cRGBW *ledarray, uint16_t leds) +void inline ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t leds) { #ifdef RGBW_BB_TWI + uint8_t sreg_prev, twcr_prev; + sreg_prev=SREG; + twcr_prev=TWCR; cli(); - TWCR = 0; + TWCR &= ~(1<> 8) & 0xff; - OCR3AL = RGBLED_TIMER_TOP & 0xff; - SREG = sreg; + // static uint8_t rgblight_timer_is_init = 0; + // if (rgblight_timer_is_init) { + // return; + // } + // rgblight_timer_is_init = 1; + // /* Timer 3 setup */ + // TCCR3B = _BV(WGM32) // CTC mode OCR3A as TOP + // | _BV(CS30); // Clock selelct: clk/1 + // /* Set TOP value */ + // uint8_t sreg = SREG; + // cli(); + // OCR3AH = (RGBLED_TIMER_TOP >> 8) & 0xff; + // OCR3AL = RGBLED_TIMER_TOP & 0xff; + // SREG = sreg; + + rgblight_timer_enabled = true; } void rgblight_timer_enable(void) { - TIMSK3 |= _BV(OCIE3A); + rgblight_timer_enabled = true; dprintf("TIMER3 enabled.\n"); } void rgblight_timer_disable(void) { - TIMSK3 &= ~_BV(OCIE3A); + rgblight_timer_enabled = false; dprintf("TIMER3 disabled.\n"); } void rgblight_timer_toggle(void) { - TIMSK3 ^= _BV(OCIE3A); + rgblight_timer_enabled ^= rgblight_timer_enabled; dprintf("TIMER3 toggled.\n"); } -ISR(TIMER3_COMPA_vect) { - // mode = 1, static light, do nothing here - if (rgblight_config.mode >= 2 && rgblight_config.mode <= 5) { - // mode = 2 to 5, breathing mode - rgblight_effect_breathing(rgblight_config.mode - 2); - } else if (rgblight_config.mode >= 6 && rgblight_config.mode <= 8) { - // mode = 6 to 8, rainbow mood mod - rgblight_effect_rainbow_mood(rgblight_config.mode - 6); - } else if (rgblight_config.mode >= 9 && rgblight_config.mode <= 14) { - // mode = 9 to 14, rainbow swirl mode - rgblight_effect_rainbow_swirl(rgblight_config.mode - 9); - } else if (rgblight_config.mode >= 15 && rgblight_config.mode <= 20) { - // mode = 15 to 20, snake mode - rgblight_effect_snake(rgblight_config.mode - 15); - } else if (rgblight_config.mode >= 21 && rgblight_config.mode <= 23) { - // mode = 21 to 23, knight mode - rgblight_effect_knight(rgblight_config.mode - 21); +void rgblight_task(void) { + if (rgblight_timer_enabled) { + // mode = 1, static light, do nothing here + if (rgblight_config.mode >= 2 && rgblight_config.mode <= 5) { + // mode = 2 to 5, breathing mode + rgblight_effect_breathing(rgblight_config.mode - 2); + } else if (rgblight_config.mode >= 6 && rgblight_config.mode <= 8) { + // mode = 6 to 8, rainbow mood mod + rgblight_effect_rainbow_mood(rgblight_config.mode - 6); + } else if (rgblight_config.mode >= 9 && rgblight_config.mode <= 14) { + // mode = 9 to 14, rainbow swirl mode + rgblight_effect_rainbow_swirl(rgblight_config.mode - 9); + } else if (rgblight_config.mode >= 15 && rgblight_config.mode <= 20) { + // mode = 15 to 20, snake mode + rgblight_effect_snake(rgblight_config.mode - 15); + } else if (rgblight_config.mode >= 21 && rgblight_config.mode <= 23) { + // mode = 21 to 23, knight mode + rgblight_effect_knight(rgblight_config.mode - 21); + } } } @@ -461,7 +462,7 @@ void rgblight_effect_rainbow_swirl(uint8_t interval) { last_timer = timer_read(); for (i = 0; i < RGBLED_NUM; i++) { hue = (360 / RGBLED_NUM * i + current_hue) % 360; - sethsv(hue, rgblight_config.sat, rgblight_config.val, &led[i]); + sethsv(hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[i]); } rgblight_set(); @@ -498,7 +499,7 @@ void rgblight_effect_snake(uint8_t interval) { k = k + RGBLED_NUM; } if (i == k) { - sethsv(rgblight_config.hue, rgblight_config.sat, (uint8_t)(rgblight_config.val*(RGBLIGHT_EFFECT_SNAKE_LENGTH-j)/RGBLIGHT_EFFECT_SNAKE_LENGTH), &led[i]); + sethsv(rgblight_config.hue, rgblight_config.sat, (uint8_t)(rgblight_config.val*(RGBLIGHT_EFFECT_SNAKE_LENGTH-j)/RGBLIGHT_EFFECT_SNAKE_LENGTH), (LED_TYPE *)&led[i]); } } } @@ -518,7 +519,7 @@ void rgblight_effect_knight(uint8_t interval) { static uint16_t last_timer = 0; uint8_t i, j, cur; int8_t k; - struct cRGB preled[RGBLED_NUM]; + LED_TYPE preled[RGBLED_NUM]; static int8_t increment = -1; if (timer_elapsed(last_timer) < pgm_read_byte(&RGBLED_KNIGHT_INTERVALS[interval])) { return; @@ -537,7 +538,7 @@ void rgblight_effect_knight(uint8_t interval) { k = RGBLED_NUM - 1; } if (i == k) { - sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, &preled[i]); + sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&preled[i]); } } } diff --git a/quantum/rgblight.h b/quantum/rgblight.h index efc685f312..d16ba24e53 100644 --- a/quantum/rgblight.h +++ b/quantum/rgblight.h @@ -1,8 +1,6 @@ #ifndef RGBLIGHT_H #define RGBLIGHT_H -#define RGBW 1 - #if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) #define RGBLIGHT_MODES 23 #else @@ -35,6 +33,7 @@ #endif #define RGBLED_TIMER_TOP F_CPU/(256*64) +// #define RGBLED_TIMER_TOP 0xFF10 #include #include @@ -79,10 +78,13 @@ void eeconfig_update_rgblight(uint32_t val); void eeconfig_update_rgblight_default(void); void eeconfig_debug_rgblight(void); -void sethsv(uint16_t hue, uint8_t sat, uint8_t val, struct cRGB *led1); -void setrgb(uint8_t r, uint8_t g, uint8_t b, struct cRGB *led1); +void sethsv(uint16_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1); +void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1); void rgblight_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val); + +void rgblight_task(void); + void rgblight_timer_init(void); void rgblight_timer_enable(void); void rgblight_timer_disable(void); diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 01c0e45b0b..fe466f6047 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -71,6 +71,10 @@ #include "virtser.h" #endif +#ifdef RGB_MIDI + #include "rgblight.h" +#endif + uint8_t keyboard_idle = 0; /* 0: Boot Protocol, 1: Report Protocol(default) */ uint8_t keyboard_protocol = 1; @@ -1045,6 +1049,10 @@ int main(void) #endif keyboard_task(); +#ifdef RGBLIGHT_ENABLE + rgblight_task(); +#endif + #ifdef VIRTSER_ENABLE virtser_task(); CDC_Device_USBTask(&cdc_device); @@ -1077,15 +1085,34 @@ void fallthrough_callback(MidiDevice * device, #endif } +#ifdef RGB_MIDI + rgblight_config_t rgblight_config; +#endif + void cc_callback(MidiDevice * device, uint8_t chan, uint8_t num, uint8_t val) { //sending it back on the next channel - midi_send_cc(device, (chan + 1) % 16, num, val); + // midi_send_cc(device, (chan + 1) % 16, num, val); + #ifdef RGB_MIDI + rgblight_config.raw = eeconfig_read_rgblight(); + switch (num) { + case 14: + rgblight_config.hue = val * 360 / 127; + break; + case 15: + rgblight_config.sat = val << 1; + break; + case 16: + rgblight_config.val = val << 1; + break; + } + rgblight_sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val); + #endif } void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t * data) { - for (int i = 0; i < length; i++) - midi_send_cc(device, 15, 0x7F & data[i], 0x7F & (start + i)); + // for (int i = 0; i < length; i++) + // midi_send_cc(device, 15, 0x7F & data[i], 0x7F & (start + i)); } #endif From 702405f0391463cc5d0c8c8109304ac8d0ec844a Mon Sep 17 00:00:00 2001 From: Noah Andrews Date: Mon, 14 Nov 2016 10:03:18 -0500 Subject: [PATCH 079/727] Recommend WSL on Windows 10 At this point, I consider the batch scripts @IBNobody and I worked on to mostly be a failure. They've proven to be unreliable, too dependent on the environment they're being run in, and I've seen far too many examples of people having frustrating issues with them that I haven't been able to help them with. They can also produce misleading and confusing error messages. I've been pointing people to use the WSL for a while now. Eventually, I think we should make a proper replacement for the batch scripts, possibly with an environment in msys2. For now, the WSL method in Windows 10 is far more reliable, and is easy to set up. I also cleaned up some things in the WSL instructions themselves. --- readme.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/readme.md b/readme.md index d5a259ccb8..4eed2c776b 100644 --- a/readme.md +++ b/readme.md @@ -45,19 +45,19 @@ Before you are able to compile, you'll need to install an environment for AVR de ### Windows 10 -It's still recommended to use the method for Vista and later below. The reason for this is that the Windows 10 Subsystem for Linux lacks [USB support](https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/13355724-unable-to-access-usb-devices-from-bash), so it's not possible to flash the firmware to the keyboard. Please add your vote to the link! +Due to some issues with the "Windows (Vista and later)" instructions below, we now recommend following these instructions if you use Windows, which will allow you to use the Windows Subsystem for Linux to compile the firmware. If you are not using Windows 10 with the Anniversary Update installed (which came out in July 2016), you will need to use one of the other methods, such as Docker, Vagrant, or the instructions for Vista and later. -That said, it's still possible to use it for compilation. And recommended, if you need to compile much, since it's much faster than at least Cygwin (which is also supported, but currently lacking documentation). I haven't tried the method below, so I'm unable to tell. +If you use this method, you will need to use a standalone tool to flash the firmware to the keyboard after you compile it. We recommend the official [QMK Firmware Flasher](https://github.com/jackhumbert/qmk_firmware_flasher/releases). This is because the Windows 10 Subsystem for Linux lacks [libUSB support](https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/13355724-unable-to-access-usb-devices-from-bash), so it can't access the keyboard's microcontroller. Please add your vote for Microsoft to fix this issue using the link! Here are the steps 1. Install the Windows 10 subsystem for Linux, following [these instructions](http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/). -2. If you have previously cloned the repository using the normal Git bash, you will need to clean up the line endings. If you have cloned it after 20th of August 2016, you are likely fine. To clean up the line endings do the following - 1. Make sure that you have no changes you haven't committed by running `git status`, if you do commit them first - 2. From within the Git bash run `git rm --cached -r .` - 3. Followed by `git reset --hard` -3. Start the "Bash On Ubuntu On Windows" from the start menu -4. With the bash open, navigate to your Git checkout. The harddisk can be accessed from `/mnt` for example `/mnt/c` for the `c:\` drive. +2. If you have cloned the repository using git before August 20, 2016, clean up the line endings from wherever you currently access git: + 1. Make sure that you have no changes you haven't committed by running `git status`. ANY UNCOMMITTED CHANGES WILL BE PERMANENTLY LOST. + 2. Run `git rm --cached -r .` + 3. Run `git reset --hard` +3. Open "Bash On Ubuntu On Windows" from the start menu +4. With the bash window open, navigate to your copy of the [qmk_firmware repository](https://github.com/jackhumbert/qmk_firmware) using the `cd` command. The harddisks can be accessed from `/mnt/`. For example, your main hard drive (C:) can be accessed by executiing the command `cd /mnt/c`. If your username is John and the qmk_firmware folder is in your Downloads folder, you can move to it with the command `cd /mnt/c/Users/John/Downloads/qmk_firmware`. You can use the Tab key as you go to help you autocomplete the folder names. 5. Run `sudo util/install_dependencies.sh`. 6. After a while the installation will finish, and you are good to go @@ -1305,4 +1305,4 @@ This will add a traced variable named "layer" (the name is just for your informa In order to actually detect changes to the variables you should call `VERIFY_TRACED_VARIABLES` around the code that you think that modifies the variable. If a variable is modified it will tell you between which two `VERIFY_TRACED_VARIABLES` calls the modification happened. You can then add more calls to track it down further. I don't recommend spamming the codebase with calls. It's better to start with a few, and then keep adding them in a binary search fashion. You can also delete the ones you don't need, as each call need to store the file name and line number in the ROM, so you can run out of memory if you add too many calls. -Also remember to delete all the tracing code ones you have found the bug, as you wouldn't want to create a pull request with tracing code. \ No newline at end of file +Also remember to delete all the tracing code ones you have found the bug, as you wouldn't want to create a pull request with tracing code. From dd22c787b8b417df109d2136c76ce496dd7b93e3 Mon Sep 17 00:00:00 2001 From: climbalima Date: Mon, 14 Nov 2016 23:05:37 -0500 Subject: [PATCH 080/727] fixed extra paste --- keyboards/lets_split/config.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h index a5394c5e4d..bf04731162 100644 --- a/keyboards/lets_split/config.h +++ b/keyboards/lets_split/config.h @@ -105,7 +105,6 @@ along with this program. If not, see . #include "rev2/config.h" #endif #endif -======= -#endif ->>>>>>> 79f82d3d80a24483d14b078d325bb0f45af58e3d + + From bce6e52391da7c5f620c96a91857940f0dee19df Mon Sep 17 00:00:00 2001 From: climbalima Date: Mon, 14 Nov 2016 23:08:10 -0500 Subject: [PATCH 081/727] fixed conflict --- keyboards/lets_split/config.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h index bf04731162..059d45b0c0 100644 --- a/keyboards/lets_split/config.h +++ b/keyboards/lets_split/config.h @@ -28,8 +28,6 @@ along with this program. If not, see . #define PRODUCT Lets Split #define DESCRIPTION A split keyboard for the cheap makers -<<<<<<< HEAD -======= /* key matrix size */ // Rows are doubled-up #define MATRIX_ROWS 8 @@ -39,7 +37,6 @@ along with this program. If not, see . #define MATRIX_ROW_PINS { B5, B4, E6, D7 } #define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 } ->>>>>>> 79f82d3d80a24483d14b078d325bb0f45af58e3d #define CATERINA_BOOTLOADER // #define USE_I2C From 530dd3377e4d409a7ca2fee7e47b60b735ebc0fa Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 15 Nov 2016 13:18:10 -0500 Subject: [PATCH 082/727] animations, midi, etc --- quantum/light_ws2812.c | 1 - tmk_core/protocol/lufa/lufa.c | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/quantum/light_ws2812.c b/quantum/light_ws2812.c index 6edbc0f2bd..aac058f534 100755 --- a/quantum/light_ws2812.c +++ b/quantum/light_ws2812.c @@ -171,7 +171,6 @@ void inline ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t leds) } I2C_Stop(); SREG=sreg_prev; - // TWCR = (1< Date: Wed, 16 Nov 2016 15:44:26 -0600 Subject: [PATCH 083/727] dvorak/plover keyboard layout Plover's steno support likes quasi-qwerty, and gaming likes qwerty, and I like dvorak, so... what if I could have it all? Signed-off-by: seebs --- .../ergodox/keymaps/dvorak_plover/README.md | 14 ++ .../ergodox/keymaps/dvorak_plover/keymap.c | 230 ++++++++++++++++++ 2 files changed, 244 insertions(+) create mode 100644 keyboards/ergodox/keymaps/dvorak_plover/README.md create mode 100644 keyboards/ergodox/keymaps/dvorak_plover/keymap.c diff --git a/keyboards/ergodox/keymaps/dvorak_plover/README.md b/keyboards/ergodox/keymaps/dvorak_plover/README.md new file mode 100644 index 0000000000..c8287b0195 --- /dev/null +++ b/keyboards/ergodox/keymaps/dvorak_plover/README.md @@ -0,0 +1,14 @@ +Dvorak support, plover support, gaming support + +I'm used to the Kinesis, so originally I was just going to patch up +the thumb keys to be more familiar. But the ergodox is really well +suited to NKRO support in Plover, so I added a layer for that, and +then I remembered that dvorak can be really annoying for video +games (try to reach WASD), so I added a layer for that. + +The result is probably a bit idiosyncratic, but it works for me. + +(I also don't have any press/hold distinction keys, because that +confuses my fuzzy little brain.) + +Contributed by seebs (seebs@seebs.net) diff --git a/keyboards/ergodox/keymaps/dvorak_plover/keymap.c b/keyboards/ergodox/keymaps/dvorak_plover/keymap.c new file mode 100644 index 0000000000..d0505609d7 --- /dev/null +++ b/keyboards/ergodox/keymaps/dvorak_plover/keymap.c @@ -0,0 +1,230 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define PLVR 2 // media keys +#define QWRT 3 // qwerty layer for gaming + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | \ | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | ' | , | . | P | Y | L1 | | L2 | F | G | C | R | L | / | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | LGui | A | O | E | U | I |------| |------| D | H | T | N | S | - | + * |--------+------+------+------+------+------| Esc | | L3 |------+------+------+------+------+--------| + * | LShift | ; | Q | J | K | X | | | | B | M | W | V | Z | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Lalt | Grv | | Left | Right| | Up | Down | [ | ] | RAlt | + * `----------------------------------' `----------------------------------' + * ,-------------. ,---------------. + * | LCtrl| Alt | | LGui | RCtrl | + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * |Backsp|Delete|------| |------| Enter |Space | + * | ace| | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(SYMB), + KC_LGUI, KC_A, KC_O, KC_E, KC_U, KC_I, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_ESC, + KC_LALT, KC_GRV, KC_ESC, KC_LEFT,KC_RGHT, + KC_LCTL, KC_LALT, + KC_HOME, + KC_BSPC,KC_DEL,KC_END, + // right hand + KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, + TG(PLVR), KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, + KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + TG(QWRT),KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_RALT, + KC_LGUI, KC_RCTL, + KC_PGUP, + KC_PGDN,KC_ENT, KC_SPC + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | KP7 | KP8 | KP9 | KP* | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | KP4 | KP5 | KP6 | KP+ | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | KP1 | KP2 | KP3 | KP/ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | KP. | KP0 | KP= | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_P7, KC_P8, KC_P9, KC_PAST, KC_F12, + KC_DOWN, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_TRNS, + KC_TRNS,KC_PDOT, KC_P0, KC_PEQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Steno for Plover from https://github.com/shayneholmes/tmk_keyboard/commit/11290f8489013018f778627db725160c745e75bd + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | 1 | 2 | 3 | 4 | 5 | | | L2 | 6 | 7 | 8 | 9 | 0 | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | q | w | e | r | t |------| |------| y | u | i | o | p | [ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | a | s | d | f | g | | | | h | j | k | l | ; | ' | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | c | v |------| |------| n | m | + * | | | | | | | | + * `--------------------' `--------------------' + */ + +[PLVR] = KEYMAP( // layout: layer 2: Steno for Plover + // left hand + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, + KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, + KC_NO, KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_FN4, KC_NO, + KC_NO, + KC_C, KC_V, KC_NO, + // right hand + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, + TG(2), KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, + KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, + KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_NO, KC_N, KC_M +), +/* Keymap 3: qwerty-ish + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | LGui | A | S | D | F | G |------| |------| H | J | K | L | ; | LGui | + * |--------+------+------+------+------+------| Spc | | L3 |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | Lalt | Grv | '" | Left | Right| | Up | Down | [ | ] | RAlt | + * `----------------------------------' `----------------------------------' + * ,-------------. ,---------------. + * | LCtrl| LAlt | | LGui | RCtrl | + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * |Backsp|Delete|------| |------| Enter |Space | + * | ace| | End | | PgDn | | | + * `--------------------' `----------------------' + */ +[QWRT] = KEYMAP( // layer 3: qwerty for gaming + // left hand + KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), + KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPACE, + KC_LALT, KC_GRV, KC_QUOT, KC_LEFT,KC_RGHT, + KC_LCTL, KC_LALT, + KC_HOME, + KC_BSPC,KC_DEL,KC_END, + // right hand + KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + TG(QWRT), KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_RALT, + KC_LGUI, KC_RCTL, + KC_PGUP, + KC_PGDN,KC_ENT, KC_SPC + ), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + case 3: + ergodox_right_led_3_on(); + break; + default: + // none + break; + } + +}; From 1dd6ceb45dfcf5f0991b84fea5a761a35df7fcda Mon Sep 17 00:00:00 2001 From: climbalima Date: Wed, 16 Nov 2016 19:18:54 -0500 Subject: [PATCH 084/727] Updated my repo to current qmk --- keyboards/lets_split/config.h | 48 +----- keyboards/lets_split/keymaps/default/keymap.c | 12 +- keyboards/lets_split/lets_split.c | 30 ---- keyboards/lets_split/lets_split.h | 26 +-- keyboards/lets_split/rev1/Makefile | 3 + keyboards/lets_split/rev1/config.h | 102 +++++++++++ keyboards/lets_split/rev1/rev1.c | 32 ++++ keyboards/lets_split/rev1/rev1.h | 25 +++ keyboards/lets_split/rev1/rules.mk | 5 + keyboards/lets_split/rev2/Makefile | 3 + keyboards/lets_split/rev2/config.h | 102 +++++++++++ keyboards/lets_split/rev2/rev2.c | 32 ++++ keyboards/lets_split/rev2/rev2.h | 25 +++ keyboards/lets_split/rev2/rules.mk | 5 + keyboards/lets_split/rules.mk | 7 +- keyboards/maxipad/Makefile | 3 + keyboards/maxipad/config.h | 162 ++++++++++++++++++ keyboards/maxipad/keymaps/default/Makefile | 21 +++ keyboards/maxipad/keymaps/default/config.h | 8 + keyboards/maxipad/keymaps/default/keymap.c | 54 ++++++ keyboards/maxipad/keymaps/default/readme.md | 1 + keyboards/maxipad/maxipad.c | 28 +++ keyboards/maxipad/maxipad.h | 25 +++ keyboards/maxipad/readme.md | 28 +++ keyboards/maxipad/rules.mk | 67 ++++++++ 25 files changed, 756 insertions(+), 98 deletions(-) create mode 100644 keyboards/lets_split/rev1/Makefile create mode 100644 keyboards/lets_split/rev1/config.h create mode 100644 keyboards/lets_split/rev1/rev1.c create mode 100644 keyboards/lets_split/rev1/rev1.h create mode 100644 keyboards/lets_split/rev1/rules.mk create mode 100644 keyboards/lets_split/rev2/Makefile create mode 100644 keyboards/lets_split/rev2/config.h create mode 100644 keyboards/lets_split/rev2/rev2.c create mode 100644 keyboards/lets_split/rev2/rev2.h create mode 100644 keyboards/lets_split/rev2/rules.mk create mode 100644 keyboards/maxipad/Makefile create mode 100644 keyboards/maxipad/config.h create mode 100644 keyboards/maxipad/keymaps/default/Makefile create mode 100644 keyboards/maxipad/keymaps/default/config.h create mode 100644 keyboards/maxipad/keymaps/default/keymap.c create mode 100644 keyboards/maxipad/keymaps/default/readme.md create mode 100644 keyboards/maxipad/maxipad.c create mode 100644 keyboards/maxipad/maxipad.h create mode 100644 keyboards/maxipad/readme.md create mode 100644 keyboards/maxipad/rules.mk diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h index f4d900accb..5bee553199 100644 --- a/keyboards/lets_split/config.h +++ b/keyboards/lets_split/config.h @@ -28,29 +28,6 @@ along with this program. If not, see . #define PRODUCT Lets Split #define DESCRIPTION A split keyboard for the cheap makers -/* key matrix size */ -// Rows are doubled-up -#define MATRIX_ROWS 8 -#define MATRIX_COLS 6 - -// wiring of each half -#define MATRIX_ROW_PINS { B5, B4, E6, D7 } -#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 } - -#define CATERINA_BOOTLOADER - -// #define USE_I2C - -// Use serial if not using I2C -#ifndef USE_I2C -# define USE_SERIAL -#endif - -// #define EE_HANDS - -#define I2C_MASTER_LEFT -// #define I2C_MASTER_RIGHT - /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW @@ -72,25 +49,11 @@ along with this program. If not, see . #define IS_COMMAND() ( \ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) - -/* ws2812 RGB LED */ -#define RGB_DI_PIN D4 -#define RGBLIGHT_TIMER -#define RGBLED_NUM 8 // Number of LEDs -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - /* disable debug print */ -// #define NO_DEBUG +//#define NO_DEBUG /* disable print */ -// #define NO_PRINT +//#define NO_PRINT /* disable action features */ //#define NO_ACTION_LAYER @@ -98,5 +61,10 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - +#ifdef SUBPROJECT_rev1 + #include "rev1/config.h" +#endif +#ifdef SUBPROJECT_rev2 + #include "rev2/config.h" +#endif #endif diff --git a/keyboards/lets_split/keymaps/default/keymap.c b/keyboards/lets_split/keymaps/default/keymap.c index 0d2d94b672..fc41c01fdb 100644 --- a/keyboards/lets_split/keymaps/default/keymap.c +++ b/keyboards/lets_split/keymaps/default/keymap.c @@ -42,10 +42,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_QWERTY] = KEYMAP( \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ - ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ + KC_LCTL, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, MT(MOD_LSFT, KC_SPC), RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ ), /* Colemak @@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ + _______, _______, _______, _______, _______, KC_BSPC, MT(MOD_LSFT, KC_BSPC), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ ), /* Raise @@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ + _______, _______, _______, _______, _______, KC_ENT, MT(MOD_LSFT, KC_ENT), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ ), /* Adjust (Lower + Raise) @@ -134,7 +134,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = KEYMAP( \ _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ + _______, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ ) diff --git a/keyboards/lets_split/lets_split.c b/keyboards/lets_split/lets_split.c index c505d3a6e3..851299aa2b 100644 --- a/keyboards/lets_split/lets_split.c +++ b/keyboards/lets_split/lets_split.c @@ -1,32 +1,2 @@ #include "lets_split.h" -#ifdef AUDIO_ENABLE - float tone_startup[][2] = SONG(STARTUP_SOUND); - float tone_goodbye[][2] = SONG(GOODBYE_SOUND); -#endif - -void matrix_init_kb(void) { - - #ifdef AUDIO_ENABLE - _delay_ms(20); // gets rid of tick - PLAY_NOTE_ARRAY(tone_startup, false, 0); - #endif - - // // green led on - // DDRD |= (1<<5); - // PORTD &= ~(1<<5); - - // // orange led on - // DDRB |= (1<<0); - // PORTB &= ~(1<<0); - - matrix_init_user(); -}; - -void shutdown_user(void) { - #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_goodbye, false, 0); - _delay_ms(150); - stop_all_notes(); - #endif -} diff --git a/keyboards/lets_split/lets_split.h b/keyboards/lets_split/lets_split.h index fe7ae07679..2cdfb061f2 100644 --- a/keyboards/lets_split/lets_split.h +++ b/keyboards/lets_split/lets_split.h @@ -1,25 +1,13 @@ #ifndef LETS_SPLIT_H #define LETS_SPLIT_H +#ifdef SUBPROJECT_rev1 + #include "rev1.h" +#endif +#ifdef SUBPROJECT_rev2 + #include "rev2.h" +#endif + #include "quantum.h" -void promicro_bootloader_jmp(bool program); - -#define KEYMAP( \ - k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \ - k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \ - k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \ - k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \ - ) \ - { \ - { k00, k01, k02, k03, k04, k05 }, \ - { k10, k11, k12, k13, k14, k15 }, \ - { k20, k21, k22, k23, k24, k25 }, \ - { k30, k31, k32, k33, k34, k35 }, \ - { k40, k41, k42, k43, k44, k45 }, \ - { k50, k51, k52, k53, k54, k55 }, \ - { k60, k61, k62, k63, k64, k65 }, \ - { k70, k71, k72, k73, k74, k75 } \ - } - #endif \ No newline at end of file diff --git a/keyboards/lets_split/rev1/Makefile b/keyboards/lets_split/rev1/Makefile new file mode 100644 index 0000000000..4e2a6f00fd --- /dev/null +++ b/keyboards/lets_split/rev1/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/lets_split/rev1/config.h b/keyboards/lets_split/rev1/config.h new file mode 100644 index 0000000000..f4d900accb --- /dev/null +++ b/keyboards/lets_split/rev1/config.h @@ -0,0 +1,102 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x3060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Wootpatoot +#define PRODUCT Lets Split +#define DESCRIPTION A split keyboard for the cheap makers + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { B5, B4, E6, D7 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 } + +#define CATERINA_BOOTLOADER + +// #define USE_I2C + +// Use serial if not using I2C +#ifndef USE_I2C +# define USE_SERIAL +#endif + +// #define EE_HANDS + +#define I2C_MASTER_LEFT +// #define I2C_MASTER_RIGHT + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D4 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 8 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/lets_split/rev1/rev1.c b/keyboards/lets_split/rev1/rev1.c new file mode 100644 index 0000000000..c505d3a6e3 --- /dev/null +++ b/keyboards/lets_split/rev1/rev1.c @@ -0,0 +1,32 @@ +#include "lets_split.h" + +#ifdef AUDIO_ENABLE + float tone_startup[][2] = SONG(STARTUP_SOUND); + float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + +void matrix_init_kb(void) { + + #ifdef AUDIO_ENABLE + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif + + // // green led on + // DDRD |= (1<<5); + // PORTD &= ~(1<<5); + + // // orange led on + // DDRB |= (1<<0); + // PORTB &= ~(1<<0); + + matrix_init_user(); +}; + +void shutdown_user(void) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); + #endif +} diff --git a/keyboards/lets_split/rev1/rev1.h b/keyboards/lets_split/rev1/rev1.h new file mode 100644 index 0000000000..50bda03154 --- /dev/null +++ b/keyboards/lets_split/rev1/rev1.h @@ -0,0 +1,25 @@ +#ifndef REV1_H +#define REV1_H + +#include "../lets_split.h" + +//void promicro_bootloader_jmp(bool program); + +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \ + k10, k11, k12, k13, k14, k15, k50, k51, k52, k53, k54, k55, \ + k20, k21, k22, k23, k24, k25, k60, k61, k62, k63, k64, k65, \ + k30, k31, k32, k33, k34, k35, k70, k71, k72, k73, k74, k75 \ + ) \ + { \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { k40, k41, k42, k43, k44, k45 }, \ + { k50, k51, k52, k53, k54, k55 }, \ + { k60, k61, k62, k63, k64, k65 }, \ + { k70, k71, k72, k73, k74, k75 } \ + } + +#endif \ No newline at end of file diff --git a/keyboards/lets_split/rev1/rules.mk b/keyboards/lets_split/rev1/rules.mk new file mode 100644 index 0000000000..a0825b4ef6 --- /dev/null +++ b/keyboards/lets_split/rev1/rules.mk @@ -0,0 +1,5 @@ +BACKLIGHT_ENABLE = no + +ifndef QUANTUM_DIR + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/lets_split/rev2/Makefile b/keyboards/lets_split/rev2/Makefile new file mode 100644 index 0000000000..4e2a6f00fd --- /dev/null +++ b/keyboards/lets_split/rev2/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/lets_split/rev2/config.h b/keyboards/lets_split/rev2/config.h new file mode 100644 index 0000000000..cd152e331f --- /dev/null +++ b/keyboards/lets_split/rev2/config.h @@ -0,0 +1,102 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x3060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Wootpatoot +#define PRODUCT Lets Split v2 +#define DESCRIPTION A split keyboard for the cheap makers + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +// wiring of each half +#define MATRIX_ROW_PINS { D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 } + +#define CATERINA_BOOTLOADER + +// #define USE_I2C + +// Use serial if not using I2C +#ifndef USE_I2C +# define USE_SERIAL +#endif + +// #define EE_HANDS + +#define I2C_MASTER_LEFT +// #define I2C_MASTER_RIGHT + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D3 +#define RGBLIGHT_TIMER +#define RGBLED_NUM 12 // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/lets_split/rev2/rev2.c b/keyboards/lets_split/rev2/rev2.c new file mode 100644 index 0000000000..c505d3a6e3 --- /dev/null +++ b/keyboards/lets_split/rev2/rev2.c @@ -0,0 +1,32 @@ +#include "lets_split.h" + +#ifdef AUDIO_ENABLE + float tone_startup[][2] = SONG(STARTUP_SOUND); + float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +#endif + +void matrix_init_kb(void) { + + #ifdef AUDIO_ENABLE + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif + + // // green led on + // DDRD |= (1<<5); + // PORTD &= ~(1<<5); + + // // orange led on + // DDRB |= (1<<0); + // PORTB &= ~(1<<0); + + matrix_init_user(); +}; + +void shutdown_user(void) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); + #endif +} diff --git a/keyboards/lets_split/rev2/rev2.h b/keyboards/lets_split/rev2/rev2.h new file mode 100644 index 0000000000..a8b0f0f4c7 --- /dev/null +++ b/keyboards/lets_split/rev2/rev2.h @@ -0,0 +1,25 @@ +#ifndef REV2_H +#define REV2_H + +#include "../lets_split.h" + +//void promicro_bootloader_jmp(bool program); + +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ + k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \ + k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \ + k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \ + ) \ + { \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { k40, k41, k42, k43, k44, k45 }, \ + { k50, k51, k52, k53, k54, k55 }, \ + { k60, k61, k62, k63, k64, k65 }, \ + { k70, k71, k72, k73, k74, k75 } \ + } + +#endif \ No newline at end of file diff --git a/keyboards/lets_split/rev2/rules.mk b/keyboards/lets_split/rev2/rules.mk new file mode 100644 index 0000000000..80a942d06f --- /dev/null +++ b/keyboards/lets_split/rev2/rules.mk @@ -0,0 +1,5 @@ +BACKLIGHT_ENABLE = no + +ifndef QUANTUM_DIR + include ../../../Makefile +endif diff --git a/keyboards/lets_split/rules.mk b/keyboards/lets_split/rules.mk index 6fde8a444c..1aee5313c1 100644 --- a/keyboards/lets_split/rules.mk +++ b/keyboards/lets_split/rules.mk @@ -63,11 +63,12 @@ COMMAND_ENABLE ?= yes # Commands for debug and configuration NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality MIDI_ENABLE ?= no # MIDI controls -AUDIO_ENABLE ?= yes # Audio output on port C6 +AUDIO_ENABLE ?= no # Audio output on port C6 UNICODE_ENABLE ?= no # Unicode BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - +RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SUBPROJECT_rev1 ?= yes +USE_I2C ?= yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend diff --git a/keyboards/maxipad/Makefile b/keyboards/maxipad/Makefile new file mode 100644 index 0000000000..4e2a6f00fd --- /dev/null +++ b/keyboards/maxipad/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/maxipad/config.h b/keyboards/maxipad/config.h new file mode 100644 index 0000000000..2462a5cfda --- /dev/null +++ b/keyboards/maxipad/config.h @@ -0,0 +1,162 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER You +#define PRODUCT maxipad +#define DESCRIPTION A custom keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 6 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { B6, F7, B2, B3, B1 } +#define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/maxipad/keymaps/default/Makefile b/keyboards/maxipad/keymaps/default/Makefile new file mode 100644 index 0000000000..f4671a9d11 --- /dev/null +++ b/keyboards/maxipad/keymaps/default/Makefile @@ -0,0 +1,21 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/maxipad/keymaps/default/config.h b/keyboards/maxipad/keymaps/default/config.h new file mode 100644 index 0000000000..df06a26206 --- /dev/null +++ b/keyboards/maxipad/keymaps/default/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif \ No newline at end of file diff --git a/keyboards/maxipad/keymaps/default/keymap.c b/keyboards/maxipad/keymaps/default/keymap.c new file mode 100644 index 0000000000..8a9bc4f0d4 --- /dev/null +++ b/keyboards/maxipad/keymaps/default/keymap.c @@ -0,0 +1,54 @@ +#include "maxipad.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( /* Base */ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, \ + MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, \ + KC_LCTL, KC_LALT, MO(1), KC_ENT,KC_GRV,KC_SPC \ +), +[1] = KEYMAP( + KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, \ + KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, \ + KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, \ + 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[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + +} \ No newline at end of file diff --git a/keyboards/maxipad/keymaps/default/readme.md b/keyboards/maxipad/keymaps/default/readme.md new file mode 100644 index 0000000000..a6c0d4a3f0 --- /dev/null +++ b/keyboards/maxipad/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for maxipad \ No newline at end of file diff --git a/keyboards/maxipad/maxipad.c b/keyboards/maxipad/maxipad.c new file mode 100644 index 0000000000..879ae86a76 --- /dev/null +++ b/keyboards/maxipad/maxipad.c @@ -0,0 +1,28 @@ +#include "maxipad.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} diff --git a/keyboards/maxipad/maxipad.h b/keyboards/maxipad/maxipad.h new file mode 100644 index 0000000000..eee1309ddc --- /dev/null +++ b/keyboards/maxipad/maxipad.h @@ -0,0 +1,25 @@ +#ifndef MAXIPAD_H +#define MAXIPAD_H + +#include "quantum.h" + +// This a shortcut to help you visually see your layout. +// The following is an example using the Planck MIT layout +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, \ + k10, k11, k12, k13, k14, k15, \ + k20, k21, k22, k23, k24, k25, \ + k30, k31, k32, k33, k34, k35, \ + k40, k41, k42, k43, k44, k45 \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05 }, \ + { k10, k11, k12, k13, k14, k15 }, \ + { k20, k21, k22, k23, k24, k25 }, \ + { k30, k31, k32, k33, k34, k35 }, \ + { k40, k41, k42, k43, k44, k45} \ +} + +#endif diff --git a/keyboards/maxipad/readme.md b/keyboards/maxipad/readme.md new file mode 100644 index 0000000000..e722b66022 --- /dev/null +++ b/keyboards/maxipad/readme.md @@ -0,0 +1,28 @@ +maxipad keyboard firmware +====================== + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme](/). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/maxipad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make default`. + +### Other Keymaps + +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. + +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + +``` +$ make [default|jack|] +``` + +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/maxipad/rules.mk b/keyboards/maxipad/rules.mk new file mode 100644 index 0000000000..55898147dd --- /dev/null +++ b/keyboards/maxipad/rules.mk @@ -0,0 +1,67 @@ +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 From 21b6b4e6c4d6872164a13e8d31e3e0a9f146ea60 Mon Sep 17 00:00:00 2001 From: climbalima Date: Wed, 16 Nov 2016 19:49:38 -0500 Subject: [PATCH 085/727] should have fixed conflixed --- keyboards/lets_split/Makefile | 79 ------------------- keyboards/lets_split/config.h | 13 +-- keyboards/lets_split/keymaps/default/keymap.c | 19 ----- keyboards/lets_split/lets_split.c | 7 +- keyboards/lets_split/rev1/config.h | 26 ------ keyboards/lets_split/rev1/rev1.c | 6 -- keyboards/lets_split/rev1/rev1.h | 5 +- keyboards/lets_split/rev2/config.h | 18 +---- keyboards/lets_split/rev2/rev2.c | 6 -- keyboards/lets_split/rev2/rev2.h | 5 +- keyboards/maxipad/Makefile | 78 ------------------ keyboards/maxipad/config.h | 9 +-- keyboards/maxipad/keymaps/default/keymap.c | 7 +- 13 files changed, 10 insertions(+), 268 deletions(-) diff --git a/keyboards/lets_split/Makefile b/keyboards/lets_split/Makefile index 6ce6e43731..4e2a6f00fd 100644 --- a/keyboards/lets_split/Makefile +++ b/keyboards/lets_split/Makefile @@ -1,82 +1,3 @@ -<<<<<<< HEAD ifndef MAKEFILE_INCLUDED -======= -SRC += matrix.c \ - i2c.c \ - split_util.c \ - serial.c - -# MCU name -#MCU = at90usb1287 -MCU = atmega32u4 - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=4096 - -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration -NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality -MIDI_ENABLE ?= no # MIDI controls -AUDIO_ENABLE ?= yes # Audio output on port C6 -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -USE_I2C ?= yes -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend - -CUSTOM_MATRIX = yes -SUBPROJECT_DEFAULT = rev2 -ifndef QUANTUM_DIR ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df include ../../Makefile endif \ No newline at end of file diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h index 91b11f03fd..1b7bbcbbb9 100644 --- a/keyboards/lets_split/config.h +++ b/keyboards/lets_split/config.h @@ -61,20 +61,11 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -<<<<<<< HEAD -======= -<<<<<<< HEAD ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df + #ifdef SUBPROJECT_rev1 #include "rev1/config.h" #endif #ifdef SUBPROJECT_rev2 #include "rev2/config.h" #endif -#endif -<<<<<<< HEAD -======= - - - ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df +#endif \ No newline at end of file diff --git a/keyboards/lets_split/keymaps/default/keymap.c b/keyboards/lets_split/keymaps/default/keymap.c index 41b9b8d8ff..6f1f71f5f8 100644 --- a/keyboards/lets_split/keymaps/default/keymap.c +++ b/keyboards/lets_split/keymaps/default/keymap.c @@ -29,7 +29,6 @@ enum custom_keycodes { #define XXXXXXX KC_NO const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -<<<<<<< HEAD /* Qwerty * ,-----------------------------------------------------------------------------------. @@ -83,29 +82,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -======= -[0] = KEYMAP( \ - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \ - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ - KC_LCTL, _LOWER, KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df ), [3] = KEYMAP( \ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ -<<<<<<< HEAD _______, _______, _______, _______, _______, KC_BSPC, MT(MOD_LSFT, KC_BSPC), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ -======= - _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df ), [4] = KEYMAP( \ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ -<<<<<<< HEAD _______, _______, _______, _______, _______, KC_ENT, MT(MOD_LSFT, KC_ENT), _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ ), @@ -126,12 +113,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ ) - - -======= - _______, _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ -), ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df }; #ifdef AUDIO_ENABLE diff --git a/keyboards/lets_split/lets_split.c b/keyboards/lets_split/lets_split.c index 8bb33f9514..117b727a85 100644 --- a/keyboards/lets_split/lets_split.c +++ b/keyboards/lets_split/lets_split.c @@ -1,6 +1 @@ -#include "lets_split.h" - -<<<<<<< HEAD -======= - ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df +#include "lets_split.h" \ No newline at end of file diff --git a/keyboards/lets_split/rev1/config.h b/keyboards/lets_split/rev1/config.h index da5b476733..825e5ec245 100644 --- a/keyboards/lets_split/rev1/config.h +++ b/keyboards/lets_split/rev1/config.h @@ -25,11 +25,8 @@ along with this program. If not, see . #define PRODUCT_ID 0x3060 #define DEVICE_VER 0x0001 #define MANUFACTURER Wootpatoot -<<<<<<< HEAD #define PRODUCT Lets Split -======= #define PRODUCT Lets Split v1 ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df #define DESCRIPTION A split keyboard for the cheap makers /* key matrix size */ @@ -44,15 +41,11 @@ along with this program. If not, see . #define CATERINA_BOOTLOADER // #define USE_I2C - -<<<<<<< HEAD // Use serial if not using I2C #ifndef USE_I2C # define USE_SERIAL #endif -======= ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df // #define EE_HANDS #define I2C_MASTER_LEFT @@ -80,21 +73,6 @@ along with this program. If not, see . keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) -/* ws2812 RGB LED */ -<<<<<<< HEAD -#define RGB_DI_PIN D4 -#define RGBLIGHT_TIMER -#define RGBLED_NUM 8 // Number of LEDs -======= -#define ws2812_PORTREG PORTD -#define ws2812_DDRREG DDRD -#define ws2812_pin PD1 -#define RGBLED_NUM 28 // Number of LEDs ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 - /* * Feature disable options * These options are also useful to firmware size reduction. @@ -113,8 +91,4 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -<<<<<<< HEAD #endif -======= -#endif ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df diff --git a/keyboards/lets_split/rev1/rev1.c b/keyboards/lets_split/rev1/rev1.c index 41dd1e3535..c505d3a6e3 100644 --- a/keyboards/lets_split/rev1/rev1.c +++ b/keyboards/lets_split/rev1/rev1.c @@ -24,15 +24,9 @@ void matrix_init_kb(void) { }; void shutdown_user(void) { -<<<<<<< HEAD #ifdef AUDIO_ENABLE PLAY_NOTE_ARRAY(tone_goodbye, false, 0); _delay_ms(150); stop_all_notes(); #endif -======= - PLAY_NOTE_ARRAY(tone_goodbye, false, 0); - _delay_ms(150); - stop_all_notes(); ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df } diff --git a/keyboards/lets_split/rev1/rev1.h b/keyboards/lets_split/rev1/rev1.h index 998b2be7c7..4667c9fb09 100644 --- a/keyboards/lets_split/rev1/rev1.h +++ b/keyboards/lets_split/rev1/rev1.h @@ -1,15 +1,12 @@ #ifndef REV1_H #define REV1_H -<<<<<<< HEAD #include "../lets_split.h" //void promicro_bootloader_jmp(bool program); -======= #include "quantum.h" -void promicro_bootloader_jmp(bool program); ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df +//void promicro_bootloader_jmp(bool program); #define KEYMAP( \ k00, k01, k02, k03, k04, k05, k40, k41, k42, k43, k44, k45, \ diff --git a/keyboards/lets_split/rev2/config.h b/keyboards/lets_split/rev2/config.h index 19c137e56c..e9689d773d 100644 --- a/keyboards/lets_split/rev2/config.h +++ b/keyboards/lets_split/rev2/config.h @@ -41,14 +41,11 @@ along with this program. If not, see . // #define USE_I2C -<<<<<<< HEAD // Use serial if not using I2C #ifndef USE_I2C # define USE_SERIAL #endif -======= ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df // #define EE_HANDS #define I2C_MASTER_LEFT @@ -77,19 +74,11 @@ along with this program. If not, see . ) /* ws2812 RGB LED */ -<<<<<<< HEAD #define RGB_DI_PIN D3 #define RGBLIGHT_TIMER #define RGBLED_NUM 12 // Number of LEDs -======= #define ws2812_PORTREG PORTD #define ws2812_DDRREG DDRD -#define ws2812_pin PD1 -#define RGBLED_NUM 28 // Number of LEDs ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df -#define RGBLIGHT_HUE_STEP 10 -#define RGBLIGHT_SAT_STEP 17 -#define RGBLIGHT_VAL_STEP 17 /* * Feature disable options @@ -109,8 +98,5 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -<<<<<<< HEAD -#endif -======= -#endif ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df + +#endif \ No newline at end of file diff --git a/keyboards/lets_split/rev2/rev2.c b/keyboards/lets_split/rev2/rev2.c index 41dd1e3535..c505d3a6e3 100644 --- a/keyboards/lets_split/rev2/rev2.c +++ b/keyboards/lets_split/rev2/rev2.c @@ -24,15 +24,9 @@ void matrix_init_kb(void) { }; void shutdown_user(void) { -<<<<<<< HEAD #ifdef AUDIO_ENABLE PLAY_NOTE_ARRAY(tone_goodbye, false, 0); _delay_ms(150); stop_all_notes(); #endif -======= - PLAY_NOTE_ARRAY(tone_goodbye, false, 0); - _delay_ms(150); - stop_all_notes(); ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df } diff --git a/keyboards/lets_split/rev2/rev2.h b/keyboards/lets_split/rev2/rev2.h index 9e251ca57d..990976de2b 100644 --- a/keyboards/lets_split/rev2/rev2.h +++ b/keyboards/lets_split/rev2/rev2.h @@ -1,15 +1,12 @@ #ifndef REV2_H #define REV2_H -<<<<<<< HEAD #include "../lets_split.h" //void promicro_bootloader_jmp(bool program); -======= #include "quantum.h" -void promicro_bootloader_jmp(bool program); ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df +//void promicro_bootloader_jmp(bool program); #define KEYMAP( \ k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \ diff --git a/keyboards/maxipad/Makefile b/keyboards/maxipad/Makefile index c65665142a..57b2ef62e5 100644 --- a/keyboards/maxipad/Makefile +++ b/keyboards/maxipad/Makefile @@ -1,81 +1,3 @@ -<<<<<<< HEAD ifndef MAKEFILE_INCLUDED include ../../Makefile endif -======= - - -# MCU name -#MCU = at90usb1287 -MCU = atmega32u4 - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=512 - - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= yes # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 - -ifndef QUANTUM_DIR - include ../../Makefile -endif - - ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df diff --git a/keyboards/maxipad/config.h b/keyboards/maxipad/config.h index 4a942aae94..fbe64a5b0b 100644 --- a/keyboards/maxipad/config.h +++ b/keyboards/maxipad/config.h @@ -24,15 +24,10 @@ along with this program. If not, see . #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x6060 #define DEVICE_VER 0x0001 -<<<<<<< HEAD -#define MANUFACTURER You -#define PRODUCT maxipad -#define DESCRIPTION A custom keyboard -======= #define MANUFACTURER Wootpatoot #define PRODUCT maxipad -#define DESCRIPTION g8ming keeb ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df +#define DESCRIPTION A custom keyboard + /* key matrix size */ #define MATRIX_ROWS 5 diff --git a/keyboards/maxipad/keymaps/default/keymap.c b/keyboards/maxipad/keymaps/default/keymap.c index 5e3a594ccd..43ace32419 100644 --- a/keyboards/maxipad/keymaps/default/keymap.c +++ b/keyboards/maxipad/keymaps/default/keymap.c @@ -10,15 +10,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [1] = KEYMAP( KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, \ -<<<<<<< HEAD KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, \ -======= KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ ), }; From b085a34506bc981a7c7cdb270b7786d6a4cbf985 Mon Sep 17 00:00:00 2001 From: climbalima Date: Wed, 16 Nov 2016 20:44:49 -0500 Subject: [PATCH 086/727] fixed readme conflicts --- keyboards/maxipad/readme.md | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/keyboards/maxipad/readme.md b/keyboards/maxipad/readme.md index 1971ce1f36..ab7b122fe8 100644 --- a/keyboards/maxipad/readme.md +++ b/keyboards/maxipad/readme.md @@ -1,13 +1,7 @@ -maxipad keyboard firmware -====================== - ## Quantum MK Firmware -<<<<<<< HEAD For the full Quantum feature list, see [the parent readme](/). -======= -For the full Quantum feature list, see [the parent readme.md](/doc/readme.md). ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df + ## Building @@ -17,17 +11,13 @@ Depending on which keymap you would like to use, you will have to compile slight ### Default -<<<<<<< HEAD -To build with the default keymap, simply run `make default`. -======= To build with the default keymap, simply run `make`. ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df + ### Other Keymaps Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. -<<<<<<< HEAD To build the firmware binary hex file with a keymap just do `make` with a keymap like this: ``` @@ -35,12 +25,4 @@ $ make [default|jack|] ``` Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. -======= -To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: -``` -$ make keymap=[default|jack|] -``` - -Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df From 00d88b74ada77b7cbf452aaf622846f80d85d732 Mon Sep 17 00:00:00 2001 From: Benjamin Grabkowitz Date: Wed, 16 Nov 2016 23:52:36 -0500 Subject: [PATCH 087/727] Adding Support for atreus62 keyboard. https://github.com/profet23/atreus62 --- keyboards/atreus62/Makefile | 3 + keyboards/atreus62/atreus62.c | 1 + keyboards/atreus62/atreus62.h | 26 ++ keyboards/atreus62/config.h | 83 +++++ keyboards/atreus62/keymaps/default/keymap.c | 71 ++++ keyboards/atreus62/pro_micro.h | 362 ++++++++++++++++++++ keyboards/atreus62/rules.mk | 66 ++++ 7 files changed, 612 insertions(+) create mode 100644 keyboards/atreus62/Makefile create mode 100644 keyboards/atreus62/atreus62.c create mode 100644 keyboards/atreus62/atreus62.h create mode 100644 keyboards/atreus62/config.h create mode 100644 keyboards/atreus62/keymaps/default/keymap.c create mode 100644 keyboards/atreus62/pro_micro.h create mode 100644 keyboards/atreus62/rules.mk diff --git a/keyboards/atreus62/Makefile b/keyboards/atreus62/Makefile new file mode 100644 index 0000000000..4e2a6f00fd --- /dev/null +++ b/keyboards/atreus62/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/atreus62/atreus62.c b/keyboards/atreus62/atreus62.c new file mode 100644 index 0000000000..ba5bce9899 --- /dev/null +++ b/keyboards/atreus62/atreus62.c @@ -0,0 +1 @@ +#include "atreus62.h" \ No newline at end of file diff --git a/keyboards/atreus62/atreus62.h b/keyboards/atreus62/atreus62.h new file mode 100644 index 0000000000..eacf5b4513 --- /dev/null +++ b/keyboards/atreus62/atreus62.h @@ -0,0 +1,26 @@ +#ifndef ATREUS62_H +#define ATREUS62_H + +#include "quantum.h" + +void promicro_bootloader_jmp(bool program); + +// This a shortcut to help you visually see your layout. +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \ + k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, KC_NO, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, KC_NO, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, KC_NO, k26, k27, k28, k29, k2a, k2b }, \ + { k30, k31, k32, k33, k34, k35, k46, k36, k37, k38, k39, k3a, k3b }, \ + { k40, k41, k42, k43, k44, k45, k47, k48, k49, k4a, k4b, k4c, k4d } \ +} + +#endif \ No newline at end of file diff --git a/keyboards/atreus62/config.h b/keyboards/atreus62/config.h new file mode 100644 index 0000000000..90a4aa05a6 --- /dev/null +++ b/keyboards/atreus62/config.h @@ -0,0 +1,83 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6062 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Profet +#define PRODUCT Atreus62 +#define DESCRIPTION q.m.k. keyboard firmware for Atreus62 + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 5 +#define MATRIX_COLS 13 + +// wiring of each half +#define MATRIX_ROW_PINS { D2, D3, D1, D0, D4 } +#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B5, B4, E6, D7, C6 } + +#define CATERINA_BOOTLOADER + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION ROW2COL + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +// #define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +// #define NO_DEBUG + +/* disable print */ +// #define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/atreus62/keymaps/default/keymap.c b/keyboards/atreus62/keymaps/default/keymap.c new file mode 100644 index 0000000000..52802c77b7 --- /dev/null +++ b/keyboards/atreus62/keymaps/default/keymap.c @@ -0,0 +1,71 @@ +// this is the style you want to emulate. +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, + +#include "atreus62.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _DEFAULT 0 +#define _NAV 1 +#define _RESET 2 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_DEFAULT] = { /* qwerty */ + { KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS }, + { KC_BSLS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC }, + { KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRNS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DELT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LBRC }, + { KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO(_NAV),KC_BSPC, KC_ENT, KC_SPC, KC_EQL, KC_MINS, KC_QUOT, KC_ENT, KC_RGUI } +}, + +[_NAV] = { + { TO(_DEFAULT), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS }, + { TO(_RESET), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS } +}, + +[_RESET] = { + { TO(_DEFAULT), KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO }, + { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO }, + { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO }, + { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO }, + { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , RESET } +} + + +/* +[_TRNS] = { + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS }, + { KC_TRNS, 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[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch (id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } + else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; diff --git a/keyboards/atreus62/pro_micro.h b/keyboards/atreus62/pro_micro.h new file mode 100644 index 0000000000..f9e7ed75d9 --- /dev/null +++ b/keyboards/atreus62/pro_micro.h @@ -0,0 +1,362 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +// Workaround for wrong definitions in "iom32u4.h". +// This should be fixed in the AVR toolchain. +#undef UHCON +#undef UHINT +#undef UHIEN +#undef UHADDR +#undef UHFNUM +#undef UHFNUML +#undef UHFNUMH +#undef UHFLEN +#undef UPINRQX +#undef UPINTX +#undef UPNUM +#undef UPRST +#undef UPCONX +#undef UPCFG0X +#undef UPCFG1X +#undef UPSTAX +#undef UPCFG2X +#undef UPIENX +#undef UPDATX +#undef TCCR2A +#undef WGM20 +#undef WGM21 +#undef COM2B0 +#undef COM2B1 +#undef COM2A0 +#undef COM2A1 +#undef TCCR2B +#undef CS20 +#undef CS21 +#undef CS22 +#undef WGM22 +#undef FOC2B +#undef FOC2A +#undef TCNT2 +#undef TCNT2_0 +#undef TCNT2_1 +#undef TCNT2_2 +#undef TCNT2_3 +#undef TCNT2_4 +#undef TCNT2_5 +#undef TCNT2_6 +#undef TCNT2_7 +#undef OCR2A +#undef OCR2_0 +#undef OCR2_1 +#undef OCR2_2 +#undef OCR2_3 +#undef OCR2_4 +#undef OCR2_5 +#undef OCR2_6 +#undef OCR2_7 +#undef OCR2B +#undef OCR2_0 +#undef OCR2_1 +#undef OCR2_2 +#undef OCR2_3 +#undef OCR2_4 +#undef OCR2_5 +#undef OCR2_6 +#undef OCR2_7 + +#define NUM_DIGITAL_PINS 30 +#define NUM_ANALOG_INPUTS 12 + +#define TX_RX_LED_INIT DDRD |= (1<<5), DDRB |= (1<<0) +#define TXLED0 PORTD |= (1<<5) +#define TXLED1 PORTD &= ~(1<<5) +#define RXLED0 PORTB |= (1<<0) +#define RXLED1 PORTB &= ~(1<<0) + +static const uint8_t SDA = 2; +static const uint8_t SCL = 3; +#define LED_BUILTIN 13 + +// Map SPI port to 'new' pins D14..D17 +static const uint8_t SS = 17; +static const uint8_t MOSI = 16; +static const uint8_t MISO = 14; +static const uint8_t SCK = 15; + +// Mapping of analog pins as digital I/O +// A6-A11 share with digital pins +static const uint8_t ADC0 = 18; +static const uint8_t ADC1 = 19; +static const uint8_t ADC2 = 20; +static const uint8_t ADC3 = 21; +static const uint8_t ADC4 = 22; +static const uint8_t ADC5 = 23; +static const uint8_t ADC6 = 24; // D4 +static const uint8_t ADC7 = 25; // D6 +static const uint8_t ADC8 = 26; // D8 +static const uint8_t ADC9 = 27; // D9 +static const uint8_t ADC10 = 28; // D10 +static const uint8_t ADC11 = 29; // D12 + +#define digitalPinToPCICR(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0)) +#define digitalPinToPCICRbit(p) 0 +#define digitalPinToPCMSK(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0)) +#define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4)))))) + +// __AVR_ATmega32U4__ has an unusual mapping of pins to channels +extern const uint8_t PROGMEM analog_pin_to_channel_PGM[]; +#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) ) + +#define digitalPinToInterrupt(p) ((p) == 0 ? 2 : ((p) == 1 ? 3 : ((p) == 2 ? 1 : ((p) == 3 ? 0 : ((p) == 7 ? 4 : NOT_AN_INTERRUPT))))) + +#ifdef ARDUINO_MAIN + +// On the Arduino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA32U4 / ARDUINO LEONARDO +// +// D0 PD2 RXD1/INT2 +// D1 PD3 TXD1/INT3 +// D2 PD1 SDA SDA/INT1 +// D3# PD0 PWM8/SCL OC0B/SCL/INT0 +// D4 A6 PD4 ADC8 +// D5# PC6 ??? OC3A/#OC4A +// D6# A7 PD7 FastPWM #OC4D/ADC10 +// D7 PE6 INT6/AIN0 +// +// D8 A8 PB4 ADC11/PCINT4 +// D9# A9 PB5 PWM16 OC1A/#OC4B/ADC12/PCINT5 +// D10# A10 PB6 PWM16 OC1B/0c4B/ADC13/PCINT6 +// D11# PB7 PWM8/16 0C0A/OC1C/#RTS/PCINT7 +// D12 A11 PD6 T1/#OC4D/ADC9 +// D13# PC7 PWM10 CLK0/OC4A +// +// A0 D18 PF7 ADC7 +// A1 D19 PF6 ADC6 +// A2 D20 PF5 ADC5 +// A3 D21 PF4 ADC4 +// A4 D22 PF1 ADC1 +// A5 D23 PF0 ADC0 +// +// New pins D14..D17 to map SPI port to digital pins +// +// MISO D14 PB3 MISO,PCINT3 +// SCK D15 PB1 SCK,PCINT1 +// MOSI D16 PB2 MOSI,PCINT2 +// SS D17 PB0 RXLED,SS/PCINT0 +// +// Connected LEDs on board for TX and RX +// TXLED D24 PD5 XCK1 +// RXLED D17 PB0 +// HWB PE2 HWB + +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, + (uint16_t) &DDRE, + (uint16_t) &DDRF, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, + (uint16_t) &PORTE, + (uint16_t) &PORTF, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, + (uint16_t) &PINE, + (uint16_t) &PINF, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PD, // D0 - PD2 + PD, // D1 - PD3 + PD, // D2 - PD1 + PD, // D3 - PD0 + PD, // D4 - PD4 + PC, // D5 - PC6 + PD, // D6 - PD7 + PE, // D7 - PE6 + + PB, // D8 - PB4 + PB, // D9 - PB5 + PB, // D10 - PB6 + PB, // D11 - PB7 + PD, // D12 - PD6 + PC, // D13 - PC7 + + PB, // D14 - MISO - PB3 + PB, // D15 - SCK - PB1 + PB, // D16 - MOSI - PB2 + PB, // D17 - SS - PB0 + + PF, // D18 - A0 - PF7 + PF, // D19 - A1 - PF6 + PF, // D20 - A2 - PF5 + PF, // D21 - A3 - PF4 + PF, // D22 - A4 - PF1 + PF, // D23 - A5 - PF0 + + PD, // D24 - PD5 + PD, // D25 / D6 - A7 - PD7 + PB, // D26 / D8 - A8 - PB4 + PB, // D27 / D9 - A9 - PB5 + PB, // D28 / D10 - A10 - PB6 + PD, // D29 / D12 - A11 - PD6 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(2), // D0 - PD2 + _BV(3), // D1 - PD3 + _BV(1), // D2 - PD1 + _BV(0), // D3 - PD0 + _BV(4), // D4 - PD4 + _BV(6), // D5 - PC6 + _BV(7), // D6 - PD7 + _BV(6), // D7 - PE6 + + _BV(4), // D8 - PB4 + _BV(5), // D9 - PB5 + _BV(6), // D10 - PB6 + _BV(7), // D11 - PB7 + _BV(6), // D12 - PD6 + _BV(7), // D13 - PC7 + + _BV(3), // D14 - MISO - PB3 + _BV(1), // D15 - SCK - PB1 + _BV(2), // D16 - MOSI - PB2 + _BV(0), // D17 - SS - PB0 + + _BV(7), // D18 - A0 - PF7 + _BV(6), // D19 - A1 - PF6 + _BV(5), // D20 - A2 - PF5 + _BV(4), // D21 - A3 - PF4 + _BV(1), // D22 - A4 - PF1 + _BV(0), // D23 - A5 - PF0 + + _BV(5), // D24 - PD5 + _BV(7), // D25 / D6 - A7 - PD7 + _BV(4), // D26 / D8 - A8 - PB4 + _BV(5), // D27 / D9 - A9 - PB5 + _BV(6), // D28 / D10 - A10 - PB6 + _BV(6), // D29 / D12 - A11 - PD6 +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + TIMER0B, /* 3 */ + NOT_ON_TIMER, + TIMER3A, /* 5 */ + TIMER4D, /* 6 */ + NOT_ON_TIMER, + + NOT_ON_TIMER, + TIMER1A, /* 9 */ + TIMER1B, /* 10 */ + TIMER0A, /* 11 */ + + NOT_ON_TIMER, + TIMER4A, /* 13 */ + + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, +}; + +const uint8_t PROGMEM analog_pin_to_channel_PGM[] = { + 7, // A0 PF7 ADC7 + 6, // A1 PF6 ADC6 + 5, // A2 PF5 ADC5 + 4, // A3 PF4 ADC4 + 1, // A4 PF1 ADC1 + 0, // A5 PF0 ADC0 + 8, // A6 D4 PD4 ADC8 + 10, // A7 D6 PD7 ADC10 + 11, // A8 D8 PB4 ADC11 + 12, // A9 D9 PB5 ADC12 + 13, // A10 D10 PB6 ADC13 + 9 // A11 D12 PD6 ADC9 +}; + +#endif /* ARDUINO_MAIN */ + +// These serial port names are intended to allow libraries and architecture-neutral +// sketches to automatically default to the correct port name for a particular type +// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN, +// the first hardware serial port whose RX/TX pins are not dedicated to another use. +// +// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor +// +// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial +// +// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library +// +// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins. +// +// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX +// pins are NOT connected to anything by default. +#define SERIAL_PORT_MONITOR Serial +#define SERIAL_PORT_USBVIRTUAL Serial +#define SERIAL_PORT_HARDWARE Serial1 +#define SERIAL_PORT_HARDWARE_OPEN Serial1 + +#endif /* Pins_Arduino_h */ diff --git a/keyboards/atreus62/rules.mk b/keyboards/atreus62/rules.mk new file mode 100644 index 0000000000..f5d0be23ac --- /dev/null +++ b/keyboards/atreus62/rules.mk @@ -0,0 +1,66 @@ + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +#BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +#MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= yes # Unicode +#BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend From 6c5fce5c1a9d6383843416e0a236c2d7ea9cc2da Mon Sep 17 00:00:00 2001 From: Benjamin Grabkowitz Date: Wed, 16 Nov 2016 23:59:42 -0500 Subject: [PATCH 088/727] Adding readme placeholder --- keyboards/atreus62/readme.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 keyboards/atreus62/readme.md diff --git a/keyboards/atreus62/readme.md b/keyboards/atreus62/readme.md new file mode 100644 index 0000000000..0245b4f9f0 --- /dev/null +++ b/keyboards/atreus62/readme.md @@ -0,0 +1,10 @@ +atreus62 keyboard firmware +====================== + +This firmware is for the atreus62 keyboard. + +This version utilizes a Pro Micro for its controller and has a 62 key layout. + +https://github.com/profet23/atreus62 + +TODO: More information \ No newline at end of file From 3774a7fcdab5544fc787f4c200be05fcd417e31f Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 17 Nov 2016 17:42:14 -0500 Subject: [PATCH 089/727] rgb light through midi --- keyboards/amj60/config.h | 2 +- keyboards/clueboard/rev1/config.h | 2 +- keyboards/clueboard/rev2/config.h | 2 +- keyboards/cluecard/config.h | 2 +- .../cluecard/keymaps/rgb_effects/config.h | 2 +- keyboards/cluepad/config.h | 2 +- keyboards/ergodox/keymaps/jack/config.h | 3 +- keyboards/gh60/keymaps/robotmaxtron/config.h | 2 +- .../handwired/minorca/keymaps/rgb/config.h | 2 +- keyboards/jd40/config.h | 2 +- keyboards/kc60/keymaps/ws2812/config.h | 2 +- keyboards/lets_split/config.h | 2 +- keyboards/lets_split/keymaps/i2c/config.h | 2 +- keyboards/lets_split/keymaps/serial/config.h | 2 +- keyboards/phantom/config.h | 2 +- .../planck/keymaps/experimental/config.h | 2 +- keyboards/planck/keymaps/yang/config.h | 2 +- keyboards/preonic/config.h | 2 +- keyboards/preonic/keymaps/kinesis/config.h | 2 +- keyboards/satan/config.h | 2 +- keyboards/tada68/config.h | 2 +- quantum/light_ws2812.c | 2 - quantum/rgblight.c | 10 +- quantum/rgblight.h | 2 +- readme.md | 4 +- tmk_core/protocol/lufa/lufa.c | 96 +++++++++++++++++++ 26 files changed, 126 insertions(+), 31 deletions(-) diff --git a/keyboards/amj60/config.h b/keyboards/amj60/config.h index d98e0e9f2f..7c06f9a6c7 100644 --- a/keyboards/amj60/config.h +++ b/keyboards/amj60/config.h @@ -67,7 +67,7 @@ along with this program. If not, see . */ #define RGB_DI_PIN E2 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 8 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/clueboard/rev1/config.h b/keyboards/clueboard/rev1/config.h index 8c94972324..f40876ffbf 100644 --- a/keyboards/clueboard/rev1/config.h +++ b/keyboards/clueboard/rev1/config.h @@ -26,7 +26,7 @@ /* Underlight configuration */ #define RGB_DI_PIN B2 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 14 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/clueboard/rev2/config.h b/keyboards/clueboard/rev2/config.h index 15ca4ece86..8435fd02be 100644 --- a/keyboards/clueboard/rev2/config.h +++ b/keyboards/clueboard/rev2/config.h @@ -30,7 +30,7 @@ /* Underlight configuration */ #define RGB_DI_PIN D7 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 14 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/cluecard/config.h b/keyboards/cluecard/config.h index 765347b131..6520eb5574 100644 --- a/keyboards/cluecard/config.h +++ b/keyboards/cluecard/config.h @@ -140,7 +140,7 @@ along with this program. If not, see . /* Underlight configuration */ #define RGB_DI_PIN E6 -//#define RGBLIGHT_TIMER +//#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 4 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/cluecard/keymaps/rgb_effects/config.h b/keyboards/cluecard/keymaps/rgb_effects/config.h index e88847df4d..c6c9342c81 100644 --- a/keyboards/cluecard/keymaps/rgb_effects/config.h +++ b/keyboards/cluecard/keymaps/rgb_effects/config.h @@ -4,7 +4,7 @@ #include "../../config.h" // place overrides here -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLIGHT_EFFECT_SNAKE_LENGTH 3 #define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2 #define RGBLIGHT_EFFECT_KNIGHT_OFFSET 2 diff --git a/keyboards/cluepad/config.h b/keyboards/cluepad/config.h index bae05fade3..bd64dfd27d 100644 --- a/keyboards/cluepad/config.h +++ b/keyboards/cluepad/config.h @@ -70,7 +70,7 @@ along with this program. If not, see . /* Underlight configuration */ #define RGB_DI_PIN F6 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 4 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/ergodox/keymaps/jack/config.h b/keyboards/ergodox/keymaps/jack/config.h index 5bf109c184..5c11652264 100644 --- a/keyboards/ergodox/keymaps/jack/config.h +++ b/keyboards/ergodox/keymaps/jack/config.h @@ -5,12 +5,13 @@ /* ws2812 RGB LED */ #define RGB_DI_PIN D7 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 15 // Number of LEDs #define RGBLIGHT_HUE_STEP 12 #define RGBLIGHT_SAT_STEP 255 #define RGBLIGHT_VAL_STEP 12 #define RGB_MIDI +#define RGBW_BB_TWI #endif \ No newline at end of file diff --git a/keyboards/gh60/keymaps/robotmaxtron/config.h b/keyboards/gh60/keymaps/robotmaxtron/config.h index 6a29e6b8c2..bcd7534617 100644 --- a/keyboards/gh60/keymaps/robotmaxtron/config.h +++ b/keyboards/gh60/keymaps/robotmaxtron/config.h @@ -182,7 +182,7 @@ along with this program. If not, see . #define ws2812_pin PF4 */ #define RGB_DI_PIN F4 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 8 // Number of LEDs #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 diff --git a/keyboards/handwired/minorca/keymaps/rgb/config.h b/keyboards/handwired/minorca/keymaps/rgb/config.h index deaac2e26f..43b3c59110 100644 --- a/keyboards/handwired/minorca/keymaps/rgb/config.h +++ b/keyboards/handwired/minorca/keymaps/rgb/config.h @@ -11,7 +11,7 @@ /* ws2812 RGB LED */ #define RGB_DI_PIN D5 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 13 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/jd40/config.h b/keyboards/jd40/config.h index e2594f4b37..047be5707b 100644 --- a/keyboards/jd40/config.h +++ b/keyboards/jd40/config.h @@ -70,7 +70,7 @@ along with this program. If not, see . ) #define RGB_DI_PIN D3 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 12 // Number of LEDs #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 diff --git a/keyboards/kc60/keymaps/ws2812/config.h b/keyboards/kc60/keymaps/ws2812/config.h index 2f39ea8e55..43abf6228e 100644 --- a/keyboards/kc60/keymaps/ws2812/config.h +++ b/keyboards/kc60/keymaps/ws2812/config.h @@ -2,7 +2,7 @@ /* WS2812B RGB Underglow LED */ #define RGB_DI_PIN F5 // Based on wiring depicted in ws2812_wiring.jpg -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 16 // Number of LEDs. Change this to match your use case. #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 diff --git a/keyboards/lets_split/config.h b/keyboards/lets_split/config.h index f4d900accb..b0ad522fcb 100644 --- a/keyboards/lets_split/config.h +++ b/keyboards/lets_split/config.h @@ -75,7 +75,7 @@ along with this program. If not, see . /* ws2812 RGB LED */ #define RGB_DI_PIN D4 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 8 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/lets_split/keymaps/i2c/config.h b/keyboards/lets_split/keymaps/i2c/config.h index 2671fabf6d..72e5ae66ba 100644 --- a/keyboards/lets_split/keymaps/i2c/config.h +++ b/keyboards/lets_split/keymaps/i2c/config.h @@ -75,7 +75,7 @@ along with this program. If not, see . /* ws2812 RGB LED */ #define RGB_DI_PIN D4 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 8 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/lets_split/keymaps/serial/config.h b/keyboards/lets_split/keymaps/serial/config.h index f4d900accb..b0ad522fcb 100644 --- a/keyboards/lets_split/keymaps/serial/config.h +++ b/keyboards/lets_split/keymaps/serial/config.h @@ -75,7 +75,7 @@ along with this program. If not, see . /* ws2812 RGB LED */ #define RGB_DI_PIN D4 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 8 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/phantom/config.h b/keyboards/phantom/config.h index 983a1d73f2..71a33498b4 100644 --- a/keyboards/phantom/config.h +++ b/keyboards/phantom/config.h @@ -63,7 +63,7 @@ along with this program. If not, see . /* Underlight configuration */ #define RGB_DI_PIN E2 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 20 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/planck/keymaps/experimental/config.h b/keyboards/planck/keymaps/experimental/config.h index 52acd1905e..cc093bee49 100644 --- a/keyboards/planck/keymaps/experimental/config.h +++ b/keyboards/planck/keymaps/experimental/config.h @@ -9,7 +9,7 @@ /* ws2812 RGB LED */ #define RGB_DI_PIN B1 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 8 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/planck/keymaps/yang/config.h b/keyboards/planck/keymaps/yang/config.h index feb5a11901..4ed19d76f9 100644 --- a/keyboards/planck/keymaps/yang/config.h +++ b/keyboards/planck/keymaps/yang/config.h @@ -5,7 +5,7 @@ /* ws2812 RGB LED */ #define RGB_DI_PIN D1 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 28 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/preonic/config.h b/keyboards/preonic/config.h index 3fb978c2f6..f88acf2111 100644 --- a/keyboards/preonic/config.h +++ b/keyboards/preonic/config.h @@ -63,7 +63,7 @@ along with this program. If not, see . /* ws2812 RGB LED */ #define RGB_DI_PIN D1 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 28 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/preonic/keymaps/kinesis/config.h b/keyboards/preonic/keymaps/kinesis/config.h index 086baa84ff..e6099ceb82 100644 --- a/keyboards/preonic/keymaps/kinesis/config.h +++ b/keyboards/preonic/keymaps/kinesis/config.h @@ -63,7 +63,7 @@ along with this program. If not, see . /* ws2812 RGB LED */ #define RGB_DI_PIN D1 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 28 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/satan/config.h b/keyboards/satan/config.h index 7e9f91cc82..eb357b39e0 100644 --- a/keyboards/satan/config.h +++ b/keyboards/satan/config.h @@ -67,7 +67,7 @@ along with this program. If not, see . */ #define RGB_DI_PIN E2 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 8 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/keyboards/tada68/config.h b/keyboards/tada68/config.h index 5d8757936d..19cf9c9b39 100644 --- a/keyboards/tada68/config.h +++ b/keyboards/tada68/config.h @@ -67,7 +67,7 @@ along with this program. If not, see . */ /*#define RGB_DI_PIN E2 -#define RGBLIGHT_TIMER +#define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 2 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/quantum/light_ws2812.c b/quantum/light_ws2812.c index aac058f534..a883b13884 100755 --- a/quantum/light_ws2812.c +++ b/quantum/light_ws2812.c @@ -16,8 +16,6 @@ #include #include "debug.h" -#define RGBW_BB_TWI 1 - #ifdef RGBW_BB_TWI // Port for the I2C diff --git a/quantum/rgblight.c b/quantum/rgblight.c index 1901010bf9..6b58f66547 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -174,7 +174,7 @@ void rgblight_init(void) { } eeconfig_debug_rgblight(); // display current eeprom values - #if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) + #ifdef RGBLIGHT_ANIMATIONS rgblight_timer_init(); // setup the timer #endif @@ -221,7 +221,7 @@ void rgblight_mode(uint8_t mode) { eeconfig_update_rgblight(rgblight_config.raw); xprintf("rgblight mode: %u\n", rgblight_config.mode); if (rgblight_config.mode == 1) { - #if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) + #ifdef RGBLIGHT_ANIMATIONS rgblight_timer_disable(); #endif } else if (rgblight_config.mode >= 2 && rgblight_config.mode <= 23) { @@ -231,7 +231,7 @@ void rgblight_mode(uint8_t mode) { // MODE 15-20, snake // MODE 21-23, knight - #if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) + #ifdef RGBLIGHT_ANIMATIONS rgblight_timer_enable(); #endif } @@ -245,7 +245,7 @@ void rgblight_toggle(void) { if (rgblight_config.enable) { rgblight_mode(rgblight_config.mode); } else { - #if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) + #ifdef RGBLIGHT_ANIMATIONS rgblight_timer_disable(); #endif _delay_ms(50); @@ -371,7 +371,7 @@ void rgblight_set(void) { } } -#if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) +#ifdef RGBLIGHT_ANIMATIONS // Animation timer -- AVR Timer3 void rgblight_timer_init(void) { diff --git a/quantum/rgblight.h b/quantum/rgblight.h index d16ba24e53..330c2fe1ba 100644 --- a/quantum/rgblight.h +++ b/quantum/rgblight.h @@ -1,7 +1,7 @@ #ifndef RGBLIGHT_H #define RGBLIGHT_H -#if !defined(AUDIO_ENABLE) && defined(RGBLIGHT_TIMER) +#ifdef RGBLIGHT_ANIMATIONS #define RGBLIGHT_MODES 23 #else #define RGBLIGHT_MODES 1 diff --git a/readme.md b/readme.md index d5a259ccb8..2364b53010 100644 --- a/readme.md +++ b/readme.md @@ -1135,12 +1135,12 @@ For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring RGBLIGHT_ENABLE = yes -In order to use the underglow timer functions, you need to have `#define RGBLIGHT_TIMER` in your `config.h`, and have audio disabled (`AUDIO_ENABLE = no` in your Makefile). +In order to use the underglow animation functions, you need to have `#define RGBLIGHT_ANIMATIONS` in your `config.h`. Please add the following options into your config.h, and set them up according your hardware configuration. These settings are for the `F4` pin by default: #define RGB_DI_PIN F4 // The pin your RGB strip is wired to - #define RGBLIGHT_TIMER // Require for fancier stuff (not compatible with audio) + #define RGBLIGHT_ANIMATIONS // Require for fancier stuff (not compatible with audio) #define RGBLED_NUM 14 // Number of LEDs #define RGBLIGHT_HUE_STEP 10 #define RGBLIGHT_SAT_STEP 17 diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index b628cde370..7eb9be601e 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -51,6 +51,7 @@ #include "descriptor.h" #include "lufa.h" +#include "quantum.h" #ifdef NKRO_ENABLE #include "keycode_config.h" @@ -1111,9 +1112,104 @@ void cc_callback(MidiDevice * device, #endif } +void send_dword(uint32_t number) { + uint16_t word = (number >> 16); + send_word(word); + send_word(number & 0xFFFFUL); +} + +void send_word(uint16_t number) { + uint8_t byte = number >> 8; + send_byte(byte); + send_byte(number & 0xFF); +} + +void send_byte(uint8_t number) { + uint8_t nibble = number >> 4; + send_nibble(nibble); + send_nibble(number & 0xF); +} + +void send_nibble(uint8_t number) { + switch (number) { + case 0: + register_code(KC_0); + unregister_code(KC_0); + break; + case 1 ... 9: + register_code(KC_1 + (number - 1)); + unregister_code(KC_1 + (number - 1)); + break; + case 0xA ... 0xF: + register_code(KC_A + (number - 0xA)); + unregister_code(KC_A + (number - 0xA)); + break; + } +} + +uint8_t midi_buffer[16] = {0}; + void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t * data) { // for (int i = 0; i < length; i++) // midi_send_cc(device, 15, 0x7F & data[i], 0x7F & (start + i)); + // if (start == 0x27) { + // SEND_STRING("\n"); + // send_word(start); + // SEND_STRING(": "); + for (uint8_t place = 0; place < length; place++) { + // send_byte(*data); + midi_buffer[start + place] = *data; + if (*data == 0xF7) + sysex_buffer_callback(start + place, &midi_buffer); + // SEND_STRING(" "); + data++; + } + // } + } + +void sysex_buffer_callback(uint8_t length, uint8_t * data) { + uint8_t * pointer_copy = data; + + if (*data++ != 0xF0) + return + data++; + data++; + data++; + data++; + + switch (*data++) { + case 0x27: ; // RGB LED functions + switch (*data++) + case 0x00: ; // Update HSV + uint32_t part1 = *data++; + uint32_t part2 = *data++; + uint32_t part3 = *data++; + uint32_t part4 = *data++; + uint32_t part5 = *data++; + uint32_t chunk = ((part1 & 0x1FUL) << 28) | (part2 << 21) | (part3 << 14) | (part4 << 7) | part5; + // SEND_STRING("\nCHUNK: "); + // send_dword(chunk); + rgblight_sethsv(((chunk >> 16) & 0xFFFF) % 360, (chunk >> 8) & 0xFF, chunk & 0xFF); + // SEND_STRING("\nHUE: "); + // send_word(((chunk >> 16) & 0xFFFF) % 360); + // SEND_STRING("\nSAT: "); + // send_word((chunk >> 8) & 0xFF); + // SEND_STRING("\nVAL: "); + // send_word(chunk & 0xFF); + break; + case 0x01: ; // Update RGB + break; + break; + } + + // SEND_STRING("\nDATA:\n"); + // while (*pointer_copy != 0xF7) { + // send_byte(*pointer_copy++); + // SEND_STRING(" "); + // } + +} + #endif From 9bbc9a7ce024edb4d80ce65d43c82456e3714928 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 17 Nov 2016 19:47:08 -0500 Subject: [PATCH 090/727] Initial Erez Experimental keymap tweaks --- keyboards/ergodox/keymaps/erez_experimental/Makefile | 2 ++ keyboards/ergodox/keymaps/erez_experimental/config.h | 11 +++++++++++ keyboards/ergodox/keymaps/erez_experimental/keymap.c | 12 ++++++------ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/keyboards/ergodox/keymaps/erez_experimental/Makefile b/keyboards/ergodox/keymaps/erez_experimental/Makefile index b673c5ce52..dbe89d1410 100644 --- a/keyboards/ergodox/keymaps/erez_experimental/Makefile +++ b/keyboards/ergodox/keymaps/erez_experimental/Makefile @@ -3,6 +3,8 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend COMMAND_ENABLE = no # Commands for debug and configuration +RGBLIGHT_ENABLE = yes +MIDI_ENABLE = yes ifndef QUANTUM_DIR include ../../../../Makefile diff --git a/keyboards/ergodox/keymaps/erez_experimental/config.h b/keyboards/ergodox/keymaps/erez_experimental/config.h index e5d7fe1885..fbd12ab797 100644 --- a/keyboards/ergodox/keymaps/erez_experimental/config.h +++ b/keyboards/ergodox/keymaps/erez_experimental/config.h @@ -8,5 +8,16 @@ #undef LEADER_TIMEOUT #define LEADER_TIMEOUT 300 + +/* ws2812 RGB LED */ +#define RGB_DI_PIN D7 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 15 // Number of LEDs +#define RGBLIGHT_HUE_STEP 12 +#define RGBLIGHT_SAT_STEP 255 +#define RGBLIGHT_VAL_STEP 12 + +#define RGB_MIDI +#define RGBW_BB_TWI #endif diff --git a/keyboards/ergodox/keymaps/erez_experimental/keymap.c b/keyboards/ergodox/keymaps/erez_experimental/keymap.c index 4804959d63..b867d36013 100644 --- a/keyboards/ergodox/keymaps/erez_experimental/keymap.c +++ b/keyboards/ergodox/keymaps/erez_experimental/keymap.c @@ -67,9 +67,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-------------. ,-------------. * | | | | | | * ,------|------|------| |------+------+------. - * | | | | | | | | + * |VAI |VAD |HUI | |SAI |TOG |MOD | * | | |------| |------| | | - * | | | | | | | | + * | | |HUD | |SAD | | | * `--------------------' `--------------------' */ // SYMBOLS @@ -81,8 +81,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,LCTL(KC_PGUP), LCTL(KC_PGDN), KC_TRNS,KC_TRNS, - KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, + RGB_HUI, + RGB_VAI,RGB_VAD,RGB_HUD, // right hand KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, @@ -90,8 +90,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_PIPE, KC_AT, KC_EQL, KC_PERC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS + RGB_SAI, + RGB_SAD, RGB_TOG, RGB_MOD ), /* Keymap 2: Media and mouse keys * From 285c5a91f23e972d9c579184283443111186329d Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 17 Nov 2016 20:56:36 -0500 Subject: [PATCH 091/727] Groundwork for dedicated color keycodes --- .../keymaps/erez_experimental/keymap.c | 24 ++++++++++++++++++- quantum/rgblight.c | 7 ++++++ quantum/rgblight.h | 1 + 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/erez_experimental/keymap.c b/keyboards/ergodox/keymaps/erez_experimental/keymap.c index b867d36013..4a23c7ac58 100644 --- a/keyboards/ergodox/keymaps/erez_experimental/keymap.c +++ b/keyboards/ergodox/keymaps/erez_experimental/keymap.c @@ -7,6 +7,12 @@ #define SYMB 1 // symbols #define MDIA 2 // media keys +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, // can always be here + RGB_FF00BB // always start with RGB_ +}; + + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * @@ -75,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // SYMBOLS [SYMB] = KEYMAP( // left hand - KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + RGB_FF00BB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS, @@ -152,6 +158,22 @@ void matrix_init_user(void) { }; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // dynamically generate these. + case RGB_FF00BB: + if (record->event.pressed) { + rgblight_enable(); + rgblight_mode(1); + rgblight_setrgb(0xff,0x00,0xbb); + } + return false; + break; + } + return true; +} + LEADER_EXTERNS(); // Runs constantly in the background, in a loop. diff --git a/quantum/rgblight.c b/quantum/rgblight.c index 6b58f66547..00620da58e 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -253,6 +253,13 @@ void rgblight_toggle(void) { } } +void rgblight_enable(void) { + rgblight_config.enable = 1; + eeconfig_update_rgblight(rgblight_config.raw); + xprintf("rgblight enable: rgblight_config.enable = %u\n", rgblight_config.enable); + rgblight_mode(rgblight_config.mode); +} + void rgblight_increase_hue(void) { uint16_t hue; diff --git a/quantum/rgblight.h b/quantum/rgblight.h index 330c2fe1ba..a3673348e7 100644 --- a/quantum/rgblight.h +++ b/quantum/rgblight.h @@ -61,6 +61,7 @@ void rgblight_init(void); void rgblight_increase(void); void rgblight_decrease(void); void rgblight_toggle(void); +void rgblight_enable(void); void rgblight_step(void); void rgblight_mode(uint8_t mode); void rgblight_set(void); From abee80929880f0813149eb458f968666a18dd6cc Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 18 Nov 2016 11:11:08 -0600 Subject: [PATCH 092/727] moves brackets to top row. --- .../ergodox/keymaps/common-nighthawk/keymap.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c index ab0dcfece2..14ed257ee0 100644 --- a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c +++ b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c @@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | Esc | x | x | x | _ | Hypr | Home | | End | Hypr | Esc | x | x | x | `~ | + * | Esc | x | x | x | Esc | Hypr | Home | | End | Esc | [ | ] | x | `~ | `~ | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * |Tab/Ctrl| Q | W | E | R | T | Up | | PgUp |Y 2Esc| U 2[ | I 2] | O | P |Bks/Ctrl| * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [BASE] = KEYMAP( // layer 0 : default // left hand - KC_ESC, KC_1, KC_1, KC_1, KC_UNDS, ALL_T(KC_NO), KC_HOME, + KC_ESC, KC_1, KC_1, KC_1, KC_ESC, ALL_T(KC_NO), KC_HOME, CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, M(1), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, @@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_VOLD, LT(SYMB, KC_SPC), TG(MDIA), RESET, // right hand - KC_END, ALL_T(KC_NO), KC_ESC, KC_1, KC_1, KC_1, KC_GRV, + KC_END, KC_ESC, KC_LBRC, KC_RBRC, KC_1, KC_GRV, KC_GRV, KC_PGUP, TD(TD_Y_ESC), TD(TD_U_LBRC), TD(TD_I_RBRC), KC_O, KC_P, CTL_T(KC_BSPC), KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, M(1), @@ -71,11 +71,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | ^ | { | ( | [ | | | | = | 7 | 8 | 9 | 0 | | + * | | ! | ^ | [ | ( | { | | | | = | 7 | 8 | 9 | 0 | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | & | $ | } | ) | ] |------| |------| + | 4 | 5 | 6 | * | | + * | | & | $ | ] | ) | } |------| |------| + | 4 | 5 | 6 | * | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | \ | # | @ | % | | | | | | - | 1 | 2 | 3 | / | | + * | | \ | @ | # | % | | | | | | - | 1 | 2 | 3 | / | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | 0 | 0 | . | | | * `----------------------------------' `----------------------------------' @@ -91,9 +91,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [SYMB] = KEYMAP( // left hand KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - KC_TRNS, KC_EXLM, KC_CIRC, KC_LCBR, KC_LPRN, KC_LBRC, KC_TRNS, - KC_TRNS, KC_AMPR, KC_DLR, KC_RCBR, KC_RPRN, KC_RBRC, - KC_TRNS, KC_BSLS, KC_HASH, KC_AT, KC_PERC, KC_PIPE, KC_TRNS, + KC_TRNS, KC_EXLM, KC_CIRC, KC_LBRC, KC_LPRN, KC_LCBR, KC_TRNS, + KC_TRNS, KC_AMPR, KC_DLR, KC_RBRC, KC_RPRN, KC_RCBR, + KC_TRNS, KC_BSLS, KC_AT, KC_HASH, KC_PERC, KC_PIPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, From 161bd5596b5d8199f2e56246a27ccbdb8c80bb36 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 18 Nov 2016 22:22:24 -0500 Subject: [PATCH 093/727] midi back and forth --- keyboards/ergodox/keymaps/jack/keymap.c | 7 ++- tmk_core/protocol/lufa/lufa.c | 62 ++++++++++++++++++------- tmk_core/protocol/lufa/lufa.h | 1 + 3 files changed, 52 insertions(+), 18 deletions(-) diff --git a/keyboards/ergodox/keymaps/jack/keymap.c b/keyboards/ergodox/keymaps/jack/keymap.c index 8721b9644a..eb41f12127 100644 --- a/keyboards/ergodox/keymaps/jack/keymap.c +++ b/keyboards/ergodox/keymaps/jack/keymap.c @@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { MO(1), KC_LEFT,KC_DOWN,KC_UP, KC_RGHT, RGB_TOG, RGB_HUI, RGB_MOD, - KC_PGDN, KC_SPC,KC_SPC + M(2), KC_SPC,KC_SPC ), [SYMB] = KEYMAP( // left hand @@ -89,6 +89,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) eeconfig_init(); } break; + case 2: + if (record->event.pressed) { // For resetting EEPROM + send_unicode_midi(0x0CA0); + } + break; } return MACRO_NONE; }; diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 7eb9be601e..ae9cc2f962 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -1161,7 +1161,7 @@ void sysex_callback(MidiDevice * device, // send_byte(*data); midi_buffer[start + place] = *data; if (*data == 0xF7) - sysex_buffer_callback(start + place, &midi_buffer); + sysex_buffer_callback(device, start + place, &midi_buffer); // SEND_STRING(" "); data++; } @@ -1169,7 +1169,24 @@ void sysex_callback(MidiDevice * device, } -void sysex_buffer_callback(uint8_t length, uint8_t * data) { +uint32_t decode_4byte_chunk(uint8_t * data) { + uint32_t part1 = *data++; + uint32_t part2 = *data++; + uint32_t part3 = *data++; + uint32_t part4 = *data++; + uint32_t part5 = *data++; + return ((part1 & 0x1FUL) << 28) | (part2 << 21) | (part3 << 14) | (part4 << 7) | part5; +} + +void encode_4byte_chunk(uint32_t data, uint8_t * pointer) { + *pointer++ = (data >> 28) & 0x7F; + *pointer++ = (data >> 21) & 0x7F; + *pointer++ = (data >> 14) & 0x7F; + *pointer++ = (data >> 7) & 0x7F; + *pointer++ = (data) & 0x7F; +} + +void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) { uint8_t * pointer_copy = data; if (*data++ != 0xF0) @@ -1180,28 +1197,31 @@ void sysex_buffer_callback(uint8_t length, uint8_t * data) { data++; switch (*data++) { + case 0x13: ; // Get info from keyboard + switch (*data++) { + case 0x00: ; // Get layer state + // send_dword(layer_state); + uint8_t chunk[5]; + encode_4byte_chunk(layer_state | default_layer_state, &chunk); + + uint8_t array[] = {0xF0, 0x00, 0x00, 0x00, 0x00, chunk[0], chunk[1], chunk[2], chunk[3], chunk[4], 0xF7}; + midi_send_array(&midi_device, 11, &array); + // midi_send_data(device, 3, 0x00, layer_state >> 24 & 0x7f, layer_state >> 16 & 0x7f); + // midi_send_data(device, 6, layer_state >> 8 & 0x7f, layer_state & 0x7f, 0xF7); + break; + } + #ifdef RGBLIGHT_ENABLE case 0x27: ; // RGB LED functions - switch (*data++) + switch (*data++) { case 0x00: ; // Update HSV - uint32_t part1 = *data++; - uint32_t part2 = *data++; - uint32_t part3 = *data++; - uint32_t part4 = *data++; - uint32_t part5 = *data++; - uint32_t chunk = ((part1 & 0x1FUL) << 28) | (part2 << 21) | (part3 << 14) | (part4 << 7) | part5; - // SEND_STRING("\nCHUNK: "); - // send_dword(chunk); + uint32_t chunk = decode_4byte_chunk(data); rgblight_sethsv(((chunk >> 16) & 0xFFFF) % 360, (chunk >> 8) & 0xFF, chunk & 0xFF); - // SEND_STRING("\nHUE: "); - // send_word(((chunk >> 16) & 0xFFFF) % 360); - // SEND_STRING("\nSAT: "); - // send_word((chunk >> 8) & 0xFF); - // SEND_STRING("\nVAL: "); - // send_word(chunk & 0xFF); break; case 0x01: ; // Update RGB break; + } break; + #endif } // SEND_STRING("\nDATA:\n"); @@ -1212,4 +1232,12 @@ void sysex_buffer_callback(uint8_t length, uint8_t * data) { } +void send_unicode_midi(uint32_t unicode) { + uint8_t chunk[5]; + encode_4byte_chunk(unicode, &chunk); + + uint8_t array[] = {0xF0, 0x00, 0x00, 0x00, 0x05, chunk[0], chunk[1], chunk[2], chunk[3], chunk[4], 0xF7}; + midi_send_array(&midi_device, 11, &array); +} + #endif diff --git a/tmk_core/protocol/lufa/lufa.h b/tmk_core/protocol/lufa/lufa.h index aad08d6407..3fec797b6c 100644 --- a/tmk_core/protocol/lufa/lufa.h +++ b/tmk_core/protocol/lufa/lufa.h @@ -70,6 +70,7 @@ typedef struct { #ifdef MIDI_ENABLE void MIDI_Task(void); MidiDevice midi_device; +void send_unicode_midi(uint32_t unicode); #endif // #if LUFA_VERSION_INTEGER < 0x120730 From a06115df19a74d39b08758472b221e630c3680d3 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 18 Nov 2016 23:20:07 -0500 Subject: [PATCH 094/727] don't always detect a matrix change (fixes debounce) --- quantum/matrix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/matrix.c b/quantum/matrix.c index 3c488b417d..07eb87bc36 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -310,7 +310,7 @@ static bool read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) // Unselect row unselect_row(current_row); - return (last_row_value == current_matrix[current_row]); + return (last_row_value != current_matrix[current_row]); } static void select_row(uint8_t row) From 01736a502e8f2900bde229a086a4ab03513f6781 Mon Sep 17 00:00:00 2001 From: climbalima Date: Fri, 18 Nov 2016 23:40:34 -0500 Subject: [PATCH 095/727] just saving --- keyboards/maxipad/Makefile | 2 +- keyboards/maxipad/config.h | 113 ++++---------------- keyboards/maxipad/keymaps/default/Makefile | 21 ---- keyboards/maxipad/keymaps/default/config.h | 8 -- keyboards/maxipad/keymaps/default/keymap.c | 40 ++----- keyboards/maxipad/keymaps/default/readme.md | 1 - keyboards/maxipad/maxipad.c | 29 +---- keyboards/maxipad/maxipad.h | 12 +-- keyboards/maxipad/readme.md | 31 ++---- keyboards/maxipad/rules.mk | 29 ++--- 10 files changed, 54 insertions(+), 232 deletions(-) delete mode 100644 keyboards/maxipad/keymaps/default/Makefile delete mode 100644 keyboards/maxipad/keymaps/default/config.h delete mode 100644 keyboards/maxipad/keymaps/default/readme.md diff --git a/keyboards/maxipad/Makefile b/keyboards/maxipad/Makefile index 57b2ef62e5..4e2a6f00fd 100644 --- a/keyboards/maxipad/Makefile +++ b/keyboards/maxipad/Makefile @@ -1,3 +1,3 @@ ifndef MAKEFILE_INCLUDED include ../../Makefile -endif +endif \ No newline at end of file diff --git a/keyboards/maxipad/config.h b/keyboards/maxipad/config.h index fbe64a5b0b..a056e4963b 100644 --- a/keyboards/maxipad/config.h +++ b/keyboards/maxipad/config.h @@ -24,124 +24,49 @@ along with this program. If not, see . #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x6060 #define DEVICE_VER 0x0001 -#define MANUFACTURER Wootpatoot +#define MANUFACTURER wootpatoot #define PRODUCT maxipad #define DESCRIPTION A custom keyboard - /* key matrix size */ #define MATRIX_ROWS 5 #define MATRIX_COLS 6 -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ -#define MATRIX_ROW_PINS { B6, F7, B2, B3, B1 } -#define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 } -#define UNUSED_PINS +// Planck PCB default pin-out +// Change this to how you wired your keyboard +// COLS: Left to right, ROWS: Top to bottom +#ifdef USE_PRO_MICRO + #define MATRIX_ROW_PINS { B6, B2, B3, B1, F7 } + #define MATRIX_COL_PINS { F4, C6, D7, F5, B4, B5 } + #define UNUSED_PINS + #else + #define MATRIX_ROW_PINS { B6, F7, B2, B3, B1 } + #define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 } + #define UNUSED_PINS + #endif /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW - -// #define BACKLIGHT_PIN B7 -// #define BACKLIGHT_BREATHING -// #define BACKLIGHT_LEVELS 3 - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCING_DELAY 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ +/* define if matrix has ghost */ //#define MATRIX_HAS_GHOST /* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ +/* key combination for command */ #define IS_COMMAND() ( \ keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ ) -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/maxipad/keymaps/default/Makefile b/keyboards/maxipad/keymaps/default/Makefile deleted file mode 100644 index f4671a9d11..0000000000 --- a/keyboards/maxipad/keymaps/default/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - -ifndef QUANTUM_DIR - include ../../../../Makefile -endif \ No newline at end of file diff --git a/keyboards/maxipad/keymaps/default/config.h b/keyboards/maxipad/keymaps/default/config.h deleted file mode 100644 index df06a26206..0000000000 --- a/keyboards/maxipad/keymaps/default/config.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef CONFIG_USER_H -#define CONFIG_USER_H - -#include "../../config.h" - -// place overrides here - -#endif \ No newline at end of file diff --git a/keyboards/maxipad/keymaps/default/keymap.c b/keyboards/maxipad/keymaps/default/keymap.c index 43ace32419..227cef7d86 100644 --- a/keyboards/maxipad/keymaps/default/keymap.c +++ b/keyboards/maxipad/keymaps/default/keymap.c @@ -1,5 +1,5 @@ #include "maxipad.h" - + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = KEYMAP( /* Base */ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, \ @@ -13,42 +13,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, \ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \ - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC \ ), }; - + const uint16_t PROGMEM fn_actions[] = { - }; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // MACRODOWN only works in this function { - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - } else { - unregister_code(KC_RSFT); - } - break; - } return MACRO_NONE; -}; - - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} \ No newline at end of file +}; \ No newline at end of file diff --git a/keyboards/maxipad/keymaps/default/readme.md b/keyboards/maxipad/keymaps/default/readme.md deleted file mode 100644 index a6c0d4a3f0..0000000000 --- a/keyboards/maxipad/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for maxipad \ No newline at end of file diff --git a/keyboards/maxipad/maxipad.c b/keyboards/maxipad/maxipad.c index 879ae86a76..a193b112b9 100644 --- a/keyboards/maxipad/maxipad.c +++ b/keyboards/maxipad/maxipad.c @@ -1,28 +1 @@ -#include "maxipad.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} +#include "maxipad.h" \ No newline at end of file diff --git a/keyboards/maxipad/maxipad.h b/keyboards/maxipad/maxipad.h index eee1309ddc..4d8c6428d2 100644 --- a/keyboards/maxipad/maxipad.h +++ b/keyboards/maxipad/maxipad.h @@ -8,18 +8,18 @@ // The first section contains all of the arguements // The second converts the arguments into a two-dimensional array #define KEYMAP( \ - k00, k01, k02, k03, k04, k05, \ - k10, k11, k12, k13, k14, k15, \ - k20, k21, k22, k23, k24, k25, \ - k30, k31, k32, k33, k34, k35, \ - k40, k41, k42, k43, k44, k45 \ + k00, k01, k02, k03, k04, k05, \ + k10, k11, k12, k13, k14, k15, \ + k20, k21, k22, k23, k24, k25, \ + k30, k31, k32, k33, k34, k35, \ + k40, k41, k42, k43, k44, k45 \ ) \ { \ { k00, k01, k02, k03, k04, k05 }, \ { k10, k11, k12, k13, k14, k15 }, \ { k20, k21, k22, k23, k24, k25 }, \ { k30, k31, k32, k33, k34, k35 }, \ - { k40, k41, k42, k43, k44, k45} \ + { k40, k41, k42, k43, k44, k45 } \ } #endif diff --git a/keyboards/maxipad/readme.md b/keyboards/maxipad/readme.md index 1971ce1f36..4e1702c5ad 100644 --- a/keyboards/maxipad/readme.md +++ b/keyboards/maxipad/readme.md @@ -1,46 +1,27 @@ -maxipad keyboard firmware +Maxipad keyboard firmware ====================== ## Quantum MK Firmware -<<<<<<< HEAD -For the full Quantum feature list, see [the parent readme](/). -======= -For the full Quantum feature list, see [the parent readme.md](/doc/readme.md). ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df +For the full Quantum feature list, see [the parent readme.md](/readme.md). ## Building +If you are using a pro micro then make sure to enable USE_PRO_MICRO in the makefile + Download or clone the whole firmware and navigate to the keyboards/maxipad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. Depending on which keymap you would like to use, you will have to compile slightly differently. ### Default - -<<<<<<< HEAD To build with the default keymap, simply run `make default`. -======= -To build with the default keymap, simply run `make`. ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df ### Other Keymaps +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `.c` and see keymap document (you can find in top readme.md) and existent keymap files. -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. - -<<<<<<< HEAD To build the firmware binary hex file with a keymap just do `make` with a keymap like this: ``` $ make [default|jack|] ``` - -Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. -======= -To build the firmware binary hex file with a keymap just do `make` with `keymap` option like: - -``` -$ make keymap=[default|jack|] -``` - -Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/` ->>>>>>> bce6e52391da7c5f620c96a91857940f0dee19df +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. \ No newline at end of file diff --git a/keyboards/maxipad/rules.mk b/keyboards/maxipad/rules.mk index 55898147dd..e6e5923f16 100644 --- a/keyboards/maxipad/rules.mk +++ b/keyboards/maxipad/rules.mk @@ -1,3 +1,5 @@ + + # MCU name #MCU = at90usb1287 MCU = atmega32u4 @@ -49,19 +51,18 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512 # Build Options -# change yes to no to disable +# comment out to disable the options. # -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= yes # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration +BOOTMAGIC_ENABLE ?= yes # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 +# SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend +# NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +# BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality +# MIDI_ENABLE ?= YES # MIDI controls +# UNICODE_ENABLE ?= YES # Unicode +# BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID +USE_PRO_MICRO ?= yes \ No newline at end of file From e356de222023d2a8f7d5ee79030a37eaa9b1b25f Mon Sep 17 00:00:00 2001 From: climbalima Date: Sat, 19 Nov 2016 00:44:52 -0500 Subject: [PATCH 096/727] added the pinout for pro micro into maxipad --- keyboards/maxipad/config.h | 12 +++++++++--- keyboards/maxipad/rules.mk | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/keyboards/maxipad/config.h b/keyboards/maxipad/config.h index fbe64a5b0b..fc5ab77617 100644 --- a/keyboards/maxipad/config.h +++ b/keyboards/maxipad/config.h @@ -43,9 +43,15 @@ along with this program. If not, see . * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) * */ -#define MATRIX_ROW_PINS { B6, F7, B2, B3, B1 } -#define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 } -#define UNUSED_PINS +//Pro micro pinout + #define MATRIX_ROW_PINS { B6, B2, B3, B1, F7 } + #define MATRIX_COL_PINS { F4, C6, D7, F5, B4, B5 } + #define UNUSED_PINS +//Teensy 2 pinout + //#define MATRIX_ROW_PINS { B6, F7, B2, B3, B1 } + //#define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 } + //#define UNUSED_PINS + /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/maxipad/rules.mk b/keyboards/maxipad/rules.mk index 55898147dd..f9bf74179b 100644 --- a/keyboards/maxipad/rules.mk +++ b/keyboards/maxipad/rules.mk @@ -65,3 +65,4 @@ MIDI_ENABLE ?= no # MIDI controls UNICODE_ENABLE ?= no # Unicode BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE ?= no # Audio output on port C6 +USE_PRO_MICRO ?= yes \ No newline at end of file From 102a830bbdb302eb0951ec7910ab7c9feae272d1 Mon Sep 17 00:00:00 2001 From: climbalima Date: Sat, 19 Nov 2016 00:49:20 -0500 Subject: [PATCH 097/727] changed readme --- keyboards/maxipad/readme.md | 2 ++ keyboards/maxipad/rules.mk | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/keyboards/maxipad/readme.md b/keyboards/maxipad/readme.md index ab7b122fe8..de2265d111 100644 --- a/keyboards/maxipad/readme.md +++ b/keyboards/maxipad/readme.md @@ -5,6 +5,8 @@ For the full Quantum feature list, see [the parent readme](/). ## Building +Change the config.h pinout to match your mcu!! + Download or clone the whole firmware and navigate to the keyboards/maxipad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. Depending on which keymap you would like to use, you will have to compile slightly differently. diff --git a/keyboards/maxipad/rules.mk b/keyboards/maxipad/rules.mk index f9bf74179b..56b2042efa 100644 --- a/keyboards/maxipad/rules.mk +++ b/keyboards/maxipad/rules.mk @@ -64,5 +64,4 @@ BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by MIDI_ENABLE ?= no # MIDI controls UNICODE_ENABLE ?= no # Unicode BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 -USE_PRO_MICRO ?= yes \ No newline at end of file +AUDIO_ENABLE ?= no # Audio output on port C6 \ No newline at end of file From ffa5b1e7ea6697acf9ebfcade1149031642f7870 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Sat, 19 Nov 2016 11:32:09 +0100 Subject: [PATCH 098/727] Add a timeout to space-cadet shift. When one holds a Space Cadet shift, to have it act as a shift, so that mouse behaviour changes, when released without any other key pressed, it still registers a paren. To remedy this, add a hold timeout: if the key is held longer than TAPPING_TERM, it will not register the parens. Fixes #884, with the side-effect of not being able to have parens trigger the OS-side repeat anymore. Signed-off-by: Gergely Nagy --- quantum/quantum.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/quantum/quantum.c b/quantum/quantum.c index 098312e6ef..2addcb670c 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -75,6 +75,7 @@ void reset_keyboard(void) { #endif static bool shift_interrupted[2] = {0, 0}; +static uint16_t scs_timer = 0; bool process_record_quantum(keyrecord_t *record) { @@ -283,6 +284,7 @@ bool process_record_quantum(keyrecord_t *record) { case KC_LSPO: { if (record->event.pressed) { shift_interrupted[0] = false; + scs_timer = timer_read (); register_mods(MOD_BIT(KC_LSFT)); } else { @@ -292,7 +294,7 @@ bool process_record_quantum(keyrecord_t *record) { shift_interrupted[1] = true; } #endif - if (!shift_interrupted[0]) { + if (!shift_interrupted[0] && timer_elapsed(scs_timer) < TAPPING_TERM) { register_code(LSPO_KEY); unregister_code(LSPO_KEY); } @@ -305,6 +307,7 @@ bool process_record_quantum(keyrecord_t *record) { case KC_RSPC: { if (record->event.pressed) { shift_interrupted[1] = false; + scs_timer = timer_read (); register_mods(MOD_BIT(KC_RSFT)); } else { @@ -314,7 +317,7 @@ bool process_record_quantum(keyrecord_t *record) { shift_interrupted[1] = true; } #endif - if (!shift_interrupted[1]) { + if (!shift_interrupted[1] && timer_elapsed(scs_timer) < TAPPING_TERM) { register_code(RSPC_KEY); unregister_code(RSPC_KEY); } From 7f5e71d79fb5ca70139c42b83c158738217c1c8a Mon Sep 17 00:00:00 2001 From: "samgalson@gmail.com" Date: Sat, 19 Nov 2016 14:21:12 +0000 Subject: [PATCH 099/727] adds galson keymap --- keyboards/ergodox/keymaps/galson/Makefile | 2 + keyboards/ergodox/keymaps/galson/keymap.c | 183 +++++++++++++++++++++ keyboards/ergodox/keymaps/galson/readme.md | 11 ++ 3 files changed, 196 insertions(+) create mode 100644 keyboards/ergodox/keymaps/galson/Makefile create mode 100644 keyboards/ergodox/keymaps/galson/keymap.c create mode 100644 keyboards/ergodox/keymaps/galson/readme.md diff --git a/keyboards/ergodox/keymaps/galson/Makefile b/keyboards/ergodox/keymaps/galson/Makefile new file mode 100644 index 0000000000..f008f50793 --- /dev/null +++ b/keyboards/ergodox/keymaps/galson/Makefile @@ -0,0 +1,2 @@ +COMMAND_ENABLE = no # Commands for debug and configuration + diff --git a/keyboards/ergodox/keymaps/galson/keymap.c b/keyboards/ergodox/keymaps/galson/keymap.c new file mode 100644 index 0000000000..0d3e7560dd --- /dev/null +++ b/keyboards/ergodox/keymaps/galson/keymap.c @@ -0,0 +1,183 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "version.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | + | 1 | 2 | 3 | 4 | 5 | rclk | | lclk | 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | = | Q | W | E | R |cmd/T |shift | |shift |cmd/Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| ( | | ) |------+------+------+------+------+--------| + * | " | A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' | + * |--------+------+------+------+------+------| ctrl | | ctrl |------+------+------+------+------+--------| + * | { | Z | X | C | V | B | [ | | ] | N | M | , | . | / | } | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | _ | ` | $ | Left | Right| | Up | Down | : | * | ! | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | < | | | | & | > | + * ,------|------|------| |------+--------+------. + * | | | # | | @ | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | % | | ESC | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_PLUS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_BTN2, + KC_EQL, KC_Q, KC_W, KC_E, KC_R, GUI_T(KC_T), KC_LSPO, + KC_DQUO, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LCBR, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, CTL_T(KC_LBRC), + KC_UNDS, KC_GRV, KC_DLR, KC_LEFT,KC_RGHT, + KC_LABK, KC_PIPE, + KC_HASH, + KC_SPC, KC_BSPC,KC_PERC, + // right hand + KC_BTN1, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_RSPC, GUI_T(KC_Y), KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), KC_QUOT, + CTL_T(KC_RBRC), KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RCBR, + KC_UP, KC_DOWN,KC_COLN,KC_ASTR, KC_EXLM, + KC_AMPR, KC_RABK, + KC_AT, + KC_ESC, KC_TAB, KC_ENT + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, + KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, + KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS, + KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, + KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, + KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +/* Keymap 2: Media and mouse keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | MsUp | | | | | | | | | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | Prev | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | |Brwser| + * | | |------| |------| |Back | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// MEDIA AND MOUSE +[MDIA] = KEYMAP( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, + KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_WBAK +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; diff --git a/keyboards/ergodox/keymaps/galson/readme.md b/keyboards/ergodox/keymaps/galson/readme.md new file mode 100644 index 0000000000..ebc916725b --- /dev/null +++ b/keyboards/ergodox/keymaps/galson/readme.md @@ -0,0 +1,11 @@ +# Galson keymap + + +Sep 26, 2016. + +This is an ergonomic layout for programming for those with typing-related injuries. Key features: + +- As many symbol keys as possible are accessible without shifting. These should be accessed by moving the entire hand and pressing with a strong finger. +- Arrow keys and left and right mouse clicks for mouse-free navigation when combined with head mouse or eyetracker. +- Modifier keys are dual role and relocated to positions convenient for the index finger. +- Positions are more convenient when the keyboard is vertically mounted (as it should be!) \ No newline at end of file From 620e4f74d39bbcd9a41b6deed0fb990dfadbd106 Mon Sep 17 00:00:00 2001 From: Seth Chandler Date: Sat, 19 Nov 2016 11:37:12 -0500 Subject: [PATCH 100/727] move KC expansion to separate macros --- keyboards/gh60/gh60.h | 49 ++++++++++++++++++-- keyboards/gh60/keymaps/default/keymap.c | 12 ++--- keyboards/gh60/keymaps/robotmaxtron/keymap.c | 24 +++++----- keyboards/gh60/keymaps/sethbc/keymap.c | 4 +- 4 files changed, 66 insertions(+), 23 deletions(-) diff --git a/keyboards/gh60/gh60.h b/keyboards/gh60/gh60.h index 899f7dc6a3..4f206cc161 100644 --- a/keyboards/gh60/gh60.h +++ b/keyboards/gh60/gh60.h @@ -34,6 +34,20 @@ inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); } K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \ + { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \ +} + +#define KC_KEYMAP( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ + K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \ ) { \ { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \ { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \ @@ -42,13 +56,28 @@ inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); } { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \ } -/* ANSI valiant. No extra keys for ISO */ +/* ANSI variant. No extra keys for ISO */ #define KEYMAP_ANSI( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ K40, K41, K42, K45, K4A, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D }, \ + { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D } \ +} + +/* ANSI variant with KC expansion */ +#define KC_KEYMAP_ANSI( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ + K40, K41, K42, K45, K4A, K4B, K4C, K4D \ ) { \ { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \ { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \ @@ -57,12 +86,28 @@ inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); } { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \ } +/* HHKB Variant */ #define KEYMAP_HHKB( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \ K40, K41, K42, K45, K4A, K4B, K4C, K4D \ +) { \ + { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ + { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \ + { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D }, \ + { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \ + { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \ +} + +/* HHKB Variant with KC expansion */ +#define KC_KEYMAP_HHKB( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ + K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \ + K40, K41, K42, K45, K4A, K4B, K4C, K4D \ ) { \ { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \ { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \ @@ -71,6 +116,4 @@ inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); } { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \ } - - #endif diff --git a/keyboards/gh60/keymaps/default/keymap.c b/keyboards/gh60/keymaps/default/keymap.c index 3622be41b8..5c88b2ecf1 100644 --- a/keyboards/gh60/keymaps/default/keymap.c +++ b/keyboards/gh60/keymaps/default/keymap.c @@ -3,21 +3,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty */ - KEYMAP( + KC_KEYMAP( ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, GRV, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NO, ENT, \ LSFT,FN1, Z, X, C, V, B, N, M, COMM,DOT, SLSH,FN0, RSFT, \ LCTL,LGUI,LALT, SPC, BSLS,RALT,RGUI,APP, RCTL), /* 1: fn */ - KEYMAP( + KC_KEYMAP( ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ TRNS,TRNS,UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS), /* 2: arrows */ - KEYMAP( + KC_KEYMAP( TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ @@ -49,7 +49,7 @@ void matrix_scan_user(void) { //Layer LED indicators uint32_t layer = layer_state; - + if (layer & (1<<1)) { gh60_wasd_leds_on(); gh60_fn_led_on(); @@ -57,7 +57,7 @@ void matrix_scan_user(void) { gh60_wasd_leds_off(); gh60_fn_led_off(); } - + if (layer & (1<<2)) { gh60_poker_leds_on(); gh60_esc_led_on(); @@ -65,5 +65,5 @@ void matrix_scan_user(void) { gh60_poker_leds_off(); gh60_esc_led_off(); } - + }; diff --git a/keyboards/gh60/keymaps/robotmaxtron/keymap.c b/keyboards/gh60/keymaps/robotmaxtron/keymap.c index 263eec4e53..d53589e811 100644 --- a/keyboards/gh60/keymaps/robotmaxtron/keymap.c +++ b/keyboards/gh60/keymaps/robotmaxtron/keymap.c @@ -8,7 +8,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* - * Base layer, pretty standard ANSI layout. + * Base layer, pretty standard ANSI layout. * ,-----------------------------------------------------------. * |FN12| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | * |-----------------------------------------------------------| @@ -21,14 +21,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Ctrl|Gui |Alt | Space |Alt |Fn |Menu|Ctrl| * `-----------------------------------------------------------' */ - [_BL] = KEYMAP( + [_BL] = KC_KEYMAP( FN12,1,2,3,4,5,6,7,8,9,0,MINS,EQL,BSPC, \ TAB,Q,W,E,R,T,Y,U,I,O,P,LBRC,RBRC,BSLS, \ FN2,A,S,D,F,G,H,J,K,L,SCLN,QUOT,NO,ENT, \ LSFT,NO,Z,X,C,V,B,N,M,COMM,DOT,SLSH,NO,RSFT, \ LCTL,LGUI,LALT, SPC, NO,RALT,FN0,APP, RCTL), - - /* + + /* * Locking arrow keys to WASD for when you need dedicated arrow keys * ,-----------------------------------------------------------. * | | | | | | | | | | | | | | | @@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ - [_AL] = KEYMAP( + [_AL] = KC_KEYMAP( TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ TRNS,TRNS,UP,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ @@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS), - /* + /* * Primary function layer, mostly the same as the traditional Pok3r layout. * ,-------------------------------------------------------------. * |`~ | F1| F2| F3| F4| F5| F6| F7| F8| F9| F10| F11| F12|DEL | @@ -64,16 +64,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-------------------------------------------------------------' */ - [_FL] = KEYMAP( + [_FL] = KC_KEYMAP( GRAVE,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12, DELETE, \ TRNS,FN1,TRNS,TRNS,TRNS,TRNS,CALC,PGUP,UP,PGDN,PSCR,SLCK,PAUS,TRNS, \ TRNS,MUTE,_VOLDOWN,_VOLUP,TRNS,TRNS,HOME,LEFT,DOWN,RGHT,INS,TRNS,TRNS,TRNS, \ TRNS,TRNS,FN3,TRNS,TRNS,TRNS,TRNS,END,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS), - - /* + + /* * Locking layer for controlling the underglow. - * + * * ,-----------------------------------------------------------. * | | | | | | | | | | | | | | | * |-----------------------------------------------------------| @@ -86,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ - [_UL] = KEYMAP( + [_UL] = KC_KEYMAP( TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ TRNS,FN4,FN5,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ @@ -124,7 +124,7 @@ const uint16_t PROGMEM fn_actions[] = { const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - // MACRODOWN only works in this function + // MACRODOWN only works in this function switch(id) { case 0: if (record->event.pressed) { diff --git a/keyboards/gh60/keymaps/sethbc/keymap.c b/keyboards/gh60/keymaps/sethbc/keymap.c index 85a46a29bd..141c7f0b00 100644 --- a/keyboards/gh60/keymaps/sethbc/keymap.c +++ b/keyboards/gh60/keymaps/sethbc/keymap.c @@ -6,14 +6,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty */ - KEYMAP_HHKB( + KC_KEYMAP_HHKB( FN0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, GRV, \ TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \ LSFT, Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT, FN1, \ LCTL,LALT,LGUI, SPC, RGUI,RALT,APP, RCTL), /* 1: fn */ - KEYMAP_HHKB( + KC_KEYMAP_HHKB( GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,UP,TRNS,TRNS, \ TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RIGHT,PENT, \ From 74a1f00713d1407fb1d2e20d58da93919ab0c221 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Sat, 19 Nov 2016 18:19:18 +0100 Subject: [PATCH 101/727] Fix the Space Cadet timeout code Define a default TAPPING_TERM in quantum.c, for keyboards that do not have it set. Fixes the CI failure. Signed-off-by: Gergely Nagy --- quantum/quantum.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/quantum/quantum.c b/quantum/quantum.c index 2addcb670c..b5e2d60b9d 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -1,5 +1,9 @@ #include "quantum.h" +#ifndef TAPPING_TERM +#define TAPPING_TERM 200 +#endif + static void do_code16 (uint16_t code, void (*f) (uint8_t)) { switch (code) { case QK_MODS ... QK_MODS_MAX: From df8724ce08e09b6b077b601da7976639140655d7 Mon Sep 17 00:00:00 2001 From: Seth Chandler Date: Sat, 19 Nov 2016 12:19:21 -0500 Subject: [PATCH 102/727] remove KC expansion from GH60 --- keyboards/gh60/gh60.h | 44 ----------------- keyboards/gh60/keymaps/default/keymap.c | 36 +++++++------- keyboards/gh60/keymaps/robotmaxtron/keymap.c | 50 ++++++++++---------- keyboards/gh60/keymaps/sethbc/keymap.c | 24 +++++----- 4 files changed, 55 insertions(+), 99 deletions(-) diff --git a/keyboards/gh60/gh60.h b/keyboards/gh60/gh60.h index 4f206cc161..66bc2790d2 100644 --- a/keyboards/gh60/gh60.h +++ b/keyboards/gh60/gh60.h @@ -42,20 +42,6 @@ inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); } { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \ } -#define KC_KEYMAP( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \ - K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \ - K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \ -) { \ - { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \ - { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \ - { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D }, \ - { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D }, \ - { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \ -} - /* ANSI variant. No extra keys for ISO */ #define KEYMAP_ANSI( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ @@ -71,21 +57,6 @@ inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); } { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D } \ } -/* ANSI variant with KC expansion */ -#define KC_KEYMAP_ANSI( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ - K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, \ - K40, K41, K42, K45, K4A, K4B, K4C, K4D \ -) { \ - { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \ - { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \ - { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_NO, KC_##K2D }, \ - { KC_##K30, KC_NO, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_NO, KC_##K3D }, \ - { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_NO, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \ -} - /* HHKB Variant */ #define KEYMAP_HHKB( \ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\ @@ -101,19 +72,4 @@ inline void gh60_wasd_leds_off(void) { DDRF &= ~(1<<7); PORTF &= ~(1<<7); } { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D } \ } -/* HHKB Variant with KC expansion */ -#define KC_KEYMAP_HHKB( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K49,\ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, \ - K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3C, \ - K40, K41, K42, K45, K4A, K4B, K4C, K4D \ -) { \ - { KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D }, \ - { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D }, \ - { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_NO, KC_##K2D }, \ - { KC_##K30, KC_NO, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D }, \ - { KC_##K40, KC_##K41, KC_##K42, KC_NO, KC_NO, KC_##K45, KC_NO, KC_NO, KC_NO, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D } \ -} - #endif diff --git a/keyboards/gh60/keymaps/default/keymap.c b/keyboards/gh60/keymaps/default/keymap.c index 5c88b2ecf1..92f5459840 100644 --- a/keyboards/gh60/keymaps/default/keymap.c +++ b/keyboards/gh60/keymaps/default/keymap.c @@ -3,26 +3,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty */ - KC_KEYMAP( - ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, GRV, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ - CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT,NO, ENT, \ - LSFT,FN1, Z, X, C, V, B, N, M, COMM,DOT, SLSH,FN0, RSFT, \ - LCTL,LGUI,LALT, SPC, BSLS,RALT,RGUI,APP, RCTL), + KEYMAP( + 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_GRV,\ + 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_CAPS,KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_NO,KC_ENT,\ + KC_LSFT,F(1),KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,F(0),KC_RSFT,\ + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_BSLS,KC_RALT,KC_RGUI,KC_APP,KC_RCTL), /* 1: fn */ - KC_KEYMAP( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, \ - TRNS,TRNS,UP, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS), + KEYMAP( + KC_ESC,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_TRNS,\ + KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\ + KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\ + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\ + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), /* 2: arrows */ - KC_KEYMAP( - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,UP, \ - TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,LEFT,DOWN,RGHT), + KEYMAP( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\ + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\ + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,\ + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,\ + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT), }; const uint16_t PROGMEM fn_actions[] = { diff --git a/keyboards/gh60/keymaps/robotmaxtron/keymap.c b/keyboards/gh60/keymaps/robotmaxtron/keymap.c index d53589e811..9acac7cecf 100644 --- a/keyboards/gh60/keymaps/robotmaxtron/keymap.c +++ b/keyboards/gh60/keymaps/robotmaxtron/keymap.c @@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* * Base layer, pretty standard ANSI layout. * ,-----------------------------------------------------------. - * |FN12| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | + * |F(12)| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp | * |-----------------------------------------------------------| * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| * |-----------------------------------------------------------| @@ -21,12 +21,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |Ctrl|Gui |Alt | Space |Alt |Fn |Menu|Ctrl| * `-----------------------------------------------------------' */ - [_BL] = KC_KEYMAP( - FN12,1,2,3,4,5,6,7,8,9,0,MINS,EQL,BSPC, \ - TAB,Q,W,E,R,T,Y,U,I,O,P,LBRC,RBRC,BSLS, \ - FN2,A,S,D,F,G,H,J,K,L,SCLN,QUOT,NO,ENT, \ - LSFT,NO,Z,X,C,V,B,N,M,COMM,DOT,SLSH,NO,RSFT, \ - LCTL,LGUI,LALT, SPC, NO,RALT,FN0,APP, RCTL), + [_BL] = KEYMAP( + F(12),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, \ + F(2),KC_A,KC_S,KC_D,KC_F,KC_G,KC_H,KC_J,KC_K,KC_L,KC_SCLN,KC_QUOT,KC_NO,KC_ENT, \ + 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_NO,KC_RSFT, \ + KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_NO,KC_RALT,F(0),KC_APP,KC_RCTL), /* * Locking arrow keys to WASD for when you need dedicated arrow keys @@ -42,12 +42,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ - [_AL] = KC_KEYMAP( - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,UP,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS), + [_AL] = KEYMAP( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), /* @@ -64,12 +64,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-------------------------------------------------------------' */ - [_FL] = KC_KEYMAP( - GRAVE,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12, DELETE, \ - TRNS,FN1,TRNS,TRNS,TRNS,TRNS,CALC,PGUP,UP,PGDN,PSCR,SLCK,PAUS,TRNS, \ - TRNS,MUTE,_VOLDOWN,_VOLUP,TRNS,TRNS,HOME,LEFT,DOWN,RGHT,INS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,FN3,TRNS,TRNS,TRNS,TRNS,END,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS), + [_FL] = KEYMAP( + KC_GRAVE,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_DELETE, \ + KC_TRNS,F(1),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_CALC,KC_PGUP,KC_UP,KC_PGDN,KC_PSCR,KC_SLCK,KC_PAUS,KC_TRNS, \ + KC_TRNS,KC_MUTE,KC__VOLDOWN,KC__VOLUP,KC_TRNS,KC_TRNS,KC_HOME,KC_LEFT,KC_DOWN,KC_RGHT,KC_INS,KC_TRNS,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_TRNS,F(3),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_END,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), /* * Locking layer for controlling the underglow. @@ -86,12 +86,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | * `-----------------------------------------------------------' */ - [_UL] = KC_KEYMAP( - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,FN4,FN5,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS,FN6,FN7,FN8,FN9,FN10,FN11,TRNS,TRNS,TRNS,TRNS,TRNS, \ - TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS,TRNS), + [_UL] = KEYMAP( + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ + KC_TRNS,F(4),F(5),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_TRNS,KC_TRNS,F(6),F(7),F(8),F(9),F(10),F(11),KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, \ + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS), }; enum function_id { diff --git a/keyboards/gh60/keymaps/sethbc/keymap.c b/keyboards/gh60/keymaps/sethbc/keymap.c index 141c7f0b00..599e664e23 100644 --- a/keyboards/gh60/keymaps/sethbc/keymap.c +++ b/keyboards/gh60/keymaps/sethbc/keymap.c @@ -6,19 +6,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* 0: qwerty */ - KC_KEYMAP_HHKB( - FN0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS, GRV, \ - TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \ - LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT,ENT, \ - LSFT, Z, X, C, V, B, N, M, COMM,DOT, SLSH,RSFT, FN1, \ - LCTL,LALT,LGUI, SPC, RGUI,RALT,APP, RCTL), + KEYMAP_HHKB( + F(0),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_GRV,\ + 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_LSFT,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_N,KC_M,KC_COMM,KC_DOT,KC_SLSH,KC_RSFT,F(1),\ + KC_LCTL,KC_LALT,KC_LGUI, KC_SPC, KC_RGUI,KC_RALT,KC_APP,KC_RCTL), /* 1: fn */ - KC_KEYMAP_HHKB( - GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, TRNS, TRNS, \ - CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,UP,TRNS,TRNS, \ - TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RIGHT,PENT, \ - TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END,PGDN,DOWN,TRNS,TRNS, \ - TRNS,TRNS,TRNS, TRNS, TRNS,TRNS,TRNS,TRNS), + KEYMAP_HHKB( + 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_TRNS,KC_TRNS,\ + KC_CAPS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_UP,KC_TRNS,KC_TRNS,\ + KC_TRNS,KC_VOLD,KC_VOLU,KC_MUTE,KC_TRNS,KC_TRNS,KC_PAST,KC_PSLS,KC_HOME,KC_PGUP,KC_LEFT,KC_RIGHT,KC_PENT,\ + 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), }; enum function_id { From c86bbf474e7709749dfd5e09fa5defd5e6baaaa3 Mon Sep 17 00:00:00 2001 From: Fred Sundvik Date: Sun, 20 Nov 2016 19:28:10 +0200 Subject: [PATCH 103/727] Always initialze the Infinity Ergodox backlight Otherwise it will stay lit. The set_led functionality is also disabled since it doesn't work properly for slaves. --- keyboards/ergodox/infinity/infinity.c | 6 ++++-- keyboards/ergodox/infinity/led.c | 25 +------------------------ 2 files changed, 5 insertions(+), 26 deletions(-) diff --git a/keyboards/ergodox/infinity/infinity.c b/keyboards/ergodox/infinity/infinity.c index c5793385fe..02db67eaf2 100644 --- a/keyboards/ergodox/infinity/infinity.c +++ b/keyboards/ergodox/infinity/infinity.c @@ -38,7 +38,6 @@ void init_serial_link_hal(void) { // Using a higher pre-scalar without flicker is possible but FTM0_MOD will need to be reduced // Which will reduce the brightness range #define PRESCALAR_DEFINE 0 -#ifdef VISUALIZER_ENABLE void lcd_backlight_hal_init(void) { // Setup Backlight SIM->SCGC6 |= SIM_SCGC6_FTM0; @@ -76,7 +75,6 @@ void lcd_backlight_hal_color(uint16_t r, uint16_t g, uint16_t b) { CHANNEL_GREEN.CnV = g; CHANNEL_BLUE.CnV = b; } -#endif __attribute__ ((weak)) void matrix_init_user(void) { @@ -92,6 +90,10 @@ void matrix_init_kb(void) { // runs once when the firmware starts up matrix_init_user(); + // The backlight always has to be initialized, otherwise it will stay lit +#ifndef VISUALIZER_ENABLE + lcd_backlight_hal_init(); +#endif } void matrix_scan_kb(void) { diff --git a/keyboards/ergodox/infinity/led.c b/keyboards/ergodox/infinity/led.c index 77195bb358..8175c1c5c5 100644 --- a/keyboards/ergodox/infinity/led.c +++ b/keyboards/ergodox/infinity/led.c @@ -21,29 +21,6 @@ along with this program. If not, see . void led_set(uint8_t usb_led) { -// The LCD backlight functionality conflicts with this simple -// red backlight -#if !defined(LCD_BACKLIGHT_ENABLE) && defined(STATUS_LED_ENABLE) - // PTC1: LCD Backlight Red(0:on/1:off) - GPIOC->PDDR |= (1<<1); - PORTC->PCR[1] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1); - if (usb_led & (1<PCOR |= (1<<1); - } else { - GPIOC->PSOR |= (1<<1); - } -#elif !defined(LCD_BACKLIGHT_ENABLE) + //TODO: Add led emulation if there's no customized visualization (void)usb_led; - GPIOC->PDDR |= (1<<1); - PORTC->PCR[1] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1); - GPIOC->PSOR |= (1<<1); - GPIOC->PDDR |= (1<<2); - PORTC->PCR[2] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1); - GPIOC->PSOR |= (1<<2); - GPIOC->PDDR |= (1<<3); - PORTC->PCR[3] |= PORTx_PCRn_DSE | PORTx_PCRn_MUX(1); - GPIOC->PSOR |= (1<<3); -#else - (void)usb_led; -#endif } From a8b1c47f0f6e63dc1260159b7b8b2172a3b57ff4 Mon Sep 17 00:00:00 2001 From: Sihui Huang Date: Sun, 20 Nov 2016 11:10:26 -0800 Subject: [PATCH 104/727] add sh-hhkb-jp layers --- keyboards/hhkb/keymaps/sh_jp/Makefile | 1 + keyboards/hhkb/keymaps/sh_jp/README.md | 84 ++++++++++++++++++++++++++ keyboards/hhkb/keymaps/sh_jp/keymap.c | 60 ++++++++++++++++++ 3 files changed, 145 insertions(+) create mode 100644 keyboards/hhkb/keymaps/sh_jp/Makefile create mode 100644 keyboards/hhkb/keymaps/sh_jp/README.md create mode 100644 keyboards/hhkb/keymaps/sh_jp/keymap.c diff --git a/keyboards/hhkb/keymaps/sh_jp/Makefile b/keyboards/hhkb/keymaps/sh_jp/Makefile new file mode 100644 index 0000000000..a7f700f019 --- /dev/null +++ b/keyboards/hhkb/keymaps/sh_jp/Makefile @@ -0,0 +1 @@ +OPT_DEFS += -DHHKB_JP diff --git a/keyboards/hhkb/keymaps/sh_jp/README.md b/keyboards/hhkb/keymaps/sh_jp/README.md new file mode 100644 index 0000000000..7be38a415f --- /dev/null +++ b/keyboards/hhkb/keymaps/sh_jp/README.md @@ -0,0 +1,84 @@ +Keymaps for both Dvorak layout and QWER layout for HHKB JP. +1. The default layout is Dvorak. +2. Use `Tog` to toggle between Dvorak and QWER +3. Holding `NewCmd`, the original `LftCmd`, will activate the `NewCmd` layer which means `NewCmd+key` is the same as `Cmd+key` in normal QWER layout.[1](#cmdTab) + - For example, no matter you are in Dvorak layout or QWER layout, you can use `Cmd+s` to save a currently editing file. +4. `Symb` makes type symbols easier: for example: `Symb+a` is `!`. +5. `Spc+key` equals to `Shft+key` while using `Spc` alone will yield a space as usual. +6. There's an extra `Tab` in the last line. + +``` +Layer QWER: +,-----------------------------------------------------------. +|Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| |Bsp| +|-----------------------------------------------------------| +|Tab | '| ,| .| P| Y| F| G| C| R| L| /| =| | +|------------------------------------------------------` Ent| +|Ctrl | A| O| E| U| I| D| H| T| N| S| -| \| | +|-----------------------------------------------------------| +|Shft | ;| Q| J| K| X| B| M| W| V| Z| | Up| | +|-----------------------------------------------------------| +|FN| `| Alt|NewCmd|Symb| Spc |Symb|Tab|RCmd|Tog|Lft|Dwn|Rgh| +`-----------------------------------------------------------' +``` + +``` +Layer QWER: +,-----------------------------------------------------------. +|Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| -| =| |Bsp| +|-----------------------------------------------------------| +|Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| | +|------------------------------------------------------` Ent| +|Ctrl | A| S| D| F| G| H| J| K| L| ;| '| \| | +|-----------------------------------------------------------| +|Shft | Z| X| C| V| B| N| M| ,| .| /| | Up| | +|-----------------------------------------------------------| +|FN| `| Alt|NewCmd|Symb| Spc |Symb|Tab|Cmd|Tog|Lft|Dwn|Rgh| +`-----------------------------------------------------------' +``` + +``` +Layer Symb: +,-----------------------------------------------------------. +| | | | | | | | | | | | | | | | +|-----------------------------------------------------------| +| | | | [| ]| | | {| }| | | | | | +|------------------------------------------------------` | +| | !| @| #| $| %| ^| &| *| (| )| '| \| | +|-----------------------------------------------------------| +| | | | | | | | | | | | | | | +|-----------------------------------------------------------| +| | | | | | | | | | | | | | +`-----------------------------------------------------------' +``` + +``` +Layer FUNC: HHKB mode (HHKB Fn) +,-----------------------------------------------------------. +|Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del| +|-----------------------------------------------------------| +|Caps | | | | | | | |Psc|Slk|Pus|Up | | | +|------------------------------------------------------` | +| |VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig| | | +|-----------------------------------------------------------| +| | | | | | | +| -|End|PgD|Dow| | | | +|-----------------------------------------------------------| +| || | | | | | | | | || | | | +`-----------------------------------------------------------' +``` + +``` +Empty Layer: +,-----------------------------------------------------------. +| | | | | | | | | | | | | | | | +|-----------------------------------------------------------| +| | | | | | | | | | | | | | | +|------------------------------------------------------` | +| | | | | | | | | | | | | | | +|-----------------------------------------------------------| +| | | | | | | | | | | | | | | +|-----------------------------------------------------------| +| | | | | | | | | | | | | | +`-----------------------------------------------------------' +``` +
1: `NewCmd + Tab` does not work, you can use `RCmd+Tab` to switch among applications. diff --git a/keyboards/hhkb/keymaps/sh_jp/keymap.c b/keyboards/hhkb/keymaps/sh_jp/keymap.c new file mode 100644 index 0000000000..16181acd3e --- /dev/null +++ b/keyboards/hhkb/keymaps/sh_jp/keymap.c @@ -0,0 +1,60 @@ +#include "hhkb.h" + +#define _______ KC_TRNS + +enum { + DVOR, + QWER, + NEW_CMD, + SYMB, + FUNC +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [DVOR] = KEYMAP_JP( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_JYEN, KC_BSPC, + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, + KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_BSLS, KC_ENT, + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RO, KC_UP, KC_RSFT, + MO(FUNC), KC_ZKHK, KC_LALT, MO(NEW_CMD), MO(SYMB), MT(MOD_LSFT, KC_SPC), MO(SYMB), KC_TAB, KC_RGUI, TG(QWER), KC_LEFT, KC_DOWN, KC_RGHT + ), + [QWER] = KEYMAP_JP( + 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_JYEN, 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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RO, KC_UP, KC_RSFT, + MO(FUNC), KC_ZKHK, KC_LALT, MO(NEW_CMD), MO(SYMB), MT(MOD_LSFT, KC_SPC), MO(SYMB), KC_TAB, KC_RGUI, _______, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [NEW_CMD] = KEYMAP_JP( + _______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), _______, _______, _______, _______, + _______, LGUI(KC_Q), LGUI(KC_W), LGUI(KC_E), LGUI(KC_R), LGUI(KC_T), LGUI(KC_Y), LGUI(KC_U), LGUI(KC_I), LGUI(KC_O), LGUI(KC_P), LGUI(KC_LBRC), LGUI(KC_RBRC), + _______, LGUI(KC_A), LGUI(KC_S), LGUI(KC_D), LGUI(KC_F), LGUI(KC_G), LGUI(KC_H), LGUI(KC_J), LGUI(KC_K), LGUI(KC_L), _______, _______, _______, _______, + LGUI(KC_LSFT), LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LGUI(KC_B), LGUI(KC_N), LGUI(KC_M), LGUI(KC_COMM), LGUI(KC_DOT), LGUI(KC_SLSH), _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_LEFT), LGUI(KC_DOWN), LGUI(KC_RGHT) + ), + + [SYMB] = KEYMAP_JP( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, LSFT(KC_LBRC), LSFT(KC_RBRC), _______, _______,_______, _______, + _______, LSFT(KC_1),LSFT(KC_2),LSFT(KC_3),LSFT(KC_4), LSFT(KC_5), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [FUNC] = KEYMAP_JP( + 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_DEL, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, + _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_PWR, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, KC_PENT, + _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, + _______, _______, _______, _______, _______, _______ , _______, _______, _______, _______, _______, _______, _______ + ) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t macro_id, uint8_t opt) { + return MACRO_NONE; +} + +const uint16_t PROGMEM fn_actions[] = { + +}; From 11f17e3b233dbbf7c39e5e0042cc5fdff3acba55 Mon Sep 17 00:00:00 2001 From: Sihui Huang Date: Sun, 20 Nov 2016 11:12:48 -0800 Subject: [PATCH 105/727] Update README.md --- keyboards/hhkb/keymaps/sh_jp/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/hhkb/keymaps/sh_jp/README.md b/keyboards/hhkb/keymaps/sh_jp/README.md index 7be38a415f..6c6ab1bc65 100644 --- a/keyboards/hhkb/keymaps/sh_jp/README.md +++ b/keyboards/hhkb/keymaps/sh_jp/README.md @@ -1,4 +1,5 @@ -Keymaps for both Dvorak layout and QWER layout for HHKB JP. +###Keymaps with both Dvorak layout and QWER layout for HHKB JP. + 1. The default layout is Dvorak. 2. Use `Tog` to toggle between Dvorak and QWER 3. Holding `NewCmd`, the original `LftCmd`, will activate the `NewCmd` layer which means `NewCmd+key` is the same as `Cmd+key` in normal QWER layout.[1](#cmdTab) From 34aa59c6d514cb30ca3582200cadd1da4786c50c Mon Sep 17 00:00:00 2001 From: Sihui Huang Date: Sun, 20 Nov 2016 11:13:57 -0800 Subject: [PATCH 106/727] Update README.md --- keyboards/hhkb/keymaps/sh_jp/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/hhkb/keymaps/sh_jp/README.md b/keyboards/hhkb/keymaps/sh_jp/README.md index 6c6ab1bc65..65e781cf30 100644 --- a/keyboards/hhkb/keymaps/sh_jp/README.md +++ b/keyboards/hhkb/keymaps/sh_jp/README.md @@ -4,7 +4,8 @@ 2. Use `Tog` to toggle between Dvorak and QWER 3. Holding `NewCmd`, the original `LftCmd`, will activate the `NewCmd` layer which means `NewCmd+key` is the same as `Cmd+key` in normal QWER layout.[1](#cmdTab) - For example, no matter you are in Dvorak layout or QWER layout, you can use `Cmd+s` to save a currently editing file. -4. `Symb` makes type symbols easier: for example: `Symb+a` is `!`. +4. `Symb` makes type symbols easier + - for example: `Symb+a` is `!`. 5. `Spc+key` equals to `Shft+key` while using `Spc` alone will yield a space as usual. 6. There's an extra `Tab` in the last line. From 23f63ed1b9487271f8156ecf191ab7d82d595e81 Mon Sep 17 00:00:00 2001 From: Sihui Huang Date: Sun, 20 Nov 2016 11:18:08 -0800 Subject: [PATCH 107/727] Update README.md --- keyboards/hhkb/keymaps/sh_jp/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/hhkb/keymaps/sh_jp/README.md b/keyboards/hhkb/keymaps/sh_jp/README.md index 65e781cf30..37fa43e66f 100644 --- a/keyboards/hhkb/keymaps/sh_jp/README.md +++ b/keyboards/hhkb/keymaps/sh_jp/README.md @@ -10,7 +10,7 @@ 6. There's an extra `Tab` in the last line. ``` -Layer QWER: +Layer DVOR: ,-----------------------------------------------------------. |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| |Bsp| |-----------------------------------------------------------| From 6f24344be78985be5eb2f6e75f1dee546f539646 Mon Sep 17 00:00:00 2001 From: Didier Chagniot Date: Sun, 20 Nov 2016 20:51:05 +0100 Subject: [PATCH 108/727] typo fix --- .../ergodox/keymaps/dvorak_emacs/keymap.c | 2 +- .../ergodox/keymaps/dvorak_emacs/readme.md | 36 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/keyboards/ergodox/keymaps/dvorak_emacs/keymap.c b/keyboards/ergodox/keymaps/dvorak_emacs/keymap.c index 4cb11a56f4..d33c6e5271 100755 --- a/keyboards/ergodox/keymaps/dvorak_emacs/keymap.c +++ b/keyboards/ergodox/keymaps/dvorak_emacs/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Base layer * Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively * - * ,--------------------------------------------------. ,--------------------------------------------------. + * ,--------------------------------------------------. ,--------------------------------------------------. * | | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | = / + | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | ~ |" / ' |, / < |. / > | P | Y | [ | | ] | F | G | C | H | L | / / ? | diff --git a/keyboards/ergodox/keymaps/dvorak_emacs/readme.md b/keyboards/ergodox/keymaps/dvorak_emacs/readme.md index 0578f1e257..a3fc34afeb 100644 --- a/keyboards/ergodox/keymaps/dvorak_emacs/readme.md +++ b/keyboards/ergodox/keymaps/dvorak_emacs/readme.md @@ -1,6 +1,6 @@ # Ergodox Dvorak Layout with emacs binding in mind * Control & Alt key on the thumbs (activated if pressed with another key). - * In the same way, "I" and "R" are the shift modifier if pressed with another key. + * In the same way, "U" and "R" are the shift modifier if pressed with another key. * "I" and "D" set the layer 1 for the auxiliary keys if pressed with another key. * Software layout set to english. @@ -15,23 +15,23 @@ Keys with double values (like U/LSft) correspond to the 'tapped' key and the 'he

 
 ,--------------------------------------------------.           ,--------------------------------------------------.
- |        |   1  |   2  |   3  |   4  |   5  |  Esc |           |  Esc |   6  |   7  |   8  |   9  |   0  |   =    |
- |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
- |   ~    |  '   |   ,  |   .  |   P  |   Y  |   [  |           |   ]  |   F  |   G  |   C  |   H  |   L  |   /    |
- |--------+------+------+------+------+------|   {  |           |   }  |------+------+------+------+------+--------|
- |  Tab   |   A  |   O  |   E  |U/LSft| I/L1 |------|           |------|  D/L1|R/RSft|   T  |   N  |   S  |   -    |
- |--------+------+------+------+------+------| LGUI |           | LGUI |------+------+------+------+------+--------|
- | {/LSft |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
- `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
-   |      |      |      |      | ~L1  |                                       | ~L1  |      |      |   \  |        |
-   `----------------------------------'                                       `----------------------------------'
-                                        ,-------------.       ,-------------.
-                                        | HOME |  END |       | LEFT | RIGHT|
-                                 ,------|------|------|       |------+--------+------.
-                                 | BSPC |  DEL | PGUP |       |  UP  | SPACE  |RETURN|
-                                 |  /   |  /   |------|       |------|   /    |  /   |
-                                 | LCTL | LALT |PGDWN |       | DOWN | LALT   | LCTL |
-                                 `--------------------'       `----------------------'
+|        |   1  |   2  |   3  |   4  |   5  |  Esc |           |  Esc |   6  |   7  |   8  |   9  |   0  |   =    |
+|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+|   ~    |  '   |   ,  |   .  |   P  |   Y  |   [  |           |   ]  |   F  |   G  |   C  |   H  |   L  |   /    |
+|--------+------+------+------+------+------|   {  |           |   }  |------+------+------+------+------+--------|
+|  Tab   |   A  |   O  |   E  |U/LSft| I/L1 |------|           |------|  D/L1|R/RSft|   T  |   N  |   S  |   -    |
+|--------+------+------+------+------+------| LGUI |           | LGUI |------+------+------+------+------+--------|
+| {/LSft |   ;  |   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |   Z  | }/RSft |
+`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+  |      |      |      |      | ~L1  |                                       | ~L1  |      |      |   \  |      |
+  `----------------------------------'                                       `----------------------------------'
+                                       ,-------------.       ,-------------.
+                                       | HOME |  END |       | LEFT | RIGHT|
+                                ,------|------|------|       |------+--------+------.
+                                | BSPC |  DEL | PGUP |       |  UP  | SPACE  |RETURN|
+                                |  /   |  /   |------|       |------|   /    |  /   |
+                                | LCTL | LALT |PGDWN |       | DOWN | LALT   | LCTL |
+                                `--------------------'       `----------------------'
 
 
From ccc34851f2e12d990a6d51742fc7e85e8011a94d Mon Sep 17 00:00:00 2001 From: Sihui Huang Date: Sun, 20 Nov 2016 13:31:41 -0800 Subject: [PATCH 109/727] add space to NewCmd layer --- keyboards/hhkb/keymaps/sh_jp/README.md | 2 +- keyboards/hhkb/keymaps/sh_jp/keymap.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/hhkb/keymaps/sh_jp/README.md b/keyboards/hhkb/keymaps/sh_jp/README.md index 65e781cf30..84557a5c07 100644 --- a/keyboards/hhkb/keymaps/sh_jp/README.md +++ b/keyboards/hhkb/keymaps/sh_jp/README.md @@ -8,7 +8,7 @@ - for example: `Symb+a` is `!`. 5. `Spc+key` equals to `Shft+key` while using `Spc` alone will yield a space as usual. 6. There's an extra `Tab` in the last line. - + ``` Layer QWER: ,-----------------------------------------------------------. diff --git a/keyboards/hhkb/keymaps/sh_jp/keymap.c b/keyboards/hhkb/keymaps/sh_jp/keymap.c index 16181acd3e..c2bdd37bc2 100644 --- a/keyboards/hhkb/keymaps/sh_jp/keymap.c +++ b/keyboards/hhkb/keymaps/sh_jp/keymap.c @@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, LGUI(KC_Q), LGUI(KC_W), LGUI(KC_E), LGUI(KC_R), LGUI(KC_T), LGUI(KC_Y), LGUI(KC_U), LGUI(KC_I), LGUI(KC_O), LGUI(KC_P), LGUI(KC_LBRC), LGUI(KC_RBRC), _______, LGUI(KC_A), LGUI(KC_S), LGUI(KC_D), LGUI(KC_F), LGUI(KC_G), LGUI(KC_H), LGUI(KC_J), LGUI(KC_K), LGUI(KC_L), _______, _______, _______, _______, LGUI(KC_LSFT), LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LGUI(KC_B), LGUI(KC_N), LGUI(KC_M), LGUI(KC_COMM), LGUI(KC_DOT), LGUI(KC_SLSH), _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_LEFT), LGUI(KC_DOWN), LGUI(KC_RGHT) + _______, _______, _______, _______, _______, LGUI(KC_SPC), _______, _______, _______, _______, LGUI(KC_LEFT), LGUI(KC_DOWN), LGUI(KC_RGHT) ), [SYMB] = KEYMAP_JP( From b75538c0bfca03f7b493b7b7dbaf9dc5e7631e53 Mon Sep 17 00:00:00 2001 From: Sihui Huang Date: Sun, 20 Nov 2016 14:45:51 -0800 Subject: [PATCH 110/727] add del to new cmd --- keyboards/hhkb/keymaps/sh_jp/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/hhkb/keymaps/sh_jp/keymap.c b/keyboards/hhkb/keymaps/sh_jp/keymap.c index c2bdd37bc2..d4cb3b0418 100644 --- a/keyboards/hhkb/keymaps/sh_jp/keymap.c +++ b/keyboards/hhkb/keymaps/sh_jp/keymap.c @@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ), [NEW_CMD] = KEYMAP_JP( - _______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), _______, _______, _______, _______, + _______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), _______, _______, _______, LGUI(KC_BSPC), _______, LGUI(KC_Q), LGUI(KC_W), LGUI(KC_E), LGUI(KC_R), LGUI(KC_T), LGUI(KC_Y), LGUI(KC_U), LGUI(KC_I), LGUI(KC_O), LGUI(KC_P), LGUI(KC_LBRC), LGUI(KC_RBRC), _______, LGUI(KC_A), LGUI(KC_S), LGUI(KC_D), LGUI(KC_F), LGUI(KC_G), LGUI(KC_H), LGUI(KC_J), LGUI(KC_K), LGUI(KC_L), _______, _______, _______, _______, LGUI(KC_LSFT), LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), LGUI(KC_B), LGUI(KC_N), LGUI(KC_M), LGUI(KC_COMM), LGUI(KC_DOT), LGUI(KC_SLSH), _______, _______, _______, From b57cf3c0c851f2fb0e32c955b16fc6f0ad236e54 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Mon, 21 Nov 2016 12:54:06 -0500 Subject: [PATCH 111/727] more structure to the package --- tmk_core/protocol/lufa/lufa.c | 109 +++++++++++++++++++++++++++------- tmk_core/protocol/lufa/lufa.h | 15 ++++- 2 files changed, 101 insertions(+), 23 deletions(-) diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index ae9cc2f962..cc00b3b89b 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -1147,10 +1147,9 @@ void send_nibble(uint8_t number) { } } -uint8_t midi_buffer[16] = {0}; +uint8_t midi_buffer[MIDI_SYSEX_BUFFER] = {0}; -void sysex_callback(MidiDevice * device, - uint16_t start, uint8_t length, uint8_t * data) { +void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t * data) { // for (int i = 0; i < length; i++) // midi_send_cc(device, 15, 0x7F & data[i], 0x7F & (start + i)); // if (start == 0x27) { @@ -1169,7 +1168,7 @@ void sysex_callback(MidiDevice * device, } -uint32_t decode_4byte_chunk(uint8_t * data) { +uint32_t decode_uint32_chunk(uint8_t * data) { uint32_t part1 = *data++; uint32_t part2 = *data++; uint32_t part3 = *data++; @@ -1178,7 +1177,13 @@ uint32_t decode_4byte_chunk(uint8_t * data) { return ((part1 & 0x1FUL) << 28) | (part2 << 21) | (part3 << 14) | (part4 << 7) | part5; } -void encode_4byte_chunk(uint32_t data, uint8_t * pointer) { +uint32_t decode_uint8_chunk(uint8_t * data) { + uint32_t part4 = *data++; + uint32_t part5 = *data++; + return (part4 << 7) | part5; +} + +void encode_uint32_chunk(uint32_t data, uint8_t * pointer) { *pointer++ = (data >> 28) & 0x7F; *pointer++ = (data >> 21) & 0x7F; *pointer++ = (data >> 14) & 0x7F; @@ -1186,6 +1191,11 @@ void encode_4byte_chunk(uint32_t data, uint8_t * pointer) { *pointer++ = (data) & 0x7F; } +void encode_uint8_chunk(uint8_t data, uint8_t * pointer) { + *pointer++ = (data >> 7) & 0x7F; + *pointer++ = (data) & 0x7F; +} + void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) { uint8_t * pointer_copy = data; @@ -1197,28 +1207,77 @@ void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) data++; switch (*data++) { - case 0x13: ; // Get info from keyboard + case 0x12: ; // Set info on keyboard switch (*data++) { - case 0x00: ; // Get layer state - // send_dword(layer_state); - uint8_t chunk[5]; - encode_4byte_chunk(layer_state | default_layer_state, &chunk); - - uint8_t array[] = {0xF0, 0x00, 0x00, 0x00, 0x00, chunk[0], chunk[1], chunk[2], chunk[3], chunk[4], 0xF7}; - midi_send_array(&midi_device, 11, &array); - // midi_send_data(device, 3, 0x00, layer_state >> 24 & 0x7f, layer_state >> 16 & 0x7f); - // midi_send_data(device, 6, layer_state >> 8 & 0x7f, layer_state & 0x7f, 0xF7); + case 0x02: ; // set default layer + uint8_t default_layer = decode_uint8_chunk(data); + eeconfig_update_default_layer(default_layer); + default_layer_set((uint32_t)default_layer); + break; + case 0x08: ; // set keymap options + uint8_t keymap_options = decode_uint8_chunk(data); + eeconfig_update_keymap(keymap_options); break; } + break; + case 0x13: ; // Get info from keyboard + switch (*data++) { + case 0x00: ; // Handshake + send_bytes_sysex(0x00, NULL, 0); + break; + case 0x01: ; // Get debug state + uint8_t debug[2]; + encode_uint8_chunk(eeprom_read_byte(EECONFIG_DEBUG), &debug); + send_bytes_sysex(0x01, &debug, 2); + break; + case 0x02: ; // Get default layer + uint8_t default_layer[2]; + encode_uint8_chunk(eeprom_read_byte(EECONFIG_DEFAULT_LAYER), &default_layer); + send_bytes_sysex(0x02, &default_layer, 2); + break; + #ifdef AUDIO_ENABLE + case 0x03: ; // Get backlight state + uint8_t audio[2]; + encode_uint8_chunk(eeprom_read_byte(EECONFIG_AUDIO), &audio); + send_bytes_sysex(0x03, &audio, 2); + #endif + case 0x04: ; // Get layer state + uint8_t layers[5]; + encode_uint32_chunk(layer_state, &layers); + send_bytes_sysex(0x04, &layers, 5); + break; + #ifdef BACKLIGHT_ENABLE + case 0x06: ; // Get backlight state + uint8_t backlight[2]; + encode_uint8_chunk(eeprom_read_byte(EECONFIG_BACKLIGHT), &backlight); + send_bytes_sysex(0x06, &backlight, 2); + #endif + #ifdef RGBLIGHT_ENABLE + case 0x07: ; // Get rgblight state + uint8_t rgblight[2]; + encode_uint32_chunk(eeprom_read_dword(EECONFIG_RGBLIGHT), &rgblight); + send_bytes_sysex(0x07, &rgblight, 5); + #endif + case 0x08: ; // Keymap options + uint8_t keymap_options[2]; + encode_uint8_chunk(eeconfig_read_keymap(), &keymap_options); + send_bytes_sysex(0x08, &keymap_options, 2); + break; + } + break; #ifdef RGBLIGHT_ENABLE case 0x27: ; // RGB LED functions switch (*data++) { case 0x00: ; // Update HSV - uint32_t chunk = decode_4byte_chunk(data); - rgblight_sethsv(((chunk >> 16) & 0xFFFF) % 360, (chunk >> 8) & 0xFF, chunk & 0xFF); + uint32_t hsv = decode_uint32_chunk(data); + rgblight_sethsv(((hsv >> 16) & 0xFFFF) % 360, (hsv >> 8) & 0xFF, hsv & 0xFF); break; case 0x01: ; // Update RGB break; + case 0x02: ; // Update mode + uint8_t rgb_mode = decode_uint8_chunk(data); + rgblight_mode(rgb_mode); + break; } break; #endif @@ -1234,10 +1293,20 @@ void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) void send_unicode_midi(uint32_t unicode) { uint8_t chunk[5]; - encode_4byte_chunk(unicode, &chunk); + encode_uint32_chunk(unicode, &chunk); + send_bytes_sysex(0x05, &chunk, 5); +} - uint8_t array[] = {0xF0, 0x00, 0x00, 0x00, 0x05, chunk[0], chunk[1], chunk[2], chunk[3], chunk[4], 0xF7}; - midi_send_array(&midi_device, 11, &array); +void send_bytes_sysex(uint8_t type, uint8_t * bytes, uint8_t length) { + uint8_t * array = malloc(sizeof(uint8_t) * (length + 6)); + array[0] = 0xF0; + array[1] = 0x00; + array[2] = 0x00; + array[3] = 0x00; + array[4] = type; + array[length + 5] = 0xF7; + memcpy(array + 5, bytes, length); + midi_send_array(&midi_device, length + 6, array); } #endif diff --git a/tmk_core/protocol/lufa/lufa.h b/tmk_core/protocol/lufa/lufa.h index 3fec797b6c..198964f901 100644 --- a/tmk_core/protocol/lufa/lufa.h +++ b/tmk_core/protocol/lufa/lufa.h @@ -68,9 +68,18 @@ typedef struct { } __attribute__ ((packed)) report_extra_t; #ifdef MIDI_ENABLE -void MIDI_Task(void); -MidiDevice midi_device; -void send_unicode_midi(uint32_t unicode); + #define MIDI_SYSEX_BUFFER 16 + void MIDI_Task(void); + MidiDevice midi_device; + + void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t * data); + uint32_t decode_uint32_chunk(uint8_t * data); + uint32_t decode_uint8_chunk(uint8_t * data); + void encode_uint32_chunk(uint32_t data, uint8_t * pointer); + void encode_uint8_chunk(uint8_t data, uint8_t * pointer); + void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data); + void send_unicode_midi(uint32_t unicode); + void send_bytes_sysex(uint8_t type, uint8_t * bytes, uint8_t length); #endif // #if LUFA_VERSION_INTEGER < 0x120730 From c1037b1dc060d14a09a59f697fefe2b5b91bf373 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Mon, 21 Nov 2016 18:05:06 -0500 Subject: [PATCH 112/727] working with helper, qmk_helper_windows@05b0105 --- keyboards/planck/keymaps/default/Makefile | 8 ++++---- keyboards/planck/keymaps/default/keymap.c | 4 ++-- tmk_core/protocol/lufa/lufa.c | 6 ++++++ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/keyboards/planck/keymaps/default/Makefile b/keyboards/planck/keymaps/default/Makefile index 0f4953888d..267a087ea9 100644 --- a/keyboards/planck/keymaps/default/Makefile +++ b/keyboards/planck/keymaps/default/Makefile @@ -5,17 +5,17 @@ # the appropriate keymap folder that will get included automatically # BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration +COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls +MIDI_ENABLE = yes # MIDI controls AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c index 5f71ae7d19..ddbe4d7b27 100644 --- a/keyboards/planck/keymaps/default/keymap.c +++ b/keyboards/planck/keymaps/default/keymap.c @@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LOWER] = { {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, @@ -125,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RAISE] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______}, + {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index cc00b3b89b..35739e3211 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -1207,6 +1207,12 @@ void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) data++; switch (*data++) { + case 0x07: ; // Quantum action + break; + case 0x08: ; // Keyboard acion + break; + case 0x09: ; // User action + break; case 0x12: ; // Set info on keyboard switch (*data++) { case 0x02: ; // set default layer From 664c0a036b3d7c3ed39f4a7a78d97f4a9cc7d20c Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Mon, 21 Nov 2016 19:50:55 -0500 Subject: [PATCH 113/727] cleaning up new code --- quantum/light_ws2812.h | 2 +- quantum/quantum.c | 40 ++++++++++++++++ quantum/quantum.h | 5 ++ tmk_core/protocol/lufa/lufa.c | 90 +++++++++++------------------------ 4 files changed, 73 insertions(+), 64 deletions(-) diff --git a/quantum/light_ws2812.h b/quantum/light_ws2812.h index 0bef93d5ec..9498e550e9 100755 --- a/quantum/light_ws2812.h +++ b/quantum/light_ws2812.h @@ -16,7 +16,7 @@ #include #include //#include "ws2812_config.h" -#include "i2cmaster.h" +//#include "i2cmaster.h" #define LIGHT_I2C 1 #define LIGHT_I2C_ADDR 0x84 diff --git a/quantum/quantum.c b/quantum/quantum.c index 9fd9a6ef72..8b2fefef65 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -802,6 +802,46 @@ void backlight_set(uint8_t level) #endif // backlight +// Functions for spitting out values +// + +void send_dword(uint32_t number) { // this might not actually work + uint16_t word = (number >> 16); + send_word(word); + send_word(number & 0xFFFFUL); +} + +void send_word(uint16_t number) { + uint8_t byte = number >> 8; + send_byte(byte); + send_byte(number & 0xFF); +} + +void send_byte(uint8_t number) { + uint8_t nibble = number >> 4; + send_nibble(nibble); + send_nibble(number & 0xF); +} + +void send_nibble(uint8_t number) { + switch (number) { + case 0: + register_code(KC_0); + unregister_code(KC_0); + break; + case 1 ... 9: + register_code(KC_1 + (number - 1)); + unregister_code(KC_1 + (number - 1)); + break; + case 0xA ... 0xF: + register_code(KC_A + (number - 0xA)); + unregister_code(KC_A + (number - 0xA)); + break; + } +} + + + __attribute__ ((weak)) void led_set_user(uint8_t usb_led) { diff --git a/quantum/quantum.h b/quantum/quantum.h index 06a2e049dc..3d35f11fad 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -110,6 +110,11 @@ void breathing_speed_dec(uint8_t value); #endif #endif +void send_dword(uint32_t number); +void send_word(uint16_t number); +void send_byte(uint8_t number); +void send_nibble(uint8_t number); + void led_set_user(uint8_t usb_led); void led_set_kb(uint8_t usb_led); diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 35739e3211..14da3b8039 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -84,9 +84,9 @@ static uint8_t keyboard_led_stats = 0; static report_keyboard_t keyboard_report_sent; #ifdef MIDI_ENABLE -void usb_send_func(MidiDevice * device, uint16_t cnt, uint8_t byte0, uint8_t byte1, uint8_t byte2); -void usb_get_midi(MidiDevice * device); -void midi_usb_init(MidiDevice * device); +static void usb_send_func(MidiDevice * device, uint16_t cnt, uint8_t byte0, uint8_t byte1, uint8_t byte2); +static void usb_get_midi(MidiDevice * device); +static void midi_usb_init(MidiDevice * device); #endif /* Host driver */ @@ -714,7 +714,7 @@ int8_t sendchar(uint8_t c) ******************************************************************************/ #ifdef MIDI_ENABLE -void usb_send_func(MidiDevice * device, uint16_t cnt, uint8_t byte0, uint8_t byte1, uint8_t byte2) { +static void usb_send_func(MidiDevice * device, uint16_t cnt, uint8_t byte0, uint8_t byte1, uint8_t byte2) { MIDI_EventPacket_t event; event.Data1 = byte0; event.Data2 = byte1; @@ -774,7 +774,7 @@ void usb_send_func(MidiDevice * device, uint16_t cnt, uint8_t byte0, uint8_t byt USB_USBTask(); } -void usb_get_midi(MidiDevice * device) { +static void usb_get_midi(MidiDevice * device) { MIDI_EventPacket_t event; while (MIDI_Device_ReceiveEventPacket(&USB_MIDI_Interface, &event)) { @@ -804,12 +804,12 @@ void usb_get_midi(MidiDevice * device) { USB_USBTask(); } -void midi_usb_init(MidiDevice * device){ +static void midi_usb_init(MidiDevice * device){ midi_device_init(device); midi_device_set_send_func(device, usb_send_func); midi_device_set_pre_input_process_func(device, usb_get_midi); - SetupHardware(); + // SetupHardware(); sei(); } @@ -1112,41 +1112,6 @@ void cc_callback(MidiDevice * device, #endif } -void send_dword(uint32_t number) { - uint16_t word = (number >> 16); - send_word(word); - send_word(number & 0xFFFFUL); -} - -void send_word(uint16_t number) { - uint8_t byte = number >> 8; - send_byte(byte); - send_byte(number & 0xFF); -} - -void send_byte(uint8_t number) { - uint8_t nibble = number >> 4; - send_nibble(nibble); - send_nibble(number & 0xF); -} - -void send_nibble(uint8_t number) { - switch (number) { - case 0: - register_code(KC_0); - unregister_code(KC_0); - break; - case 1 ... 9: - register_code(KC_1 + (number - 1)); - unregister_code(KC_1 + (number - 1)); - break; - case 0xA ... 0xF: - register_code(KC_A + (number - 0xA)); - unregister_code(KC_A + (number - 0xA)); - break; - } -} - uint8_t midi_buffer[MIDI_SYSEX_BUFFER] = {0}; void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t * data) { @@ -1159,8 +1124,8 @@ void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t for (uint8_t place = 0; place < length; place++) { // send_byte(*data); midi_buffer[start + place] = *data; - if (*data == 0xF7) - sysex_buffer_callback(device, start + place, &midi_buffer); + if (*data == 0xF7 && midi_buffer[0] == 0xF0) + sysex_buffer_callback(device, start + place, midi_buffer); // SEND_STRING(" "); data++; } @@ -1197,10 +1162,9 @@ void encode_uint8_chunk(uint8_t data, uint8_t * pointer) { } void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) { - uint8_t * pointer_copy = data; + // uint8_t * pointer_copy = data; // use for debugging - if (*data++ != 0xF0) - return + //data++; // i'm 98% sure there's a better way to do this data++; data++; data++; @@ -1233,41 +1197,41 @@ void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) break; case 0x01: ; // Get debug state uint8_t debug[2]; - encode_uint8_chunk(eeprom_read_byte(EECONFIG_DEBUG), &debug); - send_bytes_sysex(0x01, &debug, 2); + encode_uint8_chunk(eeprom_read_byte(EECONFIG_DEBUG), debug); + send_bytes_sysex(0x01, debug, 2); break; case 0x02: ; // Get default layer uint8_t default_layer[2]; - encode_uint8_chunk(eeprom_read_byte(EECONFIG_DEFAULT_LAYER), &default_layer); - send_bytes_sysex(0x02, &default_layer, 2); + encode_uint8_chunk(eeprom_read_byte(EECONFIG_DEFAULT_LAYER), default_layer); + send_bytes_sysex(0x02, default_layer, 2); break; #ifdef AUDIO_ENABLE case 0x03: ; // Get backlight state uint8_t audio[2]; - encode_uint8_chunk(eeprom_read_byte(EECONFIG_AUDIO), &audio); - send_bytes_sysex(0x03, &audio, 2); + encode_uint8_chunk(eeprom_read_byte(EECONFIG_AUDIO), audio); + send_bytes_sysex(0x03, audio, 2); #endif case 0x04: ; // Get layer state uint8_t layers[5]; - encode_uint32_chunk(layer_state, &layers); - send_bytes_sysex(0x04, &layers, 5); + encode_uint32_chunk(layer_state, layers); + send_bytes_sysex(0x04, layers, 5); break; #ifdef BACKLIGHT_ENABLE case 0x06: ; // Get backlight state uint8_t backlight[2]; - encode_uint8_chunk(eeprom_read_byte(EECONFIG_BACKLIGHT), &backlight); - send_bytes_sysex(0x06, &backlight, 2); + encode_uint8_chunk(eeprom_read_byte(EECONFIG_BACKLIGHT), backlight); + send_bytes_sysex(0x06, backlight, 2); #endif #ifdef RGBLIGHT_ENABLE case 0x07: ; // Get rgblight state uint8_t rgblight[2]; - encode_uint32_chunk(eeprom_read_dword(EECONFIG_RGBLIGHT), &rgblight); - send_bytes_sysex(0x07, &rgblight, 5); + encode_uint32_chunk(eeprom_read_dword(EECONFIG_RGBLIGHT), rgblight); + send_bytes_sysex(0x07, rgblight, 5); #endif case 0x08: ; // Keymap options uint8_t keymap_options[2]; - encode_uint8_chunk(eeconfig_read_keymap(), &keymap_options); - send_bytes_sysex(0x08, &keymap_options, 2); + encode_uint8_chunk(eeconfig_read_keymap(), keymap_options); + send_bytes_sysex(0x08, keymap_options, 2); break; } break; @@ -1299,8 +1263,8 @@ void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) void send_unicode_midi(uint32_t unicode) { uint8_t chunk[5]; - encode_uint32_chunk(unicode, &chunk); - send_bytes_sysex(0x05, &chunk, 5); + encode_uint32_chunk(unicode, chunk); + send_bytes_sysex(0x05, chunk, 5); } void send_bytes_sysex(uint8_t type, uint8_t * bytes, uint8_t length) { From 6390033e8688550826a4bd3004a2e76568600657 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Mon, 21 Nov 2016 20:14:16 -0500 Subject: [PATCH 114/727] cleaning up midid --- quantum/config_common.h | 99 ++++++++++++++++++----------------- tmk_core/common/host_driver.h | 9 +++- tmk_core/protocol/lufa/lufa.c | 2 +- 3 files changed, 59 insertions(+), 51 deletions(-) diff --git a/quantum/config_common.h b/quantum/config_common.h index 8ed5f4a106..f3897dc2ce 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -5,55 +5,56 @@ #define COL2ROW 0 #define ROW2COL 1 /* I/O pins */ -#define B0 0x30 -#define B1 0x31 -#define B2 0x32 -#define B3 0x33 -#define B4 0x34 -#define B5 0x35 -#define B6 0x36 -#define B7 0x37 -#define C0 0x60 -#define C1 0x61 -#define C2 0x62 -#define C3 0x63 -#define C4 0x64 -#define C5 0x65 -#define C6 0x66 -#define C7 0x67 -#define D0 0x90 -#define D1 0x91 -#define D2 0x92 -#define D3 0x93 -#define D4 0x94 -#define D5 0x95 -#define D6 0x96 -#define D7 0x97 -#define E0 0xC0 -#define E1 0xC1 -#define E2 0xC2 -#define E3 0xC3 -#define E4 0xC4 -#define E5 0xC5 -#define E6 0xC6 -#define E7 0xC7 -#define F0 0xF0 -#define F1 0xF1 -#define F2 0xF2 -#define F3 0xF3 -#define F4 0xF4 -#define F5 0xF5 -#define F6 0xF6 -#define F7 0xF7 -#define A0 0x00 -#define A1 0x01 -#define A2 0x02 -#define A3 0x03 -#define A4 0x04 -#define A5 0x05 -#define A6 0x06 -#define A7 0x07 - +#ifndef F0 + #define B0 0x30 + #define B1 0x31 + #define B2 0x32 + #define B3 0x33 + #define B4 0x34 + #define B5 0x35 + #define B6 0x36 + #define B7 0x37 + #define C0 0x60 + #define C1 0x61 + #define C2 0x62 + #define C3 0x63 + #define C4 0x64 + #define C5 0x65 + #define C6 0x66 + #define C7 0x67 + #define D0 0x90 + #define D1 0x91 + #define D2 0x92 + #define D3 0x93 + #define D4 0x94 + #define D5 0x95 + #define D6 0x96 + #define D7 0x97 + #define E0 0xC0 + #define E1 0xC1 + #define E2 0xC2 + #define E3 0xC3 + #define E4 0xC4 + #define E5 0xC5 + #define E6 0xC6 + #define E7 0xC7 + #define F0 0xF0 + #define F1 0xF1 + #define F2 0xF2 + #define F3 0xF3 + #define F4 0xF4 + #define F5 0xF5 + #define F6 0xF6 + #define F7 0xF7 + #define A0 0x00 + #define A1 0x01 + #define A2 0x02 + #define A3 0x03 + #define A4 0x04 + #define A5 0x05 + #define A6 0x06 + #define A7 0x07 +#endif /* USART configuration */ #ifdef BLUETOOTH_ENABLE diff --git a/tmk_core/common/host_driver.h b/tmk_core/common/host_driver.h index edb9e5dd9c..588d1c0be8 100644 --- a/tmk_core/common/host_driver.h +++ b/tmk_core/common/host_driver.h @@ -20,7 +20,9 @@ along with this program. If not, see . #include #include "report.h" - +#ifdef MIDI_ENABLE + #include "midi.h" +#endif typedef struct { uint8_t (*keyboard_leds)(void); @@ -28,6 +30,11 @@ typedef struct { void (*send_mouse)(report_mouse_t *); void (*send_system)(uint16_t); void (*send_consumer)(uint16_t); +#ifdef MIDI_ENABLE + void (*usb_send_func)(MidiDevice *, uint16_t, uint8_t, uint8_t, uint8_t); + void (*usb_get_midi)(MidiDevice *); + void (*midi_usb_init)(MidiDevice *); +#endif } host_driver_t; #endif diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 14da3b8039..a33a16599e 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -1051,7 +1051,7 @@ int main(void) // MIDI_Task(); #endif -#ifdef RGBLIGHT_ENABLE +#ifdef RGBLIGHT_ANIMATIONS rgblight_task(); #endif From 06a2677b7eedbf58532fa1a673ba1277e756174d Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Mon, 21 Nov 2016 20:17:32 -0500 Subject: [PATCH 115/727] fix infinity --- keyboards/ergodox/config.h | 2 -- keyboards/ergodox/ez/config.h | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/ergodox/config.h b/keyboards/ergodox/config.h index 049c707a56..edc60caae1 100644 --- a/keyboards/ergodox/config.h +++ b/keyboards/ergodox/config.h @@ -1,8 +1,6 @@ #ifndef KEYBOARDS_ERGODOX_CONFIG_H_ #define KEYBOARDS_ERGODOX_CONFIG_H_ -#include "config_common.h" - #define MOUSEKEY_DELAY 100 #define MOUSEKEY_INTERVAL 20 #define MOUSEKEY_MAX_SPEED 3 diff --git a/keyboards/ergodox/ez/config.h b/keyboards/ergodox/ez/config.h index 084a044ee1..67a856e511 100644 --- a/keyboards/ergodox/ez/config.h +++ b/keyboards/ergodox/ez/config.h @@ -21,6 +21,8 @@ along with this program. If not, see . #include "../config.h" +#include "config_common.h" + /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x1307 From 2febf9b9f7d610fc2eca666a842272cb90a87919 Mon Sep 17 00:00:00 2001 From: h-youhei Date: Tue, 22 Nov 2016 20:40:12 +0900 Subject: [PATCH 116/727] Add japanese keymap --- quantum/keymap_extras/keymap_jp.h | 62 +++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 quantum/keymap_extras/keymap_jp.h diff --git a/quantum/keymap_extras/keymap_jp.h b/quantum/keymap_extras/keymap_jp.h new file mode 100644 index 0000000000..e81b5952e0 --- /dev/null +++ b/quantum/keymap_extras/keymap_jp.h @@ -0,0 +1,62 @@ +/* JP106-layout (Japanese Standard) + * + * For more information, see + * http://www2d.biglobe.ne.jp/~msyk/keyboard/layout/usbkeycode.html + * note: This website is written in Japanese. + */ + + +#ifndef KEYMAP_JP_H +#define KEYMAP_JP_H + + +#include "keymap.h" + + +#define JP_ZHTG KC_GRV // hankaku/zenkaku|kanzi +#define JP_YEN KC_INT3 // yen, | +#define JP_CIRC KC_EQL // ^, ~ +#define JP_AT KC_LBRC // @, ` +#define JP_LBRC KC_RBRC // [, { +#define JP_COLN KC_QUOT // :, * +#define JP_RBRC KC_NUHS // ], } +#define JP_BSLS KC_INT1 // \, _ +#define JP_MHEN KC_INT5 // muhenkan +#define JP_HENK KC_INT4 // henkan +#define JP_KANA KC_INT2 // katakana/hiragana|ro-mazi + + +//Aliases for shifted symbols +#define JP_DQT LSFT(KC_2) // " +#define JP_AMPR LSFT(KC_6) // & +#define JP_QUOT LSFT(KC_7) // ' +#define JP_LPRN LSFT(KC_8) // ( +#define JP_RPRN LSFT(KC_9) // ) +#define JP_EQL LSFT(KC_MINS) // = +#define JP_TILD LSFT(JP_CIRC) // ~ +#define JP_PIPE LSFT(JP_YEN) // | +#define JP_GRV LSFT(JP_AT) // ` +#define JP_LCBR LSFT(JP_LBRC) // { +#define JP_PLUS LSFT(KC_SCLN) // + +#define JP_ASTR LSFT(JP_COLN) // * +#define JP_RCBR LSFT(JP_RBRC) // } +#define JP_UNDS LSFT(JP_BSLS) // _ + + +// These symbols are correspond to US101-layout. +#define JP_MINS KC_MINS // - +#define JP_SCLN KC_SCLN // ; +#define JP_COMM KC_COMM // , +#define JP_DOT KC_DOT // . +#define JP_SLSH KC_SLSH // / +// shifted +#define JP_EXLM KC_EXLM // ! +#define JP_HASH KC_HASH // # +#define JP_DLR KC_DLR // $ +#define JP_PERC KC_PERC // % +#define JP_LT KC_LT // < +#define JP_GT KC_GT // > +#define JP_QUES KC_QUES // ? + + +#endif From d37becc0a9203c4c7d52aca6190b4b3d9fb69a59 Mon Sep 17 00:00:00 2001 From: PureSpider Date: Tue, 22 Nov 2016 22:12:57 +0100 Subject: [PATCH 117/727] Set backlight status to on if it's at maximum brightness already and the brightness increase keybind is used Before it was turned on but the status wasn't set to on, so you had to push the backlight toggle bind twice to turn it off again --- tmk_core/common/backlight.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tmk_core/common/backlight.c b/tmk_core/common/backlight.c index c9e8fd3fd2..0e0ad2d154 100644 --- a/tmk_core/common/backlight.c +++ b/tmk_core/common/backlight.c @@ -36,9 +36,9 @@ void backlight_increase(void) if(backlight_config.level < BACKLIGHT_LEVELS) { backlight_config.level++; - backlight_config.enable = 1; - eeconfig_update_backlight(backlight_config.raw); } + backlight_config.enable = 1; + eeconfig_update_backlight(backlight_config.raw); dprintf("backlight increase: %u\n", backlight_config.level); backlight_set(backlight_config.level); } From 5893f0fa1fcecfface25ce570f37e51031a14489 Mon Sep 17 00:00:00 2001 From: Wilba6582 Date: Wed, 23 Nov 2016 16:22:57 +1100 Subject: [PATCH 118/727] Fixed NO_SUSPEND_POWER_DOWN handling --- tmk_core/common/avr/suspend.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index 8a7272bbc5..939bda15eb 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -47,6 +47,7 @@ void suspend_idle(uint8_t time) sleep_disable(); } +#ifndef NO_SUSPEND_POWER_DOWN /* Power down MCU with watchdog timer * wdto: watchdog timer timeout defined in * WDTO_15MS @@ -61,6 +62,7 @@ void suspend_idle(uint8_t time) * WDTO_8S */ static uint8_t wdt_timeout = 0; + static void power_down(uint8_t wdto) { #ifdef PROTOCOL_LUFA @@ -98,10 +100,13 @@ static void power_down(uint8_t wdto) // Disable watchdog after sleep wdt_disable(); } +#endif void suspend_power_down(void) { +#ifndef NO_SUSPEND_POWER_DOWN power_down(WDTO_15MS); +#endif } __attribute__ ((weak)) void matrix_power_up(void) {} @@ -109,7 +114,9 @@ __attribute__ ((weak)) void matrix_power_down(void) {} bool suspend_wakeup_condition(void) { #ifdef BACKLIGHT_ENABLE +#ifndef NO_SUSPEND_POWER_DOWN backlight_set(0); +#endif #endif matrix_power_up(); matrix_scan(); @@ -126,7 +133,6 @@ void suspend_wakeup_init(void) // clear keyboard state clear_keyboard(); #ifdef BACKLIGHT_ENABLE - backlight_set(0); backlight_init(); #endif led_set(host_keyboard_leds()); From 3d7aaa31e41a9c96e785b0c089d74dfda525dfbe Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 23 Nov 2016 00:30:06 -0500 Subject: [PATCH 119/727] converted to 8bit messages --- Dockerfile | 3 +- tmk_core/protocol/lufa/lufa.c | 119 +++++++++++++++++++--------------- tmk_core/protocol/midi.mk | 1 + 3 files changed, 70 insertions(+), 53 deletions(-) diff --git a/Dockerfile b/Dockerfile index 744ded8579..c42bbeb32a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,5 +25,4 @@ ENV subproject=ez ENV keymap=default VOLUME /qmk -WORKDIR /qmk -CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap} +WORKDIR /qmk \ No newline at end of file diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index a33a16599e..c4531c8d73 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -76,6 +76,10 @@ #include "rgblight.h" #endif +#ifdef MIDI_ENABLE + #include "sysex_tools.h" +#endif + uint8_t keyboard_idle = 0; /* 0: Boot Protocol, 1: Report Protocol(default) */ uint8_t keyboard_protocol = 1; @@ -1124,8 +1128,16 @@ void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t for (uint8_t place = 0; place < length; place++) { // send_byte(*data); midi_buffer[start + place] = *data; - if (*data == 0xF7 && midi_buffer[0] == 0xF0) - sysex_buffer_callback(device, start + place, midi_buffer); + if (*data == 0xF7) { + // SEND_STRING("\nRD: "); + // for (uint8_t i = 0; i < start + place + 1; i++){ + // send_byte(midi_buffer[i]); + // SEND_STRING(" "); + // } + uint8_t * decoded = malloc(sizeof(uint8_t) * (sysex_decoded_length(start + place - 4))); + uint16_t decode_length = sysex_decode(decoded, midi_buffer + 4, start + place - 4); + sysex_buffer_callback(device, decode_length, decoded); + } // SEND_STRING(" "); data++; } @@ -1161,32 +1173,35 @@ void encode_uint8_chunk(uint8_t data, uint8_t * pointer) { *pointer++ = (data) & 0x7F; } -void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) { - // uint8_t * pointer_copy = data; // use for debugging +void dword_to_bytes(uint8_t * bytes, uint32_t dword) { + bytes[0] = (dword >> 24) & 0xFF; + bytes[1] = (dword >> 16) & 0xFF; + bytes[2] = (dword >> 8) & 0xFF; + bytes[3] = (dword >> 0) & 0xFF; +} - //data++; // i'm 98% sure there's a better way to do this - data++; - data++; - data++; - data++; +void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) { + // SEND_STRING("\nRX: "); + // for (uint8_t i = 0; i < length; i++) { + // send_byte(data[i]); + // SEND_STRING(" "); + // } switch (*data++) { case 0x07: ; // Quantum action break; - case 0x08: ; // Keyboard acion + case 0x08: ; // Keyboard action break; case 0x09: ; // User action break; case 0x12: ; // Set info on keyboard switch (*data++) { case 0x02: ; // set default layer - uint8_t default_layer = decode_uint8_chunk(data); - eeconfig_update_default_layer(default_layer); - default_layer_set((uint32_t)default_layer); + eeconfig_update_default_layer(data[0] << 8 | data[1]); + default_layer_set((uint32_t)(data[0] << 8 | data[1])); break; case 0x08: ; // set keymap options - uint8_t keymap_options = decode_uint8_chunk(data); - eeconfig_update_keymap(keymap_options); + eeconfig_update_keymap(data[0]); break; } break; @@ -1196,42 +1211,37 @@ void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) send_bytes_sysex(0x00, NULL, 0); break; case 0x01: ; // Get debug state - uint8_t debug[2]; - encode_uint8_chunk(eeprom_read_byte(EECONFIG_DEBUG), debug); - send_bytes_sysex(0x01, debug, 2); + uint8_t debug_bytes[1] = { eeprom_read_byte(EECONFIG_DEBUG) }; + send_bytes_sysex(0x01, debug_bytes, 1); break; case 0x02: ; // Get default layer - uint8_t default_layer[2]; - encode_uint8_chunk(eeprom_read_byte(EECONFIG_DEFAULT_LAYER), default_layer); - send_bytes_sysex(0x02, default_layer, 2); + uint8_t default_bytes[1] = { eeprom_read_byte(EECONFIG_DEFAULT_LAYER) }; + send_bytes_sysex(0x02, default_bytes, 1); break; #ifdef AUDIO_ENABLE case 0x03: ; // Get backlight state - uint8_t audio[2]; - encode_uint8_chunk(eeprom_read_byte(EECONFIG_AUDIO), audio); - send_bytes_sysex(0x03, audio, 2); + uint8_t audio_bytes[1] = { eeprom_read_byte(EECONFIG_AUDIO) }; + send_bytes_sysex(0x03, audio_bytes, 1); #endif case 0x04: ; // Get layer state - uint8_t layers[5]; - encode_uint32_chunk(layer_state, layers); - send_bytes_sysex(0x04, layers, 5); + uint8_t layer_state_bytes[4]; + dword_to_bytes(layer_state_bytes, layer_state); + send_bytes_sysex(0x04, layer_state_bytes, 4); break; #ifdef BACKLIGHT_ENABLE case 0x06: ; // Get backlight state - uint8_t backlight[2]; - encode_uint8_chunk(eeprom_read_byte(EECONFIG_BACKLIGHT), backlight); - send_bytes_sysex(0x06, backlight, 2); + uint8_t backlight_bytes[1] = { eeprom_read_byte(EECONFIG_BACKLIGHT) }; + send_bytes_sysex(0x06, backlight_bytes, 1); #endif #ifdef RGBLIGHT_ENABLE case 0x07: ; // Get rgblight state - uint8_t rgblight[2]; - encode_uint32_chunk(eeprom_read_dword(EECONFIG_RGBLIGHT), rgblight); - send_bytes_sysex(0x07, rgblight, 5); + uint8_t rgblight_bytes[4]; + dword_to_bytes(rgblight_bytes, eeprom_read_dword(EECONFIG_RGBLIGHT)); + send_bytes_sysex(0x07, rgblight_bytes, 4); #endif case 0x08: ; // Keymap options - uint8_t keymap_options[2]; - encode_uint8_chunk(eeconfig_read_keymap(), keymap_options); - send_bytes_sysex(0x08, keymap_options, 2); + uint8_t keymap_bytes[1] = { eeconfig_read_keymap() }; + send_bytes_sysex(0x08, keymap_bytes, 1); break; } break; @@ -1239,26 +1249,18 @@ void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) case 0x27: ; // RGB LED functions switch (*data++) { case 0x00: ; // Update HSV - uint32_t hsv = decode_uint32_chunk(data); - rgblight_sethsv(((hsv >> 16) & 0xFFFF) % 360, (hsv >> 8) & 0xFF, hsv & 0xFF); + rgblight_sethsv((data[0] << 8 | data[1]) % 360, data[2], data[3]); break; case 0x01: ; // Update RGB break; case 0x02: ; // Update mode - uint8_t rgb_mode = decode_uint8_chunk(data); - rgblight_mode(rgb_mode); + rgblight_mode(data[0]); break; } break; #endif } - // SEND_STRING("\nDATA:\n"); - // while (*pointer_copy != 0xF7) { - // send_byte(*pointer_copy++); - // SEND_STRING(" "); - // } - } void send_unicode_midi(uint32_t unicode) { @@ -1268,15 +1270,30 @@ void send_unicode_midi(uint32_t unicode) { } void send_bytes_sysex(uint8_t type, uint8_t * bytes, uint8_t length) { - uint8_t * array = malloc(sizeof(uint8_t) * (length + 6)); + // SEND_STRING("\nTX: "); + // for (uint8_t i = 0; i < length; i++) { + // send_byte(bytes[i]); + // SEND_STRING(" "); + // } + uint8_t * precode = malloc(sizeof(uint8_t) * (length + 1)); + precode[0] = type; + memcpy(precode + 1, bytes, length); + uint8_t * encoded = malloc(sizeof(uint8_t) * (sysex_encoded_length(length + 1))); + uint16_t encoded_length = sysex_encode(encoded, precode, length + 1); + uint8_t * array = malloc(sizeof(uint8_t) * (encoded_length + 5)); array[0] = 0xF0; array[1] = 0x00; array[2] = 0x00; array[3] = 0x00; - array[4] = type; - array[length + 5] = 0xF7; - memcpy(array + 5, bytes, length); - midi_send_array(&midi_device, length + 6, array); + array[encoded_length + 4] = 0xF7; + memcpy(array + 4, encoded, encoded_length); + midi_send_array(&midi_device, encoded_length + 5, array); + + // SEND_STRING("\nTD: "); + // for (uint8_t i = 0; i < encoded_length + 5; i++) { + // send_byte(array[i]); + // SEND_STRING(" "); + // } } #endif diff --git a/tmk_core/protocol/midi.mk b/tmk_core/protocol/midi.mk index c85ae42ff2..4855b23d30 100644 --- a/tmk_core/protocol/midi.mk +++ b/tmk_core/protocol/midi.mk @@ -4,6 +4,7 @@ SRC += midi.c \ midi_device.c \ bytequeue/bytequeue.c \ bytequeue/interrupt_setting.c \ + sysex_tools.c \ $(LUFA_SRC_USBCLASS) VPATH += $(TMK_PATH)/$(MIDI_DIR) \ No newline at end of file From cf3926a8e13edb76193b8af25b497f9ef61161fd Mon Sep 17 00:00:00 2001 From: Wilba6582 Date: Wed, 23 Nov 2016 19:45:50 +1100 Subject: [PATCH 120/727] Fixed NO_SUSPEND_POWER_DOWN handling --- tmk_core/common/avr/suspend.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index 939bda15eb..0c81e83612 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -113,11 +113,6 @@ __attribute__ ((weak)) void matrix_power_up(void) {} __attribute__ ((weak)) void matrix_power_down(void) {} bool suspend_wakeup_condition(void) { -#ifdef BACKLIGHT_ENABLE -#ifndef NO_SUSPEND_POWER_DOWN - backlight_set(0); -#endif -#endif matrix_power_up(); matrix_scan(); matrix_power_down(); @@ -135,7 +130,7 @@ void suspend_wakeup_init(void) #ifdef BACKLIGHT_ENABLE backlight_init(); #endif -led_set(host_keyboard_leds()); + led_set(host_keyboard_leds()); } #ifndef NO_SUSPEND_POWER_DOWN From 2e23689b8e3222982082c1f5a4f8ce7686f9658b Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 23 Nov 2016 18:52:02 -0500 Subject: [PATCH 121/727] converted to new format --- quantum/rgblight.c | 13 ++ quantum/rgblight.h | 1 + tmk_core/protocol/lufa/lufa.c | 313 +++++++++++++++++++++------------- tmk_core/protocol/lufa/lufa.h | 16 +- 4 files changed, 217 insertions(+), 126 deletions(-) diff --git a/quantum/rgblight.c b/quantum/rgblight.c index 00620da58e..bb03d6e913 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -183,6 +183,19 @@ void rgblight_init(void) { } } +void rgblight_update_dword(uint32_t dword) { + rgblight_config.raw = dword; + eeconfig_update_rgblight(rgblight_config.raw); + if (rgblight_config.enable) + rgblight_mode(rgblight_config.mode); + else { + #ifdef RGBLIGHT_ANIMATIONS + rgblight_timer_disable(); + #endif + rgblight_set(); + } +} + void rgblight_increase(void) { uint8_t mode = 0; if (rgblight_config.mode < RGBLIGHT_MODES) { diff --git a/quantum/rgblight.h b/quantum/rgblight.h index a3673348e7..28a410e480 100644 --- a/quantum/rgblight.h +++ b/quantum/rgblight.h @@ -65,6 +65,7 @@ void rgblight_enable(void); void rgblight_step(void); void rgblight_mode(uint8_t mode); void rgblight_set(void); +void rgblight_update_dword(uint32_t dword); void rgblight_increase_hue(void); void rgblight_decrease_hue(void); void rgblight_increase_sat(void); diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index c4531c8d73..c3234b8ce5 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -1145,141 +1145,58 @@ void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t } -uint32_t decode_uint32_chunk(uint8_t * data) { - uint32_t part1 = *data++; - uint32_t part2 = *data++; - uint32_t part3 = *data++; - uint32_t part4 = *data++; - uint32_t part5 = *data++; - return ((part1 & 0x1FUL) << 28) | (part2 << 21) | (part3 << 14) | (part4 << 7) | part5; -} - -uint32_t decode_uint8_chunk(uint8_t * data) { - uint32_t part4 = *data++; - uint32_t part5 = *data++; - return (part4 << 7) | part5; -} - -void encode_uint32_chunk(uint32_t data, uint8_t * pointer) { - *pointer++ = (data >> 28) & 0x7F; - *pointer++ = (data >> 21) & 0x7F; - *pointer++ = (data >> 14) & 0x7F; - *pointer++ = (data >> 7) & 0x7F; - *pointer++ = (data) & 0x7F; -} - -void encode_uint8_chunk(uint8_t data, uint8_t * pointer) { - *pointer++ = (data >> 7) & 0x7F; - *pointer++ = (data) & 0x7F; -} - -void dword_to_bytes(uint8_t * bytes, uint32_t dword) { +void dword_to_bytes(uint32_t dword, uint8_t * bytes) { bytes[0] = (dword >> 24) & 0xFF; bytes[1] = (dword >> 16) & 0xFF; bytes[2] = (dword >> 8) & 0xFF; bytes[3] = (dword >> 0) & 0xFF; } -void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) { - // SEND_STRING("\nRX: "); - // for (uint8_t i = 0; i < length; i++) { - // send_byte(data[i]); - // SEND_STRING(" "); - // } - - switch (*data++) { - case 0x07: ; // Quantum action - break; - case 0x08: ; // Keyboard action - break; - case 0x09: ; // User action - break; - case 0x12: ; // Set info on keyboard - switch (*data++) { - case 0x02: ; // set default layer - eeconfig_update_default_layer(data[0] << 8 | data[1]); - default_layer_set((uint32_t)(data[0] << 8 | data[1])); - break; - case 0x08: ; // set keymap options - eeconfig_update_keymap(data[0]); - break; - } - break; - case 0x13: ; // Get info from keyboard - switch (*data++) { - case 0x00: ; // Handshake - send_bytes_sysex(0x00, NULL, 0); - break; - case 0x01: ; // Get debug state - uint8_t debug_bytes[1] = { eeprom_read_byte(EECONFIG_DEBUG) }; - send_bytes_sysex(0x01, debug_bytes, 1); - break; - case 0x02: ; // Get default layer - uint8_t default_bytes[1] = { eeprom_read_byte(EECONFIG_DEFAULT_LAYER) }; - send_bytes_sysex(0x02, default_bytes, 1); - break; - #ifdef AUDIO_ENABLE - case 0x03: ; // Get backlight state - uint8_t audio_bytes[1] = { eeprom_read_byte(EECONFIG_AUDIO) }; - send_bytes_sysex(0x03, audio_bytes, 1); - #endif - case 0x04: ; // Get layer state - uint8_t layer_state_bytes[4]; - dword_to_bytes(layer_state_bytes, layer_state); - send_bytes_sysex(0x04, layer_state_bytes, 4); - break; - #ifdef BACKLIGHT_ENABLE - case 0x06: ; // Get backlight state - uint8_t backlight_bytes[1] = { eeprom_read_byte(EECONFIG_BACKLIGHT) }; - send_bytes_sysex(0x06, backlight_bytes, 1); - #endif - #ifdef RGBLIGHT_ENABLE - case 0x07: ; // Get rgblight state - uint8_t rgblight_bytes[4]; - dword_to_bytes(rgblight_bytes, eeprom_read_dword(EECONFIG_RGBLIGHT)); - send_bytes_sysex(0x07, rgblight_bytes, 4); - #endif - case 0x08: ; // Keymap options - uint8_t keymap_bytes[1] = { eeconfig_read_keymap() }; - send_bytes_sysex(0x08, keymap_bytes, 1); - break; - } - break; - #ifdef RGBLIGHT_ENABLE - case 0x27: ; // RGB LED functions - switch (*data++) { - case 0x00: ; // Update HSV - rgblight_sethsv((data[0] << 8 | data[1]) % 360, data[2], data[3]); - break; - case 0x01: ; // Update RGB - break; - case 0x02: ; // Update mode - rgblight_mode(data[0]); - break; - } - break; - #endif - } - +uint32_t bytes_to_dword(uint8_t * bytes, uint8_t index) { + return ((uint32_t)bytes[index + 0] << 24) | ((uint32_t)bytes[index + 1] << 16) | ((uint32_t)bytes[index + 2] << 8) | (uint32_t)bytes[index + 3]; } -void send_unicode_midi(uint32_t unicode) { - uint8_t chunk[5]; - encode_uint32_chunk(unicode, chunk); - send_bytes_sysex(0x05, chunk, 5); -} +enum MESSAGE_TYPE { + MT_GET_DATA = 0x10, // Get data from keyboard + MT_GET_DATA_ACK = 0x11, // returned data to process (ACK) + MT_SET_DATA = 0x20, // Set data on keyboard + MT_SET_DATA_ACK = 0x21, // returned data to confirm (ACK) + MT_SEND_DATA = 0x30, // Sending data/action from keyboard + MT_SEND_DATA_ACK = 0x31, // returned data/action confirmation (ACK) + MT_EXE_ACTION = 0x40, // executing actions on keyboard + MT_EXE_ACTION_ACK =0x41, // return confirmation/value (ACK) + MT_TYPE_ERROR = 0x80 // type not recofgnised (ACK) +}; -void send_bytes_sysex(uint8_t type, uint8_t * bytes, uint8_t length) { +enum DATA_TYPE { + DT_NONE = 0x00, + DT_HANDSHAKE, + DT_DEFAULT_LAYER, + DT_CURRENT_LAYER, + DT_KEYMAP_OPTIONS, + DT_BACKLIGHT, + DT_RGBLIGHT, + DT_UNICODE, + DT_DEBUG, + DT_AUDIO, + DT_QUANTUM_ACTION, + DT_KEYBOARD_ACTION, + DT_USER_ACTION, + +}; + +void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t * bytes, uint8_t length) { // SEND_STRING("\nTX: "); // for (uint8_t i = 0; i < length; i++) { // send_byte(bytes[i]); // SEND_STRING(" "); // } - uint8_t * precode = malloc(sizeof(uint8_t) * (length + 1)); - precode[0] = type; - memcpy(precode + 1, bytes, length); - uint8_t * encoded = malloc(sizeof(uint8_t) * (sysex_encoded_length(length + 1))); - uint16_t encoded_length = sysex_encode(encoded, precode, length + 1); + uint8_t * precode = malloc(sizeof(uint8_t) * (length + 2)); + precode[0] = message_type; + precode[1] = data_type; + memcpy(precode + 2, bytes, length); + uint8_t * encoded = malloc(sizeof(uint8_t) * (sysex_encoded_length(length + 2))); + uint16_t encoded_length = sysex_encode(encoded, precode, length + 2); uint8_t * array = malloc(sizeof(uint8_t) * (encoded_length + 5)); array[0] = 0xF0; array[1] = 0x00; @@ -1296,4 +1213,158 @@ void send_bytes_sysex(uint8_t type, uint8_t * bytes, uint8_t length) { // } } +#define MT_GET_DATA(data_type, data, length) send_bytes_sysex(MT_GET_DATA, data_type, data, length) +#define MT_GET_DATA_ACK(data_type, data, length) send_bytes_sysex(MT_GET_DATA_ACK, data_type, data, length) +#define MT_SET_DATA(data_type, data, length) send_bytes_sysex(MT_SET_DATA, data_type, data, length) +#define MT_SET_DATA_ACK(data_type, data, length) send_bytes_sysex(MT_SET_DATA_ACK, data_type, data, length) +#define MT_SEND_DATA(data_type, data, length) send_bytes_sysex(MT_SEND_DATA, data_type, data, length) +#define MT_SEND_DATA_ACK(data_type, data, length) send_bytes_sysex(MT_SEND_DATA_ACK, data_type, data, length) +#define MT_EXE_ACTION(data_type, data, length) send_bytes_sysex(MT_EXE_ACTION, data_type, data, length) +#define MT_EXE_ACTION_ACK(data_type, data, length) send_bytes_sysex(MT_EXE_ACTION_ACK, data_type, data, length) + +__attribute__ ((weak)) +bool sysex_process_quantum(uint8_t length, uint8_t * data) { + return sysex_process_keyboard(length, data); +} + +__attribute__ ((weak)) +bool sysex_process_keyboard(uint8_t length, uint8_t * data) { + return sysex_process_user(length, data); +} + +__attribute__ ((weak)) +bool sysex_process_user(uint8_t length, uint8_t * data) { + return true; +} + +void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) { + // SEND_STRING("\nRX: "); + // for (uint8_t i = 0; i < length; i++) { + // send_byte(data[i]); + // SEND_STRING(" "); + // } + if (!sysex_process_quantum(length, data)) + return; + + switch (data[0]) { + case MT_SET_DATA: + switch (data[1]) { + case DT_DEFAULT_LAYER: { + eeconfig_update_default_layer(data[2]); + default_layer_set((uint32_t)(data[2])); + break; + } + case DT_KEYMAP_OPTIONS: { + eeconfig_update_keymap(data[2]); + break; + } + case DT_RGBLIGHT: { + #ifdef RGBLIGHT_ENABLE + uint32_t rgblight = bytes_to_dword(data, 2); + rgblight_update_dword(rgblight); + #endif + break; + } + } + case MT_GET_DATA: + switch (data[1]) { + case DT_HANDSHAKE: { + MT_GET_DATA_ACK(DT_HANDSHAKE, NULL, 0); + break; + } + case DT_DEBUG: { + uint8_t debug_bytes[1] = { eeprom_read_byte(EECONFIG_DEBUG) }; + MT_GET_DATA_ACK(DT_DEBUG, debug_bytes, 1); + break; + } + case DT_DEFAULT_LAYER: { + uint8_t default_bytes[1] = { eeprom_read_byte(EECONFIG_DEFAULT_LAYER) }; + MT_GET_DATA_ACK(DT_DEFAULT_LAYER, default_bytes, 1); + break; + } + case DT_CURRENT_LAYER: { + uint8_t layer_state_bytes[4]; + dword_to_bytes(layer_state, layer_state_bytes); + MT_GET_DATA_ACK(DT_CURRENT_LAYER, layer_state_bytes, 4); + break; + } + case DT_AUDIO: { + #ifdef AUDIO_ENABLE + uint8_t audio_bytes[1] = { eeprom_read_byte(EECONFIG_AUDIO) }; + MT_GET_DATA_ACK(DT_AUDIO, audio_bytes, 1); + #else + MT_GET_DATA_ACK(DT_AUDIO, NULL, 0); + #endif + break; + } + case DT_BACKLIGHT: { + #ifdef BACKLIGHT_ENABLE + uint8_t backlight_bytes[1] = { eeprom_read_byte(EECONFIG_BACKLIGHT) }; + MT_GET_DATA_ACK(DT_BACKLIGHT, backlight_bytes, 1); + #else + MT_GET_DATA_ACK(DT_BACKLIGHT, NULL, 0); + #endif + break; + } + case DT_RGBLIGHT: { + #ifdef RGBLIGHT_ENABLE + uint8_t rgblight_bytes[4]; + dword_to_bytes(eeconfig_read_rgblight(), rgblight_bytes); + MT_GET_DATA_ACK(DT_RGBLIGHT, rgblight_bytes, 4); + #else + MT_GET_DATA_ACK(DT_RGBLIGHT, NULL, 0) + #endif + break; + } + case DT_KEYMAP_OPTIONS: { + uint8_t keymap_bytes[1] = { eeconfig_read_keymap() }; + MT_GET_DATA_ACK(DT_KEYMAP_OPTIONS, keymap_bytes, 1); + break; + } + default: + break; + } + break; + case MT_SET_DATA_ACK: + case MT_GET_DATA_ACK: + break; + case MT_SEND_DATA: + break; + case MT_SEND_DATA_ACK: + break; + case MT_EXE_ACTION: + break; + case MT_EXE_ACTION_ACK: + break; + case MT_TYPE_ERROR: + break; + default: ; // command not recognised + send_bytes_sysex(MT_TYPE_ERROR, DT_NONE, data, length); + break; + + // #ifdef RGBLIGHT_ENABLE + // case 0x27: ; // RGB LED functions + // switch (*data++) { + // case 0x00: ; // Update HSV + // rgblight_sethsv((data[0] << 8 | data[1]) % 360, data[2], data[3]); + // break; + // case 0x01: ; // Update RGB + // break; + // case 0x02: ; // Update mode + // rgblight_mode(data[0]); + // break; + // } + // break; + // #endif + } + +} + +void send_unicode_midi(uint32_t unicode) { + uint8_t chunk[4]; + dword_to_bytes(unicode, chunk); + MT_SEND_DATA(DT_UNICODE, chunk, 5); +} + + #endif diff --git a/tmk_core/protocol/lufa/lufa.h b/tmk_core/protocol/lufa/lufa.h index 198964f901..99b089f42b 100644 --- a/tmk_core/protocol/lufa/lufa.h +++ b/tmk_core/protocol/lufa/lufa.h @@ -73,13 +73,19 @@ typedef struct { MidiDevice midi_device; void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t * data); - uint32_t decode_uint32_chunk(uint8_t * data); - uint32_t decode_uint8_chunk(uint8_t * data); - void encode_uint32_chunk(uint32_t data, uint8_t * pointer); - void encode_uint8_chunk(uint8_t data, uint8_t * pointer); void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data); void send_unicode_midi(uint32_t unicode); - void send_bytes_sysex(uint8_t type, uint8_t * bytes, uint8_t length); + void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t * bytes, uint8_t length); + + __attribute__ ((weak)) + bool sysex_process_quantum(uint8_t length, uint8_t * data); + + __attribute__ ((weak)) + bool sysex_process_keyboard(uint8_t length, uint8_t * data); + + __attribute__ ((weak)) + bool sysex_process_user(uint8_t length, uint8_t * data); + #endif // #if LUFA_VERSION_INTEGER < 0x120730 From cefa8468fb5f28bd67a0c02d371a4aef0964e20c Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 23 Nov 2016 20:16:38 -0500 Subject: [PATCH 122/727] travis pls --- keyboards/ergodox/infinity/rules.mk | 2 + keyboards/ergodox/keymaps/jack/Makefile | 4 +- quantum/quantum.c | 9 ++++- quantum/quantum.h | 2 + tmk_core/protocol/lufa/lufa.c | 49 +------------------------ tmk_core/protocol/lufa/lufa.h | 42 ++++++++++++++++++++- 6 files changed, 56 insertions(+), 52 deletions(-) diff --git a/keyboards/ergodox/infinity/rules.mk b/keyboards/ergodox/infinity/rules.mk index ccb735a485..473a6dfec6 100644 --- a/keyboards/ergodox/infinity/rules.mk +++ b/keyboards/ergodox/infinity/rules.mk @@ -63,6 +63,8 @@ VISUALIZER_ENABLE ?= no #temporarily disabled to make everything compile LCD_ENABLE ?= yes LED_ENABLE ?= yes LCD_BACKLIGHT_ENABLE ?= yes +MIDI_ENABLE = no +RGBLIGHT_ENABLE = no ifndef QUANTUM_DIR include ../../../Makefile diff --git a/keyboards/ergodox/keymaps/jack/Makefile b/keyboards/ergodox/keymaps/jack/Makefile index 7c257af501..3ca69bb923 100644 --- a/keyboards/ergodox/keymaps/jack/Makefile +++ b/keyboards/ergodox/keymaps/jack/Makefile @@ -1,5 +1,5 @@ -RGBLIGHT_ENABLE = yes -MIDI_ENABLE = yes +RGBLIGHT_ENABLE ?= yes +MIDI_ENABLE ?= yes ifndef QUANTUM_DIR include ../../../../Makefile diff --git a/quantum/quantum.c b/quantum/quantum.c index f9f1ef22d0..8372a7adc5 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -847,8 +847,13 @@ void send_nibble(uint8_t number) { } } - - +void send_unicode_midi(uint32_t unicode) { + #ifdef MIDI_ENABLE + uint8_t chunk[4]; + dword_to_bytes(unicode, chunk); + MT_SEND_DATA(DT_UNICODE, chunk, 5); + #endif +} __attribute__ ((weak)) void led_set_user(uint8_t usb_led) { diff --git a/quantum/quantum.h b/quantum/quantum.h index 3d35f11fad..316da15b9a 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -119,4 +119,6 @@ void send_nibble(uint8_t number); void led_set_user(uint8_t usb_led); void led_set_kb(uint8_t usb_led); +void send_unicode_midi(uint32_t unicode); + #endif diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index c3234b8ce5..eae3e8f298 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -72,7 +72,7 @@ #include "virtser.h" #endif -#ifdef RGB_MIDI +#if (defined(RGB_MIDI) | defined(RGBLIGHT_ANIMATIONS)) & defined(RGBLIGHT_ENABLE) #include "rgblight.h" #endif @@ -1156,35 +1156,6 @@ uint32_t bytes_to_dword(uint8_t * bytes, uint8_t index) { return ((uint32_t)bytes[index + 0] << 24) | ((uint32_t)bytes[index + 1] << 16) | ((uint32_t)bytes[index + 2] << 8) | (uint32_t)bytes[index + 3]; } -enum MESSAGE_TYPE { - MT_GET_DATA = 0x10, // Get data from keyboard - MT_GET_DATA_ACK = 0x11, // returned data to process (ACK) - MT_SET_DATA = 0x20, // Set data on keyboard - MT_SET_DATA_ACK = 0x21, // returned data to confirm (ACK) - MT_SEND_DATA = 0x30, // Sending data/action from keyboard - MT_SEND_DATA_ACK = 0x31, // returned data/action confirmation (ACK) - MT_EXE_ACTION = 0x40, // executing actions on keyboard - MT_EXE_ACTION_ACK =0x41, // return confirmation/value (ACK) - MT_TYPE_ERROR = 0x80 // type not recofgnised (ACK) -}; - -enum DATA_TYPE { - DT_NONE = 0x00, - DT_HANDSHAKE, - DT_DEFAULT_LAYER, - DT_CURRENT_LAYER, - DT_KEYMAP_OPTIONS, - DT_BACKLIGHT, - DT_RGBLIGHT, - DT_UNICODE, - DT_DEBUG, - DT_AUDIO, - DT_QUANTUM_ACTION, - DT_KEYBOARD_ACTION, - DT_USER_ACTION, - -}; - void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t * bytes, uint8_t length) { // SEND_STRING("\nTX: "); // for (uint8_t i = 0; i < length; i++) { @@ -1213,15 +1184,6 @@ void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t * bytes, // } } -#define MT_GET_DATA(data_type, data, length) send_bytes_sysex(MT_GET_DATA, data_type, data, length) -#define MT_GET_DATA_ACK(data_type, data, length) send_bytes_sysex(MT_GET_DATA_ACK, data_type, data, length) -#define MT_SET_DATA(data_type, data, length) send_bytes_sysex(MT_SET_DATA, data_type, data, length) -#define MT_SET_DATA_ACK(data_type, data, length) send_bytes_sysex(MT_SET_DATA_ACK, data_type, data, length) -#define MT_SEND_DATA(data_type, data, length) send_bytes_sysex(MT_SEND_DATA, data_type, data, length) -#define MT_SEND_DATA_ACK(data_type, data, length) send_bytes_sysex(MT_SEND_DATA_ACK, data_type, data, length) -#define MT_EXE_ACTION(data_type, data, length) send_bytes_sysex(MT_EXE_ACTION, data_type, data, length) -#define MT_EXE_ACTION_ACK(data_type, data, length) send_bytes_sysex(MT_EXE_ACTION_ACK, data_type, data, length) - __attribute__ ((weak)) bool sysex_process_quantum(uint8_t length, uint8_t * data) { return sysex_process_keyboard(length, data); @@ -1312,7 +1274,7 @@ void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) dword_to_bytes(eeconfig_read_rgblight(), rgblight_bytes); MT_GET_DATA_ACK(DT_RGBLIGHT, rgblight_bytes, 4); #else - MT_GET_DATA_ACK(DT_RGBLIGHT, NULL, 0) + MT_GET_DATA_ACK(DT_RGBLIGHT, NULL, 0); #endif break; } @@ -1360,11 +1322,4 @@ void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) } -void send_unicode_midi(uint32_t unicode) { - uint8_t chunk[4]; - dword_to_bytes(unicode, chunk); - MT_SEND_DATA(DT_UNICODE, chunk, 5); -} - - #endif diff --git a/tmk_core/protocol/lufa/lufa.h b/tmk_core/protocol/lufa/lufa.h index 99b089f42b..0962dda8d8 100644 --- a/tmk_core/protocol/lufa/lufa.h +++ b/tmk_core/protocol/lufa/lufa.h @@ -74,8 +74,9 @@ typedef struct { void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t * data); void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data); - void send_unicode_midi(uint32_t unicode); void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t * bytes, uint8_t length); + void dword_to_bytes(uint32_t dword, uint8_t * bytes); + uint32_t bytes_to_dword(uint8_t * bytes, uint8_t index); __attribute__ ((weak)) bool sysex_process_quantum(uint8_t length, uint8_t * data); @@ -86,6 +87,45 @@ typedef struct { __attribute__ ((weak)) bool sysex_process_user(uint8_t length, uint8_t * data); + enum MESSAGE_TYPE { + MT_GET_DATA = 0x10, // Get data from keyboard + MT_GET_DATA_ACK = 0x11, // returned data to process (ACK) + MT_SET_DATA = 0x20, // Set data on keyboard + MT_SET_DATA_ACK = 0x21, // returned data to confirm (ACK) + MT_SEND_DATA = 0x30, // Sending data/action from keyboard + MT_SEND_DATA_ACK = 0x31, // returned data/action confirmation (ACK) + MT_EXE_ACTION = 0x40, // executing actions on keyboard + MT_EXE_ACTION_ACK =0x41, // return confirmation/value (ACK) + MT_TYPE_ERROR = 0x80 // type not recofgnised (ACK) + }; + + enum DATA_TYPE { + DT_NONE = 0x00, + DT_HANDSHAKE, + DT_DEFAULT_LAYER, + DT_CURRENT_LAYER, + DT_KEYMAP_OPTIONS, + DT_BACKLIGHT, + DT_RGBLIGHT, + DT_UNICODE, + DT_DEBUG, + DT_AUDIO, + DT_QUANTUM_ACTION, + DT_KEYBOARD_ACTION, + DT_USER_ACTION, + + }; + + + #define MT_GET_DATA(data_type, data, length) send_bytes_sysex(MT_GET_DATA, data_type, data, length) + #define MT_GET_DATA_ACK(data_type, data, length) send_bytes_sysex(MT_GET_DATA_ACK, data_type, data, length) + #define MT_SET_DATA(data_type, data, length) send_bytes_sysex(MT_SET_DATA, data_type, data, length) + #define MT_SET_DATA_ACK(data_type, data, length) send_bytes_sysex(MT_SET_DATA_ACK, data_type, data, length) + #define MT_SEND_DATA(data_type, data, length) send_bytes_sysex(MT_SEND_DATA, data_type, data, length) + #define MT_SEND_DATA_ACK(data_type, data, length) send_bytes_sysex(MT_SEND_DATA_ACK, data_type, data, length) + #define MT_EXE_ACTION(data_type, data, length) send_bytes_sysex(MT_EXE_ACTION, data_type, data, length) + #define MT_EXE_ACTION_ACK(data_type, data, length) send_bytes_sysex(MT_EXE_ACTION_ACK, data_type, data, length) + #endif // #if LUFA_VERSION_INTEGER < 0x120730 From f25596b8dc2f15f620c07164d871023d9284618c Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 23 Nov 2016 21:28:12 -0500 Subject: [PATCH 123/727] rgblight fixes --- keyboards/ergodox/keymaps/erez_experimental/Makefile | 4 ++-- keyboards/ergodox/keymaps/erez_experimental/keymap.c | 8 +++++--- tmk_core/protocol/lufa/lufa.c | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/keyboards/ergodox/keymaps/erez_experimental/Makefile b/keyboards/ergodox/keymaps/erez_experimental/Makefile index dbe89d1410..51a0c74c54 100644 --- a/keyboards/ergodox/keymaps/erez_experimental/Makefile +++ b/keyboards/ergodox/keymaps/erez_experimental/Makefile @@ -3,8 +3,8 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend COMMAND_ENABLE = no # Commands for debug and configuration -RGBLIGHT_ENABLE = yes -MIDI_ENABLE = yes +RGBLIGHT_ENABLE ?= yes +MIDI_ENABLE ?= yes ifndef QUANTUM_DIR include ../../../../Makefile diff --git a/keyboards/ergodox/keymaps/erez_experimental/keymap.c b/keyboards/ergodox/keymaps/erez_experimental/keymap.c index 4a23c7ac58..0c0e3c4e39 100644 --- a/keyboards/ergodox/keymaps/erez_experimental/keymap.c +++ b/keyboards/ergodox/keymaps/erez_experimental/keymap.c @@ -164,9 +164,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { // dynamically generate these. case RGB_FF00BB: if (record->event.pressed) { - rgblight_enable(); - rgblight_mode(1); - rgblight_setrgb(0xff,0x00,0xbb); + #ifdef RGBLIGHT_ENABLE + rgblight_enable(); + rgblight_mode(1); + rgblight_setrgb(0xff,0x00,0xbb); + #endif } return false; break; diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index eae3e8f298..aa2e781c80 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -1055,7 +1055,7 @@ int main(void) // MIDI_Task(); #endif -#ifdef RGBLIGHT_ANIMATIONS +#if defined(RGBLIGHT_ANIMATIONS) & defined(RGBLIGHT_ENABLE) rgblight_task(); #endif From 3be13d1ffb43216aff1300cdce79512559bdde7c Mon Sep 17 00:00:00 2001 From: ofples Date: Fri, 25 Nov 2016 09:15:12 +0200 Subject: [PATCH 124/727] Added protocol.mk to build --- build_keyboard.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/build_keyboard.mk b/build_keyboard.mk index 61aebf3935..055ce632ae 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -199,6 +199,7 @@ endif VPATH += $(KEYBOARD_PATH) VPATH += $(COMMON_VPATH) +include $(TMK_PATH)/protocol.mk include $(TMK_PATH)/common.mk SRC += $(TMK_COMMON_SRC) From 03d6e165bb0baf9d0093250d3c3c0771290df4d6 Mon Sep 17 00:00:00 2001 From: ofples Date: Fri, 25 Nov 2016 09:17:40 +0200 Subject: [PATCH 125/727] Added missing endif for ifdef __AVR_ATmega32U4__ and removed the unnecessary one at the end of the file --- quantum/config_common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/config_common.h b/quantum/config_common.h index 8ed5f4a106..443473292d 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -76,6 +76,7 @@ } while(0) # else # error "USART configuration is needed." +# endif #endif // I'm fairly sure these aren't needed, but oh well - Jack @@ -125,4 +126,3 @@ #endif -#endif From 0c9d66eb59add717397ba83d508577073412ce86 Mon Sep 17 00:00:00 2001 From: ofples Date: Fri, 25 Nov 2016 09:20:41 +0200 Subject: [PATCH 126/727] Removed comment --- quantum/config_common.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/quantum/config_common.h b/quantum/config_common.h index 443473292d..6b525fe1c6 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -79,8 +79,6 @@ # endif #endif -// I'm fairly sure these aren't needed, but oh well - Jack - /* * PS/2 Interrupt configuration */ From 97e7486d4c8818f4a6b3e619729d6f4f6524a7d1 Mon Sep 17 00:00:00 2001 From: ofples Date: Fri, 25 Nov 2016 12:10:44 +0200 Subject: [PATCH 127/727] Added documentation for PS/2 mouse in readme --- readme.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/readme.md b/readme.md index 8615b48d55..0157b90724 100644 --- a/readme.md +++ b/readme.md @@ -1157,6 +1157,45 @@ The firmware supports 5 different light effects, and the color (hue, saturation, Please note the USB port can only supply a limited amount of power to the keyboard (500mA by standard, however, modern computer and most usb hubs can provide 700+mA.). According to the data of NeoPixel from Adafruit, 30 WS2812 LEDs require a 5V 1A power supply, LEDs used in this mod should not more than 20. +## PS/2 Mouse Support + +Its possible to hook up a PS/2 mouse (for example touchpads or trackpoints) to your keyboard as a composite device. +In order to do this you must first enable the option in your Makefile. + + PS2_MOUSE_ENABLE = yes + +Then, decide whether to use interrupts (better if your microcontroller supports them) or busywait, and enable the relevant option. + + PS2_USE_INT = yes + // PS2_USE_BUSYWAIT = yes + +If you're using a teensy and have hooked up the clock on your PS/2 device to D1 and the data to D0, you're all set. +Otherwise, you will need to update the following defines in your `config.h`: + + #define PS2_CLOCK_PORT PORTD + #define PS2_CLOCK_PIN PIND + #define PS2_CLOCK_DDR DDRD + #define PS2_CLOCK_BIT 1 + + #define PS2_DATA_PORT PORTD + #define PS2_DATA_PIN PIND + #define PS2_DATA_DDR DDRD + #define PS2_DATA_BIT 0 + +And with `PS2_USE_INT` also define these macros: + + #define PS2_INT_INIT() do { \ + EICRA |= ((1< Date: Sat, 26 Nov 2016 13:11:40 +0700 Subject: [PATCH 128/727] My Promethium keyboard firmware --- keyboards/handwired/promethium/Makefile | 3 + keyboards/handwired/promethium/config.h | 164 ++++ .../promethium/keymaps/priyadi/Makefile | 28 + .../promethium/keymaps/priyadi/config.h | 17 + .../promethium/keymaps/priyadi/flash.sh | 3 + .../promethium/keymaps/priyadi/keymap.c | 725 ++++++++++++++++++ .../promethium/keymaps/priyadi/readme.md | 0 .../handwired/promethium/keymaps/readme.md | 22 + keyboards/handwired/promethium/promethium.c | 6 + keyboards/handwired/promethium/promethium.h | 99 +++ keyboards/handwired/promethium/readme.md | 12 + keyboards/handwired/promethium/rgbsps.c | 24 + keyboards/handwired/promethium/rgbsps.h | 4 + keyboards/handwired/promethium/rules.mk | 75 ++ 14 files changed, 1182 insertions(+) create mode 100644 keyboards/handwired/promethium/Makefile create mode 100644 keyboards/handwired/promethium/config.h create mode 100644 keyboards/handwired/promethium/keymaps/priyadi/Makefile create mode 100644 keyboards/handwired/promethium/keymaps/priyadi/config.h create mode 100755 keyboards/handwired/promethium/keymaps/priyadi/flash.sh create mode 100644 keyboards/handwired/promethium/keymaps/priyadi/keymap.c create mode 100644 keyboards/handwired/promethium/keymaps/priyadi/readme.md create mode 100644 keyboards/handwired/promethium/keymaps/readme.md create mode 100644 keyboards/handwired/promethium/promethium.c create mode 100644 keyboards/handwired/promethium/promethium.h create mode 100644 keyboards/handwired/promethium/readme.md create mode 100644 keyboards/handwired/promethium/rgbsps.c create mode 100644 keyboards/handwired/promethium/rgbsps.h create mode 100644 keyboards/handwired/promethium/rules.mk diff --git a/keyboards/handwired/promethium/Makefile b/keyboards/handwired/promethium/Makefile new file mode 100644 index 0000000000..191c6bb664 --- /dev/null +++ b/keyboards/handwired/promethium/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h new file mode 100644 index 0000000000..5a2afe6abd --- /dev/null +++ b/keyboards/handwired/promethium/config.h @@ -0,0 +1,164 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6660 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Priyadi +#define PRODUCT Promethium Keyboard +#define DESCRIPTION Promethium Keyboard + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +/* default pin-out */ +#define MATRIX_COL_PINS { B6, B7, D6, C7, F6, F7 } +#define MATRIX_ROW_PINS { D7, C6, D0, D1, F5, F4, F1, F0 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT) | MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RCTRL)) \ +) + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +/* PS/2 mouse */ +#ifdef PS2_USE_BUSYWAIT +# define PS2_CLOCK_PORT PORTD +# define PS2_CLOCK_PIN PIND +# define PS2_CLOCK_DDR DDRD +# define PS2_CLOCK_BIT 1 +# define PS2_DATA_PORT PORTD +# define PS2_DATA_PIN PIND +# define PS2_DATA_DDR DDRD +# define PS2_DATA_BIT 2 +#endif + +/* PS/2 mouse interrupt version */ +#ifdef PS2_USE_INT +/* uses INT1 for clock line(ATMega32U4) */ +#define PS2_CLOCK_PORT PORTD +#define PS2_CLOCK_PIN PIND +#define PS2_CLOCK_DDR DDRD +#define PS2_CLOCK_BIT 3 +#define PS2_DATA_PORT PORTD +#define PS2_DATA_PIN PIND +#define PS2_DATA_DDR DDRD +#define PS2_DATA_BIT 2 + +#define PS2_INT_INIT() do { \ + EICRA |= ((1< | ( | ) | ' | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | _ | + | { | } | [ | ] | " | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_PUNC] = KEYMAP( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_GRV , + XXXXXXX, XXXXXXX, KC_BSLS, KC_MINS, KC_EQL, KC_LABK, KC_RABK, KC_LPRN, KC_RPRN, KC_QUOT, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_DQUO, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* Num + * ,-----------------------------------------------------------------------------------. + * | ^ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | @ | A | B | C | ( | ) | 4 | 5 | 6 | : |Enter | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | & | # | D | E | F | [ | ] | 1 | 2 | 3 | / | * | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | x | | | 0 | , | . | + | - | + * `-----------------------------------------------------------------------------------' + */ +[_NUM] = KEYMAP( + KC_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_ESC, KC_AT, S(KC_A), S(KC_B), S(KC_C), KC_LPRN, KC_RPRN, KC_4, KC_5, KC_6, KC_COLN, KC_ENT, + KC_AMPR, KC_HASH, S(KC_D), S(KC_E), S(KC_F), KC_LBRC, KC_RBRC, KC_1, KC_2, KC_3, KC_SLSH, KC_ASTR, + _______, _______, _______, KC_X, _______, KC_SPC, KC_SPC, KC_0, KC_COMM, KC_DOT, KC_PLUS, KC_MINS +), + +/* Func + * ,-----------------------------------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | | | PgUp | Up | PgDn | PgUp | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | F5 | F6 | F7 | F8 |PrtSc | | Left | Down | Right| PgDn | Ins | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F9 | F10 | F11 | F12 | | | | Home | End | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_FUNC] = KEYMAP( + XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL, + XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8,KC_PSCREEN,XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_INS, + _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* Emoji + * ,-----------------------------------------------------------------------------------. + * | | | | | | | | | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_EMOJI] = KEYMAP( + X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW), + X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS), + X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH), + X(POO), X(EYES),X(HUNRD), _______,X(SKULL),X(HORNS), X(HALO), X(FEAR), _______,X(YUMMY),X(DISAP),X(NOEVK) +), + +/* GUI + * ,-----------------------------------------------------------------------------------. + * | | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |Linux | | Vol- | Mute | Vol+ | | | D- | | D+ | |Qwerty| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Win | | Prev | Play | Next | | | | | | |Colmak| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | OSX | | | | | BL- | BL+ | | | | |Workmn| + * `-----------------------------------------------------------------------------------' + */ +[_GUI] = KEYMAP( + _______, LGUI(KC_1),LGUI(KC_2),LGUI(KC_3),LGUI(KC_4),LGUI(KC_5),LGUI(KC_6),LGUI(KC_7),LGUI(KC_8),LGUI(KC_9),LGUI(KC_0), _______, + LINUX, _______, KC_VOLD, KC_MUTE, KC_VOLU,_______,_______,KC_WWW_BACK,_______,KC_WWW_FORWARD,_______, QWERTY, + WIN, _______, KC_MPRV, KC_MPLY, KC_MNXT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, COLEMAK, + OSX, _______, _______, _______, _______, BL_DEC, BL_INC, _______, _______, RGB_VAI, RGB_VAD, WORKMAN +), + +}; + +#ifdef AUDIO_ENABLE +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_workman[][2] = SONG(DVORAK_SOUND); +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +float tone_linux[][2] = SONG(CAPS_LOCK_ON_SOUND); +float tone_windows[][2] = SONG(SCROLL_LOCK_ON_SOUND); +float tone_osx[][2] = SONG(NUM_LOCK_ON_SOUND); +float tone_click[][2] = SONG(MUSICAL_NOTE(_F3, 2)); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + #ifdef AUDIO_ENABLE + // faux clicky + if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0); + #endif + + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case WORKMAN: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_workman, false, 0); + #endif + persistant_default_layer_set(1UL<<_WORKMAN); + } + return false; + break; + + + + case PUNC: + if (record->event.pressed) { + layer_on(_PUNC); + update_tri_layer(_PUNC, _EMOJI, _GUI); + if (IS_LAYER_ON(_GUI)) { + led_layer_gui(); + } else { + led_layer_punc();; + } + } else { + layer_off(_PUNC); + update_tri_layer(_PUNC, _EMOJI, _GUI); + if (IS_LAYER_ON(_EMOJI)) { + led_layer_emoji(); + } else { + led_layer_normal();; + } + } + return false; + break; + case EMOJI: + if (record->event.pressed) { + layer_on(_EMOJI); + update_tri_layer(_PUNC, _EMOJI, _GUI); + if (IS_LAYER_ON(_GUI)) { + led_layer_gui(); + } else { + led_layer_emoji();; + } + } else { + layer_off(_EMOJI); + update_tri_layer(_PUNC, _EMOJI, _GUI); + if (IS_LAYER_ON(_PUNC)) { + led_layer_punc(); + } else { + led_layer_normal();; + } + } + return false; + break; + case NUM: + if (record->event.pressed) { + layer_on(_NUM); + led_layer_num(); + } else { + layer_off(_NUM); + led_layer_normal(); + } + return false; + break; + case FUNC: + if (record->event.pressed) { + layer_on(_FUNC); + led_layer_func(); + } else { + layer_off(_FUNC); + led_layer_normal(); + } + return false; + break; + + + case LINUX: + set_unicode_input_mode(UC_LNX); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_linux, false, 0); + #endif + return false; + break; + case WIN: + set_unicode_input_mode(UC_WINC); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_windows, false, 0); + #endif + return false; + break; + case OSX: + set_unicode_input_mode(UC_OSX); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_osx, false, 0); + #endif + return false; + break; + } + return true; +} + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif + set_unicode_input_mode(UC_LNX); + led_init(); +} + +// void init_rgblight(void) { +// for (uint8_t i = 0; i < RGBLED_NUM; i++) { +// led[i].r = 255; +// led[i].g = 85; +// led[i].b = 0; +// } +// ws2812_setleds(led, RGBLED_NUM); +// } + + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +#endif \ No newline at end of file diff --git a/keyboards/handwired/promethium/keymaps/priyadi/readme.md b/keyboards/handwired/promethium/keymaps/priyadi/readme.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keyboards/handwired/promethium/keymaps/readme.md b/keyboards/handwired/promethium/keymaps/readme.md new file mode 100644 index 0000000000..527691389e --- /dev/null +++ b/keyboards/handwired/promethium/keymaps/readme.md @@ -0,0 +1,22 @@ +# How to add your own keymap + +Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`: + + _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author] + +\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements + +and contain the following files: + +* `keymap.c` +* `readme.md` *recommended* +* `config.h` *optional*, found automatically when compiling +* `Makefile` *optional*, found automatically when compling + +When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format: + + * **folder_name** description + +# List of Promethium keymaps + + diff --git a/keyboards/handwired/promethium/promethium.c b/keyboards/handwired/promethium/promethium.c new file mode 100644 index 0000000000..a0035cce1a --- /dev/null +++ b/keyboards/handwired/promethium/promethium.c @@ -0,0 +1,6 @@ +#include "promethium.h" + +void matrix_init_kb(void) { + + matrix_init_user(); +} \ No newline at end of file diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h new file mode 100644 index 0000000000..fb0dc16830 --- /dev/null +++ b/keyboards/handwired/promethium/promethium.h @@ -0,0 +1,99 @@ +#ifndef PROMETHIUM_H +#define PROMETHIUM_H + +#include "quantum.h" + +#define KEYMAP( \ + k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ + k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c \ +) \ +{ \ + {k11, k12, k13, k14, k15, k16}, \ + {k21, k22, k23, k24, k25, k26}, \ + {k31, k32, k33, k34, k35, k36}, \ + {k41, k42, k43, k44, k45, k46}, \ + {k17, k18, k19, k1a, k1b, k1c}, \ + {k27, k28, k29, k2a, k2b, k2c}, \ + {k37, k38, k39, k3a, k3b, k3c}, \ + {k47, k48, k49, k4a, k4b, k4c} \ +} + +enum led_sequence { + LED_IND_EMOJI, + LED_IND_NUM, + LED_IND_FUNC, + + LED_IND_BATTERY, + LED_IND_USB, + LED_IND_BLUETOOTH, + + LED_TAB, + LED_ESC, + LED_LSFT, + LED_LCTL, + + LED_LGUI, + LED_Z, + LED_A, + LED_Q, + + LED_W, + LED_S, + LED_X, + LED_LALT, + + LED_PUNC, + LED_C, + LED_D, + LED_E, + + LED_R, + LED_F, + LED_V, + LED_NUM, + + LED_LSPC, + LED_B, + LED_G, + LED_T, + + LED_TRACKPOINT1, + LED_TRACKPOINT2, + LED_TRACKPOINT3, + + LED_RSPC, + LED_N, + LED_HH, + LED_Y, + + LED_U, + LED_J, + LED_M, + LED_FUNC, + + LED_EMOJI, + LED_COMM, + LED_K, + LED_I, + + LED_O, + LED_L, + LED_DOT, + LED_RALT, + + LED_RGUI, + LED_SLSH, + LED_SCLN, + LED_P, + + LED_BKSP, + LED_ENT, + LED_RSFT, + LED_RCTL +}; + +#endif + + diff --git a/keyboards/handwired/promethium/readme.md b/keyboards/handwired/promethium/readme.md new file mode 100644 index 0000000000..64e2c3a16a --- /dev/null +++ b/keyboards/handwired/promethium/readme.md @@ -0,0 +1,12 @@ +Promethium Keyboard Firmware +============================ +A handwired Planck based keyboard using the Adafruit Feather 32u4 Bluefruit LE controller. + +Features: + +* Single piece split form factor +* Vertical staggered +* Trackpoint +* Bluetooth LE *TBD* +* Battery +* Per switch RGB LED \ No newline at end of file diff --git a/keyboards/handwired/promethium/rgbsps.c b/keyboards/handwired/promethium/rgbsps.c new file mode 100644 index 0000000000..ea922ec3fd --- /dev/null +++ b/keyboards/handwired/promethium/rgbsps.c @@ -0,0 +1,24 @@ +#include "light_ws2812.h" +#include "rgbsps.h" + +struct cRGB led[RGBSPS_NUM]; + +void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b) { + led[index].r = r; + led[index].g = g; + led[index].b = b; +} + +void rgbsps_setall(uint8_t r, uint8_t g, uint8_t b) { + for (uint16_t i = 0; i < RGBSPS_NUM; i++) { + rgbsps_set(i, r, g, b); + } +} + +void rgbsps_turnoff(void) { + rgbsps_setall(0, 0, 0); +} + +void rgbsps_send(void) { + ws2812_setleds(led, RGBSPS_NUM); +} \ No newline at end of file diff --git a/keyboards/handwired/promethium/rgbsps.h b/keyboards/handwired/promethium/rgbsps.h new file mode 100644 index 0000000000..6da197f75d --- /dev/null +++ b/keyboards/handwired/promethium/rgbsps.h @@ -0,0 +1,4 @@ +void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b); +void rgbsps_setall(uint8_t r, uint8_t g, uint8_t b); +void rgbsps_turnoff(void); +void rgbsps_send(void); \ No newline at end of file diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk new file mode 100644 index 0000000000..835b13c4f3 --- /dev/null +++ b/keyboards/handwired/promethium/rules.mk @@ -0,0 +1,75 @@ + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 8000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= no # Commands for debug and configuration +NKRO_ENABLE ?= yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no # Audio output on port C6 +UNICODE_ENABLE ?= no # Unicode +UNICODEMAP_ENABLE = yes +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +PS2_MOUSE_ENABLE ?= yes +PS2_USE_INT ?= yes + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend + +include $(TMK_DIR)/protocol.mk +SRC += $(QUANTUM_DIR)/light_ws2812.c +SRC += rgbsps.c \ No newline at end of file From 9a071f051ca9dffdf64b68ea59b2424e37bc51e7 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 26 Nov 2016 13:24:53 +0700 Subject: [PATCH 129/727] Make PS2 init delay configurable. Some devices are not fully powered up after 1s. --- tmk_core/protocol/ps2_mouse.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tmk_core/protocol/ps2_mouse.c b/tmk_core/protocol/ps2_mouse.c index c3e8b3c1c3..82f6966e8e 100644 --- a/tmk_core/protocol/ps2_mouse.c +++ b/tmk_core/protocol/ps2_mouse.c @@ -26,6 +26,9 @@ along with this program. If not, see . #include "print.h" #include "debug.h" +#ifndef PS2_INIT_DELAY +#define PS2_INIT_DELAY 1000 +#endif static report_mouse_t mouse_report = {}; @@ -39,7 +42,7 @@ uint8_t ps2_mouse_init(void) { ps2_host_init(); - _delay_ms(1000); // wait for powering up + _delay_ms(PS2_INIT_DELAY); // wait for powering up // send Reset rcv = ps2_host_send(0xFF); From b94e5b2aa6636326b2eaa75a2c562ea074e1535a Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 26 Nov 2016 13:44:50 +0700 Subject: [PATCH 130/727] change init delay to 2000ms --- keyboards/handwired/promethium/promethium.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h index fb0dc16830..8f2a8c3be2 100644 --- a/keyboards/handwired/promethium/promethium.h +++ b/keyboards/handwired/promethium/promethium.h @@ -3,6 +3,8 @@ #include "quantum.h" +#define PS2_INIT_DELAY 2000 + #define KEYMAP( \ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ From 6313ec7ef960ad76182020f031cd09803d7a7d51 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 26 Nov 2016 13:46:05 +0700 Subject: [PATCH 131/727] protocols.mk is already included in latest QMK --- keyboards/handwired/promethium/rules.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk index 835b13c4f3..0842780cce 100644 --- a/keyboards/handwired/promethium/rules.mk +++ b/keyboards/handwired/promethium/rules.mk @@ -70,6 +70,5 @@ PS2_USE_INT ?= yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -include $(TMK_DIR)/protocol.mk SRC += $(QUANTUM_DIR)/light_ws2812.c SRC += rgbsps.c \ No newline at end of file From 2cf9b9375878d3810fbdfe0c215ee4dcb379a163 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 26 Nov 2016 13:47:03 +0700 Subject: [PATCH 132/727] remove ifdef on chip type --- keyboards/handwired/promethium/config.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h index 5a2afe6abd..473af67d34 100644 --- a/keyboards/handwired/promethium/config.h +++ b/keyboards/handwired/promethium/config.h @@ -116,7 +116,6 @@ along with this program. If not, see . /* PS/2 mouse USART version */ #ifdef PS2_USE_USART -#if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) /* XCK for clock line and RXD for data line */ #define PS2_CLOCK_PORT PORTD #define PS2_CLOCK_PIN PIND @@ -158,7 +157,6 @@ along with this program. If not, see . #define PS2_USART_ERROR (UCSR1A & ((1< Date: Sat, 26 Nov 2016 13:55:41 +0700 Subject: [PATCH 133/727] PS2 pins configuration belongs to each keyboards config.h Each keyboard might have different pin configuration. And keeping this here will trigger redefinition warning on keyboards that have PS2 defines. --- quantum/config_common.h | 46 ----------------------------------------- 1 file changed, 46 deletions(-) diff --git a/quantum/config_common.h b/quantum/config_common.h index 6b525fe1c6..21960f1a05 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -78,49 +78,3 @@ # error "USART configuration is needed." # endif #endif - -/* - * PS/2 Interrupt configuration - */ -#ifdef PS2_USE_INT -/* uses INT1 for clock line(ATMega32U4) */ -#define PS2_CLOCK_PORT PORTD -#define PS2_CLOCK_PIN PIND -#define PS2_CLOCK_DDR DDRD -#define PS2_CLOCK_BIT 1 - -#define PS2_DATA_PORT PORTD -#define PS2_DATA_PIN PIND -#define PS2_DATA_DDR DDRD -#define PS2_DATA_BIT 0 - -#define PS2_INT_INIT() do { \ - EICRA |= ((1< Date: Sat, 26 Nov 2016 14:02:38 +0700 Subject: [PATCH 134/727] Fix unterminated ifndef --- quantum/config_common.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/quantum/config_common.h b/quantum/config_common.h index 21960f1a05..4d3939dae1 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -78,3 +78,5 @@ # error "USART configuration is needed." # endif #endif + +#endif \ No newline at end of file From f837406ace5a3072e98f0bd0e3f4c84704762195 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 26 Nov 2016 14:23:55 +0700 Subject: [PATCH 135/727] A few addition to PS2 documentation. --- readme.md | 146 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 118 insertions(+), 28 deletions(-) diff --git a/readme.md b/readme.md index 0157b90724..3eb67882ab 100644 --- a/readme.md +++ b/readme.md @@ -1160,41 +1160,131 @@ Please note the USB port can only supply a limited amount of power to the keyboa ## PS/2 Mouse Support Its possible to hook up a PS/2 mouse (for example touchpads or trackpoints) to your keyboard as a composite device. -In order to do this you must first enable the option in your Makefile. - PS2_MOUSE_ENABLE = yes +Then, decide whether to use USART (best), interrupts (better) or busywait (not recommended), and enable the relevant option. -Then, decide whether to use interrupts (better if your microcontroller supports them) or busywait, and enable the relevant option. +### Busywait version - PS2_USE_INT = yes - // PS2_USE_BUSYWAIT = yes +Note: This is not recommended, you may encounter jerky movement or unsent inputs. Please use interrupt or USART version if possible. -If you're using a teensy and have hooked up the clock on your PS/2 device to D1 and the data to D0, you're all set. -Otherwise, you will need to update the following defines in your `config.h`: - - #define PS2_CLOCK_PORT PORTD - #define PS2_CLOCK_PIN PIND - #define PS2_CLOCK_DDR DDRD - #define PS2_CLOCK_BIT 1 +In rules.mk: - #define PS2_DATA_PORT PORTD - #define PS2_DATA_PIN PIND - #define PS2_DATA_DDR DDRD - #define PS2_DATA_BIT 0 +``` +PS2_MOUSE_ENABLE = yes +PS2_USE_BUSYWAIT = yes +``` -And with `PS2_USE_INT` also define these macros: +In your keyboard config.h: - #define PS2_INT_INIT() do { \ - EICRA |= ((1< Date: Sat, 26 Nov 2016 15:26:02 +0700 Subject: [PATCH 136/727] add macro error when a required define is missing --- quantum/config_common.h | 118 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) diff --git a/quantum/config_common.h b/quantum/config_common.h index 4d3939dae1..0a2dba78ff 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -79,4 +79,122 @@ # endif #endif +#ifdef PS2_USE_BUSYWAIT +# ifndef PS2_CLOCK_PORT +# error "PS2_CLOCK_PORT has to be defined" +# endif +# ifndef PS2_CLOCK_PIN +# error "PS2_CLOCK_PIN has to be defined" +# endif +# ifndef PS2_CLOCK_DDR +# error "PS2_CLOCK_DDR has to be defined" +# endif +# ifndef PS2_CLOCK_BIT +# error "PS2_CLOCK_BIT has to be defined" +# endif +# ifndef PS2_DATA_PORT +# error "PS2_DATA_PORT has to be defined" +# endif +# ifndef PS2_DATA_PIN +# error "PS2_DATA_PIN has to be defined" +# endif +# ifndef PS2_DATA_DDR +# error "PS2_DATA_DDR has to be defined" +# endif +# ifndef PS2_DATA_BIT +# error "PS2_DATA_BIT has to be defined" +# endif +#endif + +#ifdef PS2_USE_INT +# ifndef PS2_CLOCK_PORT +# error "PS2_CLOCK_PORT has to be defined" +# endif +# ifndef PS2_CLOCK_PIN +# error "PS2_CLOCK_PIN has to be defined" +# endif +# ifndef PS2_CLOCK_DDR +# error "PS2_CLOCK_DDR has to be defined" +# endif +# ifndef PS2_CLOCK_BIT +# error "PS2_CLOCK_BIT has to be defined" +# endif +# ifndef PS2_DATA_PORT +# error "PS2_DATA_PORT has to be defined" +# endif +# ifndef PS2_DATA_PIN +# error "PS2_DATA_PIN has to be defined" +# endif +# ifndef PS2_DATA_DDR +# error "PS2_DATA_DDR has to be defined" +# endif +# ifndef PS2_DATA_BIT +# error "PS2_DATA_BIT has to be defined" +# endif +# ifndef PS2_INT_INIT +# error "PS2_INT_INIT has to be defined" +# endif +# ifndef PS2_INT_ON +# error "PS2_INT_ON has to be defined" +# endif +# ifndef PS2_INT_OFF +# error "PS2_INT_OFF has to be defined" +# endif +# ifndef PS2_INT_VECT +# error "PS2_INT_VECT has to be defined" +# endif +#endif + +#ifdef PS2_USE_USART +# ifndef PS2_CLOCK_PORT +# error "PS2_CLOCK_PORT has to be defined" +# endif +# ifndef PS2_CLOCK_PIN +# error "PS2_CLOCK_PIN has to be defined" +# endif +# ifndef PS2_CLOCK_DDR +# error "PS2_CLOCK_DDR has to be defined" +# endif +# ifndef PS2_CLOCK_BIT +# error "PS2_CLOCK_BIT has to be defined" +# endif +# ifndef PS2_DATA_PORT +# error "PS2_DATA_PORT has to be defined" +# endif +# ifndef PS2_DATA_PIN +# error "PS2_DATA_PIN has to be defined" +# endif +# ifndef PS2_DATA_DDR +# error "PS2_DATA_DDR has to be defined" +# endif +# ifndef PS2_DATA_BIT +# error "PS2_DATA_BIT has to be defined" +# endif +# ifndef PS2_USART_INIT +# error "PS2_USART_INIT has to be defined" +# endif +# ifndef PS2_USART_RX_INT_ON +# error "PS2_USART_RX_INT_ON has to be defined" +# endif +# ifndef PS2_USART_RX_POLL_ON +# error "PS2_USART_RX_POLL_ON has to be defined" +# endif +# ifndef PS2_USART_OFF +# error "PS2_USART_OFF has to be defined" +# endif +# ifndef PS2_USART_RX_READY +# error "PS2_USART_RX_READY has to be defined" +# endif +# ifndef PS2_USART_RX_DATA +# error "PS2_USART_RX_DATA has to be defined" +# endif +# ifndef PS2_USART_ERROR +# error "PS2_USART_ERROR has to be defined" +# endif +# ifndef PS2_USART_RX_VECT +# error "PS2_USART_RX_VECT has to be defined" +# endif +#endif + + #endif \ No newline at end of file From f2214ce1cb6cfe7a0efabe870a2c00fb8451ee80 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 26 Nov 2016 15:57:48 +0700 Subject: [PATCH 137/727] remove define checks. didn't work because of include ordering. --- quantum/config_common.h | 118 ---------------------------------------- 1 file changed, 118 deletions(-) diff --git a/quantum/config_common.h b/quantum/config_common.h index 0a2dba78ff..4d3939dae1 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -79,122 +79,4 @@ # endif #endif -#ifdef PS2_USE_BUSYWAIT -# ifndef PS2_CLOCK_PORT -# error "PS2_CLOCK_PORT has to be defined" -# endif -# ifndef PS2_CLOCK_PIN -# error "PS2_CLOCK_PIN has to be defined" -# endif -# ifndef PS2_CLOCK_DDR -# error "PS2_CLOCK_DDR has to be defined" -# endif -# ifndef PS2_CLOCK_BIT -# error "PS2_CLOCK_BIT has to be defined" -# endif -# ifndef PS2_DATA_PORT -# error "PS2_DATA_PORT has to be defined" -# endif -# ifndef PS2_DATA_PIN -# error "PS2_DATA_PIN has to be defined" -# endif -# ifndef PS2_DATA_DDR -# error "PS2_DATA_DDR has to be defined" -# endif -# ifndef PS2_DATA_BIT -# error "PS2_DATA_BIT has to be defined" -# endif -#endif - -#ifdef PS2_USE_INT -# ifndef PS2_CLOCK_PORT -# error "PS2_CLOCK_PORT has to be defined" -# endif -# ifndef PS2_CLOCK_PIN -# error "PS2_CLOCK_PIN has to be defined" -# endif -# ifndef PS2_CLOCK_DDR -# error "PS2_CLOCK_DDR has to be defined" -# endif -# ifndef PS2_CLOCK_BIT -# error "PS2_CLOCK_BIT has to be defined" -# endif -# ifndef PS2_DATA_PORT -# error "PS2_DATA_PORT has to be defined" -# endif -# ifndef PS2_DATA_PIN -# error "PS2_DATA_PIN has to be defined" -# endif -# ifndef PS2_DATA_DDR -# error "PS2_DATA_DDR has to be defined" -# endif -# ifndef PS2_DATA_BIT -# error "PS2_DATA_BIT has to be defined" -# endif -# ifndef PS2_INT_INIT -# error "PS2_INT_INIT has to be defined" -# endif -# ifndef PS2_INT_ON -# error "PS2_INT_ON has to be defined" -# endif -# ifndef PS2_INT_OFF -# error "PS2_INT_OFF has to be defined" -# endif -# ifndef PS2_INT_VECT -# error "PS2_INT_VECT has to be defined" -# endif -#endif - -#ifdef PS2_USE_USART -# ifndef PS2_CLOCK_PORT -# error "PS2_CLOCK_PORT has to be defined" -# endif -# ifndef PS2_CLOCK_PIN -# error "PS2_CLOCK_PIN has to be defined" -# endif -# ifndef PS2_CLOCK_DDR -# error "PS2_CLOCK_DDR has to be defined" -# endif -# ifndef PS2_CLOCK_BIT -# error "PS2_CLOCK_BIT has to be defined" -# endif -# ifndef PS2_DATA_PORT -# error "PS2_DATA_PORT has to be defined" -# endif -# ifndef PS2_DATA_PIN -# error "PS2_DATA_PIN has to be defined" -# endif -# ifndef PS2_DATA_DDR -# error "PS2_DATA_DDR has to be defined" -# endif -# ifndef PS2_DATA_BIT -# error "PS2_DATA_BIT has to be defined" -# endif -# ifndef PS2_USART_INIT -# error "PS2_USART_INIT has to be defined" -# endif -# ifndef PS2_USART_RX_INT_ON -# error "PS2_USART_RX_INT_ON has to be defined" -# endif -# ifndef PS2_USART_RX_POLL_ON -# error "PS2_USART_RX_POLL_ON has to be defined" -# endif -# ifndef PS2_USART_OFF -# error "PS2_USART_OFF has to be defined" -# endif -# ifndef PS2_USART_RX_READY -# error "PS2_USART_RX_READY has to be defined" -# endif -# ifndef PS2_USART_RX_DATA -# error "PS2_USART_RX_DATA has to be defined" -# endif -# ifndef PS2_USART_ERROR -# error "PS2_USART_ERROR has to be defined" -# endif -# ifndef PS2_USART_RX_VECT -# error "PS2_USART_RX_VECT has to be defined" -# endif -#endif - - #endif \ No newline at end of file From 8ee389c9b6e6757c228534b095e609d5a9501102 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 26 Nov 2016 13:11:40 +0700 Subject: [PATCH 138/727] My Promethium keyboard firmware --- keyboards/handwired/promethium/Makefile | 3 + keyboards/handwired/promethium/config.h | 164 ++++ .../promethium/keymaps/priyadi/Makefile | 28 + .../promethium/keymaps/priyadi/config.h | 17 + .../promethium/keymaps/priyadi/flash.sh | 3 + .../promethium/keymaps/priyadi/keymap.c | 725 ++++++++++++++++++ .../promethium/keymaps/priyadi/readme.md | 0 .../handwired/promethium/keymaps/readme.md | 22 + keyboards/handwired/promethium/promethium.c | 6 + keyboards/handwired/promethium/promethium.h | 99 +++ keyboards/handwired/promethium/readme.md | 12 + keyboards/handwired/promethium/rgbsps.c | 24 + keyboards/handwired/promethium/rgbsps.h | 4 + keyboards/handwired/promethium/rules.mk | 75 ++ 14 files changed, 1182 insertions(+) create mode 100644 keyboards/handwired/promethium/Makefile create mode 100644 keyboards/handwired/promethium/config.h create mode 100644 keyboards/handwired/promethium/keymaps/priyadi/Makefile create mode 100644 keyboards/handwired/promethium/keymaps/priyadi/config.h create mode 100755 keyboards/handwired/promethium/keymaps/priyadi/flash.sh create mode 100644 keyboards/handwired/promethium/keymaps/priyadi/keymap.c create mode 100644 keyboards/handwired/promethium/keymaps/priyadi/readme.md create mode 100644 keyboards/handwired/promethium/keymaps/readme.md create mode 100644 keyboards/handwired/promethium/promethium.c create mode 100644 keyboards/handwired/promethium/promethium.h create mode 100644 keyboards/handwired/promethium/readme.md create mode 100644 keyboards/handwired/promethium/rgbsps.c create mode 100644 keyboards/handwired/promethium/rgbsps.h create mode 100644 keyboards/handwired/promethium/rules.mk diff --git a/keyboards/handwired/promethium/Makefile b/keyboards/handwired/promethium/Makefile new file mode 100644 index 0000000000..191c6bb664 --- /dev/null +++ b/keyboards/handwired/promethium/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h new file mode 100644 index 0000000000..5a2afe6abd --- /dev/null +++ b/keyboards/handwired/promethium/config.h @@ -0,0 +1,164 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6660 +#define DEVICE_VER 0x0001 +#define MANUFACTURER Priyadi +#define PRODUCT Promethium Keyboard +#define DESCRIPTION Promethium Keyboard + +/* key matrix size */ +#define MATRIX_ROWS 8 +#define MATRIX_COLS 6 + +/* default pin-out */ +#define MATRIX_COL_PINS { B6, B7, D6, C7, F6, F7 } +#define MATRIX_ROW_PINS { D7, C6, D0, D1, F5, F4, F1, F0 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT) | MOD_BIT(KC_LCTRL) | MOD_BIT(KC_RCTRL)) \ +) + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +/* PS/2 mouse */ +#ifdef PS2_USE_BUSYWAIT +# define PS2_CLOCK_PORT PORTD +# define PS2_CLOCK_PIN PIND +# define PS2_CLOCK_DDR DDRD +# define PS2_CLOCK_BIT 1 +# define PS2_DATA_PORT PORTD +# define PS2_DATA_PIN PIND +# define PS2_DATA_DDR DDRD +# define PS2_DATA_BIT 2 +#endif + +/* PS/2 mouse interrupt version */ +#ifdef PS2_USE_INT +/* uses INT1 for clock line(ATMega32U4) */ +#define PS2_CLOCK_PORT PORTD +#define PS2_CLOCK_PIN PIND +#define PS2_CLOCK_DDR DDRD +#define PS2_CLOCK_BIT 3 +#define PS2_DATA_PORT PORTD +#define PS2_DATA_PIN PIND +#define PS2_DATA_DDR DDRD +#define PS2_DATA_BIT 2 + +#define PS2_INT_INIT() do { \ + EICRA |= ((1< | ( | ) | ' | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | _ | + | { | } | [ | ] | " | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_PUNC] = KEYMAP( + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_GRV , + XXXXXXX, XXXXXXX, KC_BSLS, KC_MINS, KC_EQL, KC_LABK, KC_RABK, KC_LPRN, KC_RPRN, KC_QUOT, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_DQUO, XXXXXXX, XXXXXXX, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* Num + * ,-----------------------------------------------------------------------------------. + * | ^ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | @ | A | B | C | ( | ) | 4 | 5 | 6 | : |Enter | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | & | # | D | E | F | [ | ] | 1 | 2 | 3 | / | * | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | x | | | 0 | , | . | + | - | + * `-----------------------------------------------------------------------------------' + */ +[_NUM] = KEYMAP( + KC_CIRC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_ESC, KC_AT, S(KC_A), S(KC_B), S(KC_C), KC_LPRN, KC_RPRN, KC_4, KC_5, KC_6, KC_COLN, KC_ENT, + KC_AMPR, KC_HASH, S(KC_D), S(KC_E), S(KC_F), KC_LBRC, KC_RBRC, KC_1, KC_2, KC_3, KC_SLSH, KC_ASTR, + _______, _______, _______, KC_X, _______, KC_SPC, KC_SPC, KC_0, KC_COMM, KC_DOT, KC_PLUS, KC_MINS +), + +/* Func + * ,-----------------------------------------------------------------------------------. + * | | F1 | F2 | F3 | F4 | | | PgUp | Up | PgDn | PgUp | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | F5 | F6 | F7 | F8 |PrtSc | | Left | Down | Right| PgDn | Ins | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F9 | F10 | F11 | F12 | | | | Home | End | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_FUNC] = KEYMAP( + XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_PGUP, KC_DEL, + XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8,KC_PSCREEN,XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_INS, + _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_END, XXXXXXX, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ +), + +/* Emoji + * ,-----------------------------------------------------------------------------------. + * | | | | | | | | | | | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_EMOJI] = KEYMAP( + X(HART2), X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY),X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV), X(PHEW), + X(THMUP), X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN),X(HEART), X(BYE), X(KISS),X(CELEB), X(COOL),X(NOEVS), + X(THMDN),X(SLEEP), X(CLAP), X(CRY), X(VIC),X(BHART), X(SUN),X(SMEYE), X(WINK), X(MOON),X(CONFU),X(NOEVH), + X(POO), X(EYES),X(HUNRD), _______,X(SKULL),X(HORNS), X(HALO), X(FEAR), _______,X(YUMMY),X(DISAP),X(NOEVK) +), + +/* GUI + * ,-----------------------------------------------------------------------------------. + * | | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 | D9 | D10 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * |Linux | | Vol- | Mute | Vol+ | | | D- | | D+ | |Qwerty| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Win | | Prev | Play | Next | | | | | | |Colmak| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | OSX | | | | | BL- | BL+ | | | | |Workmn| + * `-----------------------------------------------------------------------------------' + */ +[_GUI] = KEYMAP( + _______, LGUI(KC_1),LGUI(KC_2),LGUI(KC_3),LGUI(KC_4),LGUI(KC_5),LGUI(KC_6),LGUI(KC_7),LGUI(KC_8),LGUI(KC_9),LGUI(KC_0), _______, + LINUX, _______, KC_VOLD, KC_MUTE, KC_VOLU,_______,_______,KC_WWW_BACK,_______,KC_WWW_FORWARD,_______, QWERTY, + WIN, _______, KC_MPRV, KC_MPLY, KC_MNXT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, COLEMAK, + OSX, _______, _______, _______, _______, BL_DEC, BL_INC, _______, _______, RGB_VAI, RGB_VAD, WORKMAN +), + +}; + +#ifdef AUDIO_ENABLE +float tone_startup[][2] = SONG(STARTUP_SOUND); +float tone_qwerty[][2] = SONG(QWERTY_SOUND); +float tone_colemak[][2] = SONG(COLEMAK_SOUND); +float tone_workman[][2] = SONG(DVORAK_SOUND); +float tone_goodbye[][2] = SONG(GOODBYE_SOUND); +float tone_linux[][2] = SONG(CAPS_LOCK_ON_SOUND); +float tone_windows[][2] = SONG(SCROLL_LOCK_ON_SOUND); +float tone_osx[][2] = SONG(NUM_LOCK_ON_SOUND); +float tone_click[][2] = SONG(MUSICAL_NOTE(_F3, 2)); +#endif + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + #ifdef AUDIO_ENABLE + // faux clicky + if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0); + #endif + + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); + #endif + persistant_default_layer_set(1UL<<_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_colemak, false, 0); + #endif + persistant_default_layer_set(1UL<<_COLEMAK); + } + return false; + break; + case WORKMAN: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_workman, false, 0); + #endif + persistant_default_layer_set(1UL<<_WORKMAN); + } + return false; + break; + + + + case PUNC: + if (record->event.pressed) { + layer_on(_PUNC); + update_tri_layer(_PUNC, _EMOJI, _GUI); + if (IS_LAYER_ON(_GUI)) { + led_layer_gui(); + } else { + led_layer_punc();; + } + } else { + layer_off(_PUNC); + update_tri_layer(_PUNC, _EMOJI, _GUI); + if (IS_LAYER_ON(_EMOJI)) { + led_layer_emoji(); + } else { + led_layer_normal();; + } + } + return false; + break; + case EMOJI: + if (record->event.pressed) { + layer_on(_EMOJI); + update_tri_layer(_PUNC, _EMOJI, _GUI); + if (IS_LAYER_ON(_GUI)) { + led_layer_gui(); + } else { + led_layer_emoji();; + } + } else { + layer_off(_EMOJI); + update_tri_layer(_PUNC, _EMOJI, _GUI); + if (IS_LAYER_ON(_PUNC)) { + led_layer_punc(); + } else { + led_layer_normal();; + } + } + return false; + break; + case NUM: + if (record->event.pressed) { + layer_on(_NUM); + led_layer_num(); + } else { + layer_off(_NUM); + led_layer_normal(); + } + return false; + break; + case FUNC: + if (record->event.pressed) { + layer_on(_FUNC); + led_layer_func(); + } else { + layer_off(_FUNC); + led_layer_normal(); + } + return false; + break; + + + case LINUX: + set_unicode_input_mode(UC_LNX); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_linux, false, 0); + #endif + return false; + break; + case WIN: + set_unicode_input_mode(UC_WINC); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_windows, false, 0); + #endif + return false; + break; + case OSX: + set_unicode_input_mode(UC_OSX); + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_osx, false, 0); + #endif + return false; + break; + } + return true; +} + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + startup_user(); + #endif + set_unicode_input_mode(UC_LNX); + led_init(); +} + +// void init_rgblight(void) { +// for (uint8_t i = 0; i < RGBLED_NUM; i++) { +// led[i].r = 255; +// led[i].g = 85; +// led[i].b = 0; +// } +// ws2812_setleds(led, RGBLED_NUM); +// } + + +#ifdef AUDIO_ENABLE + +void startup_user() +{ + _delay_ms(20); // gets rid of tick + PLAY_NOTE_ARRAY(tone_startup, false, 0); +} + +void shutdown_user() +{ + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); + _delay_ms(150); + stop_all_notes(); +} + +#endif \ No newline at end of file diff --git a/keyboards/handwired/promethium/keymaps/priyadi/readme.md b/keyboards/handwired/promethium/keymaps/priyadi/readme.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keyboards/handwired/promethium/keymaps/readme.md b/keyboards/handwired/promethium/keymaps/readme.md new file mode 100644 index 0000000000..527691389e --- /dev/null +++ b/keyboards/handwired/promethium/keymaps/readme.md @@ -0,0 +1,22 @@ +# How to add your own keymap + +Folders can be named however you'd like (will be approved upon merging), or should follow the format with a preceding `_`: + + _[ISO 3166-1 alpha-2 code*]_[layout variant]_[layout name/author] + +\* See full list: https://en.wikipedia.org/wiki/ISO_3166-1#Officially_assigned_code_elements + +and contain the following files: + +* `keymap.c` +* `readme.md` *recommended* +* `config.h` *optional*, found automatically when compiling +* `Makefile` *optional*, found automatically when compling + +When adding your keymap to this list, keep it organised alphabetically (select list, edit->sort lines), and use this format: + + * **folder_name** description + +# List of Promethium keymaps + + diff --git a/keyboards/handwired/promethium/promethium.c b/keyboards/handwired/promethium/promethium.c new file mode 100644 index 0000000000..a0035cce1a --- /dev/null +++ b/keyboards/handwired/promethium/promethium.c @@ -0,0 +1,6 @@ +#include "promethium.h" + +void matrix_init_kb(void) { + + matrix_init_user(); +} \ No newline at end of file diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h new file mode 100644 index 0000000000..fb0dc16830 --- /dev/null +++ b/keyboards/handwired/promethium/promethium.h @@ -0,0 +1,99 @@ +#ifndef PROMETHIUM_H +#define PROMETHIUM_H + +#include "quantum.h" + +#define KEYMAP( \ + k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ + k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ + k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \ + k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c \ +) \ +{ \ + {k11, k12, k13, k14, k15, k16}, \ + {k21, k22, k23, k24, k25, k26}, \ + {k31, k32, k33, k34, k35, k36}, \ + {k41, k42, k43, k44, k45, k46}, \ + {k17, k18, k19, k1a, k1b, k1c}, \ + {k27, k28, k29, k2a, k2b, k2c}, \ + {k37, k38, k39, k3a, k3b, k3c}, \ + {k47, k48, k49, k4a, k4b, k4c} \ +} + +enum led_sequence { + LED_IND_EMOJI, + LED_IND_NUM, + LED_IND_FUNC, + + LED_IND_BATTERY, + LED_IND_USB, + LED_IND_BLUETOOTH, + + LED_TAB, + LED_ESC, + LED_LSFT, + LED_LCTL, + + LED_LGUI, + LED_Z, + LED_A, + LED_Q, + + LED_W, + LED_S, + LED_X, + LED_LALT, + + LED_PUNC, + LED_C, + LED_D, + LED_E, + + LED_R, + LED_F, + LED_V, + LED_NUM, + + LED_LSPC, + LED_B, + LED_G, + LED_T, + + LED_TRACKPOINT1, + LED_TRACKPOINT2, + LED_TRACKPOINT3, + + LED_RSPC, + LED_N, + LED_HH, + LED_Y, + + LED_U, + LED_J, + LED_M, + LED_FUNC, + + LED_EMOJI, + LED_COMM, + LED_K, + LED_I, + + LED_O, + LED_L, + LED_DOT, + LED_RALT, + + LED_RGUI, + LED_SLSH, + LED_SCLN, + LED_P, + + LED_BKSP, + LED_ENT, + LED_RSFT, + LED_RCTL +}; + +#endif + + diff --git a/keyboards/handwired/promethium/readme.md b/keyboards/handwired/promethium/readme.md new file mode 100644 index 0000000000..64e2c3a16a --- /dev/null +++ b/keyboards/handwired/promethium/readme.md @@ -0,0 +1,12 @@ +Promethium Keyboard Firmware +============================ +A handwired Planck based keyboard using the Adafruit Feather 32u4 Bluefruit LE controller. + +Features: + +* Single piece split form factor +* Vertical staggered +* Trackpoint +* Bluetooth LE *TBD* +* Battery +* Per switch RGB LED \ No newline at end of file diff --git a/keyboards/handwired/promethium/rgbsps.c b/keyboards/handwired/promethium/rgbsps.c new file mode 100644 index 0000000000..ea922ec3fd --- /dev/null +++ b/keyboards/handwired/promethium/rgbsps.c @@ -0,0 +1,24 @@ +#include "light_ws2812.h" +#include "rgbsps.h" + +struct cRGB led[RGBSPS_NUM]; + +void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b) { + led[index].r = r; + led[index].g = g; + led[index].b = b; +} + +void rgbsps_setall(uint8_t r, uint8_t g, uint8_t b) { + for (uint16_t i = 0; i < RGBSPS_NUM; i++) { + rgbsps_set(i, r, g, b); + } +} + +void rgbsps_turnoff(void) { + rgbsps_setall(0, 0, 0); +} + +void rgbsps_send(void) { + ws2812_setleds(led, RGBSPS_NUM); +} \ No newline at end of file diff --git a/keyboards/handwired/promethium/rgbsps.h b/keyboards/handwired/promethium/rgbsps.h new file mode 100644 index 0000000000..6da197f75d --- /dev/null +++ b/keyboards/handwired/promethium/rgbsps.h @@ -0,0 +1,4 @@ +void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b); +void rgbsps_setall(uint8_t r, uint8_t g, uint8_t b); +void rgbsps_turnoff(void); +void rgbsps_send(void); \ No newline at end of file diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk new file mode 100644 index 0000000000..835b13c4f3 --- /dev/null +++ b/keyboards/handwired/promethium/rules.mk @@ -0,0 +1,75 @@ + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 8000000 + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= no # Commands for debug and configuration +NKRO_ENABLE ?= yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no # Audio output on port C6 +UNICODE_ENABLE ?= no # Unicode +UNICODEMAP_ENABLE = yes +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +PS2_MOUSE_ENABLE ?= yes +PS2_USE_INT ?= yes + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend + +include $(TMK_DIR)/protocol.mk +SRC += $(QUANTUM_DIR)/light_ws2812.c +SRC += rgbsps.c \ No newline at end of file From b5019bef055d3b3a90b8b42268b9ad874600782b Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 26 Nov 2016 13:44:50 +0700 Subject: [PATCH 139/727] change init delay to 2000ms --- keyboards/handwired/promethium/promethium.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h index fb0dc16830..8f2a8c3be2 100644 --- a/keyboards/handwired/promethium/promethium.h +++ b/keyboards/handwired/promethium/promethium.h @@ -3,6 +3,8 @@ #include "quantum.h" +#define PS2_INIT_DELAY 2000 + #define KEYMAP( \ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, \ From 7f3c9c6a395a921d2914fc5cac1ac8f9441c33eb Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 26 Nov 2016 13:46:05 +0700 Subject: [PATCH 140/727] protocols.mk is already included in latest QMK --- keyboards/handwired/promethium/rules.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk index 835b13c4f3..0842780cce 100644 --- a/keyboards/handwired/promethium/rules.mk +++ b/keyboards/handwired/promethium/rules.mk @@ -70,6 +70,5 @@ PS2_USE_INT ?= yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -include $(TMK_DIR)/protocol.mk SRC += $(QUANTUM_DIR)/light_ws2812.c SRC += rgbsps.c \ No newline at end of file From 0f39ab52192c0e34f0aea5ff6bb1fa2ded427b6e Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 26 Nov 2016 13:47:03 +0700 Subject: [PATCH 141/727] remove ifdef on chip type --- keyboards/handwired/promethium/config.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h index 5a2afe6abd..473af67d34 100644 --- a/keyboards/handwired/promethium/config.h +++ b/keyboards/handwired/promethium/config.h @@ -116,7 +116,6 @@ along with this program. If not, see . /* PS/2 mouse USART version */ #ifdef PS2_USE_USART -#if defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) /* XCK for clock line and RXD for data line */ #define PS2_CLOCK_PORT PORTD #define PS2_CLOCK_PIN PIND @@ -158,7 +157,6 @@ along with this program. If not, see . #define PS2_USART_ERROR (UCSR1A & ((1< Date: Sat, 26 Nov 2016 23:53:15 +0700 Subject: [PATCH 142/727] fix strict-prototypes warning --- quantum/process_keycode/process_unicode.h | 1 + 1 file changed, 1 insertion(+) diff --git a/quantum/process_keycode/process_unicode.h b/quantum/process_keycode/process_unicode.h index 065eeb5f6a..f17cfa6cf2 100644 --- a/quantum/process_keycode/process_unicode.h +++ b/quantum/process_keycode/process_unicode.h @@ -22,6 +22,7 @@ void register_hex(uint16_t hex); bool process_unicode(uint16_t keycode, keyrecord_t *record); #ifdef UNICODEMAP_ENABLE +void unicode_map_input_error(void); bool process_unicode_map(uint16_t keycode, keyrecord_t *record); #endif From a182cbc0319d54122e12dfa48e782e8e122c7df6 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sun, 27 Nov 2016 00:34:29 +0700 Subject: [PATCH 143/727] Update Unicode documentation --- readme.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 3eb67882ab..cd65e0e69e 100644 --- a/readme.md +++ b/readme.md @@ -911,7 +911,33 @@ In `quantum/keymap_extras/`, you'll see various language files - these work the ## Unicode support -You can currently send 4 hex digits with your OS-specific modifier key (RALT for OSX with the "Unicode Hex Input" layout, see [this article](http://www.poynton.com/notes/misc/mac-unicode-hex-input.html) to learn more) - this is currently limited to supporting one OS at a time, and requires a recompile for switching. 8 digit hex codes are being worked on. The keycode function is `UC(n)`, where *n* is a 4 digit hexidecimal. Enable from the Makefile. +There are three Unicode keymap definition method available in QMK: + +### UNICODE_ENABLE + +Supports Unicode input up to 0xFFFF. The keycode function is `UC(n)` in +keymap file, where *n* is a 4 digit hexadecimal. + +### UNICODEMAP_ENABLE + +Supports Unicode up to 0xFFFFFFFF. You need to maintain a separate mapping +table `const uint32_t PROGMEM unicode_map[] = {...}` in your keymap file. +The keycode function is `X(n)` where *n* is the array index of the mapping +table. + +### UCIS_ENABLE + +TBD + +Unicode input in QMK works by inputing a sequence of characters to the OS, +sort of like macro. Unfortunately, each OS has different ideas on how Unicode is inputted. + +This is the current list of Unicode input method in QMK: + +* UC_OSX: MacOS Unicode Hex Input support. Works only up to 0xFFFF. Disabled by default. To enable: go to System Preferences -> Keyboard -> Input Sources, and enable Unicode Hex. +* UC_LNX: Unicode input method under Linux. Works up to 0xFFFFF. Should work almost anywhere on ibus enabled distros. Without ibus, this works under GTK apps, but rarely anywhere else. +* UC_WIN: (not recommended) Windows built-in Unicode input. To enable: create registry key under `HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad` of type `REG_SZ` called `EnableHexNumpad`, set its value to 1, and reboot. This method is not recommended because of reliability and compatibility issue, use WinCompose method below instead. +* UC_WINC: Windows Unicode input using WinCompose. Requires [WinCompose](https://github.com/samhocevar/wincompose). Works reliably under many (all?) variations of Windows. ## Backlight Breathing From 12c1314b024b0e24dc561d8f8816561a4ca8ff42 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sun, 27 Nov 2016 00:40:31 +0700 Subject: [PATCH 144/727] update docs --- keyboards/handwired/promethium/readme.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/keyboards/handwired/promethium/readme.md b/keyboards/handwired/promethium/readme.md index 64e2c3a16a..e63d2f1add 100644 --- a/keyboards/handwired/promethium/readme.md +++ b/keyboards/handwired/promethium/readme.md @@ -5,8 +5,9 @@ A handwired Planck based keyboard using the Adafruit Feather 32u4 Bluefruit LE c Features: * Single piece split form factor -* Vertical staggered +* Columnar stagger * Trackpoint * Bluetooth LE *TBD* * Battery -* Per switch RGB LED \ No newline at end of file +* Per switch RGB LED +* Proximity sensor for energy conservation *TBD* \ No newline at end of file From 7edac212c8ed8442bf4207e70dc8194631b2bf27 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 26 Nov 2016 15:37:46 -0500 Subject: [PATCH 145/727] separated into api files/folder --- build_keyboard.mk | 8 + common.mk | 1 + keyboards/ergodox/keymaps/jack/keymap.c | 2 +- keyboards/ergodox/rules.mk | 1 - keyboards/planck/rules.mk | 1 + keyboards/preonic/keymaps/default/Makefile | 22 --- keyboards/preonic/rules.mk | 3 +- quantum/api.c | 178 ++++++++++++++++++ quantum/api.h | 59 ++++++ quantum/api/api_sysex.c | 29 +++ quantum/api/api_sysex.h | 10 + quantum/quantum.c | 6 +- quantum/quantum.h | 2 +- tmk_core/protocol/lufa/lufa.c | 203 +-------------------- tmk_core/protocol/lufa/lufa.h | 61 +------ 15 files changed, 303 insertions(+), 283 deletions(-) create mode 100644 quantum/api.c create mode 100644 quantum/api.h create mode 100644 quantum/api/api_sysex.c create mode 100644 quantum/api/api_sysex.h diff --git a/build_keyboard.mk b/build_keyboard.mk index 42f8f8ac7b..c1e5540039 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -131,6 +131,14 @@ ifndef CUSTOM_MATRIX SRC += $(QUANTUM_DIR)/matrix.c endif +ifeq ($(strip $(API_SYSEX_ENABLE)), yes) + OPT_DEFS += -DAPI_SYSEX_ENABLE + SRC += $(QUANTUM_DIR)/api/api_sysex.c + OPT_DEFS += -DAPI_ENABLE + SRC += $(QUANTUM_DIR)/api.c + MIDI_ENABLE=yes +endif + ifeq ($(strip $(MIDI_ENABLE)), yes) OPT_DEFS += -DMIDI_ENABLE SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c diff --git a/common.mk b/common.mk index 18751cd5ac..c4b9394a24 100644 --- a/common.mk +++ b/common.mk @@ -23,4 +23,5 @@ COMMON_VPATH += $(QUANTUM_PATH) COMMON_VPATH += $(QUANTUM_PATH)/keymap_extras COMMON_VPATH += $(QUANTUM_PATH)/audio COMMON_VPATH += $(QUANTUM_PATH)/process_keycode +COMMON_VPATH += $(QUANTUM_PATH)/api COMMON_VPATH += $(SERIAL_PATH) \ No newline at end of file diff --git a/keyboards/ergodox/keymaps/jack/keymap.c b/keyboards/ergodox/keymaps/jack/keymap.c index eb41f12127..9cb80c59d1 100644 --- a/keyboards/ergodox/keymaps/jack/keymap.c +++ b/keyboards/ergodox/keymaps/jack/keymap.c @@ -91,7 +91,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case 2: if (record->event.pressed) { // For resetting EEPROM - send_unicode_midi(0x0CA0); + api_send_unicode(0x0CA0); } break; } diff --git a/keyboards/ergodox/rules.mk b/keyboards/ergodox/rules.mk index add64ec76f..2e501e81b2 100644 --- a/keyboards/ergodox/rules.mk +++ b/keyboards/ergodox/rules.mk @@ -24,6 +24,5 @@ COMMAND_ENABLE ?= yes # Commands for debug and configuration CUSTOM_MATRIX ?= yes # Custom matrix file for the ErgoDox EZ SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -MIDI_ENABLE ?= no # MIDI controls UNICODE_ENABLE ?= yes # Unicode ONEHAND_ENABLE ?= yes # Allow swapping hands of keyboard diff --git a/keyboards/planck/rules.mk b/keyboards/planck/rules.mk index 25db53a315..ccee972715 100644 --- a/keyboards/planck/rules.mk +++ b/keyboards/planck/rules.mk @@ -62,6 +62,7 @@ AUDIO_ENABLE ?= no # Audio output on port C6 UNICODE_ENABLE ?= no # Unicode BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +API_SYSEX_ENABLE = yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend \ No newline at end of file diff --git a/keyboards/preonic/keymaps/default/Makefile b/keyboards/preonic/keymaps/default/Makefile index 581e08cd02..3d4659ceb9 100644 --- a/keyboards/preonic/keymaps/default/Makefile +++ b/keyboards/preonic/keymaps/default/Makefile @@ -1,25 +1,3 @@ - - -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = yes # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - ifndef QUANTUM_DIR include ../../../../Makefile endif \ No newline at end of file diff --git a/keyboards/preonic/rules.mk b/keyboards/preonic/rules.mk index d0f3a3a1c0..c4ce2aacca 100644 --- a/keyboards/preonic/rules.mk +++ b/keyboards/preonic/rules.mk @@ -53,7 +53,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # the appropriate keymap folder that will get included automatically # BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) CONSOLE_ENABLE ?= no # Console for debug(+400) COMMAND_ENABLE ?= yes # Commands for debug and configuration @@ -64,6 +64,7 @@ AUDIO_ENABLE ?= no # Audio output on port C6 UNICODE_ENABLE ?= no # Unicode BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +API_SYSEX_ENABLE ?= yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend \ No newline at end of file diff --git a/quantum/api.c b/quantum/api.c new file mode 100644 index 0000000000..4ca3b96762 --- /dev/null +++ b/quantum/api.c @@ -0,0 +1,178 @@ +#include "api.h" +#include "quantum.h" + +void dword_to_bytes(uint32_t dword, uint8_t * bytes) { + bytes[0] = (dword >> 24) & 0xFF; + bytes[1] = (dword >> 16) & 0xFF; + bytes[2] = (dword >> 8) & 0xFF; + bytes[3] = (dword >> 0) & 0xFF; +} + +uint32_t bytes_to_dword(uint8_t * bytes, uint8_t index) { + return ((uint32_t)bytes[index + 0] << 24) | ((uint32_t)bytes[index + 1] << 16) | ((uint32_t)bytes[index + 2] << 8) | (uint32_t)bytes[index + 3]; +} + +__attribute__ ((weak)) +bool process_api_quantum(uint8_t length, uint8_t * data) { + return process_api_keyboard(length, data); +} + +__attribute__ ((weak)) +bool process_api_keyboard(uint8_t length, uint8_t * data) { + return process_api_user(length, data); +} + +__attribute__ ((weak)) +bool process_api_user(uint8_t length, uint8_t * data) { + return true; +} + +void process_api(uint16_t length, uint8_t * data) { + // SEND_STRING("\nRX: "); + // for (uint8_t i = 0; i < length; i++) { + // send_byte(data[i]); + // SEND_STRING(" "); + // } + if (!process_api_quantum(length, data)) + return; + + switch (data[0]) { + case MT_SET_DATA: + switch (data[1]) { + case DT_DEFAULT_LAYER: { + eeconfig_update_default_layer(data[2]); + default_layer_set((uint32_t)(data[2])); + break; + } + case DT_KEYMAP_OPTIONS: { + eeconfig_update_keymap(data[2]); + break; + } + case DT_RGBLIGHT: { + #ifdef RGBLIGHT_ENABLE + uint32_t rgblight = bytes_to_dword(data, 2); + rgblight_update_dword(rgblight); + #endif + break; + } + } + case MT_GET_DATA: + switch (data[1]) { + case DT_HANDSHAKE: { + MT_GET_DATA_ACK(DT_HANDSHAKE, NULL, 0); + break; + } + case DT_DEBUG: { + uint8_t debug_bytes[1] = { eeprom_read_byte(EECONFIG_DEBUG) }; + MT_GET_DATA_ACK(DT_DEBUG, debug_bytes, 1); + break; + } + case DT_DEFAULT_LAYER: { + uint8_t default_bytes[1] = { eeprom_read_byte(EECONFIG_DEFAULT_LAYER) }; + MT_GET_DATA_ACK(DT_DEFAULT_LAYER, default_bytes, 1); + break; + } + case DT_CURRENT_LAYER: { + uint8_t layer_state_bytes[4]; + dword_to_bytes(layer_state, layer_state_bytes); + MT_GET_DATA_ACK(DT_CURRENT_LAYER, layer_state_bytes, 4); + break; + } + case DT_AUDIO: { + #ifdef AUDIO_ENABLE + uint8_t audio_bytes[1] = { eeprom_read_byte(EECONFIG_AUDIO) }; + MT_GET_DATA_ACK(DT_AUDIO, audio_bytes, 1); + #else + MT_GET_DATA_ACK(DT_AUDIO, NULL, 0); + #endif + break; + } + case DT_BACKLIGHT: { + #ifdef BACKLIGHT_ENABLE + uint8_t backlight_bytes[1] = { eeprom_read_byte(EECONFIG_BACKLIGHT) }; + MT_GET_DATA_ACK(DT_BACKLIGHT, backlight_bytes, 1); + #else + MT_GET_DATA_ACK(DT_BACKLIGHT, NULL, 0); + #endif + break; + } + case DT_RGBLIGHT: { + #ifdef RGBLIGHT_ENABLE + uint8_t rgblight_bytes[4]; + dword_to_bytes(eeconfig_read_rgblight(), rgblight_bytes); + MT_GET_DATA_ACK(DT_RGBLIGHT, rgblight_bytes, 4); + #else + MT_GET_DATA_ACK(DT_RGBLIGHT, NULL, 0); + #endif + break; + } + case DT_KEYMAP_OPTIONS: { + uint8_t keymap_bytes[1] = { eeconfig_read_keymap() }; + MT_GET_DATA_ACK(DT_KEYMAP_OPTIONS, keymap_bytes, 1); + break; + } + case DT_KEYMAP_SIZE: { + uint8_t keymap_size[2] = {MATRIX_ROWS, MATRIX_COLS}; + MT_GET_DATA_ACK(DT_KEYMAP_SIZE, keymap_size, 2); + break; + } + case DT_KEYMAP: { + uint8_t keymap_data[MATRIX_ROWS * MATRIX_COLS * 4 + 3]; + keymap_data[0] = data[2]; + keymap_data[1] = MATRIX_ROWS; + keymap_data[2] = MATRIX_COLS; + for (int i = 0; i < MATRIX_ROWS; i++) { + for (int j = 0; j < MATRIX_COLS; j++) { + keymap_data[3 + (i*MATRIX_COLS*2) + (j*2)] = pgm_read_word(&keymaps[data[2]][i][j]) >> 8; + keymap_data[3 + (i*MATRIX_COLS*2) + (j*2) + 1] = pgm_read_word(&keymaps[data[2]][i][j]) & 0xFF; + } + } + MT_GET_DATA_ACK(DT_KEYMAP, keymap_data, MATRIX_ROWS * MATRIX_COLS * 4 + 3); + // uint8_t keymap_data[5]; + // keymap_data[0] = data[2]; + // keymap_data[1] = data[3]; + // keymap_data[2] = data[4]; + // keymap_data[3] = pgm_read_word(&keymaps[data[2]][data[3]][data[4]]) >> 8; + // keymap_data[4] = pgm_read_word(&keymaps[data[2]][data[3]][data[4]]) & 0xFF; + + // MT_GET_DATA_ACK(DT_KEYMAP, keymap_data, 5); + break; + } + default: + break; + } + break; + case MT_SET_DATA_ACK: + case MT_GET_DATA_ACK: + break; + case MT_SEND_DATA: + break; + case MT_SEND_DATA_ACK: + break; + case MT_EXE_ACTION: + break; + case MT_EXE_ACTION_ACK: + break; + case MT_TYPE_ERROR: + break; + default: ; // command not recognised + SEND_BYTES(MT_TYPE_ERROR, DT_NONE, data, length); + break; + + // #ifdef RGBLIGHT_ENABLE + // case 0x27: ; // RGB LED functions + // switch (*data++) { + // case 0x00: ; // Update HSV + // rgblight_sethsv((data[0] << 8 | data[1]) % 360, data[2], data[3]); + // break; + // case 0x01: ; // Update RGB + // break; + // case 0x02: ; // Update mode + // rgblight_mode(data[0]); + // break; + // } + // break; + // #endif + } + +} \ No newline at end of file diff --git a/quantum/api.h b/quantum/api.h new file mode 100644 index 0000000000..00dcdb8954 --- /dev/null +++ b/quantum/api.h @@ -0,0 +1,59 @@ +#ifndef _API_H_ +#define _API_H_ + +#include "lufa.h" + +enum MESSAGE_TYPE { + MT_GET_DATA = 0x10, // Get data from keyboard + MT_GET_DATA_ACK = 0x11, // returned data to process (ACK) + MT_SET_DATA = 0x20, // Set data on keyboard + MT_SET_DATA_ACK = 0x21, // returned data to confirm (ACK) + MT_SEND_DATA = 0x30, // Sending data/action from keyboard + MT_SEND_DATA_ACK = 0x31, // returned data/action confirmation (ACK) + MT_EXE_ACTION = 0x40, // executing actions on keyboard + MT_EXE_ACTION_ACK =0x41, // return confirmation/value (ACK) + MT_TYPE_ERROR = 0x80 // type not recofgnised (ACK) +}; + +enum DATA_TYPE { + DT_NONE = 0x00, + DT_HANDSHAKE, + DT_DEFAULT_LAYER, + DT_CURRENT_LAYER, + DT_KEYMAP_OPTIONS, + DT_BACKLIGHT, + DT_RGBLIGHT, + DT_UNICODE, + DT_DEBUG, + DT_AUDIO, + DT_QUANTUM_ACTION, + DT_KEYBOARD_ACTION, + DT_USER_ACTION, + DT_KEYMAP_SIZE, + DT_KEYMAP +}; + +void dword_to_bytes(uint32_t dword, uint8_t * bytes); +uint32_t bytes_to_dword(uint8_t * bytes, uint8_t index); + +#define MT_GET_DATA(data_type, data, length) SEND_BYTES(MT_GET_DATA, data_type, data, length) +#define MT_GET_DATA_ACK(data_type, data, length) SEND_BYTES(MT_GET_DATA_ACK, data_type, data, length) +#define MT_SET_DATA(data_type, data, length) SEND_BYTES(MT_SET_DATA, data_type, data, length) +#define MT_SET_DATA_ACK(data_type, data, length) SEND_BYTES(MT_SET_DATA_ACK, data_type, data, length) +#define MT_SEND_DATA(data_type, data, length) SEND_BYTES(MT_SEND_DATA, data_type, data, length) +#define MT_SEND_DATA_ACK(data_type, data, length) SEND_BYTES(MT_SEND_DATA_ACK, data_type, data, length) +#define MT_EXE_ACTION(data_type, data, length) SEND_BYTES(MT_EXE_ACTION, data_type, data, length) +#define MT_EXE_ACTION_ACK(data_type, data, length) SEND_BYTES(MT_EXE_ACTION_ACK, data_type, data, length) + +void process_api(uint16_t length, uint8_t * data); + +__attribute__ ((weak)) +bool process_api_quantum(uint8_t length, uint8_t * data); + +__attribute__ ((weak)) +bool process_api_keyboard(uint8_t length, uint8_t * data); + +__attribute__ ((weak)) +bool process_api_user(uint8_t length, uint8_t * data); + +#endif \ No newline at end of file diff --git a/quantum/api/api_sysex.c b/quantum/api/api_sysex.c new file mode 100644 index 0000000000..a4a554e764 --- /dev/null +++ b/quantum/api/api_sysex.c @@ -0,0 +1,29 @@ +#include "api_sysex.h" + +void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t * bytes, uint16_t length) { + // SEND_STRING("\nTX: "); + // for (uint8_t i = 0; i < length; i++) { + // send_byte(bytes[i]); + // SEND_STRING(" "); + // } + uint8_t * precode = malloc(sizeof(uint8_t) * (length + 2)); + precode[0] = message_type; + precode[1] = data_type; + memcpy(precode + 2, bytes, length); + uint8_t * encoded = malloc(sizeof(uint8_t) * (sysex_encoded_length(length + 2))); + uint16_t encoded_length = sysex_encode(encoded, precode, length + 2); + uint8_t * array = malloc(sizeof(uint8_t) * (encoded_length + 5)); + array[0] = 0xF0; + array[1] = 0x00; + array[2] = 0x00; + array[3] = 0x00; + array[encoded_length + 4] = 0xF7; + memcpy(array + 4, encoded, encoded_length); + midi_send_array(&midi_device, encoded_length + 5, array); + + // SEND_STRING("\nTD: "); + // for (uint8_t i = 0; i < encoded_length + 5; i++) { + // send_byte(array[i]); + // SEND_STRING(" "); + // } +} \ No newline at end of file diff --git a/quantum/api/api_sysex.h b/quantum/api/api_sysex.h new file mode 100644 index 0000000000..b947b60e54 --- /dev/null +++ b/quantum/api/api_sysex.h @@ -0,0 +1,10 @@ +#ifndef _API_SYSEX_H_ +#define _API_SYSEX_H_ + +#include "api.h" + +void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t * bytes, uint16_t length); + +#define SEND_BYTES(mt, dt, b, l) send_bytes_sysex(mt, dt, b, l) + +#endif \ No newline at end of file diff --git a/quantum/quantum.c b/quantum/quantum.c index 8372a7adc5..f653564a67 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -847,12 +847,12 @@ void send_nibble(uint8_t number) { } } -void send_unicode_midi(uint32_t unicode) { - #ifdef MIDI_ENABLE +void api_send_unicode(uint32_t unicode) { +#ifdef API_ENABLE uint8_t chunk[4]; dword_to_bytes(unicode, chunk); MT_SEND_DATA(DT_UNICODE, chunk, 5); - #endif +#endif } __attribute__ ((weak)) diff --git a/quantum/quantum.h b/quantum/quantum.h index 316da15b9a..e6adf974ab 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -119,6 +119,6 @@ void send_nibble(uint8_t number); void led_set_user(uint8_t usb_led); void led_set_kb(uint8_t usb_led); -void send_unicode_midi(uint32_t unicode); +void api_send_unicode(uint32_t unicode); #endif diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index aa2e781c80..39d4824b6b 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -1091,37 +1091,17 @@ void fallthrough_callback(MidiDevice * device, #endif } -#ifdef RGB_MIDI - rgblight_config_t rgblight_config; -#endif void cc_callback(MidiDevice * device, uint8_t chan, uint8_t num, uint8_t val) { //sending it back on the next channel // midi_send_cc(device, (chan + 1) % 16, num, val); - #ifdef RGB_MIDI - rgblight_config.raw = eeconfig_read_rgblight(); - switch (num) { - case 14: - rgblight_config.hue = val * 360 / 127; - break; - case 15: - rgblight_config.sat = val << 1; - break; - case 16: - rgblight_config.val = val << 1; - break; - } - rgblight_sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val); - #endif } uint8_t midi_buffer[MIDI_SYSEX_BUFFER] = {0}; void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t * data) { - // for (int i = 0; i < length; i++) - // midi_send_cc(device, 15, 0x7F & data[i], 0x7F & (start + i)); - // if (start == 0x27) { + #ifdef API_SYSEX_ENABLE // SEND_STRING("\n"); // send_word(start); // SEND_STRING(": "); @@ -1136,190 +1116,13 @@ void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t // } uint8_t * decoded = malloc(sizeof(uint8_t) * (sysex_decoded_length(start + place - 4))); uint16_t decode_length = sysex_decode(decoded, midi_buffer + 4, start + place - 4); - sysex_buffer_callback(device, decode_length, decoded); + process_api(decode_length, decoded); } // SEND_STRING(" "); data++; } - // } - + #endif } -void dword_to_bytes(uint32_t dword, uint8_t * bytes) { - bytes[0] = (dword >> 24) & 0xFF; - bytes[1] = (dword >> 16) & 0xFF; - bytes[2] = (dword >> 8) & 0xFF; - bytes[3] = (dword >> 0) & 0xFF; -} - -uint32_t bytes_to_dword(uint8_t * bytes, uint8_t index) { - return ((uint32_t)bytes[index + 0] << 24) | ((uint32_t)bytes[index + 1] << 16) | ((uint32_t)bytes[index + 2] << 8) | (uint32_t)bytes[index + 3]; -} - -void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t * bytes, uint8_t length) { - // SEND_STRING("\nTX: "); - // for (uint8_t i = 0; i < length; i++) { - // send_byte(bytes[i]); - // SEND_STRING(" "); - // } - uint8_t * precode = malloc(sizeof(uint8_t) * (length + 2)); - precode[0] = message_type; - precode[1] = data_type; - memcpy(precode + 2, bytes, length); - uint8_t * encoded = malloc(sizeof(uint8_t) * (sysex_encoded_length(length + 2))); - uint16_t encoded_length = sysex_encode(encoded, precode, length + 2); - uint8_t * array = malloc(sizeof(uint8_t) * (encoded_length + 5)); - array[0] = 0xF0; - array[1] = 0x00; - array[2] = 0x00; - array[3] = 0x00; - array[encoded_length + 4] = 0xF7; - memcpy(array + 4, encoded, encoded_length); - midi_send_array(&midi_device, encoded_length + 5, array); - - // SEND_STRING("\nTD: "); - // for (uint8_t i = 0; i < encoded_length + 5; i++) { - // send_byte(array[i]); - // SEND_STRING(" "); - // } -} - -__attribute__ ((weak)) -bool sysex_process_quantum(uint8_t length, uint8_t * data) { - return sysex_process_keyboard(length, data); -} - -__attribute__ ((weak)) -bool sysex_process_keyboard(uint8_t length, uint8_t * data) { - return sysex_process_user(length, data); -} - -__attribute__ ((weak)) -bool sysex_process_user(uint8_t length, uint8_t * data) { - return true; -} - -void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) { - // SEND_STRING("\nRX: "); - // for (uint8_t i = 0; i < length; i++) { - // send_byte(data[i]); - // SEND_STRING(" "); - // } - if (!sysex_process_quantum(length, data)) - return; - - switch (data[0]) { - case MT_SET_DATA: - switch (data[1]) { - case DT_DEFAULT_LAYER: { - eeconfig_update_default_layer(data[2]); - default_layer_set((uint32_t)(data[2])); - break; - } - case DT_KEYMAP_OPTIONS: { - eeconfig_update_keymap(data[2]); - break; - } - case DT_RGBLIGHT: { - #ifdef RGBLIGHT_ENABLE - uint32_t rgblight = bytes_to_dword(data, 2); - rgblight_update_dword(rgblight); - #endif - break; - } - } - case MT_GET_DATA: - switch (data[1]) { - case DT_HANDSHAKE: { - MT_GET_DATA_ACK(DT_HANDSHAKE, NULL, 0); - break; - } - case DT_DEBUG: { - uint8_t debug_bytes[1] = { eeprom_read_byte(EECONFIG_DEBUG) }; - MT_GET_DATA_ACK(DT_DEBUG, debug_bytes, 1); - break; - } - case DT_DEFAULT_LAYER: { - uint8_t default_bytes[1] = { eeprom_read_byte(EECONFIG_DEFAULT_LAYER) }; - MT_GET_DATA_ACK(DT_DEFAULT_LAYER, default_bytes, 1); - break; - } - case DT_CURRENT_LAYER: { - uint8_t layer_state_bytes[4]; - dword_to_bytes(layer_state, layer_state_bytes); - MT_GET_DATA_ACK(DT_CURRENT_LAYER, layer_state_bytes, 4); - break; - } - case DT_AUDIO: { - #ifdef AUDIO_ENABLE - uint8_t audio_bytes[1] = { eeprom_read_byte(EECONFIG_AUDIO) }; - MT_GET_DATA_ACK(DT_AUDIO, audio_bytes, 1); - #else - MT_GET_DATA_ACK(DT_AUDIO, NULL, 0); - #endif - break; - } - case DT_BACKLIGHT: { - #ifdef BACKLIGHT_ENABLE - uint8_t backlight_bytes[1] = { eeprom_read_byte(EECONFIG_BACKLIGHT) }; - MT_GET_DATA_ACK(DT_BACKLIGHT, backlight_bytes, 1); - #else - MT_GET_DATA_ACK(DT_BACKLIGHT, NULL, 0); - #endif - break; - } - case DT_RGBLIGHT: { - #ifdef RGBLIGHT_ENABLE - uint8_t rgblight_bytes[4]; - dword_to_bytes(eeconfig_read_rgblight(), rgblight_bytes); - MT_GET_DATA_ACK(DT_RGBLIGHT, rgblight_bytes, 4); - #else - MT_GET_DATA_ACK(DT_RGBLIGHT, NULL, 0); - #endif - break; - } - case DT_KEYMAP_OPTIONS: { - uint8_t keymap_bytes[1] = { eeconfig_read_keymap() }; - MT_GET_DATA_ACK(DT_KEYMAP_OPTIONS, keymap_bytes, 1); - break; - } - default: - break; - } - break; - case MT_SET_DATA_ACK: - case MT_GET_DATA_ACK: - break; - case MT_SEND_DATA: - break; - case MT_SEND_DATA_ACK: - break; - case MT_EXE_ACTION: - break; - case MT_EXE_ACTION_ACK: - break; - case MT_TYPE_ERROR: - break; - default: ; // command not recognised - send_bytes_sysex(MT_TYPE_ERROR, DT_NONE, data, length); - break; - - // #ifdef RGBLIGHT_ENABLE - // case 0x27: ; // RGB LED functions - // switch (*data++) { - // case 0x00: ; // Update HSV - // rgblight_sethsv((data[0] << 8 | data[1]) % 360, data[2], data[3]); - // break; - // case 0x01: ; // Update RGB - // break; - // case 0x02: ; // Update mode - // rgblight_mode(data[0]); - // break; - // } - // break; - // #endif - } - -} #endif diff --git a/tmk_core/protocol/lufa/lufa.h b/tmk_core/protocol/lufa/lufa.h index 0962dda8d8..b11854101d 100644 --- a/tmk_core/protocol/lufa/lufa.h +++ b/tmk_core/protocol/lufa/lufa.h @@ -68,64 +68,17 @@ typedef struct { } __attribute__ ((packed)) report_extra_t; #ifdef MIDI_ENABLE - #define MIDI_SYSEX_BUFFER 16 void MIDI_Task(void); MidiDevice midi_device; + #define MIDI_SYSEX_BUFFER 32 +#endif - void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t * data); - void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data); - void send_bytes_sysex(uint8_t message_type, uint8_t data_type, uint8_t * bytes, uint8_t length); - void dword_to_bytes(uint32_t dword, uint8_t * bytes); - uint32_t bytes_to_dword(uint8_t * bytes, uint8_t index); - - __attribute__ ((weak)) - bool sysex_process_quantum(uint8_t length, uint8_t * data); - - __attribute__ ((weak)) - bool sysex_process_keyboard(uint8_t length, uint8_t * data); - - __attribute__ ((weak)) - bool sysex_process_user(uint8_t length, uint8_t * data); - - enum MESSAGE_TYPE { - MT_GET_DATA = 0x10, // Get data from keyboard - MT_GET_DATA_ACK = 0x11, // returned data to process (ACK) - MT_SET_DATA = 0x20, // Set data on keyboard - MT_SET_DATA_ACK = 0x21, // returned data to confirm (ACK) - MT_SEND_DATA = 0x30, // Sending data/action from keyboard - MT_SEND_DATA_ACK = 0x31, // returned data/action confirmation (ACK) - MT_EXE_ACTION = 0x40, // executing actions on keyboard - MT_EXE_ACTION_ACK =0x41, // return confirmation/value (ACK) - MT_TYPE_ERROR = 0x80 // type not recofgnised (ACK) - }; - - enum DATA_TYPE { - DT_NONE = 0x00, - DT_HANDSHAKE, - DT_DEFAULT_LAYER, - DT_CURRENT_LAYER, - DT_KEYMAP_OPTIONS, - DT_BACKLIGHT, - DT_RGBLIGHT, - DT_UNICODE, - DT_DEBUG, - DT_AUDIO, - DT_QUANTUM_ACTION, - DT_KEYBOARD_ACTION, - DT_USER_ACTION, - - }; - - - #define MT_GET_DATA(data_type, data, length) send_bytes_sysex(MT_GET_DATA, data_type, data, length) - #define MT_GET_DATA_ACK(data_type, data, length) send_bytes_sysex(MT_GET_DATA_ACK, data_type, data, length) - #define MT_SET_DATA(data_type, data, length) send_bytes_sysex(MT_SET_DATA, data_type, data, length) - #define MT_SET_DATA_ACK(data_type, data, length) send_bytes_sysex(MT_SET_DATA_ACK, data_type, data, length) - #define MT_SEND_DATA(data_type, data, length) send_bytes_sysex(MT_SEND_DATA, data_type, data, length) - #define MT_SEND_DATA_ACK(data_type, data, length) send_bytes_sysex(MT_SEND_DATA_ACK, data_type, data, length) - #define MT_EXE_ACTION(data_type, data, length) send_bytes_sysex(MT_EXE_ACTION, data_type, data, length) - #define MT_EXE_ACTION_ACK(data_type, data, length) send_bytes_sysex(MT_EXE_ACTION_ACK, data_type, data, length) +#ifdef API_ENABLE + #include "api.h" +#endif +#ifdef API_SYSEX_ENABLE + #include "api_sysex.h" #endif // #if LUFA_VERSION_INTEGER < 0x120730 From a849bdc5811b2bb69df8e3b0948c8e81c0dfa9d4 Mon Sep 17 00:00:00 2001 From: dbroqua Date: Sun, 27 Nov 2016 11:44:30 +0100 Subject: [PATCH 146/727] - Merged --- .../keymaps/win10_writers-block/Makefile | 9 --------- .../win10_writers-block/images/base-layer.png | Bin 125979 -> 0 bytes .../win10_writers-block/images/media-layer.png | Bin 102643 -> 0 bytes .../images/rimworld-layer.png | Bin 90359 -> 0 bytes .../images/symbol-layer.png | Bin 101477 -> 0 bytes 5 files changed, 9 deletions(-) delete mode 100644 keyboards/ergodox/keymaps/win10_writers-block/Makefile delete mode 100644 keyboards/ergodox/keymaps/win10_writers-block/images/base-layer.png delete mode 100644 keyboards/ergodox/keymaps/win10_writers-block/images/media-layer.png delete mode 100644 keyboards/ergodox/keymaps/win10_writers-block/images/rimworld-layer.png delete mode 100644 keyboards/ergodox/keymaps/win10_writers-block/images/symbol-layer.png diff --git a/keyboards/ergodox/keymaps/win10_writers-block/Makefile b/keyboards/ergodox/keymaps/win10_writers-block/Makefile deleted file mode 100644 index fbab4b71c4..0000000000 --- a/keyboards/ergodox/keymaps/win10_writers-block/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -# Having a file like this allows you to override Makefile definitions -# for your own particular keymap - -TAP_DANCE_ENABLE=yes - - -ifndef QUANTUM_DIR - include ../../../../Makefile -endif diff --git a/keyboards/ergodox/keymaps/win10_writers-block/images/base-layer.png b/keyboards/ergodox/keymaps/win10_writers-block/images/base-layer.png deleted file mode 100644 index d1cb1987c8782761abfdc869a91ec522020bc301..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125979 zcmeAS@N?(olHy`uVBq!ia0y~yU@>H1U|hk$#=yW3A6>VQfkA=6)5S5QBJRyx_7a)n zGoSyzJK3OljE_dhF>DLLBdh8#Ugx}8gAC^INMx7fJ+cbqAMQ1eM++sk*G*Z=vTAbeN!UubOX*VpU! z^)oYgPTJAf*qFocy?XCGS()Q&A6V!$|Lqmhbl{r6w1fc*buz?Zl8SZ1<4G!Sw?ydV zFI~R8yii8HkSBqMmp8O}?>%=_&s!`9W}N8?jKr!REZ7o|V1EAde^qPi-z@3dZ=a6Q zyMB3+%3T+RW;R|dc7pX}1TcNPGn!yyG zDDb$J!F;kD*Z`~^$_Qobd;G8U_3PKSbv-YItqq&>$`zN_moPNUWiiZw> zB0p>$d2CCBuTI3}D2}8H5;)xJ!5FLIAmA*1*JWx*AR}i3#{q7>cN_nQZL|s$&uwE- zW~h6k{)*=X8?skR7BH;6S#rTM#5Kr)la(V$W1-U1iL1Cg3<|C%JhX3``CCH9e8uTD zu1hgHj?8`__}sC{cY5vuugOSpD-gpNwfW);1=eK~m{<*8WDFAh0yVt#Y)eNN`< zB2VYu+H>b&t$<#kuu4kC=B5yBWc!l>4jh@^8XC7bw)1bdi%SAhiTwyNAn3x!48Z~62S{5uk19`I8bcsVQ#~wTz>F>-eO6E zXvTRzXI@D7w1Z*0@Prxq{P#_CYQ*I-B^7?3T;PHfp$+>)FT9V}ECxn@6kr9!Zbb!6F$Z{hZ`PzynO#%Ek|CVtjdy? z+wxaDLQYUU+6!KrMo;)El|B3JZ{8h8w{A&WywH#9hqi-2vs>#SE)R!-#}=)pgAA;H zCY)%wtmyX6D5otw@qtvW_rqR?S-cN;um7JL$=tPwW#02A_uow6JYM)I|LUaEd>nac z{V#%9cYl9f(EVERVAbM(R&NaRlG0bI8HxJ9{PZH4(K9`}!Qp+qayh5j;bOtHHzV>Z z_b$#h3%#EC_^{fEs$7wzKR0i*FW+by-L+=p*S|*s-kL6AaOCMNX?eH$pr2kx+<|+i z4_`d(EK+hsh0h?}cF%I$7V^`Sm$Ii;PMPgBg?@Cj%+V-H*BTKy= zvKR&}Rll0U&MeXEe&)v;S8cZFuX`8Hsou?9T5dTpwnXq{qmH549)X!xTNONh{CF%E zv&W*R^fgz(hXnIw{@W9;uBu5%SyAysh2=;==j#gxN*^1)V`1B&Xxi>~C-wZ)ECc^F zQybZk$`X#X49pU|cT6jJ4OTohJ#gfE{StxZ$b>x~-LyAt_Kn!4BOV#4_O;zxqT`{^ zwS^Bo%DmQYyy@=DB>9TpcJB2Cg|>6n0m4`JR~_hiynBsA&Smoh65^ZR`KgQDE0$_) zJ)?eX$zv5^1-IH-@wzXIg@63{+_+I$<&2Bqr|ysH_K^zBJd-_DeVrV7K3_7aITd^5 z>!Z|12hzD`{(Ka(o2*%7IPKY!<+-O6U?XLM3%@!q?g z*W&Ju~;pY`#)!$<`>Ld~f|j-HHo`cz}>$3zlNGLqw%06-Sk=PXPrCq)Jr#fJzriUr(jf)rgf7WI^y;ZuAt>epI zds$^c$DZ2XRu?ZAG|kS}bFBQydp}{-w_=VC!#8yt`Tw7YZJBq1C&G2_x{dk2ekV@R z|5k3dKFdDfVO4O0LfgG6pX{%x*TmW7Jl(Ie{$DJ7GtwcAEg|5fgyNhqKk*B<`74;t zES~-Ua^{t_)l6xhL+|IP$*L!&YtOHKr*&favax+$l#ieK1#5wd-n|dmm1pcb#@y`LzmQ?e zif>ca2s`#@-h9htHtS%wvj5Es)mO_upLkK=D3@^Ygtbz{qkUPR!(*IV$Sz%G_531QtKMQ@-JUr|yfLkFre{ zeK-BKD*vWo_GD=_X-A%=^WJLC;CJlNyz#Qj%u?cr!R*FAG7W#{%~A1e(WrD+PV!j% z(4+Dk!@Oh*%bm~tW~d(Ps1d%Vzu-W;z?Q}siWbe-EcHvr(W|5QN^mgn_4;ZA3T-67M`_CFWtP&=5XC{ zuQ1Qk2HtZjWs?j}82-w-a-F;AkA(k*$2Kc(>6soEnd-|mf$5aygjK~MtF~xM9O2l) zHsRR0+eKOK?oWEz7x{y9gw6mG4vX?H5bhv6nCAm1WyuU;W1+&*N^`GOsu@ zum9`i{XIvQZdW=T#NgK^dD8QvQ_uAHeQdMOHnegVe>f(s8?o0a{$KuL!^&Ka6(Ms3 zl6T}wRM+ojmw$VQ`}qXs?6Nh7&+_NHC#DKsiMi0yETQw{m4SJW-j@aQr4#0vm^{6& zd}qZrPcsp(pC=sod<}RS?h4Ot#U)^ z%I}Z(Sq;-VrdphiJ;M4=XikCJXTyL!I?tAr?A*e#GpO&)l`ksgQqO~z#GYQFdSY^s z$n_p06;=<%QV~!nY<l4E6 z87+}C4h-JF7Ma;Qbm+sltXIkj=aM&&~tGInMYzW1Gd zWHslp-om-BFU0O{JAO+vLvNSo9Uc8;niH9pH0%@oaG=??#`ac;g?sC)YV*$51##)c z`8&RIN@sR2WzBFhu2Q%BHfImpj*>S@ZNJ+MFBmpFT9s7EJ7LXMa^%@|?%$TLxo7n6HElXGYss30htI~b7#`Aesqc4YY?3JK zaNoYkH+8}bmC3Tzb=Q9JwcXu2W9D|BHu2V%#v4|oSWEr#Pq=?IePi9P=>fAMdz*Xp zlM+v!oiTGa51ZY`bB3HrENv2RJUm~wioN-LH?HQ>HN%kgs}8=szgt*ztLTH?SFMJ; z+d5WG&bruTc9Z|ulaL%;m$tyapZ6S8m2uPxLn?^NrXB5>rwoeb}# zT!KeDmfj0ltUJ+xr>rIA{nYykw}V(FEArm`mZqb%SF&~6%NHBXPX{E&eN4Nl^my{L z>xSzqxV1LDdeWiV>BnNoi5CdE7JJZi`_dV;F0t7F});nlgoMk+gC>>7(BYZ z?&QUk5b1yr15F36BTF4NWQhNoSed{KsEtZ`t@u24ZR2IWWRXmS& zM=E;rv>UY8POopCb;xwnc}v|NM-@5*?_XH3+gVG1`A9-`j^(6&wmAK1(LJxJlxlz+uxzlWLPf&dgGDjvhMPHunG(d{}@eZ8-GU3BU>$!*NW zDX}1N|MA1eHf`GwQ1og4$30rX(HqKGn3gjZ!9`t!S ziAi&TLx`gF%|EY26+3w*Wn1Tz8*~U3yt^8)yXow17DJO?2Q*m>XI%cXH+9m37+l^$iov)t_=Ibv)!Zypc9fRxxwug{Gc6 zJ~x$r9$hRxA$(T*((Ss=VTolyztjR0KRWfi%Z{!18vn23Sa9!+U%j(8e0mq^ao+Fv z^WT0+OX^vQuU}V;ZvCdoXn0P}s{8!+c}G_54o|$b=TxA=;v%Jvg+=TEAD1{ZiFU9h zm6(@5zI*)MvFE$}6Q1r}z47V7+!NX-gIQ(Tnb%%);90x1Tj5xXW4-~CnDhbldz;Lk zx%(=1T(qoVoxgRj`7`0gQSx?%XD+?iXXN_L<@)~j{&!xNN-*lboqqV;bn#sZslGS# z+v^u7wM)d<^FOYW{-M?+{;+g!A?s^_#Kp{yO89pq=7k(~`^*30V_E4A7nw>mlOqXP zb6&1FzI5K=h=?jC777C0=Q zw4uJx`i{k)_U2Db#Vg7=Uhmr>cY9x@F_(7tfse0zk9~CDVN2)RSHj>nnUQsBt3~+- z9+G@T*C3(^t<;!FvRnzg}+?e|@oTsqAO7v+ieKMO~e{!H}0T zNu^pPuyTn*k!XiVQU$C2x4&ijIXBI2dOrClZg*(T)T>1|^16NZKCb(?CwRuCs2p*} zo|T-2ep~kQFHh$v<~Bdo_i5_{Ct3BGdp#Py3TJ!0?R>KL-h~@+{copp#<|$=sK1+@ z$n)gYJ^j@u6x#~t^R{hHJ0P3Dy!hTcwWPvHMTr7uk8&{{QnTinADv*a+?m&T%j&gP zdJnIUaEeMYcr>k26>)?X@8e$~pei_5IlS=6t@noOGmKXiO+PfF#o{`s zi0S$GyfrdmhK|~lbDF`W3s)WqHx{#+W~rq+FS4g=r>Mn-?EQOg%D<6nc<^yiUhUkh zFtv|PJ=eO|8cj+3=f!6A%dq^gjfii!{Shh0o+W!KR|o_-n6fIhO62^z`}6`1R}fjGZZBY3pY&7e^K8=rebU=pVU|w3{Qz$F}3)2cDC!)1TSQ|2f6GE%}d! z+S~wv#cn1_YfmoOUz@t>-B+cT0ZZ3$E_-Ogc*xCq2~)m`swF(~QeN!|-`S!*0nBeLq$|jD0o9ci9e4{xxzYJXhD9i`0|3k?c|) zT+wkbq>#(m;_626`m9RXoJ()Z%NE#dW;=cA{gGRz*i*cFQ(ROf-zzpr1hXe?nD%Yk zmj`F#_w{KXU!QP${(Y9fDG3{+3@+Fz$RF339o%QVuYUQPD^o20`Gj?`C-HpeeSBbD zl_ig!HQ(o#yXT)c-uNs(Zb4Ulf9EX0BOcc{78QZot{oyt8!TU5F8`+zeZX)>)$i}` z5B0PzKK}iNpsU}~^$8!HcyzaQD;&GhEb+?b??Z3iZO7vNyNW-v=r#EI`8a&YHz zVKR)kvP8Mwrf1^5#51?IFsR%8;o;f0?0L!whi1#3bK#mLHb}w8Zk`o6a5c`%?bpbQsS` zlVY`wg%_W9tOAW#D~fioBw4u6*)%z$>`w2`*B`4`_I&KV{^94n^M%L1zdy9;_OyeO z)}3=QnpfTxcH32;S)na#+1eF~ZGPXTI)1NmRA75M{jYn90WW9LiXUH&aT|V{d$;}W z^77>4U9u4dxs7UvRE#V+lX`fyY+GI@g{pQamPZ&^9Cli3)L~eEnJHrP8jC;e&MV?# zwddbVi)VShE_s^7No#d?0q3Khv%Az-JsM|#TxgK7r#{@4?bh#&Pqw9gx^rsLWSQEp z9M|l32)^F8g)#DHq~UeNdD4#?C8Bc09eJ80KH3O--SZYm4)JZ0U@@FhvrcH5xMNRX z=Gim_`}8l{rwPldOTL}EGNscntM#MdC8M=7_SW!Sx^(%&^6h;O-^TCNwEn*5Z*}>i zHM?|HGE7uxo0iVGN?Ox_izQe=sN>+fQaRDN^b&><(iZie~~-p~WNV~bI;;E@YrM-s06J0odxUiE(C-zSEi z(3uCe-H!@vE(w9fvC=2@qXJIm~9-!m1Q4Vx4WzMlF-;4mAr`u`R4IFba81k?(! zeNWuv71b8`$Y;jFJdOxn50_8{){?ahjy!KmM-1@;1)k$ z`n+AWsCBuSg7M{+_ciHed3(2t+`Or^KN95X3kOoXr%6b?U|GeaIl+OIBS|ITj>KlQ z4ndiu8*iEF{{POd_;gbHLFEJee@SBRb}Z)Exl?Oity)Ln-osxWSv&dn+0HaPc=`9d zV~gM0cV+Lr?$$r~gUz%v5l!;%e;9_Hjbojx__JEf*ReKnTfRL%l7!#wTrP8Z z`tyS+LG5{`Y#l&(ifx%+6EP3UIGevN;qfu0oErfg ztFM~tr1gAqua^cT`iuRuX1rVQSVcHxw#S(nn+4KV9a^J%#mKjFrMu`p&A5)h`gL;E z=ieNyJ^lXhpRS*trFs%xTwQ)f%ltZCsGQMyJkeb*;b>P)&aDuR*}kr)l|d;>WZvzh zlYI(qI;$?)E@`L}QRrB>cb`&+phS{|Ox&MW;o^Z&v)XRwX*Zfi0jSe9LMMA zWT*%p;ovp2krQm^FMs^?di2I*_tu=wM3YIXZI=$4i_YC(*sEdHc}cnTlQOGEV~U1@ zfU=~PdpMh8&jW$S7v1$2EjrZo_O|y^WflE>H#(N7Sj%Bt85XUT-QL8Y=1eZso>Dpwthj?b*!J+A8*S*JMzU@YU`9*GVreI@zomS2=L01TZ#9aEh28Tf+&q zI-Z@~c9U`0v;8?AAIaR5TD;>%mwwGcrl(K$2|6TAvHx`&WN$~^l^6f`nk1y&I5kNu zo||OG{8Q)8Ir22s^?yIt2$()ogkr#Kja<)c<=AT8D=4+s%dxGy7=FZ4exBO8n=yL&^J+dBb#>`{`Y7~F z*?H;`fg=-C1mip>%r@9{EbZ9=tuhG)u8me!i@pezs?K~oU%}1jYTpK(CW%HxxBkCU zW$~3#^6}NK^J2`;{;;}s{)f?~%UuUoTAVz_Y-l6LdET~Ml#O{qZnU9`;3m~$dn#}4 zc&)e9x$Gw6!MEb&d*EZzg0eZmXC53~{=TkhGrM2%-)8B+oe8^EolE0P5;)RPptbC@ z2V;-|CzrqxkERoWVhdT0e6X;!_;gBf&*vMr3wkXIFPm>qe#`uNV(f&qxAs}YbsSVW z`S#Y;mW7Ip=J#WI?!}qUtKTPBemAslYc_X++3FIu2*wUY$0Ik-{jGR>=lsRz8AqSZ z*YBTs$D z!;e-Q-@ht8v2oghbp^_9cm7u7&rV8!tp#{}NIxKa2WPj}cIC4xE?FKCm{Rffu=s|A z*Xt8~_sdLrRbIY3Wx~O@79GQSi8GENfq_yXUr(=^pz0Q$tX}r_hiio`)4QLqe{&=q zvCwbX-78bw7TodAk81)`R7itD+qWuL&W^&5FIa2-oJ!Q$pRH>2*?8k`bNPgazTJV_ z6XniizKYN}!fhDg-z%^F^KHI#K+K%B{~zSj5?^0SN=aEE>3fcmLvMe--O?|i3uTV;0Z+xPxF8XXY6g)^<$>v&4Y zh9d>sc{Y3BXWIPww>aZvHs_Cme_tBsKU)2IUsq0a*%^L)$DSEWch@O9_WUpnv0(>| zQY3FWA$PHrU(dGFB-v`()VrN;wkRF_t$2y&@x~(^TX;g(1v4aV&^P@0e;@z#bFs}2 zK0R2LpR3+6altv2j)@A1n$bZGA|5N4SPX@<@_lA%GaB;k+amvV`mK%cyrn0EPH46N zGk>~a?LQu!-L;mNim!A&TF7#w!}Eg6{Ur^m$I^4(FQ|OL6Bc@>|Ie4q8|6D_go;eKOOM z1~pKL-I@1cWs8u&;)f~BcDHtld*?+qtvQr)#s0sb*!?{$#n-PMoMQIvr~OG^^^QX4 z4=1Ndu+NTbi7q&Cp()ZU?O=!kM(beImuk;(x}@kZm{Hhl`)( z7pD2@zF}6j2(FjPE?=YEF>!&NI`&Yu(c`zP{O$kaul+uj;|pZV|2)uJQ=M={t2y}P znj9YiXa4MM3a?GC{hTPHp2%nWTDr_hz&0YR?06}7h~u@^{+2~Ot7aUVC}b{pM4>}4 zM@H~Sz$4CJ3;rgFgNkj@C68`w4KK`nz;i9EPEhn_X|kY~$h#JeP2IPInxE!+viGR1 zc>P7mMcGyVfehn~_nw+U$LF1q{<&~EzrpuwE28cBeV0oYX1(`Z^Yf6^nTQb8YRzzM z&4)KGYgeT9zfQ25Z*gofPtg-m)5$^t&6bH@tM*=3KAB-Ti^o+xuy{-0%_R**TrOOO zHP7yDd~{RhsPxs|D$)1WuHA3D#FI93q`3d9kdO_(wei)xs~+c19;o);)4b`Gkcw6$f z3~z*Uq;(#Y-pX!tgFA5B0RiUy0?HkJk0gp7Or8Ii@vHUs#1-Wp_e3_&U%FlIDD(dh zsXnvgS4Oo=st}*^jnTU9|Ni(xjj_KCFWL7jk~~`RVSlZpcU~k{_gSH%e;1u{R`c+sXvr-n4*U~; zeX({e_iMQb{r%=wJq#n0Hgsi`o)t^mdu)|lrz+d-cNMp*H~II7ihftRAJ$kKUdO!o zV%yQB+b8+=u<(R6Nqp?~5>T$=6+Pdm&}M&Rg2Kay)7csFyE>MpmM_w%ZL4W%dEUE8 zwQZf#8ZEn|NwX7Grb$fBF3Gz8++yc%7cUw0m;0{u+MciJIJ#Zu;F{FUp8-Um%~@-8~YLJ72l}SL~R0=lN_eW!6b+L4Gcp`|H-P z4+r<}ZQuF&*`ln%!>af%Tp^h zPIA@OJmK}tVDjm1$)puQ(WzX$B1v2LV~_1yeg4Enj~V_wzgAmsT#zFDOe}9k&_&NF zfwnbzEQW`&Mc#2WNjww@dib8j@Q>oL4ZFqH&;6Tz^P&LvdaHTwR{ZO~VfS2r;^eSJ zPX4`Ol9N^2vbOf_e-NQ??B%b^p9&{k{k}HvDwlI7Yx?DtZZfrhlYhPra=p9dwY%pP ztH;*&7Jqc=Y1Wr-ICx-jS*)y4(WQfi#<|VA(r!Hzo14-p`2Vwy^N$!KW(nts+m)oB%-pyL8E)^#Wy;g>n%F?=T-Utdw=!&`h(Z<@3b^!vi|zi zx$xP8papL{6x%c^3zuz{%b)w7_19e48&;psZ`@VHZglo1*A=C2Iw#bRttfkP<8nQZ z;E|5MJH2kq1$ox((2+2O{(Sd~UzB{eb=M@h znCQGv3Uc_&<-%=fC2h6we{27S7t35%L>YOPX78xDulZPZ$(f6kBTDZ}r94|HerQJD~V44xFPpJ=@3 zMi|R#Mcr36lPjIu7c(E0vz{@3YUj$RS*?8Qw4bEa7unuCRQ#WN@wrpi>~}btrl&3x zyCmqyvt40+__;IZk34$o{q#P2+@1b?-{RKntJmey=AL}h)h<==NPusZ)(jDkE~bkP zJii}s+^hZ*dnV3K+BEywp`6hA!)sWMT!`A8)F@FE!Mw%V%0TGB-}5@ZSE+Ir@ti++ zBG&KJ4*xJk-sk)J|N7^+oEN>nRgzmMe8FR+;T`F>e)`AtPN=*6@o#vhW4I?-QMS_W z@8%mHPfJJhc{%YoiagrsNS3V=`Q7y>u;QWqoZIf`{3&OI)|Tg^cLhZ ze5m;If6uRnbvk!`o!_u@{-F$=b0Ho!>#F1r)mdCT{Pm})#`#IzI>l-{bE*_WoL9aP znDe6S+X3BOfAzXWl1?lPz4_B+9(%LI8Kc8?8PjzQZ%h>08f0_ab4Ke)_y7C+?UwJU z_??s@nzHcU&nliW{)DrCvjZIjoY&?pE%I!f60RWCaj|S==(ZyX7Z)r$8?1lo>Jh&{ zrlgFuu^SzDmUT|M&am*_f1ac>V%`(8Yk1V&`DCrVdG4RU@A(m(_g1^@-|2EbJEuuP z^M4k{Z3kaR9yWux-o}-&M#o6PFimjXmMJ&l!UX>48XSAQ<5i;dt8IH)&wSZ_u=sA&s;ZvS zhY!TAFY>(A;GDt3Vff_VBOZf~YFA~-S+iwk$J`r9V+T73D$sB>o<$IaH8n^N80{<6B+xYG2p z)Z-bQ|IIdmD$7%iA{RC>U3BO%{_Vf`=NnUFu4e7GF|CtJbsq+p*-jshMLBN4q0e{4&js zgC%k$JdgO@|2L!>Pg}Td5uaPLy`|5?e-mbl=^sg$z2#eDna#G}hB6k_4EOgw-Mypq z;o4oT5>;>W*$mTirQE`fNgI5YZ=7B$^x~pY^F?Joxk5deN7FC%naDisV+AQ(@1ek! zeLLX0!Z(}k(qGTNZ&tPCHLuUMp0;^Hq1Lb7gs)xVNe0}Li`&mVx_kV-W4d#DjZNC& zX6cEsQx5Nn-|8aZZ2EF#LXd(cmkYBY-~W#SG0J{A`zkq$yox3V?JsE6NbFp=wd^Rf z;h~pHkM8ex=HXUZB6-heqUr4#izDn8>*}ofY*M+o47c2npLnHH!A(VL={M6^%@Qkh z%Tv~NizgX0eEiYgzgTHK)AQTsl3(vxdn01^LiIu5eU(&#MMA^YR%@BN1^ty+2`U~{8_ z+oa!BB1t%Vc6n+uioXiK=Lx~-{0BF z-bgma%-Y-H*fZ;_`h>Y3ttED3&sv*qB3fJ_@3PrMzJ2HB7Z0lz?+pEXJo!h&tbg#-d!MzYw}0kZ{7DIX<=CUY!{GMR8!uGeG;eqy`h@?m&P*OPiHcO2 z>#sSJGQQq*5^!#|HNL8F>;RMcx4qd;$3;`s*w&W3Y?JRvxc95xan@5~hQ-1Q;)71I zXs>Z|oD=UABzEgaeu940#hF6qyz(^+{a3ki-@0&~_s5CDXP$bkaor$wwKz|5+kS>E zmR1S;0#O#r2FCPEe zYQIBi%|o|B-eumGC*=MS^|@16yY^<&n(GmlRW+q^b?pz_tB>tk_j%>h>$aHwF9FJedBHH|av*q`hVZb33JT z3i~yBQw**uw52!8zTcnbc3N_=-QPI2Bw?Ekf8R?RroY^O=tS&?{f9Ex&V;=^*7p^( zELmdld0}Y-oj;=Y9=2UPQ=0Xpvva?cjD^m$XNx({GRjU%n`Ja1`{cyM>oN>^ceP)5 z{%-ntZ9l(*3T(Um&c9XaSa@`zN2wC)qHu*N^Hpun2Od;tyY~EEzKzH7sWb(=LbYNXiK9o&BZ zCTr%)hHJ|2E!r6mJ~mH#d#}B~aaNoEPHu?@5l2L8)weaQoSYS)BKkn3+$!aY=(9Z? zfBn5XEhCfub5C<}?D<&z1vGpfCDj@t9;8sls#GYp_PC{%$dL=L?nu9@J@jgCR1{xx z$^p%HYu;UFc>Mlfu9eg)<&c7%=E0(hN*ss&?{<7)G-03-A_B3IEYU#BbpQlw% zs6FH*p!{uR`1kTlg+jb#3zGy6TecjxtKjKQ*E#lU*4GU)b60IMyOWUp=SqvP{!59J z0tRc@pyF=f&+m#9S3gjKF2*i>4qA*YVI8jCCB)*$^xM`@l1HY;E$&?K)F+#mn`Yls z{w0$Cy-qf-&{k?kp3HN*>tB`HbQ5l<&DTwMqxousiBQMFQ$M;k2Q*0(a(Qf@%p?`4 zAk?vN;wrb$UJnJg5Xr13Nog`gmA=-hrLP%@2M`=l;7iUF)NHy|H*`=u5*8kH+Xj z4m^UH0*Z@fzjl@XrEuWCMl;h^j|efzAgiu`4wEH~?DID*Oy*2d$>9h*wuC`*K?4(u zp@@KCXJn5vk8;nhSZ1HP|HeO?oO&3tw>>`oyWsoXr!y>#l{-(hYn*z@z%u>5`|?f! zXOXp=?sE@^v`9GhO7qU2QSirAo9*@_`DN;_{J07a z-?<&TV)yCJH;cMG_)|IsAGGeME@v-$Goy`_dsD4L+oZ2uR_g@>4y&#^9J)?=exbU- zipv`|KCU`5b(Nw29B%gK9w#qsWHDSM_p^jq(}7DRuu*RvyZesCiv6EdH(GUxPCYeE z!uY7702SySfoJPb{WTQzlS9Jt4ZrLoYi{r$mw*wP;W;aL$^Kghoe6%NDa~m3iB^JcIAY0 z!jqm^#SNMVwB6rJ^nbUFyk7c9E9TL<1r2k=Zci2bb>zoOfAI&aF1YIZvWz$5~Zy&yDTDs4Dc5Z3R?rEOg z1&q^~+9Ixgk~(1b?O!>2C3Ho)U~R>v$^JdxrsXG}*WbSI^Pd0Llg_T+IM?Al!voF@ z$L{?|RZr`kkuWP|1P$^_VqqmM?BIFe~k&#=ver?Y-{MQf))2V z=4J1bj(2P4{>0E7d3){acdT#t>g&C-_t!FVZ~G?|cKhiD0cU?ZL#ZRb1Nh}^KbVRq zT@zQ`rnE$IOYORqcQ1Adp6|HdRyTEv%$b|w-8(Lw{`#`&u)P$=w8KW3hR-^TFP`Up zpz*!4=9x{1MOdzV=Hh8~kKfMHJ=el2HD6|np2pRFkqaG6b7R82&ISIBvF|IIzwC;& zs{5%!%kOa7%d1sIFt=3wzkZ-w=HJgL%@RmM+n+_N;*;0!yWT3*FF4IHx6Y)yG>ezj zFzIaZs=Mx>CXn4#g|?eKPo6WpF~42WIVs#s_W7|hr8hP*bpDl2|M1hi%yf5KZrP-X zRlgertq(Zm`9hbb2QwoUo=;4j;KCVqQ2W1}zs&hY^ADf;qgI~2*{gVd!~KnuK2Dgc ze1}7?VEV-arUyBfM_ujN8DsXYd#TeEud5o9z1IEidGYwy)Ai}R32%#z&e=c9eA)tz ztsioy&-%J>lP6=4gC*;)9gHzk^cD&B7I^)dU43)XVu_>pzlEUX>&r!sY=~&E*>-GR%A3>IZoO$= zyZdHU)7p(U`=c~(NX=Ggi?Utxw}>+-V?+Nkqa!b*G7r2v{lCq1>GmYQe_j%m#(ie{ z+mx@z9b2}_-Z}Q6+6*2s(2%q3x3o1Yc1W{sJGJD?A|V0g3I06K_z!2K6rPyOoc!kq zSJ51m8LG#gu%202JOA-^`x>#c&)1#g7MrG(wd~=x_xBn_%hx(o^;s=EdB~AR%q*`% z+DUxZ#nWF;FH8=7)hKaHUp;!Vh$rg_*L6Gw$6lWkn|$}~-Hhz~!yU;ilSItw%6Oit zzZ2`e+4Sg8l8C72!5p*I-(ytPbxtwXG}tOCz#`#4x9Q?^KMMJi$L>QM!$Df z4dkbNx!5mv(u>6~PeYa?X-A8oOn$xi?{$B~e3_RAPK@o=4Xy9{c{F-r-Z{@(#}9Ts zZd7pFG_UW9X1hWg+wUTgq#xC5t|o*oUKO@r8s0>jQG?$Ox+jT?oOZYwr;D)=Wg@EX{S0@$!(02(Lb_c{rf}xbtO#c=XidF zB>w)E^ylvVv(m-iRvt2oV(c(1WIUX3=IZ0{j~CC`MwGtK3R%Cd^`gj)nb~V<1y9y4 z6f?Yh)N9UTy$4M7k<-H@gm1^|O--7)g{3lx?@pe%-QO?4F}q4Q^`_gcH8^%VEG(>T zs&=@Ny}kXUcgwOt1u;8UfwS`lyH6Zv^7k<2UHBfmqWRVDkidw&Qs4gnihsCvW#fU$ zrz^r&e)0S0G~<#$^V*w!^WGenEuXS*m6viLXAGZ1!O!{GYyxjAPNsA`{ARV`_o>Sg zWnUA%ZjseEy~geNhtNI6FT+=yitQ48TCRL}&h#(GCn~sIQoUZ=c*+^N7^_sJ{_>*V z_aw3#%2#sNEEbIEuS$#Uys&BQsaEIezqLs|c78=WUZ&nWlACza?5Fmp<7d~O5R+_r zad6V5=tSe^4-R|#FWQyB3tBPS>CgADUpz_0DcJQ>h(ywc^#+G)ohyD%G&ihvHGP&l zi@#gfveqQ9KS1Cx>-L%{NBS5NOO7pCud!%t)6AAng@LNR$Atut=n%R^|5{clN~`aj794GWo$_peyoB(bG( zTTbKS_5Y>R({~omvR^*C+{@ zhilsO`>m_)9DT6!;@?|8_8WH?I{*9ry8Vx5}&)w59e%nnDU!F zBBDt6lu`D&-zPg9->%40>@d^{U+`E(-R=jE_WQ`*Q$H`Ke*WL>uK(bIJYUjX=GTFn zSFy42MkX2bzwX`9mbdQu`u~-E?N<|8k0!9KzxHvS!{Q(&n@J426Q&g)-rmN`leVI8oz*JNCOy!Sr3qXgYHL0I zpZ_m;Ecy7K^~s6HjCC5$^7P1hU+I~nr*H6t;ZEGMuG9Ko|Gxfzv^u(Si{$RFAN@KX z)E<)B6cN>+W^($Rm-;e??1m5HYlTFTYR)#!N;KA4`6Y4s+ppVh9h~pGac`WFycFMuJC-~fPaWQK zu-$v2BhR$%kIK?K>1P|XYt}vVnwwQGu5Bw|W|d%(>Z!>ax%-xvjl~~#?ke@xh`Bt5 zH(a9bZxAl#HeYc2UWbV@+p_0+M~+{QbBqkzx~DU_0JO29=#tkYGZ&5|mUfBjwMhjs zGyL0LO*P%|_;-2I!ELS^(tcE(@(XKc-F##Pc+J1%q~nk^|Ax++>m=?hVxQZmXR-I+ zxew1uuRXZc==P=bx1L3$G&dL5gn9GU-7KrLk-ORNzChXF^|iH!*FYanZ_Ib_Wx%*{POZY-MRC)pWN8OZg4F7l}N*~xP&A2IpwGA{|Qv*pLYzu zwPD>oO_Y5BDjf?SHLnslQovnybCc!qsH(k&e2EIG@oxj$hC-nZN#cXa% zOlJk9#aGs@|Niqv+W$wmy_=*m&2C-nWIXph_9eTaomJ~( zc{%ygHeP_6IN%R5lX)GHH~j) z)rWIO-JfhVEnal~&v{j2*63v84#VtDhS%zui+`UIxhcH#N}T>o=G2<_ofjE51~Kp? z_D|Yy%azaY$+ixL`ine=J-L7Q9e%N3u}A=;rgM|Uan|=q;!DHqCVlcEDB#o@X;-zIpvSeSKo=l;+UyYaRVITK(f$)G8q?o_5B+S)*f9=*g7NiT5m|tip8f z3mv>A%9CVJad1wu7ANBjJs;(=BhH$#RaI3f9g5j@ih@TLh^uQ(km6!#mEeiy5B)p%T zp}MP?dL{S!KfiQAAqq{qH+b)9-YL;hSO}*#;!SnR&h`>VrWzTi4^!W2gCgl_zo}%`$Dt_jw>b)uF z&TMMCn*95z&;3dZAKOJO5^)XtQ`#PGnW^BWkvemt>n@hUZPGegojiue;;-3BNi`mD zKQ`I2PDx+eVfQXQH$Fp&0~Qy4FzFoQS+n+!(x){~6OQ}bIP&`2t&OW5)rl zczt4;{P)gR`S%Cc)>ldwc@-(w%Zcm>%I!GVSNG=re);tC^H@KJ8>XL=k>L4geMhNd z;RA(*YdjcvwFGpJ+_-wNfBUYs4+WKS*Ph%+2)gYbC?l|V`&#k*e~(IU-uyc0t#`s% zDciK06`L5_>*^U!zmI90>79N!p{HK2ciHQy4HC?AnJXSYU%#lp&2ZZNjZE8gr2F<( zimVl%weekJ?}`;`J**Zeg4P;V?D2cE_m|GExo;yP>-fElo-N2;!YCh8$F%u#cv9re z*rFL%Qwv4r!t*WdS@>)wB5Y1nVGFaBEO?n#y&$G%T3zVqSS{4Mc(@%<+h z*{+{IyyHIGzRuD%u@99$u4O*tVl$Xw&r`U|-Of)b`$h)Ko?q7r_QcBS87_LPvPM5* z#Z`WN`_4&cEH_0;Tbmu~o4Mh_s<2=-vFZ2Pbi5sdcK0f{C3F<-`e)+z*0%HN_q7MN z{9Mc@!P?*OYi_lnQNr<8zppRau*qO$?NP37_9UM*ISS`rd*+{MVY=ETv3KuYi;@=t zuU@?}sQp#q%D|Q_=g4E~E;`khOC^qRsbZUgXTmip9YbX{<>M#YisRB$*$xsu2~Jla{2bU!Rz?;=9W4=q1NJZ)}~*D|_Sfo4lGouM#U_nsOR9 z{?*SrxMk;5gBg>!)10}DlqY|JwNmH7uGL$-3}c3vq@$DK0*6hE*bU2RKp2{ zi~ica+4)Il)-U_%y0f>Rt%@jnk!hUj8Y8Q!&%dy&-UxG#0_P>!WY6G z9eWsl$ogAP%#kN?o&w1s?@vBYoP3*m;&eBGepSn(fhk=Q=xyN*seQF z{~i`uho#*7Fm;kl$u8DEyLPh6f8|ehtdgn=h-^rmX}0H*X@h+kpThZ!1ETHH_jS%6 zp353}!oc8&;j~8$5<2YL@3wxQS0SD`GwkN4N4H+8nas^QvdKDZK}uR@lKbaHlG0ug zNiM;0o7Sm%_egvB+xbmeW7n~5PJqB-H>u(`Go7lH5*N#|J-hLF&dhJ87qWSG)T&+% z&TA)_TwiyaYS@D|}y9Zc}wjPgnoUTSG!`R2&`TfaU` zofLCsWJxd>H8XIC$InQ8Z5pqW>WY1sZSK{r?42``SA0d znEH`~*h^(QdEeWA)YEzvw&1Ii_OyGuc&@I_4zVmc`N~-!`B1Y_tB#?Gg{{I3sp_-W zWmiZV9hOlzvTELUm#Vw3Rg2%W+zyZ9-zYUt)1_=q%WJa(Ul#JlwCf*9xNyiQS0o{T zNky>0ocW$$z3CqB*iVK+d6$@1v-3J{U0pnloBf-_#k)_kSD9NLSrvAi-I1qBB3L%b zVEOFyb8{Ts-Py%-qg32&1GOfqwgq_w*)3@>6Aj=>+Hh^BE9dk#dNL9l9)*o}g`7V=Uy9kX%eG?APIl|Aq7An8!pGU(R_xo$ zAFq4Tb$9duYun}@X_<0n&(aPEojAFSNuc>>_^%&Zl`Fn)+@9L7@#pL4386FAMzsrq z*4N&8Fgv7RgXy)+oTNf~*6cE4$OAZN>AqiEXkeW9F9)dTNaFDyJOp3FXB7j{{w z+48eZ|6fkwJhgbmk`E|gH@}R@05OT|5FaM_rg+pb)t#3dB2;r5NLfwN7)&b zSHBVjk`MpYJ5wf|DD~lP_^Vp~BXfd3>ADrvZi(kJU)J@6PEw=(JsHDo2vWQkAF9Tp7WPOBL8YXMdc$T2{kA^5fY} zHaE{7{eEuy1Mg&k!>V3CUS8$n;fniGwdcp_E~cEbrzfm6t-E}yo4vbugRVYvS|4+C zo#FF&`lVkUzb%*;Fr`UC_wJ7mE5C2d_$_oM&XC1eW!S_?s70?^O_R*8ZKkZGDQ=s@j%WUsFN*Ni=MW-6qZ# z5?FlyUjO#~{k`IRdmA?ErUyocb?4{)6Wey~c2~}9E43~b!((iXa_7P~tr7w)@jJTb z>eZ{N*5BsX*V}1nX^B)H6g<+gNccrikV8Ay5hlZXFQkr`pZc^xtJ>s<*5-K$eKz&i zZfO2bn(K zB_q)^dSl74pqldEV?ISlzQ^buf8EsfsC0mqpl7FXlp`BvK!lgG$ z*XVt8>QOu{Aou%&A;+SI-{E)qBadz_SoV~s?(e_#8@E;IzKbg}FS=Yj`Cd_z1dHJ$ zyBAC%D?&;pIVh%F&6z*zxM##}O{>mXd;L=YFm5 zP80gJ_x4Tpd68;cQxT+bWR+O@#1;LMeKs9Q5J>+1^6rg|N$g@i(F)OtGCNCHs{P&{ zv_1XaF}8B9mY5`q;UoE67Q;u^13t<;YL#f$lVPgPcpq8D|7_a%z5fa}wST)S{Ql9s zr{7QUZ&EyIxE@qp1pGLAoL)Es<6$|&u$LpS**gq+vlC?%slf^J8GknoI#STXS<-la^TQyVL zB;H6I*?KR#qU!zS9jOm>BkYPTeb|DxT*8db=_Pf|JeXk;~b=Ui4jVqu0 zb>FZhOVjLHPRrRzcXn)JG2}?n__yK61VzW5BMvzC=q_QO@#AsBV$;&cD#AyU=Svj!Ecub|d!%sEk8II;J{Civ z<%+KAo$K8STypYv_MJMJc99t0)#ktYzqNf^9 z+}aW^k@LZa^n1mVdMw;O{CIc#;TMb4{SrD}CynK8o4a$xKfYaiAGDNX;>>9?Ka~0C zHGs@t!oQ1w6;zHbY%TOCRbcgK3}od<%E(s{09CM413f|Ex?!WoanCKErueOJ-y_hR zYWhazSoHk8t?94kJ7(u=o1MGcG1JvJHM_@p+Py~8&DT$CoHThRsN(T>R>2)625Lk^ zNwkNsgHB}YSa{VCyaOrhSlS+e#s6Y#zsmZ;ES_bRL z*&(OzUK*!oxhjTe!{_P@rP&C-Q2EXJ7;~0DQKq!Z_m#V z$$XdQ3i($D7qctdy}i_&UKExH3NewYFPhRp4I%*!jGK-GIJmTKRscomLq*ZzvX4$Z zGr0Xe^s*Q}5}yH@$km$Xyhx$#k!Y`x^QI#b!aWLZQGpMzWu6<-&Pk=*-n96A0PA~&j)euzS;tmplE_phDkmI$2_=g+rCKIWHb zjR-A|34FQ4VUegp$Ha`*#pmaPV(o>yZ_+!3j)l4%6KBNr>4rB+Y9=eg%hx@L`ZB z4=<0)rXv>|)B{948dV^>kGr}0U4=#Fok4vhwwQq99uG=e$mK>N84%!6L#^Bh)S-Ys+G#YeF<<#e{$Hos(n!>{+pDR(T~o1VSL zt%`T!Dpl8$>TT1ilGo_57%pQtlJKD^GUJUv2`P9i{=U)s=2y19$^WA_Ub(~n1If9Kpyk6y*{3#13LOau@L}Do1j+$Z zL^U0_RD2sf6prl_6yI0AkJX+1P0`-8sIx!b8+UIs)n^WyH~k^Y`N9ugLJ}V)ED225 zxWAsIzIvnV^EZA|qJ4g(Mau1qn$?}OIj~Lo@paZ+)Bj5Uw%*-0S1sW}%hJy8h6+qg z5}Wi=Iwx*%S6kJ@k>sKpeo0TQLva5UXvGf7Aptc3nlls~d03Bz7-%<1aCLb`PGnl* za7m)yqI z2}X+!zC3ofHS&bnr;0s0#k-9z8=THM_V}zV=&H1ChfU~xZQ>yK+c+1!bo(E8?^;-(`C9TT@aSH0ELH4&qY^*SH9*< zIWjJgHq^I9Hw z6?pqK!+rPTo?kYwWt5jBs2un`|L2hv({xT4+OR8^N3LABwzEd+T&?`?`8PV|Y46K6 z-n)LI`JMNNa<&UDV{Gm}w@1`qI>VlA(-$dp2>yS((6U3(ONnJY!?)@rBS{~F4H0LP zPg;xpn)tk;VAIL@EZ_3uGEI&M?4I^lqvn&L($UDfk+BhX)vi@OI-A4%RF=D4<$AHx z3g0FP^C_p!F&SNEoY(L1Yf1c*62@BQhU1Upzr1Syy|Li6{o!eKU6R|?_U3hJPBfX2xV5v%G_Tk1X^u&3_jCwJh9sdrpz?{g~T@Z+6`7lr}Rv*0+(j zBd*tXz1E8Fv8B29=f1ae=h$*9Hgjq2=0|gWzYy{^UcRR|?b)3Bf4XIs|Jt%cRZGIM zk?Yl}Pg%+AaTx)NJ@b!jS-|keOqox0FPq2iE#@^oJVv%Hd)Opi{`FUITc#@aaFV#< zQ$3$GrniqCFMP1{=8F~6ZrnNeZ_lwbfy2)HPXt$~{*K;sU+zwI^?vqix?FroZ}#pG z@8AF3LeDgIkrMB;`}clE--)i$cbdA;Ug@OyU(-9HAgjROtTn0X?>_0=4{6<;ZueZ|4}9ZlmRPL$V)lOHj)&5B zBUk${=4%?rbvPy^)~tNx+7jY(*Q?|Ai8ldBoflgtU2t&mQ2nvZ-TAKluQOt=z6mM` zKK#1O?+LqRz|xD#o{C$orZY@fD6m)|!ZA5(N*n7Ur{sp9GYgLDrw8_Hu)k z7E9zAp~G3LIP!QM?20};6TJVQB`GE1lAz8l?$#IGoLkbgUGFaaYVoH?%4*fy`j}7G zP0gAm?o~O(=cnI4TAT4I>(HS$tsVT`-|N`hwrY5E1eWdNk?t~6u-BAdlsNwZ=Z+h{ z&W721e_AXeV6*2*Vhd~A!?l0&74=N`xHpL}@V?xdzORPO+;=bM>Ce-ZJp`YGE_82_ zXi1uCKJ{^aYW?A9kE1sv-QxO_^>)3)ksI2LtNdofzdvqW$#LYwj+Ok1jsIJGw(u*h zyY2tdjx+7p!Hkp5*ER|2PI#cKwb#@$rnm-x_x)o_T$!>ZnM;bf)A+ z3HfcM&e_`%GF=4ry}bD7XO(DDijdTnVow)=eL>$B1?DfwQ~Iv%5+FX|e(3gxPW$_I z_1nylXtYi`T(BlOx%Azo6ACgfuLX2CCgn|d9PY-t*lF?c%Uj=eO!EBD{Un3M`$)yM zb+VyS%ym;lTz@ajd6#Htc*j(-Cgi-rkqOQ1PG5eqL~efSoV`<6cY1Ka7ty889S@aH z#^z0PeRDM5wg(<1@Vb+nBBRd?mp0AeROfo4mdt`6_%YQQsD zs=GfyAo-9J5Aza6v5p;K9y^LUc3Kr&u(qFBQ>VhtEzc@!&zfe(YQuEl+)9ZfAAXi@ ze9O??sd%9K(5@pQ30ys^4n!y%^O!1F@zE=pomJ3vA>#zT!ppK-h1ba(*fe>^qInAE zWLqSRJYF7O_Bwl8RKbQ)dr_C=Z_5syo3%FPkU|@S{tWwLM_!nJdAznZKhf9Qu5RtsNlJ?8T#exK<%t4^S#@nowVEa71x>qpS|ow1B8aiv zsmFYl)ymQ%X9U;`V|J$X-BVw3PRCAIH^X`R{B`MXUKYtFc_=)4wSL{rzNW`(m}l%> zw9@>%>BpPl*K>AeX!9St7|t|Pwar|=K{)rP@)3o1H=_65V_NFdc}a8W72!kET_*@6 zSNQbIU-v^(F7B5>sko%h?EbuM+=d-nkE!3UX*$;Dwr1{DvCNB^ao^9%>#DIyGH*Qc zW4rGEwggv$W{HPXLqUV1(xo&zgT$?GnPV<73>G~EA2#dr~Te2Et@f0;Goxf?#ZY9 zU6p5DbWNTfqp#u-8RNjiq{5gSdU5q}^X%w_8z)=kWmT(5@n2c&eKqx}{LYxZ6DK?l zrhiW`G~8p=8RxODXQd%REvVbR2fH}7sj?-`aA4Q z3Ucr5T55BT&-18F^Lb}ksW)soywlheW8~a6ujAPGMWX6r=8LA2Nt<5EHA^_{Nm}FY z!?^6g0w!~*BMOhjK3S(O`Of+BcTSyJR)BS)UCM;-|BX&7`80_%J`(?%f7a|!Rqwi+ zJpB*5@84}X7R)G|-TSvzcan9=gIf|uK0LeKa%{QH53@^2mkg|vxB0U9t^c-^)u8-# zUZ@YZsX@9l!_2=qEzZAow7!1xM(1&5-A51E=TRyX-Uaqq-Q-}9Sgp$Dxp>#x+qo+; zRvviObk(ERZ>gS2^G1^s|G%XvCjWTdw?FCco39aext3pLm0Y!^#ck$Ee5Z1KJ;%(P zaI4CxjFQ2ywE%PexHP_V+j!qTh4a9P$i>IEToo4-{VR1OruXX?Wp)iF#*Ob^EDiqN zypG>MGMDe_jQ8%A^IImzwDw+Y3jWIVMqyLK$%o68+WL=3zT0znjrJ3ZPdXppT}~<4 zsAJ=K<;@SrvkJ#vNNrM{!Q{huU$a2jiD%I^f%}?^_xgM6fBs>!!n30m$77wo8=Q8% ze|FKwtu{aYo!{!?%5j}(=?~ujF`F$T)(eK3JYx^2%TV;oo=MDxtasbX|A~E{ zcF()HQmEtOm21m0eqDE;ZtIm?&Lh??Y#q-Z*envW{KTrbKn8_wW*4sfp1eP~J!Utv z{5=YPF|+QP{YNCFfZ<_kaQKS}o1^+Ctl-i(n(uVxYE-wI&w3Fr2NQ>WT`@T|VgLV2 zxuyG!&K#Ib*j@vhxtChp!SA*PYg$f{Kma6dvgCsuOLwd;mvF4H6$YZQ_Mcv+taIGQ8|A2;eS zJa+ORUpkio>z-8%%@T1_Z$CZ8rr5?Jv_FRVM)iN;Kp7_<>+EftHihNfn9#CkPr$E_ zU27iO{oTU(`ntbUp<$=#)2F4gb>pcU+txCw`;|Oew>#*C_oNH8>!%AUwA~Bp%JOTSd?)kEk4&yjj<%bB>ST2; ze7Z&0s8pv}B5r?iL^G&Rkq}7`Naji6d=S87cu99<#*?T&b-V^Y{_#6K*rDL&=cmyp z8~k|ld8xwJYdJNvJ~19pC{7aTSZF?V(X)&fEm6trvuCQdG03soy=^+L$fnNz&b1ri2;VoOA z3(ETb(Qe;4xrfQH!_=*QKj(Sd@V=G7&MQLQJUaN9y!sdn^*(!A91Q(odq9HA=+Tde zIS6ERoBAwPnEpmsW|=|38D@M9Z>H4N_;BdG}ho zP@S2DoW=3jIRe=XOh%t{ZgM=G^=9{Ei-^s4>wc?b{n$`hEStB_lCSu=o8!U{fz$Q| zDja+Ix4WRI_()4+a{Bs9iuKz#7pA{Ca%4jMU183e_?HFir!Q|`5y-Uea+Ti3znk7F zpPASe$Nk1LN#>Lq<0FUdw();=DNW*Wy3Y{tE4Te2N79exHs#*a4x1*|=r~_i{oSai zD&*i)%img@={bet(XS*U#&GAz8zp&1^ZgP(oe4kAYUokZQ~zf%o11d~)z!iR;?J3# zo-!nTnf?CobAv?}{T%ckC2I+GDn3*($(T8zi!*K3-or`ikGWo^uUslI^^WM4qPI@3 zwwd2L$rt!C2~0V^es6h!)lF$OniKFDKL(>jvz|LpmV#knd`%_i@romu`>cf*uL zb5^@>U(dSCzi=I+TlN3RZ&Wm2luISOxplSa%$Wokt1Eq>tA#e?M9MHR*GjCZW$Cz> zzC-@@{9Tg1%bVYxldg|V)~^rf7MV16N$ria`~2UgD!=+F_X@?`5 zj}FI@zy^<#hfhf7nn{|R=1~6@`C!6A@z$KUv*DK|CfQA#`}M;AZQ>n;KP;X56{WR4 zDJwlTE;LxhSge0w_S|-fYf?-sSsW`rs2x~QWV5bMM)up=35)jLnwHSs%5c!}&{>yN zmziZ_8!no4vWxwDV^ic6-{cdPTWdLI!x07bJ^$-uw?r9-t?LmNIg(*`ztM;xx9pCG z(i1_BsjQcOhjzFoUvgR+emKGGMoIp@RK0ZtrWucBxu5x_c%;zs)np;Y6WO!7x|*K` ztPJ5v`f>Saa&0Qt9R)6*kdB45e+p|h+6k2^+6up#8+5|o-BRoAvIx;nQVCnW*Ry@$ z5ZwRvO8fHX^Yz`Go5dU*g={`~s7=%FcQ4prpy=lPn193Xo2nVRbAE5N&=KL_6Zs$& z&0bP+J3d)|M|68no#v9mI%0on{Zq;q3|s8<^7pNCyB%I7n#9AmXYGE``@etK$*i;H z;LhJStIn%s`Lw_0@8)jfT-arhpOvzGZCow?zYYI2UD(|ougmXeF zo8oI#R3E|I^X1?9CdtG_<#U@P*6*ug-F|mkM+b-Hw*34t8>fpo)*ijJ|Iq#GH;VHvE1%YA+~Yn&{;XT|JIi0cJp_{Xl-|pD{*xt%r_0Ce zul)S~3_A^fp6ENdblJELY+ASE zv(*A_Izqw1-xe-VR@Ld1bN*Gkp-lc;oaW(Uf2t*qNU#~E7%3R>DE#LWn-{fi#>=hC zS9(|qS|lBP}+McryocI54L+|a(BvCYrEyE38iNN3G#tGXrM>&0~ZoO=$wQL(gC zys>Mm;MT2wMY2*-Sbl08UG?~lN}obo44=yc({ERws>a42W)f^k{Ap)VFSB-|=IvmzW_?gys&pMa2W?q%_yLn~u zNzIRJw5}^0;o#>uE?Ze1?A>#He=TS1F1;MBA972QG~@n1Q_b1?LGbVG=FN2-OJ|xt zKD_z8Dpq8mt`)RlUI26>33Nx96L8xH)400&{>y7*Jpoxxx9Br%}(+1`*WM_+!2u9 zD`MJkG9fwXke@22)&U!Xjs$;sSwRJM6Yh zZg~=;?oq>5uXV)9a8|#Q#UX`O5iLJcwT{F~vp-xt9p6xMKx5xpmWPE8?WFhZR%AP= zas77ok>c~A7Z~2Cyv=fQYWSYKqxY~-vc(aF*RM9OO`S1$3**U!Kffq16yR!>aN5E3 z?<)I2hn}7jJ~aj3YL~PuU7%2>Ru)>@Dp09Ws(Ul?tLn7WH4a%7QfBij*@Sg4G@{-rPIKr118g{52-9P1@Q2dntlcN#^4mig6+_U(|6_&d8=+SM( zFRp%1Iyxn^;{6wUjSV|gvw648yWhn1HTBPi7l!JJZMjFH{Ch6XF10FBm(1%7y!p|T z@9Mt(LoJ~*q(ZsYuH=uO@}HIQlENA9o$P{)o%h~++qx~LRpR&e?TRZ?@Ueq*GH8JeJy3O|;;6V=2~Axa^I|vpfygqB<@YCHdau8*3yo1t;gsY$?8@ z8q&Ecu_5;k&wQT^g=SLck1y=dZ*WaLwy^n(Q1Tq3O_xDE34U#ZiHdIjcbQtq2DKLj zPQ4%XjW_O}i=CYDPbMLy-)(IYDQCB(`)glYEB)hxi_xjj(60~A*YE3b?M~W|NBP0Hvf7T^=8cP>mB z^B3};m#drgZKG2x-`c=#RmsyC@#0JL4n6vkYH_bZWcTVatLJ_}E816tG5Nif?q^W|xcC4VIaLYeslW#Fjo}bu`u==)jJPx?|k=M_(zB96OyOO2JdG%`& z>zsJ}U%o2ZYp!tQg^PKqav_UB&C6|1UR3po>{jmdcgd<2Iwxy$`i^JJKE()DAI4=3 z>LN2%2snTK@z|oW+U#7bnG^GGNw1b~ev-OkAyV_3JZqTr3Z~~IC0P`y&&-%6F>eQZ z%(~BREfTN4p19<#@P1xIwbEynyRUcJ96uh=nAyqpOov%vYgzjC;G<&eHgDeC^Ze&g z<*Vm2Ej_leJ6zF7r&FP>+RE1hc=&^U&)|zWNg4`~j{lDpqs0WANk!#)20h2d!u5oX7>n%V3r#UKVPQItf9tRvc!Q9xL8Yxp+@~$$R4;HNV!WtTS}xZkEW~t$Hl(VlRi` zyUR+e{n>uH{Mz9Ct*YBpAa+hd_1=x=UwoW@knvb(?S>_ijTdKMV*W%4BhKzi)0LDIm;xIOE$$Wxxo7h) zbY6Xoxz&EbHU5QN7e4ae=`^n9-CObN!28UyNe5?0tgrno#47gP?>@^;7sgNb<>&rp zxaeqDk@Bs7qe7{ooyB)K+h_A$&UV?MA^B{%v0?GekjPUU(7p6^(Mz< zCfy_HPno5p+^${dT*&cAz-ZmG2<5(2qUiws_f_ z8;z4D3F$;{<4H_>cT(-BLYsoz)iuICjQyGhVjT+&qdz1@i^t`?acIBT;`;DlMM{v$ zCg!Ii0XMX(<{dxHn>8i-OND_U)6Yh(tdo}0oEkh^-TIAdt){eSP1KP8wDAn%k&Iv8 z=O=!jrLl!Q>+h?%MwfoK@Tjz(cM^_rV5%|dFq{_osS?t6! zX=+Q&e+eG5CB|PLd)#dg$jr+0>DlqXXMT!iqCj$j+Re>JJ}jRh(WlVnqvGnr;3;c8 zq11Int3yv*uzbb6Uk7Jho!PjomiI-LvSH0Saes%Njt-6|&z>n6T&UHnEnTe20Tem zSoxMP%GcddxF(VH((#o*vCJ;tv_A`X$*O&*&@g10JoVG-YZ814ZfEQNviuHrbzZxr z?exD7euZD`6nCY5oSES$y~{HDfqecR1-%hj#t?iUo2!R4DJSpkq5D!- zBE*Heb|)Pc(48F9%vpQHYw=d@^=733+xb6z?=4K^nBKAC>9GZ>Zcz;~@;5E}945$3 zmXzOC`nY!)qj!Jl#l#)9Y;vZdfed!l#7*(*-#)V&*=8$+5N-G26?woGXKU5Vt( z7jCT*=8_6i59|IuweiH;bII;^UhhoY|K{92uC41H{yt^+rMO4nFiVG4s=)l|j#tzq z&5uYpv;X}ZkhEga79NM58rvTMr%Tm+Y}r3%TDpW9by&I9EmvIsB++xP)jAF1TdUpL zC7vk7W!ZOJ*4;fpe!E0wqVWRr?1BZ)WCi@M?>s3jxYXy{$*pMukB>D=u=UCUTy;G`ExS8lgD^5kouyOqpkzAru5OIE{_rXJngyFa|{cE3N;s_db2=>N6V8LXpl7w_kF50FRVOK&fo~|dDjld zNAA4aqpp0*`uH>6&bca)t?2o4N4XcV-VWi4ZTsT;*T?;0+W2y#$2sq#^Y%|yv@~aB z)#eg>vG~iYly$q5kFK(Qw&(Wi0^uVTmp2K!PQIqp$#ROlGgq~3#^fJYre3=!HG9Y8 z6oC%K$A8P?Eic98zo?t3a@3&z{o?(%pU=9WCF6Pc;_p{BM;`2QnIIG36mtB*(HFbo z?3*IAd3H>eIQX?_!W+((6@g4rOHcK4Ga9S#`mLUJ{NnYw#p*lPSoPS3#~r_U?QVca zQ-ICOG990K2E)coyVIFx720Y$3hVw?&beL8R(x%$f~NjW_4vte?#lIv8TQ@rY^ygl ze${*9>n*+&QXwTdD=%Mm5X-5)r?puB*QBq-f|i=6UYDyiOTa2K7cH_byYxcJ5&2N)0&kixTm-W)6#ii-D@FBxYk2~FQlUet#&rB9L>{%{kq&w@B z^v9R;?H!MP_79M^>Y5qg;GwB(#nNS z-do*h`<8WSN<${c)(v~(rg^H(5X(@oTiCGUQDii-0^V$!UagS6nz1&^@zE7e zj!wRhznppnv${{l7C!tDStL@nqFVEa!a9ZMsNEayo-6!*to7mAWqc_bPj}ecF@5~>dgcR( zBRlLO=X7=|PFR_GnHN+U^DKpJCL<1QVdYO)RO)5Xtsiyu&Q6+YUBxpeD z`+@&*aUG^?ovn&lAC-C8k1u69WBcv+RU_AS=hUDT?w%X9uADxnaIBZraNoT$5#H%i z2IbD0kBlB=`tUs3?US6`VZmj3V*fooo}`NC!fSG%u{l0aP;@M1jodydVK%Q7^Ssr; zi*M%~TlT}?Pw-W4%i|A!cM5t0oyeHrziElebDm>Ib{Lyod02SlRC7eMhKtgyqbiY# zi=R(gzVq0b$NX|zj!4Ywi@Cl0;B@^uN5{%{O#h433y<&l;3CVD8S^%?N(MBkpZB2qTf)ZaNueFVEsj0X z+(|NbY8ZCa$)>HF)B52@fxz~e+vitsmp;#)IA?y-@4DTbk*dLp6K@@I^FJ5QW@xig zZ}n`=10o-$Fr9PisoTtY{_5(0wWbfMIR!l?cz@i^ChEI(m!_Re{P&CvyBEusA8&Qk ze72(c;HQk&C+t=Q`BJ{YL^P$E4<;U;&-G1D$`sDOic5hz3Sgfa^a^d;^Yg?6- z9sKSF+{=9DGXJPka-mP)DNT=sM|lkm+m8L{JEHWP zC4||N&g^#XKWW9eB=%Z0d;NXkncQDY-Za_2`x>*?{&>+pkKbNQO=lw69IRG(cTS!r zp)2I^UE|zom(ld?j_I~%o%X?P8Q#o#L>!xey z)uHNEb!Y3ZtG!xps#4jP>FYbBT})v!yi@WpvMbb_^W>^TE{+h!bVat8b-m{r%x7DD z^o%y&<&(CigX^Gj=fo47lbrLPeGIHNkIM`Ro<6xc>2N`KjD*tCq&@epbaM5|@vF2b zhbkVv_Dyc~<3~?}zRcFS{_2IntitFLj;(JLp1*nh=D2*;?G;;(ufLp>nHA0yaEH-Q zEh@pk(a%)uM)8SONjYKX71z&PY(MmK`|F9B6C7^k?p^=oyX{0vfB(H=JN&lA%jNo6 z-3p&n(furkS>dz65rq#n~6)PLrKF-;hC8l=%T$791!UfCs#5e{Bn z*SI*jrlzJlV!|zsJnHX4%Q%7$^ovSx9}#$Ba5tgzph8>uI-Si&cC7o{(kfB6X?@9# z>%|O)H|lPFlYHpm%x1Xfv(47qUAqm<}?{x~CM{MX^#>Ha4?NgSzW{4d*gD;(RFzx`p(-$<*A@8(sT zs~z_%yM6uQ#}mhN4A-qvo5oP2s=)AihTwW-kW1NqEPiV1s-(Zi7Zsgd>R#|*scS&|#&5UNr%9ai%zmg_BL6gRbyo!7GCz~_N#nD?Od_6^fPV^XUY${OB_iMILy8M{0iS4Qo_ks*lJ1+L@2gJ=(v@X zn22yC{{FOe>sH6rSDR{BC8D~zyA4xMi5zs6koRT3rW1T1U!;J;u){Pui$&ngUEV)4 zT9o^jW|>}Cyt!BYsmc+F;OaQ58IC=QPQMSgtFsxdi!~_U9Sd5=rvIjfQTln#k*=58 z0vh}!r(<7i7f`Nd{G|T$@yoaV#vKpeoqRTJ=F`VscNh)Nna?@?uB_*i@j%8~MxHe3iF3Ce5qNYpQJ~q8 zXW^OChV0);ihX+iPXG4!>89x$_f^>D%_}pWV)T8<uGF8W4RkAK zo&U2pn(r`dEx>e8Bsg>EyRsSPtY`X|uVU|{b>vghj;}{A{4?xOT(bJ;uR|gd`$fj2 zpUQ76WHV%`$c<@~VB5^N{(YrvW0!+egPN7atiBDawsO^L|CSE(i|@Roxpac}UU`jf zko#K-b{lpmwyb_oB` z#%5S!T%hLFey)zJY{4H#geT0gd%M3`;$Cr|^Vj+Ht<2ud3#WaH`Wvb^ zO*u-Cb?1%WVjItKodKD9?wqK<{PXONhbuq+jP~L2fBC>`Z&RtdqNLdg{!TytB&!Ln zT0g(LX{?J#;)s+7c}n2WpFI~9j_Cw5zWRP;(b8>_V%@GB(+@ng)0pa|6Sak-u&_|? z`cbU}E(6w@)ePw-N*|{0Zz*{ncOc_SZu*@oyHwTKO#gqbFD#hGnze4SBaivZS6QYy z8=jZ4MwSVMr%%p)Zrt&3R^5{vN2eaUSb019pO*J5zwqgq#5p)-G0Me$)95npzB_IH z_0pF%;mpkv%(qUZIHcS-u-{3qPvheq_R|yh|6pZd35zVhFYhDl+5c7QK*|PB#qeZs z6Qj3ofAoxreD^a1lFjUePqDH3)z%8h%E~G)(-r+x>-NiR2G_PFOIRc&B`0{*3JXTR zu-f>~koAu*H#HU#VIdO zD73u}cPbEY&c5(y>)!Q^OE~WuR5LF-;=fSg@!G%niC23+Y-zRq2k} z=;2e}ag}Z3J%v`6$+CZ>H$IT~Gkd0aGc$WsY2KU%)`(vmxV;4i? zCx`2yCB?j;pnLdC({$e}i6b)t1e}v5IxG!ZxOOdXZEbDc^C+e1rv;^@yI;J>IFVw+ zwK5X48bYm)N$kT4bIE}9*B4w)X_@)_Z&m?gl3~yjFBNZ5jt4FQg<5QeEM=@9?>K7& zPjckBzP{yw!m;+_c1Nae)80{hZmvhS-)70g>U`^eyB@C>@zFUG*U>zkKPbVmPrNwk z&!f5V3sg3<+~50hw?#~$gs84)MEDlIc0GBgoCuw~SyjTTZm%j_@kk)dC%W;>4WEO$ zZ6K=-e~rG)YiiJ8n5f{kDNpF!T#N2gr@UVL{lfkHL64t@$ALFDHw#KizHIY6w+fU; zS{5`++y1~iSA3u87w5yj%iqj9Da4u=+UBhF@}OZ_r((;?(zX1c;8C2yc@mnkl0RQO z`{Mfd%O(pxCVnh)_t4SxNfZ9!X4@Akdw8Gs?+ptxn0fzsuF=iY-zB?rvUlKexefai zN<+7WUD|*C{H%UY!O1JUy8@V6g}jA>*!Jrfbr>F0Z1dnbF_odSSMkZB_v}7yV#0^{ zl}=91e3DUUb~~t}FInr#l8vPBx>|-?RK3sd2(P#NXv!|28#C`*W`m{LMC(7 zta^FmdYfH4gLB7ujSmd||K`t~q|NKF@lsFLNzG?|kDkbUIF|UhN#fszwBikM%CoM; zRI#wfMX`LH%AnmDnc$y)#^QLcLC3>g|C*X5=GXn!)H97=^wHo_@}>2?7cz`4O=s;) z|9JK0`VY6}U0)H+St#k*=XI=q+TRYRuH5^1i#Hm7n*8bFovS_J-}iJq{dsz#*krf= z-!5L4SJblL07HhQk$kX9SKTW{rGDUbUn7yY@#U-9bOqN~{#Z{Fuz8`%BiL<);$ zlZ;!mssCl?D+;XF6Xz~<6=68>h+*QP;JxMkdv&Z&3dnX!Pj>M-F}3HM!JxUPQ4}?&bCRJZjCc zGd8Muw8;ImEZOu%rD^7z$4wGTzB|Qjo>(fiagOQj{?elgZ3)Zfhq_A~DfqjKgD+{$ zO6%rwzWvRntl0+E$!1$;C@|V=pMS4!+Bz|xzS%rXR@0v9ANIXz{?O?%>#UP0xeueb z4C8M8<+^q@s(okhvqfQ{-PgbG^?R-5qut`8vshp1QB=`_KMb~cS%*TlN2c6h7G>Eb z;BfKk{nn~d+f%boYcAP&r$+L*^tsE1l4sr4%-t!rKk~bDihA1ND_TuEr6uwLLFrfc zp0H_;r8VbEmfi$CMi-%njXa;6mWWAw^R1FR^5KY1(Oy6I?#*ky@tDYFI80x4dfCJk zD>PWx*tqx-c*>?U@CY40JdfKaGgI?)z@uMV5={+QYt}h5d-n62%C0b%&iOS-YHrVm z1qR#KUcO@+G1swu);Fs!lYO6T*km%HIjm4_FHh2r=x>GB&GR}GubAG}cx|dA(k$_K zo}QfTL`ReDO4p-pGq(q36mI*cVwQ*&F#tekJgF^O-S|>xbUVWXNsTZ(Vf4F6&PK@ z#n-sG<+OQo|8Tr6)*II>m&-qE*Q|i6QLU$@dA&L`Y3hVl-Q(K=G7N(f1)RISRlU|< zC2V$d)$8wT{j(DU4ln;?ol~<$pm~Y9sz7r@BF9dFj*Iv2=TDZ}wqu7x@G_r;j&|Tu z@lQCTyMVLeRAo~&*2W`$gAOcRww7=1-`Fd=$})C(o;9Ff?acF*E)ydv94Ca-y=N4(Bm zPn2X~H#~9V<>jvrA3v6V{I)qiSRi0VREPUC+onk;RYNxD#^)d8wvKnGNU$iiR%~?0 zpIOLlYOZqA(__}P{BEykI&khPLD^bavup=8!(*#gJU=JBUA67`t|uQsE#DnS9%mhp zS7a+(sJv0lGpP6YG`qG*nyPy57av!>cXcugr{OW{1>L>k8^6w8dp#*>N3~(@`uJ-7 zcSrT_|5e@kP9jd?$cC_%qemp(pAoxO$&?|ES%UfUsrkA-GgR9Yz9g<6tC`k0@i1vd>BSwn zp1-$svwS^IYK2AGy=r}~cYA~#H*Q>ESHdwTqNn9gjfRucx|2)ZzdgF{{(rf~ix)Na z{LX7Ra+KFWVBYfM*3xfgIQBSpEOgkS#8tGhAokA;)ni|mx5Tiyv@jc8=ecD2??$3P zvO|*M0ZE}FGa{1athMfz*ZIeow&Ywx%aL!N17`*Z92S={^5%ISD!*El?Wci|EF;IA zRQXkW4vV**bm^MJo^6=>v6zEHr#w!@-eS|SBK2?0?NWQg_D(GjI-->E7Il&L|L4!D;)kvaEMB~r`FOv)yPqGQkg%}ikq^z)GfO9GDzLD| zv`W0v4&U(pX8Odapr$vX+6&&kI`r@Pyu(WlIjQ)}ZmT_S(|pCU*dX`suh#<2&l4|X zZ1~+@zokh+-8`Rd<@$ujZZ6B>&rdL)qWg z=jNsGuygSxO-N8Y@_i-?PhqIUtL0~BD?W=^e|q9Fo+JzV+sC*JJb3b~E?( zg_>_VX?H5s7pcd`hs@?-ld1h0`lkL{!tGmLYxSl4<~US% zakYvy1_oMuJ;?rI#kyl(tlv45q%8~1Q{zdBnZHW#Q$Y(y3GV{a%!QXqZ`A%5?wFX_ z>AvHMtH(}m;q0?z9}8tFGR>@3 z9(3eU^1J!dC`aQ~!=EKJ)5Q+m>zKIl|D`&ckN<=%?pNG<=ETP)cegl^pEtlNNHH^^ ze(Sezli8f!8?)AmEIc~t&BkL8|wyxPQV`XV8 zhf>GU>z8*&{OuJEl$RA!PByrZ9v5_PtG8#9ZQ+AEMVX#nH{x>jeV#Qw2ncIsej;Sq zleXA5rM5_Bqlx4eGsR@iz!nF!iIzRGiSw4VuW;mAci2jFrNEyha|DZRrb(Q;qJ1S9 zx?#?7zN6YLcEQr%5ANMOMe7R;qBbqudZ$-RqhN~lJAovQuT?$Q^w|vEf-}DCH#aw5 zyk<>LRI&@6X zr)lwe4Ou6i`n`Ggnk0@mH@va+Ec1D!`e5Co{+ph6Ov}ozJ`NXH92e`)+?DgYOnTWd z|D)%_{_z-JPQTP!AL=c7@5X<&ZS!ySSZY&jDTTIZy_wgwBpW2y zJeYL^3UwzGJT>`m!M^wUuLo7mGCDOPJ~d)zYP2d?7R(I>b>}wZtv`6((6Gcxw(RY# z)+bL=Qc_cQvL*;jlsHoGJ0wxmh?Qk&!)gKN(9l-f`d`A6($Bkn)7|cH|E}-j1Qk)y zi}xq~kkE8>y(0AZ!)bkGJAHo3)nS3z-47dW{cC?HT4iM!Bp+sTS+dk}sqp3_1zu{7 z@+KUHDGGslKUZgOJ1tOL`fq=l_H=`ehlk!M|K1}G*{m8Q&Nb=RP1#mQp6j7sq&qGy ze|>m!ylwY|hJZU!722R)&CFfKHzGC(f;yO|`}SYxQRyxc3oIAe8|YtK+7}{o@X(yr zEA{OS-9IBg3kr%n+*K5wUBH^e^Y+NCnb{v_m+p5gOEN1~FT8#AW3DT+fHQyVCb6Q6 zb|-cuKd^Y6Fk|1_g`d~X{;~2x^t3}6C!N9j>ndOFDO<8$k*%|{@W~0mtX4;dw%tK7 z#vKp0Y95hF;`-sj7_P|nGvR7nU}N(7{d`GN9XC(DQ_O$XZxILY(TmsP7SHtVdbeMG z?$xUvntI2sOx1pAob~;(|K$h?*77@st8RBF7fKxYaB@pw_TuY`Z7ogRoLkdid+?4~ zr1Nk}e<-?nIwF3LoVovQNw1kjb4(-WA5&<1ZS;%x$cnu6$GlVZ16Ok;WnR2?x$Swm zP5;rI-GXa4j`eM}E_i(=+E6$1mT9rPknrQbi{BqkFi}voVpVzPlH{`J^(x+#jgCCe zpUPaEo3fteZRtDX%SHRb=UGp3=vmXcTu|x@f5*@H zoo0J~igLNoBt1PhLEfDa?|%C2xX>h^z;@d2(IM89y7D zsmgi!#*{Z!TBQ_-0t&7h@kSG*P8Zo6mwV|VvnOMm{r#Vj$)>-$d6KA*h5 zQG&%|&z9e+ckEu5P4UreJh$L*alEbjUC)mFmo9cKj)>oKPfJ3>^7;SVpY2VWOwN#whfi zWmU=Vt-GQUH*XV_vR?Uk(=Fo*B?}m1wO$uatPq_zapHuNDSG9dHJrJbnFmi!R-ZV3 z{`sIayVhu|ZqO`vtYHw=k!U!3{n0%Fo+>8WBr4e^T1c2Yn;F4#&*;NB)k4EJqE&k? zR=l++kSWzyw0}~6+xB=8W9Dob<1P0#IzjgV3dDZ;DPywW||@nioD&v!a)i7&f<&z<9X)x*73OTK$5zWi|htlj1#1+`*7d5^5fT)$8t`REo= zjhQh`)82`_TD(Q2oU@6!Y2)WNerq&ioE6zLZ7QaiPk%f)-)^CuPw3iEgV|>zrtId} zxNze-?eeW`Y=(2DU%HrLeC~46aWhRReXl>p@0QAPS_p3Vb27?Ducq(Vp$(csk_y}c zdG8_?%Ne|2xF@#n%S^eW;xY14JItQz?>o@1(pbm+BXfo8-dOI*37Gc(IHpaHSjD}Lu(jPCn%PZR2%6@)+-aR8@#qE@&cPe?4Cxspn5m*A+6wP8I zuzlj*^LE`&W*TpNb5dQD&;2*Y^@Ya+HhcAQ%&v#KTe?}0R_h-mkAQ$EvtmHd^a`h+3=c`T;3$jd!1yFJ81X=}2UO^6?`Ex)&aK znfFhgf8yd@jc>o(br>Zqv%k#P_DgBeqWI<+t2gfZ_JqMz;elJXLcdK?No~W)jNq-u zYV1$_RGITc>%!5}>Lr=^VP0YemVZKyd@{5+J6HCiZ(Ev3QE-}ad2iu|osU=8dtiVZUlKJXp1Nb1YBZHwOQ|35n_zU0caq;KW>yEVJTFDJ}t7ErcRXHTvF zB^>np%)u>RUuSBCGU@W||01;PZk;u&z^YTHUSCK)%JpUY_RA%!J6T!3NC<^DN5l$r z_c?O+o~r$Qhs}^JRQ#58>Xz@EFTcywi5=M^@q9=3i)S9!O#kaPzyBX|I;5pQH=yhO zhx6bqvOA5WJ~M0BZxK*8Z}**J`Yp@0C|y#p%Id&lfo9fkBJcj{T68!rJn&4tVBy0< zrdOx=NB70A|7+SRy8d0QX!QPjU2~4e{3$u=A2=h-WAkKz1&&E6Z}x4F{=Dhg!--4# z1Ac7$`=u;v??h|O>HpU5T084sc~Quw=yhEOQyjK0ljfbvyW>(7>ye}qdpe~F~$nl29}jVT8+iTeRHQHA0}#CudMRg~(gAKX$<*+Ss;i;c-^Cr<+iUUbl(xy% ztXFq-zF4u&?WX*H4_)(3;cFUn3htR@M+Lv)vTEp^It4?Xr2qr3Lsz8rtT{IxQ4lz+ zq-wXeVO3DmIV(e-x+$Gg4s;*zkTblgrs1S3;^g5H`c08-;{gT!gNg!+*Pm}WZ=Zk2 z`u&whhg$PQL|PtSbT`TDx>-RAQeS0q{_M616q zTC}DoO@HTypU=PiS#roprt)j(FYA>-o!tNbs5eW5gZ6huBs6vfFJ_K4ICyPtpvUK& z4f-r`ET6oNC`oZ?y!bs|q+Q_fxmmsik1u6Aik~fel+5GA)2(_S|N0G=_X{*$o0?tM z`p9+U#r5x?!RQlyC)^yf7)63wqxI~&J0I@q;Yr%D?%|FsgXl9au76#;akF5rZ10P! zUz5s?p8~;%9_Z*`O(qgq@cnv$s-SV!h7p7)Q;rNKAf)D*S|C%ZPC)c)ORYvNnM*9 z4OrFIfL1R#hEHnhmClUePKw<4dF66}sWUrUGA|c=`FfpQ;n)GInbYJw3fQVy_irWaPnph0JoSNip~KbEuoU|M=^EXkqr7KR4A{=4})fK79VW zOJC5MO@BAN)xPj>U(rG~&?=qHW$oKP3*9|bT2?mgqs{(`CFVNUlkUH1KVmV(m+45O z@VCD<%Ni%92>fC@a4ElfmU72KeyLB-RzKdf`MK$|tdCdKgG^#K&Hv}AbS{%U47L_P zvE_E+watbvUvF!!4EU61#3;u8{Y2OOIftIiT;IoKX!mD>T==>#56@Xoo-j@9$u_-R zF%y|PE~f5dk3ZCtX6XiN1`y6Lm+&kOez|G!0R zIk3x;>VWGE%6tExRPZR9B=W_Y)v&6%S3!RMw%qI`0?8jAN$A8# zG~b9|-FobUrzB(27s+?Wzb(&myZka?cdYO$soOb>XO!1$oNm9umFuM6rM%pgZ_KL~ zxv^L8wXt>S6)Kqf&s;D6+~0}cPOIfR@)#vdWSZc{sHDoToWJE}iieAk)RM_Ah2KgQ ze}{g)YSOmE|43QRi~8HIAAcxrlXEr;dE)MJEd5bJ2=lYJhMZsR;_d>6qnsy+-@UFC zx&8cXhQ+5o?y%bQ^~V0-rfpf#(>pH+C|Ga^aOe0mD_?op(3f{0WA+hd?)ox0%cc5` zYOA-2rAS=8zh@`k-@j^WVrDk{sQCWl*3MKmiv|haXJ2n{^SuRc(tXG=we`Yp)J?kU zQq5lNV3S(Y^W&#q%OV$sPq&sWdX!)pqV>Afq*+4vA=hR@1J*zBjOhw(6Wm{F9DQ}G zq2LSaoCdEeKE~I5Tbz-VMV87*+{`0-ZI-bRu~Y|pPO z(OI)fA~vfrR#q+y&^U7C*P-RnQv?;ySqpsb3EE{zl_Rr|D5WIWGe(Rh4h3~ica)h>21}pE*{ralWqxYinZPa!G@S;PEX@3rq(>T2HvP!yFun>cf5l`!qpCe$Cv%33ttBD z_qI=*S9e$FaE8o@6y>RtrZ47an8(}^n7&i?_W?)N>|#Yub;mhIY+M@~9D3%yzP|{z zZTHA|7lHLl^i=1@Opn*MI+^oO!O75`d*NG0i?R1fizCBZtA0uCf@oS}JJ?nJh2!dV5ePTQUQq zZ)H9^yG4G9J+3z2Uo;q}j9krxlJFbSO?{oS4Y)bGit(ssF=+ zf~!S&a$d35x$`8s$nAZnY|CJ^tD){}L-olEpk1NG%cS4$33guj@6FAL6HcDE^K4^n zwQ*EbNyJVgxz0{I4k=@|j)elJ1=n^o#ptL{=S}z(oDB1_FbMbpIpxIqusV9 z0=os0lPsDfiYx^juidcY*!k?uSEb{YQK0)%#6}USw);YUJa`yQ>-MijJnS3=_uxzu`>msuU_g;QiHnTXFEPczdLr_kj&-&B5Wz!_q z*Z&sURT6t6}c}8KN(r;UVMGTbmYbBH;0e^-^)8M7lxjwL+Pb>-;# zP{%Xjq5@lIzhhJNHo<7&b@$)Lc&F^)G3;`|r60kaiC#mA^vqWCdrr&c~54bxn zt`A$hd7s?Gl`BoEJGE0yIuxH^+TYhzN0#l@e|$J&)h_9zo@?{2 z|Fh%s=3z73Q&xKHiooV05|d-f_{Btya7@rzDauxOy5jSZ)d88ez&j*Ee~Rj@)_c@= zh<#-$^Tx7>>AM@F@-hPscjL zH)v(+>TR3ryndg!_OdmHs+a$FY&@zPnZ4obAF+@X`j6XP`z<*QRUTN?Y*<)Y>u0$p z@xWXcrqbrGJKCa?zDV!dxcCvP3#)3f+aInKzg`!td6<00C!+bw2dAuskGmgf9Z{%# z_u4q{@{#TL*Ey!9>T_`){&+%pa$t}UsJn6fHfzVh=n9#NeEF#CXv6x)Oh;0WT=u?P zv6J!lzm4ph!^9PnucdUT-jl!WA)tKJi1YbQ?-fF!hZ%0~klZ&T{&BAHynbiFc!us% zJBQoBW=v{}-U`(8(h6^Y7KQ=S6nCqCuW;yxhd}Z&8-}Ngx;4Z@e=QX~ zc0t=;=Xcsi)+xyYRC-3ks2;&E>`U_({#%0(OrR$e} z(7!=8?1J><#xO3CAwBkj~Q!3n%o&WW1kpk!ixR&zc@jgbN#YTdcC?Y?OGr zHTT8a7f0{#F7=o_k8Q78ziqvKb6oO*Je4Qk&j=mn-9EWn;BboJgMz#47iLx&npVjr zF<({`)vkH9%J!C2^|>nBO<#mg>{h=v??lXs_7!E1-hTaOU;Ug>?rPz?zyH52x~JOJ zVl_!)5l5h_@!1zqk6X_Wf32(sAC~JH9s=nn~O-*jp~( z%H%RJ;C=4a+V9o(B6ZhniOSsSx?4MKp1a4JdB*9_=2|{K^LzI8iiBy_v8{=D>^(EB z94@6hq^bw6$zl=6=V{xpr(Phr>XJ`Q+z&&kt6yi#ue1F&<(<>!Wg9OGJysXFKKGdI z<9F$HKjh`A`MozyOMKRG^Nj0Z>80i!j@K0Jr`GWIIyNu8xqZRL#fW=6b`dt+< z^6qh!G=I>2$bW*^+{V_I*OO~6Ubna(acR418-u}_Hw_Cd`7sUvK=%neuK=OWUq>E0ZhBCjIl6DSuk^fa(KX z&M)FgQ{LV0|FqbBqG7q73Kwf%-A7ht!6|xE6`X&~v9#DF{>VK80hvT>@J)`4)Rdh#S10vhSYym5DK*Gp2m~u-_adehOXtbgiYGNC&3&7-zd!r()`#=0 z=O^CuTw`c>&vH)}W4CDX`&J(v_P_sEPhKr3EYp2l&Gw{@d)WLxJ+j5uZ&W)*Mx4l6 z5_z{}&5WD?uE?U!lU*kZS18OB`f4DuLeWa8{lyv<1C~kdOOp*}C-tn5T6gr`S0j@$ z?~S+a&OH*;Evd@O{_*L_|Hp2${G2gy3zOoe6?OfK)%_n#lMu@+i$5^I`{XzOZH`yh zIQ=_2`C`!ZCguCGF83zYsPuVlV)^sMv5>{k=*-I%f>#!>t}R>J6?{Y?Lgr05!{J*2 zb3OZ`N@Y#lelIAD?3G+`Bd%@Pu5|@%&OGuyc6FY5jCzdL-~^O&pKtQP0}V`$JL`E-ENIFZYZuC_bnucKzOC`;-?5&Yjf6>TlosVWIQIkhpUPTH=-- zn&~@x2CMtgi;FdWd|hvt@+QJ0e&3ljW{28%4tAEl77&u|R@}LBf{;uhQ_>l3AxB;N z&M?PhhrPj7)$;?~H=Uii!o`&PLuPbUlSE3Tpom<{wO?UR&YeEmx>!77g8!{6EA&?% zUZN_KRPkiu1ICVnVK>se4Dy@2uD3KleI0l+tfxuvdqTwxjcEY~#gAT;vi^UNFU5(c za^({Ly_dw_mOY&nUb0u%sC(ZUX_;N~v^N!em08VmHc+hmuwB<@0p|-!Eg9RHlx7uF zF>an$ur=cHG_RJVJ5y@8A2sXReQ#dJ!C1UPuuU>+#v~qrE!+zCmTigHB5`-}LjP1( zUw)&51+nZ|SJK{8yT24Ul5z3c!`;UE8_$?%)e0|DyW4nXh313+Hy(LWK0}?R_xlbpvzGqQg4~w@JbUf?{`Dqx#6vK3HnnS&!+s%W`J8E7C1aWgo9I^QJ zbh^h(!)C_rg~`X2^sJ@D%ipI7G$+Ld2%KNyIa#77q0q=h>57>6;$K%ZpXE8_DF?1x z+2QAVbm!UGf%p_#-wA4?Vbo&&Jbr>oa6#e#G@_gyzI}3|FW=}YG$4jeAzqsS! z%Gsxx1)Q@3483~}Pn8Z>ujLw+!+7k-dFLfb94$=uBU!(&83rAfTwtNI{l(NRJ72fO zyT9GYy@(Uq!T z;9|tPBq?l0qTj{C24T!fsimq(Z>m@4cO;s;-uU>E`il#u%K0~ZcigBD3C(?OkohA> zrDcgD!~aD`uJ5wuJnOk>U&Q}I<{eUEy|=nePwXxfGEz%-Qu;hMGpSzD&0kDyOSj83 zwKW_X8|J9C&e4zcmHFE3+~ZJX^=VrXXH2!w3;iPo873C{%5=N49j}RAmaFdBIc-9; zM@^Yol6&8grF*L-k93?qb?D~V**7;n37b@XJ9oyP1I#+CKl=awz29;6M1zUNjGapa z)_Bafl|FUCgXQ><1)qKtrd_;v@kYlVb~%T0kB*)>yQKQ1{*f0i=Q?e0b$Bl*&Fwm^ zFXqO~Wi<`UTNi)t)D}p-a^|ANj)x3ARm@woc$eL=;yr76c1Ot{rFMyVQsL%`ZKi5% z*Dmy}xiPbY->)@7<7>$4JFAw5cNhkc16ltc%oN-qY{e_V1zm zJ@?9wsoM_lbn_kFay$LOF81fjW}4G#pLHKnY|~$IZv9D6b-Iq_7q{V^z4MHpUl$Qw z`0Y)k%G2k{Ci}ko8kH-u?G4u8__pQgWy7*Ky(L_dS8}s*YMw?f>G5|x*AqB_m3NKm z0(C{U$fRj9Hr-$UN3~xpK9+RP`Ey`k%(2X^VxA@8C3?v!m%e-%H`76K5J% zhksl4TGHz4)5}2|nwo5p_dh4;H{MIRv3<{+c8R7m#Us{Jbq*g(=zMu$d(9pDrZol{ za&4NP{Eo939<6m023cmS&_V*i9z6?3DBbjYV;=PkHPu|RZwoa8z*Mi$z zK0WZNu)DhB)g_0v>#ucoiegf`XTYgAao@=)hZWm48#l-w2Zfct&5zbw<3zv19`aiZt7m=zL41?UhnCLMfT?Gm$heFcghJ=-Yi?^t5cs?(GF7KP0^IzH+953p)XnjOt zMqt4|t$A${B5$&uKet|R`9;K={*E6U&!rz9RJJ_wVSzzqD5%tBR%5Jhk@)*^kGjIK zlew*Djw+S^tLT|&JT3AI>n>Hd`V@Cz}>T z3u-ZVnkZ~ZIlL>a`zFH+X@+F&gm;eLT&B0As|tj%PviOhD!jCfZMV7ig@TpuMOOc_ zu(UX`c*~Aj7O{87G?mYM1KtcRuX*=e?%}Y6Pri zu{dIJFh={)q{oFnOEkSb<*b$X?DzbOb=W=m$77!70?8j7dNjYUn0QmIbxXU*>VIp( zzbzG(d}igh@zwdiQYU`z)t8L(+<2>eg^RkP+g^@I^QQ_-i0}7Z*kiltp;*H~?gTT& zT}200Y?{u-`a>j6%=yCGHeMFVZ`aoEO3^LL6JETp$C+pUF7_?54UX=X+jp6)KC^}A zwxWaWF276jl9GOe)>}zG=Je*dJwqbJ*7Wncn-PDG@OpU2A7ZNcwWz?GC*EUj{ABM2 z?*p-%1s#cv5|7uDIRawY0fvtf@_Ur0-3dh1YU+I;Gpu!%w1@ZF(?opN34*52sguW`PpdJFf<3 z9_}Lx6s9Mwl(66XReAH9#ao`t4BpISwqg11&xfR+7k3y|C>-lajau^Z$b>B=SGAdA z)s6ZtZQ9Y^q_$4~`&XWVCE-DPT$88qO{kJg64*207_*apWWwykwu>n(CsUaI`u=;Z zw6No^*=*hWfnM6b_UA4B+FdTwto8(!Ty5BRG->L^rM`U%Zsw9f zx7WViY8$UKX~VwXt1MoLw@d7knrOG~w60-Qi}79N>PyB8zqn}ft-F7msXAzb|80{> zX473VNjy`Q{4CwUvV+A&labGGof8jNQDwzr$2ryoe5Fgb>U<;Tr8NMUn%|B{k(fzmYm1Q?bGzX*K=<5>;0MhZ1es4|KHwQ z#23qTAJc1!(K`O<&QXspzfV_+w|d*YbK=SRz4`V0qpi2N*Tn7m$??dh__*L1`j`K0;m&28!P9(GCtj&0cS-N(>e#9AU&Td+w86Yoi+!JmXjGRCleCtH=m!wvB~Xuz{2F0`Aip> z0{@#;+X&vcY<73WD%aNh_?Y&|(f$b^Cz~hyIn*hWRFQG1u;ZX&+vea-vwhuKT^l|v zpL(Mxi@T`p`GfG!bw|Irw_d6J&RE|p(d-#7CnDgyH1y$9`FOVtIuhQWrzzR#$XTC% zb0odm?r`qpd}ps5F1tHF71v3Z${y>LIIh4Jsdb_Ms!+4q?`xN%1Mfxj-MqQEaN8@L zzUi{ZeTDO!qGDzR>wBi>OS~?8=frdS^~LUe8`cP9^Q}3!=#J|N@0VQJziykA_dOSA zcIGL6*1!B*skz#*m9on}e3Z9$xS8oKwQa);1F^ume}}mZY_tWHJpYRwxc5$+|IJHH z&d*h#q_IblFl{}fy=Q*EB|ypX&WVW@Up^i`5xGZVCbyWwsuH_^*}Dar?`ht>+$(hD#*b5MPwrZD zE>)eXnR-uP?_n$1z3MMpe2S%31$K)$W>5djd~oR$XC6MoIeRBc-Im^1blK|(&)I`> z=2%*UmGRh%{%eU=yW4bUNz8WL+kZKec+6@m0~~r*J=5Cr<8SwjNp`Ki2LviPtiH%r zJUt#hL1uE#oJ7lrz4@k3ge=SE-{f8E*zNwzuBkOyEa~yb-hk|@9Ftfd#^3+Xt$x}+ z>EH`ii_pR@#$M6OVGsDt|21BH{PK}!M_^QZm-+TRotcuC4UDtZUiYu(YL}2n`jPeS zX597Ij)(lUFIMv25jq_2-nPBlyTN;bIp+>8!+rnW=3k78?0o(2hx?NA^LqE@@9%w_ zea)c5@b~xq?kPn^o6i``_K96%eB#le9Fs!}E+_uCe(#_%HR+14xuS*Iu}54tGN(E| zzj)uNNdDbXtHZG!5BoPaJM+vAa~PMT-_GeEoc4CoeB=z{-#_s^_*ndH!5kS^4n$+wYIAJhS?l zkc5a(foRg3ny;Z5QPC5p%j z=gj^qTU*~G(d-M#(9LQhygZSCYpl2MN%!ZaeAIcTy@TJ}e}|;hUbgkQRlJ*v(~{ku z@x-jz+p(U%_UxnB2}fJQ*7HVmBpOI<`1T+w#3by&vQBfuZo%|F&cCaLzdf(uGqgDJ z;(X1=Ya3;f3OXLH-Ffu&Q=tb!FZQ#Q{HSO-cKq>^HeQL{Ig*QlgE#(sU+-QLB_;Iv(>lW@n!DjyzqxfkClN-^=%$kNNcc*%{Xk zr6X?{zo>T@-uUv=k1!Fw~OQe%ha2a)HGa=u2g={-w1@Az#)j+p#msT-5kUM4h1 zxbU1T&ptencZc2gsvcjd*Jg$#zw?$}*~qtP-G?_S^CnasG^v2C1z0Ek>OrF|b6R<) z)Tz6kdkXkJXzgU#!Lmn>v0UNUhQh}MnfL8XrcPCSyzBLh+a3EBGizR6{`f(={G%_& zdM}ig7;K-wsU2nz5f~rTv~l~LrW-vx&zhVHO_Pj`*E{fRdIcJ5`>knRA+VB_^^EP& zz#d*uIDh!%d+9o>#gPwEM;6?WSpWaeuA{vvDUHYPe1aD%JX{An1yfI|swgWqFLeoh zeKq3iXDt;sb){ktwS9NKKV8r)G5wX^!?kPkf4a)>+_;?})_C1V*p#?~l*)oo(^duq=k?d?L~0Q|D|kykA^p`P0F@Hx0{b!S@V&~xiiQkttHqvh<= zrwj8wr#-n_EG^UzRr8P<*(J zr_p6)%14t&n>VjdQJ=`hp8Wmwdgr@$&cyhNJbXB#CV zMc(0Jo!r-puiL&Vzv;n~mHFolrpwzZQOa~kx847LZ<#qH-4#;}*i0hdrEHCIdsCcZw zcUzp^5m0{oXTV=64XTOnv`b8Jx;l&PYWSxop!z)i>|X8bPX!KV3mlG4e(gU^;@+#p z+h3QeIP)3q(ft|s>bvQYgk`~M%Et4XW*SZ4oGIOPwX|*Das`7g|L4U7zol_47xP-b|Kbb+9WDZ0F5z~~Gv7Yh za9-x9@MD3;x0)o>CQGUbD+qC(;5cCqsj-jy$Xp03=rCOHsO(+Rz7~n)r~Dtv-~ZRV zG<9$CDOrxtwnwuM-%ofvv3E!MFkBa(sU{>ZeRSuH#Dm2ZU7>0p95}+<-agR`WB>8* z!Su&M4}?B+u-Nb#My+18A^obB%)c+e9jQh>bsro-jj6?}!#A6(`C?w1ZYCAUHmSS% zTf+O<`I|yk2g}!rL~@HS`tu@i+M>{_7Y>T9Pu_hfS?y}1$Co_u^( z!Q)=%33FuLOsqce*306^1A)VDJw+-+3pyUQCqL8faBTDm&y8%ov@6KQ;5B0k@7Y(A zYF*PWJbas*|9Gi$>xM!R_|d-`BQzs5m)SGf!GH$w0eW?BC9h^CRZ%pA!wL zm&(f}wjbHR(+N2wXi3n@`@Iu$o28_r76h$KShQAu_N4jq`+ItL_UG@9=bmof=Y4=* z6u@Tj_fKu zvGk0ZtgOX{f4|@C`C?hDz|Hw^n#A1Vr&0bJZ{1mQ{Ndr=6DK*HYxdmXf2Y6z&UEs| zg$~i69MpAtXZKI8q$}I5Jz5|CUv%TbjX#c_iBE`lVz8TS`^wuN&TK!wVTNS?nMxL; zP9FdDl~P*0T>GQ{Sog@;%}TATd~^5s4%IegZ=OvD6ufyho%ry4Q79vu?aUh`nW-}~ zCAT>@RIS)mBlkj#Tk=`S6^^V6P1hW+u0OLZBqUGYy*RgcdR<}1!}I3y`O?!5Y*l9T zcjoc+=02BquV=IU|DMzB{Kni}mi0fFy?1)O3~OGr2viHtNIe}88FAuKmdUhfM&^@W zOcBwk_?5|_Dm3T*F43K*rzgMIQFuo6XyC(X5@IJ=4oMxjsOGk>lF2C1X~&1)4wj{{ z?YnNzdV5J#R7$$k!}Mfh-U zS_T>~ce`7m+$=2W-k)@+OO&It`|!2r^W9(m`+Me4(xKS$g`a*Dg672*Pt$QcG{aE9 zd#TPp*OTAg^0Ztibav}cYd9SEP~foAOh<0RKecDCov!MgbxyJE`TWRvD<(Sgd|!G( zvF*3fmkQo}O%kQKr9W<8uXhe95GhuF*{|wW6=TIL|MB5RnWU0)9dU|muFXo`JPU99 zcVOEqFq75I{LS5)`h12qb*HPBIK?~hOxt)OC8@CR#MU!`3^w6br|x>jOq8;3_f{wX zRrWVNov(lN;kdl>)f*?QZ2t9GOYE`Omd5+)+#JUkKfd2JpP2a*Ui|oI@#|)~#oxc* zXMDQg>@m}j*=?^}YkY0%-u%6+xz*Ok?pLa--K#Z!<>eKyDObAK*i*u^%b92P%aXG@ zCkNdBTYC1|@v2^Dp8vIcMI8_S-6-gIxR1v+u6eyeo7?(>()Rlsy-TNmIPivjg0V^a zQV-SZfUOvM&zIUryCFJItGKVX+OE9ay{ugr+vKu@5`a0Lx zSlPUNKhwlkHzl;GbG1v%o1nD5+514f>I1DKFY^0&qICOeere7+ecJHdIqR9TJJlPs zw;$Qib7aA`BQM^kd|v!`r)rx#Z<}wh#gT&g7(`-fwhD@g?5WTB!Co}EXroEK<`g4U z@2$H&-f+8P{8!G$b9U3z*7YnpS*Uku{Haf z7Ks$Tx{dFYK(*UG%P+jMtY=M}KkYnIt>5_>eF~8R+veTtO22M@x~a;};C9`Kpnk8O>GY>*iAT4Has;<+oM-(iymphA^>(j-@|~;CYpVKoEL!0F zZ>|kvpWFtSBn!)j>^}@Ztt*KKn#c7)1G*QwSz;O`wuCKwv`UpVRVnfLrT*EipgQu- z9H%(jyOAA%A-kEU&*C;re35j7O|^Qf@86YkK=LwY#rX_>6|3`J*toAn;@%sjc8Pma z-W|Al_O2(J-?hIxC+XkyTru~K&|>?=NBcqDj167~L^}ejpYfcQ5V9-LIP&S=QpE)~ z#7$jYb%Z;Ov`)Qkd;n@FY*(Ksu3aFORI!mWFZ3*^-j+$)QOeEx=A=wg#FMkShHPc` zEUQiV4ChR}azO65Vw?0QGpWb`>06UifA1DKzj%5MOI}Rp{8Op|1wsmo*%!~;lpDQ9 zjD^YAWu9SD!q>0jNfSif9$t@Ewy=_NE-qH&}FXf9!&wsgTZTlWmQ!A@O)Q2uWNW``oiPc4+IV?1x2+Vahddf z-*MMB7r9BSoN_0M0QI^|QIVC}QQJ$w4H4%Vb2n#l_V zzUGJLEchL~c%9?!eavayyQ-F^%(xt=yu#6YdmXFO2BTLj?Go$Gsw5U0r_45U+?CAU zvURJ0tE=PY3d1kK%MXc&9ZPJ>PI{Wo%fxv>cv8ua?p~#u&=m(>W(9p{oVd|V=iD^~ z<7*5nSKRJC-&*%wJn4#<_~X;Z<&ql`&umJa(B7t$drfD~%`Kc?RaH;yes5s;%NzrS9eSbaNJN0@VI(B1#DSGvO zPqx02Az*TIt6Gp)V?ZW{3)A_OWgkk)ud?yJGUdH6v!pDvxZ~lxEzB3^x?H%{wjeyN z@yUMjHg55VSyyL0 zN}5)?!ZxVe$JYOB;nNy!zK#cZ0Fml@u;7!=w0B=houyey}i2b(?S z8a6lbMiv+tJwNaMb!BkIz8Xo%>#^+{7COIWYjo~et@QD^sYCwz`X-6YWh^co@$D`J zRRL>n>WTejv<~-mdhELK?j7DIrr#W#c&54C%V`QwD6!=8FMr6cbY#I<`%OWgm&n|y zTwU04QPXzToZaW&v>i-2utV^%z&f6C_jP%5Pb<2Gf1K#bCYa2BlI%BHyiyaacfg6z20zp8+-f7vp-55tv5a5$$M&4z@Bs@ zHTB_>UtiB$b-sItXRcT4i6<#rgl5dJ61{r#C{MzXl$3@?852a^YRb%JojNUfL_xc+ zIC}e|JI~Ip(9t=v;p1b&w-?_v*30 z;$SNiNAtONS~4XsPY|1aOk*-=1aaS_J?ZPc1(ZwEteu+89JKE6EnJ}L@Y3$>0nP>H zy-l}Dtg{v#kUPlOE^v5rkj#!-7Do#FuQjq69$D`1{PW#zf!JM7LXK~}9?ySvk*mSc zV^KACD;^3-xCkj!EHr0SU#0TnO$U?cU7szorC*<2l+rnIMIq+luISFy0?v|xjfszs z8FKS930%y~d;ppsl|F+0g zNb-0{*h;Mp4P9YZDp)S8wBXsJcD4&k@$4 z*eqG}@R;MKG-=+gFU>;cdmh@ieF~qV+k(D(4o*F_s=o`?{gQc>a{k~2kLqll@Dzy- zf#zR3_ovurMP(US)*2-_C&#|rb^P2zf#xe-n`a7|wT2wL)cNZYSF_tRXP*AE`SZh4 z8YQeeMAA3{xfRbjH)wG@sJMQ8Id54>p(9JrGZ6_#>i{D*eTyR>_D}qj>cdmjwkkv` z=l(v~nKNg4`1!S+aPF#ec4l5ZoAuUa&7VJio;Y!$;mTB*GgY=t^DEgV9Xd3RebSna z7N&-rSGi4hCq#Fq{VaOH#g)Lt`!(L){QvBEdtB?Z7_;wmUs4mavs`mzrj_A|Qxm$r znk`6PQ)pEE>e&1A?a6lnYqsCl5qXh z)DwH&S*66*+ZK!7{P}9N#?4KwjGdDHHjJq$D%-9^dMZ@XNinp&;HgXxx3i16>@_qS?IcAc{ zla4tkZMtI&8s1>Yc$;zb_U(IV49Q8STuvO>*Q;_;u}wdZ^?dwf1vjroK7s6u*RHjF z`&K5g`{&*2f2;1T4Ah&htfRxj)ym|%D2>l>k8;}ftgos^GIDZ`+}fJ$xPQ7%WYd=~ zCHvbXHt9wy#BXk6{j^1!%Thp=>%@|Vdkj~$Gi3F$W|W8}2MJv%zr%QVMW8`&mAie> z+@frukCWGHa$cB{_eLP;uBYXSc%gn?DVjZ+Cj`oX}yrcniDMkp&;PSxOftkCL7mPUx)RHvc`#{%@;9%0U5H*|)P)o#T5yKKMRw z+Yy0nTNGaWeD3&8rL46qQg{)A>-LR#;mp2k8^Z1%HFBOlpa1QqR0B1&Lq1XR?UHgb zm2p$It2l&-N;NZBpYz`MaEr{>Rjc1^R#Fs@<2lm8I4SSlxu;(pysO3Ml`rk|_X$r7 zT6Auy!u&pkwxDGWL0<|qQoZs!7agzSwUYI#`D@xeSJ1j>iLk(88Q!yGX` zwQBs}SNO$lVPDEOLE&Tv_S4Sdn_0g3GzKQS)c$=CwK;ROa>0YS6AnK2E9w@@jC!B0 zu4q2#th#yfyA?Zi?lde<+RLJKWI=S^>6N-?mZp?_%Q@11d-sjX7u()!mf|yHm~w6U zqu0*y$$95u_zZu|FHsd@Mg?f_i-0v`dv`r}t;o za#Wpqa&NM&>gL+4e1ArRm3uE)Nb+g-FOIwL;NZ??LeCc3%dN$mguVX*!>Bb)(4tj4R1CD$+^}2y??ceXpO1u>rMeIR~f93Z+ z+j_I&TGSykDZY0;Ou-EE?sSHF+uUzwne!s^46s_`dJ?7U~jRDaSt~M zeXzPYe&fLtlCuu$8rqa~m#sZ9Xj{R+4u;j z=!FcEvZ)hXooj0L+<(_}`CYlMuW!GY%EXOXLJwtKZ+YCFK2csr_l(}cHOH@P zRGgIHa^g_rHPL#VwY$trUe1avTl(&(;E@H7o0^&gZ>3pL@Y~CR1^N z!S+)h4*x9CHSb)ORoUIa`qm~^x9#4QmsUy}e187m;6C!=^o$kDI5TpXd2Bay?LM~J z(Au{z04{X18#g zzmb2!`%_VlcNgqf$|8_3FVigP>qUhOxs2>>_pW7|I2c~sc;kDKj8?xl`&Fsxf6ZAc zW?qUbzRDfB@M`OijO*?m-TsG{O!1W4%Eg`1@$v7+_ZM&6J7MyS zo^YPn&Wm^k`mrXN2WJ~ELxXs)wkllCC@E~V< zo{^3_cl5*G;SKs}rkA<@zUEDeP<8qHX-emk;-L4xHQcW`Tr>X7YpAjGmAAfQ(E|pS zs@m&p7k2PyoEcb zCd+l^T=wYL;`GexQter{3H3)h1nc&u6>o`KJaM6E^x=~pGVyC=OtRm+k=}Y@<^uN{ zg{|R=Zob*P`|f;K-F!&GG-ryt`A%lhq!`W;DY0(N%z4};uTBNG?4Debrhc=aggKZ+ z<7ie$!4&OHUv5}lS2|*lnqByE2FvmN6Bcjv%9t&1Ah}4kqst>+a%VvI8|f_qtgEYQ z6t$*$@yOfFVLkcfc~D$j-?C+DyAzgtaZ+I@_6%urI_SA&A^YZ<`gb#YZy#ae4Dvmh zBe+;BV`I6%vc6KbB$g8erI~588ve+q!e?2X;Zm$pGQarksV-o|=Kz4{%74N0G0EdA9aA-DGiLztUD^S#+qo3hyc zMPHPf@$xY%Q;$iy((x&rs#AF4zOWc(taZyai`xA&yKqa~W+$Gg%~R#4Jid`-8KupB zT*}%*za?e$rPTtDD{dCb=-Zx4vghfSdUx?5e@Ms03-=n%f3N9V`7+qhs?g-b+wi84hG+80o^MscRZiElr*$u!o6R1aqS8P8V*JcckALejihV!CGH0#u^nUOvM;mB(4N zj@+m&)8|Neviy0qiCc&Ere^|+gR@ecwr@|-=W$~`rq<^=!|04?Wz~~8*@8(Do3{o? z-kN!7&HKDpZv|KK#i&l{no{TS^L^(ley)y%Ax?Eq*fq@dvL`wpJ-~VWaJZ4T=mo!M zwzprNuIQeS(Es7Vg44T-&PFHAI6EQt7R%4;@y-#~oB7LAR;bD{N1xag$&p}U!u)p1 zq^oLiZZ0fWw8I>xPiHrN`>ar0*qrsO|9elSBY(4_Tz|Y-!PGi6=|xX?tosrn?+fP= zS|9J&`gh_gFXj+4h9{v{_demh{;;o5iifk9FQ>TUqWsC<|0387dptR;_6c{rzu&T9 z-I?#bMH^Yayt{s8ANR73ij1wh8n(_WWlIWZcyn;ev1wOME8LWN66(z(zI)45FPd|UL3cRu}tv6F< zaqET{CdcG(Z9%RsEmg^Hhv(jYdTeLmqQ!NAK0Vitu$h#x*d5r=)vmynTAPuVx9#(K zo{A1Z(bg4*CKZ^Yugl8Blzf1(r@mGy0vrIw=La$ea*Fo$g~xuvD;ShE_QR=TVvVt@}+^dicH!L zvoC+v+=G&B)73gIx@d-1e~_unS;aMZ z@|Ou+zqhT>F@NzP)ty<7{fytf;^2Zjfdv!iJKa_|^~lk7e$uJKCzPKH{Q6rhaP9kp zdC%um{CTF~d+_arb5V?2m2xgP@d%k6wc!5Z>vY?+ti_7!)7*vM1e~v}6#lt0?q$Gr z>7}h3oOl|0MPC6$6ahh@RseO`t3T_G~F66v<6V89|01vC|iVh9e_La}K zgo$tjYfb$X8lb=Fj-ogBT)*_^d5N++J32U~ty*0@VTD7xgyBK1BlSPSJyU%X%_KVc3iYT1y>UQ;S{h@0*%2}6BF>{D-59x4NQ&xU1F?s3TM(K#C4$`!J;thZWl6-&}##+lP6X$J`a>vF8PkJor^K{kd=cuT6;y6xgf<5=nxg6Uz&-=MW*J{VVN&NgAyVuM;%jOWzFL9e8=+|y> zcY(#LdCp##{ne*zo2!n9^%8HYdANo72yyWp-6-FX9$o5VMu*(dXxH`GZe1NO-M$ zrOJE$Th~`zht*sLWwjfE#f0z9u{3CH`&1#>oS4KHApb(vd;6!QZi4qL1zNg!V;{$9 zESZ*K{pI%UrQ0MkGTvG~eI@(&%8beDTs`D9!+Fz;?ZU1;o)X9VSmESmIW3Wg_ZCRR zOnP@b)zNjm*JWeeEJu@wn8d*=H-C#-nK?xLsV1q@4px?Z||A6J-&xzFI>2gC#l5zK6gpS z#09wyXUf+*1r;uPy{Fg!P|4tX;ksN^ zaE-vvXPq8~stea`;$!ENN%*&6?^2d8?;AJ2k-B((ie~VHS+h=+O^^|5W<03BhvDSI z!(|^DEpNla->SMKDYwB~h zL+Jv}=~o`kbkB^U6tXo(1g6V1NvWhKUMHi)v(|At5 zyR3bHLBX5Gmld% zO0MzrojOt4@+j`j4u!+tU5&1+-gRtm2M43Zw^sdSCY8QdO&Fv0?p-6El2w@8#}?>V z8{Ih3`sDdpVlgHe3*T$L^<>~lZSv^4`6(d9^T~wLw4KTtbzuc^OPfw#P%?;3OFC;P zk?D6_px8zvHGN^s=Q*}VI9f~_n!o?w%3;Wq>U=iv*Ntr1q=MR;AGr^v3pB@w+FAY5 z>kE@T_-LZ{1alMlg_{iKN@Vr{3Rq_y79x>ksZK=R0amdGzs5d~)0^ra5aY8?S%ce@2JLj37cl#%~qkY}cA7Aa89&k6T^Z(rc{%a&& z?hNA!8KR(_mpJ7oVRA>J8{!PEP-@2m<*1R&%GmSmMtDJvqZt^>~ zm=B@Cxsxt$zWu-JwQ>HDJzHEeu9-Z{kDh<5N6@%1_EnSiGzriS=Icw}R{TG4yMwnc z{hj^K!^~DYc)z#HAjm)aPWZbF$|96IQI^T(ubCT2L z{ns~J9CI)wUZ+l$-{l;$t9i54h!gJQ@AM39EcTyy8(^`vwee&D;cJZElm6o&fgRvU# z?4I}M^A2n|A}L{BqIA#h3)`o5--C;Kq}S~zttosIJi+wX+r{slid?e9IWKZ|i2YA_ z>Ts&6)?GI5WMp5y-}+V`ox`63%ai^;wf*t#&Gv|Cdu6Qka-E|>*q$wkX}_v&pM1)O zk)?_AN#913-(hT4b9BWz6x$YTeBZiut*TpAh*a48A2OZ~Jtd|aFxt=mKe173m2!(T<`gTC!ig>Fl_@+Ehl zcS$GL(ejGY_uT@Vtv)aRuM75^H_wDQ+kgGRrOUW?s6IElvhvl3!#jH|VhS6M=KT2k z<-fz~ZLFbhLwD3(;aav}@@dY1ovWWSzH^yzU->%2I<=Fi{i#A4nj_Vo-e zH~I>cY>Awgs_f=y{GL%FsK`+=@>fa7_wRn+F4!f;&Q)FdYG&TQTO~TIAA6SOzFw#2 zKg+K}Q;^8kmq@Eof`9llk(b(ghZh&Fd!2&WmPF zv9@b}^PpT{OZ0=4hKi!ESosec6m5E1Y3;$)F7eNN!gZA+0>_n-{AFBB>)su@bN*$L z%=*?1S1e=uU!S(+zHYFc`IwKa!pqOKk5jrrdl??}9y~K?!S+kba*x`V*)}g+c-X)` zS8#Jy!0W3Lvi4&6Z|Ye$2d_KatDJwxeEI&SdrOZ0P^|p%>WcV`sW$DADHB-P53+QH zZrohLo+q_)%FLGamOojS@yu`Ao4VVu_K43J-?{AqnHt@liL+gw)FgAxyZ@EvQ=4y^ znAF-?VSBcGpMSzv;=BUe(Z`5GGbTDt$?v|t(P~3wDz`Ti05m(JQHnmE0KJ<*JeH5(X zzNB%D(YBZyM-p7O7_mj4%RjVdORI#Ckx0Dw+C(EMX?s4QiAT+@Ms`e;ntAS6R^c;W zk8YpCpLfr5ttv^oKTU#ZL2aIGmh9D=SzOTs~(yQOha`@m>dj0Z+ z=RV9<*F%}_`SHh3aOQc=n$>&v*&oSuvX#0{JufCmxa9P=??@7G`l|ko7GnN>KV>H=2Y>iCvHZi+&hrx_ZH1~9%bhODJN#t{ z(=)S=-yWLJsQ;lndESAhFRm7m)lFBO3r#gDo(oT|?+z?XUY8=c@b&y`i|+4zdyYQv zSfV6U-na0LO8JAN$CZ0F{I=YZF>9jK)N?V8@1*}LY<^WydH(a6rsPW-YSMU%{Kqu4|1!^Hm2|=XAMr*EDYxf6 z`lV#E|8u0+{FViiOx2D(Ig)wCw=JnIplp(~yWY`tm)=(VzM#d!E6cUirL)jk&1k#S zZ3*eSx3jwpolN%%mM)qVr|e|CxJBN&jK|;puSv14;%ja%$*;Gv*Ea?&u>0|#SwlzX z$gy7OoA-m4`?&@N3jTY0|6i|TZ>O;Oqovd14(+M@JYnL*M)9}`M)Nxb%&WCq&g`t# zlu0V#YL8C(QYp`Wf-%ilL^{4X=YAE3RaDj9C28+!FZjiB1xN5WXij0?)8Xy4pyso0 zKvw8(ArD6+IpkqD!cIsR48?xv+b(Co;XuSO(hfZSmAFbVf@6gWT z=QCW7zP!Br<6(Y#gAPYcDQ_>Y4>ywgA6|>jPu3yOcg^)>*B>7ZPQS3^^238YAtzd#_EdjkD!XEQ;JJ2Q=# z4mVE`2#%3mzU1Y>=8Wjw`y>@!^F)hJPCR_!MiG)Zf!1%iuXSKF`BJ=^PYxVAN$&Bji*`CsTBO+?wGsQwM6c_Ir>t(Ze6nit z$_3604>cuQ(p3};TJ{-F|EiHZNi%Y80Nad;**z+LydBc)GpDA_n9RGtVd*mu|3CKEr|8ePoxgwX-kfXeXI9P|ZR~!(F@8~Eb?w^jce}Wq+xhkiO_}0w_PBg~ zPyYVD(`22esfk#(==gZ_UCW-(bG%pj_^)4={p~ket(b3qw?uf+qD8yjh_G-SSrC0& z>iE1(kG@3CIpcRJ-S%Ha!^xHf{r}}v)XN+a-YDKz+^H0BjJu1`(cbL5>){VNY{oq& zcj{=&Ri8SmQDAD$ZL<^m{|FtLCH4DsE9ls%`cJR;%=b!f3%Qn%dNK0Ov^gEpZTzkq zTzK}L?6Ea1jfkuf%eAt7=Ox>Cw9{Eo^XtTuS*6WK?e3?oIk9%hz{2~n&YhY+jVB79M9Fi=N;zT zT}&?emht~r;LP=kY{o4wYvj6GuFcW(D@$MqS`)>1tp4xydPO@sx%yw1=Nn{QS>ecP znDN%P)$G8YSedo1nkVd8KQFJzIV5D*qMjmfrAwh8X#JP6-E-I8pSaFl`s$i^_21X^ zFTFjX_3v5TtJCMUU4Qx5>iT29HK*pTyL7QpO!8HN%lWKLHC$6mo6x6pR6J*BEfLO_=Q&zfR?fUb(K}nudo58ku=4bfUI&EbadLY<7Nxe2S6erp=orBNVfR znk-q0P6VkaDKYIXdzBRk4Ts^3H)67xpwh=6)dYw={b*$sXsh1+s%KCxq zo!`IC|7WuEdGgDpi?2JBJyAblUeA!|{PgN$k4A1jCZ$8`oqCR?Em*qMdz<2G&RI>j z7tY5J(6vHHR_?P3aJv@dvjBIQ5Gh@93nsp54 zg#O43?lXJ%>v5gYglQ64Tcz&T|F^x(B5hk`5?x%i`3tL|hhNO~&(Ao%?0%4vH-7HpZa%)l=9ZyxJq^MZ8A8?3@lIoMQJ+;pJ{$=mB zDc`SM3uE&B3M|NrOwGq;*`j9y4xGrAyfSS%#sw!`j6T5|6A9JgzmdMrB z1?wDp`TmB^-+tduu221QyQ1Qfe%a5CT!tE3<3H^F&sTUd@%M3#$oM12nOKZ=O+Ti# zVCz}Ce}@*eFFdQ|G>AzwBr64xg^`{aOJxZ<(s` zs$P;5OZHs&syFFMcHyJrp%&XdrXE@5=ko8<|LzkHEd?qv(x(Qk3%kNBYkTCnZ?D;d zMo(Ff!gJ|2rSHDq?dNueS0LVs^XYYchmgv5uPk+ruU(@pvTg0gWqcXor5opMs$0A3 zef>h|PyvI69mh>GZ)$2>w_y*g+|CogEF!*ogc1(tN4c?0bFls||nmitjO9p7ZLfe}|*>Z`D7qG~0gl)thdd&Hie-vB2TEoW26hFAR517SPzRHE&_1)5}QB*_@4x zK`%7(T8xhd3p5{)ZtT2rC8R8}=;wyskB(uMDvLu`hZ$NpzEetB>8NMOQhcKI$TwFf zF{zZDj(VD3Y+1G6*7e?FT2{rKv|;PQn|F>bTI8JXRJxl_G&kykUbl-zLsb5u+wNL7 z|IgLDZg#}LdE4*ov{yPgtG0=Ur?3c!C4rXW1^l|(rsi-pG;&$P{8vZ&o#z|NrtrP( z*Hb&x#l^BVhV$di&EIU5S5Lmdv3ts@^ysLM&y`zG^!6O+J>352cbC?heGy%fg@zRx z#=Mye6(`&}axmlK%a2D}gZ7keV_93pyzH3U<9l0Dp18UzdMJI1+r!f=s8BAnb+6ir zorRoT%kH+U?d7}?uI0Mgt)WMPIq$?ZCF?l;rAOZMAAWjft<8(Rh0kO6E|k4*I`2s1 zw(bDQtsaw)FHo>yo^(y5rdUU4dTvu?6sv)bl!Cv;@`Y2bK0U#?eb=_OqBp<4WX4$R zkV~5^IC*VhHci z?b?cZx0oB_k}Z4REIO&GuO-A0WK}1ZwS__Rv~7xqQp3W?KRb?I(sk%wuWR^6H0eS? z(19Q6^D5hRzP=PS*K9(@Md#o*j6p zGsD;C^#g~?U#l*6dOVcR*)=b;eJO90z4kwL!xMA5A1Pemy}noA;i7h~&x=1@=xg51 z>~zXjbGk@(W5*&>i{$TBnMs$6Ro-R5)&e*i2K-9h>$x&NMe*XDJ9m=rpJ;Mg8niKj zZ`)BbwYJ?x%RXOU6M1-zw8ziw$F6L+=DpE~BY{WKh{fObt4L9C@otB{d+Xk7c3iam ztLfNtJ-+_0*Mgu)?6w>3*Zt0YR_CmznwpyWqyPU8{%2N~f(y<~nIe*wX_$FQWzU~a zr^__MY8egtLboTTXL9$2Z2g`Q=(uTLafwcl^3)$|Hn2UPZE@s9_CM~~*#ciK);raF z-0^qelwM`CW1EU^ga>9bY&x^Rbw}==o-dsN=j$1c9g&%FH0Xb$qzLnqtKo__xAQmU zo#$Ux5Yb$DOQTe3vEb@1?|>_J4mG&ug|KkE6*1eIaCN58oQ#}9la3_nh#eDH%2YL( z^ZoqY4R5b*ogpdTedNJ{|L5OZ`nVkMhMBAMfe>>8G;t&c)2z0oj@#s}Jrnu*|KvU%(T++i$_; z#7RA;rdoP$NdI4R<;4~uMW3jZ(yWNsU`+h{u z7qK+`s*rlye!`}|q8huurq5m*#1uJm-h79I4f*O{-#VCo&Rp_K;@Io`{J)#J9e!WE z7_o>kN#GQhS-IUjN1k)b^(Qz^J7oL)j`1r~!ymPNYQ~ZhDcaSo4}aeERA_F`wDEX+ zFlCANg8ZCgd@Kfk_#J-!sp$Dylf3BQqrDepUh`hlKX&h8*-Oskw@2kW1U-@)^`)Dw z?(g|;U?sCPdWYtfD_1yp`F9?g!nkk4zk_vqzIWFu8XVpy*z!?7#ZF*Gr&)*K+D>Ut zf##PABKlvgHceQo7|zrvs?3wL)6F)E-uhCxL`gG6hho^LVxvjSRdJ(w9_M1e=)~%NqrH=%C zUC!R0aCk=09fL%jq8dN8J&Wco-?e*Volhr&&X+Xqx~dIAn~OFToc&SsWa$!)u$z2y z<@n{SJ9|@?GJQGmX>%TLBHL4a)d?;FhqXjAOm(dJzl+vMwu?S(woALKqHT6|!vc%L ztj7{Mg=PybxUk{w(<64tvT+yX9lCQ1RzJ2}=DT9$%$~BvQ#3i*p?}lvb@hg+WAFX#Kf4NhC%l$MNXNW zpV4vXu-+!UqLtNxOgo$(J`t03NVu`yqFXEB)*ohzV`sZ=SRCK9$fH@pZ@P4@o3)Xt z))F<|+-%wR3T)30ai>hEbzHmkqRyL>H(H#2RDXXb`jL}4RE{esKKJddtx8j8ANulq zZuz_f1LIKZNvRw1b9UZH+;ZGS#(UZEo?{XD8!V>ns$FO>Noi*r+sf=O4H8Q>2b?ju zrDSqgvVv`CO7e-o#S(9d6DQw%5bfr?|3=&?~z`_^cb%4SCNI6GuF=ZxVAdW zg70njewP2*npX~JoM1k*@WaQ$aW7K8@CmGZ{Bq&bN9zx5%V3UqX{nrca@B^YiGH;+ z4!1A;oAy94LW23GdRlw%i-bL)_dB$YPkT74YomtORR>#+1J2Ud;$`jFW?ydA_n+Bu za^_2?(+v&BAFHpvkYdDbcI-$G$NJf6wh3E2KE1l@B^tNm&+!W1%_3}{FUWUmW|^;> znSJmTm$Z@Tx(C6+N;^I5)k`Z&^uXGEr)jcNY0Q(S3%joKVD4_>_P53XjXqFiP!8NC*iDamiXeVXgX= z{5Kbcgju`3yH&3dUlIQ|&!}(`>&5Li-1s{TrJ5c^8 zsBA{rp*^mzsz3Cf$*=o7o2BDmX{8=#wbdJs`Y-z@loU<>()-xG!c%a9*_nivOsSAN z<}=v?7SBB@oUreQc7abUSGiY*Pd`VFoo4hlhtHo*2fQk|bgRgy;SJBt$Jxs!*Ic^Q zW-o8g+I_e)TFv(WYjW4b$#YB`R$Ts`GvlSQy?sPyD(lZ5udZ}TEcO+yK5QJCUa)7i zw7LJ916$VgoZzgzbnV~;aquy`LH|`d*sZCe6y`=r-`2St8dJEZA!o!ke`{vJR ze5RLK6);Uq;}oODH%YIJ(LEXKt($%wjt;DTU|Vvf@=o=oV(*K$FS5+$DbD_NOF!x2 z)%&ht7h5jeh;BAnbDha#JG02|FZ$lcZx;Nu;r22<-(}K%>G+2ArIridTyfm|lv73i z4p-~Vc2%#t+(!B*5~Sa;mlv;g&pxqUfXD1!mHeCF>3tFcGVgAyLA*Had2e^oa>HKR$iAL{7zZ*4zj7N1?d%t&;#g|?U zZF;ml_qN%aJ3E6roGDd=r#n&j|$-Z6b>s$8)pO)HJ#~(Y>(|E1^;GQMT zvB@S(Hj!IyvAG=Ib~8I+scQC1l^w2nwHs!heQ54+^D67x{Ce(XlRdnG<}ZCEAf<5E z%=%y9GCBV_tBy@M!&8&{%H_<-vyNHv`TtieYZrFV{<9d z^zo79=M&#+?|0k&&gVeg@-)$eo4oeNmOKqtcHO|D^x5w6$|aXIv;`a2uQy4$X<$!_z%yH>}&ow{A|7gJsDq z=No4iEPZ8szQKp5wdWXLS5f1aEemvHC5*0qllb_3mDHY~XnlsR_5QPaoO;>nSJ*VB zOcgTsm1sB0oyDMjZ$-Aq|9#t*1aveBo%qmJVK$w+`m5}Z+b^a5tX}BJpzzwOtHAlF zMdCxLE!~~_R_nJO_ZJ9Qcwk}nyCce;;tOx7_{Mr(XHcyaQWo1_^-Ac5tkdU>`*Y^x z9XuMmR>Q-8$&8lGVw`anF?u1hW_?JyEoXAe>i6o0p254ODLrDn@MEdcmY25|=9_oy zSN->N&y%MXWhHu2)|XWFUsho*(e~su-rTr`=hjNO%J=#Prz|CY+7zBS^V#6_q4f(& zj%6tdtqNH6`>V+zN$q=wzlPs`c5=ce{l~>JKVBJ47Fg69rMTh62E~_8@|NuTDiES; znlA4;rK87mSD#DN?KXeOGeuvg&2Mxt2vNM0v&byKIou{jp!vRz{ME8Y?($bS8uQyv zE8D#}`HEZ4WOruS!VM9;YOG85hX-znkga;MsN7X2xt*m$aAsvs`wR^uTgeFTrcT2% zfxIejETsb0MC7>~mU%WIzrS7l+U#8)|9n3GJ-a_3xM^A#3mb=6&4+{R3mACUHmrDT zn0$)2A#{N#@{QUfkIE zu*~`M!OI>$f3!Ao{kpgHV1J>J;i9F_JdV~boAKqx%hV-l9U{WgQ@?M$8Mx4M^|?8Y zw+{0=$A+rb3QN4a7&P_TDn*gHkjrzIth?TEl(q80s;fVqF7#4-RQb52P~)ZdNyQ0{ zZpR+0uPXSwge&p!;kvA91A8ftF784Vu^u?sc zk^km1!%K^ouHt!r&nT0t&gSE7iv=^4c9v?~Wr>Q}R>pKDXkqs1?HQBr9y*%B`qd~% zNK@^gp5*e|t!%Ry^$qk6 zWpaCkFCFTC_?9|kcqAR{dCDtyI`qEji`r+s+-DXDr2N4>=p^QT^C)#cFV*>GI^pttt*ZiG5j2Mo~Ds-@!M z!DjZ2g^%4BOD4=cC^Ff@&~TB-ox|(Qq7;sKPqq5<=yFtu^f|ecKj-g_vEM8pTomkh z&8_!f&!rv_N8_t2nCD+wGk-?+>gD1K0;=CNOPuOc%b5Sq@Jj8s4raC4j5UdMKaxro zu92ymGg&KlS=_Ok4-Olqap_3swI^R<>hDd^IH%EUJAc|Lew&6RcXu!RV1M$Nv6tpE zOB3136?#EiCU0BS&cjxd8N~YR=`)AB)1~hxZsn@&xwOUPj!mJ=CsV0EpM7NIYy(vf zbW8utuU-CLW}>p}+#hErCLfyjb=AkG%y$A*-e$aIsLEXVO8kW8)F0os{^vixDtzHh z4cm=p&oXdrVvH){3+w1LnD9o{BKCpjkFB3|W<)-5@CrIK$@GH6C8Mpk6OT#1ZQr*O|VHfldp|Nh-O$L@8!Vf*asQaxXl%(2@fv-a&xp^5&>IH!s; zncU-CzC)%==J$*DH-5ibfAOxA#nP72^r=3Fu7u7`-2P?J%O7SXX7gI27Q5cNF;l|6 zUinn|dgru4){reRd<(B^t8%gX%gwlT_qo@sZyS}j#$LD=a`QIh*=hR~EAQ_Pn6c}; z-L#iVmXQpsmF=sm1%3YCwr1F6Cm8reds+5=?%RjDANox+Drj11b?v$f(~*SPwT(Ti zmp$hWJKCbqV%vW8K1;_%`Po>lKA^*VZAX6YzQdf>H?&5^PB z`9b@vUNiNcGW8k4rzfAjqOx?s+uw(TwU#>l`ET=+Z$YzqZxB{oot+Gr!GBsy^+jRXbz$ohd@^kIqP5f391L!K zDmQyey?xO9Dy~((s$Q-)zSLmD<>aC^eebU2;`TS|B_usPo%EBV!j>@@-O>^J^XWoh z$dcvBpIZuFY`XoyzM4O=DoiYIz8PoopO%o7{U1xNN-muL@u;WhjCoTv^%=ZU7Vh;n zE8my=)ap)nfp*`HrProEWZ4#b<@5^{9p>fSB9VKFwy}yZhO*ZyNS)!5yn5ZB^vJ8C zgz9q9d#@~b_O5@|8r1pbjn9+k&lN3MxX-m6ODie;e!^iG8U9^m zj^o>la}V}CuWy=Vo6ptYv@pc+=JbEAZj)~NI%ZF==zpHGNBFb;@BJ5^^)xPZ?|(LV z{=$D3#7yLV3S7Q+uSxQCo@-WGoyXY)acldcTTN!ONiT~oc*&#v>C%$MIuHKB-3vF& zny}})?7@iOGL!jx=Qgl5a=(gm$ym>^DmP`l>E)u(Ri%&5opFCJ{=PN&(Vq#IG@GjO zMD)5uIv#STh-6PLy#8quONZdInxm7B&Sfw>G)HCs?ML7wBBbEva@>$H$)&_XIV{p< z&juDlxymPkXJ(uGzeoshZaOsY^fcYWyWj8Y7LTt9eBl}Jxk;zz)TvW-WycQl+v|KW zo~9Subvu9m-uT^0SL#~3>)dmcn$~DU`Si4?xlIrjcwkie)p5z*Khi5^`FXBas1RJc z=Uu|AyNUq@ z=G;h3UZ&$ zNnD#AxbQM#=~=}kd%yi|tX6p`>m#YT;GJv6n~4Iu#eaNSm)CExsYi}$X7)7E@Pod$ zUs>o+WHH?1aBSVNyfv#&9NYma8cc0C)!hDnX#K5QwXR8mrEqUwtH|N!a`I<|vfda- zsR&xcajG3N2=|56E$44@OP_dcdBr$PP>*=?5356_(@I4iF0cJGw$_nMzw4PTg(J=sh-nEOeZ z+tZY()7HpufAJx$RyeDw%FxhQHhxA#qvg(<3uZk3+uo<-x$wZ+V6}ub-*Of_zkTBT ztuHsOUTfs`?lx4_X4d-OzxbS7|I$@G5e`>Hw?E>ab-LivB;A+gSw;?XTOKBu*Q9hG z6b|`iba%5!UX1|($U8WtA-t-FQY+s?pn55#+!;t;z%gf6ZFBY~>m_1v&<>Tqors;$)1Ex%U0W`=BFNELo!i;%i@rMl z{>WdBfEK3k}AzVyo!9zlyev)XEh3+d{rE;-@Hrw%C3Z4 zCzi)9zxepelAMn|eL1a%{@6TulES;PTJVfi(ax9^i%+OC+V7vV@{&X8Ga-pv#|}M9 zUw-=KWz(9fp4+l*<)8Z>12RJI${i>w{Z|!XR>OO)Y2(KWml|?A*g6C^^Qk-Z{9DNP z-QjIaYSNMF{X#xHE8Ylk3MfxHJd45bT;H>d`b1#`H>M*UPwpMy|N2EebLB4oDBZ^H zM@;;&R`dDWWV@*5yT5tDm+5eaKqK7RC)d-5?mP?> zIwY~3Z#D0JiwMmdqT&78?r{>CtWI;9OgNe(_qi@SFz@xdL-AL|7hId6#andQX8A`= z!Ll?JMVI?;ISp$0yRZ9gdN}E&*pw8j!;62l8}8eqv+s#PD|ek*RdS^Z1? z{A6XWvY;KtmWRaVyp?6!^3vL6)uQ^ywUI5!Q@Jl((c5}usUUx(MW&*J@sT1MX4~%U zRV$elqz~7htbVV^{rLYHgT$hJJq2ywmBLcCE2aLgcG^+Qu;KLNeI>dRCd-PJUE6Rx zaQSzGt0`;;ejKe%oV{0!BhaAqMlRRFCYBDtLkUM;T#7ix_fhW6{M8T6Wb}6m`Sd85 zH@jGQPGA;&d|Jqd=X^u^?t{lFb}>EMIyK^U;D>L`9$7s8H;fM+;Ye1yo44fO>+>Er zKfXFJ*)2cxXYI6AA6+j?-w51f#F6o1sm~1afATk`#j%CEt<&j^x_O1=ZS#_j`7$*R zRun`|c)UN7&i2~w^N8`dr4EYV5y+g2}mzfLkrN`297rKJyqjw~|vwW!iKxTet~PWg-L zj9ph4Cv*yO9Qa`O`I@TQ9P@*1S5*ERE_~N2{HpD-$M5Is7iN996s)w z@)fVAZf0aLdZH74dU<1>>bXxZ6~m=hOA9Hut#PyZ@%)I?ksrs*_cflJtp0fS{l9tp zPt<-`%lr0JKyrJ*{*8}i=X9EN9Ncd|@dBe~MpDbReX8N@+({NPTfPPHEa;r{?qugv zPaloR+Tq~_ce|dtJrUjbQFIfh+nKiHL)8_z8asU#=DGaS*O`C1@M(Rdh5Vm|TVple zewf={@cU7;`-;C@<;}cle_cM!YEg4jaWAeY)hyk5!LD5Y%GRlux{@+iTJ6cJV0r7Y zG|g{^zsTcLdM!UU<#*N;lygP0r#o_-eZ5}!=~?rIZ!EM|S!5VzZ1m!0pEtu@>3mX$ zUHI2857dA6FEG&+-R?WDqpM`?fq+|U!uEvSZfLFCIb-&0Wtj?xKc7xFyGb)&74_Mkv{kV1 zpqzCX&v~2AJq0fo%zeRYen+A1SdXOf3-{aC)8*GcYjF;I7d1mR*8Bn7hUt=XU*l=Q+2=&o38veAG+!-R~u0p|WX$ zyA9dz{%81f>}KnX8ME7-^KD&pN@44g$+Ms5>uVq1K5ZIkOycR!i)kBQ6*>NX<3FL~ z1+#`sZBpqy#)K~(hW_@^=L7CH&xrTeDrKMgm+jl}qL1N;v4vaPr(O&<$=}mB#rz(J z+>sA13*`X%@$#rsn)_s!raX-@XW`MTHj~$`xyc%IW*v$7uU#f( zeR+{uaNf`|w_^WiiEU-`9F`xxVn2oD`RAhI3A1PGHuOY@T1_n}D?J^xPOmJcC3yKV zr|ZgRWtD^%D@Z@s)v^6h?cA9`G1g(yDhg*3-p&nvbwFHfR=~WstcG_2=372Wj5qnU zVbhV_ey6Wk_{wr#@#O0Ze{%V~)OIuOz1#oD^m%e8GaYH$l_#X&wnAC#@9ShyYnT1% zm(-8ElK%afC&?hM?op?@%bV(htl|wTgm^ZCOWCP|l<`D*Cu@>VTu z-z9jmQG!Kw-M(L0hTCLL&$TY+a{008wBF$!N#i4THmr^N)>B@$r-%FfoH^E6bGow$3bAb-3rUY?{Q|Ip%$Pq_3aV5vlul zUN%p3KlidZs}D>kRcs31;huVJkme=e0jto!Nacd-5jpQ=b~we3_AYh9^VD|I*Lo#j30Q zck9o~I(qc7j)qV9(bBBu@b5|cH_GY1{=WF=wX65-|Jj~Ab79ej4Guf{kL;4-beTo!& zl5Km&J9WFypNU%g^xe((Q&^HjU`Zw_S_iVo^-Shr7Z-I+fNj%iO5S9R!#=qoEY z-xc~sASPR>Iuuk~yjM83xZkep`MhdBnY8?Sdn|Jllo^wFivPNEAGxtLdwPQY1h1{> z=jC)_cZuBp^UU0^^i_!9mH&U=*B|fJ->31fzWHE-_PQNR)8ndEGMI8m?D=*pdxlxA z)W65}|CqVO^<2EVLMCd9Nl!eQba4K^FY1ju41efrXb33ZyL74P?d|Q!=jK=@#OIpL zX0RwKDmrk~_drumZ~UJ};uck3G~Vrct#_yJxUA!5L#MkPZA^w7MkXdE4?Z53KmP0M zYs1u2B76S*dd=kfWV7C`7mNP=w5<4`@bAxa`{d(&vNNp9*Zn9zcay*V$KikbYMyGx zGaj7lE?3Eto16Pr-{_`VGo$3fZ`oTKBxIu3CF?glt<`N`-KqG!%KC1e#9BX-Z#OR7 zNNzp*(rNa|zWVUe2a|8ZSzv&p~$jnA9l=& zTk>(jZ-=iww^sd%UZo{sQTO$2g+ZmV-)til+tkmkOS9f2zxlUqLgzsdVJ_oeX7l}o zuAkYOP}<5XS-5Qa!>fB&Y%Y6Hc{gv)rWX#}p6S3r3)=ZRv-Z5LyOFkTk*=S{ zVezlo!U}Fz+AW^2v;2xnc749;M9q@lrFxALfAXF;u9pa0z+?-EjAEzHK`Fgitnoo;Yy#5>E#3IG7FP|@5x9a19a3iJ;XS;b1 zSc?rl?WvM(-E*`~v$0duCDm5*mxa{OfH?)RR% z*Lx_x{4erq(85Zo0Ta?=`ew_Lx^;L_p*b(h11&^Lt&b6@L z%oWud+A#Co6`m#gzN#;&`PPBE7E_j4XD(Q(f@)4odm!gs0n-6b3BL!y=b{tno`@vyCiO}GP3 zlYosyI?v&a+}kRQc`IrY6BYM;p8LKd!qohGPF21^sj5Ryf?MW<>_wbOSFT^@UeNSX zEUt`+`SJ4kbx}D*Hh-VDxi35Xxckhli$U1fE6w|sL0p<~5A#rhf zGYlSbP2&43D*35wpL1zxslmyB*~z>~Jl7)h4=gml>AJ4Yv&txFatez`t+u4|J-%RxMTUg~n|9KYBQ-q#3S^RFnIczdO}$Ze_ilyLRxw^TP49ljtU$jfx}oj2 zYqR9GlrpAe$^BR|Lq~7>!>*fQJ!i|DY?-PgQ*vjHH)?GPsxbu{2M&9`;FT4ZpPhaV_aa+vOIp3og z<~r_TYm#MmGSX`0{``4&;pX4GKKFjJgvie8&o6h=)5*?jIh5t}>D~5)Z*pWK-ez27 zmHJ@r$^V6AL(JZf?HkS~SH=FRcv*MPp{L@1n)I9M-dz6%iGy!lo(pvxoYCI?t|zfc z(`T#t?B%<5Nu|90JmD|9{f|bAH@sgDm@+1@7(Z%`5%v^lmg4a-Oi=I^Yn8EXbYKV; z*t2NC%9ShsGO!=yTQ*~Yro)Ej?&cQ~teTPmzxDef8YFl={Qq&>KI!JBRHr$YyY-9} zp4>1z@SOX>?eIlaB7bBu)!NppwS`|lv|Ho{lhB;XuUErc59v8}>DT`}o%HU9lJJI# z*K4=8lpVXi@0+P%{Q5ngx?ZUN{`zcoK9`p0Os#ug1Q$(kQRehu)q2<nK3${AfZ99HTG3?rwCHe-p zCR>)ijoZX!ul-MpPxF-O-@ewRuQn{d^4jj<$v?03XD^F(INS5*%Z-RlLVFTcc`V&1 zslVl|+v2sG_v_xde);lN4Lz*}H?_INJCYxC?y{W~$<->dM_AFJ+yvb)B1%r(Mt=Im=tJ)p3a*NLb4$pgc$N!%lS>fy1kX z4?4^}A^g(#kHEqY%FT6Mo4KEBy}zDr@g56>p;75g31*k($w7|sZDy0BpD z*3beC95E#`4>I(o2;_ z2cBnjwm+XtZnAW^(B#9_SM2KAnh+*n@IYR1_g%dMT+1eZu*ym)@UxUJ$$VIwk~%@v zF^t{5s(sUSUiKpr&xGVJ-WFDH`_exD)$dIGe@w4_C0}ZvXg7C0`-c~$CSpy=R}L+> z+8SRt#kcv?1)kQAYaT3$5x<)`bHmwtEML!Qt&oa7>~EO(^w1)++n?`eJhuxtb6JBm z?v9se+}>Yue~dF(zbMPh;Y;_ljA>XW{NmH)(;oiI;@Tv&j|J;1SLvx;Igz=c^g-)3 zTZ_D`#>4L4l~h$DU&Li>J-oSJI;*BZ|~Vv z8(^{Yjqv?{)~A*`Up@Hup^m}T|JAov2T3c3HKcSDTRnLy%eJ7KS?j8^VSJJLn$znT zV!aR3-1v)AWLJv9o}{B(6ZsC^XTQ{WV|Tf}-M=5n4{sb?@I8G0uc zRlD5oO0~a}XTp*BHw8m$(OZl7|+^@1zsjY2yQ zHPt*xNk8iHebL(t-G6`I+AC(~2u}O^{p*RjHfk^SPuzF-?wvba%cfbRUi-rJoz z)5v&_rdW#dgt-o?;Z|h^s?AmsKFJD`8<+o2F`rO*kYUyv2DT$Uu?bp-x9|I^JJD~F zjp$OZWvN7G`KNm$UuMF)mfq=s77qvqyMYENCS%cO;YT_B%!1 zXYP2~{d^*vxZEqCaizjP27!YM@Bjbzok>G!f@7iIt=mQWR-`)V3jOQz>9&5qCpafW zB=YOGr^lr8k4#i{ck$x3QMjcQid?%8TbZ3>Pwq3R1?Ix9 z4qpu@D{Y^jw9%PW;NK{Bt-+HK3^QPOKXLYQX`E3}tE_|7D zeFxu6_QU^+>Ny-fZa5n!E%8D{SUFwfegBoC3d+uD^;_2M^ILLj=cewqD67E#wM<7k zehIjLVdNBWuCw@AKEaUDl=r0F@?=F>jgvv?2L2Zs45c5-7+w4ue52jkbKx<*i!6o~ zVm3#X={+b2z9Xz~%plxthr%%fdFhF_lUb8omTXiE6Y|&3>F|~R^2y;^SmVC}mrpm9 z1H+k)blh8^t+Uso{?G1!`S-MIPh{9zRI?{ecf04LNavmX&!b)b zpKIk>yIo=|(@#A5>^t$Xoa0>?$yl{zb2N9C1bjQy@q3=I&sMXBg!O0crT)2eK5_O| zwt(ISg^lOesDrwoje>g)~?|t8=-oyNa zN1)Am zV_mF0FG{MH`2b_Nn_SLi{ia`=FCV^s`hp5GYwa|Jhx49no~!$5+Nx_^ojdY>)hGF% zGO?^t*6|LVy_5a-{R)Pu|Lb`8R&xelztgkGvpX@vs&ksK^@Xrv2D4&)uVuQ&H=VV2 z`Zy&uU}f!Pp*sb^O9MAp9AY-((7Lj%ibekEsp->aY{+WjUFo?`Xu-q%skz_eY%cvV z^qXDEtd;otc)zZ2(mX-UyaP{54h39odG-CTSB_y&!v)!+Kw?2|Xv-XG95cH6P#J*t4)S z*1>)I5mw6=brq%hc{-UD z)^SD2)=S$q=)Fqr2|FFywBDz8^Qj1f^D(@imzE!j3=#Yy=vv*{zfqa>+z)2SKmQl=CKS}RN(sA8?i4)vbslKp z%q&jm!Wrk<#G5^j9wki_bLtAVnRf49+(yBZoEtXYU9$Y-Up=|sLOHWf$;>@b{kfiX zX?W0#R|4l7&92^Op7WvCq{C5`Ez zO+D~B*!c5?52yYg+hQ8;&~;5X##+|QB3JC={bi4DPl&bQv`jhPlK9r+^wn>A{nf28 zJBybJdLO?zaZMLb$HliB9vpneUvNm}YS78EC!HJ}?IxwJInpd~;h*;%J@Kk&tCo!C z6VtaV)!&NH+4H$*irzdf(}Q{pdhNpQ^X@6Jm}~1rG`y;R@A~-MVx}V!n@g;wcxLe% zh#Zo7_3EAD>UF$flJ2vgt}HJ2bV6v$iHLPYcMU{4bLItb#Vcmb3RrM8{<6xADw|#6 zdUL|p9OupLU-aijcEGn^9fgyoPCC0^^kt)Cq}dVaf?u{b)}C#Pp3LXkFUK|e{=7pQ zm;T)nCN2I;@L=D~hSy)-I+U+}GcR?|yWbo1cW}I$!m+vADI>!{ptas7uKrzCR#U+F&)?69DFF}uzuW!3Pm1~Q z?rl!Jok9w3A@@$zYw)lg{++kIIyPh#|Kdw59fHRe9DOh?AU-00vd7~`=LQM&7T z>D&+JM1`G)dM8LLnSM)g+BV8>6!QE z`K`D!I@6YUw0u$6-z}f@OQ5*R&+UXB0$=rq`SI!3JHy30LVz0~EHgZhhat3>pC z&X_#D_M|@X+dX^bm3P}?k6zKqjhesCU*Oc@nt0y1^J;IezcDR_?dnYDfR_>b@9*d- zJ01FOtx|(>`pzf|xn*bV8(;F+em1+e zs@y~@VLp?gkK1eWG8IQ2z3962?{9DSmzi^Ei-MG<%D(qWD+~jfj&ywSQ+wqNUR4gB zQZ+7!y|d=Wv?WXe+k#K)cI6vy1J_!`{tOZIv+w6KRfwtQ$3;9v`hSD7JHuNt^TdM>-loK&&RoaxXP{5 zlEo{l@VEc1RLTE@SzQUNZR=cxa^^3tn(MJYS+8H@fMNbF=4(&Gn|h{9)NpQ+P`$0PemQ&Wz2Dxr`g2Q9x=4Y#{9Hf3v2+N2n&A4l4YbK5&=(ZvzCU-J zm{;-h>GY3xiq9|Hx;2!6JEii1*Y|I?^N%m_oUC-{mqLf*Gp5(ij60ix<&(ECO0txh zNc9$67Ig4G{1IeM>Z=XPe=q)bx^y!3Qq=j>g;x8-jl&$TRxo)vuioEB4?Vs&3wMcw<*{E$?=IOvNUs_l83q4((PydebYGPfv(|>+VuJyM2|MxJ+Ppf&Y)$g!e{>K3m zVgIfUrfqV<-)z2EaixVXs5$CWa?K?9fBb!?v)7n4;tV9U_Z9EGa3O&0^plU0N2Z0z zTJgjReV99aO~{(VA0HcE&`I9uwRr9$yGZf>mJcsoFXx~4%lOI@VU56@b9bzI!=q>Y zxB5wVZP7H}W7nHjF4(zKj_p{$g86q2yKp&JD@^uFp1+f8)ibUBwhPZs6iq#R<@eP4 z2keqtk8jjG_B4jg@Qze}-MO7#&Wd%+m3y2j{PDP|Lr({Pri+$OMiNi4gz!t1!!idn z?#gMsl31F?vtrw>T~QI*7xktsXufVdOI)z#LBIRe`B`7)^@rZlVg0Q5hCAuVBK?h3 zpe09dJk;fDJY9Ul=)$%KN-MIp7v|(o;nQGtU3MYE$>+uQ^_@(4ZF>D4 z^ZX|y&)+7qZplZFTeUo1%Xaa&>o*4~UFNE3j=pyNj^1j+Ku1z545P|Iqd){j+uOrB$Kiw8^Brm1*-bm>yrhJ$?3uoH@KD8l7&2 z7ClZ6Cf}0y=kMX^=@yyEdFezB*QNmG}H>QGCcf# zN1Wv8t1?@~*1`7_`4-Af73YZwt`W8HclzF>X6M+~{yw#aE7(0uWb5O$dFh7#E_er& zZlAli#b?zTpY#3_3(hvEZGFjjtN+xV<<0Mu3$r}m3f&i(S6&nFI)2xbfcNbS*2Hhr z-OKZgJHJ_by-Cka>3h2K*#(j-lttpp)g5|%%;L|_2DJ=csszqF&LRw2JeB}j=+VCJ zwD^$)O`or=jb?RjKI8{Fx$N4S$mX}Vw=Z70l-0WYoruG6U-P>vdlt8!n(o~o;oM(u z6Kg2+QiZFS|I+*)_jYElyyau)FWJqtlb1=yj%~ucXN=w}nibV`76d%Fu=V}{dr`LJ zsYrMIyNlPsJAyARaozA`%i*jyE(cqFuDJW3PfceZQ|jhxEV^$_hO~rL{^b9-=IGP1 zoO$_fnPCiD&u^%<{&4I&&(t5`#|29)mb_lK!a#nfrDXuSbja?z7M~9?=KR0PJ)`Di z(3xE?nKFuuewi4Rarg2pKia2ye;=E$UJOU}cFx;%A9YsUyQzCanmcd5$m45g1Ub&_ zbHC@3?#unGwvw6adCT!*7q*u-*q2F`ov%E3y70}5n8?$iX(1PirWWa)S@Ou{>nuje z&fW!SjVqNO8=d(v>6`PJ`+xU)+KI3vTs_(G@acN~=Q z==xP*yKsB%?Y5o8&%5fArKju1_g!A@-z_pF_4Krb8#WYNcqOcGEMT#G{C@NJO7S(_ z$r&48m2q2No#G!SBL8rb(`*ML!-_?gQrwpV{TFQrG(kll2_)3I$mAz*`@5^vKc%V**-5>`Qzk~{KpMx zo1S>F&AOt`5qc*0-Na|>%oIOV7TxYwh?>i265Jc{YFBr95L(l`+?`^Q}&nTeMW#SBHt;2%4(Xv-{lZqfJKDS5&!l z^w|I1*djXhnA(oN7HlaOdv)cRvr<^1*W7h`^YilS3-YTE@42lf=BL6wzlQ&8wO_)c zW2#P1jH_!lCS(NM_hEn7eGEDitO^jmDJ`=NzGyk?py zDkYv<^D4SaZ;Hxwr&*r9n(t+N!CY47JvUs+<$xv^3)){iarmVG^IX!HEDRUTW9Tt6D; z%ad>AS+g~-Vy$O`#9`_E8F%M07%np1q)A zeq;IjxPv<^DnBhrh`m$sxc7nSm6J1UDvhkHtd5v|etzEF)AQs4UzHP%iRTl7{F5$T z_po)o8q~Yxc|BX{-HRTflHy+_^7pWRs}w&l*W`>yn?m*BFM@A3e|L(lcBx`#{&A>A zA$3dCD!xVQ;!WaiC~-YFCe2Xkt{|qqoQLa{HRG)pKQCOKt1A3ZBeH8rtonkSOzC-X zZFi&sv_4)l{r-UUE7uF3pg?ya%Z!y$P4|)yOnp{#qwvdL^$p*@-e0tQEnntM*NBRz zcW3PSb*yfo-{OUm)$uOe}8#`ZL4BH&vAQK#Ruc7D9rv*)cR#7Ei zD&}}TIkoI%Sd7u(raLB;>dO`4XD-mU&dE9QId}KP1XGW9Cr_SoN=&qyA+1d*6hu?&@26{^{%aLM&{J*F|jkOB(J)MIbEM89oFTs zU|FS3@Z1|F%Ot~1ZJHiEe&3+8=^topDo4RtI`+cUGkP;iq}b-I>#^ZiKCE^4PnXGN z?IV^dKVKi7<+rD14R5&5>BFlw-n_74>Wht*3B|i6&RpX*DNDe7{kJ~5jY%(mC-3@Z zy+QX5L%G+712G+Er^lQVad>NN-}dXw!-rv_=HI3B{~5k1zIJe~%GTX|v)$Tm3djj; z+q(7SttoAhsWErNG|C>7mq$jG%v?rUF? z!Zs>DYX97L%k9>`!)N7_;`3!?>X?>4j951*vG7Iy`$r#)-zOjYnr-m8?Q?7IE03vd z%fw1bFBXMLT{*Ws$078qNaX3O0k>aY-8*CY_1@XC`pKsnmoG3fnZLG8XXBX?1?$tw z4! z##b|ZTj_mht>U`(iTe0BrfA;SQ)#TFrNvfip!mXZ%8V~hi#INLQ^Py!`~0R&i!;B}AJGWiux2mkwam06MJT)Oxzs`yoGD+R?DnwS~&1HiFJllg>kDLD$dA~$=+R|UspHyve zRDQ|k$#$&od0j_e+v6GaH)B^slyI)-c6>f*arFPTyt|Sej07 z2eaNB+hS_2yt~9m#L+_jLhq8`xMD$`ru?{!L$^H5GA19M*w0g6bn;Neo>b{oI(A8u zYp(|0*}P>5$4W(x<7Hvyk0)3E?|X8_MCaGDsVC;zq#cPU6I;#O+k4hvqVJRNW9s4# z%L=c>r-l5mR8FX zH*b^j!d}4@r*lqE(~UMLeB|OY!@!Y2+FA6Lo!|kEXSWu<>Uw^kTj6o@^51XXKH9mI z@zyeiJ119e(7UH%mlRW*)E@Z0^YFFwmAj&UY0S%+CUVqnLVwEg$|R3d+yA%gN-_jb zcf9H&ko=^H=jOVg?ak_Yc>3m~`)|K{OD7^d&*@V7@`YJByv9de8dquO9hEnk{&0z^ z_op8Px}oi}jM~rkH2?o4{Gcf5)2Y`J=UKDmrt>}eu$x~wa(45}?0p=;>BfEae{_!N z-%yDVzq&i_@R6tCi)+69JhV4ug;U{)XM6{Q7^>x_KNjgz5&pC&d8Jjz@3@@X&HcOl z7G2l8Dl8Ek)%0df&w{sG?&_KQ?cK=yTfRElqQ_@v5o^#3A7iIhO;y=8zsS>9udXt+ zD9cfsW##POyZ9ZeZt(t)GM3l<|Kw(FtzP(H*By?#-75Siyabdl?GiuOqdK>(WJ}D{ zb1Q3q6|IQMvQb!h=AW{|C4oDcO__b)rR>f#k1F7`G^$$*5f52+==%uvvoWPHD z$(J{JuD`DC&{M!>*!7)9^!3HBhJ9X2b5$ly{#faw{!#ouiG|Dqe$4{q*d3lmtu31R zePL2Xa=qm!KD0RPbM8Zt310rWUa#0zP2nn(lH2Tb(Pvr0iHm#1^P6_5IY@CbFLsJr z)wh9-rz-Ob0i8(Moj-qkog|-7eJiK)uj=!qYZy)} zn&Kd$w(9E@J(Z!zuug09WJ#oWsR)os);vGSI-f%x$;G^Z}u!zLorjs zQ^%$_%of`-t--0lI^A`3k#09-sda%ekyvM-o7RI z^H)y4c4pi2pbE93Jh_;gDS>m|89e^@_v{L@85`4L%yzBydz10v(Anayjhk$^``=_9 zX_*reW2r0uGn0A#{p8XI;`6U1hBb=KUiL&WTKK_+mInsk)g_Ou%DvaRA!m>5xu%T| zdoq4}-*GpfY^&4Ft7@l(IQKt#aqs1|v_n&^+1@?5(75l#Hl1Hvk6$(~)7bm<|1rLj zgt;E-oT(wo^|_#Je>3{h)ZCn%n-i1`D!%Ev$e#@R;2!9Hnp=8B{_|Dc#|@?zKKfQ% zz>=Xp>z|5l=y%U*_i6ry%s(I4uiCSq^)heCjJJV zt!3S1yudDqRdudV8`C=xt~WdW?fL8sNG^vG(a2|CkyH$VJUnKmWmnA;iS z3uPY*uWRnPS0|8LCa-vEU-#$F#S`aG?_Q!HQT9k|yY$!F+8f_KKMxvVHhezqtH)xg z*Bm0h){Z4n_4Fq8W+(ZFPlvn7`^WCLMX5<+DY5k@ABw z<*#qs51PodUVPqi`M1EXi3StoTe6M^+aKIgz^K+Py!`gr8)4U5bxqmcd_b_R`xExfPIe)2E=J9{6U*1hTv6err z=%m)mWp9ri@VL9{ht`Td$px!cwIA}AxUxO!@|>SPJb%u$STRrFLuN{%$TNmnCuI59 zYr>MB9=G`RFj!;O9+tE!-* zv$&J^-sY+QyYR!V??lA9Ns;D#(^l8KZ_+Va%=-J^AGKYtqYS@aMyg&5SnEPnlp9kr^1~+4OROSgTd$yF5SEl`PZ+QRfjr*6fo1fJ? zw8m-eg^L^!Ib{yl*-k{Ro95g4a@YHVk#@Bw9(u=2kZ8PU$JFT1b5TxMHEHjRb!RRz zCw*vcZR(K>InaOD=|PjzWLw)y!pdgm7Y_A(uiN-GW!fCeVz+JioC3;x;>n9V1?3sD z9GC1Zn7_wV*M3Fo(pL}EGrryptEoBG@O>4}j~71bR=Rv=H2seM>a^UkK#6@b*JW3` zubg`Y|9^Jm{i4Qhb;e9bX;+kNMa!o7iCMl%S?J*< z;^(GpSNLZ3h0_MS3)b&8{+u{_liaJ=W#r?Lmc^lL8Y~I1G zB`>_33jKYHN=|C%Eoc5?Sib$?4|jiV$Mc@2*9$J1KkJK(!igt~r}6bKUDaQ6q9JjA z&N5c%<9)fwU!xS|NN`MnEYeAx^fQQ z__1OeH``|B_}B;~h8I&37z~$95r~-U~*Exfju<{WxcvOwYV;<*-IWEb+!xc%1Y>bdZOH;0!8np7I9>F*bd zJenfJ;?KO%vf-E60hRej8+dxT%jc#a=~*;U@beUDQMRe|ng3XJSD$M*!*gG#?`hTx zW&1zY9C0P3<%@mqGp@cWHYF{j(u*(eOl<3`Uq(5WGntxiZeDe5dievdzrh;TANVz@ zzobhaXPC9i=1=FQ?&BZaTe7CrPFtO#{zLTkp05GsGVPo8I?np$Dl2>|B6yC;38xK@ zHXqZoDUWFHKVOnm)hKp9DoX9!gJpTzb$j>nWgmO~;LpdK7FTX{AOCKe?6y#B`#Ej5 z%4N&sxsz<=ua`Yq8~k>|jaZBQO6B3WP+}XX{`opC_*?k7fCA3d% zW_uF)yX+=+MS$Xe?&9uNy<^{Y>Dg>qE$F*9?2gTDj&Q&8?uk*GEPQ3c3}-Udwy(J{ zr}kOaidlYL!hxQWn%-9vOU2}7JKIZHyC(TwuVepa`J7*%>-S|dUAxu3O=l(lNEAnK zZEnob72rMVvHURG_S2kGXX!L840iw1zS@z$fBNL$34X}B#!HY;j& z&fJPMPlM-}dFzII+UsfSx@B=Vz706vedRr8+zj2YEw64Rn9OQo(%*Alt>fd=N1-b& z%-Pzvj3N0Jx4rwNlXnm8T(B>Cw@*sXF)XQ_cuNJnP5boz_gvjS`D@ zUhj<1U$%KVgJF{Coz7O-)f4?})D4*?N;9^eZTfQjUE8lKax)#`I7Qg=S4Le;Jl1cw z=Af%^aqFqtX9`ROEH?KnZuZSi6X#O2?5h5DL*~JL`yHzVrM3#i&x>#3R(qo0emMAm z!S6elxFk|_w5E7jXgzZT&HXNqjj}8?IB|qSc>>?&r4x7iy8S;qcVhRw=sGqd<2_HO z9+uiu9n-Am{i6Bwl}V3c8dj<$p7(uHrIYo_j7gX6fR^nKvHkOBJUv{ z1;K|_y-WRTm-E(!ao4mT(+yQ!Pnfr@ImgN;^@*U&?d>QTK>?xQ?4l0 zY|M~6w(LojUg_?IweR9oWbag&)wcXU7a}$BoS5X?j)k{GFWwKH+~#9o+1tVSnT6S> zqsB`oTy);va*orXo0Q`0*BxKCEN@}1<5@1F`xf?jt;hd%+Ozb$|Gk8-a%EOc=bLUF z-+&w~v(t}C602*)+-F%1 zk_XnAE}A@Hg^nT9M)^jT4#D4s^5=vfe>q^qn8cGFp0eCOZ z%}?eJ&nRkc34WTHFyTsW)W^I3Gi5(rnzW&^Owj8Rb9RQnhaW$WZ;i0m6rb*QQaDQT z-XZ>X>ik^!`7M(~ur_4;znJ6&Hg-Qdte-;?4TZ++oMRbG~c=P$~b zY%FH<@c*B&uW1?T@YT5jXl=9oYvc05ZLiE}>-6gyME_->F&1mUsb$O%8 zaV+Soec1P;#GSIQE^x{TWmJ&vB=21HHu<1oy|#nm>bLsU(i7*;YWXVS;pZzfOM-8@wA<|9KjyZPtiF?i zIyCo}#poaCd-}Awfxq_rqrG>QpZt_zew+1h-!2Is%b#z*Rc$YuU>E6FCKxPyF=Kd85Ft<)_zuxm8wu z@#KtS8FGxN<$0jn?_JiFxiN?gPov z{%lJd+67h=@7%C|srdeTVeOOOrX75A~PpC&30Zk`G=^ut5R^#!WZuv z4!tXXb=G0d&lfym?nYYj=MH7Pz0B~@nsKY{Eso2s@vXMyJg<1PEMmB>NQG29kKmeB z9pY@Yi7iX$xrI9OiSu7xr1rR6ENA?)kzFBj4S0`unn>!A_8I953~yblm0JIb-$6Zj z=d9V2dk;0)s07|9V&OX2{q9}dmaW^H#a8{FzxO>u|LaxT;x6xYOEocG^=@yu^*cZ1 zy$)516P)zdAFAFn->>0&2B(UE!W01~Cnt`~CF*^$w+p+gb;3)1FPiwi|G)jb$2ODi zeI~}QzFF4%>R4OtANl;=kJ3_Y=7@74C}eme@c7$0Hc%T|;4c-2(c;PR5A`sG^#T`K>UFJ0YX+JzR!FwT3Q{tLuc z2wv*?^S@W~OXcJ1#Vl^zjQg%j>ptnuF7J8w^_ZNnvRL=QmnBVdABtB>^t!biPQ38r z+)^Vq`8UO!Np{mNIw;I-`_?+&dFN+V4=1HQXR%EoSH<^CynpA((Z|2v>iDLV)@J&} z_RQmd`1qZ{Y5%cm&K^hyq$EBJqF8PhY~l+W%J zlla&Sg*MsGI~i1JxzXU8quQ}U3wW6=<$JE>)oeJ=bn#l|V}+t$l6(FbS6nVqj?3A! z;H-M`J6WwtsnzO7AAImGyrk-`Qg=;t(S>yy9{m$G6>LfP)}tJnA#?UfjQBgjNbwY* z2lvg{HY~8Rd-gc!iQdP}+sq3LZXAnIshXao6W*T0rxD?pGM-7pJt^RHL%l5ewD(S)AruJxOTnGX3hd;z^L$0gI=-4-U$%ee>SV zXzQN)TO892y)#vhoI0U(a@9$WyFW}-)Xqp=T=}54kj0G&6rG$?+Sm0O?z%2r?Z~s~ z^OoChJ34Os<-J?dQ{(%EfrY8DI4|ajn6uZRlBy%z?hj%d9j@JCczfAiAZUALgNj1N zDv1k0p*-Dg`7HNu-Z>%icKtlXb={8gC%zc&S$eYD{@wP(!l{fKU8F=9ZeD(uF73NW zck;Glw|)h=rPd|5bFc1~kZh~lViqy~*JL@H)53#^W#S^1E;L$mc4l5+?UP{=Kh=I3pACkWEs9F-4Jy)pufS+r7dG(+u3(5 z$6srEeQ(No@li4=drsf872Ib7%_n6(Jo(4!ugaZYcOI{>D~)hbZu(MrhB?cn=Z%l( zji|oz$yuIXw(Ic*&42#(a@?Ek>;-3gxUNiDQFutUDRQ~XPPci5GKobhncsRZ|JH85 z6ew4-U$j$1g8SU6@Pue@ak+a}*}CHzcZ-K6mo4SX+Szh-^5z|T8CVNlbixmZ*RWlj zdR=L)u^5Ni1CxtSVQT^Q&rvqmCb(d)+)k@Y58v$!`4N}zl3x6V)iC47+_`ge4*MU9 zcs6xAA}DqZ45YGgD1xE?=6Zr_uCLrEc5e zsY`1F4mW9>wv|75WJ`zo<&3ZH8y6pKH}|Xja4nO6&qS8ZQF~LoB=zQmwCzl@y?kQ9 zx*v-};<oA(a?{ukV_?AN#1X0uAShH4l}w3%-3n;o_N zc(>p5-`3VUZJ+u z+1m~Kmp@o^TKU}+lYH5fx9SR|%>20~XyBPh{lv^3MG3KJ$k9+T-(MVp^|$ zb(07c5jolDq<1=Ws@TEZ@7!yCbu~rSGe0`3|A3>%h)Hky>p6FXOG``VPOiRTxZ}F? zY{#Ao8@}zg&nlHXu08DkbEn9G1rBUKx#xF3ex%bA_-}fHx&0CjjlMnXXSw$`oT-b7 z(6=nQ;1(Bn$8Ddw?~@J29nsGt4fn?I=Bsqpn%UpW`|_waIM3wwq7}xgHf%a}BIL7p z)Yl(J7HNrncoF+T`On&5xj%LDdCkwQJmNZ8^LcfHO{;^!=0Jg)CyqbQWiSkIarMzG zNL1yWQ1@wfdx==v4kIhG<$Hbycmx!B1vkZ?t7gde3R4u3)?k{lv(_`0M~b!JhF-h5 zj_i~;H&@O8zbeV2wn2ZHu0CR^aSUW;**5X_lP-a4K0S_WHH@T;k6fOTUwUqb{Qh@0 znvxS2{#_rn*2#CPXjHG-{a2s%^_d-POyJ;4S3mU7BXF1a6^Yy>%UA1e(CD=g$!gV> zJF}YKv`eVwWAAl?&qoA3gdz{_aAb@4{OUkKyo;ae7Pn5Bgrm>$Pq0L2PM8?`DPns0 zwx1gpUv1wi>=juRm#)#L&UfPh&(WEeFVD$)KIvZQWP=y^-?tgZ_U;lgwcEO7mf_>7 zOFkO5PyK)AR(x6@d;Q$1ltl|vUU)8DtKD^+|3<_q&a1vmXS}QK-cINEyXN#oQ*(t) zFUyvA=^pO2TR&gfU=hcKc^yoWHS5h6Z4kc_@!s~0#GTi@XBF5KedM_p25^X6RI2Ss za@oW+Yo+482)*gf%P%*^c)r+QeQKxGI>omB@Z*9KqAV&C8NTfQ&Gkh68^`VQpO54( z=(~LUi~ly$=8CkEQ{{I=n;cb>mzPdaDsqhFT;+X5C;s=#!+dY@zCZr4uEV={T}e*VD!wmre=pZ^tgqrbJXwHk*_vry6D};* z@qfOc@z$dH?Jt{mAAZ+zKifF9J-CEA?QWP1eA?lOdd`non ze2LGFFH@HXUMlkWk$tIc#gdTig<5Q${HqUZ=Ix9!W)7Oq9OPAcI&S|bjt3UahJT8} zt^c_+b|=V8wPMYik(|b}&2#CiIhyh!2MSmocc=z0*gE^pBE8vRjX_)I7-mY<3fBC; ztERJB^WfLbT9Hy-@89pee2*hJ^Nc}e;ziBk<y7f)+EW1^kiecw~;C>nNUlIjBn9j5jC3*?0+zYbRESi4K=(`0#vR~ce`v&~#Yjwobb{TPv9 zoUyofVt|c)l(F>v6+igCoqWdS=9UpQyW!Hi8@!hvd}fGsG`Lmauc+HORd|s_N-$59 zzVm9PRa$K8rxzXzn)<}v`_6U7G^!A&Q;-csY{0!-(`pXvDK66bz(pq8lSuW^<)6$SbS%%K*&%f}V_#!rX zckf2KP28Ndb*c5tV)8dwGe5-eSX}aUQ_?&1Agbi))ib{$pJfOgT6dLUN&iLvD($ti z=N`29vr$E>)N9%__xDUkd0&)=WbnS5`)%Xao2R$vt(z5iu<0EC`<&z)o=XQ;n5N12 z{JVIe^K5V29i!_-ZU!dvpD#LZs$%BjBO)01`^Owp1@0G1QiBd&{UmL{B*WNuz_N>h zKWWZl;nVF$1s`yTbTBLpd?ELrE%=c56q}F_+?joL)BUTJdRG0pw9#+P{D?Mxoh?af z!cDJleqt!8`f*p+HzLRM!K|5TWxw2?&d_ej-*@?h$cOxS*>09k&Ax@BDgxqhzq zz!K^EyMn9#_*U#H=C?{ZbhajPrQkC!;VG_GF9SXtdi}a-^W~#61dmRUyW8#BW>r@0 ze4@|6NIAgiv)93Cr%rJN#BYvN-lu2(hOa0~cw6npO;YCjKB(yUy0@x-FWPj_FrB62 zc=pMqf(wn6)*3oodfKF-ro`bfZS@fe=>Q20W}dYiohe;6*X}DibXG!Yy8rqEo1~aa zQq)-C84+Wta>C~$YQ}H(^xFSD0jr-xcUtKe&qv#C)gP`h5UW}ec_)6 zUuEQvr#Y-Y`}?uQe6^QSR)4KC_#Z8tyY@yt|D#!wYIlsz_f##O#d*S2IMZg+a^58^ z{_@9#y{>ks1XZMzOZ!zG+EHEjOnF!Q*Xk^d%MN5L~_b>w&gPa zGCo#Gy8Kw^;5Jik!M`WbD{?o5@N#vkui;wt-QJAFpk5|o6`x7kr5TE+uQDr5TYV&B zMnF7wk&fn)fDcVy^iGtji13NeJ>~U2W$!8(;VYsRGCA()HU-P1Q`n=kbR3tiTy$T- zJ3E@aCN|ciQ{%)x_h^aL+xGJ9oZ;rOQgFe1C%HLJ4pQ&3J3AjL3dSXR`R3ddonR{0 za>ny@XjsCgh6Llad#6lt=L=9dWVt-(c$W1;zQ^xeLvNU@e>G*cGX!v*m^2>6MRe@>e`*Kht#f5Cbpk z?B?zD(w!%{+ofyc?A;rb4+u)|b9_)ZRxv~Mo_imIdqRca1atYuZ!_hM61^QyHZQZe zaW638(N*ERXC_Wj65n-J9&4R^I$+tf&HZUYANG{)YrQz*W%AGZ``O1rFKd6=9HLrf zv{;kdzeG5Ay2GoCrY)<3Em&^7jXJ)2=_*+cE>njSL0>yV`5(4^sZu*LGj`2W21CP7 zCuJ6i2yc&{v2=50mWZyMJOpMXTJ7rb-8Q+f3H_E?VQ`mwQ$@MO!_T7cmE3H!*7~$g zRh?X*af2^fe;NmCm`A~uU8i_T<&<_#^q8`AYJh?2?lZx&3eI<*PY8N!DA+6Q`Rwk} zt=W6Tb~AHuyq%C~(YexFvDBn%eY8kPYG(aT<@za?+%*;I?GlbFt(Gg--IP=`vu)zm zy6xL#tETcy_gmTExjI3odwyQNYq&{cT0YC?wQP56&hxDH>)bC}Shm?jtKje)uaFEQ z&Bmh}mY?$x_Wu2v$;Bj4X?iW!#L(-CYxQN%B5xOZ>~)&XKBaX2Groxyk2>sS_r1Fu zGx4m$=UM)bkH56OAYjC~YiS^pshWfFhkf7A>@7(+^To)CL3Y_Ukxd4wcRQWUEZ@{g zp5Ci(R^s5u!?kY0g$%uIH5y!7CNItEd((dFl8W74trpE?ACp(kI$!+R{dZZ;Yb(x6 zCr{{Y-5P2zZOWI^VT%~tmY?RGe!97W&+%;IuZxpew%xK2?b{*0TzPIsY4ic3i+-(h zUd9O+x6F|EDVEeSVQzMii}It*jJntM|CBK?6I54?HSb<^qGVRhZ}Xh%fv=*Mdz<`_ zn!lIL==RAT(UNTfX>v?w7FKZWzje1Qz^3!|vuMMOA!n}za;e#GyMJs=Sol@R$X{_v zQ;+3;+p_qg@WHd6bs`cjI$vCC@A6Ki`qu7*fK!G`V~US$O}Q{*0)z3(g&jI#jl1hx ze!Ss!n08}N0l4h@ECDL}`qk(2&s9Dk$gtqfcQ%v%H7r4H{^zug<#}I?<8waD8rY|6m&JL*_d+QIQUoaTuBX0qhbvKMj5$= z6630LhBMn#5)4&l{#c$pp-OT}T#^yjSECm@GYeCgG?m!ceb#)~7pk~sjzF_lT#m-l z37!%=vrjI35-vOYqQEB3Z?#Wyy|}nKu!mdf^4fNlNTT7>zqK3sEt-E^+$I)dvs7lfzi#?LE-nT8J*!1^ zV*`Ekf**TpznUQ?xbexYzkxCKyM=^%loyyf75j$WP`c){@oBhH%}4bKt5#@!34CMPo;JC^Rr!FR1`ng>3hrO_HKLz{t6R;3>~>z|dE)q6Z_U*|>y`!Y%ROs% z>`=w_liiVOy2a`{D~c?=byr^Ee<0@cJ4EONH>WJ$B`w*YWl|n@Whb=!J;WDzA}G}U ziIl?6-WrZ|r&cm59h~QT|Iqs6@P(QRA}5S9cHiV=6B%;uDhd+hpVi?s&E8rkWFvLAYy z8_yh9BKu;o?ZsmLO#hIODRViM0yZ=SnQD}_$T)Oy#s%D+VimAf=V-}VR(9sxf@A0R zc^}!PVfZ4^Z1#-bClb7t-|ju8aN${2f4EG4V^W8w znv%zyEq-lR-k*zb5>MReHA|x2GUIq%v_Pqw=r)s|2^X~so-=8ug}(Z5{;{5zf!f*b z0;N{nvvD;gVX1XeF3yY{d!r{roGJR+_g=v)pIJfviIb_w-zTMz3~|x1f!)xJz5Je* zdxNsUD~=_XFYNgwy<(d^x90)vH+(n02IiGAUU~meLO5`Ky!Fdt%+^s0!cTqJS}MG8 z%dG<~_P=%W^dGzyiW2owNeF9Iw{P${6Ero3*GKg6^`NOPHlEBXlS++v6=L=?+}HZ8 z_RTY$d%@y_11#SEljgOa(Kj^IIC@0-#p>yfIviYSb4pHLd^J^R;uMj&NsFeWe@V++ z@9s2jZ*XMQ_o;GI_1AMJe6-jWBFphRL#vVf_WdNKSub^5H0K^pGBXqxSmbLVGxtoT zi;ipZg0hGYOhPM`6s^&k*`&OXukjsgX2F$^$c2(l?Gv6|Gb<@&bz#=~U%Nu^^!NSz zFD2rRe>xcYWme2{R)xBwHi^6pyB+n zgMmM(=Xm7f+GiXEENuM@oKdg-eUhCPq^PlES%w+os*RKV9IGVf6)>5qYKfhBvHeT( zN-y;plRN~1_H%or$=;sNE%GHseMXRGT+DZdf3t3|xCeN=UjJfSNT|rUAMeYxlth9* zGBp<5S8(n%?A#g3DU%_;C+?U-{$bJ0i+3c2v83Mmn7h*If(1Y8?GNJ5^|rX#GRH<; zd0(v)94@(BVMfoRh!cGQTFMSijY2zP&gI1Rsh2zSu`_b4={wEswT| z&v)`ob`F#hWGz|z!h7;c6Qz?TNu46ae*;b~`DwKR9vbn5TK1#j``c#b%9s=tw*9Oc5jrs`XHs+8sH?;WDkr4^QoO?;8^ zVpo0YxuDFgbw_p`mVU$mN~p;kpxV`W^1rGVJ_C$Gtxm?4R&7mD-ayy?Wo4UGg6@GC}wV#_+?r!(Gqkp^3KMdFt7huY& z_e!h1uT}Bd_jL*nzNEUCR~sJ@zj|b5@QK9PGV=;PPFu6{!zInjKR*3pcored+IZf=yUW;*M!q+Kt!&B9+~$&A%&9e2i@)``8_xmik7WP`%A_LYldxQ>1Z z{1bgU_ruQI^FSFiGx@EVsRHtSlOL41K;K{IeW2LxYqGb|0t`2SD%#I1hrg%>j$yFT?4J*v=|$noIJ!dLd` zrYX7VNA7xj3iv92x!}S^t(Ctf&q%+Prlvdf@x`V5k3(NZ{aAcx@|9Ob3rzgIuO3Wt z*d@ATy5lFdy-!WA`}Qp~);O5CU1nm%M@_Z8zuk|_x-HheAu)?bl-gLjezZ4DzWDo!E1CtrYq)))RORm8J}Be3Zhq*=e|GC9olfO+ zs5v+5j-I#5hfJN9*NaNiqs8lXZ)e`Dz18ArUqeLx6PHbyMUq}@Nqe7O{plFvqS+`n zf5+2TuJZ0FZ+ktYwb(8)?4PQ90F?B+StdDN-t4%N&P{c zPm>nyhGgt8y{|MHw|#qrw>4nZrrjV|o9-T!{0Pi*#_wrMM*&jy+c zz2sqTY7)56mbJ9hOv zvp$z#bJ9e$&%${}?mpJn>eHOopICBmZ{?|GwfGjx<}1@ye2R`Fb)# z)L9A75smyl!(nrWweR_eq?0CfySK|eVJm&Or09;x^)oqPo;yl?ro?1hH5^d?&;Rk} zYWLXPnLZDWSRWL8z%j=k)Uo+#a=T^?Xn1Eq)&I&B@&B2Z=A>{PTrLQG^u6b{5{WqgQ#cTD4{gdlj-fmLu zNRM9S)zB&CuwHWRNwvK^LjP6v_S~DcM);J_jJTOc8u?h~FlNrb|MYgS(C0sIW+_a& zestl4x$-(aayfraa>!-Xv%5RXvUV@~_99Nl*vG|Yu8Z@Hb6@n04ssjZeq%rpR>h{!6=$h{bfANS*I=Nylfh^vm?g+mD00A#MVog3@tA zWiV(&Mnl+S4!$KNMSU#O~(a$TadVJT0*(~}wU z>wbQp7}qA=apbq0ivG%OM>R$%nW7R`?#rhmOcmRt#o7Wxi}JcFpUs-AyYKOj_UwB3 z+m{=k_50mhzEXEZ(6k2$D|pvc=-=gDDYA5_s=-XH1u|}TyBmLb>@TmbDJUyb5);na zAEUkb(X8q7oLq$?*QK$pZ#!8u^^Mm_S5M8!4xUYO?>2KBn^f`PZn}WN(LQp?d*7Z_(;}zyN!TcG32ziSbcn%s)s-_%0+$-tJyLSNoo79m zR1~x5z|;;ouMgky70v3E73Akk&9^%*x4#XN-vvSWy~l^;JsYTjbcbUC=3WvN-HElc9xk z;j%~mVa;iGB^E{t@10}!p)+q@DAVQe$JW38ANu#jVXmjD48eeC`y0q)QxAU4~ zc$4BUeBE~A=GVp`*DX=JtJaE5D18;7d3NpF7q32bN3E;-+9Ir7mfv_reG#`)56d(& zvl5+2^>XD8kKc~ou3WY}`kMwWby5XzxM6ZX-c8bMVA8sjH%jA2H zW8e0roYLx39-WdD^@%AyaOl#pT`s0dN!sh$-h8PmJbl&hg@x&Zi0XKUZl;$_Ey_)| zg-kCC?s~Y|;~Mwc#oSrV@n^sZ^%y^sO^0FKv##$`K!Y1ROe&97*1oDc5p5?D<~)0{ z*QOBJZH&5Clwq54!58|V=4u8&;KVaP1ThP`rd$E^tKqAYo%U{^D zQjgU6Pm(j^cgR!QJ6E*#l}VUS$D@FDCbRmyy*yT|`}68prl09Jw8G9lQo?p}sm+@M z^JT0rh!l37yB~SCdu2v{=|aOxCxbjz1blE>s&cp6OYNRz%r5cFQ_7Q4ZfP%JX?EOl zTc*RMMM`jWNZ6f^hk{qgs+|s1s-5_ndYnjMrF;zqg9_P7gOfEKph7ls zmEFHm4Zhqqm5Htg?Zj6cD_bPR?h?bfq(gU)z^7-2Cx|8N^{8&%?qB`k!a1`v>x!pe zxL)iI{pG*&@Q?kux^Gmz-a8t4CN<$om%YcGDu*LMSNA)a@Cg78xOvAMX#&7se5$RS$(IM0v8WxUh*cmL3^wu z;dSkg?>2VIUFdtq;CIb?`ZWoGA3y$j_(WSJ%~DVPy7&2CP?Po?H%o=U<2^Id>^%Ao zRQ5GIdQp}!@4scrwqPffPXe{lmp@Egs*&l`(XsF7^L5Q@-byTyn_a;1x8{Piv*DkF zY~$M@cQ)_fntaNn*2LhR#nXe2f9LKf-6#4w^Rwdgv~BGrD`IXm7Ja-B)cnO!o{RI9 z$I7oizW!nVxa$cMOY$MUtFss$Tbz_x^hIb>YH!-ndttskjeP6)%T7G(_E<29@$~D* zJCe%W*prVuTlhm#W}@}Uz?9|xP2xVwI98u&53y=}8Fgu|K~nqz*0~=K%&hb9{C+6I zVd+Vhrv;HZ!rh89TfV1Qf3yE)<+pzy`{i{}ovzi{&M`E&XY=-;^6pz3 zciro-7K;c-4R|>J_}v9tgfCrPsU7&R)46QI)|a`T*Zw$hrAVSGa;8xAV|n+vFS^t= zmNf|q&*1Z)wxVF&0o~4;bFu7|>q_6th~@XK+0A*8ce~GO)??$RL5z}VDA zzty@HTazDz8HX>qoXKK+=f{Vex)z_VSYMdc6H)O!b;gD|yD4nB`>uZ3dG6txmTsMJ z&80f4Yiu$PsjmMc+IH>nprHb!;{-(b}YEpaeDdG#W9O5q=fBUAALX=sGCE+fMXCI-rIh1cOV@WEXFhA4@PFIv<8x-S{KVap=Nat# z>ZklHrc9* zs;$L}rCc?s=LL1Fwn$$Jm@Xjay?sVupP{gFlK154tSTNQlP@_O`Y7@)Dkb&XicfjD zpwXiCvTa7oC#GoiPVe8nVb!@4Iid6aUTAdl7b(|YnIv|$`qtka3$AsvhE{z`=Zc%a zeJL?r;Jo>c2OP%=Zf@aPGdrOrP}P02ev^EDcH+UnB8!z~E6%YQ6?IAqOE(|s@qgRA z#li4#&Af$y``eD#TE{L*I<~R$wcyS_#vV~>eO2a_?4Vo*n({r+EOD4aZ~ZJ#gCLb< zNt|^_{V%I0%fEA1JCzg~N3If^)^2yo+3L1U2kGm6&Y;O6V zaX874*{Zi8R={(~hZpzwrd_XlKPgLRt=XKLE54Xad?EH~@!1ox-K#cSSe3q|;8upt zYO@3K-jA+M&RetA{Lwtst24sZ2?iZx=U%i~Si!a@XSZXgNVM5shWeh^t}sFGt47QT zdaNG8%KIm|oo?K|@$t!ghw!-G*6-^vy1 zJpU9S*VOC<26NSNHQb{XwjFtYY9m`1lU43Kp4Coi$t~-aD!7U3ayWgw_n`NG>yJm? z6T^MBMbEoIgTaf#dl$(Focy``!O`vJ=8rCEKHZVIZsx`9o4uXWIsSjX zmZ`Jq(&Ne9t0GpN^xtOQ%%mXlV@A}vgO2V3`z!W~9>1FycD~fO{lcWFG7)ngEuXNj zQvP81)%arvkEl5Ae`>T~UXnTM1eGQ^=`y>&v2$*G<5{FAZ*t6Q$_#Zyu}_Om-|R_Q z6U`H(bZ`xCdD6+!|9wKIr#Q}ElU_crL*17z(aQ6D>2_VtDmDR@9hcHi^Ui;;z3OefxJXUtS;8dW-v+gVNNb|MKyz z>o4|IZja^IyOl{j{(dk2{5tk`k8=&q&u?-quV=Y>I^8L7!K)naZ0j0Jo$&vgRXe8M zzTXhzBfWf&h{3ccsXM*=ukY@Svnf8(_&R-Np=0gInIW6Q{dN={kV|;8W@RdK{yf=( z7T(d-FK2MiR-0P7S!aq)@00J<)(PClK*KBCZ2=1%UcR^AU|9XURM<8a&f=o;bjYstyaHNk>YQC#)|b{X{hb98CxZ{Hy(W8q`v-4 z+{X9IT69AH@B8IwGy7J@xd{gHccS>F1V0Oi=bSLd)^qtJi+}enSNwnZ{!qI0&HR2} z;b)0Yb?-a9z0;escvg?QVtAHBah z?b#MWuLMfw=Y*_YleQwXIU#LgM!FKGm-Nlwv!`F!xSKIpFS_q%d0fw>lc7Dm7x%r^ z`1bdm=#}+z+s`SVEs)D=sl2D6VWPDq$GXQwqigB>{cMx<;+U4!JxFjk?{H`$$E{nr z9Njrt(^u>K_`zN8I(NoXt+kwC#uL=JRVBP19sC|W(W9}m%uge9b9%vi-G+2N>w>du zywu*^oSZf3wdKMEN7k2ZH{3p{TWz}Y;uCvjdODKzj^uC zt-mkccwL$HW!7?;Y^JN%-&c7YjJd>msyt94n}6?Z_8&Emrmdb{&vr2swB)jHYux95 zkVs$X(7(C_+r50s#szGK<{m5hBP6H$ z>AFWwTcLjOr0ql&t*u@TliF+r+C5jFU~%WF&FQFo^pUA>VMpTYSJfXEf0=6`C8qUx za)-L*B#}o6o{ima>wmJ%`nIpB!eqwg3)mQFmg_lw<&Q>zMcUdKPQ*vW2eey6YN z*UnlK6E0c3SouE2+_{pgLpKJ+PCB$aoZaxO%8?~AzMcD8{qIf1{K$1}K^yIyRn6RT zeMNgz+ZN3*nIa~%VRzw+^Z5@y#NTr|+GC~j_s-Q7QC7^K;GB}dxWxQGl|*XzIf`At={Y?zPUkdliwN0-Mia%dU=?EE>Drp ztMvh^xL6HqCbGPXNH{vhh)?EXMkDOX^kCbY@kN zDiZ5QKbZRz>h|uQYp84U@C;jJWH00YU90${)uuUVPJRShL-=;d?9P7|*^$!tJk!nh@z3`u*E;5(tzme7DokmT zK%3huEyiTVna)R+Sp0aUeB=A2W{w@dUa5b1yPl==vw70d-uU*)Q%N4FTr#(RiC9T( zOTKo@I?%F^QKh+rGoz4c--3ewu74L)+^N-eR@fanbT#?L_svbh zJQCcCmmT9;t5(m(vQ_dcTfvw2?;k#RyxuwWO5(j-@x({1-3!#@@2@#-IMw69gU9)c z9^TZQQT|-DXXU~-Qy*X1^i`nD{)SGX6KUjPRBlFkqrT- zRC3O~;ALmE`%_*FoHS?ge>s=%dY*~C+m%Dp&OX2T09;wiG=6LW zmFmlHKB|2Rn(K0N5aM(A|9ibdT~hytM|GDp+16F^#1tM2ntDld(=X+zih-u0M*X~# zCivfoJoW$D>%flhnykii7FtBr1Ws%A<72dasmlJwvF7#M%Mr2pDe5a#?tH(!_w9{K zPYy2)K3(uRhFh57&CN46{utKeXA6Jfl6)5%)asc!>(C5|opU%;gkt=Z~ol=n{nr}{}CsmtGb%*F93oS!#VrE#}vG@Jh{yRQo>H zq_^h3lz#l1rnY8<=E2gN__>0!PV{fzZm{|)bQtg0tf@>gpxI*XyX#c8x_Kq9 zKGtDoJys~sL!eA=%(Z<(@Y+2;FCnV2nF&m8TD zz3p%1`{CUCCK+#q)BUN&Nwv>-K{;Bc@u1>?W{Kv*{r5r3UwSlIE@iH`|Iaw&y&Y#} zc>G7ZYv=1+bdO)LC@O7>Ts5g9cH7)#EE_|^o$Ed^d(7;J4O?ha&y{q+EtSJdVcHSr z-M210>VB|K_3Dh*JoS8#kRh5p>S;$or$odS!>aqy>an&hEaz zcJvvG#}(t%E?LhX%zk?RnBB~PBYi${Y7q@gOIXick>f6X_~To;g!19LzZ8Qy*LXC! zG_BNLfBaMbU-MI0nh_H(9sL3-GroF#TXMPB zd;j7DUfad_^S>n(FJ@o+Ps7`AXY#(OnQ32^%$~6H)!*n@feR-Zdq1~Ic1u<9ElU<#*6hF||&0 z&I$#=n>pf6qUWDy-njJSDF1ddW5NCXXV<07?z|_>FZ9*sEw6E7z+$hyMU=l|&LXdm$BxNAKL4@%f}p@PPp5fPStD1aebt)V_V`L%PVJl38)R=c zhJ0G{uH~W?t9JgM`WZXEaA{nrDoZ}{{?NJfckY>2Lwt5WNWL&7M9k#OJ#p(j4XeFX z;;z+T06C8(+AcUo8EdZPv%|=XoVZT4w*;6r_A+s@jCFS^JhIpEum| zd+qUn%{5|T_i80eo?Xi8?J+NW(YZaqZY|sCeHF5+sxwnqa`IYYV-2p%SYVVfQzPSW z@%x3j$J=KVpLUB7_ivt(Q_7|DB_f>XH)_ZVP+|vOyzMgO_Sy=f^J>YGf z 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

-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ℑ1Hf=epn57pS$h+hEY=X%Z>>Az^#= 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 z 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%0AWcsmXzWE5KlyO(@CyZ4w=^{y>Z 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%0D`ojd*fJlCKgA-TFAi8|5S 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

Z9MY0`oat-sr%zCY^LfAn;EeA$0% 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 Date: Mon, 28 Nov 2016 11:21:23 +0100 Subject: [PATCH 152/727] Adjust comment. --- keyboards/ergodox/keymaps/bepo/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/bepo/readme.md b/keyboards/ergodox/keymaps/bepo/readme.md index 207b675715..51a5069851 100644 --- a/keyboards/ergodox/keymaps/bepo/readme.md +++ b/keyboards/ergodox/keymaps/bepo/readme.md @@ -23,7 +23,7 @@ La touche "Tab" est placée comme sur la TypeMatrix 2020. Meilleure symétrie et accessibilité que la TypeMatrix 2030 : les touches "W" et "%" ont dû être déplacées du côté gauche en raison du nombre de touches de l'ErgoDox, mais l'auriculaire droit ne gère maintenant que deux colonnes de touches au lieu de trois. La touche "Ê" redevient accessible sur la même rangée que les autres lettres, comme sur un clavier classique en disposition bépo. Les lettres, chiffres et symboles sont tous regroupés sur 4 lignes et 6 colonnes pour chaque main, et la première rangée de lettres à la main gauche conserve une identité visuelle "BÉPO". -Touche de fonction permettant de saisir les touches F1 à F12, les touches F1 à F10 sont placées de façon logique par rapport aux chiffres 1 à 0. Cette même touche permet l'accès aux touches directionnelles sans déplacer la main droite. Les touches "Home" et "End" sont placées de la même façon que sur une TypeMatrix 2030 par rapport aux touches directionnelles. Les touches "Page Up" et "Page Down" sont également accessibles facilement sans déplacer la main droite. Les fonctions "VolUp" et "VolDown" sont placées comme sur la TypeMatrix 2030, avec la fonction "Mute" juste au dessus. Les fonctions "Undo", "Cut", "Copy" et "Paste" sont placées côte à côte comme elles le seraient sur un clavier QWERTY en combinaison avec la touche "Ctrl" (à l'emplacement des lettres "Z", "X", "C" et "V"). Par rapport au layout "SpaceFN", l'utilisation d'une touche de fonction dédiée au pouce permet de ne pas ajouter de latence, et la touche espace reste compatible avec les jeux (action au moment de l'appui et possibilité d'appui long). +Touche de fonction permettant de saisir les touches F1 à F12, les touches F1 à F10 sont placées de façon logique par rapport aux chiffres 1 à 0. Cette même touche permet l'accès aux touches directionnelles sans déplacer la main droite et d'effectuer des actions souris avec uniquement la main gauche. Les touches "Home" et "End" sont placées de la même façon que sur une TypeMatrix 2030 par rapport aux touches directionnelles. Les touches "Page Up" et "Page Down" sont également accessibles facilement sans déplacer la main droite. Les fonctions "VolUp" et "VolDown" sont placées comme sur la TypeMatrix 2030, avec la fonction "Mute" juste au dessus. Les fonctions "Undo", "Cut", "Copy" et "Paste" sont placées côte à côte comme elles le seraient sur un clavier QWERTY en combinaison avec la touche "Ctrl" (à l'emplacement des lettres "Z", "X", "C" et "V"). Par rapport au layout "SpaceFN", l'utilisation d'une touche de fonction dédiée au pouce permet de ne pas ajouter de latence, et la touche espace reste compatible avec les jeux (action au moment de l'appui et possibilité d'appui long). Touche de fonction permettant l'accès au pavé numérique comme sur la TypeMatrix 2030, mais sans avoir à déplacer la main droite : avec les doigts sur la rangée de repos, possibilité de saisir les chiffres "4", "5" et "6" comme sur un pavé numérique classique. Le double "0" de la TypeMatrix a été conservé, et gagne une possibilité de répétition en simples "0". From 2d0ada01902a0103dc4f4f54a416f0666c641b5b Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Mon, 28 Nov 2016 07:55:02 -0500 Subject: [PATCH 153/727] Pulls LED config into common config for EZ --- keyboards/ergodox/ez/config.h | 11 +++++++++++ keyboards/ergodox/keymaps/erez_experimental/config.h | 10 ---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/keyboards/ergodox/ez/config.h b/keyboards/ergodox/ez/config.h index 67a856e511..0b7e8b2ee1 100644 --- a/keyboards/ergodox/ez/config.h +++ b/keyboards/ergodox/ez/config.h @@ -45,6 +45,17 @@ along with this program. If not, see . /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 +/* ws2812 RGB LED */ +#define RGB_DI_PIN D7 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 15 // Number of LEDs +#define RGBLIGHT_HUE_STEP 12 +#define RGBLIGHT_SAT_STEP 255 +#define RGBLIGHT_VAL_STEP 12 + +#define RGB_MIDI +#define RGBW_BB_TWI + /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/keyboards/ergodox/keymaps/erez_experimental/config.h b/keyboards/ergodox/keymaps/erez_experimental/config.h index fbd12ab797..4da18c65aa 100644 --- a/keyboards/ergodox/keymaps/erez_experimental/config.h +++ b/keyboards/ergodox/keymaps/erez_experimental/config.h @@ -9,15 +9,5 @@ #undef LEADER_TIMEOUT #define LEADER_TIMEOUT 300 -/* ws2812 RGB LED */ -#define RGB_DI_PIN D7 -#define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 15 // Number of LEDs -#define RGBLIGHT_HUE_STEP 12 -#define RGBLIGHT_SAT_STEP 255 -#define RGBLIGHT_VAL_STEP 12 - -#define RGB_MIDI -#define RGBW_BB_TWI #endif From 9caf866618840ca38f4ceb1166ad679174c752c3 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Mon, 28 Nov 2016 07:59:01 -0500 Subject: [PATCH 154/727] Tweaks EZ Makefile --- keyboards/ergodox/ez/Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/keyboards/ergodox/ez/Makefile b/keyboards/ergodox/ez/Makefile index 191c6bb664..9b6121e2c2 100644 --- a/keyboards/ergodox/ez/Makefile +++ b/keyboards/ergodox/ez/Makefile @@ -1,3 +1,8 @@ +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +COMMAND_ENABLE = no # Commands for debug and configuration +RGBLIGHT_ENABLE ?= yes +MIDI_ENABLE ?= yes + ifndef MAKEFILE_INCLUDED include ../../../Makefile -endif \ No newline at end of file +endif From d2b6438e391743544d437ca8c2998de6ab631894 Mon Sep 17 00:00:00 2001 From: Olivier Date: Mon, 28 Nov 2016 14:10:31 +0100 Subject: [PATCH 155/727] A little cleanup, add some comments, change others. --- keyboards/ergodox/keymaps/bepo/keymap.c | 42 ++++++++++--------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/keyboards/ergodox/keymaps/bepo/keymap.c b/keyboards/ergodox/keymaps/bepo/keymap.c index c1a8ae21d9..8f068e238d 100644 --- a/keyboards/ergodox/keymaps/bepo/keymap.c +++ b/keyboards/ergodox/keymaps/bepo/keymap.c @@ -1,19 +1,19 @@ #include "ergodox.h" -#include "debug.h" -#include "action_layer.h" #include "keymap_bepo.h" -#define BASE 0 // default layer -#define QWER 1 // qwerty compat layer -#define SQWER 2 // shifted qwerty compat layer -#define AQWER 3 // alted qwerty compat layer -#define FNAV 4 // function / navigation keys -#define NUM 5 // numeric keypad keys +// keymaps +#define BASE 0 // default layer, for bepo compatible systems +#define QWER 1 // bepo to qwerty base compat layer, for qwerty systems +#define SQWER 2 // bepo with shift key to qwerty compat layer +#define AQWER 3 // bepo with altgr key to qwerty compat layer +#define FNAV 4 // function / navigation / mouse layer +#define NUM 5 // numeric keypad layer -#define KP_00 0 +// macros +#define KP_00 0 // keypad "double 0" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -/* Keymap 0: Base layer +/* Keymap 0: default layer * * ,--------------------------------------------------. ,--------------------------------------------------. * | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = | @@ -50,7 +50,7 @@ KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, DF(QWER), DF(BASE), MO(NUM), MO(FNAV), KC_RSHIFT, KC_ENTER), -/* Keymap 1: QWERTY system compatibility layer +/* Keymap 1: bepo to qwerty base compat layer * * ,--------------------------------------------------. ,--------------------------------------------------. * | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = | @@ -87,7 +87,7 @@ KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, DF(QWER), DF(BASE), MO(NUM), MO(FNAV), MO(SQWER), KC_ENTER), -/* Keymap 2: QWERTY shifted system compatibility layer +/* Keymap 2: bepo with shift key to qwerty compat layer * * ,--------------------------------------------------. ,--------------------------------------------------. * | # | 1 | 2 | 3 | 4 | 5 |Delete| |ScroLo| 6 | 7 | 8 | 9 | 0 | = | @@ -124,7 +124,7 @@ S(KC_ESC), S(KC_INS), S(KC_LGUI), S(KC_LCTL), S(KC_LALT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), -/* Keymap 3: QWERTY alted system compatibility layer +/* Keymap 3: bepo with altgr key to qwerty compat layer * * ,--------------------------------------------------. ,--------------------------------------------------. * | $ | " | < | > | [ | ] |Delete| |ScroLo| @ | + | - | / | * | = | @@ -161,7 +161,7 @@ KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, KC_TRNS, KC_TRNS, MO(NUM), MO(FNAV), MO(SQWER), KC_ENTER), -/* Keymap 4: function / navigation layer +/* Keymap 4: function / navigation / mouse layer * * ,--------------------------------------------------. ,--------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 |VolMut| | | F6 | F7 | F8 | F9 | F10 | | @@ -198,7 +198,7 @@ KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO), -/* Keymap 5: numeric layer, sends keypad codes +/* Keymap 5: numeric keypad layer, sends keypad codes * * ,--------------------------------------------------. ,--------------------------------------------------. * | | | | | | | | | | | NumLo| / | * | - | | @@ -237,12 +237,10 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) }; -const uint16_t PROGMEM fn_actions[] = { -}; - const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch(id) { + // keypad "double 0" case KP_00: if (record->event.pressed) { return MACRO( T(KP_0), D(KP_0), END ); @@ -253,11 +251,3 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } return MACRO_NONE; }; - -// Runs just one time when the keyboard initializes. -void matrix_init_user(void) { -}; - -// Runs constantly in the background, in a loop. -void matrix_scan_user(void) { -}; From 84735836e309fe9e2c45ed991a58820ae2bb9123 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Mon, 28 Nov 2016 08:13:32 -0500 Subject: [PATCH 156/727] Tweaks position of TOG not to conflict with MO --- keyboards/ergodox/keymaps/erez_experimental/keymap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboards/ergodox/keymaps/erez_experimental/keymap.c b/keyboards/ergodox/keymaps/erez_experimental/keymap.c index 0c0e3c4e39..2963c40e31 100644 --- a/keyboards/ergodox/keymaps/erez_experimental/keymap.c +++ b/keyboards/ergodox/keymaps/erez_experimental/keymap.c @@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | |NxtTab|PrvTab| | | | | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | | | | | | + * | | | |TOG | * ,------|------|------| |------+------+------. * |VAI |VAD |HUI | |SAI |TOG |MOD | * | | |------| |------| | | @@ -95,9 +95,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_AMPR, KC_UNDS, KC_MINS, CM_SCLN, KC_PLUS, KC_TRNS, KC_TRNS, KC_PIPE, KC_AT, KC_EQL, KC_PERC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, + RGB_TOG, KC_TRNS, RGB_SAI, - RGB_SAD, RGB_TOG, RGB_MOD + RGB_SAD, KC_TRNS, RGB_MOD ), /* Keymap 2: Media and mouse keys * From f02eccbb29ee6a8cf421895dcef2e55a76c1bdcb Mon Sep 17 00:00:00 2001 From: Olivier Date: Mon, 28 Nov 2016 14:16:42 +0100 Subject: [PATCH 157/727] Change layer names (cosmetic change) and reorder them so that the "shift" layer can be accessed from the "alt" layer when in QWERTY compat mode. --- keyboards/ergodox/keymaps/bepo/keymap.c | 124 ++++++++++++------------ 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/keyboards/ergodox/keymaps/bepo/keymap.c b/keyboards/ergodox/keymaps/bepo/keymap.c index 8f068e238d..c19ab0d48d 100644 --- a/keyboards/ergodox/keymaps/bepo/keymap.c +++ b/keyboards/ergodox/keymaps/bepo/keymap.c @@ -2,12 +2,12 @@ #include "keymap_bepo.h" // keymaps -#define BASE 0 // default layer, for bepo compatible systems -#define QWER 1 // bepo to qwerty base compat layer, for qwerty systems -#define SQWER 2 // bepo with shift key to qwerty compat layer -#define AQWER 3 // bepo with altgr key to qwerty compat layer +#define BEPO 0 // default layer, for bepo compatible systems +#define QW_B 1 // bepo to qwerty base compat layer, for qwerty systems +#define QW_A 2 // bepo with altgr key to qwerty compat layer +#define QW_S 3 // bepo with shift key to qwerty compat layer #define FNAV 4 // function / navigation / mouse layer -#define NUM 5 // numeric keypad layer +#define NUMK 5 // numeric keypad layer // macros #define KP_00 0 // keypad "double 0" @@ -26,20 +26,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' * |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' - * | | | L_Num| | L_Num| | | + * | | |L_NumK| |L_NumK| | | * | Space|LShift|------| |------|RShift|Enter | * | | |L_FNav| |L_FNav| | | * `--------------------' `--------------------' */ -[BASE] = KEYMAP( +[BEPO] = KEYMAP( // Left hand BP_DOLLAR, BP_DQOT, BP_LGIL, BP_RGIL, BP_LPRN, BP_RPRN, KC_DEL, BP_PERCENT, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_E_GRAVE, KC_BSPC, BP_W, BP_A, BP_U, BP_I, BP_E, BP_COMMA, BP_ECRC, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, BP_K, KC_TAB, KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, - DF(BASE), DF(QWER), - MO(NUM), + DF(BEPO), DF(QW_B), + MO(NUMK), KC_SPC, KC_LSHIFT, MO(FNAV), // Right hand KC_SLCK, BP_AT, BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTR, BP_EQUAL, @@ -47,8 +47,8 @@ KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, KC_NUMLOCK, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED, BP_ALGR, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, -DF(QWER), DF(BASE), -MO(NUM), +DF(QW_B), DF(BEPO), +MO(NUMK), MO(FNAV), KC_RSHIFT, KC_ENTER), /* Keymap 1: bepo to qwerty base compat layer * @@ -63,31 +63,68 @@ MO(FNAV), KC_RSHIFT, KC_ENTER), * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' * |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' - * | | | L_Num| | L_Num| | | + * | | |L_NumK| |L_NumK| | | * | Space|LShift|------| |------|RShift|Enter | * | | |L_FNav| |L_FNav| | | * `--------------------' `--------------------' */ -[QWER] = KEYMAP( +[QW_B] = KEYMAP( // Left hand KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LPRN, KC_RPRN, KC_DEL, KC_PERCENT, KC_B, KC_E, KC_P, KC_O, KC_E, KC_BSPC, KC_W, KC_A, KC_U, KC_I, KC_E, KC_COMMA, KC_E, KC_A, KC_Y, KC_X, KC_DOT, KC_K, KC_TAB, KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, - DF(BASE), DF(QWER), - MO(NUM), - KC_SPC, MO(SQWER), MO(FNAV), + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_SPC, MO(QW_S), KC_TRNS, // Right hand KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL, KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z, KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C, - MO(AQWER), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, -DF(QWER), DF(BASE), -MO(NUM), -MO(FNAV), MO(SQWER), KC_ENTER), -/* Keymap 2: bepo with shift key to qwerty compat layer + MO(QW_A), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, +KC_TRNS, KC_TRNS, +KC_TRNS, +KC_TRNS, MO(QW_S), KC_ENTER), +/* Keymap 2: bepo with altgr key to qwerty compat layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | $ | " | < | > | [ | ] |Delete| |ScroLo| @ | + | - | / | * | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | % | | | e | & | o | e |Backsp| |CapsLo| ^ | v | d | l | j | z | + * |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------| + * | w | a | u | i | € | , |------| |------| c | t | s | r | n | m | + * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| + * | e | \ | { | } | . | ~ | | | | ' | q | g | h | f | c | + * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' + * |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause| + * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' + * | | |L_NumK| |L_NumK| | | + * | _ |LShift|------| |------|RShift|Enter | + * | | |L_FNav| |L_FNav| | | + * `--------------------' `--------------------' + */ +[QW_A] = KEYMAP( +// Left hand +KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LBRC, KC_RBRC, KC_DEL, +KC_PERCENT, KC_PIPE, KC_E, KC_AMPR, KC_O, KC_E, KC_BSPC, +KC_W, KC_A, KC_U, KC_I, RALT(KC_5), KC_COMMA, +KC_E, KC_BSLASH, KC_LCBR, KC_RCBR, KC_DOT, KC_TILDE, KC_TAB, +KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_UNDS, MO(QW_S), KC_TRNS, +// Right hand + KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL, + KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z, + KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, + KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C, + KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, +KC_TRNS, KC_TRNS, +KC_TRNS, +KC_TRNS, MO(QW_S), KC_ENTER), +/* Keymap 3: bepo with shift key to qwerty compat layer * * ,--------------------------------------------------. ,--------------------------------------------------. * | # | 1 | 2 | 3 | 4 | 5 |Delete| |ScroLo| 6 | 7 | 8 | 9 | 0 | = | @@ -100,12 +137,12 @@ MO(FNAV), MO(SQWER), KC_ENTER), * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' * |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause| * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' - * | | | L_Num| | L_Num| | | + * | | |L_NumK| |L_NumK| | | * | Space|LShift|------| |------|RShift|Enter | * | | |L_FNav| |L_FNav| | | * `--------------------' `--------------------' */ -[SQWER] = KEYMAP( +[QW_S] = KEYMAP( // Left hand KC_HASH, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_GRV, S(KC_B), S(KC_E), S(KC_P), S(KC_O), S(KC_E), KC_TRNS, @@ -124,43 +161,6 @@ S(KC_ESC), S(KC_INS), S(KC_LGUI), S(KC_LCTL), S(KC_LALT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), -/* Keymap 3: bepo with altgr key to qwerty compat layer - * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | $ | " | < | > | [ | ] |Delete| |ScroLo| @ | + | - | / | * | = | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | % | | | e | & | o | e |Backsp| |CapsLo| ^ | v | d | l | j | z | - * |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------| - * | w | a | u | i | € | , |------| |------| c | t | s | r | n | m | - * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| - * | e | \ | { | } | . | ~ | | | | ' | q | g | h | f | c | - * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' - * |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause| - * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' - * | | | L_Num| | L_Num| | | - * | _ |LShift|------| |------|RShift|Enter | - * | | |L_FNav| |L_FNav| | | - * `--------------------' `--------------------' - */ -[AQWER] = KEYMAP( -// Left hand -KC_DOLLAR, S(KC_QUOT), S(KC_COMM), S(KC_DOT), KC_LBRC, KC_RBRC, KC_DEL, -KC_PERCENT, KC_PIPE, KC_E, KC_AMPR, KC_O, KC_E, KC_BSPC, -KC_W, KC_A, KC_U, KC_I, RALT(KC_5), KC_COMMA, -KC_E, KC_BSLASH, KC_LCBR, KC_RCBR, KC_DOT, KC_TILDE, KC_TAB, -KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, - KC_TRNS, KC_TRNS, - MO(NUM), - KC_UNDS, MO(SQWER), MO(FNAV), -// Right hand - KC_SLCK, KC_AT, KC_PLUS, KC_MINUS, KC_SLASH, KC_ASTR, KC_EQUAL, - KC_CAPSLOCK, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z, - KC_C, KC_T, KC_S, KC_R, KC_N, KC_M, - KC_NUMLOCK, KC_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_C, - KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, -KC_TRNS, KC_TRNS, -MO(NUM), -MO(FNAV), MO(SQWER), KC_ENTER), /* Keymap 4: function / navigation / mouse layer * * ,--------------------------------------------------. ,--------------------------------------------------. @@ -216,7 +216,7 @@ KC_TRNS, KC_TRNS, KC_NO), * | | | | | | | | * `--------------------' `--------------------' */ -[NUM] = KEYMAP( +[NUMK] = KEYMAP( // Left hand KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, @@ -234,7 +234,7 @@ KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, M(KP_00), KC_KP_COMMA, KC_KP_ENTER, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, -KC_TRNS, KC_TRNS, KC_TRNS) +KC_TRNS, KC_TRNS, KC_NO) }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) From 5a2501d90fb9d2ea1a60d42dfd664d899865e6b5 Mon Sep 17 00:00:00 2001 From: Olivier Date: Mon, 28 Nov 2016 16:38:03 +0100 Subject: [PATCH 158/727] Add the AZERTY compatibility layer. --- keyboards/ergodox/keymaps/bepo/keymap.c | 125 ++++++++++++++++++++++- keyboards/ergodox/keymaps/bepo/readme.md | 4 +- 2 files changed, 122 insertions(+), 7 deletions(-) diff --git a/keyboards/ergodox/keymaps/bepo/keymap.c b/keyboards/ergodox/keymaps/bepo/keymap.c index c19ab0d48d..05250ee6a7 100644 --- a/keyboards/ergodox/keymaps/bepo/keymap.c +++ b/keyboards/ergodox/keymaps/bepo/keymap.c @@ -1,13 +1,17 @@ #include "ergodox.h" #include "keymap_bepo.h" +#include "keymap_french.h" // keymaps #define BEPO 0 // default layer, for bepo compatible systems #define QW_B 1 // bepo to qwerty base compat layer, for qwerty systems #define QW_A 2 // bepo with altgr key to qwerty compat layer #define QW_S 3 // bepo with shift key to qwerty compat layer -#define FNAV 4 // function / navigation / mouse layer -#define NUMK 5 // numeric keypad layer +#define AZ_B 4 // bepo to azerty base compat layer, for azerty systems +#define AZ_A 5 // bepo with altgr key to azerty compat layer +#define AZ_S 6 // bepo with shift key to azerty compat layer +#define FNAV 7 // function / navigation / mouse layer +#define NUMK 8 // numeric keypad layer // macros #define KP_00 0 // keypad "double 0" @@ -47,7 +51,7 @@ KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, BP_C, BP_T, BP_S, BP_R, BP_N, BP_M, KC_NUMLOCK, BP_APOS, BP_Q, BP_G, BP_H, BP_F, BP_CCED, BP_ALGR, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, -DF(QW_B), DF(BEPO), +DF(AZ_B), DF(BEPO), MO(NUMK), MO(FNAV), KC_RSHIFT, KC_ENTER), /* Keymap 1: bepo to qwerty base compat layer @@ -161,7 +165,118 @@ S(KC_ESC), S(KC_INS), S(KC_LGUI), S(KC_LCTL), S(KC_LALT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), -/* Keymap 4: function / navigation / mouse layer +/* Keymap 4: bepo to azerty base compat layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | $ | " | < | > | ( | ) |Delete| |ScroLo| @ | + | - | / | * | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | % | b |e_acut| p | o |e_grav|Backsp| |CapsLo| ^ | v | d | l | j | z | + * |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------| + * | w | a | u | i | e | , |------| |------| c | t | s | r | n | m | + * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| + * | e |a_grav| y | x | . | k | | | | ' | q | g | h | f | c_cedil| + * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' + * |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause| + * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' + * | | |L_NumK| |L_NumK| | | + * | Space|LShift|------| |------|RShift|Enter | + * | | |L_FNav| |L_FNav| | | + * `--------------------' `--------------------' + */ +[AZ_B] = KEYMAP( +// Left hand +FR_DLR, FR_QUOT, FR_LESS, FR_GRTR, FR_LPRN, FR_RPRN, KC_DEL, +FR_PERC, KC_B, FR_EACU, KC_P, KC_O, FR_EGRV, KC_BSPC, +FR_W, FR_A, KC_U, KC_I, KC_E, FR_COMM, +KC_E, FR_AGRV, KC_Y, KC_X, FR_DOT, KC_K, KC_TAB, +KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_SPC, MO(AZ_S), KC_TRNS, +// Right hand + KC_SLCK, FR_AT, FR_PLUS, FR_MINS, FR_SLSH, FR_ASTR, FR_EQL, + KC_CAPSLOCK, KC_LBRC, KC_V, KC_D, KC_L, KC_J, FR_Z, + KC_C, KC_T, KC_S, KC_R, KC_N, FR_M, + KC_NUMLOCK, FR_APOS, FR_Q, KC_G, KC_H, KC_F, FR_CCED, + MO(AZ_A), KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, +KC_TRNS, KC_TRNS, +KC_TRNS, +KC_TRNS, MO(AZ_S), KC_ENTER), +/* Keymap 5: bepo with altgr key to azerty compat layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | $ | " | < | > | [ | ] |Delete| |ScroLo| @ | + | - | / | * | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | % | | | e | & | o | e |Backsp| |CapsLo| ^ | v | d | l | j | z | + * |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------| + * | w | a |u_grav| trem | € | , |------| |------| c | t | s | r | n | m | + * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| + * | / | \ | { | } | . | ~ | | | | ' | q | g | h | f | c | + * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' + * |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause| + * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' + * | | |L_NumK| |L_NumK| | | + * | _ |LShift|------| |------|RShift|Enter | + * | | |L_FNav| |L_FNav| | | + * `--------------------' `--------------------' + */ +[AZ_A] = KEYMAP( +// Left hand +FR_DLR, FR_QUOT, FR_LESS, FR_GRTR, FR_LBRC, FR_RBRC, KC_DEL, +FR_PERC, FR_PIPE, FR_EACU, FR_AMP, KC_O, FR_EGRV, KC_BSPC, +FR_W, FR_A, FR_UGRV, S(KC_LBRC), FR_EURO, FR_COMM, +FR_SLSH, FR_BSLS, FR_LCBR, FR_RCBR, FR_DOT, FR_TILD, KC_TAB, +KC_ESC, KC_INS, KC_LGUI, KC_LCTL, KC_LALT, + KC_TRNS, KC_TRNS, + KC_TRNS, + FR_UNDS, MO(AZ_S), KC_TRNS, +// Right hand + KC_SLCK, FR_AT, FR_PLUS, FR_MINS, FR_SLSH, FR_ASTR, FR_EQL, + KC_CAPSLOCK, KC_LBRC, KC_V, KC_D, KC_L, KC_J, FR_Z, + KC_C, KC_T, KC_S, KC_R, KC_N, FR_M, + KC_NUMLOCK, FR_APOS, FR_Q, KC_G, KC_H, KC_F, FR_CCED, + KC_TRNS, KC_RCTL, KC_RGUI, KC_PSCREEN, KC_PAUSE, +KC_TRNS, KC_TRNS, +KC_TRNS, +KC_TRNS, MO(AZ_S), KC_ENTER), +/* Keymap 6: bepo with shift key to azerty compat layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | # | 1 | 2 | 3 | 4 | 5 |Delete| |ScroLo| 6 | 7 | 8 | 9 | 0 | ° | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | ` | B | E | P | O | E |Backsp| |CapsLo| ! | V | D | L | J | Z | + * |--------+------+------+------+------+------| ace | | |------+------+------+------+------+--------| + * | W | A | U | I | E | ; |------| |------| C | T | S | R | N | M | + * |--------+------+------+------+------+------| Tab | | NumLo|------+------+------+------+------+--------| + * | E | A | Y | X | : | K | | | | ? | Q | G | H | F | C | + * `--------+------+------+------+------+-------------,-------------. ,-------------`-------------+------+------+------+------+--------' + * |Escape|Insert|LSuper| LCtrl| LAlt| | BEPO |QWERTY| |AZERTY| BEPO | | AltGr| RCtrl|RSuper|PrntSc| Pause| + * `----------------------------------' ,------|------|------| |------+------+------. `----------------------------------' + * | | |L_NumK| |L_NumK| | | + * | Space|LShift|------| |------|RShift|Enter | + * | | |L_FNav| |L_FNav| | | + * `--------------------' `--------------------' + */ +[AZ_S] = KEYMAP( +// Left hand +FR_HASH, FR_1, FR_2, FR_3, FR_4, FR_5, KC_TRNS, +FR_GRV, S(KC_B), S(KC_E), S(KC_P), S(KC_O), S(KC_E), KC_TRNS, +S(FR_W), S(FR_A), S(KC_U), S(KC_I), S(KC_E), FR_SCLN, +S(KC_E), S(FR_A), S(KC_Y), S(KC_X), FR_COLN, S(KC_K), S(KC_TAB), +S(KC_ESC), S(KC_INS), S(KC_LGUI), S(KC_LCTL), S(KC_LALT), + KC_TRNS, KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, +// Right hand + KC_TRNS, FR_6, FR_7, FR_8, FR_9, FR_0, FR_OVRR, + KC_TRNS, FR_EXLM, S(KC_V), S(KC_D), S(KC_L), S(KC_J), S(FR_Z), + S(KC_C), S(KC_T), S(KC_S), S(KC_R), S(KC_N), S(FR_M), + KC_TRNS, FR_QUES, S(FR_Q), S(KC_G), S(KC_H), S(KC_F), S(KC_C), + S(KC_RALT), S(KC_RCTL), S(KC_RGUI), KC_TRNS, KC_TRNS, +KC_TRNS, KC_TRNS, +KC_TRNS, +KC_TRNS, KC_TRNS, KC_TRNS), +/* Keymap 7: function / navigation / mouse layer * * ,--------------------------------------------------. ,--------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 |VolMut| | | F6 | F7 | F8 | F9 | F10 | | @@ -198,7 +313,7 @@ KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO), -/* Keymap 5: numeric keypad layer, sends keypad codes +/* Keymap 8: numeric keypad layer, sends keypad codes * * ,--------------------------------------------------. ,--------------------------------------------------. * | | | | | | | | | | | NumLo| / | * | - | | diff --git a/keyboards/ergodox/keymaps/bepo/readme.md b/keyboards/ergodox/keymaps/bepo/readme.md index 51a5069851..2959ac8298 100644 --- a/keyboards/ergodox/keymaps/bepo/readme.md +++ b/keyboards/ergodox/keymaps/bepo/readme.md @@ -27,8 +27,8 @@ Touche de fonction permettant de saisir les touches F1 à F12, les touches F1 à Touche de fonction permettant l'accès au pavé numérique comme sur la TypeMatrix 2030, mais sans avoir à déplacer la main droite : avec les doigts sur la rangée de repos, possibilité de saisir les chiffres "4", "5" et "6" comme sur un pavé numérique classique. Le double "0" de la TypeMatrix a été conservé, et gagne une possibilité de répétition en simples "0". -Touche permettant de basculer en mode BEPO sur un système configuré pour un clavier QWERTY. Cette compatibilité n'est pas parfaite (pas encore de gestion des accents mais ça devrait être faisable avec une disposition en qwerty international, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle. +Touche permettant de basculer en mode BEPO sur un système configuré pour un clavier QWERTY. Cette compatibilité n'est pas parfaite (pas encore de gestion des accents mais ça devrait être faisable avec une disposition en qwerty international, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle et pour des accès BIOS ou console en QWERTY. -TODO : couche de compatibilité pour utiliser la disposition BÉPO sur un système configuré pour un clavier AZERTY. +Touche permettant de basculer en mode BEPO sur un système configuré pour un clavier AZERTY. Cette compatibilité n'est pas parfaite (pas de gestion des caractères non présents sur le clavier AZERTY, et les combinaisons de touches ne sont pas toutes supportées puisque le clavier traduit déjà certaines touches en combinaisons) mais reste pratique pour une saisie de texte occasionnelle et pour faire du bureau à distance vers un système Windows sans BEPO. > Olivier Smedts From 06f18e95d4670a055ca349da7d653e0bcb37d83a Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 29 Nov 2016 00:06:12 -0500 Subject: [PATCH 159/727] enable api sysex for ez --- keyboards/ergodox/ez/rules.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/ergodox/ez/rules.mk b/keyboards/ergodox/ez/rules.mk index a9715beb85..f570061fe4 100644 --- a/keyboards/ergodox/ez/rules.mk +++ b/keyboards/ergodox/ez/rules.mk @@ -72,6 +72,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512 # SLEEP_LED_ENABLE = no +API_SYSEX_ENABLE ?= yes ifndef QUANTUM_DIR include ../../../Makefile From d0cefef946660865dae80877886fcce610920a27 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 29 Nov 2016 00:09:56 -0500 Subject: [PATCH 160/727] enable rgblight by default for ez --- keyboards/ergodox/ez/config.h | 11 +++++++++++ keyboards/ergodox/ez/rules.mk | 1 + 2 files changed, 12 insertions(+) diff --git a/keyboards/ergodox/ez/config.h b/keyboards/ergodox/ez/config.h index 67a856e511..c2750a321f 100644 --- a/keyboards/ergodox/ez/config.h +++ b/keyboards/ergodox/ez/config.h @@ -41,6 +41,17 @@ along with this program. If not, see . #define LED_BRIGHTNESS_LO 15 #define LED_BRIGHTNESS_HI 255 +/* ws2812 RGB LED */ +#define RGB_DI_PIN D7 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 15 // Number of LEDs +#define RGBLIGHT_HUE_STEP 12 +#define RGBLIGHT_SAT_STEP 255 +#define RGBLIGHT_VAL_STEP 12 + +#define RGB_MIDI +#define RGBW_BB_TWI + /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 diff --git a/keyboards/ergodox/ez/rules.mk b/keyboards/ergodox/ez/rules.mk index f570061fe4..893cfa7a84 100644 --- a/keyboards/ergodox/ez/rules.mk +++ b/keyboards/ergodox/ez/rules.mk @@ -73,6 +73,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=512 SLEEP_LED_ENABLE = no API_SYSEX_ENABLE ?= yes +RGBLIGHT_ENABLE ?= yes ifndef QUANTUM_DIR include ../../../Makefile From f946d830f98da0161753d37da9659caa7469cf4f Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 29 Nov 2016 00:11:11 -0500 Subject: [PATCH 161/727] guess i didnt pull --- keyboards/ergodox/ez/config.h | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/keyboards/ergodox/ez/config.h b/keyboards/ergodox/ez/config.h index f3e1020bdb..c2750a321f 100644 --- a/keyboards/ergodox/ez/config.h +++ b/keyboards/ergodox/ez/config.h @@ -56,17 +56,6 @@ along with this program. If not, see . /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 -/* ws2812 RGB LED */ -#define RGB_DI_PIN D7 -#define RGBLIGHT_ANIMATIONS -#define RGBLED_NUM 15 // Number of LEDs -#define RGBLIGHT_HUE_STEP 12 -#define RGBLIGHT_SAT_STEP 255 -#define RGBLIGHT_VAL_STEP 12 - -#define RGB_MIDI -#define RGBW_BB_TWI - /* * Feature disable options * These options are also useful to firmware size reduction. From 4094544d41450617bc21ab58646603b8964eae0e Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Tue, 29 Nov 2016 09:23:16 -0500 Subject: [PATCH 162/727] Test layout for ErgoDox EZ manufacturing robot --- .../keymaps/robot_test_layout/keymap.c | 130 ++++++++++++++++++ .../keymaps/robot_test_layout/readme.md | 5 + quantum/rgblight.c | 6 + quantum/rgblight.h | 2 + 4 files changed, 143 insertions(+) create mode 100644 keyboards/ergodox/keymaps/robot_test_layout/keymap.c create mode 100644 keyboards/ergodox/keymaps/robot_test_layout/readme.md diff --git a/keyboards/ergodox/keymaps/robot_test_layout/keymap.c b/keyboards/ergodox/keymaps/robot_test_layout/keymap.c new file mode 100644 index 0000000000..0363eedc2b --- /dev/null +++ b/keyboards/ergodox/keymaps/robot_test_layout/keymap.c @@ -0,0 +1,130 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "version.h" + +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, // can always be here + RGB_FF0000, + RGB_00FF00, + RGB_0000FF, + RGB_FFFFFF, + RGB_TOGGLE +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[0] = KEYMAP( + RGB_TOGGLE,RGB_FF0000,RGB_00FF00,RGB_0000FF,RGB_FFFFFF,RGB_TOGGLE,KC_6, + KC_A,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_E,KC_A,KC_A,KC_S,KC_D,KC_F,KC_G,KC_A,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_L,KC_Z,KC_QUOTE,KC_N,KC_U,KC_C,KC_E,KC_8,KC_9,KC_Y,KC_COMMA,KC_6,KC_7,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINUS,KC_J,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLASH,KC_H,KC_J,KC_K,KC_L,KC_J,KC_K,KC_Z,KC_N,KC_M,KC_COMMA,KC_DOT,KC_E,KC_QUOTE,KC_8,KC_7,KC_LBRACKET,KC_RBRACKET,KC_H,KC_9,KC_7,KC_8,KC_7,KC_6,KC_9), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(1) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case 0: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + } + return MACRO_NONE; +}; + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // dynamically generate these. + case RGB_FF0000: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + EZ_RGB(0xff0000); + register_code(KC_A); unregister_code(KC_A); + #endif + } + return false; + break; + case RGB_00FF00: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + EZ_RGB(0x00ff00); + register_code(KC_B); unregister_code(KC_B); + #endif + } + return false; + break; + case RGB_0000FF: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + EZ_RGB(0x0000ff); + register_code(KC_C); unregister_code(KC_C); + #endif + } + return false; + break; + case RGB_FFFFFF: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + EZ_RGB(0xffffff); + register_code(KC_D); unregister_code(KC_D); + #endif + } + return false; + break; + case RGB_TOGGLE: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_toggle(); + register_code(KC_F); unregister_code(KC_F); + #endif + } + return false; + break; + } + return true; +} + +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + case 3: + ergodox_right_led_3_on(); + break; + case 4: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + break; + case 5: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); + break; + case 6: + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); + break; + case 7: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); + break; + default: + break; + } + +}; diff --git a/keyboards/ergodox/keymaps/robot_test_layout/readme.md b/keyboards/ergodox/keymaps/robot_test_layout/readme.md new file mode 100644 index 0000000000..45dc2aa76c --- /dev/null +++ b/keyboards/ergodox/keymaps/robot_test_layout/readme.md @@ -0,0 +1,5 @@ +# Robot test layout + +Use this layout if you like to pretend you're [Norman](https://www.youtube.com/watch?v=-sbxFBay-tg), the ErgoDox EZ manufacturing robot. + +It's really meant just for internal use, but we're posting it on GitHub anyway, because hurray to open source. :) diff --git a/quantum/rgblight.c b/quantum/rgblight.c index bb03d6e913..625971e0fe 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -425,6 +425,12 @@ void rgblight_timer_toggle(void) { dprintf("TIMER3 toggled.\n"); } +void rgblight_show_solid_color(uint8_t r, uint8_t g, uint8_t b) { + rgblight_enable(); + rgblight_mode(1); + rgblight_setrgb(r, g, b); +} + void rgblight_task(void) { if (rgblight_timer_enabled) { // mode = 1, static light, do nothing here diff --git a/quantum/rgblight.h b/quantum/rgblight.h index 28a410e480..aa1d026e0e 100644 --- a/quantum/rgblight.h +++ b/quantum/rgblight.h @@ -84,6 +84,8 @@ void sethsv(uint16_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1); void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1); void rgblight_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val); +#define EZ_RGB(val) rgblight_show_solid_color((val >> 16) & 0xFF, (val >> 8) & 0xFF, val & 0xFF) +void rgblight_show_solid_color(uint8_t r, uint8_t g, uint8_t b); void rgblight_task(void); From fe001d46fd06924bb81fe8d506f5be8894db3df0 Mon Sep 17 00:00:00 2001 From: Wilba6582 Date: Mon, 28 Nov 2016 18:31:16 +1100 Subject: [PATCH 163/727] Initial version of Raw HID interface --- keyboards/planck/planck.c | 16 ++++- keyboards/planck/rules.mk | 3 +- tmk_core/common.mk | 4 ++ tmk_core/common/raw_hid.h | 8 +++ tmk_core/protocol/lufa/descriptor.c | 87 +++++++++++++++++++++++++- tmk_core/protocol/lufa/descriptor.h | 39 +++++++++--- tmk_core/protocol/lufa/lufa.c | 94 +++++++++++++++++++++++++++++ 7 files changed, 239 insertions(+), 12 deletions(-) create mode 100644 tmk_core/common/raw_hid.h diff --git a/keyboards/planck/planck.c b/keyboards/planck/planck.c index 645b450d1d..0d37b66223 100644 --- a/keyboards/planck/planck.c +++ b/keyboards/planck/planck.c @@ -1,5 +1,8 @@ #include "planck.h" +#include "raw_hid.h" +#include "keymap.h" + #ifdef ONEHAND_ENABLE __attribute__ ((weak)) const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { @@ -16,4 +19,15 @@ void matrix_init_kb(void) { PORTE |= (1<<6); matrix_init_user(); -} \ No newline at end of file +} + +#ifdef RAW_ENABLE + +void raw_hid_receive( uint8_t *data, uint8_t length ) +{ + // Basic test of Raw HID + // Echo back data received + raw_hid_send( data, length ); +} + +#endif diff --git a/keyboards/planck/rules.mk b/keyboards/planck/rules.mk index ccee972715..4874d92b9f 100644 --- a/keyboards/planck/rules.mk +++ b/keyboards/planck/rules.mk @@ -62,7 +62,8 @@ AUDIO_ENABLE ?= no # Audio output on port C6 UNICODE_ENABLE ?= no # Unicode BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -API_SYSEX_ENABLE = yes +API_SYSEX_ENABLE = no +RAW_ENABLE = yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend \ No newline at end of file diff --git a/tmk_core/common.mk b/tmk_core/common.mk index f826a7b540..d65f02f12b 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -50,6 +50,10 @@ ifeq ($(strip $(EXTRAKEY_ENABLE)), yes) TMK_COMMON_DEFS += -DEXTRAKEY_ENABLE endif +ifeq ($(strip $(RAW_ENABLE)), yes) + TMK_COMMON_DEFS += -DRAW_ENABLE +endif + ifeq ($(strip $(CONSOLE_ENABLE)), yes) TMK_COMMON_DEFS += -DCONSOLE_ENABLE else diff --git a/tmk_core/common/raw_hid.h b/tmk_core/common/raw_hid.h new file mode 100644 index 0000000000..86da02fd15 --- /dev/null +++ b/tmk_core/common/raw_hid.h @@ -0,0 +1,8 @@ +#ifndef _RAW_HID_H_ +#define _RAW_HID_H_ + +void raw_hid_receive( uint8_t *data, uint8_t length ); + +void raw_hid_send( uint8_t *data, uint8_t length ); + +#endif diff --git a/tmk_core/protocol/lufa/descriptor.c b/tmk_core/protocol/lufa/descriptor.c index 6f2407f580..bf47787d29 100644 --- a/tmk_core/protocol/lufa/descriptor.c +++ b/tmk_core/protocol/lufa/descriptor.c @@ -164,6 +164,28 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM ExtrakeyReport[] = }; #endif +#ifdef RAW_ENABLE +const USB_Descriptor_HIDReport_Datatype_t PROGMEM RawReport[] = +{ + HID_RI_USAGE_PAGE(16, 0xFF60), /* Vendor Page 0xFF60 */ + HID_RI_USAGE(8, 0x61), /* Vendor Usage 0x61 */ + HID_RI_COLLECTION(8, 0x01), /* Application */ + HID_RI_USAGE(8, 0x62), /* Vendor Usage 0x62 */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(16, 0x00FF), + HID_RI_REPORT_COUNT(8, RAW_EPSIZE), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), + HID_RI_USAGE(8, 0x63), /* Vendor Usage 0x63 */ + HID_RI_LOGICAL_MINIMUM(8, 0x00), + HID_RI_LOGICAL_MAXIMUM(16, 0x00FF), + HID_RI_REPORT_COUNT(8, RAW_EPSIZE), + HID_RI_REPORT_SIZE(8, 0x08), + HID_RI_OUTPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE | HID_IOF_NON_VOLATILE), + HID_RI_END_COLLECTION(0), +}; +#endif + #ifdef CONSOLE_ENABLE const USB_Descriptor_HIDReport_Datatype_t PROGMEM ConsoleReport[] = { @@ -399,6 +421,58 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = }, #endif + /* + * Raw + */ + #ifdef RAW_ENABLE + .Raw_Interface = + { + .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, + + .InterfaceNumber = RAW_INTERFACE, + .AlternateSetting = 0x00, + + .TotalEndpoints = 2, + + .Class = HID_CSCP_HIDClass, + .SubClass = HID_CSCP_NonBootSubclass, + .Protocol = HID_CSCP_NonBootProtocol, + + .InterfaceStrIndex = NO_DESCRIPTOR + }, + + .Raw_HID = + { + .Header = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID}, + + .HIDSpec = VERSION_BCD(1,1,1), + .CountryCode = 0x00, + .TotalReportDescriptors = 1, + .HIDReportType = HID_DTYPE_Report, + .HIDReportLength = sizeof(RawReport) + }, + + .Raw_INEndpoint = + { + .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, + + .EndpointAddress = (ENDPOINT_DIR_IN | RAW_IN_EPNUM), + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = RAW_EPSIZE, + .PollingIntervalMS = 0x01 + }, + + .Raw_OUTEndpoint = + { + .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, + + .EndpointAddress = (ENDPOINT_DIR_OUT | RAW_OUT_EPNUM), + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = RAW_EPSIZE, + .PollingIntervalMS = 0x01 + }, + #endif + /* * Console */ @@ -754,7 +828,6 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .PollingIntervalMS = 0x05 }, #endif - }; @@ -846,6 +919,12 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, Size = sizeof(USB_HID_Descriptor_HID_t); break; #endif +#ifdef RAW_ENABLE + case RAW_INTERFACE: + Address = &ConfigurationDescriptor.Raw_HID; + Size = sizeof(USB_HID_Descriptor_HID_t); + break; +#endif #ifdef CONSOLE_ENABLE case CONSOLE_INTERFACE: Address = &ConfigurationDescriptor.Console_HID; @@ -878,6 +957,12 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, Size = sizeof(ExtrakeyReport); break; #endif +#ifdef RAW_ENABLE + case RAW_INTERFACE: + Address = &RawReport; + Size = sizeof(RawReport); + break; +#endif #ifdef CONSOLE_ENABLE case CONSOLE_INTERFACE: Address = &ConsoleReport; diff --git a/tmk_core/protocol/lufa/descriptor.h b/tmk_core/protocol/lufa/descriptor.h index c6c94e3618..24ce420e6a 100644 --- a/tmk_core/protocol/lufa/descriptor.h +++ b/tmk_core/protocol/lufa/descriptor.h @@ -71,6 +71,14 @@ typedef struct USB_Descriptor_Endpoint_t Extrakey_INEndpoint; #endif +#ifdef RAW_ENABLE + // Raw HID Interface + USB_Descriptor_Interface_t Raw_Interface; + USB_HID_Descriptor_HID_t Raw_HID; + USB_Descriptor_Endpoint_t Raw_INEndpoint; + USB_Descriptor_Endpoint_t Raw_OUTEndpoint; +#endif + #ifdef CONSOLE_ENABLE // Console HID Interface USB_Descriptor_Interface_t Console_Interface; @@ -137,10 +145,16 @@ typedef struct # define EXTRAKEY_INTERFACE MOUSE_INTERFACE #endif -#ifdef CONSOLE_ENABLE -# define CONSOLE_INTERFACE (EXTRAKEY_INTERFACE + 1) +#ifdef RAW_ENABLE +# define RAW_INTERFACE (EXTRAKEY_INTERFACE + 1) #else -# define CONSOLE_INTERFACE EXTRAKEY_INTERFACE +# define RAW_INTERFACE EXTRAKEY_INTERFACE +#endif + +#ifdef CONSOLE_ENABLE +# define CONSOLE_INTERFACE (RAW_INTERFACE + 1) +#else +# define CONSOLE_INTERFACE RAW_INTERFACE #endif #ifdef NKRO_ENABLE @@ -182,12 +196,19 @@ typedef struct # define EXTRAKEY_IN_EPNUM MOUSE_IN_EPNUM #endif -#ifdef CONSOLE_ENABLE -# define CONSOLE_IN_EPNUM (EXTRAKEY_IN_EPNUM + 1) -# define CONSOLE_OUT_EPNUM (EXTRAKEY_IN_EPNUM + 1) -//# define CONSOLE_OUT_EPNUM (EXTRAKEY_IN_EPNUM + 2) +#ifdef RAW_ENABLE +# define RAW_IN_EPNUM (EXTRAKEY_IN_EPNUM + 1) +# define RAW_OUT_EPNUM (EXTRAKEY_IN_EPNUM + 2) #else -# define CONSOLE_OUT_EPNUM EXTRAKEY_IN_EPNUM +# define RAW_OUT_EPNUM EXTRAKEY_IN_EPNUM +#endif + +#ifdef CONSOLE_ENABLE +# define CONSOLE_IN_EPNUM (RAW_OUT_EPNUM + 1) +//# define CONSOLE_OUT_EPNUM (RAW_OUT_EPNUM + 2) +# define CONSOLE_OUT_EPNUM (RAW_OUT_EPNUM + 1) +#else +# define CONSOLE_OUT_EPNUM RAW_OUT_EPNUM #endif #ifdef NKRO_ENABLE @@ -217,7 +238,6 @@ typedef struct # define CDC_OUT_EPNUM MIDI_STREAM_OUT_EPNUM #endif - #if defined(__AVR_ATmega32U2__) && CDC_OUT_EPNUM > 4 # error "Endpoints are not available enough to support all functions. Remove some in Makefile.(MOUSEKEY, EXTRAKEY, CONSOLE, NKRO, MIDI, SERIAL)" #endif @@ -225,6 +245,7 @@ typedef struct #define KEYBOARD_EPSIZE 8 #define MOUSE_EPSIZE 8 #define EXTRAKEY_EPSIZE 8 +#define RAW_EPSIZE 32 #define CONSOLE_EPSIZE 32 #define NKRO_EPSIZE 32 #define MIDI_STREAM_EPSIZE 64 diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 39d4824b6b..aeb5f07815 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -80,6 +80,10 @@ #include "sysex_tools.h" #endif +#ifdef RAW_ENABLE + #include "raw_hid.h" +#endif + uint8_t keyboard_idle = 0; /* 0: Boot Protocol, 1: Report Protocol(default) */ uint8_t keyboard_protocol = 1; @@ -175,6 +179,80 @@ USB_ClassInfo_CDC_Device_t cdc_device = }; #endif +#ifdef RAW_ENABLE + +void raw_hid_send( uint8_t *data, uint8_t length ) +{ + // TODO: implement variable size packet + if ( length != RAW_EPSIZE ) + { + return; + } + + if (USB_DeviceState != DEVICE_STATE_Configured) + { + return; + } + + // TODO: decide if we allow calls to raw_hid_send() in the middle + // of other endpoint usage. + uint8_t ep = Endpoint_GetCurrentEndpoint(); + + Endpoint_SelectEndpoint(RAW_IN_EPNUM); + + // Check to see if the host is ready to accept another packet + if (Endpoint_IsINReady()) + { + // Write data + Endpoint_Write_Stream_LE(data, RAW_EPSIZE, NULL); + // Finalize the stream transfer to send the last packet + Endpoint_ClearIN(); + } + + Endpoint_SelectEndpoint(ep); +} + +__attribute__ ((weak)) +void raw_hid_receive( uint8_t *data, uint8_t length ) +{ + // Users should #include "raw_hid.h" in their own code + // and implement this function there. Leave this as weak linkage + // so users can opt to not handle data coming in. +} + +static void raw_hid_task(void) +{ + // Create a temporary buffer to hold the read in data from the host + uint8_t data[RAW_EPSIZE]; + bool data_read = false; + + // Device must be connected and configured for the task to run + if (USB_DeviceState != DEVICE_STATE_Configured) + return; + + Endpoint_SelectEndpoint(RAW_OUT_EPNUM); + + // Check to see if a packet has been sent from the host + if (Endpoint_IsOUTReceived()) + { + // Check to see if the packet contains data + if (Endpoint_IsReadWriteAllowed()) + { + /* Read data */ + Endpoint_Read_Stream_LE(data, sizeof(data), NULL); + data_read = true; + } + + // Finalize the stream transfer to receive the last packet + Endpoint_ClearOUT(); + + if ( data_read ) + { + raw_hid_receive( data, sizeof(data) ); + } + } +} +#endif /******************************************************************************* * Console @@ -294,6 +372,8 @@ void EVENT_USB_Device_WakeUp() #endif } + + #ifdef CONSOLE_ENABLE static bool console_flush = false; #define CONSOLE_FLUSH_SET(b) do { \ @@ -311,6 +391,7 @@ void EVENT_USB_Device_StartOfFrame(void) Console_Task(); console_flush = false; } + #endif /** Event handler for the USB_ConfigurationChanged event. @@ -339,6 +420,14 @@ void EVENT_USB_Device_ConfigurationChanged(void) EXTRAKEY_EPSIZE, ENDPOINT_BANK_SINGLE); #endif +#ifdef RAW_ENABLE + /* Setup Raw HID Report Endpoints */ + ConfigSuccess &= ENDPOINT_CONFIG(RAW_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, + RAW_EPSIZE, ENDPOINT_BANK_SINGLE); + ConfigSuccess &= ENDPOINT_CONFIG(RAW_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT, + RAW_EPSIZE, ENDPOINT_BANK_SINGLE); +#endif + #ifdef CONSOLE_ENABLE /* Setup Console HID Report Endpoints */ ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, @@ -1064,9 +1153,14 @@ int main(void) CDC_Device_USBTask(&cdc_device); #endif +#ifdef RAW_ENABLE + raw_hid_task(); +#endif + #if !defined(INTERRUPT_CONTROL_ENDPOINT) USB_USBTask(); #endif + } } From 66b13a66e93c50ba6258fcde548ab946fd8db683 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Wed, 30 Nov 2016 22:22:57 -0500 Subject: [PATCH 164/727] Better layout --- .../keymaps/robot_test_layout/keymap.c | 121 ++++++++++-------- 1 file changed, 71 insertions(+), 50 deletions(-) diff --git a/keyboards/ergodox/keymaps/robot_test_layout/keymap.c b/keyboards/ergodox/keymaps/robot_test_layout/keymap.c index 0363eedc2b..480be177f0 100644 --- a/keyboards/ergodox/keymaps/robot_test_layout/keymap.c +++ b/keyboards/ergodox/keymaps/robot_test_layout/keymap.c @@ -9,16 +9,42 @@ enum custom_keycodes { RGB_00FF00, RGB_0000FF, RGB_FFFFFF, - RGB_TOGGLE + RGB_TOGGLE, + LED1, + LED2, + LED3 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = KEYMAP( - RGB_TOGGLE,RGB_FF0000,RGB_00FF00,RGB_0000FF,RGB_FFFFFF,RGB_TOGGLE,KC_6, - KC_A,KC_Q,KC_W,KC_E,KC_R,KC_T,KC_E,KC_A,KC_A,KC_S,KC_D,KC_F,KC_G,KC_A,KC_Z,KC_X,KC_C,KC_V,KC_B,KC_L,KC_Z,KC_QUOTE,KC_N,KC_U,KC_C,KC_E,KC_8,KC_9,KC_Y,KC_COMMA,KC_6,KC_7,KC_6,KC_7,KC_8,KC_9,KC_0,KC_MINUS,KC_J,KC_Y,KC_U,KC_I,KC_O,KC_P,KC_BSLASH,KC_H,KC_J,KC_K,KC_L,KC_J,KC_K,KC_Z,KC_N,KC_M,KC_COMMA,KC_DOT,KC_E,KC_QUOTE,KC_8,KC_7,KC_LBRACKET,KC_RBRACKET,KC_H,KC_9,KC_7,KC_8,KC_7,KC_6,KC_9), + RGB_TOGGLE, RGB_FF0000, RGB_00FF00, RGB_0000FF, RGB_FFFFFF, KC_5, KC_LPRN, + KC_GRAVE, KC_A, KC_B, KC_C, KC_D, KC_E, KC_EXLM, + KC_HASH, KC_J, KC_K, KC_L, KC_M, KC_N, + KC_AMPR, KC_T, KC_U, KC_V, KC_W, KC_X, KC_DLR, + KC_PIPE, KC_R, KC_PLUS, KC_LCBR, KC_RCBR, + + KC_F, KC_G, + KC_H, + KC_P, KC_O, KC_I, + + + + // RIGHT HAND + KC_RPRN, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + KC_AT, KC_F, KC_G, KC_H, KC_I, KC_COLN, KC_BSLS, + KC_O, KC_P, KC_Q, KC_R, KC_S, KC_QUOT, + LSFT(KC_COMM), KC_Y, KC_Z, KC_COMM, KC_DOT, KC_SLSH, KC_ASTR, + KC_A, KC_B, KC_C, KC_D, KC_PIPE, + + LED1, KC_E, + LED2, + LED3, KC_J, KC_K + ) }; + + const uint16_t PROGMEM fn_actions[] = { [1] = ACTION_LAYER_TAP_TOGGLE(1) }; @@ -35,7 +61,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; - +bool status_led1_on = false, status_led2_on = false, status_led3_on = false; bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { // dynamically generate these. @@ -43,7 +69,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE EZ_RGB(0xff0000); - register_code(KC_A); unregister_code(KC_A); + register_code(KC_1); unregister_code(KC_1); #endif } return false; @@ -52,7 +78,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE EZ_RGB(0x00ff00); - register_code(KC_B); unregister_code(KC_B); + register_code(KC_2); unregister_code(KC_2); #endif } return false; @@ -61,7 +87,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE EZ_RGB(0x0000ff); - register_code(KC_C); unregister_code(KC_C); + register_code(KC_3); unregister_code(KC_3); #endif } return false; @@ -70,7 +96,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE EZ_RGB(0xffffff); - register_code(KC_D); unregister_code(KC_D); + register_code(KC_4); unregister_code(KC_4); #endif } return false; @@ -79,52 +105,47 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { if (record->event.pressed) { #ifdef RGBLIGHT_ENABLE rgblight_toggle(); - register_code(KC_F); unregister_code(KC_F); + register_code(KC_EQL); unregister_code(KC_EQL); #endif } return false; break; + case LED1: + if (record->event.pressed) { + if(status_led1_on) { + ergodox_right_led_1_off(); + status_led1_on = false; + } else { + ergodox_right_led_1_on(); + status_led1_on = true; + } + } + return false; + break; + case LED2: + if (record->event.pressed) { + if(status_led2_on) { + ergodox_right_led_2_off(); + status_led2_on = false; + } else { + ergodox_right_led_2_on(); + status_led2_on = true; + } + } + return false; + break; + case LED3: + if (record->event.pressed) { + if(status_led3_on) { + ergodox_right_led_3_off(); + status_led3_on = false; + } else { + ergodox_right_led_3_on(); + status_led3_on = true; + } + } + return false; + break; } return true; } - -void matrix_scan_user(void) { - - uint8_t layer = biton32(layer_state); - - ergodox_board_led_off(); - ergodox_right_led_1_off(); - ergodox_right_led_2_off(); - ergodox_right_led_3_off(); - switch (layer) { - case 1: - ergodox_right_led_1_on(); - break; - case 2: - ergodox_right_led_2_on(); - break; - case 3: - ergodox_right_led_3_on(); - break; - case 4: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - break; - case 5: - ergodox_right_led_1_on(); - ergodox_right_led_3_on(); - break; - case 6: - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - break; - case 7: - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - break; - default: - break; - } - -}; From 1f290f6213c7c3bf001a85242cfae4f9b5a14942 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Thu, 1 Dec 2016 16:21:15 -0500 Subject: [PATCH 165/727] Make my builds smaller --- keyboards/planck/keymaps/cbbrowne/Makefile | 7 ++++--- keyboards/planck/keymaps/cbbrowne/config.h | 3 +++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/keyboards/planck/keymaps/cbbrowne/Makefile b/keyboards/planck/keymaps/cbbrowne/Makefile index 581e08cd02..3c20da84be 100644 --- a/keyboards/planck/keymaps/cbbrowne/Makefile +++ b/keyboards/planck/keymaps/cbbrowne/Makefile @@ -5,8 +5,8 @@ # the appropriate keymap folder that will get included automatically # BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = no # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work @@ -16,10 +16,11 @@ AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +API_SYSEX_ENABLE = no # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR include ../../../../Makefile -endif \ No newline at end of file +endif diff --git a/keyboards/planck/keymaps/cbbrowne/config.h b/keyboards/planck/keymaps/cbbrowne/config.h index 1e04ba61d7..bd15fd5a22 100644 --- a/keyboards/planck/keymaps/cbbrowne/config.h +++ b/keyboards/planck/keymaps/cbbrowne/config.h @@ -1,6 +1,9 @@ #ifndef CONFIG_USER_H #define CONFIG_USER_H +#define NO_DEBUG +#define NO_PRINT + #include "../../config.h" #define LEADER_TIMEOUT 300 From b787ed9dc6c81f47215c48d47240717afa3cd440 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Thu, 1 Dec 2016 16:24:03 -0500 Subject: [PATCH 166/727] More notes on .hex size protection --- readme.md | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/readme.md b/readme.md index a92ae4c1dc..5c82efcddd 100644 --- a/readme.md +++ b/readme.md @@ -1318,14 +1318,27 @@ You probably don't want to "brick" your keyboard, making it impossible to rewrite firmware onto it. Here are some of the parameters to show what things are (and likely aren't) too risky. -- If a keyboard map does not include RESET, then, to get into DFU +- If your keyboard map does not include RESET, then, to get into DFU mode, you will need to press the reset button on the PCB, which - requires unscrewing some bits. + requires unscrewing the bottom. - Messing with tmk_core / common files might make the keyboard inoperable - Too large a .hex file is trouble; `make dfu` will erase the block, test the size (oops, wrong order!), which errors out, failing to - flash the keyboard + flash the keyboard, leaving it in DFU mode. + - To this end, note that the maximum .hex file size on Planck is + 7000h (28672 decimal) +```Linking: .build/planck_rev4_cbbrowne.elf [OK] +Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK] + +Size after: + text data bss dec hex filename + 0 22396 0 22396 577c planck_rev4_cbbrowne.hex +``` + - The above file is of size 22396/577ch, which is less than + 28672/7000h + - As long as you have a suitable alternative .hex file around, you + can retry, loading that one - DFU tools do /not/ allow you to write into the bootloader (unless you throw in extra fruitsalad of options), so there is little risk there. From af4c44deef55a300113b4a65f8d3ab37bf2ef97d Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Thu, 1 Dec 2016 16:31:30 -0500 Subject: [PATCH 167/727] Improve docs on SYSEX bit --- keyboards/planck/keymaps/cbbrowne/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/cbbrowne/Makefile b/keyboards/planck/keymaps/cbbrowne/Makefile index 3c20da84be..b1c70ace70 100644 --- a/keyboards/planck/keymaps/cbbrowne/Makefile +++ b/keyboards/planck/keymaps/cbbrowne/Makefile @@ -16,7 +16,7 @@ AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -API_SYSEX_ENABLE = no +API_SYSEX_ENABLE = yes # Enable SYSEX API (+5390) # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend From 95a160bf92ebc5b92ef360f1649e2bd5e3ac2000 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Thu, 1 Dec 2016 16:31:51 -0500 Subject: [PATCH 168/727] Improve docs on memory usage --- readme.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/readme.md b/readme.md index 5c82efcddd..afdb03ba54 100644 --- a/readme.md +++ b/readme.md @@ -348,6 +348,10 @@ This allows you output audio on the C6 pin (needs abstracting). See the [audio s Use this to debug changes to variable values, see the [tracing variables](#tracing-variables) section for more information. +`API_SYSEX_ENABLE` + +This enables using the Quantum SYSEX API to send strings (somewhere?) + ### Customizing Makefile options on a per-keymap basis If your keymap directory has a file called `Makefile` (note the filename), any Makefile options you set in that file will take precedence over other Makefile options for your particular keyboard. @@ -1339,6 +1343,9 @@ Size after: 28672/7000h - As long as you have a suitable alternative .hex file around, you can retry, loading that one + - Some of the options you might specify in your keyboard's Makefile + consume extra memory; watch out for BOOTMAGIC_ENABLE, + MOUSEKEY_ENABLE, EXTRAKEY_ENABLE, CONSOLE_ENABLE, API_SYSEX_ENABLE - DFU tools do /not/ allow you to write into the bootloader (unless you throw in extra fruitsalad of options), so there is little risk there. From 570e784140becd8621c4d05e8e36c8b0f8402b3b Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Fri, 2 Dec 2016 12:31:43 -0500 Subject: [PATCH 169/727] I want page-down/page-up - put those on LOWER-Left/Right near bottom corner --- keyboards/planck/keymaps/cbbrowne/keymap.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index 4742ca5c06..717f4b2351 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -62,6 +62,7 @@ - How about Alt-F1 thru Alt-F8? - What's the keystroke to get from X to console these days? - A layer for doing console switching would not be a bad idea + - I haven't got page-up/page-down, let's have that... */ enum layers { @@ -117,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QWERTY, KEYPAD, KEYPAD, ALTSLASH, _______}, - {_______, KEYPAD, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, KEYPAD, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_VOLD, KC_VOLU, KC_PGUP} }, [_KEYPAD] = { /* Key Pad */ {KC_ESC, USERNAME, MVERSION, KC_F10, KC_F11, KC_F12, KC_PGUP, KC_KP_ENTER, KC_7, KC_8, KC_9, KC_BSPC}, From f6e86cd2c904cc3951b2341b9c73a535dbf28f03 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Fri, 2 Dec 2016 12:35:03 -0500 Subject: [PATCH 170/727] I also want page-down/page-up on UPPER layer --- keyboards/planck/keymaps/cbbrowne/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c index 717f4b2351..2be4dab4b1 100644 --- a/keyboards/planck/keymaps/cbbrowne/keymap.c +++ b/keyboards/planck/keymaps/cbbrowne/keymap.c @@ -112,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, {_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QWERTY, KEYPAD, KEYPAD, ALTSLASH,_______}, - {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_VOLD, KC_VOLU, KC_PGUP} }, [_LOWER] = { /* LOWER */ {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, From 5d43a2aecf2fcb9ed9a25ddc0924c66e544bcdf8 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Fri, 2 Dec 2016 12:53:18 -0500 Subject: [PATCH 171/727] Kristian's keymap --- keyboards/ergodox/keymaps/kristian/keymap.c | 79 +++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 keyboards/ergodox/keymaps/kristian/keymap.c diff --git a/keyboards/ergodox/keymaps/kristian/keymap.c b/keyboards/ergodox/keymaps/kristian/keymap.c new file mode 100644 index 0000000000..2238590917 --- /dev/null +++ b/keyboards/ergodox/keymaps/kristian/keymap.c @@ -0,0 +1,79 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "version.h" +#include "keymap_fr_ch.h" +#include "keymap_french.h" +#include "keymap_german.h" +#include "keymap_german_ch.h" +#include "keymap_nordic.h" +#include "keymap_norwegian.h" +#include "keymap_spanish.h" + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +[0] = KEYMAP(NO_LESS,KC_1,KC_2,KC_3,KC_4,KC_5,KC_BSPACE,KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,TG(1),KC_BSPACE,KC_A,KC_S,KC_D,KC_F,KC_G,SFT_T(NO_QUOT),CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,SFT_T(KC_EQUAL),MO(1),CTL_T(KC_GRAVE),KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_CAPSLOCK,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_6,KC_7,KC_8,KC_9,KC_0,NO_PLUS,TG(1),KC_Y,KC_U,KC_I,KC_O,KC_P,NO_AM,KC_H,KC_J,KC_K,KC_L,LT(2,NO_OSLH),NO_AE,SFT_T(KC_RBRC),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),SFT_T(NO_QUOT),KC_DOWN,KC_UP,NO_LPRN,NO_RPRN,MO(1),NO_QUOT,CTL_T(KC_ESCAPE),NO_APOS,KC_LALT,KC_LGUI,KC_ENTER), + +[1] = KEYMAP(M(0),KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LSHIFT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LCTL,KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_TRANSPARENT,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_7,KC_8,KC_9,KC_TRANSPARENT,KC_TRANSPARENT,KC_F12,KC_4,KC_5,KC_6,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_0,KC_1,KC_2,KC_3,NO_LBRC,NO_RBRC,KC_LSHIFT,KC_COMMA,KC_DOT,LSFT(NO_LBRC),LSFT(NO_RBRC),KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LALT,KC_LGUI,KC_ENTER), + +[2] = KEYMAP(KC_ESCAPE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_UP,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_TRANSPARENT,KC_LSHIFT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LCTL,KC_LALT,KC_LGUI,KC_MS_BTN1,KC_MS_BTN2,KC_ESCAPE,KC_TRANSPARENT,KC_TRANSPARENT,KC_SPACE,KC_LGUI,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_MEDIA_PREV_TRACK,KC_MEDIA_PLAY_PAUSE,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT,KC_TRANSPARENT,KC_AUDIO_VOL_UP,KC_AUDIO_VOL_DOWN,KC_AUDIO_MUTE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_ESCAPE,KC_MS_WH_UP,KC_MS_WH_DOWN,KC_MS_ACCEL0,KC_MS_ACCEL1), + +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(1) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + switch(id) { + case 0: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + } + return MACRO_NONE; +}; + +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + case 3: + ergodox_right_led_3_on(); + break; + case 4: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + break; + case 5: + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); + break; + case 6: + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); + break; + case 7: + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); + break; + default: + break; + } + +}; From aa70aa3962f0c148916412eb40924e108b6b5c07 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Fri, 2 Dec 2016 13:03:39 -0500 Subject: [PATCH 172/727] Tweaks Kristian's layout again --- keyboards/ergodox/keymaps/kristian/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/kristian/keymap.c b/keyboards/ergodox/keymaps/kristian/keymap.c index 2238590917..e7e4243255 100644 --- a/keyboards/ergodox/keymaps/kristian/keymap.c +++ b/keyboards/ergodox/keymaps/kristian/keymap.c @@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = KEYMAP(NO_LESS,KC_1,KC_2,KC_3,KC_4,KC_5,KC_BSPACE,KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,TG(1),KC_BSPACE,KC_A,KC_S,KC_D,KC_F,KC_G,SFT_T(NO_QUOT),CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,SFT_T(KC_EQUAL),MO(1),CTL_T(KC_GRAVE),KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_CAPSLOCK,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_6,KC_7,KC_8,KC_9,KC_0,NO_PLUS,TG(1),KC_Y,KC_U,KC_I,KC_O,KC_P,NO_AM,KC_H,KC_J,KC_K,KC_L,LT(2,NO_OSLH),NO_AE,SFT_T(KC_RBRC),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),SFT_T(NO_QUOT),KC_DOWN,KC_UP,NO_LPRN,NO_RPRN,MO(1),NO_QUOT,CTL_T(KC_ESCAPE),NO_APOS,KC_LALT,KC_LGUI,KC_ENTER), +[0] = KEYMAP(NO_LESS,KC_1,KC_2,KC_3,KC_4,KC_5,KC_BSPACE,KC_TAB,KC_Q,KC_W,KC_E,KC_R,KC_T,TG(1),KC_BSPACE,KC_A,KC_S,KC_D,KC_F,KC_G,SFT_T(NO_APOS),CTL_T(KC_Z),KC_X,KC_C,KC_V,KC_B,SFT_T(KC_EQUAL),MO(1),CTL_T(KC_GRAVE),KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_CAPSLOCK,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_6,KC_7,KC_8,KC_9,KC_0,NO_PLUS,TG(1),KC_Y,KC_U,KC_I,KC_O,KC_P,NO_AM,KC_H,KC_J,KC_K,KC_L,LT(2,NO_OSLH),NO_AE,SFT_T(KC_RBRC),KC_N,KC_M,KC_COMMA,KC_DOT,CTL_T(KC_SLASH),SFT_T(NO_APOS),KC_DOWN,KC_UP,NO_LPRN,NO_RPRN,MO(1),NO_QUOT,CTL_T(KC_ESCAPE),NO_APOS,KC_LALT,KC_LGUI,KC_ENTER), [1] = KEYMAP(M(0),KC_F1,KC_F2,KC_F3,KC_F4,KC_F5,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_BSPACE,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LSHIFT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LCTL,KC_LGUI,KC_LEFT,KC_RIGHT,KC_ESCAPE,KC_TRANSPARENT,KC_HOME,KC_SPACE,KC_LGUI,KC_LALT,KC_DELETE,KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F11,KC_TRANSPARENT,KC_7,KC_8,KC_9,KC_TRANSPARENT,KC_TRANSPARENT,KC_F12,KC_4,KC_5,KC_6,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_0,KC_1,KC_2,KC_3,NO_LBRC,NO_RBRC,KC_LSHIFT,KC_COMMA,KC_DOT,LSFT(NO_LBRC),LSFT(NO_RBRC),KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_TRANSPARENT,KC_LALT,KC_LGUI,KC_ENTER), From 555e41d9e5f8d393637898e2c77c64066b648245 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Fri, 2 Dec 2016 13:03:51 -0500 Subject: [PATCH 173/727] Annotates nordic --- quantum/keymap_extras/keymap_nordic.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/keymap_extras/keymap_nordic.h b/quantum/keymap_extras/keymap_nordic.h index da5c829757..9b0ef35ca9 100644 --- a/quantum/keymap_extras/keymap_nordic.h +++ b/quantum/keymap_extras/keymap_nordic.h @@ -13,7 +13,7 @@ #define NO_ACUT KC_EQL #define NO_AM KC_LBRC -#define NO_QUOT KC_RBRC +#define NO_QUOT KC_RBRC // this is the "umlaut" char on Nordic keyboards, Apple layout #define NO_AE KC_SCLN #define NO_OSLH KC_QUOT #define NO_APOS KC_NUHS From 245c9508bd6169d2feb398e99234103cc669efa7 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 2 Dec 2016 13:32:50 -0500 Subject: [PATCH 174/727] adds warnings to 4 keymaps --- keyboards/planck/keymaps/bone2planck/Makefile | 4 +++- keyboards/planck/keymaps/brandon/Makefile | 4 +++- keyboards/planck/keymaps/impossible/Makefile | 4 +++- keyboards/planck/keymaps/jeebak/Makefile | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/keyboards/planck/keymaps/bone2planck/Makefile b/keyboards/planck/keymaps/bone2planck/Makefile index 581e08cd02..cf2c31f0fb 100644 --- a/keyboards/planck/keymaps/bone2planck/Makefile +++ b/keyboards/planck/keymaps/bone2planck/Makefile @@ -1,4 +1,6 @@ - +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options # change to "no" to disable the options, or define them in the Makefile in diff --git a/keyboards/planck/keymaps/brandon/Makefile b/keyboards/planck/keymaps/brandon/Makefile index 581e08cd02..cf2c31f0fb 100644 --- a/keyboards/planck/keymaps/brandon/Makefile +++ b/keyboards/planck/keymaps/brandon/Makefile @@ -1,4 +1,6 @@ - +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options # change to "no" to disable the options, or define them in the Makefile in diff --git a/keyboards/planck/keymaps/impossible/Makefile b/keyboards/planck/keymaps/impossible/Makefile index 581e08cd02..cf2c31f0fb 100644 --- a/keyboards/planck/keymaps/impossible/Makefile +++ b/keyboards/planck/keymaps/impossible/Makefile @@ -1,4 +1,6 @@ - +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options # change to "no" to disable the options, or define them in the Makefile in diff --git a/keyboards/planck/keymaps/jeebak/Makefile b/keyboards/planck/keymaps/jeebak/Makefile index 581e08cd02..cf2c31f0fb 100644 --- a/keyboards/planck/keymaps/jeebak/Makefile +++ b/keyboards/planck/keymaps/jeebak/Makefile @@ -1,4 +1,6 @@ - +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options # change to "no" to disable the options, or define them in the Makefile in From cee0cf8a6eca8d2316dd75f39351f13132ff0257 Mon Sep 17 00:00:00 2001 From: cbbrowne Date: Fri, 2 Dec 2016 14:12:55 -0500 Subject: [PATCH 175/727] Adds warnings to Planck keymaps that exceed 0x7000 bytes in size #929 --- keyboards/planck/keymaps/jhenahan/Makefile | 4 +++- keyboards/planck/keymaps/joe/Makefile | 5 ++++- keyboards/planck/keymaps/leo/Makefile | 5 ++++- keyboards/planck/keymaps/lucas/Makefile | 5 ++++- keyboards/planck/keymaps/mollat/Makefile | 5 ++++- keyboards/planck/keymaps/nico/Makefile | 5 ++++- keyboards/planck/keymaps/premek/Makefile | 3 +++ keyboards/planck/keymaps/priyadi/Makefile | 3 +++ keyboards/planck/keymaps/pvc/Makefile | 5 ++++- keyboards/planck/keymaps/sgoodwin/Makefile | 5 ++++- keyboards/planck/keymaps/tak3over/Makefile | 5 ++++- keyboards/planck/keymaps/thermal_printer/Makefile | 3 +++ keyboards/planck/keymaps/vifon/Makefile | 3 +++ 13 files changed, 47 insertions(+), 9 deletions(-) diff --git a/keyboards/planck/keymaps/jhenahan/Makefile b/keyboards/planck/keymaps/jhenahan/Makefile index de01ad2404..83da2a7f89 100644 --- a/keyboards/planck/keymaps/jhenahan/Makefile +++ b/keyboards/planck/keymaps/jhenahan/Makefile @@ -1,4 +1,6 @@ - +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options # change to "no" to disable the options, or define them in the Makefile in diff --git a/keyboards/planck/keymaps/joe/Makefile b/keyboards/planck/keymaps/joe/Makefile index 581e08cd02..b2ca419445 100644 --- a/keyboards/planck/keymaps/joe/Makefile +++ b/keyboards/planck/keymaps/joe/Makefile @@ -1,3 +1,6 @@ +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options @@ -22,4 +25,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR include ../../../../Makefile -endif \ No newline at end of file +endif diff --git a/keyboards/planck/keymaps/leo/Makefile b/keyboards/planck/keymaps/leo/Makefile index 581e08cd02..b2ca419445 100644 --- a/keyboards/planck/keymaps/leo/Makefile +++ b/keyboards/planck/keymaps/leo/Makefile @@ -1,3 +1,6 @@ +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options @@ -22,4 +25,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR include ../../../../Makefile -endif \ No newline at end of file +endif diff --git a/keyboards/planck/keymaps/lucas/Makefile b/keyboards/planck/keymaps/lucas/Makefile index 581e08cd02..b2ca419445 100644 --- a/keyboards/planck/keymaps/lucas/Makefile +++ b/keyboards/planck/keymaps/lucas/Makefile @@ -1,3 +1,6 @@ +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options @@ -22,4 +25,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR include ../../../../Makefile -endif \ No newline at end of file +endif diff --git a/keyboards/planck/keymaps/mollat/Makefile b/keyboards/planck/keymaps/mollat/Makefile index 581e08cd02..b2ca419445 100644 --- a/keyboards/planck/keymaps/mollat/Makefile +++ b/keyboards/planck/keymaps/mollat/Makefile @@ -1,3 +1,6 @@ +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options @@ -22,4 +25,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR include ../../../../Makefile -endif \ No newline at end of file +endif diff --git a/keyboards/planck/keymaps/nico/Makefile b/keyboards/planck/keymaps/nico/Makefile index 581e08cd02..b2ca419445 100644 --- a/keyboards/planck/keymaps/nico/Makefile +++ b/keyboards/planck/keymaps/nico/Makefile @@ -1,3 +1,6 @@ +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options @@ -22,4 +25,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR include ../../../../Makefile -endif \ No newline at end of file +endif diff --git a/keyboards/planck/keymaps/premek/Makefile b/keyboards/planck/keymaps/premek/Makefile index 0f4953888d..b2ca419445 100644 --- a/keyboards/planck/keymaps/premek/Makefile +++ b/keyboards/planck/keymaps/premek/Makefile @@ -1,3 +1,6 @@ +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options diff --git a/keyboards/planck/keymaps/priyadi/Makefile b/keyboards/planck/keymaps/priyadi/Makefile index aa211d2f05..f113f496c2 100644 --- a/keyboards/planck/keymaps/priyadi/Makefile +++ b/keyboards/planck/keymaps/priyadi/Makefile @@ -1,3 +1,6 @@ +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options diff --git a/keyboards/planck/keymaps/pvc/Makefile b/keyboards/planck/keymaps/pvc/Makefile index b2ff961fa5..c92ca1bffa 100644 --- a/keyboards/planck/keymaps/pvc/Makefile +++ b/keyboards/planck/keymaps/pvc/Makefile @@ -1,3 +1,6 @@ +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options # change to "no" to disable the options, or define them in the Makefile in @@ -21,4 +24,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR include ../../../../Makefile -endif \ No newline at end of file +endif diff --git a/keyboards/planck/keymaps/sgoodwin/Makefile b/keyboards/planck/keymaps/sgoodwin/Makefile index 581e08cd02..b2ca419445 100644 --- a/keyboards/planck/keymaps/sgoodwin/Makefile +++ b/keyboards/planck/keymaps/sgoodwin/Makefile @@ -1,3 +1,6 @@ +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options @@ -22,4 +25,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR include ../../../../Makefile -endif \ No newline at end of file +endif diff --git a/keyboards/planck/keymaps/tak3over/Makefile b/keyboards/planck/keymaps/tak3over/Makefile index 581e08cd02..b2ca419445 100644 --- a/keyboards/planck/keymaps/tak3over/Makefile +++ b/keyboards/planck/keymaps/tak3over/Makefile @@ -1,3 +1,6 @@ +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options @@ -22,4 +25,4 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifndef QUANTUM_DIR include ../../../../Makefile -endif \ No newline at end of file +endif diff --git a/keyboards/planck/keymaps/thermal_printer/Makefile b/keyboards/planck/keymaps/thermal_printer/Makefile index 3d1d11877f..9477d1179a 100644 --- a/keyboards/planck/keymaps/thermal_printer/Makefile +++ b/keyboards/planck/keymaps/thermal_printer/Makefile @@ -1,3 +1,6 @@ +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options diff --git a/keyboards/planck/keymaps/vifon/Makefile b/keyboards/planck/keymaps/vifon/Makefile index 838cb4e885..53660a2e76 100644 --- a/keyboards/planck/keymaps/vifon/Makefile +++ b/keyboards/planck/keymaps/vifon/Makefile @@ -1,3 +1,6 @@ +# Please remove if no longer applicable +$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) +$(warning Please disable some options in the Makefile to resolve) # Build Options From 044fa3ff856393d75a80fe6625b4a5682b81b76d Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 27 Nov 2016 22:51:30 -0800 Subject: [PATCH 176/727] Connect the adafruit ble code to the lufa main loop There are now 3 potential locations to send HID reports: 1. USB 2. The bluefruit easy key 3. Adafruit BLE Generally speaking, if USB is connected then we should prefer to send the reports there; it is generally the best channel for this. The bluefruit module has no feedback about bluetooth connectivity so the code must speculatively send reports over both USB and bluetooth. The BLE module has connectivity feedback. In general we want to prefer to send HID reports over USB while connected there, even if BLE is connected. Except that it is convenient to force them over BLE while testing the implementation. This policy has been extracted out into a where_to_send function which returns a bitmask of which of the channels should be used. --- tmk_core/protocol/lufa/lufa.c | 82 ++++++++++++++++++++++++++++++----- 1 file changed, 71 insertions(+), 11 deletions(-) diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 39d4824b6b..ee2552c190 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -52,6 +52,7 @@ #include "descriptor.h" #include "lufa.h" #include "quantum.h" +#include #ifdef NKRO_ENABLE #include "keycode_config.h" @@ -67,13 +68,16 @@ #ifdef BLUETOOTH_ENABLE #include "bluetooth.h" #endif +#ifdef ADAFRUIT_BLE_ENABLE + #include "adafruit_ble.h" +#endif #ifdef VIRTSER_ENABLE #include "virtser.h" #endif #if (defined(RGB_MIDI) | defined(RGBLIGHT_ANIMATIONS)) & defined(RGBLIGHT_ENABLE) - #include "rgblight.h" + #include "rgblight.h" #endif #ifdef MIDI_ENABLE @@ -297,7 +301,9 @@ void EVENT_USB_Device_WakeUp() #ifdef CONSOLE_ENABLE static bool console_flush = false; #define CONSOLE_FLUSH_SET(b) do { \ - uint8_t sreg = SREG; cli(); console_flush = b; SREG = sreg; \ + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {\ + console_flush = b; \ + } \ } while (0) // called every 1ms @@ -501,9 +507,35 @@ static uint8_t keyboard_leds(void) return keyboard_led_stats; } +#define SendToUSB 1 +#define SendToBT 2 +#define SendToBLE 4 + +static inline uint8_t where_to_send(void) { +#ifdef ADAFRUIT_BLE_ENABLE +#if 0 + if (adafruit_ble_is_connected()) { + // For testing, send to BLE as a priority + return SendToBLE; + } +#endif + + // This is the real policy + if (USB_DeviceState != DEVICE_STATE_Configured) { + if (adafruit_ble_is_connected()) { + return SendToBLE; + } + } +#endif + return ((USB_DeviceState == DEVICE_STATE_Configured) ? SendToUSB : 0) +#ifdef BLUETOOTH_ENABLE + || SendToBT +#endif + ; +} + static void send_keyboard(report_keyboard_t *report) { - #ifdef BLUETOOTH_ENABLE bluefruit_serial_send(0xFD); for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) { @@ -512,9 +544,17 @@ static void send_keyboard(report_keyboard_t *report) #endif uint8_t timeout = 255; + uint8_t where = where_to_send(); - if (USB_DeviceState != DEVICE_STATE_Configured) - return; +#ifdef ADAFRUIT_BLE_ENABLE + if (where & SendToBLE) { + adafruit_ble_send_keys(report->mods, report->keys, sizeof(report->keys)); + } +#endif + + if (!(where & SendToUSB)) { + return; + } /* Select the Keyboard Report Endpoint */ #ifdef NKRO_ENABLE @@ -567,8 +607,17 @@ static void send_mouse(report_mouse_t *report) uint8_t timeout = 255; - if (USB_DeviceState != DEVICE_STATE_Configured) - return; + uint8_t where = where_to_send(); + +#ifdef ADAFRUIT_BLE_ENABLE + if (where & SendToBLE) { + // FIXME: mouse buttons + adafruit_ble_send_mouse_move(report->x, report->y, report->v, report->h); + } +#endif + if (!(where & SendToUSB)) { + return; + } /* Select the Mouse Report Endpoint */ Endpoint_SelectEndpoint(MOUSE_IN_EPNUM); @@ -626,9 +675,16 @@ static void send_consumer(uint16_t data) #endif uint8_t timeout = 255; + uint8_t where = where_to_send(); - if (USB_DeviceState != DEVICE_STATE_Configured) - return; +#ifdef ADAFRUIT_BLE_ENABLE + if (where & SendToBLE) { + adafruit_ble_send_consumer_key(data, 0); + } +#endif + if (!(where & SendToUSB)) { + return; + } report_extra_t r = { .report_id = REPORT_ID_CONSUMER, @@ -1038,7 +1094,7 @@ int main(void) print("Keyboard start.\n"); while (1) { - #ifndef BLUETOOTH_ENABLE + #if !defined(BLUETOOTH_ENABLE) && !defined(ADAFRUIT_BLE_ENABLE) while (USB_DeviceState == DEVICE_STATE_Suspended) { print("[s]"); suspend_power_down(); @@ -1054,11 +1110,15 @@ int main(void) midi_device_process(&midi_device); // MIDI_Task(); #endif - + #if defined(RGBLIGHT_ANIMATIONS) & defined(RGBLIGHT_ENABLE) rgblight_task(); #endif +#ifdef ADAFRUIT_BLE_ENABLE + adafruit_ble_task(); +#endif + #ifdef VIRTSER_ENABLE virtser_task(); CDC_Device_USBTask(&cdc_device); From d639e08a3131892c608760df4e3806d843a91176 Mon Sep 17 00:00:00 2001 From: ofples Date: Sat, 3 Dec 2016 13:05:02 +0200 Subject: [PATCH 177/727] Refactored and improved ps2 mouse feature --- tmk_core/protocol/ps2_mouse.c | 373 ++++++++++++++++++++-------------- tmk_core/protocol/ps2_mouse.h | 81 +++++++- 2 files changed, 288 insertions(+), 166 deletions(-) diff --git a/tmk_core/protocol/ps2_mouse.c b/tmk_core/protocol/ps2_mouse.c index 82f6966e8e..f247ba8dca 100644 --- a/tmk_core/protocol/ps2_mouse.c +++ b/tmk_core/protocol/ps2_mouse.c @@ -18,63 +18,99 @@ along with this program. If not, see . #include #include #include -#include "ps2.h" #include "ps2_mouse.h" -#include "report.h" #include "host.h" #include "timer.h" #include "print.h" +#include "report.h" #include "debug.h" +#include "ps2.h" -#ifndef PS2_INIT_DELAY -#define PS2_INIT_DELAY 1000 -#endif +/* ============================= MACROS ============================ */ + +#define PS2_MOUSE_SEND(command, message) \ +do { \ + uint8_t rcv = ps2_host_send(command); \ + if (debug_mouse) { \ + print((message)); \ + xprintf(" command: %X, result: %X, error: %X \n", command, rcv, ps2_error); \ + } \ +} while(0) + +#define PS2_MOUSE_SEND_SAFE(command, message) \ +do { \ + if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ + ps2_mouse_disable_data_reporting(); \ + } \ + PS2_MOUSE_SEND(command, message); \ + if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ + ps2_mouse_enable_data_reporting(); \ + } \ +} while(0) + +#define PS2_MOUSE_SET_SAFE(command, value, message) \ +do { \ + if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ + ps2_mouse_disable_data_reporting(); \ + } \ + PS2_MOUSE_SEND(command, message); \ + PS2_MOUSE_SEND(value, "Sending value"); \ + if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ + ps2_mouse_enable_data_reporting(); \ + } \ +} while(0) + +#define PS2_MOUSE_RECEIVE(message) \ +do { \ + uint8_t rcv = ps2_host_recv_response(); \ + if (debug_mouse) { \ + print((message)); \ + xprintf(" result: %X, error: %X \n", rcv, ps2_error); \ + } \ +} while(0) + +static enum ps2_mouse_mode_e { + PS2_MOUSE_STREAM_MODE, + PS2_MOUSE_REMOTE_MODE, +} ps2_mouse_mode = PS2_MOUSE_STREAM_MODE; static report_mouse_t mouse_report = {}; +static inline void ps2_mouse_print_report(report_mouse_t *mouse_report); +static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report); +static inline void ps2_mouse_clear_report(report_mouse_t *mouse_report); +static inline void ps2_mouse_enable_scrolling(void); +static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report); -static void print_usb_data(void); - +/* ============================= IMPLEMENTATION ============================ */ /* supports only 3 button mouse at this time */ -uint8_t ps2_mouse_init(void) { - uint8_t rcv; - +void ps2_mouse_init(void) { ps2_host_init(); - _delay_ms(PS2_INIT_DELAY); // wait for powering up + _delay_ms(1000); // wait for powering up - // send Reset - rcv = ps2_host_send(0xFF); - print("ps2_mouse_init: send Reset: "); - phex(rcv); phex(ps2_error); print("\n"); + PS2_MOUSE_SEND(PS2_MOUSE_RESET, "ps2_mouse_init: sending reset"); - // read completion code of BAT - rcv = ps2_host_recv_response(); - print("ps2_mouse_init: read BAT: "); - phex(rcv); phex(ps2_error); print("\n"); + PS2_MOUSE_RECEIVE("ps2_mouse_init: read BAT"); + PS2_MOUSE_RECEIVE("ps2_mouse_init: read DevID"); - // read Device ID - rcv = ps2_host_recv_response(); - print("ps2_mouse_init: read DevID: "); - phex(rcv); phex(ps2_error); print("\n"); +#ifdef PS2_MOUSE_USE_REMOTE_MODE + ps2_mouse_set_remote_mode(); +#else + ps2_mouse_enable_data_reporting(); +#endif - // send Set Remote mode - rcv = ps2_host_send(0xF0); - print("ps2_mouse_init: send 0xF0: "); - phex(rcv); phex(ps2_error); print("\n"); +#ifdef PS2_MOUSE_ENABLE_SCROLLING + ps2_mouse_enable_scrolling(); +#endif - return 0; +#ifdef PS2_MOUSE_USE_2_1_SCALING + ps2_mouse_set_scaling_2_1(); +#endif } -#define X_IS_NEG (mouse_report.buttons & (1<buttons & (1<buttons & (1<buttons & (1<buttons & (1<x = X_IS_NEG ? + ((!X_IS_OVF && -127 <= mouse_report->x && mouse_report->x <= -1) ? mouse_report->x : -127) : + ((!X_IS_OVF && 0 <= mouse_report->x && mouse_report->x <= 127) ? mouse_report->x : 127); + mouse_report->y = Y_IS_NEG ? + ((!Y_IS_OVF && -127 <= mouse_report->y && mouse_report->y <= -1) ? mouse_report->y : -127) : + ((!Y_IS_OVF && 0 <= mouse_report->y && mouse_report->y <= 127) ? mouse_report->y : 127); + + // remove sign and overflow flags + mouse_report->buttons &= PS2_MOUSE_BTN_MASK; + + // invert coordinate of y to conform to USB HID mouse + mouse_report->y = -mouse_report->y; +} + +static inline void ps2_mouse_clear_report(report_mouse_t *mouse_report) { + mouse_report->x = 0; + mouse_report->y = 0; + mouse_report->v = 0; + mouse_report->h = 0; + mouse_report->buttons = 0; +} + +static inline void ps2_mouse_print_report(report_mouse_t *mouse_report) { if (!debug_mouse) return; - print("ps2_mouse usb: ["); - phex(mouse_report.buttons); print("|"); - print_hex8((uint8_t)mouse_report.x); print(" "); - print_hex8((uint8_t)mouse_report.y); print(" "); - print_hex8((uint8_t)mouse_report.v); print(" "); - print_hex8((uint8_t)mouse_report.h); print("]\n"); + print("ps2_mouse: ["); + phex(mouse_report->buttons); print("|"); + print_hex8((uint8_t)mouse_report->x); print(" "); + print_hex8((uint8_t)mouse_report->y); print(" "); + print_hex8((uint8_t)mouse_report->v); print(" "); + print_hex8((uint8_t)mouse_report->h); print("]\n"); } +static inline void ps2_mouse_enable_scrolling(void) { + PS2_MOUSE_SEND(PS2_MOUSE_SET_SAMPLE_RATE, "Initiaing scroll wheel enable: Set sample rate"); + PS2_MOUSE_SEND(200, "200"); + PS2_MOUSE_SEND(PS2_MOUSE_SET_SAMPLE_RATE, "Set sample rate"); + PS2_MOUSE_SEND(100, "100"); + PS2_MOUSE_SEND(PS2_MOUSE_SET_SAMPLE_RATE, "Set sample rate"); + PS2_MOUSE_SEND(80, "80"); + PS2_MOUSE_SEND(PS2_MOUSE_GET_DEVICE_ID, "Finished enabling scroll wheel"); + _delay_ms(20); +} -/* PS/2 Mouse Synopsis - * http://www.computer-engineering.org/ps2mouse/ - * - * Command: - * 0xFF: Reset - * 0xF6: Set Defaults Sampling; rate=100, resolution=4cnt/mm, scaling=1:1, reporting=disabled - * 0xF5: Disable Data Reporting - * 0xF4: Enable Data Reporting - * 0xF3: Set Sample Rate - * 0xF2: Get Device ID - * 0xF0: Set Remote Mode - * 0xEB: Read Data - * 0xEA: Set Stream Mode - * 0xE9: Status Request - * 0xE8: Set Resolution - * 0xE7: Set Scaling 2:1 - * 0xE6: Set Scaling 1:1 - * - * Mode: - * Stream Mode: devices sends the data when it changs its state - * Remote Mode: host polls the data periodically - * - * This code uses Remote Mode and polls the data with Read Data(0xEB). - * - * Data format: - * byte|7 6 5 4 3 2 1 0 - * ----+-------------------------------------------------------------- - * 0|Yovflw Xovflw Ysign Xsign 1 Middle Right Left - * 1| X movement - * 2| Y movement - */ +#define PRESS_SCROLL_BUTTONS mouse_report->buttons |= (PS2_MOUSE_SCROLL_BTN_MASK) +#define RELEASE_SCROLL_BUTTONS mouse_report->buttons &= ~(PS2_MOUSE_SCROLL_BTN_MASK) +static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report) { + static enum { + SCROLL_NONE, + SCROLL_BTN, + SCROLL_SENT, + } scroll_state = SCROLL_NONE; + static uint16_t scroll_button_time = 0; + + if (PS2_MOUSE_SCROLL_BTN_MASK == (mouse_report->buttons & (PS2_MOUSE_SCROLL_BTN_MASK))) { + // All scroll buttons are pressed + + if (scroll_state == SCROLL_NONE) { + scroll_button_time = timer_read(); + scroll_state = SCROLL_BTN; + } + + // If the mouse has moved, update the report to scroll instead of move the mouse + if (mouse_report->x || mouse_report->y) { + scroll_state = SCROLL_SENT; + mouse_report->v = -mouse_report->y/(PS2_MOUSE_SCROLL_DIVISOR_V); + mouse_report->h = mouse_report->x/(PS2_MOUSE_SCROLL_DIVISOR_H); + mouse_report->x = 0; + mouse_report->y = 0; + } + } else if (0 == (PS2_MOUSE_SCROLL_BTN_MASK & mouse_report->buttons)) { + // None of the scroll buttons are pressed + +#if PS2_MOUSE_SCROLL_BTN_SEND + if (scroll_state == SCROLL_BTN + && timer_elapsed(scroll_button_time) < PS2_MOUSE_SCROLL_BTN_SEND) { + PRESS_SCROLL_BUTTONS; + host_mouse_send(mouse_report); + _delay_ms(100); + RELEASE_SCROLL_BUTTONS; + } +#endif + scroll_state = SCROLL_NONE; + } + + RELEASE_SCROLL_BUTTONS; +} \ No newline at end of file diff --git a/tmk_core/protocol/ps2_mouse.h b/tmk_core/protocol/ps2_mouse.h index 27d9790d43..3b498059dc 100644 --- a/tmk_core/protocol/ps2_mouse.h +++ b/tmk_core/protocol/ps2_mouse.h @@ -20,15 +20,13 @@ along with this program. If not, see . #include -#define PS2_MOUSE_READ_DATA 0xEB - /* * Data format: * byte|7 6 5 4 3 2 1 0 - * ----+-------------------------------------------------------------- - * 0|Yovflw Xovflw Ysign Xsign 1 Middle Right Left - * 1| X movement(0-255) - * 2| Y movement(0-255) + * ----+---------------------------------------------------------------- + * 0|[Yovflw][Xovflw][Ysign ][Xsign ][ 1 ][Middle][Right ][Left ] + * 1|[ X movement(0-255) ] + * 2|[ Y movement(0-255) ] */ #define PS2_MOUSE_BTN_MASK 0x07 #define PS2_MOUSE_BTN_LEFT 0 @@ -39,10 +37,6 @@ along with this program. If not, see . #define PS2_MOUSE_X_OVFLW 6 #define PS2_MOUSE_Y_OVFLW 7 - -/* - * Scroll by mouse move with pressing button - */ /* mouse button to start scrolling; set 0 to disable scroll */ #ifndef PS2_MOUSE_SCROLL_BTN_MASK #define PS2_MOUSE_SCROLL_BTN_MASK (1<. #ifndef PS2_MOUSE_SCROLL_DIVISOR_H #define PS2_MOUSE_SCROLL_DIVISOR_H 2 #endif +/* multiply reported mouse values by these */ +#ifndef PS2_MOUSE_X_MULTIPLIER +#define PS2_MOUSE_X_MULTIPLIER 1 +#endif +#ifndef PS2_MOUSE_Y_MULTIPLIER +#define PS2_MOUSE_Y_MULTIPLIER 1 +#endif +#ifndef PS2_MOUSE_V_MULTIPLIER +#define PS2_MOUSE_V_MULTIPLIER 1 +#endif +/* For some mice this will need to be 0x0F */ +#ifndef PS2_MOUSE_SCROLL_MASK +#define PS2_MOUSE_SCROLL_MASK 0xFF +#endif +enum ps2_mouse_command_e { + PS2_MOUSE_RESET = 0xFF, + PS2_MOUSE_RESEND = 0xFE, + PS2_MOSUE_SET_DEFAULTS = 0xF6, + PS2_MOUSE_DISABLE_DATA_REPORTING = 0xF5, + PS2_MOUSE_ENABLE_DATA_REPORTING = 0xF4, + PS2_MOUSE_SET_SAMPLE_RATE = 0xF3, + PS2_MOUSE_GET_DEVICE_ID = 0xF2, + PS2_MOUSE_SET_REMOTE_MODE = 0xF0, + PS2_MOUSE_SET_WRAP_MODE = 0xEC, + PS2_MOUSE_READ_DATA = 0xEB, + PS2_MOUSE_SET_STREAM_MODE = 0xEA, + PS2_MOUSE_STATUS_REQUEST = 0xE9, + PS2_MOUSE_SET_RESOLUTION = 0xE8, + PS2_MOUSE_SET_SCALING_2_1 = 0xE7, + PS2_MOUSE_SET_SCALING_1_1 = 0xE6, +}; + +typedef enum ps2_mouse_resolution_e { + PS2_MOUSE_1_COUNT_MM, + PS2_MOUSE_2_COUNT_MM, + PS2_MOUSE_4_COUNT_MM, + PS2_MOUSE_8_COUNT_MM, +} ps2_mouse_resolution_t; + +typedef enum ps2_mouse_sample_rate_e { + PS2_MOUSE_10_SAMPLES_SEC = 10, + PS2_MOUSE_20_SAMPLES_SEC = 20, + PS2_MOUSE_40_SAMPLES_SEC = 40, + PS2_MOUSE_60_SAMPLES_SEC = 60, + PS2_MOUSE_80_SAMPLES_SEC = 80, + PS2_MOUSE_100_SAMPLES_SEC = 100, + PS2_MOUSE_200_SAMPLES_SEC = 200, +} ps2_mouse_sample_rate_t; + +void ps2_mouse_init(void); -uint8_t ps2_mouse_init(void); void ps2_mouse_task(void); +void ps2_mouse_disable_data_reporting(void); + +void ps2_mouse_enable_data_reporting(void); + +void ps2_mouse_set_remote_mode(void); + +void ps2_mouse_set_stream_mode(void); + +void ps2_mouse_set_scaling_2_1(void); + +void ps2_mouse_set_scaling_1_1(void); + +void ps2_mouse_set_resolution(ps2_mouse_resolution_t resolution); + +void ps2_mouse_set_sample_rate(ps2_mouse_sample_rate_t sample_rate); + #endif From 9f41544e1de12b92bdc15538ec7a9e66a4af0c43 Mon Sep 17 00:00:00 2001 From: Ofer Plesser Date: Sat, 3 Dec 2016 13:09:42 +0200 Subject: [PATCH 178/727] Added back PS2_MOUSE_INIT_DELAY define --- tmk_core/protocol/ps2_mouse.c | 2 +- tmk_core/protocol/ps2_mouse.h | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tmk_core/protocol/ps2_mouse.c b/tmk_core/protocol/ps2_mouse.c index f247ba8dca..04c15dd4fd 100644 --- a/tmk_core/protocol/ps2_mouse.c +++ b/tmk_core/protocol/ps2_mouse.c @@ -283,4 +283,4 @@ static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report) { } RELEASE_SCROLL_BUTTONS; -} \ No newline at end of file +} diff --git a/tmk_core/protocol/ps2_mouse.h b/tmk_core/protocol/ps2_mouse.h index 3b498059dc..e11c705fc6 100644 --- a/tmk_core/protocol/ps2_mouse.h +++ b/tmk_core/protocol/ps2_mouse.h @@ -66,6 +66,9 @@ along with this program. If not, see . #ifndef PS2_MOUSE_SCROLL_MASK #define PS2_MOUSE_SCROLL_MASK 0xFF #endif +#ifndef PS2_MOUSE_INIT_DELAY +#define PS2_MOUSE_INIT_DELAY 1000 +#endif enum ps2_mouse_command_e { PS2_MOUSE_RESET = 0xFF, From 8e2732edf3c457d98dd4526d88dad26786cb3db9 Mon Sep 17 00:00:00 2001 From: Ofer Plesser Date: Sat, 3 Dec 2016 13:11:37 +0200 Subject: [PATCH 179/727] Updated ps2 mouse documentation in readme --- readme.md | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index be15108329..1f06fe79fa 100644 --- a/readme.md +++ b/readme.md @@ -1191,7 +1191,7 @@ Please note the USB port can only supply a limited amount of power to the keyboa Its possible to hook up a PS/2 mouse (for example touchpads or trackpoints) to your keyboard as a composite device. -Then, decide whether to use USART (best), interrupts (better) or busywait (not recommended), and enable the relevant option. +There are three available modes for hooking up PS/2 devices: USART (best), interrupts (better) or busywait (not recommended). ### Busywait version @@ -1316,6 +1316,116 @@ In your keyboard config.h: #endif ``` +### Additional Settings + +#### PS/2 mouse features + +These enable settings supported by the PS/2 mouse protocol: http://www.computer-engineering.org/ps2mouse/ + +``` +/* Use remote mode instead of the default stream mode (see link) */ +#define PS2_MOUSE_USE_REMOTE_MODE + +/* Enable the scrollwheel or scroll gesture on your mouse or touchpad */ +#define PS2_MOUSE_ENABLE_SCROLLING + +/* Some mice will need a scroll mask to be configured. The default is 0xFF. */ +#define PS2_MOUSE_SCROLL_MASK 0x0F + +/* Applies a transformation to the movement before sending to the host (see link) */ +#define PS2_MOUSE_USE_2_1_SCALING + +/* The time to wait after initializing the ps2 host */ +#define PS2_MOUSE_INIT_DELAY 1000 /* Default */ +``` + +You can also call the following functions from ps2_mouse.h + +``` +void ps2_mouse_disable_data_reporting(void); + +void ps2_mouse_enable_data_reporting(void); + +void ps2_mouse_set_remote_mode(void); + +void ps2_mouse_set_stream_mode(void); + +void ps2_mouse_set_scaling_2_1(void); + +void ps2_mouse_set_scaling_1_1(void); + +void ps2_mouse_set_resolution(ps2_mouse_resolution_t resolution); + +void ps2_mouse_set_sample_rate(ps2_mouse_sample_rate_t sample_rate); +``` + +#### Fine control + +Use the following defines to change the sensitivity and speed of the mouse. +Note: you can also use `ps2_mouse_set_resolution` for the same effect (not supported on most touchpads). + +``` +#define PS2_MOUSE_X_MULTIPLIER 3 +#define PS2_MOUSE_Y_MULTIPLIER 3 +#define PS2_MOUSE_V_MULTIPLIER 1 +``` + +#### Scroll button + +If you're using a trackpoint, you will likely want to be able to use it for scrolling. +Its possible to enable a "scroll button/s" that when pressed will cause the mouse to scroll instead of moving. +To enable the feature, you must set a scroll button mask as follows: + +``` +#define PS2_MOUSE_SCROLL_BTN_MASK (1< Date: Sat, 3 Dec 2016 13:41:56 +0200 Subject: [PATCH 180/727] Forgot to use define in delay instead of hardcoded number --- tmk_core/protocol/ps2_mouse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/protocol/ps2_mouse.c b/tmk_core/protocol/ps2_mouse.c index 04c15dd4fd..af971dd497 100644 --- a/tmk_core/protocol/ps2_mouse.c +++ b/tmk_core/protocol/ps2_mouse.c @@ -88,7 +88,7 @@ static inline void ps2_mouse_scroll_button_task(report_mouse_t *mouse_report); void ps2_mouse_init(void) { ps2_host_init(); - _delay_ms(1000); // wait for powering up + _delay_ms(PS2_MOUSE_INIT_DELAY); // wait for powering up PS2_MOUSE_SEND(PS2_MOUSE_RESET, "ps2_mouse_init: sending reset"); From f39e1b5dfe7552f01dbc6eab95c268f41a9d98e2 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 3 Dec 2016 14:36:39 -0500 Subject: [PATCH 181/727] cleans-up formatting of readme --- readme.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 1f06fe79fa..b618334dc3 100644 --- a/readme.md +++ b/readme.md @@ -1442,13 +1442,16 @@ what things are (and likely aren't) too risky. flash the keyboard, leaving it in DFU mode. - To this end, note that the maximum .hex file size on Planck is 7000h (28672 decimal) -```Linking: .build/planck_rev4_cbbrowne.elf [OK] + +``` +Linking: .build/planck_rev4_cbbrowne.elf [OK] Creating load file for Flash: .build/planck_rev4_cbbrowne.hex [OK] Size after: text data bss dec hex filename 0 22396 0 22396 577c planck_rev4_cbbrowne.hex ``` + - The above file is of size 22396/577ch, which is less than 28672/7000h - As long as you have a suitable alternative .hex file around, you From ae66f0d70214b8a5e81ecf5977619bcd4bf6f413 Mon Sep 17 00:00:00 2001 From: climbalima Date: Sat, 3 Dec 2016 17:09:11 -0500 Subject: [PATCH 182/727] added plate files for lets split --- keyboards/pilcrow/Makefile | 3 + keyboards/pilcrow/config.h | 162 + keyboards/pilcrow/keymaps/default/Makefile | 21 + keyboards/pilcrow/keymaps/default/config.h | 8 + keyboards/pilcrow/keymaps/default/keymap.c | 88 + keyboards/pilcrow/keymaps/default/readme.md | 1 + keyboards/pilcrow/pilcrow.c | 28 + keyboards/pilcrow/pilcrow.h | 23 + keyboards/pilcrow/readme.md | 28 + keyboards/pilcrow/rules.mk | 67 + keyboards/weebkeeb/Makefile | 3 + keyboards/weebkeeb/aek.dxf | 6486 ++++++++++++++++++ keyboards/weebkeeb/config.h | 162 + keyboards/weebkeeb/keymaps/default/Makefile | 21 + keyboards/weebkeeb/keymaps/default/config.h | 8 + keyboards/weebkeeb/keymaps/default/keymap.c | 119 + keyboards/weebkeeb/keymaps/default/readme.md | 1 + keyboards/weebkeeb/readme.md | 28 + keyboards/weebkeeb/rules.mk | 67 + keyboards/weebkeeb/weebkeeb.c | 28 + keyboards/weebkeeb/weebkeeb.h | 23 + 21 files changed, 7375 insertions(+) create mode 100644 keyboards/pilcrow/Makefile create mode 100644 keyboards/pilcrow/config.h create mode 100644 keyboards/pilcrow/keymaps/default/Makefile create mode 100644 keyboards/pilcrow/keymaps/default/config.h create mode 100644 keyboards/pilcrow/keymaps/default/keymap.c create mode 100644 keyboards/pilcrow/keymaps/default/readme.md create mode 100644 keyboards/pilcrow/pilcrow.c create mode 100644 keyboards/pilcrow/pilcrow.h create mode 100644 keyboards/pilcrow/readme.md create mode 100644 keyboards/pilcrow/rules.mk create mode 100644 keyboards/weebkeeb/Makefile create mode 100644 keyboards/weebkeeb/aek.dxf create mode 100644 keyboards/weebkeeb/config.h create mode 100644 keyboards/weebkeeb/keymaps/default/Makefile create mode 100644 keyboards/weebkeeb/keymaps/default/config.h create mode 100644 keyboards/weebkeeb/keymaps/default/keymap.c create mode 100644 keyboards/weebkeeb/keymaps/default/readme.md create mode 100644 keyboards/weebkeeb/readme.md create mode 100644 keyboards/weebkeeb/rules.mk create mode 100644 keyboards/weebkeeb/weebkeeb.c create mode 100644 keyboards/weebkeeb/weebkeeb.h diff --git a/keyboards/pilcrow/Makefile b/keyboards/pilcrow/Makefile new file mode 100644 index 0000000000..4e2a6f00fd --- /dev/null +++ b/keyboards/pilcrow/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/pilcrow/config.h b/keyboards/pilcrow/config.h new file mode 100644 index 0000000000..d79c1ba40c --- /dev/null +++ b/keyboards/pilcrow/config.h @@ -0,0 +1,162 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER You +#define PRODUCT pilcrow +#define DESCRIPTION A custom keyboard + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 10 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { B2, C6, D7, E6 } +#define MATRIX_COL_PINS { B6, D1, B4, B5, D4, D0, B3, B1, F7, F6 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/pilcrow/keymaps/default/Makefile b/keyboards/pilcrow/keymaps/default/Makefile new file mode 100644 index 0000000000..f4671a9d11 --- /dev/null +++ b/keyboards/pilcrow/keymaps/default/Makefile @@ -0,0 +1,21 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/pilcrow/keymaps/default/config.h b/keyboards/pilcrow/keymaps/default/config.h new file mode 100644 index 0000000000..df06a26206 --- /dev/null +++ b/keyboards/pilcrow/keymaps/default/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif \ No newline at end of file diff --git a/keyboards/pilcrow/keymaps/default/keymap.c b/keyboards/pilcrow/keymaps/default/keymap.c new file mode 100644 index 0000000000..e382e4c6ad --- /dev/null +++ b/keyboards/pilcrow/keymaps/default/keymap.c @@ -0,0 +1,88 @@ +#include "pilcrow.h" +#define _______ KC_TRNS +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( \ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, \ + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \ + KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MT(MOD_LSFT, KC_SPC), MO(2), MO(3), KC_DEL, KC_ESC \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[1] = KEYMAP( \ + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, \ + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_PIPE, S(KC_QUOT), \ + _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_GRV \ +), +[2] = KEYMAP( \ + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \ + KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, \ + OSM(MOD_LSFT), KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_BSLS, KC_QUOT, \ + _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[3] = KEYMAP( \ + RESET, KC_UP, _______, _______, _______, _______, _______, KC_MS_WH_DOWN, KC_MS_U, KC_MS_WH_UP, \ + KC_LEFT, KC_DOWN, KC_RIGHT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_MS_L,KC_MS_D, KC_MS_R, \ + RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, \ + _______, _______, _______, _______, KC_MS_BTN1, KC_MS_BTN2, _______, _______, _______, _______ \ +) +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + +} \ No newline at end of file diff --git a/keyboards/pilcrow/keymaps/default/readme.md b/keyboards/pilcrow/keymaps/default/readme.md new file mode 100644 index 0000000000..95472dfca8 --- /dev/null +++ b/keyboards/pilcrow/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for pilcrow \ No newline at end of file diff --git a/keyboards/pilcrow/pilcrow.c b/keyboards/pilcrow/pilcrow.c new file mode 100644 index 0000000000..c8243df7bf --- /dev/null +++ b/keyboards/pilcrow/pilcrow.c @@ -0,0 +1,28 @@ +#include "pilcrow.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} diff --git a/keyboards/pilcrow/pilcrow.h b/keyboards/pilcrow/pilcrow.h new file mode 100644 index 0000000000..7138ccb3f6 --- /dev/null +++ b/keyboards/pilcrow/pilcrow.h @@ -0,0 +1,23 @@ +#ifndef PILCROW_H +#define PILCROW_H + +#include "quantum.h" + +// This a shortcut to help you visually see your layout. +// The following is an example using the Planck MIT layout +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 } \ +} + +#endif diff --git a/keyboards/pilcrow/readme.md b/keyboards/pilcrow/readme.md new file mode 100644 index 0000000000..7a7f6d2af5 --- /dev/null +++ b/keyboards/pilcrow/readme.md @@ -0,0 +1,28 @@ +pilcrow keyboard firmware +====================== + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme](/). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/pilcrow folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make default`. + +### Other Keymaps + +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. + +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + +``` +$ make [default|jack|] +``` + +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/pilcrow/rules.mk b/keyboards/pilcrow/rules.mk new file mode 100644 index 0000000000..55898147dd --- /dev/null +++ b/keyboards/pilcrow/rules.mk @@ -0,0 +1,67 @@ +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 diff --git a/keyboards/weebkeeb/Makefile b/keyboards/weebkeeb/Makefile new file mode 100644 index 0000000000..4e2a6f00fd --- /dev/null +++ b/keyboards/weebkeeb/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/weebkeeb/aek.dxf b/keyboards/weebkeeb/aek.dxf new file mode 100644 index 0000000000..cfe80946bd --- /dev/null +++ b/keyboards/weebkeeb/aek.dxf @@ -0,0 +1,6486 @@ +0 +SECTION +2 +ENTITIES +0 +LINE +8 +0 +10 +104.7875 +20 +-89.2875 +11 +104.7875 +21 +-91.6875 +0 +LINE +8 +0 +10 +104.7875 +20 +-91.6875 +11 +102.3875 +21 +-91.6875 +0 +LINE +8 +0 +10 +102.3875 +20 +-91.6875 +11 +102.3875 +21 +-89.2875 +0 +LINE +8 +0 +10 +102.3875 +20 +-89.2875 +11 +104.7875 +21 +-89.2875 +0 +LINE +8 +0 +10 +116.8875 +20 +-89.2875 +11 +116.8875 +21 +-91.6875 +0 +LINE +8 +0 +10 +116.8875 +20 +-91.6875 +11 +114.4875 +21 +-91.6875 +0 +LINE +8 +0 +10 +114.4875 +20 +-91.6875 +11 +114.4875 +21 +-89.2875 +0 +LINE +8 +0 +10 +114.4875 +20 +-89.2875 +11 +116.8875 +21 +-89.2875 +0 +CIRCLE +8 +0 +10 +109.6375 +20 +-90.4875 +40 +3.15 +0 +LINE +8 +0 +10 +103.4875 +20 +-94.3875 +11 +103.4875 +21 +-99.4875 +0 +LINE +8 +0 +10 +103.4875 +20 +-99.4875 +11 +100.8875 +21 +-99.4875 +0 +LINE +8 +0 +10 +100.8875 +20 +-99.4875 +11 +100.8875 +21 +-94.3875 +0 +LINE +8 +0 +10 +100.8875 +20 +-94.3875 +11 +103.4875 +21 +-94.3875 +0 +LINE +8 +0 +10 +191.7875 +20 +-94.3875 +11 +191.7875 +21 +-99.4875 +0 +LINE +8 +0 +10 +191.7875 +20 +-99.4875 +11 +194.3875 +21 +-99.4875 +0 +LINE +8 +0 +10 +194.3875 +20 +-99.4875 +11 +194.3875 +21 +-94.3875 +0 +LINE +8 +0 +10 +194.3875 +20 +-94.3875 +11 +191.7875 +21 +-94.3875 +0 +LINE +8 +0 +10 +155.3875 +20 +-84.0875 +11 +139.8875 +21 +-84.0875 +0 +LINE +8 +0 +10 +139.8875 +20 +-84.0875 +11 +139.8875 +21 +-96.8875 +0 +LINE +8 +0 +10 +139.8875 +20 +-96.8875 +11 +155.3875 +21 +-96.8875 +0 +LINE +8 +0 +10 +155.3875 +20 +-96.8875 +11 +155.3875 +21 +-84.0875 +0 +LINE +8 +0 +10 +256.28125 +20 +-56.2875 +11 +256.28125 +21 +-61.3875 +0 +LINE +8 +0 +10 +256.28125 +20 +-61.3875 +11 +253.68125 +21 +-61.3875 +0 +LINE +8 +0 +10 +253.68125 +20 +-61.3875 +11 +253.68125 +21 +-56.2875 +0 +LINE +8 +0 +10 +253.68125 +20 +-56.2875 +11 +256.28125 +21 +-56.2875 +0 +LINE +8 +0 +10 +281.88125 +20 +-56.2875 +11 +281.88125 +21 +-61.3875 +0 +LINE +8 +0 +10 +281.88125 +20 +-61.3875 +11 +284.48125 +21 +-61.3875 +0 +LINE +8 +0 +10 +284.48125 +20 +-61.3875 +11 +284.48125 +21 +-56.2875 +0 +LINE +8 +0 +10 +284.48125 +20 +-56.2875 +11 +281.88125 +21 +-56.2875 +0 +LINE +8 +0 +10 +276.83125 +20 +-45.9875 +11 +261.33125 +21 +-45.9875 +0 +LINE +8 +0 +10 +261.33125 +20 +-45.9875 +11 +261.33125 +21 +-58.7875 +0 +LINE +8 +0 +10 +261.33125 +20 +-58.7875 +11 +276.83125 +21 +-58.7875 +0 +LINE +8 +0 +10 +276.83125 +20 +-58.7875 +11 +276.83125 +21 +-45.9875 +0 +LINE +8 +0 +10 +258.6625 +20 +-18.1875 +11 +258.6625 +21 +-23.2875 +0 +LINE +8 +0 +10 +258.6625 +20 +-23.2875 +11 +256.0625 +21 +-23.2875 +0 +LINE +8 +0 +10 +256.0625 +20 +-23.2875 +11 +256.0625 +21 +-18.1875 +0 +LINE +8 +0 +10 +256.0625 +20 +-18.1875 +11 +258.6625 +21 +-18.1875 +0 +LINE +8 +0 +10 +284.2625 +20 +-18.1875 +11 +284.2625 +21 +-23.2875 +0 +LINE +8 +0 +10 +284.2625 +20 +-23.2875 +11 +286.8625 +21 +-23.2875 +0 +LINE +8 +0 +10 +286.8625 +20 +-23.2875 +11 +286.8625 +21 +-18.1875 +0 +LINE +8 +0 +10 +286.8625 +20 +-18.1875 +11 +284.2625 +21 +-18.1875 +0 +LINE +8 +0 +10 +279.2125 +20 +-7.8875 +11 +263.7125 +21 +-7.8875 +0 +LINE +8 +0 +10 +263.7125 +20 +-7.8875 +11 +263.7125 +21 +-20.6875 +0 +LINE +8 +0 +10 +263.7125 +20 +-20.6875 +11 +279.2125 +21 +-20.6875 +0 +LINE +8 +0 +10 +279.2125 +20 +-20.6875 +11 +279.2125 +21 +-7.8875 +0 +LINE +8 +0 +10 +13.39375 +20 +-75.3375 +11 +13.39375 +21 +-80.4375 +0 +LINE +8 +0 +10 +13.39375 +20 +-80.4375 +11 +10.79375 +21 +-80.4375 +0 +LINE +8 +0 +10 +10.79375 +20 +-80.4375 +11 +10.79375 +21 +-75.3375 +0 +LINE +8 +0 +10 +10.79375 +20 +-75.3375 +11 +13.39375 +21 +-75.3375 +0 +LINE +8 +0 +10 +38.99375 +20 +-75.3375 +11 +38.99375 +21 +-80.4375 +0 +LINE +8 +0 +10 +38.99375 +20 +-80.4375 +11 +41.59375 +21 +-80.4375 +0 +LINE +8 +0 +10 +41.59375 +20 +-80.4375 +11 +41.59375 +21 +-75.3375 +0 +LINE +8 +0 +10 +41.59375 +20 +-75.3375 +11 +38.99375 +21 +-75.3375 +0 +LINE +8 +0 +10 +33.94375 +20 +-65.0375 +11 +18.44375 +21 +-65.0375 +0 +LINE +8 +0 +10 +18.44375 +20 +-65.0375 +11 +18.44375 +21 +-77.8375 +0 +LINE +8 +0 +10 +18.44375 +20 +-77.8375 +11 +33.94375 +21 +-77.8375 +0 +LINE +8 +0 +10 +33.94375 +20 +-77.8375 +11 +33.94375 +21 +-65.0375 +0 +LINE +8 +0 +10 +193.4875 +20 +-7.8875 +11 +177.9875 +21 +-7.8875 +0 +LINE +8 +0 +10 +177.9875 +20 +-7.8875 +11 +177.9875 +21 +-20.6875 +0 +LINE +8 +0 +10 +177.9875 +20 +-20.6875 +11 +193.4875 +21 +-20.6875 +0 +LINE +8 +0 +10 +193.4875 +20 +-20.6875 +11 +193.4875 +21 +-7.8875 +0 +LINE +8 +0 +10 +174.4375 +20 +-7.8875 +11 +158.9375 +21 +-7.8875 +0 +LINE +8 +0 +10 +158.9375 +20 +-7.8875 +11 +158.9375 +21 +-20.6875 +0 +LINE +8 +0 +10 +158.9375 +20 +-20.6875 +11 +174.4375 +21 +-20.6875 +0 +LINE +8 +0 +10 +174.4375 +20 +-20.6875 +11 +174.4375 +21 +-7.8875 +0 +LINE +8 +0 +10 +183.9625 +20 +-26.9375 +11 +168.4625 +21 +-26.9375 +0 +LINE +8 +0 +10 +168.4625 +20 +-26.9375 +11 +168.4625 +21 +-39.7375 +0 +LINE +8 +0 +10 +168.4625 +20 +-39.7375 +11 +183.9625 +21 +-39.7375 +0 +LINE +8 +0 +10 +183.9625 +20 +-39.7375 +11 +183.9625 +21 +-26.9375 +0 +LINE +8 +0 +10 +169.675 +20 +-45.9875 +11 +154.175 +21 +-45.9875 +0 +LINE +8 +0 +10 +154.175 +20 +-45.9875 +11 +154.175 +21 +-58.7875 +0 +LINE +8 +0 +10 +154.175 +20 +-58.7875 +11 +169.675 +21 +-58.7875 +0 +LINE +8 +0 +10 +169.675 +20 +-58.7875 +11 +169.675 +21 +-45.9875 +0 +LINE +8 +0 +10 +150.625 +20 +-45.9875 +11 +135.125 +21 +-45.9875 +0 +LINE +8 +0 +10 +135.125 +20 +-45.9875 +11 +135.125 +21 +-58.7875 +0 +LINE +8 +0 +10 +135.125 +20 +-58.7875 +11 +150.625 +21 +-58.7875 +0 +LINE +8 +0 +10 +150.625 +20 +-58.7875 +11 +150.625 +21 +-45.9875 +0 +LINE +8 +0 +10 +160.15 +20 +-65.0375 +11 +144.65 +21 +-65.0375 +0 +LINE +8 +0 +10 +144.65 +20 +-65.0375 +11 +144.65 +21 +-77.8375 +0 +LINE +8 +0 +10 +144.65 +20 +-77.8375 +11 +160.15 +21 +-77.8375 +0 +LINE +8 +0 +10 +160.15 +20 +-77.8375 +11 +160.15 +21 +-65.0375 +0 +LINE +8 +0 +10 +141.1 +20 +-65.0375 +11 +125.6 +21 +-65.0375 +0 +LINE +8 +0 +10 +125.6 +20 +-65.0375 +11 +125.6 +21 +-77.8375 +0 +LINE +8 +0 +10 +125.6 +20 +-77.8375 +11 +141.1 +21 +-77.8375 +0 +LINE +8 +0 +10 +141.1 +20 +-77.8375 +11 +141.1 +21 +-65.0375 +0 +LINE +8 +0 +10 +155.3875 +20 +-7.8875 +11 +139.8875 +21 +-7.8875 +0 +LINE +8 +0 +10 +139.8875 +20 +-7.8875 +11 +139.8875 +21 +-20.6875 +0 +LINE +8 +0 +10 +139.8875 +20 +-20.6875 +11 +155.3875 +21 +-20.6875 +0 +LINE +8 +0 +10 +155.3875 +20 +-20.6875 +11 +155.3875 +21 +-7.8875 +0 +LINE +8 +0 +10 +136.3375 +20 +-7.8875 +11 +120.8375 +21 +-7.8875 +0 +LINE +8 +0 +10 +120.8375 +20 +-7.8875 +11 +120.8375 +21 +-20.6875 +0 +LINE +8 +0 +10 +120.8375 +20 +-20.6875 +11 +136.3375 +21 +-20.6875 +0 +LINE +8 +0 +10 +136.3375 +20 +-20.6875 +11 +136.3375 +21 +-7.8875 +0 +LINE +8 +0 +10 +164.9125 +20 +-26.9375 +11 +149.4125 +21 +-26.9375 +0 +LINE +8 +0 +10 +149.4125 +20 +-26.9375 +11 +149.4125 +21 +-39.7375 +0 +LINE +8 +0 +10 +149.4125 +20 +-39.7375 +11 +164.9125 +21 +-39.7375 +0 +LINE +8 +0 +10 +164.9125 +20 +-39.7375 +11 +164.9125 +21 +-26.9375 +0 +LINE +8 +0 +10 +145.8625 +20 +-26.9375 +11 +130.3625 +21 +-26.9375 +0 +LINE +8 +0 +10 +130.3625 +20 +-26.9375 +11 +130.3625 +21 +-39.7375 +0 +LINE +8 +0 +10 +130.3625 +20 +-39.7375 +11 +145.8625 +21 +-39.7375 +0 +LINE +8 +0 +10 +145.8625 +20 +-39.7375 +11 +145.8625 +21 +-26.9375 +0 +LINE +8 +0 +10 +131.575 +20 +-45.9875 +11 +116.075 +21 +-45.9875 +0 +LINE +8 +0 +10 +116.075 +20 +-45.9875 +11 +116.075 +21 +-58.7875 +0 +LINE +8 +0 +10 +116.075 +20 +-58.7875 +11 +131.575 +21 +-58.7875 +0 +LINE +8 +0 +10 +131.575 +20 +-58.7875 +11 +131.575 +21 +-45.9875 +0 +LINE +8 +0 +10 +122.05 +20 +-65.0375 +11 +106.55 +21 +-65.0375 +0 +LINE +8 +0 +10 +106.55 +20 +-65.0375 +11 +106.55 +21 +-77.8375 +0 +LINE +8 +0 +10 +106.55 +20 +-77.8375 +11 +122.05 +21 +-77.8375 +0 +LINE +8 +0 +10 +122.05 +20 +-77.8375 +11 +122.05 +21 +-65.0375 +0 +LINE +8 +0 +10 +103.0 +20 +-65.0375 +11 +87.5 +21 +-65.0375 +0 +LINE +8 +0 +10 +87.5 +20 +-65.0375 +11 +87.5 +21 +-77.8375 +0 +LINE +8 +0 +10 +87.5 +20 +-77.8375 +11 +103.0 +21 +-77.8375 +0 +LINE +8 +0 +10 +103.0 +20 +-77.8375 +11 +103.0 +21 +-65.0375 +0 +LINE +8 +0 +10 +117.2875 +20 +-7.8875 +11 +101.7875 +21 +-7.8875 +0 +LINE +8 +0 +10 +101.7875 +20 +-7.8875 +11 +101.7875 +21 +-20.6875 +0 +LINE +8 +0 +10 +101.7875 +20 +-20.6875 +11 +117.2875 +21 +-20.6875 +0 +LINE +8 +0 +10 +117.2875 +20 +-20.6875 +11 +117.2875 +21 +-7.8875 +0 +LINE +8 +0 +10 +98.2375 +20 +-7.8875 +11 +82.7375 +21 +-7.8875 +0 +LINE +8 +0 +10 +82.7375 +20 +-7.8875 +11 +82.7375 +21 +-20.6875 +0 +LINE +8 +0 +10 +82.7375 +20 +-20.6875 +11 +98.2375 +21 +-20.6875 +0 +LINE +8 +0 +10 +98.2375 +20 +-20.6875 +11 +98.2375 +21 +-7.8875 +0 +LINE +8 +0 +10 +126.8125 +20 +-26.9375 +11 +111.3125 +21 +-26.9375 +0 +LINE +8 +0 +10 +111.3125 +20 +-26.9375 +11 +111.3125 +21 +-39.7375 +0 +LINE +8 +0 +10 +111.3125 +20 +-39.7375 +11 +126.8125 +21 +-39.7375 +0 +LINE +8 +0 +10 +126.8125 +20 +-39.7375 +11 +126.8125 +21 +-26.9375 +0 +LINE +8 +0 +10 +107.7625 +20 +-26.9375 +11 +92.2625 +21 +-26.9375 +0 +LINE +8 +0 +10 +92.2625 +20 +-26.9375 +11 +92.2625 +21 +-39.7375 +0 +LINE +8 +0 +10 +92.2625 +20 +-39.7375 +11 +107.7625 +21 +-39.7375 +0 +LINE +8 +0 +10 +107.7625 +20 +-39.7375 +11 +107.7625 +21 +-26.9375 +0 +LINE +8 +0 +10 +112.525 +20 +-45.9875 +11 +97.025 +21 +-45.9875 +0 +LINE +8 +0 +10 +97.025 +20 +-45.9875 +11 +97.025 +21 +-58.7875 +0 +LINE +8 +0 +10 +97.025 +20 +-58.7875 +11 +112.525 +21 +-58.7875 +0 +LINE +8 +0 +10 +112.525 +20 +-58.7875 +11 +112.525 +21 +-45.9875 +0 +LINE +8 +0 +10 +93.475 +20 +-45.9875 +11 +77.975 +21 +-45.9875 +0 +LINE +8 +0 +10 +77.975 +20 +-45.9875 +11 +77.975 +21 +-58.7875 +0 +LINE +8 +0 +10 +77.975 +20 +-58.7875 +11 +93.475 +21 +-58.7875 +0 +LINE +8 +0 +10 +93.475 +20 +-58.7875 +11 +93.475 +21 +-45.9875 +0 +LINE +8 +0 +10 +83.95 +20 +-65.0375 +11 +68.45 +21 +-65.0375 +0 +LINE +8 +0 +10 +68.45 +20 +-65.0375 +11 +68.45 +21 +-77.8375 +0 +LINE +8 +0 +10 +68.45 +20 +-77.8375 +11 +83.95 +21 +-77.8375 +0 +LINE +8 +0 +10 +83.95 +20 +-77.8375 +11 +83.95 +21 +-65.0375 +0 +LINE +8 +0 +10 +79.1875 +20 +-84.0875 +11 +63.6875 +21 +-84.0875 +0 +LINE +8 +0 +10 +63.6875 +20 +-84.0875 +11 +63.6875 +21 +-96.8875 +0 +LINE +8 +0 +10 +63.6875 +20 +-96.8875 +11 +79.1875 +21 +-96.8875 +0 +LINE +8 +0 +10 +79.1875 +20 +-96.8875 +11 +79.1875 +21 +-84.0875 +0 +LINE +8 +0 +10 +79.1875 +20 +-7.8875 +11 +63.6875 +21 +-7.8875 +0 +LINE +8 +0 +10 +63.6875 +20 +-7.8875 +11 +63.6875 +21 +-20.6875 +0 +LINE +8 +0 +10 +63.6875 +20 +-20.6875 +11 +79.1875 +21 +-20.6875 +0 +LINE +8 +0 +10 +79.1875 +20 +-20.6875 +11 +79.1875 +21 +-7.8875 +0 +LINE +8 +0 +10 +60.1375 +20 +-7.8875 +11 +44.6375 +21 +-7.8875 +0 +LINE +8 +0 +10 +44.6375 +20 +-7.8875 +11 +44.6375 +21 +-20.6875 +0 +LINE +8 +0 +10 +44.6375 +20 +-20.6875 +11 +60.1375 +21 +-20.6875 +0 +LINE +8 +0 +10 +60.1375 +20 +-20.6875 +11 +60.1375 +21 +-7.8875 +0 +LINE +8 +0 +10 +88.7125 +20 +-26.9375 +11 +73.2125 +21 +-26.9375 +0 +LINE +8 +0 +10 +73.2125 +20 +-26.9375 +11 +73.2125 +21 +-39.7375 +0 +LINE +8 +0 +10 +73.2125 +20 +-39.7375 +11 +88.7125 +21 +-39.7375 +0 +LINE +8 +0 +10 +88.7125 +20 +-39.7375 +11 +88.7125 +21 +-26.9375 +0 +LINE +8 +0 +10 +69.6625 +20 +-26.9375 +11 +54.1625 +21 +-26.9375 +0 +LINE +8 +0 +10 +54.1625 +20 +-26.9375 +11 +54.1625 +21 +-39.7375 +0 +LINE +8 +0 +10 +54.1625 +20 +-39.7375 +11 +69.6625 +21 +-39.7375 +0 +LINE +8 +0 +10 +69.6625 +20 +-39.7375 +11 +69.6625 +21 +-26.9375 +0 +LINE +8 +0 +10 +74.425 +20 +-45.9875 +11 +58.925 +21 +-45.9875 +0 +LINE +8 +0 +10 +58.925 +20 +-45.9875 +11 +58.925 +21 +-58.7875 +0 +LINE +8 +0 +10 +58.925 +20 +-58.7875 +11 +74.425 +21 +-58.7875 +0 +LINE +8 +0 +10 +74.425 +20 +-58.7875 +11 +74.425 +21 +-45.9875 +0 +LINE +8 +0 +10 +64.9 +20 +-65.0375 +11 +49.4 +21 +-65.0375 +0 +LINE +8 +0 +10 +49.4 +20 +-65.0375 +11 +49.4 +21 +-77.8375 +0 +LINE +8 +0 +10 +49.4 +20 +-77.8375 +11 +64.9 +21 +-77.8375 +0 +LINE +8 +0 +10 +64.9 +20 +-77.8375 +11 +64.9 +21 +-65.0375 +0 +LINE +8 +0 +10 +52.9937 +20 +-84.0875 +11 +37.4937 +21 +-84.0875 +0 +LINE +8 +0 +10 +37.4937 +20 +-84.0875 +11 +37.4937 +21 +-96.8875 +0 +LINE +8 +0 +10 +37.4937 +20 +-96.8875 +11 +52.9937 +21 +-96.8875 +0 +LINE +8 +0 +10 +52.9937 +20 +-96.8875 +11 +52.9937 +21 +-84.0875 +0 +LINE +8 +0 +10 +41.0875 +20 +-7.8875 +11 +25.5875 +21 +-7.8875 +0 +LINE +8 +0 +10 +25.5875 +20 +-7.8875 +11 +25.5875 +21 +-20.6875 +0 +LINE +8 +0 +10 +25.5875 +20 +-20.6875 +11 +41.0875 +21 +-20.6875 +0 +LINE +8 +0 +10 +41.0875 +20 +-20.6875 +11 +41.0875 +21 +-7.8875 +0 +LINE +8 +0 +10 +22.0375 +20 +-7.8875 +11 +6.5375 +21 +-7.8875 +0 +LINE +8 +0 +10 +6.5375 +20 +-7.8875 +11 +6.5375 +21 +-20.6875 +0 +LINE +8 +0 +10 +6.5375 +20 +-20.6875 +11 +22.0375 +21 +-20.6875 +0 +LINE +8 +0 +10 +22.0375 +20 +-20.6875 +11 +22.0375 +21 +-7.8875 +0 +LINE +8 +0 +10 +50.6125 +20 +-26.9375 +11 +35.1125 +21 +-26.9375 +0 +LINE +8 +0 +10 +35.1125 +20 +-26.9375 +11 +35.1125 +21 +-39.7375 +0 +LINE +8 +0 +10 +35.1125 +20 +-39.7375 +11 +50.6125 +21 +-39.7375 +0 +LINE +8 +0 +10 +50.6125 +20 +-39.7375 +11 +50.6125 +21 +-26.9375 +0 +LINE +8 +0 +10 +26.8 +20 +-26.9375 +11 +11.3 +21 +-26.9375 +0 +LINE +8 +0 +10 +11.3 +20 +-26.9375 +11 +11.3 +21 +-39.7375 +0 +LINE +8 +0 +10 +11.3 +20 +-39.7375 +11 +26.8 +21 +-39.7375 +0 +LINE +8 +0 +10 +26.8 +20 +-39.7375 +11 +26.8 +21 +-26.9375 +0 +LINE +8 +0 +10 +55.375 +20 +-45.9875 +11 +39.875 +21 +-45.9875 +0 +LINE +8 +0 +10 +39.875 +20 +-45.9875 +11 +39.875 +21 +-58.7875 +0 +LINE +8 +0 +10 +39.875 +20 +-58.7875 +11 +55.375 +21 +-58.7875 +0 +LINE +8 +0 +10 +55.375 +20 +-58.7875 +11 +55.375 +21 +-45.9875 +0 +LINE +8 +0 +10 +29.18125 +20 +-45.9875 +11 +13.68125 +21 +-45.9875 +0 +LINE +8 +0 +10 +13.68125 +20 +-45.9875 +11 +13.68125 +21 +-58.7875 +0 +LINE +8 +0 +10 +13.68125 +20 +-58.7875 +11 +29.18125 +21 +-58.7875 +0 +LINE +8 +0 +10 +29.18125 +20 +-58.7875 +11 +29.18125 +21 +-45.9875 +0 +LINE +8 +0 +10 +26.8 +20 +-84.0875 +11 +11.3 +21 +-84.0875 +0 +LINE +8 +0 +10 +11.3 +20 +-84.0875 +11 +11.3 +21 +-96.8875 +0 +LINE +8 +0 +10 +11.3 +20 +-96.8875 +11 +26.8 +21 +-96.8875 +0 +LINE +8 +0 +10 +26.8 +20 +-96.8875 +11 +26.8 +21 +-84.0875 +0 +LINE +8 +0 +10 +260.1625 +20 +-26.9375 +11 +244.6625 +21 +-26.9375 +0 +LINE +8 +0 +10 +244.6625 +20 +-26.9375 +11 +244.6625 +21 +-39.7375 +0 +LINE +8 +0 +10 +244.6625 +20 +-39.7375 +11 +260.1625 +21 +-39.7375 +0 +LINE +8 +0 +10 +260.1625 +20 +-39.7375 +11 +260.1625 +21 +-26.9375 +0 +LINE +8 +0 +10 +283.975 +20 +-26.9375 +11 +268.475 +21 +-26.9375 +0 +LINE +8 +0 +10 +268.475 +20 +-26.9375 +11 +268.475 +21 +-39.7375 +0 +LINE +8 +0 +10 +268.475 +20 +-39.7375 +11 +283.975 +21 +-39.7375 +0 +LINE +8 +0 +10 +283.975 +20 +-39.7375 +11 +283.975 +21 +-26.9375 +0 +LINE +8 +0 +10 +283.975 +20 +-84.0875 +11 +268.475 +21 +-84.0875 +0 +LINE +8 +0 +10 +268.475 +20 +-84.0875 +11 +268.475 +21 +-96.8875 +0 +LINE +8 +0 +10 +268.475 +20 +-96.8875 +11 +283.975 +21 +-96.8875 +0 +LINE +8 +0 +10 +283.975 +20 +-96.8875 +11 +283.975 +21 +-84.0875 +0 +LINE +8 +0 +10 +250.6375 +20 +-7.8875 +11 +235.1375 +21 +-7.8875 +0 +LINE +8 +0 +10 +235.1375 +20 +-7.8875 +11 +235.1375 +21 +-20.6875 +0 +LINE +8 +0 +10 +235.1375 +20 +-20.6875 +11 +250.6375 +21 +-20.6875 +0 +LINE +8 +0 +10 +250.6375 +20 +-20.6875 +11 +250.6375 +21 +-7.8875 +0 +LINE +8 +0 +10 +241.1125 +20 +-26.9375 +11 +225.6125 +21 +-26.9375 +0 +LINE +8 +0 +10 +225.6125 +20 +-26.9375 +11 +225.6125 +21 +-39.7375 +0 +LINE +8 +0 +10 +225.6125 +20 +-39.7375 +11 +241.1125 +21 +-39.7375 +0 +LINE +8 +0 +10 +241.1125 +20 +-39.7375 +11 +241.1125 +21 +-26.9375 +0 +LINE +8 +0 +10 +222.0625 +20 +-26.9375 +11 +206.5625 +21 +-26.9375 +0 +LINE +8 +0 +10 +206.5625 +20 +-26.9375 +11 +206.5625 +21 +-39.7375 +0 +LINE +8 +0 +10 +206.5625 +20 +-39.7375 +11 +222.0625 +21 +-39.7375 +0 +LINE +8 +0 +10 +222.0625 +20 +-39.7375 +11 +222.0625 +21 +-26.9375 +0 +LINE +8 +0 +10 +245.875 +20 +-45.9875 +11 +230.375 +21 +-45.9875 +0 +LINE +8 +0 +10 +230.375 +20 +-45.9875 +11 +230.375 +21 +-58.7875 +0 +LINE +8 +0 +10 +230.375 +20 +-58.7875 +11 +245.875 +21 +-58.7875 +0 +LINE +8 +0 +10 +245.875 +20 +-58.7875 +11 +245.875 +21 +-45.9875 +0 +LINE +8 +0 +10 +226.825 +20 +-45.9875 +11 +211.325 +21 +-45.9875 +0 +LINE +8 +0 +10 +211.325 +20 +-45.9875 +11 +211.325 +21 +-58.7875 +0 +LINE +8 +0 +10 +211.325 +20 +-58.7875 +11 +226.825 +21 +-58.7875 +0 +LINE +8 +0 +10 +226.825 +20 +-58.7875 +11 +226.825 +21 +-45.9875 +0 +LINE +8 +0 +10 +236.35 +20 +-65.0375 +11 +220.85 +21 +-65.0375 +0 +LINE +8 +0 +10 +220.85 +20 +-65.0375 +11 +220.85 +21 +-77.8375 +0 +LINE +8 +0 +10 +220.85 +20 +-77.8375 +11 +236.35 +21 +-77.8375 +0 +LINE +8 +0 +10 +236.35 +20 +-77.8375 +11 +236.35 +21 +-65.0375 +0 +LINE +8 +0 +10 +217.3 +20 +-65.0375 +11 +201.8 +21 +-65.0375 +0 +LINE +8 +0 +10 +201.8 +20 +-65.0375 +11 +201.8 +21 +-77.8375 +0 +LINE +8 +0 +10 +201.8 +20 +-77.8375 +11 +217.3 +21 +-77.8375 +0 +LINE +8 +0 +10 +217.3 +20 +-77.8375 +11 +217.3 +21 +-65.0375 +0 +LINE +8 +0 +10 +257.78125 +20 +-84.0875 +11 +242.28125 +21 +-84.0875 +0 +LINE +8 +0 +10 +242.28125 +20 +-84.0875 +11 +242.28125 +21 +-96.8875 +0 +LINE +8 +0 +10 +242.28125 +20 +-96.8875 +11 +257.78125 +21 +-96.8875 +0 +LINE +8 +0 +10 +257.78125 +20 +-96.8875 +11 +257.78125 +21 +-84.0875 +0 +LINE +8 +0 +10 +231.5875 +20 +-7.8875 +11 +216.0875 +21 +-7.8875 +0 +LINE +8 +0 +10 +216.0875 +20 +-7.8875 +11 +216.0875 +21 +-20.6875 +0 +LINE +8 +0 +10 +216.0875 +20 +-20.6875 +11 +231.5875 +21 +-20.6875 +0 +LINE +8 +0 +10 +231.5875 +20 +-20.6875 +11 +231.5875 +21 +-7.8875 +0 +LINE +8 +0 +10 +212.5375 +20 +-7.8875 +11 +197.0375 +21 +-7.8875 +0 +LINE +8 +0 +10 +197.0375 +20 +-7.8875 +11 +197.0375 +21 +-20.6875 +0 +LINE +8 +0 +10 +197.0375 +20 +-20.6875 +11 +212.5375 +21 +-20.6875 +0 +LINE +8 +0 +10 +212.5375 +20 +-20.6875 +11 +212.5375 +21 +-7.8875 +0 +LINE +8 +0 +10 +203.0125 +20 +-26.9375 +11 +187.5125 +21 +-26.9375 +0 +LINE +8 +0 +10 +187.5125 +20 +-26.9375 +11 +187.5125 +21 +-39.7375 +0 +LINE +8 +0 +10 +187.5125 +20 +-39.7375 +11 +203.0125 +21 +-39.7375 +0 +LINE +8 +0 +10 +203.0125 +20 +-39.7375 +11 +203.0125 +21 +-26.9375 +0 +LINE +8 +0 +10 +207.775 +20 +-45.9875 +11 +192.275 +21 +-45.9875 +0 +LINE +8 +0 +10 +192.275 +20 +-45.9875 +11 +192.275 +21 +-58.7875 +0 +LINE +8 +0 +10 +192.275 +20 +-58.7875 +11 +207.775 +21 +-58.7875 +0 +LINE +8 +0 +10 +207.775 +20 +-58.7875 +11 +207.775 +21 +-45.9875 +0 +LINE +8 +0 +10 +188.725 +20 +-45.9875 +11 +173.225 +21 +-45.9875 +0 +LINE +8 +0 +10 +173.225 +20 +-45.9875 +11 +173.225 +21 +-58.7875 +0 +LINE +8 +0 +10 +173.225 +20 +-58.7875 +11 +188.725 +21 +-58.7875 +0 +LINE +8 +0 +10 +188.725 +20 +-58.7875 +11 +188.725 +21 +-45.9875 +0 +LINE +8 +0 +10 +198.25 +20 +-65.0375 +11 +182.75 +21 +-65.0375 +0 +LINE +8 +0 +10 +182.75 +20 +-65.0375 +11 +182.75 +21 +-77.8375 +0 +LINE +8 +0 +10 +182.75 +20 +-77.8375 +11 +198.25 +21 +-77.8375 +0 +LINE +8 +0 +10 +198.25 +20 +-77.8375 +11 +198.25 +21 +-65.0375 +0 +LINE +8 +0 +10 +179.2 +20 +-65.0375 +11 +163.7 +21 +-65.0375 +0 +LINE +8 +0 +10 +163.7 +20 +-65.0375 +11 +163.7 +21 +-77.8375 +0 +LINE +8 +0 +10 +163.7 +20 +-77.8375 +11 +179.2 +21 +-77.8375 +0 +LINE +8 +0 +10 +179.2 +20 +-77.8375 +11 +179.2 +21 +-65.0375 +0 +LINE +8 +0 +10 +231.5875 +20 +-84.0875 +11 +216.0875 +21 +-84.0875 +0 +LINE +8 +0 +10 +216.0875 +20 +-84.0875 +11 +216.0875 +21 +-96.8875 +0 +LINE +8 +0 +10 +216.0875 +20 +-96.8875 +11 +231.5875 +21 +-96.8875 +0 +LINE +8 +0 +10 +231.5875 +20 +-96.8875 +11 +231.5875 +21 +-84.0875 +0 +LINE +8 +0 +10 +244.01875 +20 +-75.3375 +11 +244.01875 +21 +-80.4375 +0 +LINE +8 +0 +10 +244.01875 +20 +-80.4375 +11 +241.41875 +21 +-80.4375 +0 +LINE +8 +0 +10 +241.41875 +20 +-80.4375 +11 +241.41875 +21 +-75.3375 +0 +LINE +8 +0 +10 +241.41875 +20 +-75.3375 +11 +244.01875 +21 +-75.3375 +0 +LINE +8 +0 +10 +284.61875 +20 +-75.3375 +11 +284.61875 +21 +-80.4375 +0 +LINE +8 +0 +10 +284.61875 +20 +-80.4375 +11 +287.21875 +21 +-80.4375 +0 +LINE +8 +0 +10 +287.21875 +20 +-80.4375 +11 +287.21875 +21 +-75.3375 +0 +LINE +8 +0 +10 +287.21875 +20 +-75.3375 +11 +284.61875 +21 +-75.3375 +0 +LINE +8 +0 +10 +272.06875 +20 +-65.0375 +11 +256.56875 +21 +-65.0375 +0 +LINE +8 +0 +10 +256.56875 +20 +-65.0375 +11 +256.56875 +21 +-77.8375 +0 +LINE +8 +0 +10 +256.56875 +20 +-77.8375 +11 +272.06875 +21 +-77.8375 +0 +LINE +8 +0 +10 +272.06875 +20 +-77.8375 +11 +272.06875 +21 +-65.0375 +0 +TEXT +8 +Cmts +62 +1 +10 +303.847897 +20 +-52.73062 +1 +95.000 mm +40 +1.5 +41 +1.5 +50 +270.186984 +7 +SIMPLEX +72 +1 +73 +2 +11 +303.847897 +21 +-52.73062 +0 +LINE +8 +Cmts +62 +1 +10 +287.34 +20 +-100.28 +11 +305.35289 +21 +-100.221215 +0 +LINE +8 +Cmts +62 +1 +10 +287.03 +20 +-5.29 +11 +305.04289 +21 +-5.231215 +0 +LINE +8 +Cmts +62 +1 +10 +302.342904 +20 +-5.240026 +11 +302.652904 +21 +-100.230026 +0 +LINE +8 +Cmts +62 +1 +10 +302.652904 +20 +-100.230026 +11 +302.06281 +21 +-99.105442 +0 +LINE +8 +Cmts +62 +1 +10 +302.652904 +20 +-100.230026 +11 +303.235645 +21 +-99.101614 +0 +LINE +8 +Cmts +62 +1 +10 +302.342904 +20 +-5.240026 +11 +301.760163 +21 +-6.368438 +0 +LINE +8 +Cmts +62 +1 +10 +302.342904 +20 +-5.240026 +11 +302.932998 +21 +-6.36461 +0 +TEXT +8 +Cmts +62 +1 +10 +17.92 +20 +-43.7 +1 +25.6125 mm +40 +1.5 +41 +1.5 +7 +SIMPLEX +72 +1 +73 +2 +11 +17.92 +21 +-43.7 +0 +LINE +8 +Cmts +62 +1 +10 +30.71 +20 +-33.34 +11 +30.71 +21 +-45.05 +0 +LINE +8 +Cmts +62 +1 +10 +5.13 +20 +-33.34 +11 +5.13 +21 +-45.05 +0 +LINE +8 +Cmts +62 +1 +10 +5.13 +20 +-42.35 +11 +30.71 +21 +-42.35 +0 +LINE +8 +Cmts +62 +1 +10 +30.71 +20 +-42.35 +11 +29.583496 +21 +-42.936421 +0 +LINE +8 +Cmts +62 +1 +10 +30.71 +20 +-42.35 +11 +29.583496 +21 +-41.763579 +0 +LINE +8 +Cmts +62 +1 +10 +5.13 +20 +-42.35 +11 +6.256504 +21 +-42.936421 +0 +LINE +8 +Cmts +62 +1 +10 +5.13 +20 +-42.35 +11 +6.256504 +21 +-41.763579 +0 +TEXT +8 +Cmts +62 +1 +10 +277.347461 +20 +-39.634741 +1 +25.6125 mm +40 +1.5 +41 +1.5 +50 +0.022425 +7 +SIMPLEX +72 +1 +73 +2 +11 +277.347461 +21 +-39.634741 +0 +LINE +8 +Cmts +62 +1 +10 +290.12 +20 +-33.34 +11 +290.12299 +21 +-40.979741 +0 +LINE +8 +Cmts +62 +1 +10 +264.57 +20 +-33.35 +11 +264.57299 +21 +-40.989741 +0 +LINE +8 +Cmts +62 +1 +10 +264.571933 +20 +-38.289741 +11 +290.121933 +21 +-38.279741 +0 +LINE +8 +Cmts +62 +1 +10 +290.121933 +20 +-38.279741 +11 +288.995659 +21 +-38.866603 +0 +LINE +8 +Cmts +62 +1 +10 +290.121933 +20 +-38.279741 +11 +288.9952 +21 +-37.693761 +0 +LINE +8 +Cmts +62 +1 +10 +264.571933 +20 +-38.289741 +11 +265.698666 +21 +-38.875721 +0 +LINE +8 +Cmts +62 +1 +10 +264.571933 +20 +-38.289741 +11 +265.698207 +21 +-37.702879 +0 +TEXT +8 +Cmts +62 +1 +10 +202.7 +20 +-90.49 +1 +6.300 mm +40 +1.5 +41 +1.5 +50 +270.0 +7 +SIMPLEX +72 +1 +73 +2 +11 +202.7 +21 +-90.49 +0 +LINE +8 +Cmts +62 +1 +10 +195.44 +20 +-93.64 +11 +204.05 +21 +-93.64 +0 +LINE +8 +Cmts +62 +1 +10 +195.44 +20 +-87.34 +11 +204.05 +21 +-87.34 +0 +LINE +8 +Cmts +62 +1 +10 +201.35 +20 +-87.34 +11 +201.35 +21 +-93.64 +0 +LINE +8 +Cmts +62 +1 +10 +201.35 +20 +-93.64 +11 +200.763579 +21 +-92.513496 +0 +LINE +8 +Cmts +62 +1 +10 +201.35 +20 +-93.64 +11 +201.936421 +21 +-92.513496 +0 +LINE +8 +Cmts +62 +1 +10 +201.35 +20 +-87.34 +11 +200.763579 +21 +-88.466504 +0 +LINE +8 +Cmts +62 +1 +10 +201.35 +20 +-87.34 +11 +201.936421 +21 +-88.466504 +0 +TEXT +8 +Cmts +62 +1 +10 +258.43468 +20 +-33.349763 +1 +6.300 mm +40 +1.5 +41 +1.5 +50 +270.090946 +7 +SIMPLEX +72 +1 +73 +2 +11 +258.43468 +21 +-33.349763 +0 +LINE +8 +Cmts +62 +1 +10 +264.59 +20 +-36.49 +11 +257.089682 +21 +-36.501906 +0 +LINE +8 +Cmts +62 +1 +10 +264.58 +20 +-30.19 +11 +257.079682 +21 +-30.201906 +0 +LINE +8 +Cmts +62 +1 +10 +259.779679 +20 +-30.19762 +11 +259.789679 +21 +-36.49762 +0 +LINE +8 +Cmts +62 +1 +10 +259.789679 +20 +-36.49762 +11 +259.201471 +21 +-35.372048 +0 +LINE +8 +Cmts +62 +1 +10 +259.789679 +20 +-36.49762 +11 +260.374311 +21 +-35.370187 +0 +LINE +8 +Cmts +62 +1 +10 +259.779679 +20 +-30.19762 +11 +259.195047 +21 +-31.325053 +0 +LINE +8 +Cmts +62 +1 +10 +259.779679 +20 +-30.19762 +11 +260.367887 +21 +-31.323192 +0 +TEXT +8 +Cmts +62 +1 +10 +24.47 +20 +-33.33 +1 +6.300 mm +40 +1.5 +41 +1.5 +50 +270.0 +7 +SIMPLEX +72 +1 +73 +2 +11 +24.47 +21 +-33.33 +0 +LINE +8 +Cmts +62 +1 +10 +30.72 +20 +-36.48 +11 +23.12 +21 +-36.48 +0 +LINE +8 +Cmts +62 +1 +10 +30.72 +20 +-30.18 +11 +23.12 +21 +-30.18 +0 +LINE +8 +Cmts +62 +1 +10 +25.82 +20 +-30.18 +11 +25.82 +21 +-36.48 +0 +LINE +8 +Cmts +62 +1 +10 +25.82 +20 +-36.48 +11 +25.233579 +21 +-35.353496 +0 +LINE +8 +Cmts +62 +1 +10 +25.82 +20 +-36.48 +11 +26.406421 +21 +-35.353496 +0 +LINE +8 +Cmts +62 +1 +10 +25.82 +20 +-30.18 +11 +25.233579 +21 +-31.306504 +0 +LINE +8 +Cmts +62 +1 +10 +25.82 +20 +-30.18 +11 +26.406421 +21 +-31.306504 +0 +TEXT +8 +Cmts +62 +1 +10 +103.46 +20 +-90.49 +1 +6.300 mm +40 +1.5 +41 +1.5 +50 +270.0 +7 +SIMPLEX +72 +1 +73 +2 +11 +103.46 +21 +-90.49 +0 +LINE +8 +Cmts +62 +1 +10 +109.64 +20 +-93.64 +11 +102.11 +21 +-93.64 +0 +LINE +8 +Cmts +62 +1 +10 +109.64 +20 +-87.34 +11 +102.11 +21 +-87.34 +0 +LINE +8 +Cmts +62 +1 +10 +104.81 +20 +-87.34 +11 +104.81 +21 +-93.64 +0 +LINE +8 +Cmts +62 +1 +10 +104.81 +20 +-93.64 +11 +104.223579 +21 +-92.513496 +0 +LINE +8 +Cmts +62 +1 +10 +104.81 +20 +-93.64 +11 +105.396421 +21 +-92.513496 +0 +LINE +8 +Cmts +62 +1 +10 +104.81 +20 +-87.34 +11 +104.223579 +21 +-88.466504 +0 +LINE +8 +Cmts +62 +1 +10 +104.81 +20 +-87.34 +11 +105.396421 +21 +-88.466504 +0 +TEXT +8 +Cmts +62 +1 +10 +171.54 +20 +-78.67 +1 +47.800 mm +40 +1.5 +41 +1.5 +7 +SIMPLEX +72 +1 +73 +2 +11 +171.54 +21 +-78.67 +0 +LINE +8 +Cmts +62 +1 +10 +147.64 +20 +-90.49 +11 +147.64 +21 +-77.32 +0 +LINE +8 +Cmts +62 +1 +10 +195.44 +20 +-90.49 +11 +195.44 +21 +-77.32 +0 +LINE +8 +Cmts +62 +1 +10 +195.44 +20 +-80.02 +11 +147.64 +21 +-80.02 +0 +LINE +8 +Cmts +62 +1 +10 +147.64 +20 +-80.02 +11 +148.766504 +21 +-79.433579 +0 +LINE +8 +Cmts +62 +1 +10 +147.64 +20 +-80.02 +11 +148.766504 +21 +-80.606421 +0 +LINE +8 +Cmts +62 +1 +10 +195.44 +20 +-80.02 +11 +194.313496 +21 +-79.433579 +0 +LINE +8 +Cmts +62 +1 +10 +195.44 +20 +-80.02 +11 +194.313496 +21 +-80.606421 +0 +TEXT +8 +Cmts +62 +1 +10 +128.64 +20 +-109.43 +1 +38.000 mm +40 +1.5 +41 +1.5 +7 +SIMPLEX +72 +1 +73 +2 +11 +128.64 +21 +-109.43 +0 +LINE +8 +Cmts +62 +1 +10 +109.64 +20 +-90.48 +11 +109.64 +21 +-110.78 +0 +LINE +8 +Cmts +62 +1 +10 +147.64 +20 +-90.48 +11 +147.64 +21 +-110.78 +0 +LINE +8 +Cmts +62 +1 +10 +147.64 +20 +-108.08 +11 +109.64 +21 +-108.08 +0 +LINE +8 +Cmts +62 +1 +10 +109.64 +20 +-108.08 +11 +110.766504 +21 +-107.493579 +0 +LINE +8 +Cmts +62 +1 +10 +109.64 +20 +-108.08 +11 +110.766504 +21 +-108.666421 +0 +LINE +8 +Cmts +62 +1 +10 +147.64 +20 +-108.08 +11 +146.513496 +21 +-107.493579 +0 +LINE +8 +Cmts +62 +1 +10 +147.64 +20 +-108.08 +11 +146.513496 +21 +-108.666421 +0 +TEXT +8 +Cmts +62 +1 +10 +197.96 +20 +-99.88 +1 +0.800 mm +40 +1.5 +41 +1.5 +50 +270.0 +7 +SIMPLEX +72 +1 +73 +2 +11 +197.96 +21 +-99.88 +0 +LINE +8 +Cmts +62 +1 +10 +194.38 +20 +-100.28 +11 +199.31 +21 +-100.28 +0 +LINE +8 +Cmts +62 +1 +10 +194.38 +20 +-99.48 +11 +199.31 +21 +-99.48 +0 +LINE +8 +Cmts +62 +1 +10 +196.61 +20 +-99.48 +11 +196.61 +21 +-100.28 +0 +LINE +8 +Cmts +62 +1 +10 +196.61 +20 +-100.28 +11 +196.023579 +21 +-99.153496 +0 +LINE +8 +Cmts +62 +1 +10 +196.61 +20 +-100.28 +11 +197.196421 +21 +-99.153496 +0 +LINE +8 +Cmts +62 +1 +10 +196.61 +20 +-99.48 +11 +196.023579 +21 +-100.606504 +0 +LINE +8 +Cmts +62 +1 +10 +196.61 +20 +-99.48 +11 +197.196421 +21 +-100.606504 +0 +TEXT +8 +Cmts +62 +1 +10 +188.875133 +20 +-92.417616 +1 +3.900 mm +40 +1.5 +41 +1.5 +50 +89.559272 +7 +SIMPLEX +72 +1 +73 +2 +11 +188.875133 +21 +-92.417616 +0 +LINE +8 +Cmts +62 +1 +10 +191.77 +20 +-94.39 +11 +187.510173 +21 +-94.357232 +0 +LINE +8 +Cmts +62 +1 +10 +191.8 +20 +-90.49 +11 +187.540173 +21 +-90.457232 +0 +LINE +8 +Cmts +62 +1 +10 +190.240093 +20 +-90.478001 +11 +190.210093 +21 +-94.378001 +0 +LINE +8 +Cmts +62 +1 +10 +190.210093 +20 +-94.378001 +11 +189.632355 +21 +-93.24702 +0 +LINE +8 +Cmts +62 +1 +10 +190.210093 +20 +-94.378001 +11 +190.805162 +21 +-93.256041 +0 +LINE +8 +Cmts +62 +1 +10 +190.240093 +20 +-90.478001 +11 +189.645024 +21 +-91.599961 +0 +LINE +8 +Cmts +62 +1 +10 +190.240093 +20 +-90.478001 +11 +190.817831 +21 +-91.608982 +0 +TEXT +8 +Cmts +62 +1 +10 +159.664849 +20 +-87.283312 +1 +6.400 mm +40 +1.5 +41 +1.5 +50 +270.089525 +7 +SIMPLEX +72 +1 +73 +2 +11 +159.664849 +21 +-87.283312 +0 +LINE +8 +Cmts +62 +1 +10 +155.38 +20 +-84.09 +11 +161.009848 +21 +-84.081203 +0 +LINE +8 +Cmts +62 +1 +10 +155.39 +20 +-90.49 +11 +161.019848 +21 +-90.481203 +0 +LINE +8 +Cmts +62 +1 +10 +158.319851 +20 +-90.485422 +11 +158.309851 +21 +-84.085422 +0 +LINE +8 +Cmts +62 +1 +10 +158.309851 +20 +-84.085422 +11 +158.898031 +21 +-85.211008 +0 +LINE +8 +Cmts +62 +1 +10 +158.309851 +20 +-84.085422 +11 +157.725191 +21 +-85.212841 +0 +LINE +8 +Cmts +62 +1 +10 +158.319851 +20 +-90.485422 +11 +158.904511 +21 +-89.358003 +0 +LINE +8 +Cmts +62 +1 +10 +158.319851 +20 +-90.485422 +11 +157.731671 +21 +-89.359836 +0 +LINE +8 +Cmts +62 +1 +10 +109.67 +20 +-90.4875 +11 +195.48 +21 +-90.4875 +0 +TEXT +8 +Cmts +62 +1 +10 +147.64 +20 +-117.98 +1 +88.300 mm +40 +1.5 +41 +1.5 +7 +SIMPLEX +72 +1 +73 +2 +11 +147.64 +21 +-117.98 +0 +LINE +8 +Cmts +62 +1 +10 +191.79 +20 +-99.49 +11 +191.79 +21 +-119.33 +0 +LINE +8 +Cmts +62 +1 +10 +103.49 +20 +-99.49 +11 +103.49 +21 +-119.33 +0 +LINE +8 +Cmts +62 +1 +10 +103.49 +20 +-116.63 +11 +191.79 +21 +-116.63 +0 +LINE +8 +Cmts +62 +1 +10 +191.79 +20 +-116.63 +11 +190.663496 +21 +-117.216421 +0 +LINE +8 +Cmts +62 +1 +10 +191.79 +20 +-116.63 +11 +190.663496 +21 +-116.043579 +0 +LINE +8 +Cmts +62 +1 +10 +103.49 +20 +-116.63 +11 +104.616504 +21 +-117.216421 +0 +LINE +8 +Cmts +62 +1 +10 +103.49 +20 +-116.63 +11 +104.616504 +21 +-116.043579 +0 +TEXT +8 +Cmts +62 +1 +10 +102.19 +20 +-104.41 +1 +2.600 mm +40 +1.5 +41 +1.5 +7 +SIMPLEX +72 +1 +73 +2 +11 +102.19 +21 +-104.41 +0 +LINE +8 +Cmts +62 +1 +10 +103.49 +20 +-99.49 +11 +103.49 +21 +-105.76 +0 +LINE +8 +Cmts +62 +1 +10 +100.89 +20 +-99.49 +11 +100.89 +21 +-105.76 +0 +LINE +8 +Cmts +62 +1 +10 +100.89 +20 +-103.06 +11 +103.49 +21 +-103.06 +0 +LINE +8 +Cmts +62 +1 +10 +103.49 +20 +-103.06 +11 +102.363496 +21 +-103.646421 +0 +LINE +8 +Cmts +62 +1 +10 +103.49 +20 +-103.06 +11 +102.363496 +21 +-102.473579 +0 +LINE +8 +Cmts +62 +1 +10 +100.89 +20 +-103.06 +11 +102.016504 +21 +-103.646421 +0 +LINE +8 +Cmts +62 +1 +10 +100.89 +20 +-103.06 +11 +102.016504 +21 +-102.473579 +0 +TEXT +8 +Cmts +62 +1 +10 +97.67 +20 +-96.94 +1 +5.100 mm +40 +1.5 +41 +1.5 +50 +270.0 +7 +SIMPLEX +72 +1 +73 +2 +11 +97.67 +21 +-96.94 +0 +LINE +8 +Cmts +62 +1 +10 +100.89 +20 +-99.49 +11 +96.32 +21 +-99.49 +0 +LINE +8 +Cmts +62 +1 +10 +100.89 +20 +-94.39 +11 +96.32 +21 +-94.39 +0 +LINE +8 +Cmts +62 +1 +10 +99.02 +20 +-94.39 +11 +99.02 +21 +-99.49 +0 +LINE +8 +Cmts +62 +1 +10 +99.02 +20 +-99.49 +11 +98.433579 +21 +-98.363496 +0 +LINE +8 +Cmts +62 +1 +10 +99.02 +20 +-99.49 +11 +99.606421 +21 +-98.363496 +0 +LINE +8 +Cmts +62 +1 +10 +99.02 +20 +-94.39 +11 +98.433579 +21 +-95.516504 +0 +LINE +8 +Cmts +62 +1 +10 +99.02 +20 +-94.39 +11 +99.606421 +21 +-95.516504 +0 +TEXT +8 +Cmts +62 +1 +10 +109.63 +20 +-81.13 +1 +14.500 mm +40 +1.5 +41 +1.5 +7 +SIMPLEX +72 +1 +73 +2 +11 +109.63 +21 +-81.13 +0 +LINE +8 +Cmts +62 +1 +10 +102.38 +20 +-89.28 +11 +102.38 +21 +-79.78 +0 +LINE +8 +Cmts +62 +1 +10 +116.88 +20 +-89.28 +11 +116.88 +21 +-79.78 +0 +LINE +8 +Cmts +62 +1 +10 +116.88 +20 +-82.48 +11 +102.38 +21 +-82.48 +0 +LINE +8 +Cmts +62 +1 +10 +102.38 +20 +-82.48 +11 +103.506504 +21 +-81.893579 +0 +LINE +8 +Cmts +62 +1 +10 +102.38 +20 +-82.48 +11 +103.506504 +21 +-83.066421 +0 +LINE +8 +Cmts +62 +1 +10 +116.88 +20 +-82.48 +11 +115.753496 +21 +-81.893579 +0 +LINE +8 +Cmts +62 +1 +10 +116.88 +20 +-82.48 +11 +115.753496 +21 +-83.066421 +0 +TEXT +8 +Cmts +62 +1 +10 +121.803009 +20 +-90.50045 +1 +2.400 mm +40 +1.5 +41 +1.5 +50 +89.761269 +7 +SIMPLEX +72 +1 +73 +2 +11 +121.803009 +21 +-90.50045 +0 +LINE +8 +Cmts +62 +1 +10 +116.89 +20 +-91.68 +11 +123.147997 +21 +-91.706075 +0 +LINE +8 +Cmts +62 +1 +10 +116.9 +20 +-89.28 +11 +123.157997 +21 +-89.306075 +0 +LINE +8 +Cmts +62 +1 +10 +120.458021 +20 +-89.294825 +11 +120.448021 +21 +-91.694825 +0 +LINE +8 +Cmts +62 +1 +10 +120.448021 +20 +-91.694825 +11 +119.866299 +21 +-90.565888 +0 +LINE +8 +Cmts +62 +1 +10 +120.448021 +20 +-91.694825 +11 +121.03913 +21 +-90.570774 +0 +LINE +8 +Cmts +62 +1 +10 +120.458021 +20 +-89.294825 +11 +119.866912 +21 +-90.418876 +0 +LINE +8 +Cmts +62 +1 +10 +120.458021 +20 +-89.294825 +11 +121.039743 +21 +-90.423762 +0 +TEXT +8 +Cmts +62 +1 +10 +115.69 +20 +-85.3 +1 +2.400 mm +40 +1.5 +41 +1.5 +7 +SIMPLEX +72 +1 +73 +2 +11 +115.69 +21 +-85.3 +0 +LINE +8 +Cmts +62 +1 +10 +116.89 +20 +-89.28 +11 +116.89 +21 +-83.95 +0 +LINE +8 +Cmts +62 +1 +10 +114.49 +20 +-89.28 +11 +114.49 +21 +-83.95 +0 +LINE +8 +Cmts +62 +1 +10 +114.49 +20 +-86.65 +11 +116.89 +21 +-86.65 +0 +LINE +8 +Cmts +62 +1 +10 +116.89 +20 +-86.65 +11 +115.763496 +21 +-87.236421 +0 +LINE +8 +Cmts +62 +1 +10 +116.89 +20 +-86.65 +11 +115.763496 +21 +-86.063579 +0 +LINE +8 +Cmts +62 +1 +10 +114.49 +20 +-86.65 +11 +115.616504 +21 +-87.236421 +0 +LINE +8 +Cmts +62 +1 +10 +114.49 +20 +-86.65 +11 +115.616504 +21 +-86.063579 +0 +TEXT +8 +Cmts +62 +1 +10 +135.19 +20 +-90.49 +1 +12.800 mm +40 +1.5 +41 +1.5 +50 +270.0 +7 +SIMPLEX +72 +1 +73 +2 +11 +135.19 +21 +-90.49 +0 +LINE +8 +Cmts +62 +1 +10 +139.89 +20 +-96.89 +11 +133.84 +21 +-96.89 +0 +LINE +8 +Cmts +62 +1 +10 +139.89 +20 +-84.09 +11 +133.84 +21 +-84.09 +0 +LINE +8 +Cmts +62 +1 +10 +136.54 +20 +-84.09 +11 +136.54 +21 +-96.89 +0 +LINE +8 +Cmts +62 +1 +10 +136.54 +20 +-96.89 +11 +135.953579 +21 +-95.763496 +0 +LINE +8 +Cmts +62 +1 +10 +136.54 +20 +-96.89 +11 +137.126421 +21 +-95.763496 +0 +LINE +8 +Cmts +62 +1 +10 +136.54 +20 +-84.09 +11 +135.953579 +21 +-85.216504 +0 +LINE +8 +Cmts +62 +1 +10 +136.54 +20 +-84.09 +11 +137.126421 +21 +-85.216504 +0 +TEXT +8 +Cmts +62 +1 +10 +147.63 +20 +-105.02 +1 +15.500 mm +40 +1.5 +41 +1.5 +7 +SIMPLEX +72 +1 +73 +2 +11 +147.63 +21 +-105.02 +0 +LINE +8 +Cmts +62 +1 +10 +139.88 +20 +-96.87 +11 +139.88 +21 +-106.37 +0 +LINE +8 +Cmts +62 +1 +10 +155.38 +20 +-96.87 +11 +155.38 +21 +-106.37 +0 +LINE +8 +Cmts +62 +1 +10 +155.38 +20 +-103.67 +11 +139.88 +21 +-103.67 +0 +LINE +8 +Cmts +62 +1 +10 +139.88 +20 +-103.67 +11 +141.006504 +21 +-103.083579 +0 +LINE +8 +Cmts +62 +1 +10 +139.88 +20 +-103.67 +11 +141.006504 +21 +-104.256421 +0 +LINE +8 +Cmts +62 +1 +10 +155.38 +20 +-103.67 +11 +154.253496 +21 +-103.083579 +0 +LINE +8 +Cmts +62 +1 +10 +155.38 +20 +-103.67 +11 +154.253496 +21 +-104.256421 +0 +CIRCLE +8 +0 +10 +30.75 +20 +-33.3375 +40 +3.15 +0 +CIRCLE +8 +0 +10 +195.4375 +20 +-90.4875 +40 +3.15 +0 +CIRCLE +8 +0 +10 +264.525 +20 +-33.3375 +40 +3.15 +0 +LINE +8 +0 +10 +290.1375 +20 +-7.7875 +11 +290.1375 +21 +-58.7125 +0 +LINE +8 +0 +10 +288.3375 +20 +-58.7125 +11 +290.1375 +21 +-58.7125 +0 +LINE +8 +0 +10 +5.1375 +20 +-65.0125 +11 +5.1375 +21 +-97.7875 +0 +LINE +8 +0 +10 +288.3375 +20 +-65.1125 +11 +290.1375 +21 +-65.1125 +0 +LINE +8 +0 +10 +8.7375 +20 +-65.0125 +11 +5.1375 +21 +-65.0125 +0 +LINE +8 +0 +10 +8.7375 +20 +-58.8125 +11 +5.1375 +21 +-58.8125 +0 +ARC +8 +0 +10 +8.7375 +20 +-61.9125 +30 +0.0 +40 +3.1 +50 +-90.0 +51 +90.0 +0 +ARC +8 +0 +10 +288.3375 +20 +-61.9125 +30 +0.0 +40 +3.2 +50 +90.0 +51 +270.0 +0 +TEXT +8 +Cmts +62 +1 +10 +277.6375 +20 +6.3625 +1 +25.000 mm +40 +1.5 +41 +1.5 +7 +SIMPLEX +72 +1 +73 +2 +11 +277.6375 +21 +6.3625 +0 +LINE +8 +Cmts +62 +1 +10 +265.1375 +20 +-33.3375 +11 +265.1375 +21 +7.7125 +0 +LINE +8 +Cmts +62 +1 +10 +290.1375 +20 +-33.3375 +11 +290.1375 +21 +7.7125 +0 +LINE +8 +Cmts +62 +1 +10 +290.1375 +20 +5.0125 +11 +265.1375 +21 +5.0125 +0 +LINE +8 +Cmts +62 +1 +10 +265.1375 +20 +5.0125 +11 +266.264004 +21 +5.598921 +0 +LINE +8 +Cmts +62 +1 +10 +265.1375 +20 +5.0125 +11 +266.264004 +21 +4.426079 +0 +LINE +8 +Cmts +62 +1 +10 +290.1375 +20 +5.0125 +11 +289.010996 +21 +5.598921 +0 +LINE +8 +Cmts +62 +1 +10 +290.1375 +20 +5.0125 +11 +289.010996 +21 +4.426079 +0 +TEXT +8 +Cmts +62 +1 +10 +147.6375 +20 +10.875 +1 +285.000 mm +40 +1.5 +41 +1.5 +7 +SIMPLEX +72 +1 +73 +2 +11 +147.6375 +21 +10.875 +0 +LINE +8 +Cmts +62 +1 +10 +290.1375 +20 +-7.14375 +11 +290.1375 +21 +12.225 +0 +LINE +8 +Cmts +62 +1 +10 +5.1375 +20 +-7.14375 +11 +5.1375 +21 +12.225 +0 +LINE +8 +Cmts +62 +1 +10 +5.1375 +20 +9.525 +11 +290.1375 +21 +9.525 +0 +LINE +8 +Cmts +62 +1 +10 +290.1375 +20 +9.525 +11 +289.010996 +21 +8.938579 +0 +LINE +8 +Cmts +62 +1 +10 +290.1375 +20 +9.525 +11 +289.010996 +21 +10.111421 +0 +LINE +8 +Cmts +62 +1 +10 +5.1375 +20 +9.525 +11 +6.264004 +21 +8.938579 +0 +LINE +8 +Cmts +62 +1 +10 +5.1375 +20 +9.525 +11 +6.264004 +21 +10.111421 +0 +ARC +8 +0 +10 +7.6375 +20 +-97.7875 +30 +0.0 +40 +2.5 +50 +-180.0 +51 +-90.0 +0 +ARC +8 +0 +10 +287.6375 +20 +-97.7875 +30 +0.0 +40 +2.5 +50 +-90.0 +51 +0.0 +0 +ARC +8 +0 +10 +287.6375 +20 +-7.7875 +30 +0.0 +40 +2.5 +50 +0.0 +51 +90.0 +0 +ARC +8 +0 +10 +7.6375 +20 +-7.7875 +30 +0.0 +40 +2.5 +50 +90.0 +51 +180.0 +0 +LINE +8 +0 +10 +290.1375 +20 +-97.7875 +11 +290.1375 +21 +-65.1125 +0 +LINE +8 +0 +10 +7.6375 +20 +-100.2875 +11 +287.6375 +21 +-100.2875 +0 +LINE +8 +0 +10 +5.1375 +20 +-7.7875 +11 +5.1375 +21 +-58.8125 +0 +LINE +8 +0 +10 +7.6375 +20 +-5.2875 +11 +287.6375 +21 +-5.2875 +0 +ENDSEC +0 +EOF \ No newline at end of file diff --git a/keyboards/weebkeeb/config.h b/keyboards/weebkeeb/config.h new file mode 100644 index 0000000000..859adc9cc2 --- /dev/null +++ b/keyboards/weebkeeb/config.h @@ -0,0 +1,162 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER You +#define PRODUCT weebkeeb +#define DESCRIPTION A custom keyboard + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { F4, F5, F6, F7 } +#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5, B6, B7, C6, C7, F0, F1 } +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/weebkeeb/keymaps/default/Makefile b/keyboards/weebkeeb/keymaps/default/Makefile new file mode 100644 index 0000000000..f4671a9d11 --- /dev/null +++ b/keyboards/weebkeeb/keymaps/default/Makefile @@ -0,0 +1,21 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/weebkeeb/keymaps/default/config.h b/keyboards/weebkeeb/keymaps/default/config.h new file mode 100644 index 0000000000..df06a26206 --- /dev/null +++ b/keyboards/weebkeeb/keymaps/default/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif \ No newline at end of file diff --git a/keyboards/weebkeeb/keymaps/default/keymap.c b/keyboards/weebkeeb/keymaps/default/keymap.c new file mode 100644 index 0000000000..cdf1f1e4c7 --- /dev/null +++ b/keyboards/weebkeeb/keymaps/default/keymap.c @@ -0,0 +1,119 @@ +#include "weebkeeb.h" + +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + ADJUST, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = KEYMAP( \ + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \ + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ + KC_LCTL, ADJUST, KC_LALT, KC_LGUI, MO(3), KC_SPC, KC_SPC, MO(4), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[3] = KEYMAP( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ + _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), +[4] = KEYMAP( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ + _______, _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = KEYMAP( \ + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +) +}; +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + +} \ No newline at end of file diff --git a/keyboards/weebkeeb/keymaps/default/readme.md b/keyboards/weebkeeb/keymaps/default/readme.md new file mode 100644 index 0000000000..8771322763 --- /dev/null +++ b/keyboards/weebkeeb/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for weebkeeb \ No newline at end of file diff --git a/keyboards/weebkeeb/readme.md b/keyboards/weebkeeb/readme.md new file mode 100644 index 0000000000..bf31016c82 --- /dev/null +++ b/keyboards/weebkeeb/readme.md @@ -0,0 +1,28 @@ +weebkeeb keyboard firmware +====================== + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme](/). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/weebkeeb folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make default`. + +### Other Keymaps + +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. + +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + +``` +$ make [default|jack|] +``` + +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/weebkeeb/rules.mk b/keyboards/weebkeeb/rules.mk new file mode 100644 index 0000000000..55898147dd --- /dev/null +++ b/keyboards/weebkeeb/rules.mk @@ -0,0 +1,67 @@ +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 diff --git a/keyboards/weebkeeb/weebkeeb.c b/keyboards/weebkeeb/weebkeeb.c new file mode 100644 index 0000000000..483fc9440e --- /dev/null +++ b/keyboards/weebkeeb/weebkeeb.c @@ -0,0 +1,28 @@ +#include "weebkeeb.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} diff --git a/keyboards/weebkeeb/weebkeeb.h b/keyboards/weebkeeb/weebkeeb.h new file mode 100644 index 0000000000..7bca2c2014 --- /dev/null +++ b/keyboards/weebkeeb/weebkeeb.h @@ -0,0 +1,23 @@ +#ifndef WEEBKEEB_H +#define WEEBKEEB_H + +#include "quantum.h" + +// This a shortcut to help you visually see your layout. +// The following is an example using the Planck MIT layout +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \ +} + +#endif From 45b7718fb154c6400b169a9d3005cedebd37ff9a Mon Sep 17 00:00:00 2001 From: climbalima Date: Sat, 3 Dec 2016 17:30:40 -0500 Subject: [PATCH 183/727] cleaned up personal projects --- keyboards/pilcrow/Makefile | 3 - keyboards/pilcrow/config.h | 162 - keyboards/pilcrow/keymaps/default/Makefile | 21 - keyboards/pilcrow/keymaps/default/config.h | 8 - keyboards/pilcrow/keymaps/default/keymap.c | 88 - keyboards/pilcrow/keymaps/default/readme.md | 1 - keyboards/pilcrow/pilcrow.c | 28 - keyboards/pilcrow/pilcrow.h | 23 - keyboards/pilcrow/readme.md | 28 - keyboards/pilcrow/rules.mk | 67 - keyboards/weebkeeb/Makefile | 3 - keyboards/weebkeeb/aek.dxf | 6486 ------------------ keyboards/weebkeeb/config.h | 162 - keyboards/weebkeeb/keymaps/default/Makefile | 21 - keyboards/weebkeeb/keymaps/default/config.h | 8 - keyboards/weebkeeb/keymaps/default/keymap.c | 119 - keyboards/weebkeeb/keymaps/default/readme.md | 1 - keyboards/weebkeeb/readme.md | 28 - keyboards/weebkeeb/rules.mk | 67 - keyboards/weebkeeb/weebkeeb.c | 28 - keyboards/weebkeeb/weebkeeb.h | 23 - 21 files changed, 7375 deletions(-) delete mode 100644 keyboards/pilcrow/Makefile delete mode 100644 keyboards/pilcrow/config.h delete mode 100644 keyboards/pilcrow/keymaps/default/Makefile delete mode 100644 keyboards/pilcrow/keymaps/default/config.h delete mode 100644 keyboards/pilcrow/keymaps/default/keymap.c delete mode 100644 keyboards/pilcrow/keymaps/default/readme.md delete mode 100644 keyboards/pilcrow/pilcrow.c delete mode 100644 keyboards/pilcrow/pilcrow.h delete mode 100644 keyboards/pilcrow/readme.md delete mode 100644 keyboards/pilcrow/rules.mk delete mode 100644 keyboards/weebkeeb/Makefile delete mode 100644 keyboards/weebkeeb/aek.dxf delete mode 100644 keyboards/weebkeeb/config.h delete mode 100644 keyboards/weebkeeb/keymaps/default/Makefile delete mode 100644 keyboards/weebkeeb/keymaps/default/config.h delete mode 100644 keyboards/weebkeeb/keymaps/default/keymap.c delete mode 100644 keyboards/weebkeeb/keymaps/default/readme.md delete mode 100644 keyboards/weebkeeb/readme.md delete mode 100644 keyboards/weebkeeb/rules.mk delete mode 100644 keyboards/weebkeeb/weebkeeb.c delete mode 100644 keyboards/weebkeeb/weebkeeb.h diff --git a/keyboards/pilcrow/Makefile b/keyboards/pilcrow/Makefile deleted file mode 100644 index 4e2a6f00fd..0000000000 --- a/keyboards/pilcrow/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -ifndef MAKEFILE_INCLUDED - include ../../Makefile -endif \ No newline at end of file diff --git a/keyboards/pilcrow/config.h b/keyboards/pilcrow/config.h deleted file mode 100644 index d79c1ba40c..0000000000 --- a/keyboards/pilcrow/config.h +++ /dev/null @@ -1,162 +0,0 @@ -/* -Copyright 2012 Jun Wako - -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 . -*/ - -#ifndef CONFIG_H -#define CONFIG_H - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 -#define MANUFACTURER You -#define PRODUCT pilcrow -#define DESCRIPTION A custom keyboard - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 10 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ -#define MATRIX_ROW_PINS { B2, C6, D7, E6 } -#define MATRIX_COL_PINS { B6, D1, B4, B5, D4, D0, B3, B1, F7, F6 } -#define UNUSED_PINS - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -// #define BACKLIGHT_PIN B7 -// #define BACKLIGHT_BREATHING -// #define BACKLIGHT_LEVELS 3 - - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCING_DELAY 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ -) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/pilcrow/keymaps/default/Makefile b/keyboards/pilcrow/keymaps/default/Makefile deleted file mode 100644 index f4671a9d11..0000000000 --- a/keyboards/pilcrow/keymaps/default/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - -ifndef QUANTUM_DIR - include ../../../../Makefile -endif \ No newline at end of file diff --git a/keyboards/pilcrow/keymaps/default/config.h b/keyboards/pilcrow/keymaps/default/config.h deleted file mode 100644 index df06a26206..0000000000 --- a/keyboards/pilcrow/keymaps/default/config.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef CONFIG_USER_H -#define CONFIG_USER_H - -#include "../../config.h" - -// place overrides here - -#endif \ No newline at end of file diff --git a/keyboards/pilcrow/keymaps/default/keymap.c b/keyboards/pilcrow/keymaps/default/keymap.c deleted file mode 100644 index e382e4c6ad..0000000000 --- a/keyboards/pilcrow/keymaps/default/keymap.c +++ /dev/null @@ -1,88 +0,0 @@ -#include "pilcrow.h" -#define _______ KC_TRNS -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[0] = KEYMAP( \ - KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ - KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, \ - KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \ - KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MT(MOD_LSFT, KC_SPC), MO(2), MO(3), KC_DEL, KC_ESC \ -), - -/* Colemak - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[1] = KEYMAP( \ - KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, \ - KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, \ - KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_PIPE, S(KC_QUOT), \ - _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_GRV \ -), -[2] = KEYMAP( \ - KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \ - KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, \ - OSM(MOD_LSFT), KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_BSLS, KC_QUOT, \ - _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU \ -), - -/* Adjust (Lower + Raise) - * ,-----------------------------------------------------------------------------------. - * | | Reset| | | | | | | | | | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | - * `-----------------------------------------------------------------------------------' - */ -[3] = KEYMAP( \ - RESET, KC_UP, _______, _______, _______, _______, _______, KC_MS_WH_DOWN, KC_MS_U, KC_MS_WH_UP, \ - KC_LEFT, KC_DOWN, KC_RIGHT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_MS_L,KC_MS_D, KC_MS_R, \ - RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, \ - _______, _______, _______, _______, KC_MS_BTN1, KC_MS_BTN2, _______, _______, _______, _______ \ -) -}; - -const uint16_t PROGMEM fn_actions[] = { - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; - - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} \ No newline at end of file diff --git a/keyboards/pilcrow/keymaps/default/readme.md b/keyboards/pilcrow/keymaps/default/readme.md deleted file mode 100644 index 95472dfca8..0000000000 --- a/keyboards/pilcrow/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for pilcrow \ No newline at end of file diff --git a/keyboards/pilcrow/pilcrow.c b/keyboards/pilcrow/pilcrow.c deleted file mode 100644 index c8243df7bf..0000000000 --- a/keyboards/pilcrow/pilcrow.c +++ /dev/null @@ -1,28 +0,0 @@ -#include "pilcrow.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/pilcrow/pilcrow.h b/keyboards/pilcrow/pilcrow.h deleted file mode 100644 index 7138ccb3f6..0000000000 --- a/keyboards/pilcrow/pilcrow.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef PILCROW_H -#define PILCROW_H - -#include "quantum.h" - -// This a shortcut to help you visually see your layout. -// The following is an example using the Planck MIT layout -// The first section contains all of the arguements -// The second converts the arguments into a two-dimensional array -#define KEYMAP( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 \ -) \ -{ \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \ - { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 } \ -} - -#endif diff --git a/keyboards/pilcrow/readme.md b/keyboards/pilcrow/readme.md deleted file mode 100644 index 7a7f6d2af5..0000000000 --- a/keyboards/pilcrow/readme.md +++ /dev/null @@ -1,28 +0,0 @@ -pilcrow keyboard firmware -====================== - -## Quantum MK Firmware - -For the full Quantum feature list, see [the parent readme](/). - -## Building - -Download or clone the whole firmware and navigate to the keyboards/pilcrow folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. - -Depending on which keymap you would like to use, you will have to compile slightly differently. - -### Default - -To build with the default keymap, simply run `make default`. - -### Other Keymaps - -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. - -To build the firmware binary hex file with a keymap just do `make` with a keymap like this: - -``` -$ make [default|jack|] -``` - -Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/pilcrow/rules.mk b/keyboards/pilcrow/rules.mk deleted file mode 100644 index 55898147dd..0000000000 --- a/keyboards/pilcrow/rules.mk +++ /dev/null @@ -1,67 +0,0 @@ -# MCU name -#MCU = at90usb1287 -MCU = atmega32u4 - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=512 - - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= yes # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 diff --git a/keyboards/weebkeeb/Makefile b/keyboards/weebkeeb/Makefile deleted file mode 100644 index 4e2a6f00fd..0000000000 --- a/keyboards/weebkeeb/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -ifndef MAKEFILE_INCLUDED - include ../../Makefile -endif \ No newline at end of file diff --git a/keyboards/weebkeeb/aek.dxf b/keyboards/weebkeeb/aek.dxf deleted file mode 100644 index cfe80946bd..0000000000 --- a/keyboards/weebkeeb/aek.dxf +++ /dev/null @@ -1,6486 +0,0 @@ -0 -SECTION -2 -ENTITIES -0 -LINE -8 -0 -10 -104.7875 -20 --89.2875 -11 -104.7875 -21 --91.6875 -0 -LINE -8 -0 -10 -104.7875 -20 --91.6875 -11 -102.3875 -21 --91.6875 -0 -LINE -8 -0 -10 -102.3875 -20 --91.6875 -11 -102.3875 -21 --89.2875 -0 -LINE -8 -0 -10 -102.3875 -20 --89.2875 -11 -104.7875 -21 --89.2875 -0 -LINE -8 -0 -10 -116.8875 -20 --89.2875 -11 -116.8875 -21 --91.6875 -0 -LINE -8 -0 -10 -116.8875 -20 --91.6875 -11 -114.4875 -21 --91.6875 -0 -LINE -8 -0 -10 -114.4875 -20 --91.6875 -11 -114.4875 -21 --89.2875 -0 -LINE -8 -0 -10 -114.4875 -20 --89.2875 -11 -116.8875 -21 --89.2875 -0 -CIRCLE -8 -0 -10 -109.6375 -20 --90.4875 -40 -3.15 -0 -LINE -8 -0 -10 -103.4875 -20 --94.3875 -11 -103.4875 -21 --99.4875 -0 -LINE -8 -0 -10 -103.4875 -20 --99.4875 -11 -100.8875 -21 --99.4875 -0 -LINE -8 -0 -10 -100.8875 -20 --99.4875 -11 -100.8875 -21 --94.3875 -0 -LINE -8 -0 -10 -100.8875 -20 --94.3875 -11 -103.4875 -21 --94.3875 -0 -LINE -8 -0 -10 -191.7875 -20 --94.3875 -11 -191.7875 -21 --99.4875 -0 -LINE -8 -0 -10 -191.7875 -20 --99.4875 -11 -194.3875 -21 --99.4875 -0 -LINE -8 -0 -10 -194.3875 -20 --99.4875 -11 -194.3875 -21 --94.3875 -0 -LINE -8 -0 -10 -194.3875 -20 --94.3875 -11 -191.7875 -21 --94.3875 -0 -LINE -8 -0 -10 -155.3875 -20 --84.0875 -11 -139.8875 -21 --84.0875 -0 -LINE -8 -0 -10 -139.8875 -20 --84.0875 -11 -139.8875 -21 --96.8875 -0 -LINE -8 -0 -10 -139.8875 -20 --96.8875 -11 -155.3875 -21 --96.8875 -0 -LINE -8 -0 -10 -155.3875 -20 --96.8875 -11 -155.3875 -21 --84.0875 -0 -LINE -8 -0 -10 -256.28125 -20 --56.2875 -11 -256.28125 -21 --61.3875 -0 -LINE -8 -0 -10 -256.28125 -20 --61.3875 -11 -253.68125 -21 --61.3875 -0 -LINE -8 -0 -10 -253.68125 -20 --61.3875 -11 -253.68125 -21 --56.2875 -0 -LINE -8 -0 -10 -253.68125 -20 --56.2875 -11 -256.28125 -21 --56.2875 -0 -LINE -8 -0 -10 -281.88125 -20 --56.2875 -11 -281.88125 -21 --61.3875 -0 -LINE -8 -0 -10 -281.88125 -20 --61.3875 -11 -284.48125 -21 --61.3875 -0 -LINE -8 -0 -10 -284.48125 -20 --61.3875 -11 -284.48125 -21 --56.2875 -0 -LINE -8 -0 -10 -284.48125 -20 --56.2875 -11 -281.88125 -21 --56.2875 -0 -LINE -8 -0 -10 -276.83125 -20 --45.9875 -11 -261.33125 -21 --45.9875 -0 -LINE -8 -0 -10 -261.33125 -20 --45.9875 -11 -261.33125 -21 --58.7875 -0 -LINE -8 -0 -10 -261.33125 -20 --58.7875 -11 -276.83125 -21 --58.7875 -0 -LINE -8 -0 -10 -276.83125 -20 --58.7875 -11 -276.83125 -21 --45.9875 -0 -LINE -8 -0 -10 -258.6625 -20 --18.1875 -11 -258.6625 -21 --23.2875 -0 -LINE -8 -0 -10 -258.6625 -20 --23.2875 -11 -256.0625 -21 --23.2875 -0 -LINE -8 -0 -10 -256.0625 -20 --23.2875 -11 -256.0625 -21 --18.1875 -0 -LINE -8 -0 -10 -256.0625 -20 --18.1875 -11 -258.6625 -21 --18.1875 -0 -LINE -8 -0 -10 -284.2625 -20 --18.1875 -11 -284.2625 -21 --23.2875 -0 -LINE -8 -0 -10 -284.2625 -20 --23.2875 -11 -286.8625 -21 --23.2875 -0 -LINE -8 -0 -10 -286.8625 -20 --23.2875 -11 -286.8625 -21 --18.1875 -0 -LINE -8 -0 -10 -286.8625 -20 --18.1875 -11 -284.2625 -21 --18.1875 -0 -LINE -8 -0 -10 -279.2125 -20 --7.8875 -11 -263.7125 -21 --7.8875 -0 -LINE -8 -0 -10 -263.7125 -20 --7.8875 -11 -263.7125 -21 --20.6875 -0 -LINE -8 -0 -10 -263.7125 -20 --20.6875 -11 -279.2125 -21 --20.6875 -0 -LINE -8 -0 -10 -279.2125 -20 --20.6875 -11 -279.2125 -21 --7.8875 -0 -LINE -8 -0 -10 -13.39375 -20 --75.3375 -11 -13.39375 -21 --80.4375 -0 -LINE -8 -0 -10 -13.39375 -20 --80.4375 -11 -10.79375 -21 --80.4375 -0 -LINE -8 -0 -10 -10.79375 -20 --80.4375 -11 -10.79375 -21 --75.3375 -0 -LINE -8 -0 -10 -10.79375 -20 --75.3375 -11 -13.39375 -21 --75.3375 -0 -LINE -8 -0 -10 -38.99375 -20 --75.3375 -11 -38.99375 -21 --80.4375 -0 -LINE -8 -0 -10 -38.99375 -20 --80.4375 -11 -41.59375 -21 --80.4375 -0 -LINE -8 -0 -10 -41.59375 -20 --80.4375 -11 -41.59375 -21 --75.3375 -0 -LINE -8 -0 -10 -41.59375 -20 --75.3375 -11 -38.99375 -21 --75.3375 -0 -LINE -8 -0 -10 -33.94375 -20 --65.0375 -11 -18.44375 -21 --65.0375 -0 -LINE -8 -0 -10 -18.44375 -20 --65.0375 -11 -18.44375 -21 --77.8375 -0 -LINE -8 -0 -10 -18.44375 -20 --77.8375 -11 -33.94375 -21 --77.8375 -0 -LINE -8 -0 -10 -33.94375 -20 --77.8375 -11 -33.94375 -21 --65.0375 -0 -LINE -8 -0 -10 -193.4875 -20 --7.8875 -11 -177.9875 -21 --7.8875 -0 -LINE -8 -0 -10 -177.9875 -20 --7.8875 -11 -177.9875 -21 --20.6875 -0 -LINE -8 -0 -10 -177.9875 -20 --20.6875 -11 -193.4875 -21 --20.6875 -0 -LINE -8 -0 -10 -193.4875 -20 --20.6875 -11 -193.4875 -21 --7.8875 -0 -LINE -8 -0 -10 -174.4375 -20 --7.8875 -11 -158.9375 -21 --7.8875 -0 -LINE -8 -0 -10 -158.9375 -20 --7.8875 -11 -158.9375 -21 --20.6875 -0 -LINE -8 -0 -10 -158.9375 -20 --20.6875 -11 -174.4375 -21 --20.6875 -0 -LINE -8 -0 -10 -174.4375 -20 --20.6875 -11 -174.4375 -21 --7.8875 -0 -LINE -8 -0 -10 -183.9625 -20 --26.9375 -11 -168.4625 -21 --26.9375 -0 -LINE -8 -0 -10 -168.4625 -20 --26.9375 -11 -168.4625 -21 --39.7375 -0 -LINE -8 -0 -10 -168.4625 -20 --39.7375 -11 -183.9625 -21 --39.7375 -0 -LINE -8 -0 -10 -183.9625 -20 --39.7375 -11 -183.9625 -21 --26.9375 -0 -LINE -8 -0 -10 -169.675 -20 --45.9875 -11 -154.175 -21 --45.9875 -0 -LINE -8 -0 -10 -154.175 -20 --45.9875 -11 -154.175 -21 --58.7875 -0 -LINE -8 -0 -10 -154.175 -20 --58.7875 -11 -169.675 -21 --58.7875 -0 -LINE -8 -0 -10 -169.675 -20 --58.7875 -11 -169.675 -21 --45.9875 -0 -LINE -8 -0 -10 -150.625 -20 --45.9875 -11 -135.125 -21 --45.9875 -0 -LINE -8 -0 -10 -135.125 -20 --45.9875 -11 -135.125 -21 --58.7875 -0 -LINE -8 -0 -10 -135.125 -20 --58.7875 -11 -150.625 -21 --58.7875 -0 -LINE -8 -0 -10 -150.625 -20 --58.7875 -11 -150.625 -21 --45.9875 -0 -LINE -8 -0 -10 -160.15 -20 --65.0375 -11 -144.65 -21 --65.0375 -0 -LINE -8 -0 -10 -144.65 -20 --65.0375 -11 -144.65 -21 --77.8375 -0 -LINE -8 -0 -10 -144.65 -20 --77.8375 -11 -160.15 -21 --77.8375 -0 -LINE -8 -0 -10 -160.15 -20 --77.8375 -11 -160.15 -21 --65.0375 -0 -LINE -8 -0 -10 -141.1 -20 --65.0375 -11 -125.6 -21 --65.0375 -0 -LINE -8 -0 -10 -125.6 -20 --65.0375 -11 -125.6 -21 --77.8375 -0 -LINE -8 -0 -10 -125.6 -20 --77.8375 -11 -141.1 -21 --77.8375 -0 -LINE -8 -0 -10 -141.1 -20 --77.8375 -11 -141.1 -21 --65.0375 -0 -LINE -8 -0 -10 -155.3875 -20 --7.8875 -11 -139.8875 -21 --7.8875 -0 -LINE -8 -0 -10 -139.8875 -20 --7.8875 -11 -139.8875 -21 --20.6875 -0 -LINE -8 -0 -10 -139.8875 -20 --20.6875 -11 -155.3875 -21 --20.6875 -0 -LINE -8 -0 -10 -155.3875 -20 --20.6875 -11 -155.3875 -21 --7.8875 -0 -LINE -8 -0 -10 -136.3375 -20 --7.8875 -11 -120.8375 -21 --7.8875 -0 -LINE -8 -0 -10 -120.8375 -20 --7.8875 -11 -120.8375 -21 --20.6875 -0 -LINE -8 -0 -10 -120.8375 -20 --20.6875 -11 -136.3375 -21 --20.6875 -0 -LINE -8 -0 -10 -136.3375 -20 --20.6875 -11 -136.3375 -21 --7.8875 -0 -LINE -8 -0 -10 -164.9125 -20 --26.9375 -11 -149.4125 -21 --26.9375 -0 -LINE -8 -0 -10 -149.4125 -20 --26.9375 -11 -149.4125 -21 --39.7375 -0 -LINE -8 -0 -10 -149.4125 -20 --39.7375 -11 -164.9125 -21 --39.7375 -0 -LINE -8 -0 -10 -164.9125 -20 --39.7375 -11 -164.9125 -21 --26.9375 -0 -LINE -8 -0 -10 -145.8625 -20 --26.9375 -11 -130.3625 -21 --26.9375 -0 -LINE -8 -0 -10 -130.3625 -20 --26.9375 -11 -130.3625 -21 --39.7375 -0 -LINE -8 -0 -10 -130.3625 -20 --39.7375 -11 -145.8625 -21 --39.7375 -0 -LINE -8 -0 -10 -145.8625 -20 --39.7375 -11 -145.8625 -21 --26.9375 -0 -LINE -8 -0 -10 -131.575 -20 --45.9875 -11 -116.075 -21 --45.9875 -0 -LINE -8 -0 -10 -116.075 -20 --45.9875 -11 -116.075 -21 --58.7875 -0 -LINE -8 -0 -10 -116.075 -20 --58.7875 -11 -131.575 -21 --58.7875 -0 -LINE -8 -0 -10 -131.575 -20 --58.7875 -11 -131.575 -21 --45.9875 -0 -LINE -8 -0 -10 -122.05 -20 --65.0375 -11 -106.55 -21 --65.0375 -0 -LINE -8 -0 -10 -106.55 -20 --65.0375 -11 -106.55 -21 --77.8375 -0 -LINE -8 -0 -10 -106.55 -20 --77.8375 -11 -122.05 -21 --77.8375 -0 -LINE -8 -0 -10 -122.05 -20 --77.8375 -11 -122.05 -21 --65.0375 -0 -LINE -8 -0 -10 -103.0 -20 --65.0375 -11 -87.5 -21 --65.0375 -0 -LINE -8 -0 -10 -87.5 -20 --65.0375 -11 -87.5 -21 --77.8375 -0 -LINE -8 -0 -10 -87.5 -20 --77.8375 -11 -103.0 -21 --77.8375 -0 -LINE -8 -0 -10 -103.0 -20 --77.8375 -11 -103.0 -21 --65.0375 -0 -LINE -8 -0 -10 -117.2875 -20 --7.8875 -11 -101.7875 -21 --7.8875 -0 -LINE -8 -0 -10 -101.7875 -20 --7.8875 -11 -101.7875 -21 --20.6875 -0 -LINE -8 -0 -10 -101.7875 -20 --20.6875 -11 -117.2875 -21 --20.6875 -0 -LINE -8 -0 -10 -117.2875 -20 --20.6875 -11 -117.2875 -21 --7.8875 -0 -LINE -8 -0 -10 -98.2375 -20 --7.8875 -11 -82.7375 -21 --7.8875 -0 -LINE -8 -0 -10 -82.7375 -20 --7.8875 -11 -82.7375 -21 --20.6875 -0 -LINE -8 -0 -10 -82.7375 -20 --20.6875 -11 -98.2375 -21 --20.6875 -0 -LINE -8 -0 -10 -98.2375 -20 --20.6875 -11 -98.2375 -21 --7.8875 -0 -LINE -8 -0 -10 -126.8125 -20 --26.9375 -11 -111.3125 -21 --26.9375 -0 -LINE -8 -0 -10 -111.3125 -20 --26.9375 -11 -111.3125 -21 --39.7375 -0 -LINE -8 -0 -10 -111.3125 -20 --39.7375 -11 -126.8125 -21 --39.7375 -0 -LINE -8 -0 -10 -126.8125 -20 --39.7375 -11 -126.8125 -21 --26.9375 -0 -LINE -8 -0 -10 -107.7625 -20 --26.9375 -11 -92.2625 -21 --26.9375 -0 -LINE -8 -0 -10 -92.2625 -20 --26.9375 -11 -92.2625 -21 --39.7375 -0 -LINE -8 -0 -10 -92.2625 -20 --39.7375 -11 -107.7625 -21 --39.7375 -0 -LINE -8 -0 -10 -107.7625 -20 --39.7375 -11 -107.7625 -21 --26.9375 -0 -LINE -8 -0 -10 -112.525 -20 --45.9875 -11 -97.025 -21 --45.9875 -0 -LINE -8 -0 -10 -97.025 -20 --45.9875 -11 -97.025 -21 --58.7875 -0 -LINE -8 -0 -10 -97.025 -20 --58.7875 -11 -112.525 -21 --58.7875 -0 -LINE -8 -0 -10 -112.525 -20 --58.7875 -11 -112.525 -21 --45.9875 -0 -LINE -8 -0 -10 -93.475 -20 --45.9875 -11 -77.975 -21 --45.9875 -0 -LINE -8 -0 -10 -77.975 -20 --45.9875 -11 -77.975 -21 --58.7875 -0 -LINE -8 -0 -10 -77.975 -20 --58.7875 -11 -93.475 -21 --58.7875 -0 -LINE -8 -0 -10 -93.475 -20 --58.7875 -11 -93.475 -21 --45.9875 -0 -LINE -8 -0 -10 -83.95 -20 --65.0375 -11 -68.45 -21 --65.0375 -0 -LINE -8 -0 -10 -68.45 -20 --65.0375 -11 -68.45 -21 --77.8375 -0 -LINE -8 -0 -10 -68.45 -20 --77.8375 -11 -83.95 -21 --77.8375 -0 -LINE -8 -0 -10 -83.95 -20 --77.8375 -11 -83.95 -21 --65.0375 -0 -LINE -8 -0 -10 -79.1875 -20 --84.0875 -11 -63.6875 -21 --84.0875 -0 -LINE -8 -0 -10 -63.6875 -20 --84.0875 -11 -63.6875 -21 --96.8875 -0 -LINE -8 -0 -10 -63.6875 -20 --96.8875 -11 -79.1875 -21 --96.8875 -0 -LINE -8 -0 -10 -79.1875 -20 --96.8875 -11 -79.1875 -21 --84.0875 -0 -LINE -8 -0 -10 -79.1875 -20 --7.8875 -11 -63.6875 -21 --7.8875 -0 -LINE -8 -0 -10 -63.6875 -20 --7.8875 -11 -63.6875 -21 --20.6875 -0 -LINE -8 -0 -10 -63.6875 -20 --20.6875 -11 -79.1875 -21 --20.6875 -0 -LINE -8 -0 -10 -79.1875 -20 --20.6875 -11 -79.1875 -21 --7.8875 -0 -LINE -8 -0 -10 -60.1375 -20 --7.8875 -11 -44.6375 -21 --7.8875 -0 -LINE -8 -0 -10 -44.6375 -20 --7.8875 -11 -44.6375 -21 --20.6875 -0 -LINE -8 -0 -10 -44.6375 -20 --20.6875 -11 -60.1375 -21 --20.6875 -0 -LINE -8 -0 -10 -60.1375 -20 --20.6875 -11 -60.1375 -21 --7.8875 -0 -LINE -8 -0 -10 -88.7125 -20 --26.9375 -11 -73.2125 -21 --26.9375 -0 -LINE -8 -0 -10 -73.2125 -20 --26.9375 -11 -73.2125 -21 --39.7375 -0 -LINE -8 -0 -10 -73.2125 -20 --39.7375 -11 -88.7125 -21 --39.7375 -0 -LINE -8 -0 -10 -88.7125 -20 --39.7375 -11 -88.7125 -21 --26.9375 -0 -LINE -8 -0 -10 -69.6625 -20 --26.9375 -11 -54.1625 -21 --26.9375 -0 -LINE -8 -0 -10 -54.1625 -20 --26.9375 -11 -54.1625 -21 --39.7375 -0 -LINE -8 -0 -10 -54.1625 -20 --39.7375 -11 -69.6625 -21 --39.7375 -0 -LINE -8 -0 -10 -69.6625 -20 --39.7375 -11 -69.6625 -21 --26.9375 -0 -LINE -8 -0 -10 -74.425 -20 --45.9875 -11 -58.925 -21 --45.9875 -0 -LINE -8 -0 -10 -58.925 -20 --45.9875 -11 -58.925 -21 --58.7875 -0 -LINE -8 -0 -10 -58.925 -20 --58.7875 -11 -74.425 -21 --58.7875 -0 -LINE -8 -0 -10 -74.425 -20 --58.7875 -11 -74.425 -21 --45.9875 -0 -LINE -8 -0 -10 -64.9 -20 --65.0375 -11 -49.4 -21 --65.0375 -0 -LINE -8 -0 -10 -49.4 -20 --65.0375 -11 -49.4 -21 --77.8375 -0 -LINE -8 -0 -10 -49.4 -20 --77.8375 -11 -64.9 -21 --77.8375 -0 -LINE -8 -0 -10 -64.9 -20 --77.8375 -11 -64.9 -21 --65.0375 -0 -LINE -8 -0 -10 -52.9937 -20 --84.0875 -11 -37.4937 -21 --84.0875 -0 -LINE -8 -0 -10 -37.4937 -20 --84.0875 -11 -37.4937 -21 --96.8875 -0 -LINE -8 -0 -10 -37.4937 -20 --96.8875 -11 -52.9937 -21 --96.8875 -0 -LINE -8 -0 -10 -52.9937 -20 --96.8875 -11 -52.9937 -21 --84.0875 -0 -LINE -8 -0 -10 -41.0875 -20 --7.8875 -11 -25.5875 -21 --7.8875 -0 -LINE -8 -0 -10 -25.5875 -20 --7.8875 -11 -25.5875 -21 --20.6875 -0 -LINE -8 -0 -10 -25.5875 -20 --20.6875 -11 -41.0875 -21 --20.6875 -0 -LINE -8 -0 -10 -41.0875 -20 --20.6875 -11 -41.0875 -21 --7.8875 -0 -LINE -8 -0 -10 -22.0375 -20 --7.8875 -11 -6.5375 -21 --7.8875 -0 -LINE -8 -0 -10 -6.5375 -20 --7.8875 -11 -6.5375 -21 --20.6875 -0 -LINE -8 -0 -10 -6.5375 -20 --20.6875 -11 -22.0375 -21 --20.6875 -0 -LINE -8 -0 -10 -22.0375 -20 --20.6875 -11 -22.0375 -21 --7.8875 -0 -LINE -8 -0 -10 -50.6125 -20 --26.9375 -11 -35.1125 -21 --26.9375 -0 -LINE -8 -0 -10 -35.1125 -20 --26.9375 -11 -35.1125 -21 --39.7375 -0 -LINE -8 -0 -10 -35.1125 -20 --39.7375 -11 -50.6125 -21 --39.7375 -0 -LINE -8 -0 -10 -50.6125 -20 --39.7375 -11 -50.6125 -21 --26.9375 -0 -LINE -8 -0 -10 -26.8 -20 --26.9375 -11 -11.3 -21 --26.9375 -0 -LINE -8 -0 -10 -11.3 -20 --26.9375 -11 -11.3 -21 --39.7375 -0 -LINE -8 -0 -10 -11.3 -20 --39.7375 -11 -26.8 -21 --39.7375 -0 -LINE -8 -0 -10 -26.8 -20 --39.7375 -11 -26.8 -21 --26.9375 -0 -LINE -8 -0 -10 -55.375 -20 --45.9875 -11 -39.875 -21 --45.9875 -0 -LINE -8 -0 -10 -39.875 -20 --45.9875 -11 -39.875 -21 --58.7875 -0 -LINE -8 -0 -10 -39.875 -20 --58.7875 -11 -55.375 -21 --58.7875 -0 -LINE -8 -0 -10 -55.375 -20 --58.7875 -11 -55.375 -21 --45.9875 -0 -LINE -8 -0 -10 -29.18125 -20 --45.9875 -11 -13.68125 -21 --45.9875 -0 -LINE -8 -0 -10 -13.68125 -20 --45.9875 -11 -13.68125 -21 --58.7875 -0 -LINE -8 -0 -10 -13.68125 -20 --58.7875 -11 -29.18125 -21 --58.7875 -0 -LINE -8 -0 -10 -29.18125 -20 --58.7875 -11 -29.18125 -21 --45.9875 -0 -LINE -8 -0 -10 -26.8 -20 --84.0875 -11 -11.3 -21 --84.0875 -0 -LINE -8 -0 -10 -11.3 -20 --84.0875 -11 -11.3 -21 --96.8875 -0 -LINE -8 -0 -10 -11.3 -20 --96.8875 -11 -26.8 -21 --96.8875 -0 -LINE -8 -0 -10 -26.8 -20 --96.8875 -11 -26.8 -21 --84.0875 -0 -LINE -8 -0 -10 -260.1625 -20 --26.9375 -11 -244.6625 -21 --26.9375 -0 -LINE -8 -0 -10 -244.6625 -20 --26.9375 -11 -244.6625 -21 --39.7375 -0 -LINE -8 -0 -10 -244.6625 -20 --39.7375 -11 -260.1625 -21 --39.7375 -0 -LINE -8 -0 -10 -260.1625 -20 --39.7375 -11 -260.1625 -21 --26.9375 -0 -LINE -8 -0 -10 -283.975 -20 --26.9375 -11 -268.475 -21 --26.9375 -0 -LINE -8 -0 -10 -268.475 -20 --26.9375 -11 -268.475 -21 --39.7375 -0 -LINE -8 -0 -10 -268.475 -20 --39.7375 -11 -283.975 -21 --39.7375 -0 -LINE -8 -0 -10 -283.975 -20 --39.7375 -11 -283.975 -21 --26.9375 -0 -LINE -8 -0 -10 -283.975 -20 --84.0875 -11 -268.475 -21 --84.0875 -0 -LINE -8 -0 -10 -268.475 -20 --84.0875 -11 -268.475 -21 --96.8875 -0 -LINE -8 -0 -10 -268.475 -20 --96.8875 -11 -283.975 -21 --96.8875 -0 -LINE -8 -0 -10 -283.975 -20 --96.8875 -11 -283.975 -21 --84.0875 -0 -LINE -8 -0 -10 -250.6375 -20 --7.8875 -11 -235.1375 -21 --7.8875 -0 -LINE -8 -0 -10 -235.1375 -20 --7.8875 -11 -235.1375 -21 --20.6875 -0 -LINE -8 -0 -10 -235.1375 -20 --20.6875 -11 -250.6375 -21 --20.6875 -0 -LINE -8 -0 -10 -250.6375 -20 --20.6875 -11 -250.6375 -21 --7.8875 -0 -LINE -8 -0 -10 -241.1125 -20 --26.9375 -11 -225.6125 -21 --26.9375 -0 -LINE -8 -0 -10 -225.6125 -20 --26.9375 -11 -225.6125 -21 --39.7375 -0 -LINE -8 -0 -10 -225.6125 -20 --39.7375 -11 -241.1125 -21 --39.7375 -0 -LINE -8 -0 -10 -241.1125 -20 --39.7375 -11 -241.1125 -21 --26.9375 -0 -LINE -8 -0 -10 -222.0625 -20 --26.9375 -11 -206.5625 -21 --26.9375 -0 -LINE -8 -0 -10 -206.5625 -20 --26.9375 -11 -206.5625 -21 --39.7375 -0 -LINE -8 -0 -10 -206.5625 -20 --39.7375 -11 -222.0625 -21 --39.7375 -0 -LINE -8 -0 -10 -222.0625 -20 --39.7375 -11 -222.0625 -21 --26.9375 -0 -LINE -8 -0 -10 -245.875 -20 --45.9875 -11 -230.375 -21 --45.9875 -0 -LINE -8 -0 -10 -230.375 -20 --45.9875 -11 -230.375 -21 --58.7875 -0 -LINE -8 -0 -10 -230.375 -20 --58.7875 -11 -245.875 -21 --58.7875 -0 -LINE -8 -0 -10 -245.875 -20 --58.7875 -11 -245.875 -21 --45.9875 -0 -LINE -8 -0 -10 -226.825 -20 --45.9875 -11 -211.325 -21 --45.9875 -0 -LINE -8 -0 -10 -211.325 -20 --45.9875 -11 -211.325 -21 --58.7875 -0 -LINE -8 -0 -10 -211.325 -20 --58.7875 -11 -226.825 -21 --58.7875 -0 -LINE -8 -0 -10 -226.825 -20 --58.7875 -11 -226.825 -21 --45.9875 -0 -LINE -8 -0 -10 -236.35 -20 --65.0375 -11 -220.85 -21 --65.0375 -0 -LINE -8 -0 -10 -220.85 -20 --65.0375 -11 -220.85 -21 --77.8375 -0 -LINE -8 -0 -10 -220.85 -20 --77.8375 -11 -236.35 -21 --77.8375 -0 -LINE -8 -0 -10 -236.35 -20 --77.8375 -11 -236.35 -21 --65.0375 -0 -LINE -8 -0 -10 -217.3 -20 --65.0375 -11 -201.8 -21 --65.0375 -0 -LINE -8 -0 -10 -201.8 -20 --65.0375 -11 -201.8 -21 --77.8375 -0 -LINE -8 -0 -10 -201.8 -20 --77.8375 -11 -217.3 -21 --77.8375 -0 -LINE -8 -0 -10 -217.3 -20 --77.8375 -11 -217.3 -21 --65.0375 -0 -LINE -8 -0 -10 -257.78125 -20 --84.0875 -11 -242.28125 -21 --84.0875 -0 -LINE -8 -0 -10 -242.28125 -20 --84.0875 -11 -242.28125 -21 --96.8875 -0 -LINE -8 -0 -10 -242.28125 -20 --96.8875 -11 -257.78125 -21 --96.8875 -0 -LINE -8 -0 -10 -257.78125 -20 --96.8875 -11 -257.78125 -21 --84.0875 -0 -LINE -8 -0 -10 -231.5875 -20 --7.8875 -11 -216.0875 -21 --7.8875 -0 -LINE -8 -0 -10 -216.0875 -20 --7.8875 -11 -216.0875 -21 --20.6875 -0 -LINE -8 -0 -10 -216.0875 -20 --20.6875 -11 -231.5875 -21 --20.6875 -0 -LINE -8 -0 -10 -231.5875 -20 --20.6875 -11 -231.5875 -21 --7.8875 -0 -LINE -8 -0 -10 -212.5375 -20 --7.8875 -11 -197.0375 -21 --7.8875 -0 -LINE -8 -0 -10 -197.0375 -20 --7.8875 -11 -197.0375 -21 --20.6875 -0 -LINE -8 -0 -10 -197.0375 -20 --20.6875 -11 -212.5375 -21 --20.6875 -0 -LINE -8 -0 -10 -212.5375 -20 --20.6875 -11 -212.5375 -21 --7.8875 -0 -LINE -8 -0 -10 -203.0125 -20 --26.9375 -11 -187.5125 -21 --26.9375 -0 -LINE -8 -0 -10 -187.5125 -20 --26.9375 -11 -187.5125 -21 --39.7375 -0 -LINE -8 -0 -10 -187.5125 -20 --39.7375 -11 -203.0125 -21 --39.7375 -0 -LINE -8 -0 -10 -203.0125 -20 --39.7375 -11 -203.0125 -21 --26.9375 -0 -LINE -8 -0 -10 -207.775 -20 --45.9875 -11 -192.275 -21 --45.9875 -0 -LINE -8 -0 -10 -192.275 -20 --45.9875 -11 -192.275 -21 --58.7875 -0 -LINE -8 -0 -10 -192.275 -20 --58.7875 -11 -207.775 -21 --58.7875 -0 -LINE -8 -0 -10 -207.775 -20 --58.7875 -11 -207.775 -21 --45.9875 -0 -LINE -8 -0 -10 -188.725 -20 --45.9875 -11 -173.225 -21 --45.9875 -0 -LINE -8 -0 -10 -173.225 -20 --45.9875 -11 -173.225 -21 --58.7875 -0 -LINE -8 -0 -10 -173.225 -20 --58.7875 -11 -188.725 -21 --58.7875 -0 -LINE -8 -0 -10 -188.725 -20 --58.7875 -11 -188.725 -21 --45.9875 -0 -LINE -8 -0 -10 -198.25 -20 --65.0375 -11 -182.75 -21 --65.0375 -0 -LINE -8 -0 -10 -182.75 -20 --65.0375 -11 -182.75 -21 --77.8375 -0 -LINE -8 -0 -10 -182.75 -20 --77.8375 -11 -198.25 -21 --77.8375 -0 -LINE -8 -0 -10 -198.25 -20 --77.8375 -11 -198.25 -21 --65.0375 -0 -LINE -8 -0 -10 -179.2 -20 --65.0375 -11 -163.7 -21 --65.0375 -0 -LINE -8 -0 -10 -163.7 -20 --65.0375 -11 -163.7 -21 --77.8375 -0 -LINE -8 -0 -10 -163.7 -20 --77.8375 -11 -179.2 -21 --77.8375 -0 -LINE -8 -0 -10 -179.2 -20 --77.8375 -11 -179.2 -21 --65.0375 -0 -LINE -8 -0 -10 -231.5875 -20 --84.0875 -11 -216.0875 -21 --84.0875 -0 -LINE -8 -0 -10 -216.0875 -20 --84.0875 -11 -216.0875 -21 --96.8875 -0 -LINE -8 -0 -10 -216.0875 -20 --96.8875 -11 -231.5875 -21 --96.8875 -0 -LINE -8 -0 -10 -231.5875 -20 --96.8875 -11 -231.5875 -21 --84.0875 -0 -LINE -8 -0 -10 -244.01875 -20 --75.3375 -11 -244.01875 -21 --80.4375 -0 -LINE -8 -0 -10 -244.01875 -20 --80.4375 -11 -241.41875 -21 --80.4375 -0 -LINE -8 -0 -10 -241.41875 -20 --80.4375 -11 -241.41875 -21 --75.3375 -0 -LINE -8 -0 -10 -241.41875 -20 --75.3375 -11 -244.01875 -21 --75.3375 -0 -LINE -8 -0 -10 -284.61875 -20 --75.3375 -11 -284.61875 -21 --80.4375 -0 -LINE -8 -0 -10 -284.61875 -20 --80.4375 -11 -287.21875 -21 --80.4375 -0 -LINE -8 -0 -10 -287.21875 -20 --80.4375 -11 -287.21875 -21 --75.3375 -0 -LINE -8 -0 -10 -287.21875 -20 --75.3375 -11 -284.61875 -21 --75.3375 -0 -LINE -8 -0 -10 -272.06875 -20 --65.0375 -11 -256.56875 -21 --65.0375 -0 -LINE -8 -0 -10 -256.56875 -20 --65.0375 -11 -256.56875 -21 --77.8375 -0 -LINE -8 -0 -10 -256.56875 -20 --77.8375 -11 -272.06875 -21 --77.8375 -0 -LINE -8 -0 -10 -272.06875 -20 --77.8375 -11 -272.06875 -21 --65.0375 -0 -TEXT -8 -Cmts -62 -1 -10 -303.847897 -20 --52.73062 -1 -95.000 mm -40 -1.5 -41 -1.5 -50 -270.186984 -7 -SIMPLEX -72 -1 -73 -2 -11 -303.847897 -21 --52.73062 -0 -LINE -8 -Cmts -62 -1 -10 -287.34 -20 --100.28 -11 -305.35289 -21 --100.221215 -0 -LINE -8 -Cmts -62 -1 -10 -287.03 -20 --5.29 -11 -305.04289 -21 --5.231215 -0 -LINE -8 -Cmts -62 -1 -10 -302.342904 -20 --5.240026 -11 -302.652904 -21 --100.230026 -0 -LINE -8 -Cmts -62 -1 -10 -302.652904 -20 --100.230026 -11 -302.06281 -21 --99.105442 -0 -LINE -8 -Cmts -62 -1 -10 -302.652904 -20 --100.230026 -11 -303.235645 -21 --99.101614 -0 -LINE -8 -Cmts -62 -1 -10 -302.342904 -20 --5.240026 -11 -301.760163 -21 --6.368438 -0 -LINE -8 -Cmts -62 -1 -10 -302.342904 -20 --5.240026 -11 -302.932998 -21 --6.36461 -0 -TEXT -8 -Cmts -62 -1 -10 -17.92 -20 --43.7 -1 -25.6125 mm -40 -1.5 -41 -1.5 -7 -SIMPLEX -72 -1 -73 -2 -11 -17.92 -21 --43.7 -0 -LINE -8 -Cmts -62 -1 -10 -30.71 -20 --33.34 -11 -30.71 -21 --45.05 -0 -LINE -8 -Cmts -62 -1 -10 -5.13 -20 --33.34 -11 -5.13 -21 --45.05 -0 -LINE -8 -Cmts -62 -1 -10 -5.13 -20 --42.35 -11 -30.71 -21 --42.35 -0 -LINE -8 -Cmts -62 -1 -10 -30.71 -20 --42.35 -11 -29.583496 -21 --42.936421 -0 -LINE -8 -Cmts -62 -1 -10 -30.71 -20 --42.35 -11 -29.583496 -21 --41.763579 -0 -LINE -8 -Cmts -62 -1 -10 -5.13 -20 --42.35 -11 -6.256504 -21 --42.936421 -0 -LINE -8 -Cmts -62 -1 -10 -5.13 -20 --42.35 -11 -6.256504 -21 --41.763579 -0 -TEXT -8 -Cmts -62 -1 -10 -277.347461 -20 --39.634741 -1 -25.6125 mm -40 -1.5 -41 -1.5 -50 -0.022425 -7 -SIMPLEX -72 -1 -73 -2 -11 -277.347461 -21 --39.634741 -0 -LINE -8 -Cmts -62 -1 -10 -290.12 -20 --33.34 -11 -290.12299 -21 --40.979741 -0 -LINE -8 -Cmts -62 -1 -10 -264.57 -20 --33.35 -11 -264.57299 -21 --40.989741 -0 -LINE -8 -Cmts -62 -1 -10 -264.571933 -20 --38.289741 -11 -290.121933 -21 --38.279741 -0 -LINE -8 -Cmts -62 -1 -10 -290.121933 -20 --38.279741 -11 -288.995659 -21 --38.866603 -0 -LINE -8 -Cmts -62 -1 -10 -290.121933 -20 --38.279741 -11 -288.9952 -21 --37.693761 -0 -LINE -8 -Cmts -62 -1 -10 -264.571933 -20 --38.289741 -11 -265.698666 -21 --38.875721 -0 -LINE -8 -Cmts -62 -1 -10 -264.571933 -20 --38.289741 -11 -265.698207 -21 --37.702879 -0 -TEXT -8 -Cmts -62 -1 -10 -202.7 -20 --90.49 -1 -6.300 mm -40 -1.5 -41 -1.5 -50 -270.0 -7 -SIMPLEX -72 -1 -73 -2 -11 -202.7 -21 --90.49 -0 -LINE -8 -Cmts -62 -1 -10 -195.44 -20 --93.64 -11 -204.05 -21 --93.64 -0 -LINE -8 -Cmts -62 -1 -10 -195.44 -20 --87.34 -11 -204.05 -21 --87.34 -0 -LINE -8 -Cmts -62 -1 -10 -201.35 -20 --87.34 -11 -201.35 -21 --93.64 -0 -LINE -8 -Cmts -62 -1 -10 -201.35 -20 --93.64 -11 -200.763579 -21 --92.513496 -0 -LINE -8 -Cmts -62 -1 -10 -201.35 -20 --93.64 -11 -201.936421 -21 --92.513496 -0 -LINE -8 -Cmts -62 -1 -10 -201.35 -20 --87.34 -11 -200.763579 -21 --88.466504 -0 -LINE -8 -Cmts -62 -1 -10 -201.35 -20 --87.34 -11 -201.936421 -21 --88.466504 -0 -TEXT -8 -Cmts -62 -1 -10 -258.43468 -20 --33.349763 -1 -6.300 mm -40 -1.5 -41 -1.5 -50 -270.090946 -7 -SIMPLEX -72 -1 -73 -2 -11 -258.43468 -21 --33.349763 -0 -LINE -8 -Cmts -62 -1 -10 -264.59 -20 --36.49 -11 -257.089682 -21 --36.501906 -0 -LINE -8 -Cmts -62 -1 -10 -264.58 -20 --30.19 -11 -257.079682 -21 --30.201906 -0 -LINE -8 -Cmts -62 -1 -10 -259.779679 -20 --30.19762 -11 -259.789679 -21 --36.49762 -0 -LINE -8 -Cmts -62 -1 -10 -259.789679 -20 --36.49762 -11 -259.201471 -21 --35.372048 -0 -LINE -8 -Cmts -62 -1 -10 -259.789679 -20 --36.49762 -11 -260.374311 -21 --35.370187 -0 -LINE -8 -Cmts -62 -1 -10 -259.779679 -20 --30.19762 -11 -259.195047 -21 --31.325053 -0 -LINE -8 -Cmts -62 -1 -10 -259.779679 -20 --30.19762 -11 -260.367887 -21 --31.323192 -0 -TEXT -8 -Cmts -62 -1 -10 -24.47 -20 --33.33 -1 -6.300 mm -40 -1.5 -41 -1.5 -50 -270.0 -7 -SIMPLEX -72 -1 -73 -2 -11 -24.47 -21 --33.33 -0 -LINE -8 -Cmts -62 -1 -10 -30.72 -20 --36.48 -11 -23.12 -21 --36.48 -0 -LINE -8 -Cmts -62 -1 -10 -30.72 -20 --30.18 -11 -23.12 -21 --30.18 -0 -LINE -8 -Cmts -62 -1 -10 -25.82 -20 --30.18 -11 -25.82 -21 --36.48 -0 -LINE -8 -Cmts -62 -1 -10 -25.82 -20 --36.48 -11 -25.233579 -21 --35.353496 -0 -LINE -8 -Cmts -62 -1 -10 -25.82 -20 --36.48 -11 -26.406421 -21 --35.353496 -0 -LINE -8 -Cmts -62 -1 -10 -25.82 -20 --30.18 -11 -25.233579 -21 --31.306504 -0 -LINE -8 -Cmts -62 -1 -10 -25.82 -20 --30.18 -11 -26.406421 -21 --31.306504 -0 -TEXT -8 -Cmts -62 -1 -10 -103.46 -20 --90.49 -1 -6.300 mm -40 -1.5 -41 -1.5 -50 -270.0 -7 -SIMPLEX -72 -1 -73 -2 -11 -103.46 -21 --90.49 -0 -LINE -8 -Cmts -62 -1 -10 -109.64 -20 --93.64 -11 -102.11 -21 --93.64 -0 -LINE -8 -Cmts -62 -1 -10 -109.64 -20 --87.34 -11 -102.11 -21 --87.34 -0 -LINE -8 -Cmts -62 -1 -10 -104.81 -20 --87.34 -11 -104.81 -21 --93.64 -0 -LINE -8 -Cmts -62 -1 -10 -104.81 -20 --93.64 -11 -104.223579 -21 --92.513496 -0 -LINE -8 -Cmts -62 -1 -10 -104.81 -20 --93.64 -11 -105.396421 -21 --92.513496 -0 -LINE -8 -Cmts -62 -1 -10 -104.81 -20 --87.34 -11 -104.223579 -21 --88.466504 -0 -LINE -8 -Cmts -62 -1 -10 -104.81 -20 --87.34 -11 -105.396421 -21 --88.466504 -0 -TEXT -8 -Cmts -62 -1 -10 -171.54 -20 --78.67 -1 -47.800 mm -40 -1.5 -41 -1.5 -7 -SIMPLEX -72 -1 -73 -2 -11 -171.54 -21 --78.67 -0 -LINE -8 -Cmts -62 -1 -10 -147.64 -20 --90.49 -11 -147.64 -21 --77.32 -0 -LINE -8 -Cmts -62 -1 -10 -195.44 -20 --90.49 -11 -195.44 -21 --77.32 -0 -LINE -8 -Cmts -62 -1 -10 -195.44 -20 --80.02 -11 -147.64 -21 --80.02 -0 -LINE -8 -Cmts -62 -1 -10 -147.64 -20 --80.02 -11 -148.766504 -21 --79.433579 -0 -LINE -8 -Cmts -62 -1 -10 -147.64 -20 --80.02 -11 -148.766504 -21 --80.606421 -0 -LINE -8 -Cmts -62 -1 -10 -195.44 -20 --80.02 -11 -194.313496 -21 --79.433579 -0 -LINE -8 -Cmts -62 -1 -10 -195.44 -20 --80.02 -11 -194.313496 -21 --80.606421 -0 -TEXT -8 -Cmts -62 -1 -10 -128.64 -20 --109.43 -1 -38.000 mm -40 -1.5 -41 -1.5 -7 -SIMPLEX -72 -1 -73 -2 -11 -128.64 -21 --109.43 -0 -LINE -8 -Cmts -62 -1 -10 -109.64 -20 --90.48 -11 -109.64 -21 --110.78 -0 -LINE -8 -Cmts -62 -1 -10 -147.64 -20 --90.48 -11 -147.64 -21 --110.78 -0 -LINE -8 -Cmts -62 -1 -10 -147.64 -20 --108.08 -11 -109.64 -21 --108.08 -0 -LINE -8 -Cmts -62 -1 -10 -109.64 -20 --108.08 -11 -110.766504 -21 --107.493579 -0 -LINE -8 -Cmts -62 -1 -10 -109.64 -20 --108.08 -11 -110.766504 -21 --108.666421 -0 -LINE -8 -Cmts -62 -1 -10 -147.64 -20 --108.08 -11 -146.513496 -21 --107.493579 -0 -LINE -8 -Cmts -62 -1 -10 -147.64 -20 --108.08 -11 -146.513496 -21 --108.666421 -0 -TEXT -8 -Cmts -62 -1 -10 -197.96 -20 --99.88 -1 -0.800 mm -40 -1.5 -41 -1.5 -50 -270.0 -7 -SIMPLEX -72 -1 -73 -2 -11 -197.96 -21 --99.88 -0 -LINE -8 -Cmts -62 -1 -10 -194.38 -20 --100.28 -11 -199.31 -21 --100.28 -0 -LINE -8 -Cmts -62 -1 -10 -194.38 -20 --99.48 -11 -199.31 -21 --99.48 -0 -LINE -8 -Cmts -62 -1 -10 -196.61 -20 --99.48 -11 -196.61 -21 --100.28 -0 -LINE -8 -Cmts -62 -1 -10 -196.61 -20 --100.28 -11 -196.023579 -21 --99.153496 -0 -LINE -8 -Cmts -62 -1 -10 -196.61 -20 --100.28 -11 -197.196421 -21 --99.153496 -0 -LINE -8 -Cmts -62 -1 -10 -196.61 -20 --99.48 -11 -196.023579 -21 --100.606504 -0 -LINE -8 -Cmts -62 -1 -10 -196.61 -20 --99.48 -11 -197.196421 -21 --100.606504 -0 -TEXT -8 -Cmts -62 -1 -10 -188.875133 -20 --92.417616 -1 -3.900 mm -40 -1.5 -41 -1.5 -50 -89.559272 -7 -SIMPLEX -72 -1 -73 -2 -11 -188.875133 -21 --92.417616 -0 -LINE -8 -Cmts -62 -1 -10 -191.77 -20 --94.39 -11 -187.510173 -21 --94.357232 -0 -LINE -8 -Cmts -62 -1 -10 -191.8 -20 --90.49 -11 -187.540173 -21 --90.457232 -0 -LINE -8 -Cmts -62 -1 -10 -190.240093 -20 --90.478001 -11 -190.210093 -21 --94.378001 -0 -LINE -8 -Cmts -62 -1 -10 -190.210093 -20 --94.378001 -11 -189.632355 -21 --93.24702 -0 -LINE -8 -Cmts -62 -1 -10 -190.210093 -20 --94.378001 -11 -190.805162 -21 --93.256041 -0 -LINE -8 -Cmts -62 -1 -10 -190.240093 -20 --90.478001 -11 -189.645024 -21 --91.599961 -0 -LINE -8 -Cmts -62 -1 -10 -190.240093 -20 --90.478001 -11 -190.817831 -21 --91.608982 -0 -TEXT -8 -Cmts -62 -1 -10 -159.664849 -20 --87.283312 -1 -6.400 mm -40 -1.5 -41 -1.5 -50 -270.089525 -7 -SIMPLEX -72 -1 -73 -2 -11 -159.664849 -21 --87.283312 -0 -LINE -8 -Cmts -62 -1 -10 -155.38 -20 --84.09 -11 -161.009848 -21 --84.081203 -0 -LINE -8 -Cmts -62 -1 -10 -155.39 -20 --90.49 -11 -161.019848 -21 --90.481203 -0 -LINE -8 -Cmts -62 -1 -10 -158.319851 -20 --90.485422 -11 -158.309851 -21 --84.085422 -0 -LINE -8 -Cmts -62 -1 -10 -158.309851 -20 --84.085422 -11 -158.898031 -21 --85.211008 -0 -LINE -8 -Cmts -62 -1 -10 -158.309851 -20 --84.085422 -11 -157.725191 -21 --85.212841 -0 -LINE -8 -Cmts -62 -1 -10 -158.319851 -20 --90.485422 -11 -158.904511 -21 --89.358003 -0 -LINE -8 -Cmts -62 -1 -10 -158.319851 -20 --90.485422 -11 -157.731671 -21 --89.359836 -0 -LINE -8 -Cmts -62 -1 -10 -109.67 -20 --90.4875 -11 -195.48 -21 --90.4875 -0 -TEXT -8 -Cmts -62 -1 -10 -147.64 -20 --117.98 -1 -88.300 mm -40 -1.5 -41 -1.5 -7 -SIMPLEX -72 -1 -73 -2 -11 -147.64 -21 --117.98 -0 -LINE -8 -Cmts -62 -1 -10 -191.79 -20 --99.49 -11 -191.79 -21 --119.33 -0 -LINE -8 -Cmts -62 -1 -10 -103.49 -20 --99.49 -11 -103.49 -21 --119.33 -0 -LINE -8 -Cmts -62 -1 -10 -103.49 -20 --116.63 -11 -191.79 -21 --116.63 -0 -LINE -8 -Cmts -62 -1 -10 -191.79 -20 --116.63 -11 -190.663496 -21 --117.216421 -0 -LINE -8 -Cmts -62 -1 -10 -191.79 -20 --116.63 -11 -190.663496 -21 --116.043579 -0 -LINE -8 -Cmts -62 -1 -10 -103.49 -20 --116.63 -11 -104.616504 -21 --117.216421 -0 -LINE -8 -Cmts -62 -1 -10 -103.49 -20 --116.63 -11 -104.616504 -21 --116.043579 -0 -TEXT -8 -Cmts -62 -1 -10 -102.19 -20 --104.41 -1 -2.600 mm -40 -1.5 -41 -1.5 -7 -SIMPLEX -72 -1 -73 -2 -11 -102.19 -21 --104.41 -0 -LINE -8 -Cmts -62 -1 -10 -103.49 -20 --99.49 -11 -103.49 -21 --105.76 -0 -LINE -8 -Cmts -62 -1 -10 -100.89 -20 --99.49 -11 -100.89 -21 --105.76 -0 -LINE -8 -Cmts -62 -1 -10 -100.89 -20 --103.06 -11 -103.49 -21 --103.06 -0 -LINE -8 -Cmts -62 -1 -10 -103.49 -20 --103.06 -11 -102.363496 -21 --103.646421 -0 -LINE -8 -Cmts -62 -1 -10 -103.49 -20 --103.06 -11 -102.363496 -21 --102.473579 -0 -LINE -8 -Cmts -62 -1 -10 -100.89 -20 --103.06 -11 -102.016504 -21 --103.646421 -0 -LINE -8 -Cmts -62 -1 -10 -100.89 -20 --103.06 -11 -102.016504 -21 --102.473579 -0 -TEXT -8 -Cmts -62 -1 -10 -97.67 -20 --96.94 -1 -5.100 mm -40 -1.5 -41 -1.5 -50 -270.0 -7 -SIMPLEX -72 -1 -73 -2 -11 -97.67 -21 --96.94 -0 -LINE -8 -Cmts -62 -1 -10 -100.89 -20 --99.49 -11 -96.32 -21 --99.49 -0 -LINE -8 -Cmts -62 -1 -10 -100.89 -20 --94.39 -11 -96.32 -21 --94.39 -0 -LINE -8 -Cmts -62 -1 -10 -99.02 -20 --94.39 -11 -99.02 -21 --99.49 -0 -LINE -8 -Cmts -62 -1 -10 -99.02 -20 --99.49 -11 -98.433579 -21 --98.363496 -0 -LINE -8 -Cmts -62 -1 -10 -99.02 -20 --99.49 -11 -99.606421 -21 --98.363496 -0 -LINE -8 -Cmts -62 -1 -10 -99.02 -20 --94.39 -11 -98.433579 -21 --95.516504 -0 -LINE -8 -Cmts -62 -1 -10 -99.02 -20 --94.39 -11 -99.606421 -21 --95.516504 -0 -TEXT -8 -Cmts -62 -1 -10 -109.63 -20 --81.13 -1 -14.500 mm -40 -1.5 -41 -1.5 -7 -SIMPLEX -72 -1 -73 -2 -11 -109.63 -21 --81.13 -0 -LINE -8 -Cmts -62 -1 -10 -102.38 -20 --89.28 -11 -102.38 -21 --79.78 -0 -LINE -8 -Cmts -62 -1 -10 -116.88 -20 --89.28 -11 -116.88 -21 --79.78 -0 -LINE -8 -Cmts -62 -1 -10 -116.88 -20 --82.48 -11 -102.38 -21 --82.48 -0 -LINE -8 -Cmts -62 -1 -10 -102.38 -20 --82.48 -11 -103.506504 -21 --81.893579 -0 -LINE -8 -Cmts -62 -1 -10 -102.38 -20 --82.48 -11 -103.506504 -21 --83.066421 -0 -LINE -8 -Cmts -62 -1 -10 -116.88 -20 --82.48 -11 -115.753496 -21 --81.893579 -0 -LINE -8 -Cmts -62 -1 -10 -116.88 -20 --82.48 -11 -115.753496 -21 --83.066421 -0 -TEXT -8 -Cmts -62 -1 -10 -121.803009 -20 --90.50045 -1 -2.400 mm -40 -1.5 -41 -1.5 -50 -89.761269 -7 -SIMPLEX -72 -1 -73 -2 -11 -121.803009 -21 --90.50045 -0 -LINE -8 -Cmts -62 -1 -10 -116.89 -20 --91.68 -11 -123.147997 -21 --91.706075 -0 -LINE -8 -Cmts -62 -1 -10 -116.9 -20 --89.28 -11 -123.157997 -21 --89.306075 -0 -LINE -8 -Cmts -62 -1 -10 -120.458021 -20 --89.294825 -11 -120.448021 -21 --91.694825 -0 -LINE -8 -Cmts -62 -1 -10 -120.448021 -20 --91.694825 -11 -119.866299 -21 --90.565888 -0 -LINE -8 -Cmts -62 -1 -10 -120.448021 -20 --91.694825 -11 -121.03913 -21 --90.570774 -0 -LINE -8 -Cmts -62 -1 -10 -120.458021 -20 --89.294825 -11 -119.866912 -21 --90.418876 -0 -LINE -8 -Cmts -62 -1 -10 -120.458021 -20 --89.294825 -11 -121.039743 -21 --90.423762 -0 -TEXT -8 -Cmts -62 -1 -10 -115.69 -20 --85.3 -1 -2.400 mm -40 -1.5 -41 -1.5 -7 -SIMPLEX -72 -1 -73 -2 -11 -115.69 -21 --85.3 -0 -LINE -8 -Cmts -62 -1 -10 -116.89 -20 --89.28 -11 -116.89 -21 --83.95 -0 -LINE -8 -Cmts -62 -1 -10 -114.49 -20 --89.28 -11 -114.49 -21 --83.95 -0 -LINE -8 -Cmts -62 -1 -10 -114.49 -20 --86.65 -11 -116.89 -21 --86.65 -0 -LINE -8 -Cmts -62 -1 -10 -116.89 -20 --86.65 -11 -115.763496 -21 --87.236421 -0 -LINE -8 -Cmts -62 -1 -10 -116.89 -20 --86.65 -11 -115.763496 -21 --86.063579 -0 -LINE -8 -Cmts -62 -1 -10 -114.49 -20 --86.65 -11 -115.616504 -21 --87.236421 -0 -LINE -8 -Cmts -62 -1 -10 -114.49 -20 --86.65 -11 -115.616504 -21 --86.063579 -0 -TEXT -8 -Cmts -62 -1 -10 -135.19 -20 --90.49 -1 -12.800 mm -40 -1.5 -41 -1.5 -50 -270.0 -7 -SIMPLEX -72 -1 -73 -2 -11 -135.19 -21 --90.49 -0 -LINE -8 -Cmts -62 -1 -10 -139.89 -20 --96.89 -11 -133.84 -21 --96.89 -0 -LINE -8 -Cmts -62 -1 -10 -139.89 -20 --84.09 -11 -133.84 -21 --84.09 -0 -LINE -8 -Cmts -62 -1 -10 -136.54 -20 --84.09 -11 -136.54 -21 --96.89 -0 -LINE -8 -Cmts -62 -1 -10 -136.54 -20 --96.89 -11 -135.953579 -21 --95.763496 -0 -LINE -8 -Cmts -62 -1 -10 -136.54 -20 --96.89 -11 -137.126421 -21 --95.763496 -0 -LINE -8 -Cmts -62 -1 -10 -136.54 -20 --84.09 -11 -135.953579 -21 --85.216504 -0 -LINE -8 -Cmts -62 -1 -10 -136.54 -20 --84.09 -11 -137.126421 -21 --85.216504 -0 -TEXT -8 -Cmts -62 -1 -10 -147.63 -20 --105.02 -1 -15.500 mm -40 -1.5 -41 -1.5 -7 -SIMPLEX -72 -1 -73 -2 -11 -147.63 -21 --105.02 -0 -LINE -8 -Cmts -62 -1 -10 -139.88 -20 --96.87 -11 -139.88 -21 --106.37 -0 -LINE -8 -Cmts -62 -1 -10 -155.38 -20 --96.87 -11 -155.38 -21 --106.37 -0 -LINE -8 -Cmts -62 -1 -10 -155.38 -20 --103.67 -11 -139.88 -21 --103.67 -0 -LINE -8 -Cmts -62 -1 -10 -139.88 -20 --103.67 -11 -141.006504 -21 --103.083579 -0 -LINE -8 -Cmts -62 -1 -10 -139.88 -20 --103.67 -11 -141.006504 -21 --104.256421 -0 -LINE -8 -Cmts -62 -1 -10 -155.38 -20 --103.67 -11 -154.253496 -21 --103.083579 -0 -LINE -8 -Cmts -62 -1 -10 -155.38 -20 --103.67 -11 -154.253496 -21 --104.256421 -0 -CIRCLE -8 -0 -10 -30.75 -20 --33.3375 -40 -3.15 -0 -CIRCLE -8 -0 -10 -195.4375 -20 --90.4875 -40 -3.15 -0 -CIRCLE -8 -0 -10 -264.525 -20 --33.3375 -40 -3.15 -0 -LINE -8 -0 -10 -290.1375 -20 --7.7875 -11 -290.1375 -21 --58.7125 -0 -LINE -8 -0 -10 -288.3375 -20 --58.7125 -11 -290.1375 -21 --58.7125 -0 -LINE -8 -0 -10 -5.1375 -20 --65.0125 -11 -5.1375 -21 --97.7875 -0 -LINE -8 -0 -10 -288.3375 -20 --65.1125 -11 -290.1375 -21 --65.1125 -0 -LINE -8 -0 -10 -8.7375 -20 --65.0125 -11 -5.1375 -21 --65.0125 -0 -LINE -8 -0 -10 -8.7375 -20 --58.8125 -11 -5.1375 -21 --58.8125 -0 -ARC -8 -0 -10 -8.7375 -20 --61.9125 -30 -0.0 -40 -3.1 -50 --90.0 -51 -90.0 -0 -ARC -8 -0 -10 -288.3375 -20 --61.9125 -30 -0.0 -40 -3.2 -50 -90.0 -51 -270.0 -0 -TEXT -8 -Cmts -62 -1 -10 -277.6375 -20 -6.3625 -1 -25.000 mm -40 -1.5 -41 -1.5 -7 -SIMPLEX -72 -1 -73 -2 -11 -277.6375 -21 -6.3625 -0 -LINE -8 -Cmts -62 -1 -10 -265.1375 -20 --33.3375 -11 -265.1375 -21 -7.7125 -0 -LINE -8 -Cmts -62 -1 -10 -290.1375 -20 --33.3375 -11 -290.1375 -21 -7.7125 -0 -LINE -8 -Cmts -62 -1 -10 -290.1375 -20 -5.0125 -11 -265.1375 -21 -5.0125 -0 -LINE -8 -Cmts -62 -1 -10 -265.1375 -20 -5.0125 -11 -266.264004 -21 -5.598921 -0 -LINE -8 -Cmts -62 -1 -10 -265.1375 -20 -5.0125 -11 -266.264004 -21 -4.426079 -0 -LINE -8 -Cmts -62 -1 -10 -290.1375 -20 -5.0125 -11 -289.010996 -21 -5.598921 -0 -LINE -8 -Cmts -62 -1 -10 -290.1375 -20 -5.0125 -11 -289.010996 -21 -4.426079 -0 -TEXT -8 -Cmts -62 -1 -10 -147.6375 -20 -10.875 -1 -285.000 mm -40 -1.5 -41 -1.5 -7 -SIMPLEX -72 -1 -73 -2 -11 -147.6375 -21 -10.875 -0 -LINE -8 -Cmts -62 -1 -10 -290.1375 -20 --7.14375 -11 -290.1375 -21 -12.225 -0 -LINE -8 -Cmts -62 -1 -10 -5.1375 -20 --7.14375 -11 -5.1375 -21 -12.225 -0 -LINE -8 -Cmts -62 -1 -10 -5.1375 -20 -9.525 -11 -290.1375 -21 -9.525 -0 -LINE -8 -Cmts -62 -1 -10 -290.1375 -20 -9.525 -11 -289.010996 -21 -8.938579 -0 -LINE -8 -Cmts -62 -1 -10 -290.1375 -20 -9.525 -11 -289.010996 -21 -10.111421 -0 -LINE -8 -Cmts -62 -1 -10 -5.1375 -20 -9.525 -11 -6.264004 -21 -8.938579 -0 -LINE -8 -Cmts -62 -1 -10 -5.1375 -20 -9.525 -11 -6.264004 -21 -10.111421 -0 -ARC -8 -0 -10 -7.6375 -20 --97.7875 -30 -0.0 -40 -2.5 -50 --180.0 -51 --90.0 -0 -ARC -8 -0 -10 -287.6375 -20 --97.7875 -30 -0.0 -40 -2.5 -50 --90.0 -51 -0.0 -0 -ARC -8 -0 -10 -287.6375 -20 --7.7875 -30 -0.0 -40 -2.5 -50 -0.0 -51 -90.0 -0 -ARC -8 -0 -10 -7.6375 -20 --7.7875 -30 -0.0 -40 -2.5 -50 -90.0 -51 -180.0 -0 -LINE -8 -0 -10 -290.1375 -20 --97.7875 -11 -290.1375 -21 --65.1125 -0 -LINE -8 -0 -10 -7.6375 -20 --100.2875 -11 -287.6375 -21 --100.2875 -0 -LINE -8 -0 -10 -5.1375 -20 --7.7875 -11 -5.1375 -21 --58.8125 -0 -LINE -8 -0 -10 -7.6375 -20 --5.2875 -11 -287.6375 -21 --5.2875 -0 -ENDSEC -0 -EOF \ No newline at end of file diff --git a/keyboards/weebkeeb/config.h b/keyboards/weebkeeb/config.h deleted file mode 100644 index 859adc9cc2..0000000000 --- a/keyboards/weebkeeb/config.h +++ /dev/null @@ -1,162 +0,0 @@ -/* -Copyright 2012 Jun Wako - -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 . -*/ - -#ifndef CONFIG_H -#define CONFIG_H - -#include "config_common.h" - -/* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6060 -#define DEVICE_VER 0x0001 -#define MANUFACTURER You -#define PRODUCT weebkeeb -#define DESCRIPTION A custom keyboard - -/* key matrix size */ -#define MATRIX_ROWS 4 -#define MATRIX_COLS 12 - -/* - * Keyboard Matrix Assignments - * - * Change this to how you wired your keyboard - * COLS: AVR pins used for columns, left to right - * ROWS: AVR pins used for rows, top to bottom - * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) - * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) - * -*/ -#define MATRIX_ROW_PINS { F4, F5, F6, F7 } -#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5, B6, B7, C6, C7, F0, F1 } -#define UNUSED_PINS - -/* COL2ROW or ROW2COL */ -#define DIODE_DIRECTION COL2ROW - -// #define BACKLIGHT_PIN B7 -// #define BACKLIGHT_BREATHING -// #define BACKLIGHT_LEVELS 3 - - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCING_DELAY 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ -//#define MATRIX_HAS_GHOST - -/* number of backlight levels */ - -/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ -#define LOCKING_SUPPORT_ENABLE -/* Locking resynchronize hack */ -#define LOCKING_RESYNC_ENABLE - -/* - * Force NKRO - * - * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved - * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the - * makefile for this to work.) - * - * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) - * until the next keyboard reset. - * - * NKRO may prevent your keystrokes from being detected in the BIOS, but it is - * fully operational during normal computer usage. - * - * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) - * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by - * bootmagic, NKRO mode will always be enabled until it is toggled again during a - * power-up. - * - */ -//#define FORCE_NKRO - -/* - * Magic Key Options - * - * Magic keys are hotkey commands that allow control over firmware functions of - * the keyboard. They are best used in combination with the HID Listen program, - * found here: https://www.pjrc.com/teensy/hid_listen.html - * - * The options below allow the magic key functionality to be changed. This is - * useful if your keyboard/keypad is missing keys and you want magic key support. - * - */ - -/* key combination for magic key command */ -#define IS_COMMAND() ( \ - keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ -) - -/* control how magic key switches layers */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false - -/* override magic key keymap */ -//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS -//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM -//#define MAGIC_KEY_HELP1 H -//#define MAGIC_KEY_HELP2 SLASH -//#define MAGIC_KEY_DEBUG D -//#define MAGIC_KEY_DEBUG_MATRIX X -//#define MAGIC_KEY_DEBUG_KBD K -//#define MAGIC_KEY_DEBUG_MOUSE M -//#define MAGIC_KEY_VERSION V -//#define MAGIC_KEY_STATUS S -//#define MAGIC_KEY_CONSOLE C -//#define MAGIC_KEY_LAYER0_ALT1 ESC -//#define MAGIC_KEY_LAYER0_ALT2 GRAVE -//#define MAGIC_KEY_LAYER0 0 -//#define MAGIC_KEY_LAYER1 1 -//#define MAGIC_KEY_LAYER2 2 -//#define MAGIC_KEY_LAYER3 3 -//#define MAGIC_KEY_LAYER4 4 -//#define MAGIC_KEY_LAYER5 5 -//#define MAGIC_KEY_LAYER6 6 -//#define MAGIC_KEY_LAYER7 7 -//#define MAGIC_KEY_LAYER8 8 -//#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT -//#define NO_ACTION_MACRO -//#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/weebkeeb/keymaps/default/Makefile b/keyboards/weebkeeb/keymaps/default/Makefile deleted file mode 100644 index f4671a9d11..0000000000 --- a/keyboards/weebkeeb/keymaps/default/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically -# -BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) -EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = no # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - -ifndef QUANTUM_DIR - include ../../../../Makefile -endif \ No newline at end of file diff --git a/keyboards/weebkeeb/keymaps/default/config.h b/keyboards/weebkeeb/keymaps/default/config.h deleted file mode 100644 index df06a26206..0000000000 --- a/keyboards/weebkeeb/keymaps/default/config.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef CONFIG_USER_H -#define CONFIG_USER_H - -#include "../../config.h" - -// place overrides here - -#endif \ No newline at end of file diff --git a/keyboards/weebkeeb/keymaps/default/keymap.c b/keyboards/weebkeeb/keymaps/default/keymap.c deleted file mode 100644 index cdf1f1e4c7..0000000000 --- a/keyboards/weebkeeb/keymaps/default/keymap.c +++ /dev/null @@ -1,119 +0,0 @@ -#include "weebkeeb.h" - -#define _QWERTY 0 -#define _COLEMAK 1 -#define _DVORAK 2 -#define _LOWER 3 -#define _RAISE 4 -#define _ADJUST 16 - -enum custom_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - DVORAK, - LOWER, - RAISE, - ADJUST, -}; - -// Fillers to make layering more clear -#define _______ KC_TRNS -#define XXXXXXX KC_NO - -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - -/* Qwerty - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | S | D | F | G | H | J | K | L | ; | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[_QWERTY] = KEYMAP( \ - KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, \ - KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \ - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ - KC_LCTL, ADJUST, KC_LALT, KC_LGUI, MO(3), KC_SPC, KC_SPC, MO(4), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ -), - -/* Colemak - * ,-----------------------------------------------------------------------------------. - * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | A | R | S | T | D | H | N | E | I | O | " | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | - * `-----------------------------------------------------------------------------------' - */ -[3] = KEYMAP( \ - KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, \ - KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ - _______, _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ -), -[4] = KEYMAP( \ - KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \ - KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ - _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ - _______, _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ -), - -/* Adjust (Lower + Raise) - * ,-----------------------------------------------------------------------------------. - * | | Reset| | | | | | | | | | Del | - * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | - * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | | | | | | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | | | | | - * `-----------------------------------------------------------------------------------' - */ -[_ADJUST] = KEYMAP( \ - _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ - _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ - _______, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD, _______, _______, _______, \ - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ -) -}; -const uint16_t PROGMEM fn_actions[] = { - -}; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - // MACRODOWN only works in this function - switch(id) { - case 0: - if (record->event.pressed) { - register_code(KC_RSFT); - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; -}; - - -void matrix_init_user(void) { - -} - -void matrix_scan_user(void) { - -} - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - return true; -} - -void led_set_user(uint8_t usb_led) { - -} \ No newline at end of file diff --git a/keyboards/weebkeeb/keymaps/default/readme.md b/keyboards/weebkeeb/keymaps/default/readme.md deleted file mode 100644 index 8771322763..0000000000 --- a/keyboards/weebkeeb/keymaps/default/readme.md +++ /dev/null @@ -1 +0,0 @@ -# The default keymap for weebkeeb \ No newline at end of file diff --git a/keyboards/weebkeeb/readme.md b/keyboards/weebkeeb/readme.md deleted file mode 100644 index bf31016c82..0000000000 --- a/keyboards/weebkeeb/readme.md +++ /dev/null @@ -1,28 +0,0 @@ -weebkeeb keyboard firmware -====================== - -## Quantum MK Firmware - -For the full Quantum feature list, see [the parent readme](/). - -## Building - -Download or clone the whole firmware and navigate to the keyboards/weebkeeb folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. - -Depending on which keymap you would like to use, you will have to compile slightly differently. - -### Default - -To build with the default keymap, simply run `make default`. - -### Other Keymaps - -Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. - -To build the firmware binary hex file with a keymap just do `make` with a keymap like this: - -``` -$ make [default|jack|] -``` - -Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/weebkeeb/rules.mk b/keyboards/weebkeeb/rules.mk deleted file mode 100644 index 55898147dd..0000000000 --- a/keyboards/weebkeeb/rules.mk +++ /dev/null @@ -1,67 +0,0 @@ -# MCU name -#MCU = at90usb1287 -MCU = atmega32u4 - -# Processor frequency. -# This will define a symbol, F_CPU, in all source code files equal to the -# processor frequency in Hz. You can then use this symbol in your source code to -# calculate timings. Do NOT tack on a 'UL' at the end, this will be done -# automatically to create a 32-bit value in your source code. -# -# This will be an integer division of F_USB below, as it is sourced by -# F_USB after it has run through any CPU prescalers. Note that this value -# does not *change* the processor frequency - it should merely be updated to -# reflect the processor speed set externally so that the code can use accurate -# software delays. -F_CPU = 16000000 - - -# -# LUFA specific -# -# Target architecture (see library "Board Types" documentation). -ARCH = AVR8 - -# Input clock frequency. -# This will define a symbol, F_USB, in all source code files equal to the -# input clock frequency (before any prescaling is performed) in Hz. This value may -# differ from F_CPU if prescaling is used on the latter, and is required as the -# raw input clock is fed directly to the PLL sections of the AVR for high speed -# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' -# at the end, this will be done automatically to create a 32-bit value in your -# source code. -# -# If no clock division is performed on the input clock inside the AVR (via the -# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. -F_USB = $(F_CPU) - -# Interrupt driven control endpoint task(+60) -OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT - - -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=512 - - -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) -EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) -CONSOLE_ENABLE ?= yes # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend -# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -NKRO_ENABLE ?= no # USB Nkey Rollover -BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default -MIDI_ENABLE ?= no # MIDI controls -UNICODE_ENABLE ?= no # Unicode -BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID -AUDIO_ENABLE ?= no # Audio output on port C6 diff --git a/keyboards/weebkeeb/weebkeeb.c b/keyboards/weebkeeb/weebkeeb.c deleted file mode 100644 index 483fc9440e..0000000000 --- a/keyboards/weebkeeb/weebkeeb.c +++ /dev/null @@ -1,28 +0,0 @@ -#include "weebkeeb.h" - -void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up - - matrix_init_user(); -} - -void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) - - matrix_scan_user(); -} - -bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware - - return process_record_user(keycode, record); -} - -void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here - - led_set_user(usb_led); -} diff --git a/keyboards/weebkeeb/weebkeeb.h b/keyboards/weebkeeb/weebkeeb.h deleted file mode 100644 index 7bca2c2014..0000000000 --- a/keyboards/weebkeeb/weebkeeb.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef WEEBKEEB_H -#define WEEBKEEB_H - -#include "quantum.h" - -// This a shortcut to help you visually see your layout. -// The following is an example using the Planck MIT layout -// The first section contains all of the arguements -// The second converts the arguments into a two-dimensional array -#define KEYMAP( \ - k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ - k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \ - k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \ - k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \ -) \ -{ \ - { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \ - { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \ - { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \ - { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b } \ -} - -#endif From 0f71c81df833a282250ecc4e66034320e40b208e Mon Sep 17 00:00:00 2001 From: climbalima Date: Sat, 3 Dec 2016 17:37:41 -0500 Subject: [PATCH 184/727] having trouble with conflicts --- keyboards/maxipad/config.h | 15 --------------- keyboards/maxipad/readme.md | 2 -- keyboards/maxipad/rules.mk | 3 --- 3 files changed, 20 deletions(-) diff --git a/keyboards/maxipad/config.h b/keyboards/maxipad/config.h index 4377a892e9..d7a5ef5646 100644 --- a/keyboards/maxipad/config.h +++ b/keyboards/maxipad/config.h @@ -32,20 +32,6 @@ along with this program. If not, see . #define MATRIX_ROWS 5 #define MATRIX_COLS 6 -<<<<<<< HEAD -// Planck PCB default pin-out -// Change this to how you wired your keyboard -// COLS: Left to right, ROWS: Top to bottom -#ifdef USE_PRO_MICRO - #define MATRIX_ROW_PINS { B6, B2, B3, B1, F7 } - #define MATRIX_COL_PINS { F4, C6, D7, F5, B4, B5 } - #define UNUSED_PINS - #else - #define MATRIX_ROW_PINS { B6, F7, B2, B3, B1 } - #define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 } - #define UNUSED_PINS - #endif -======= /* * Keyboard Matrix Assignments * @@ -65,7 +51,6 @@ along with this program. If not, see . //#define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 } //#define UNUSED_PINS ->>>>>>> 102a830bbdb302eb0951ec7910ab7c9feae272d1 /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW diff --git a/keyboards/maxipad/readme.md b/keyboards/maxipad/readme.md index 58ed5d718f..861ea2b078 100644 --- a/keyboards/maxipad/readme.md +++ b/keyboards/maxipad/readme.md @@ -1,6 +1,4 @@ -<<<<<<< HEAD Maxipad keyboard firmware -====================== ## Quantum MK Firmware diff --git a/keyboards/maxipad/rules.mk b/keyboards/maxipad/rules.mk index 49bb5f0022..a5c7391523 100644 --- a/keyboards/maxipad/rules.mk +++ b/keyboards/maxipad/rules.mk @@ -59,7 +59,6 @@ EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) CONSOLE_ENABLE ?= yes # Console for debug(+400) COMMAND_ENABLE ?= yes # Commands for debug and configuration # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -<<<<<<< HEAD # SLEEP_LED_ENABLE ?= yes # Breathing sleep LED during USB suspend # NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work # BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality @@ -67,7 +66,6 @@ COMMAND_ENABLE ?= yes # Commands for debug and configuration # UNICODE_ENABLE ?= YES # Unicode # BLUETOOTH_ENABLE ?= yes # Enable Bluetooth with the Adafruit EZ-Key HID USE_PRO_MICRO ?= yes -======= SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend # if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work NKRO_ENABLE ?= no # USB Nkey Rollover @@ -76,4 +74,3 @@ MIDI_ENABLE ?= no # MIDI controls UNICODE_ENABLE ?= no # Unicode BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID AUDIO_ENABLE ?= no # Audio output on port C6 ->>>>>>> 102a830bbdb302eb0951ec7910ab7c9feae272d1 From 75b18773bd9368ad53d7072d73a6280e053123a3 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sun, 4 Dec 2016 14:51:27 +0700 Subject: [PATCH 185/727] fix RGB LED order --- keyboards/handwired/promethium/promethium.h | 124 ++++++++++---------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h index 8f2a8c3be2..662eeab990 100644 --- a/keyboards/handwired/promethium/promethium.h +++ b/keyboards/handwired/promethium/promethium.h @@ -23,77 +23,77 @@ } enum led_sequence { - LED_IND_EMOJI, - LED_IND_NUM, - LED_IND_FUNC, - - LED_IND_BATTERY, - LED_IND_USB, LED_IND_BLUETOOTH, + LED_IND_USB, + LED_IND_BATTERY, - LED_TAB, - LED_ESC, - LED_LSFT, - LED_LCTL, + LED_IND_FUNC, + LED_IND_NUM, + LED_IND_EMOJI, - LED_LGUI, - LED_Z, - LED_A, - LED_Q, - - LED_W, - LED_S, - LED_X, - LED_LALT, - - LED_PUNC, - LED_C, - LED_D, - LED_E, - - LED_R, - LED_F, - LED_V, - LED_NUM, - - LED_LSPC, - LED_B, - LED_G, - LED_T, - - LED_TRACKPOINT1, - LED_TRACKPOINT2, - LED_TRACKPOINT3, - - LED_RSPC, - LED_N, - LED_HH, - LED_Y, - - LED_U, - LED_J, - LED_M, - LED_FUNC, - - LED_EMOJI, - LED_COMM, - LED_K, - LED_I, - - LED_O, - LED_L, - LED_DOT, - LED_RALT, + LED_BKSP, + LED_ENT, + LED_RSFT, + LED_RCTL, LED_RGUI, LED_SLSH, LED_SCLN, LED_P, - LED_BKSP, - LED_ENT, - LED_RSFT, - LED_RCTL + LED_O, + LED_L, + LED_DOT, + LED_RALT, + + LED_EMOJI, + LED_COMM, + LED_K, + LED_I, + + LED_U, + LED_J, + LED_M, + LED_FUNC, + + LED_RSPC, + LED_N, + LED_HH, + LED_Y, + + LED_TRACKPOINT3, + LED_TRACKPOINT2, + LED_TRACKPOINT1, + + LED_LSPC, + LED_B, + LED_G, + LED_T, + + LED_R, + LED_F, + LED_V, + LED_NUM, + + LED_PUNC, + LED_C, + LED_D, + LED_E, + + LED_W, + LED_S, + LED_X, + LED_LALT, + + LED_LGUI, + LED_Z, + LED_A, + LED_Q, + + LED_TAB, + LED_ESC, + LED_LSFT, + LED_LCTL, }; #endif From a8e5f6180585f46684d713976ad05d4d81b11ab1 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sun, 4 Dec 2016 23:55:06 +0700 Subject: [PATCH 186/727] fix emoji LED indicators. --- .../promethium/keymaps/priyadi/keymap.c | 46 +++++++++++-------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c index b2da2f97b7..3d34e98229 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c +++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c @@ -282,25 +282,25 @@ void led_layer_func(void) { rgbsps_set(LED_K, 15, 0, 15); rgbsps_set(LED_L, 15, 0, 15); - rgbsps_set(LED_U, 15, 0, 10); - rgbsps_set(LED_O, 15, 0, 10); - rgbsps_set(LED_COMM, 15, 0, 10); - rgbsps_set(LED_DOT, 15, 0, 10); - rgbsps_set(LED_SCLN, 15, 0, 10); - rgbsps_set(LED_P, 15, 0, 10); + rgbsps_set(LED_U, 15, 0, 0); + rgbsps_set(LED_O, 15, 0, 0); + rgbsps_set(LED_COMM, 15, 0, 0); + rgbsps_set(LED_DOT, 15, 0, 0); + rgbsps_set(LED_SCLN, 15, 0, 0); + rgbsps_set(LED_P, 15, 0, 0); - rgbsps_set(LED_Q, 10, 0, 15); - rgbsps_set(LED_W, 10, 0, 15); - rgbsps_set(LED_E, 10, 0, 15); - rgbsps_set(LED_R, 10, 0, 15); - rgbsps_set(LED_A, 10, 0, 15); - rgbsps_set(LED_S, 10, 0, 15); - rgbsps_set(LED_D, 10, 0, 15); - rgbsps_set(LED_F, 10, 0, 15); - rgbsps_set(LED_Z, 10, 0, 15); - rgbsps_set(LED_X, 10, 0, 15); - rgbsps_set(LED_C, 10, 0, 15); - rgbsps_set(LED_V, 10, 0, 15); + rgbsps_set(LED_Q, 0, 15, 0); + rgbsps_set(LED_W, 0, 15, 0); + rgbsps_set(LED_E, 0, 15, 0); + rgbsps_set(LED_R, 0, 15, 0); + rgbsps_set(LED_A, 0, 15, 0); + rgbsps_set(LED_S, 0, 15, 0); + rgbsps_set(LED_D, 0, 15, 0); + rgbsps_set(LED_F, 0, 15, 0); + rgbsps_set(LED_Z, 0, 15, 0); + rgbsps_set(LED_X, 0, 15, 0); + rgbsps_set(LED_C, 0, 15, 0); + rgbsps_set(LED_V, 0, 15, 0); rgbsps_send(); } @@ -361,7 +361,15 @@ void led_layer_num(void) { } void led_layer_emoji(void) { - rgbsps_setall(15, 15, 0); + for(uint8_t i = 0; i < COUNT(LED_ALNUM); i++) { + rgbsps_set(pgm_read_byte(&LED_ALNUM[i]), 15, 15, 0); + } + for(uint8_t i = 0; i < COUNT(LED_MODS); i++) { + rgbsps_set(pgm_read_byte(&LED_MODS[i]), 15, 15, 0); + } + for(uint8_t i = 0; i < COUNT(LED_FN); i++) { + rgbsps_set(pgm_read_byte(&LED_FN[i]), 15, 15, 0); + } rgbsps_set(LED_IND_FUNC, 0, 0, 0); rgbsps_set(LED_IND_NUM, 0, 0, 0); From 6ef3060b4292392be1455c26d260e819f7d12ef0 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Mon, 5 Dec 2016 01:07:12 +0700 Subject: [PATCH 187/727] Implemented weak ps2_mouse_init_user() There are a lot of PS/2 commands, some are vendor/device specific, so we provide a weak ps2_mouse_init_user() to be implemented in each keyboard that need it. --- tmk_core/protocol/ps2_mouse.c | 54 +++++------------------------------ tmk_core/protocol/ps2_mouse.h | 49 +++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 47 deletions(-) diff --git a/tmk_core/protocol/ps2_mouse.c b/tmk_core/protocol/ps2_mouse.c index af971dd497..e3c6974440 100644 --- a/tmk_core/protocol/ps2_mouse.c +++ b/tmk_core/protocol/ps2_mouse.c @@ -28,53 +28,7 @@ along with this program. If not, see . /* ============================= MACROS ============================ */ -#define PS2_MOUSE_SEND(command, message) \ -do { \ - uint8_t rcv = ps2_host_send(command); \ - if (debug_mouse) { \ - print((message)); \ - xprintf(" command: %X, result: %X, error: %X \n", command, rcv, ps2_error); \ - } \ -} while(0) - -#define PS2_MOUSE_SEND_SAFE(command, message) \ -do { \ - if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ - ps2_mouse_disable_data_reporting(); \ - } \ - PS2_MOUSE_SEND(command, message); \ - if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ - ps2_mouse_enable_data_reporting(); \ - } \ -} while(0) - -#define PS2_MOUSE_SET_SAFE(command, value, message) \ -do { \ - if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ - ps2_mouse_disable_data_reporting(); \ - } \ - PS2_MOUSE_SEND(command, message); \ - PS2_MOUSE_SEND(value, "Sending value"); \ - if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ - ps2_mouse_enable_data_reporting(); \ - } \ -} while(0) - -#define PS2_MOUSE_RECEIVE(message) \ -do { \ - uint8_t rcv = ps2_host_recv_response(); \ - if (debug_mouse) { \ - print((message)); \ - xprintf(" result: %X, error: %X \n", rcv, ps2_error); \ - } \ -} while(0) - -static enum ps2_mouse_mode_e { - PS2_MOUSE_STREAM_MODE, - PS2_MOUSE_REMOTE_MODE, -} ps2_mouse_mode = PS2_MOUSE_STREAM_MODE; - -static report_mouse_t mouse_report = {}; +static report_mouse_t mouse_report = {};./ static inline void ps2_mouse_print_report(report_mouse_t *mouse_report); static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report); @@ -108,6 +62,12 @@ void ps2_mouse_init(void) { #ifdef PS2_MOUSE_USE_2_1_SCALING ps2_mouse_set_scaling_2_1(); #endif + + ps2_mouse_init_user(); +} + +__attribute__((weak)) +void ps2_mouse_init_user(void) { } void ps2_mouse_task(void) { diff --git a/tmk_core/protocol/ps2_mouse.h b/tmk_core/protocol/ps2_mouse.h index e11c705fc6..3c93a46342 100644 --- a/tmk_core/protocol/ps2_mouse.h +++ b/tmk_core/protocol/ps2_mouse.h @@ -19,6 +19,53 @@ along with this program. If not, see . #define PS2_MOUSE_H #include +#include "debug.h" + +#define PS2_MOUSE_SEND(command, message) \ +do { \ + uint8_t rcv = ps2_host_send(command); \ + if (debug_mouse) { \ + print((message)); \ + xprintf(" command: %X, result: %X, error: %X \n", command, rcv, ps2_error); \ + } \ +} while(0) + +#define PS2_MOUSE_SEND_SAFE(command, message) \ +do { \ + if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ + ps2_mouse_disable_data_reporting(); \ + } \ + PS2_MOUSE_SEND(command, message); \ + if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ + ps2_mouse_enable_data_reporting(); \ + } \ +} while(0) + +#define PS2_MOUSE_SET_SAFE(command, value, message) \ +do { \ + if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ + ps2_mouse_disable_data_reporting(); \ + } \ + PS2_MOUSE_SEND(command, message); \ + PS2_MOUSE_SEND(value, "Sending value"); \ + if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ + ps2_mouse_enable_data_reporting(); \ + } \ +} while(0) + +#define PS2_MOUSE_RECEIVE(message) \ +do { \ + uint8_t rcv = ps2_host_recv_response(); \ + if (debug_mouse) { \ + print((message)); \ + xprintf(" result: %X, error: %X \n", rcv, ps2_error); \ + } \ +} while(0) + +static enum ps2_mouse_mode_e { + PS2_MOUSE_STREAM_MODE, + PS2_MOUSE_REMOTE_MODE, +} ps2_mouse_mode = PS2_MOUSE_STREAM_MODE; /* * Data format: @@ -107,6 +154,8 @@ typedef enum ps2_mouse_sample_rate_e { void ps2_mouse_init(void); +void ps2_mouse_init_user(void); + void ps2_mouse_task(void); void ps2_mouse_disable_data_reporting(void); From 73073f270b55d939559e8cfd4a7d36e3510ba2f6 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Mon, 5 Dec 2016 01:15:04 +0700 Subject: [PATCH 188/727] Trackpoint initialization --- .../promethium/keymaps/priyadi/flash.sh | 1 + .../promethium/keymaps/priyadi/keymap.c | 110 +++++++++++++++++- 2 files changed, 110 insertions(+), 1 deletion(-) diff --git a/keyboards/handwired/promethium/keymaps/priyadi/flash.sh b/keyboards/handwired/promethium/keymaps/priyadi/flash.sh index fb81a54ee0..14a3b43789 100755 --- a/keyboards/handwired/promethium/keymaps/priyadi/flash.sh +++ b/keyboards/handwired/promethium/keymaps/priyadi/flash.sh @@ -1,3 +1,4 @@ #!/bin/sh +sleep 10 avrdude -p m32u4 -P /dev/ttyACM0 -c avr109 -U flash:w:../../../../../.build/handwired_promethium_priyadi.hex diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c index 3d34e98229..bf797a7491 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c +++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c @@ -11,6 +11,8 @@ #include "process_unicode.h" #include "quantum.h" #include "rgbsps.h" +#include "ps2_mouse.h" +#include "ps2.h" #define COUNT(x) (sizeof (x) / sizeof (*(x))) // #define RGBLED_NUM 5 @@ -730,4 +732,110 @@ void shutdown_user() stop_all_notes(); } -#endif \ No newline at end of file +#endif + + +void ps2_mouse_init_user() { + // set TrackPoint sensitivity + PS2_MOUSE_SEND(0xE2, "set trackpoint sensitivity: 0xE2"); + PS2_MOUSE_SEND(0x81, "set trackpoint sensitivity: 0x81"); + PS2_MOUSE_SEND(0x4A, "set trackpoint sensitivity: 0x4A"); + PS2_MOUSE_SEND(0x60, "set trackpoint sensitivity: 0x60"); + + // set TrackPoint speed + // (transfer function upper plateau speed) + PS2_MOUSE_SEND(0xE2, "set trackpoint speed: 0xE2"); + PS2_MOUSE_SEND(0x81, "set trackpoint speed: 0x81"); + PS2_MOUSE_SEND(0x60, "set trackpoint speed: 0x60"); + PS2_MOUSE_SEND(0x90, "set trackpoint speed: 0x90"); + + // set TrackPoint Negative Inertia factor + PS2_MOUSE_SEND(0xE2, "set negative inertia factor: 0xE2"); + PS2_MOUSE_SEND(0x81, "set negative inertia factor: 0x81"); + PS2_MOUSE_SEND(0x4D, "set negative inertia factor: 0x4D"); + PS2_MOUSE_SEND(0x03, "set negative inertia factor: 0x03"); + + // disable up threshold (click) + PS2_MOUSE_SEND(0xE2, "set disable up threshold: 0xE2"); + PS2_MOUSE_SEND(0x47, "set disable up threshold: 0x47"); + PS2_MOUSE_SEND(0x2C, "set disable up threshold: 0x2C"); + PS2_MOUSE_SEND(0x01, "set disable up threshold: 0x01"); + + // enable TrackPoint Press to Select (PtS) + // print("ps2_mouse_init: send 0xE2: "); + // rcv = ps2_host_send(0xE2); + // phex(rcv); phex(ps2_error); print("\n"); + // print("ps2_mouse_init: send 0x47: "); + // rcv = ps2_host_send(0x47); + // phex(rcv); phex(ps2_error); print("\n"); + // print("ps2_mouse_init: send 0x2C: "); + // rcv = ps2_host_send(0x2C); + // phex(rcv); phex(ps2_error); print("\n"); + // print("ps2_mouse_init: send 0x00: "); + // rcv = ps2_host_send(0x00); + // phex(rcv); phex(ps2_error); print("\n"); + + // set TrackPoint Press to Select threshold + // print("ps2_mouse_init: send 0xE2: "); + // rcv = ps2_host_send(0xE2); + // phex(rcv); phex(ps2_error); print("\n"); + // print("ps2_mouse_init: send 0x81: "); + // rcv = ps2_host_send(0x81); + // phex(rcv); phex(ps2_error); print("\n"); + // print("ps2_mouse_init: send 0x5C: "); + // rcv = ps2_host_send(0x5C); + // phex(rcv); phex(ps2_error); print("\n"); + // // default PtS threshold is 0x08 + // print("ps2_mouse_init: send 0x04: "); + // rcv = ps2_host_send(0x04); + // phex(rcv); phex(ps2_error); print("\n"); + + // set TrackPoint Press to Select time constant (zTc) + // print("ps2_mouse_init: send 0xE2: "); + // rcv = ps2_host_send(0xE2); + // phex(rcv); phex(ps2_error); print("\n"); + // print("ps2_mouse_init: send 0x81: "); + // rcv = ps2_host_send(0x81); + // phex(rcv); phex(ps2_error); print("\n"); + // print("ps2_mouse_init: send 0x5E: "); + // rcv = ps2_host_send(0x5E); + // phex(rcv); phex(ps2_error); print("\n"); + // // default zTc is 0x26 + // print("ps2_mouse_init: send 0x45: "); + // rcv = ps2_host_send(0x45); + // phex(rcv); phex(ps2_error); print("\n"); + + /* + // set TrackPoint Press to Select Jenks Curvature (jkcur) + print("ps2_mouse_init: send 0xE2: "); + rcv = ps2_host_send(0xE2); + phex(rcv); phex(ps2_error); print("\n"); + print("ps2_mouse_init: send 0x81: "); + rcv = ps2_host_send(0x81); + phex(rcv); phex(ps2_error); print("\n"); + print("ps2_mouse_init: send 0x5D: "); + rcv = ps2_host_send(0x5D); + phex(rcv); phex(ps2_error); print("\n"); + // default jkcur is 0x87 + print("ps2_mouse_init: send 0x87: "); + rcv = ps2_host_send(0x87); + phex(rcv); phex(ps2_error); print("\n"); + */ + + /* + // set TrackPoint Minimum Drag (mindrag) + print("ps2_mouse_init: send 0xE2: "); + rcv = ps2_host_send(0xE2); + phex(rcv); phex(ps2_error); print("\n"); + print("ps2_mouse_init: send 0x81: "); + rcv = ps2_host_send(0x81); + phex(rcv); phex(ps2_error); print("\n"); + print("ps2_mouse_init: send 0x59: "); + rcv = ps2_host_send(0x59); + phex(rcv); phex(ps2_error); print("\n"); + // default PtS mindrag is 0x14 + print("ps2_mouse_init: send 0x14: "); + rcv = ps2_host_send(0x14); + phex(rcv); phex(ps2_error); print("\n"); + */ +} \ No newline at end of file From d059624bfb32e268ff0972609d7eadbb212fa2d2 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Mon, 5 Dec 2016 01:07:12 +0700 Subject: [PATCH 189/727] Implemented weak ps2_mouse_init_user() There are a lot of PS/2 commands, some are vendor/device specific, so we provide a weak ps2_mouse_init_user() to be implemented in each keyboard that need it. --- tmk_core/protocol/ps2_mouse.c | 54 +++++------------------------------ tmk_core/protocol/ps2_mouse.h | 49 +++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 47 deletions(-) diff --git a/tmk_core/protocol/ps2_mouse.c b/tmk_core/protocol/ps2_mouse.c index af971dd497..e3c6974440 100644 --- a/tmk_core/protocol/ps2_mouse.c +++ b/tmk_core/protocol/ps2_mouse.c @@ -28,53 +28,7 @@ along with this program. If not, see . /* ============================= MACROS ============================ */ -#define PS2_MOUSE_SEND(command, message) \ -do { \ - uint8_t rcv = ps2_host_send(command); \ - if (debug_mouse) { \ - print((message)); \ - xprintf(" command: %X, result: %X, error: %X \n", command, rcv, ps2_error); \ - } \ -} while(0) - -#define PS2_MOUSE_SEND_SAFE(command, message) \ -do { \ - if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ - ps2_mouse_disable_data_reporting(); \ - } \ - PS2_MOUSE_SEND(command, message); \ - if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ - ps2_mouse_enable_data_reporting(); \ - } \ -} while(0) - -#define PS2_MOUSE_SET_SAFE(command, value, message) \ -do { \ - if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ - ps2_mouse_disable_data_reporting(); \ - } \ - PS2_MOUSE_SEND(command, message); \ - PS2_MOUSE_SEND(value, "Sending value"); \ - if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ - ps2_mouse_enable_data_reporting(); \ - } \ -} while(0) - -#define PS2_MOUSE_RECEIVE(message) \ -do { \ - uint8_t rcv = ps2_host_recv_response(); \ - if (debug_mouse) { \ - print((message)); \ - xprintf(" result: %X, error: %X \n", rcv, ps2_error); \ - } \ -} while(0) - -static enum ps2_mouse_mode_e { - PS2_MOUSE_STREAM_MODE, - PS2_MOUSE_REMOTE_MODE, -} ps2_mouse_mode = PS2_MOUSE_STREAM_MODE; - -static report_mouse_t mouse_report = {}; +static report_mouse_t mouse_report = {};./ static inline void ps2_mouse_print_report(report_mouse_t *mouse_report); static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report); @@ -108,6 +62,12 @@ void ps2_mouse_init(void) { #ifdef PS2_MOUSE_USE_2_1_SCALING ps2_mouse_set_scaling_2_1(); #endif + + ps2_mouse_init_user(); +} + +__attribute__((weak)) +void ps2_mouse_init_user(void) { } void ps2_mouse_task(void) { diff --git a/tmk_core/protocol/ps2_mouse.h b/tmk_core/protocol/ps2_mouse.h index e11c705fc6..3c93a46342 100644 --- a/tmk_core/protocol/ps2_mouse.h +++ b/tmk_core/protocol/ps2_mouse.h @@ -19,6 +19,53 @@ along with this program. If not, see . #define PS2_MOUSE_H #include +#include "debug.h" + +#define PS2_MOUSE_SEND(command, message) \ +do { \ + uint8_t rcv = ps2_host_send(command); \ + if (debug_mouse) { \ + print((message)); \ + xprintf(" command: %X, result: %X, error: %X \n", command, rcv, ps2_error); \ + } \ +} while(0) + +#define PS2_MOUSE_SEND_SAFE(command, message) \ +do { \ + if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ + ps2_mouse_disable_data_reporting(); \ + } \ + PS2_MOUSE_SEND(command, message); \ + if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ + ps2_mouse_enable_data_reporting(); \ + } \ +} while(0) + +#define PS2_MOUSE_SET_SAFE(command, value, message) \ +do { \ + if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ + ps2_mouse_disable_data_reporting(); \ + } \ + PS2_MOUSE_SEND(command, message); \ + PS2_MOUSE_SEND(value, "Sending value"); \ + if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \ + ps2_mouse_enable_data_reporting(); \ + } \ +} while(0) + +#define PS2_MOUSE_RECEIVE(message) \ +do { \ + uint8_t rcv = ps2_host_recv_response(); \ + if (debug_mouse) { \ + print((message)); \ + xprintf(" result: %X, error: %X \n", rcv, ps2_error); \ + } \ +} while(0) + +static enum ps2_mouse_mode_e { + PS2_MOUSE_STREAM_MODE, + PS2_MOUSE_REMOTE_MODE, +} ps2_mouse_mode = PS2_MOUSE_STREAM_MODE; /* * Data format: @@ -107,6 +154,8 @@ typedef enum ps2_mouse_sample_rate_e { void ps2_mouse_init(void); +void ps2_mouse_init_user(void); + void ps2_mouse_task(void); void ps2_mouse_disable_data_reporting(void); From 07d29b7d29ce13a22f50270ab54d39f80103cc44 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Mon, 5 Dec 2016 01:22:40 +0700 Subject: [PATCH 190/727] syntax error fix --- tmk_core/protocol/ps2_mouse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/protocol/ps2_mouse.c b/tmk_core/protocol/ps2_mouse.c index e3c6974440..d9ccbecb43 100644 --- a/tmk_core/protocol/ps2_mouse.c +++ b/tmk_core/protocol/ps2_mouse.c @@ -28,7 +28,7 @@ along with this program. If not, see . /* ============================= MACROS ============================ */ -static report_mouse_t mouse_report = {};./ +static report_mouse_t mouse_report = {}; static inline void ps2_mouse_print_report(report_mouse_t *mouse_report); static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report); From 236c0408596e525c949abc5a3b3ef8b853c28504 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Mon, 5 Dec 2016 01:22:40 +0700 Subject: [PATCH 191/727] syntax error fix --- tmk_core/protocol/ps2_mouse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/protocol/ps2_mouse.c b/tmk_core/protocol/ps2_mouse.c index e3c6974440..d9ccbecb43 100644 --- a/tmk_core/protocol/ps2_mouse.c +++ b/tmk_core/protocol/ps2_mouse.c @@ -28,7 +28,7 @@ along with this program. If not, see . /* ============================= MACROS ============================ */ -static report_mouse_t mouse_report = {};./ +static report_mouse_t mouse_report = {}; static inline void ps2_mouse_print_report(report_mouse_t *mouse_report); static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report); From c7d11fd001cac4f0baeecdda79b7743e3695c77f Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Mon, 5 Dec 2016 02:15:38 +0700 Subject: [PATCH 192/727] Remove unnecessary build options --- keyboards/handwired/promethium/keymaps/priyadi/Makefile | 7 ++++--- keyboards/handwired/promethium/rules.mk | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/keyboards/handwired/promethium/keymaps/priyadi/Makefile b/keyboards/handwired/promethium/keymaps/priyadi/Makefile index 2f6f27a732..46fdfa0118 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/Makefile +++ b/keyboards/handwired/promethium/keymaps/priyadi/Makefile @@ -4,16 +4,17 @@ # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically # -BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration +COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode +UNICODEMAP_ENABLE = yes BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. PS2_MOUSE_ENABLE = yes diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk index 0842780cce..891f523c22 100644 --- a/keyboards/handwired/promethium/rules.mk +++ b/keyboards/handwired/promethium/rules.mk @@ -61,7 +61,7 @@ BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality MIDI_ENABLE ?= no # MIDI controls AUDIO_ENABLE ?= no # Audio output on port C6 UNICODE_ENABLE ?= no # Unicode -UNICODEMAP_ENABLE = yes +UNICODEMAP_ENABLE ?= yes BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. PS2_MOUSE_ENABLE ?= yes From 7e4341e437c2f0d8d4257b616b1d8d30a8cab4ed Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 4 Dec 2016 23:01:07 -0500 Subject: [PATCH 193/727] Update rules.mk --- keyboards/planck/rules.mk | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/keyboards/planck/rules.mk b/keyboards/planck/rules.mk index 4874d92b9f..fb24e82354 100644 --- a/keyboards/planck/rules.mk +++ b/keyboards/planck/rules.mk @@ -62,8 +62,7 @@ AUDIO_ENABLE ?= no # Audio output on port C6 UNICODE_ENABLE ?= no # Unicode BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. -API_SYSEX_ENABLE = no -RAW_ENABLE = yes +API_SYSEX_ENABLE = yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend \ No newline at end of file +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend From b66845ca7f737fe793268d512e0b45d59b5677f9 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 4 Dec 2016 23:10:44 -0500 Subject: [PATCH 194/727] Update rules.mk From 1eec2b7277ed24a63c42ea6b53a4db530c35dbbd Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 4 Dec 2016 23:11:22 -0500 Subject: [PATCH 195/727] Update planck.c --- keyboards/planck/planck.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/keyboards/planck/planck.c b/keyboards/planck/planck.c index 0d37b66223..3980b02f50 100644 --- a/keyboards/planck/planck.c +++ b/keyboards/planck/planck.c @@ -1,8 +1,5 @@ #include "planck.h" -#include "raw_hid.h" -#include "keymap.h" - #ifdef ONEHAND_ENABLE __attribute__ ((weak)) const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = { @@ -20,14 +17,3 @@ void matrix_init_kb(void) { matrix_init_user(); } - -#ifdef RAW_ENABLE - -void raw_hid_receive( uint8_t *data, uint8_t length ) -{ - // Basic test of Raw HID - // Echo back data received - raw_hid_send( data, length ); -} - -#endif From a05b6a72d9da9fa6056046c9f600957f43b3c8df Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Mon, 5 Dec 2016 20:34:24 -0500 Subject: [PATCH 196/727] Adjusts config for better mousekey support --- keyboards/ergodox/config.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/keyboards/ergodox/config.h b/keyboards/ergodox/config.h index edc60caae1..994a8c6433 100644 --- a/keyboards/ergodox/config.h +++ b/keyboards/ergodox/config.h @@ -1,10 +1,11 @@ #ifndef KEYBOARDS_ERGODOX_CONFIG_H_ #define KEYBOARDS_ERGODOX_CONFIG_H_ -#define MOUSEKEY_DELAY 100 #define MOUSEKEY_INTERVAL 20 -#define MOUSEKEY_MAX_SPEED 3 -#define MOUSEKEY_TIME_TO_MAX 10 +#define MOUSEKEY_DELAY 0 +#define MOUSEKEY_TIME_TO_MAX 5 +#define MOUSEKEY_MAX_SPEED 2 +#define MOUSEKEY_WHEEL_DELAY 0 #define TAPPING_TOGGLE 1 From 82922a4937dc9683a2364f750a67b80b63767ab5 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Mon, 5 Dec 2016 20:35:03 -0500 Subject: [PATCH 197/727] A new default layout that supports Shine --- keyboards/ergodox/keymaps/default/keymap.c | 84 +++++++++++++------ .../keymaps/erez_experimental/keymap.c | 2 +- 2 files changed, 59 insertions(+), 27 deletions(-) diff --git a/keyboards/ergodox/keymaps/default/keymap.c b/keyboards/ergodox/keymaps/default/keymap.c index 2f399bd181..4eff280850 100644 --- a/keyboards/ergodox/keymaps/default/keymap.c +++ b/keyboards/ergodox/keymaps/default/keymap.c @@ -7,7 +7,12 @@ #define SYMB 1 // symbols #define MDIA 2 // media keys -#define EPRM M(1) // Macro 1: Reset EEPROM +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, // can always be here + EPRM, + VRSN, + RGB_SLD +}; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer @@ -17,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * | BkSp | A | S | D | F | G |------| |------| H |J/Alt | K | L |; / L2|' / Cmd | * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' @@ -44,56 +49,56 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_HOME, KC_SPC,KC_BSPC,KC_END, // right hand - KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), - MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, ALT_T(KC_J), KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_TAB, KC_ENT ), /* Keymap 1: Symbol Layer * - * ,--------------------------------------------------. ,--------------------------------------------------. - * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | EPRM | | | | | | | . | 0 | = | | - * `----------------------------------' `----------------------------------' + * ,---------------------------------------------------. ,--------------------------------------------------. + * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| + * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | + * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | + * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | EPRM | | | | | | | . | 0 | = | | + * `-----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | | | | | | + * |Animat| | |Toggle|Solid | * ,------|------|------| |------+------+------. - * | | | | | | | | - * | | |------| |------| | | + * |Bright|Bright| | | |Hue- |Hue+ | + * |ness- |ness+ |------| |------| | | * | | | | | | | | * `--------------------' `--------------------' */ // SYMBOLS [SYMB] = KEYMAP( // left hand - M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS, KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV, KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS, EPRM,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS, + RGB_MOD,KC_TRNS, KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS, + RGB_VAD,RGB_VAI,KC_TRNS, // right hand KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS, - KC_TRNS, KC_TRNS, + RGB_TOG, RGB_SLD, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, RGB_HUD, RGB_HUI ), /* Keymap 2: Media and mouse keys * @@ -160,6 +165,33 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // dynamically generate these. + case EPRM: + if (record->event.pressed) { + eeconfig_init(); + } + return false; + break; + case VRSN: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + return false; + break; + case RGB_SLD: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_mode(1); + #endif + } + return false; + break; + } + return true; +} + // Runs just one time when the keyboard initializes. void matrix_init_user(void) { diff --git a/keyboards/ergodox/keymaps/erez_experimental/keymap.c b/keyboards/ergodox/keymaps/erez_experimental/keymap.c index 2963c40e31..13b8240ce8 100644 --- a/keyboards/ergodox/keymaps/erez_experimental/keymap.c +++ b/keyboards/ergodox/keymaps/erez_experimental/keymap.c @@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-------------. ,-------------. * | | | |TOG | * ,------|------|------| |------+------+------. - * |VAI |VAD |HUI | |SAI |TOG |MOD | + * |VAI |VAD |HUI | |SAI | |MOD | * | | |------| |------| | | * | | |HUD | |SAD | | | * `--------------------' `--------------------' From 985a091a739c99736d5b17de5161831488dbc219 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 6 Dec 2016 09:49:05 -0500 Subject: [PATCH 198/727] Update readme.md --- readme.md | 1562 +---------------------------------------------------- 1 file changed, 2 insertions(+), 1560 deletions(-) diff --git a/readme.md b/readme.md index b618334dc3..90584cabcb 100644 --- a/readme.md +++ b/readme.md @@ -4,7 +4,7 @@ This is a keyboard firmware based on the [tmk_keyboard firmware](http://github.com/tmk/tmk_keyboard) with some useful features for Atmel AVR controllers, and more specifically, the [OLKB product line](http://olkb.com), the [ErgoDox EZ](http://www.ergodox-ez.com) keyboard, and the [Clueboard product line](http://clueboard.co/). -## Official website +## Official website (currently under construction with the move to the wiki) For an easy-to-read version of this document and the repository, check out [http://qmk.fm](http://qmk.fm). Nicely formatted keyboard and keymap listings are also available there, along with the ability to download .hex files instead of having to setup a build environment and compile them. @@ -31,1567 +31,9 @@ The OLKB product firmwares are maintained by [Jack Humbert](https://github.com/j This is not a tiny project. While this is the main readme, there are many other files you might want to consult. Here are some points of interest: +* [**The Wiki**](https://github.com/jackhumbert/qmk_firmware/wiki) - the entirity of the readme has been moved here * The readme for your own keyboard: This is found under `keyboards//`. So for the ErgoDox EZ, it's [here](keyboards/ergodox/ez/); for the Planck, it's [here](keyboards/planck/) and so on. * The list of possible keycodes you can use in your keymap is actually spread out in a few different places: * [doc/keycode.txt](doc/keycode.txt) - an explanation of those same keycodes. * [quantum/keymap.h](quantum/keymap.h) - this is where the QMK-specific aliases are all set up. Things like the Hyper and Meh key, the Leader key, and all of the other QMK innovations. These are also explained and documented below, but `keymap.h` is where they're actually defined. * The [TMK documentation](doc/TMK_README.md). QMK is based on TMK, and this explains how it works internally. - -# Getting started - -Before you are able to compile, you'll need to install an environment for AVR development. You'll find the instructions for any OS below. If you find another/better way to set things up from scratch, please consider [making a pull request](https://github.com/jackhumbert/qmk_firmware/pulls) with your changes! - -## Build Environment Setup - -### Windows 10 - -Due to some issues with the "Windows (Vista and later)" instructions below, we now recommend following these instructions if you use Windows, which will allow you to use the Windows Subsystem for Linux to compile the firmware. If you are not using Windows 10 with the Anniversary Update installed (which came out in July 2016), you will need to use one of the other methods, such as Docker, Vagrant, or the instructions for Vista and later. - -If you use this method, you will need to use a standalone tool to flash the firmware to the keyboard after you compile it. We recommend the official [QMK Firmware Flasher](https://github.com/jackhumbert/qmk_firmware_flasher/releases). This is because the Windows 10 Subsystem for Linux lacks [libUSB support](https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/13355724-unable-to-access-usb-devices-from-bash), so it can't access the keyboard's microcontroller. Please add your vote for Microsoft to fix this issue using the link! - -Here are the steps - -1. Install the Windows 10 subsystem for Linux, following [these instructions](http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/). -2. If you have cloned the repository using git before August 20, 2016, clean up the line endings from wherever you currently access git: - 1. Make sure that you have no changes you haven't committed by running `git status`. ANY UNCOMMITTED CHANGES WILL BE PERMANENTLY LOST. - 2. Run `git rm --cached -r .` - 3. Run `git reset --hard` -3. Open "Bash On Ubuntu On Windows" from the start menu -4. With the bash window open, navigate to your copy of the [qmk_firmware repository](https://github.com/jackhumbert/qmk_firmware) using the `cd` command. The harddisks can be accessed from `/mnt/`. For example, your main hard drive (C:) can be accessed by executiing the command `cd /mnt/c`. If your username is John and the qmk_firmware folder is in your Downloads folder, you can move to it with the command `cd /mnt/c/Users/John/Downloads/qmk_firmware`. You can use the Tab key as you go to help you autocomplete the folder names. -5. Run `sudo util/install_dependencies.sh`. -6. After a while the installation will finish, and you are good to go - -**Note** From time to time, the dependencies might change, so just run `install_dependencies.sh` again if things are not working. - -**Warning:** If you edit Makefiles or shell scripts, make sure you are using an editor that saves the files with Unix line endings. Otherwise the compilation might not work. - - -### Windows (Vista and later) -1. If you have ever installed WinAVR, uninstall it. -2. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**. -3. If you are going to flash Infinity based keyboards you will need to install dfu-util, refer to the instructions by [Input Club](https://github.com/kiibohd/controller/wiki/Loading-DFU-Firmware). -4. Install [MinGW](https://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download). During installation, uncheck the option to install a graphical user interface. **DO NOT change the default installation folder.** The scripts depend on the default location. -5. Clone this repository. [This link will download it as a zip file, which you'll need to extract.](https://github.com/jackhumbert/qmk_firmware/archive/master.zip) Open the extracted folder in Windows Explorer. -6. Open the `\util` folder. -7. Double-click on the `1-setup-path-win` batch script to run it. You'll need to accept a User Account Control prompt. Press the spacebar to dismiss the success message in the command prompt that pops up. -8. Right-click on the `2-setup-environment-win` batch script, select "Run as administrator", and accept the User Account Control prompt. This part may take a couple of minutes, and you'll need to approve a driver installation, but once it finishes, your environment is complete! - -If you have trouble and want to ask for help, it is useful to generate a *Win_Check_Output.txt* file by running `Win_Check.bat` in the `\util` folder. - -### Mac -If you're using [homebrew,](http://brew.sh/) you can use the following commands: - - brew tap osx-cross/avr - brew install avr-libc - brew install dfu-programmer - -This is the recommended method. If you don't have homebrew, [install it!](http://brew.sh/) It's very much worth it for anyone who works in the command line. - -You can also try these instructions: - -1. Install Xcode from the App Store. -2. Install the Command Line Tools from `Xcode->Preferences->Downloads`. -3. Install [DFU-Programmer][dfu-prog]. - -If you are going to flash Infinity based keyboards you will also need dfu-util - - brew install dfu-util - -### Linux - -To ensure you are always up to date, you can just run `sudo util/install_dependencies.sh`. That should always install all the dependencies needed. - -You can also install things manually, but this documentation might not be always up to date with all requirements. - -The current requirements are the following, but not all might be needed depending on what you do. Also note that some systems might not have all the dependencies available as packages, or they might be named differently. - -``` -build-essential -gcc -unzip -wget -zip -gcc-avr -binutils-avr -avr-libc -dfu-programmer -dfu-util -gcc-arm-none-eabi -binutils-arm-none-eabi -libnewlib-arm-none-eabi -git -``` - -Install the dependencies with your favorite package manager. - -Debian/Ubuntu example: - - sudo apt-get update - sudo apt-get install gcc unzip wget zip gcc-avr binutils-avr avr-libc dfu-programmer dfu-util gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi - -### Docker - -If this is a bit complex for you, Docker might be the turn-key solution you need. After installing [Docker](https://www.docker.com/products/docker), run the following command at the root of the QMK folder to build a keyboard/keymap: - -```bash -# You'll run this every time you want to build a keymap -# modify the keymap and keyboard assigment to compile what you want -# defaults are ergodox/default - -docker run -e keymap=gwen -e keyboard=ergodox --rm -v $('pwd'):/qmk:rw edasque/qmk_firmware - -# On windows docker seems to have issue with VOLUME tag in Dockerfile, and $('pwd') won't print a windows compliant path, use full path instead like this -docker run -e keymap=default -e keyboard=ergobop --rm -v D:/Users/Sacapuces/Documents/Repositories/qmk:/qmk:rw edasque/qmk_firmware - -``` - -This will compile the targetted keyboard/keymap and leave it in your QMK directory for you to flash. - -### Vagrant -If you have any problems building the firmware, you can try using a tool called Vagrant. It will set up a virtual computer with a known configuration that's ready-to-go for firmware building. OLKB does NOT host the files for this virtual computer. Details on how to set up Vagrant are in the [VAGRANT_GUIDE file](doc/VAGRANT_GUIDE.md). - -## Verify Your Installation -1. If you haven't already, obtain this repository ([https://github.com/jackhumbert/qmk_firmware](https://github.com/jackhumbert/qmk_firmware)). You can either download it as a zip file and extract it, or clone it using the command line tool git or the Github Desktop application. -2. Open up a terminal or command prompt and navigate to the `qmk_firmware` folder using the `cd` command. The command prompt will typically open to your home directory. If, for example, you cloned the repository to your Documents folder, then you would type `cd Documents/qmk_firmware`. If you extracted the file from a zip, then it may be named `qmk_firmware-master` instead. -3. To confirm that you're in the correct location, you can display the contents of your current folder using the `dir` command on Windows, or the `ls` command on Linux or Mac. You should see several files, including `readme.md` and a `quantum` folder. From here, you need to navigate to the appropriate folder under `keyboards/`. For example, if you're building for a Planck, run `cd keyboards/planck`. -4. Once you're in the correct keyboard-specific folder, run the `make` command. This should output a lot of information about the build process. More information about the `make` command can be found below. - -# Customizing your keymap - -In every keymap folder, the following files are recommended: - -* `config.h` - the options to configure your keymap -* `keymap.c` - all of your keymap code, required -* `Makefile` - the features of QMK that are enabled, required to run `make` in your keymap folder -* `readme.md` - a description of your keymap, how others might use it, and explanations of features - -## The `make` command - -The `make` command is how you compile the firmware into a .hex file, which can be loaded by a dfu programmer (like dfu-progammer via `make dfu`) or the [Teensy loader](https://www.pjrc.com/teensy/loader.html) (only used with Teensys). - -**NOTE:** To abort a make command press `Ctrl-c` - -The following instruction refers to these folders. - -* The `root` (`/`) folder is the qmk_firmware folder, in which are `doc`, `keyboard`, `quantum`, etc. -* The `keyboard` folder is any keyboard project's folder, like `/keyboards/planck`. -* The `keymap` folder is any keymap's folder, like `/keyboards/planck/keymaps/default`. -* The `subproject` folder is the subproject folder of a keyboard, like `/keyboards/ergodox/ez` - -### Simple instructions for building and uploading a keyboard - -**Most keyboards have more specific instructions in the keyboard specific readme.md file, so please check that first** - -If the `keymap` folder contains a file name `Makefile` - -1. Change the directory to the `keymap` folder -2. Run `make -` - -Otherwise, if there's no `Makefile` in the `keymap` folder - -1. Enter the `keyboard` folder -2. Run `make --` - -In the above commands, replace: - -* `` with the name of your keymap -* `` with the name of the subproject (revision or sub-model of your keyboard). For example, for Ergodox it can be `ez` or `infinity`, and for Planck `rev3` or `rev4`. - * If the keyboard doesn't have a subproject, or if you are happy with the default (defined in `rules.mk` file of the `keyboard` folder), you can leave it out. But remember to also remove the dash (`-`) from the command. -* `` The programmer to use. Most keyboards use `dfu`, but some use `teensy`. Infinity keyboards use `dfu-util`. Check the readme file in the keyboard folder to find out which programmer to use. - * If you don't add `----`, where: - -* `` is the name of the keyboard, for example `planck` - * Use `allkb` to compile all keyboards -* `` is the name of the subproject (revision or sub-model of the keyboard). For example, for Ergodox it can be `ez` or `infinity`, and for Planck `rev3` or `rev4`. - * If the keyboard doesn't have any subprojects, it can be left out - * To compile the default subproject, you can leave it out, or specify `defaultsp` - * Use `allsp` to compile all subprojects -* `` is the name of the keymap, for example `algernon` - * Use `allkm` to compile all keymaps -* `` will be explained in more detail below. - -**Note:** When you leave some parts of the command out, you should also remove the dash (`-`). - -As mentioned above, there are some shortcuts, when you are in a: - -* `keyboard` folder, the command will automatically fill the `` part. So you only need to type `--` -* `subproject` folder, it will fill in both `` and `` -* `keymap` folder, then `` and `` will be filled in. If you need to specify the `` use the following syntax `-` - * Note in order to support this shortcut, the keymap needs its own Makefile (see the example [here](/doc/keymap_makefile_example.mk)) -* `keymap` folder of a `subproject`, then everything except the `` will be filled in - -The `` means the following -* If no target is given, then it's the same as `all` below -* `all` compiles the keyboard and generates a `_.hex` file in whichever folder you run `make` from. These files are ignored by git, so don't worry about deleting them when committing/creating pull requests. -* `dfu`, `teensy` or `dfu-util`, compile and upload the firmware to the keyboard. If the compilation fails, then nothing will be uploaded. The programmer to use depends on the keyboard. For most keyboards it's `dfu`, but for Infinity keyboards you should use `dfu-util`, and `teensy` for standard Teensys. To find out which command you should use for your keyboard, check the keyboard specific readme. **Note** that some operating systems needs root access for these commands to work, so in that case you need to run for example `sudo make dfu`. -* `clean`, cleans the build output folders to make sure that everything is built from scratch. Run this before normal compilation if you have some unexplainable problems. - -Some other targets are supported but, but not important enough to be documented here. Check the source code of the make files for more information. - -You can also add extra options at the end of the make command line, after the target - -* `make COLOR=false` - turns off color output -* `make SILENT=true` - turns off output besides errors/warnings -* `make VERBOSE=true` - outputs all of the gcc stuff (not interesting, unless you need to debug) -* `make EXTRAFLAGS=-E` - Preprocess the code without doing any compiling (useful if you are trying to debug #define commands) - -The make command itself also has some additional options, type `make --help` for more information. The most useful is probably `-jx`, which specifies that you want to compile using more than one CPU, the `x` represents the number of CPUs that you want to use. Setting that can greatly reduce the compile times, especially if you are compiling many keyboards/keymaps. I usually set it to one less than the number of CPUs that I have, so that I have some left for doing other things while it's compiling. Note that not all operating systems and make versions supports that option. - -Here are some examples commands - -* `make allkb-allsp-allkm` builds everything (all keyboards, all subprojects, all keymaps). Running just `make` from the `root` will also run this. -* `make` from within a `keyboard` directory, is the same as `make keyboard-allsp-allkm`, which compiles all subprojects and keymaps of the keyboard. **NOTE** that this behaviour has changed. Previously it compiled just the default keymap. -* `make ergodox-infinity-algernon-clean` will clean the build output of the Ergodox Infinity keyboard. This example uses the full syntax and can be run from any folder with a `Makefile` -* `make dfu COLOR=false` from within a keymap folder, builds and uploads the keymap, but without color output. - -## The `Makefile` - -There are 5 different `make` and `Makefile` locations: - -* root (`/`) -* keyboard (`/keyboards//`) -* keymap (`/keyboards//keymaps//`) -* subproject (`/keyboards//`) -* subproject keymap (`/keyboards///keymaps/`) - -The root contains the code used to automatically figure out which keymap or keymaps to compile based on your current directory and commandline arguments. It's considered stable, and shouldn't be modified. The keyboard one will contain the MCU set-up and default settings for your keyboard, and shouldn't be modified unless you are the producer of that keyboard. The keymap Makefile can be modified by users, and is optional. It is included automatically if it exists. You can see an example [here](/doc/keymap_makefile_example.mk) - the last few lines are the most important. The settings you set here will override any defaults set in the keyboard Makefile. **The file is required if you want to run `make` in the keymap folder.** - -For keyboards and subprojects, the make files are split in two parts `Makefile` and `rules.mk`. All settings can be found in the `rules.mk` file, while the `Makefile` is just there for support and including the root `Makefile`. Keymaps contain just one `Makefile` for simplicity. - -### Makefile options - -Set the variables to `no` to disable them, and `yes` to enable them. - -`BOOTMAGIC_ENABLE` - -This allows you to hold a key and the salt key (space by default) and have access to a various EEPROM settings that persist over power loss. It's advised you keep this disabled, as the settings are often changed by accident, and produce confusing results that makes it difficult to debug. It's one of the more common problems encountered in help sessions. - -`MOUSEKEY_ENABLE` - -This gives you control over cursor movements and clicks via keycodes/custom functions. - -`EXTRAKEY_ENABLE` - -This allows you to use the system and audio control key codes. - -`CONSOLE_ENABLE` - -This allows you to print messages that can be read using [`hid_listen`](https://www.pjrc.com/teensy/hid_listen.html). - -By default, all debug (*dprint*) print (*print*, *xprintf*), and user print (*uprint*) messages will be enabled. This will eat up a significant portion of the flash and may make the keyboard .hex file too big to program. - -To disable debug messages (*dprint*) and reduce the .hex file size, include `#define NO_DEBUG` in your `config.h` file. - -To disable print messages (*print*, *xprintf*) and user print messages (*uprint*) and reduce the .hex file size, include `#define NO_PRINT` in your `config.h` file. - -To disable print messages (*print*, *xprintf*) and **KEEP** user print messages (*uprint*), include `#define USER_PRINT` in your `config.h` file. - -To see the text, open `hid_listen` and enjoy looking at your printed messages. - -**NOTE:** Do not include *uprint* messages in anything other than your keymap code. It must not be used within the QMK system framework. Otherwise, you will bloat other people's .hex files. - -`COMMAND_ENABLE` - -This enables magic commands, typically fired with the default magic key combo `LSHIFT+RSHIFT+KEY`. Magic commands include turning on debugging messages (`MAGIC+D`) or temporarily toggling NKRO (`MAGIC+N`). - -`SLEEP_LED_ENABLE` - -Enables your LED to breath while your computer is sleeping. Timer1 is being used here. This feature is largely unused and untested, and needs updating/abstracting. - -`NKRO_ENABLE` - -This allows the keyboard to tell the host OS that up to 248 keys are held down at once (default without NKRO is 6). NKRO is off by default, even if `NKRO_ENABLE` is set. NKRO can be forced by adding `#define FORCE_NKRO` to your config.h or by binding `MAGIC_TOGGLE_NKRO` to a key and then hitting the key. - -`BACKLIGHT_ENABLE` - -This enables your backlight on Timer1 and ports B5, B6, or B7 (for now). You can specify your port by putting this in your `config.h`: - - #define BACKLIGHT_PIN B7 - -`MIDI_ENABLE` - -This enables MIDI sending and receiving with your keyboard. To enter MIDI send mode, you can use the keycode `MI_ON`, and `MI_OFF` to turn it off. This is a largely untested feature, but more information can be found in the `quantum/quantum.c` file. - -`UNICODE_ENABLE` - -This allows you to send unicode symbols via `UC()` in your keymap. Only codes up to 0x7FFF are currently supported. - -`UNICODEMAP_ENABLE` - -This allows sending unicode symbols using `X()` in your keymap. Codes -up to 0xFFFFFFFF are supported, including emojis. You will need to maintain -a separate mapping table in your keymap file. - -Known limitations: -- Under Mac OS, only codes up to 0xFFFF are supported. -- Under Linux ibus, only codes up to 0xFFFFF are supported (but anything important is still under this limit for now). - -Characters out of range supported by the OS will be ignored. - -`BLUETOOTH_ENABLE` - -This allows you to interface with a Bluefruit EZ-key to send keycodes wirelessly. It uses the D2 and D3 pins. - -`AUDIO_ENABLE` - -This allows you output audio on the C6 pin (needs abstracting). See the [audio section](#driving-a-speaker---audio-support) for more information. - -`VARIABLE_TRACE` - -Use this to debug changes to variable values, see the [tracing variables](#tracing-variables) section for more information. - -`API_SYSEX_ENABLE` - -This enables using the Quantum SYSEX API to send strings (somewhere?) - -### Customizing Makefile options on a per-keymap basis - -If your keymap directory has a file called `Makefile` (note the filename), any Makefile options you set in that file will take precedence over other Makefile options for your particular keyboard. - -So let's say your keyboard's makefile has `BACKLIGHT_ENABLE = yes` (or maybe doesn't even list the `BACKLIGHT_ENABLE` option, which would cause it to be off). You want your particular keymap to not have the debug console, so you make a file called `Makefile` and specify `BACKLIGHT_ENABLE = no`. - -You can use the `doc/keymap_makefile_example.md` as a template/starting point. - -## The `config.h` file - -There are 2 `config.h` locations: - -* keyboard (`/keyboards//`) -* keymap (`/keyboards//keymaps//`) - -The keyboard `config.h` is included only if the keymap one doesn't exist. The format to use for your custom one [is here](/doc/keymap_config_h_example.h). If you want to override a setting from the parent `config.h` file, you need to do this: - -```c -#undef MY_SETTING -#define MY_SETTING 4 -``` - -For a value of `4` for this imaginary setting. So we `undef` it first, then `define` it. - -You can then override any settings, rather than having to copy and paste the whole thing. - -# Going beyond the keycodes - -Aside from the [basic keycodes](doc/keycode.txt), your keymap can include shortcuts to common operations. - -## Quick aliases to common actions - -Your keymap can include shortcuts to common operations (called "function actions" in tmk). - -These functions work the same way that their `ACTION_*` functions do - they're just quick aliases. To dig into all of the tmk `ACTION_*` functions, please see the [TMK documentation](https://github.com/jackhumbert/qmk_firmware/blob/master/doc/keymap.md#2-action). - -Instead of using `FNx` when defining `ACTION_*` functions, you can use `F(x)` - the benefit here is being able to use more than 32 function actions (up to 4096), if you happen to need them. - -### Switching and toggling layers - -`MO(layer)` - momentary switch to *layer*. As soon as you let go of the key, the layer is deactivated and you pop back out to the previous layer. When you apply this to a key, that same key must be set as `KC_TRNS` on the destination layer. Otherwise, you won't make it back to the original layer when you release the key (and you'll get a keycode sent). You can only switch to layers *above* your current layer. If you're on layer 0 and you use `MO(1)`, that will switch to layer 1 just fine. But if you include `MO(3)` on layer 5, that won't do anything for you -- because layer 3 is lower than layer 5 on the stack. - -`OSL(layer)` - momentary switch to *layer*, as a one-shot operation. So if you have a key that's defined as `OSL(1)`, and you tap that key, then only the very next keystroke would come from layer 1. You would drop back to layer zero immediately after that one keystroke. That's handy if you have a layer full of custom shortcuts -- for example, a dedicated key for closing a window. So you tap your one-shot layer mod, then tap that magic 'close window' key, and keep typing like a boss. Layer 1 would remain active as long as you hold that key down, too (so you can use it like a momentary toggle-layer key with extra powers). - -`LT(layer, kc)` - momentary switch to *layer* when held, and *kc* when tapped. Like `MO()`, this only works upwards in the layer stack (`layer` must be higher than the current layer). - -`TG(layer)` - toggles a layer on or off. As with `MO()`, you should set this key as `KC_TRNS` in the destination layer so that tapping it again actually toggles back to the original layer. Only works upwards in the layer stack. - -`TO(layer)` - Goes to a layer. This code is special, because it lets you go either up or down the stack -- just goes directly to the layer you want. So while other codes only let you go _up_ the stack (from layer 0 to layer 3, for example), `TO(2)` is going to get you to layer 2, no matter where you activate it from -- even if you're currently on layer 5. This gets activated on keydown (as soon as the key is pressed). - - -### Fun with modifier keys - -* `LSFT(kc)` - applies left Shift to *kc* (keycode) - `S(kc)` is an alias -* `RSFT(kc)` - applies right Shift to *kc* -* `LCTL(kc)` - applies left Control to *kc* -* `RCTL(kc)` - applies right Control to *kc* -* `LALT(kc)` - applies left Alt to *kc* -* `RALT(kc)` - applies right Alt to *kc* -* `LGUI(kc)` - applies left GUI (command/win) to *kc* -* `RGUI(kc)` - applies right GUI (command/win) to *kc* -* `HYPR(kc)` - applies Hyper (all modifiers) to *kc* -* `MEH(kc)` - applies Meh (all modifiers except Win/Cmd) to *kc* -* `LCAG(kc)` - applies CtrlAltGui to *kc* - -You can also chain these, like this: - - LALT(LCTL(KC_DEL)) -- this makes a key that sends Alt, Control, and Delete in a single keypress. - -The following shortcuts automatically add `LSFT()` to keycodes to get commonly used symbols. Their long names are also available and documented in `/quantum/keymap_common.h`. - - KC_TILD ~ - KC_EXLM ! - KC_AT @ - KC_HASH # - KC_DLR $ - KC_PERC % - KC_CIRC ^ - KC_AMPR & - KC_ASTR * - KC_LPRN ( - KC_RPRN ) - KC_UNDS _ - KC_PLUS + - KC_DQUO " - KC_LCBR { - KC_RCBR } - KC_LABK < - KC_RABK > - KC_PIPE | - KC_COLN : - -`OSM(mod)` - this is a "one shot" modifier. So let's say you have your left Shift key defined as `OSM(MOD_LSFT)`. Tap it, let go, and Shift is "on" -- but only for the next character you'll type. So to write "The", you don't need to hold down Shift -- you tap it, tap t, and move on with life. And if you hold down the left Shift key, it just works as a left Shift key, as you would expect (so you could type THE). There's also a magical, secret way to "lock" a modifier by tapping it multiple times. If you want to learn more about that, open an issue. :) - -`MT(mod, kc)` - is *mod* (modifier key - MOD_LCTL, MOD_LSFT) when held, and *kc* when tapped. In other words, you can have a key that sends Esc (or the letter O or whatever) when you tap it, but works as a Control key or a Shift key when you hold it down. - -These are the values you can use for the `mod` in `MT()` and `OSM()` (right-hand modifiers are not available for `MT()`): - - * MOD_LCTL - * MOD_LSFT - * MOD_LALT - * MOD_LGUI - * MOD_HYPR - * MOD_MEH - -These can also be combined like `MOD_LCTL | MOD_LSFT` e.g. `MT(MOD_LCTL | MOD_LSFT, KC_ESC)` which would activate Control and Shift when held, and send Escape when tapped. - -We've added shortcuts to make common modifier/tap (mod-tap) mappings more compact: - - * `CTL_T(kc)` - is LCTL when held and *kc* when tapped - * `SFT_T(kc)` - is LSFT when held and *kc* when tapped - * `ALT_T(kc)` - is LALT when held and *kc* when tapped - * `GUI_T(kc)` - is LGUI when held and *kc* when tapped - * `ALL_T(kc)` - is Hyper (all mods) when held and *kc* when tapped. To read more about what you can do with a Hyper key, see [this blog post by Brett Terpstra](http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/) - * `LCAG_T(kc)` - is CtrlAltGui when held and *kc* when tapped - * `MEH_T(kc)` - is like Hyper, but not as cool -- does not include the Cmd/Win key, so just sends Alt+Ctrl+Shift. - -## Space Cadet Shift: The future, built in - -Steve Losh [described](http://stevelosh.com/blog/2012/10/a-modern-space-cadet/) the Space Cadet Shift quite well. Essentially, you hit the left Shift on its own, and you get an opening parenthesis; hit the right Shift on its own, and you get the closing one. When hit with other keys, the Shift key keeps working as it always does. Yes, it's as cool as it sounds. - -To use it, use `KC_LSPO` (Left Shift, Parens Open) for your left Shift on your keymap, and `KC_RSPC` (Right Shift, Parens Close) for your right Shift. - -It's defaulted to work on US keyboards, but if your layout uses different keys for parenthesis, you can define those in your `config.h` like this: - - #define LSPO_KEY KC_9 - #define RSPC_KEY KC_0 - -You can also choose between different rollover behaviors of the shift keys by defining: - - #define DISABLE_SPACE_CADET_ROLLOVER - -in your `config.h`. Disabling rollover allows you to use the opposite shift key to cancel the space cadet state in the event of an erroneous press instead of emitting a pair of parentheses when the keys are released. - -The only other thing you're going to want to do is create a `Makefile` in your keymap directory and set the following: - -``` -COMMAND_ENABLE = no # Commands for debug and configuration -``` - -This is just to keep the keyboard from going into command mode when you hold both Shift keys at the same time. - -## The Leader key: A new kind of modifier - -If you've ever used Vim, you know what a Leader key is. If not, you're about to discover a wonderful concept. :) Instead of hitting Alt+Shift+W for example (holding down three keys at the same time), what if you could hit a _sequence_ of keys instead? So you'd hit our special modifier (the Leader key), followed by W and then C (just a rapid succession of keys), and something would happen. - -That's what `KC_LEAD` does. Here's an example: - -1. Pick a key on your keyboard you want to use as the Leader key. Assign it the keycode `KC_LEAD`. This key would be dedicated just for this -- it's a single action key, can't be used for anything else. -2. Include the line `#define LEADER_TIMEOUT 300` somewhere in your keymap.c file, probably near the top. The 300 there is 300ms -- that's how long you have for the sequence of keys following the leader. You can tweak this value for comfort, of course. -3. Within your `matrix_scan_user` function, do something like this: - -``` -LEADER_EXTERNS(); - -void matrix_scan_user(void) { - LEADER_DICTIONARY() { - leading = false; - leader_end(); - - SEQ_ONE_KEY(KC_F) { - register_code(KC_S); - unregister_code(KC_S); - } - SEQ_TWO_KEYS(KC_A, KC_S) { - register_code(KC_H); - unregister_code(KC_H); - } - SEQ_THREE_KEYS(KC_A, KC_S, KC_D) { - register_code(KC_LGUI); - register_code(KC_S); - unregister_code(KC_S); - unregister_code(KC_LGUI); - } - } -} -``` - -As you can see, you have three function. you can use - `SEQ_ONE_KEY` for single-key sequences (Leader followed by just one key), and `SEQ_TWO_KEYS` and `SEQ_THREE_KEYS` for longer sequences. Each of these accepts one or more keycodes as arguments. This is an important point: You can use keycodes from **any layer on your keyboard**. That layer would need to be active for the leader macro to fire, obviously. - -## Tap Dance: A single key can do 3, 5, or 100 different things - -Hit the semicolon key once, send a semicolon. Hit it twice, rapidly -- send a colon. Hit it three times, and your keyboard's LEDs do a wild dance. That's just one example of what Tap Dance can do. It's one of the nicest community-contributed features in the firmware, conceived and created by [algernon](https://github.com/algernon) in [#451](https://github.com/jackhumbert/qmk_firmware/pull/451). Here's how algernon describes the feature: - -With this feature one can specify keys that behave differently, based on the amount of times they have been tapped, and when interrupted, they get handled before the interrupter. - -To make it clear how this is different from `ACTION_FUNCTION_TAP`, lets explore a certain setup! We want one key to send `Space` on single tap, but `Enter` on double-tap. - -With `ACTION_FUNCTION_TAP`, it is quite a rain-dance to set this up, and has the problem that when the sequence is interrupted, the interrupting key will be send first. Thus, `SPC a` will result in `a SPC` being sent, if they are typed within `TAPPING_TERM`. With the tap dance feature, that'll come out as `SPC a`, correctly. - -The implementation hooks into two parts of the system, to achieve this: into `process_record_quantum()`, and the matrix scan. We need the latter to be able to time out a tap sequence even when a key is not being pressed, so `SPC` alone will time out and register after `TAPPING_TERM` time. - -But lets start with how to use it, first! - -First, you will need `TAP_DANCE_ENABLE=yes` in your `Makefile`, because the feature is disabled by default. This adds a little less than 1k to the firmware size. Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that - similar to `F()`, takes a number, which will later be used as an index into the `tap_dance_actions` array. - -This array specifies what actions shall be taken when a tap-dance key is in action. Currently, there are three possible options: - -* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held. -* `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action. -* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function on when the dance action finishes (like the previous option), and the last function when the tap dance action resets. - -The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise. - -And that's the bulk of it! - -And now, on to the explanation of how it works! - -The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and the timer. - -This means that you have `TAPPING_TERM` time to tap the key again, you do not have to input all the taps within that timeframe. This allows for longer tap counts, with minimal impact on responsiveness. - -Our next stop is `matrix_scan_tap_dance()`. This handles the timeout of tap-dance keys. - -For the sake of flexibility, tap-dance actions can be either a pair of keycodes, or a user function. The latter allows one to handle higher tap counts, or do extra things, like blink the LEDs, fiddle with the backlighting, and so on. This is accomplished by using an union, and some clever macros. - -### Examples - -Here's a simple example for a single definition: - -1. In your `makefile`, add `TAP_DANCE_ENABLE = yes` -2. In your `config.h` (which you can copy from `qmk_firmware/keyboards/planck/config.h` to your keymap directory), add `#define TAPPING_TERM 200` -3. In your `keymap.c` file, define the variables and definitions, then add to your keymap: - -```c -//Tap Dance Declarations -enum { - TD_ESC_CAPS = 0 -}; - -//Tap Dance Definitions -qk_tap_dance_action_t tap_dance_actions[] = { - //Tap once for Esc, twice for Caps Lock - [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS) -// Other declarations would go here, separated by commas, if you have them -}; - -//In Layer declaration, add tap dance item in place of a key code -TD(TD_ESC_CAPS) -``` - -Here's a more complex example involving custom actions: - -```c -enum { - CT_SE = 0, - CT_CLN, - CT_EGG, - CT_FLSH, -}; - -/* Have the above three on the keymap, TD(CT_SE), etc... */ - -void dance_cln_finished (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - register_code (KC_RSFT); - register_code (KC_SCLN); - } else { - register_code (KC_SCLN); - } -} - -void dance_cln_reset (qk_tap_dance_state_t *state, void *user_data) { - if (state->count == 1) { - unregister_code (KC_RSFT); - unregister_code (KC_SCLN); - } else { - unregister_code (KC_SCLN); - } -} - -void dance_egg (qk_tap_dance_state_t *state, void *user_data) { - if (state->count >= 100) { - SEND_STRING ("Safety dance!"); - reset_tap_dance (state); - } -} - -// on each tap, light up one led, from right to left -// on the forth tap, turn them off from right to left -void dance_flsh_each(qk_tap_dance_state_t *state, void *user_data) { - switch (state->count) { - case 1: - ergodox_right_led_3_on(); - break; - case 2: - ergodox_right_led_2_on(); - break; - case 3: - ergodox_right_led_1_on(); - break; - case 4: - ergodox_right_led_3_off(); - _delay_ms(50); - ergodox_right_led_2_off(); - _delay_ms(50); - ergodox_right_led_1_off(); - } -} - -// on the fourth tap, set the keyboard on flash state -void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) { - if (state->count >= 4) { - reset_keyboard(); - reset_tap_dance(state); - } -} - -// if the flash state didnt happen, then turn off leds, left to right -void dance_flsh_reset(qk_tap_dance_state_t *state, void *user_data) { - ergodox_right_led_1_off(); - _delay_ms(50); - ergodox_right_led_2_off(); - _delay_ms(50); - ergodox_right_led_3_off(); -} - -qk_tap_dance_action_t tap_dance_actions[] = { - [CT_SE] = ACTION_TAP_DANCE_DOUBLE (KC_SPC, KC_ENT) - ,[CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED (NULL, dance_cln_finished, dance_cln_reset) - ,[CT_EGG] = ACTION_TAP_DANCE_FN (dance_egg) - ,[CT_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED (dance_flsh_each, dance_flsh_finished, dance_flsh_reset) -}; -``` - -## Temporarily setting the default layer - -`DF(layer)` - sets default layer to *layer*. The default layer is the one at the "bottom" of the layer stack - the ultimate fallback layer. This currently does not persist over power loss. When you plug the keyboard back in, layer 0 will always be the default. It is theoretically possible to work around that, but that's not what `DF` does. - -## Prevent stuck modifiers - -Consider the following scenario: - -1. Layer 0 has a key defined as Shift. -2. The same key is defined on layer 1 as the letter A. -3. User presses Shift. -4. User switches to layer 1 for whatever reason. -5. User releases Shift, or rather the letter A. -6. User switches back to layer 0. - -Shift was actually never released and is still considered pressed. - -If such situation bothers you add this to your `config.h`: - - #define PREVENT_STUCK_MODIFIERS - -This option uses 5 bytes of memory per every 8 keys on the keyboard -rounded up (5 bits per key). For example on Planck (48 keys) it uses -(48/8)\*5 = 30 bytes. - -## Macro shortcuts: Send a whole string when pressing just one key - -Instead of using the `ACTION_MACRO` function, you can simply use `M(n)` to access macro *n* - *n* will get passed into the `action_get_macro` as the `id`, and you can use a switch statement to trigger it. This gets called on the keydown and keyup, so you'll need to use an if statement testing `record->event.pressed` (see keymap_default.c). - -```c -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is. -{ - switch(id) { - case 0: // this would trigger when you hit a key mapped as M(0) - if (record->event.pressed) { - return MACRO( I(255), T(H), T(E), T(L), T(L), W(255), T(O), END ); // this sends the string 'hello' when the macro executes - } - break; - } - return MACRO_NONE; -}; -``` -A macro can include the following commands: - -* I() change interval of stroke in milliseconds. -* D() press key. -* U() release key. -* T() type key(press and release). -* W() wait (milliseconds). -* END end mark. - -So above you can see the stroke interval changed to 255ms between each keystroke, then a bunch of keys being typed, waits a while, then the macro ends. - -Note: Using macros to have your keyboard send passwords for you is possible, but a bad idea. - -### Advanced macro functions - -To get more control over the keys/actions your keyboard takes, the following functions are available to you in the `action_get_macro` function block: - -* `record->event.pressed` - -This is a boolean value that can be tested to see if the switch is being pressed or released. An example of this is - -```c -if (record->event.pressed) { - // on keydown -} else { - // on keyup -} -``` - -* `register_code();` - -This sends the `` keydown event to the computer. Some examples would be `KC_ESC`, `KC_C`, `KC_4`, and even modifiers such as `KC_LSFT` and `KC_LGUI`. - -* `unregister_code();` - -Parallel to `register_code` function, this sends the `` keyup event to the computer. If you don't use this, the key will be held down until it's sent. - -* `layer_on();` - -This will turn on the layer `` - the higher layer number will always take priority. Make sure you have `KC_TRNS` for the key you're pressing on the layer you're switching to, or you'll get stick there unless you have another plan. - -* `layer_off();` - -This will turn off the layer ``. - -* `clear_keyboard();` - -This will clear all mods and keys currently pressed. - -* `clear_mods();` - -This will clear all mods currently pressed. - -* `clear_keyboard_but_mods();` - -This will clear all keys besides the mods currently pressed. - -* `update_tri_layer(layer_1, layer_2, layer_3);` - -If the user attempts to activate layer 1 AND layer 2 at the same time (for example, by hitting their respective layer keys), layer 3 will be activated. Layers 1 and 2 will _also_ be activated, for the purposes of fallbacks (so a given key will fall back from 3 to 2, to 1 -- and only then to 0). - -#### Naming your macros - -If you have a bunch of macros you want to refer to from your keymap, while keeping the keymap easily readable, you can just name them like so: - -``` -#define AUD_OFF M(6) -#define AUD_ON M(7) -#define MUS_OFF M(8) -#define MUS_ON M(9) -#define VC_IN M(10) -#define VC_DE M(11) -#define PLOVER M(12) -#define EXT_PLV M(13) -``` - -As was done on the [Planck default keymap](/keyboards/planck/keymaps/default/keymap.c#L33-L40) - -#### Timer functionality - -It's possible to start timers and read values for time-specific events - here's an example: - -```c -static uint16_t key_timer; -key_timer = timer_read(); -if (timer_elapsed(key_timer) < 100) { - // do something if less than 100ms have passed -} else { - // do something if 100ms or more have passed -} -``` - -It's best to declare the `static uint16_t key_timer;` outside of the macro block (top of file, etc). - -#### Example: Single-key copy/paste (hold to copy, tap to paste) - -With QMK, it's easy to make one key do two things, as long as one of those things is being a modifier. :) So if you want a key to act as Ctrl when held and send the letter R when tapped, that's easy: `CTL_T(KC_R)`. But what do you do when you want that key to send Ctrl-V (paste) when tapped, and Ctrl-C (copy) when held? - -Here's what you do: - - -``` -static uint16_t key_timer; - -const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) -{ - switch(id) { - case 0: { - if (record->event.pressed) { - key_timer = timer_read(); // if the key is being pressed, we start the timer. - } - else { // this means the key was just released, so we can figure out how long it was pressed for (tap or "held down"). - if (timer_elapsed(key_timer) > 150) { // 150 being 150ms, the threshhold we pick for counting something as a tap. - return MACRO( D(LCTL), T(C), U(LCTL), END ); - } - else { - return MACRO( D(LCTL), T(V), U(LCTL), END ); - } - } - break; - } - } - return MACRO_NONE; -}; -``` - -And then, to assign this macro to a key on your keyboard layout, you just use `M(0)` on the key you want to press for copy/paste. - -## Dynamic macros: record and replay macros in runtime - -In addition to the static macros described above, you may enable the dynamic macros which you may record while writing. They are forgotten as soon as the keyboard is unplugged. Only two such macros may be stored at the same time, with the total length of 64 keypresses (by default). - -To enable them, first add a new element to the `planck_keycodes` enum -- `DYNAMIC_MACRO_RANGE`: - - enum planck_keycodes { - QWERTY = SAFE_RANGE, - COLEMAK, - DVORAK, - PLOVER, - LOWER, - RAISE, - BACKLIT, - EXT_PLV, - DYNAMIC_MACRO_RANGE, - }; - -Afterwards create a new layer called `_DYN`: - - #define _DYN 6 /* almost any other free number should be ok */ - -Below these two modifications include the `dynamic_macro.h` header: - - #include "dynamic_macro.h"` - -Then define the `_DYN` layer with the following keys: `DYN_REC_START1`, `DYN_MACRO_PLAY1`,`DYN_REC_START2` and `DYN_MACRO_PLAY2`. It may also contain other keys, it doesn't matter apart from the fact that you won't be able to record these keys in the dynamic macros. - - [_DYN]= { - {_______, DYN_REC_START1, DYN_MACRO_PLAY1, _______, _______, _______, _______, _______, _______, _______, _______, _______}, - {_______, DYN_REC_START2, DYN_MACRO_PLAY2, _______, _______, _______, _______, _______, _______, _______, _______, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, - {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} - }, - -Add the following code to the very beginning of your `process_record_user()` function: - - if (!process_record_dynamic_macro(keycode, record)) { - return false; - } - -To start recording the macro, press either `DYN_REC_START1` or `DYN_REC_START2`. To finish the recording, press the `_DYN` layer button. The handler awaits specifically for the `MO(_DYN)` keycode as the "stop signal" so please don't use any fancy ways to access this layer, use the regular `MO()` modifier. To replay the macro, press either `DYN_MACRO_PLAY1` or `DYN_MACRO_PLAY2`. - -If the LED-s start blinking during the recording with each keypress, it means there is no more space for the macro in the macro buffer. To fit the macro in, either make the other macro shorter (they share the same buffer) or increase the buffer size by setting the `DYNAMIC_MACRO_SIZE` preprocessor macro (default value: 128; please read the comments for it in the header). - -For the details about the internals of the dynamic macros, please read the comments in the `dynamic_macro.h` header. - -## Additional keycode aliases for software-implemented layouts (Colemak, Dvorak, etc) - -Everything is assuming you're in Qwerty (in software) by default, but there is built-in support for using a Colemak or Dvorak layout by including this at the top of your keymap: - - #include - -If you use Dvorak, use `keymap_dvorak.h` instead of `keymap_colemak.h` for this line. After including this line, you will get access to: - - * `CM_*` for all of the Colemak-equivalent characters - * `DV_*` for all of the Dvorak-equivalent characters - -These implementations assume you're using Colemak or Dvorak on your OS, not on your keyboard - this is referred to as a software-implemented layout. If your computer is in Qwerty and your keymap is in Colemak or Dvorak, this is referred to as a firmware-implemented layout, and you won't need these features. - -To give an example, if you're using software-implemented Colemak, and want to get an `F`, you would use `CM_F` - `KC_F` under these same circumstances would result in `T`. - -## Additional language support - -In `quantum/keymap_extras/`, you'll see various language files - these work the same way as the alternative layout ones do. Most are defined by their two letter country/language code followed by an underscore and a 4-letter abbreviation of its name. `FR_UGRV` which will result in a `ù` when using a software-implemented AZERTY layout. It's currently difficult to send such characters in just the firmware (but it's being worked on - see Unicode support). - -## Unicode support - -There are three Unicode keymap definition method available in QMK: - -### UNICODE_ENABLE - -Supports Unicode input up to 0xFFFF. The keycode function is `UC(n)` in -keymap file, where *n* is a 4 digit hexadecimal. - -### UNICODEMAP_ENABLE - -Supports Unicode up to 0xFFFFFFFF. You need to maintain a separate mapping -table `const uint32_t PROGMEM unicode_map[] = {...}` in your keymap file. -The keycode function is `X(n)` where *n* is the array index of the mapping -table. - -### UCIS_ENABLE - -TBD - -Unicode input in QMK works by inputing a sequence of characters to the OS, -sort of like macro. Unfortunately, each OS has different ideas on how Unicode is inputted. - -This is the current list of Unicode input method in QMK: - -* UC_OSX: MacOS Unicode Hex Input support. Works only up to 0xFFFF. Disabled by default. To enable: go to System Preferences -> Keyboard -> Input Sources, and enable Unicode Hex. -* UC_LNX: Unicode input method under Linux. Works up to 0xFFFFF. Should work almost anywhere on ibus enabled distros. Without ibus, this works under GTK apps, but rarely anywhere else. -* UC_WIN: (not recommended) Windows built-in Unicode input. To enable: create registry key under `HKEY_CURRENT_USER\Control Panel\Input Method\EnableHexNumpad` of type `REG_SZ` called `EnableHexNumpad`, set its value to 1, and reboot. This method is not recommended because of reliability and compatibility issue, use WinCompose method below instead. -* UC_WINC: Windows Unicode input using WinCompose. Requires [WinCompose](https://github.com/samhocevar/wincompose). Works reliably under many (all?) variations of Windows. - -## Backlight Breathing - -In order to enable backlight breathing, the following line must be added to your config.h file. - - #define BACKLIGHT_BREATHING - -The following function calls are used to control the breathing effect. - -* ```breathing_enable()``` - Enable the free-running breathing effect. -* ```breathing_disable()``` - Disable the free-running breathing effect immediately. -* ```breathing_self_disable()``` - Disable the free-running breathing effect after the current effect ends. -* ```breathing_toggle()``` - Toggle the free-running breathing effect. -* ```breathing_defaults()``` - Reset the speed and brightness settings of the breathing effect. - -The following function calls are used to control the maximum brightness of the breathing effect. - -* ```breathing_intensity_set(value)``` - Set the brightness of the breathing effect when it is at its max value. -* ```breathing_intensity_default()``` - Reset the brightness of the breathing effect to the default value based on the current backlight intensity. - -The following function calls are used to control the cycling speed of the breathing effect. - -* ```breathing_speed_set(value)``` - Set the speed of the breathing effect - how fast it cycles. -* ```breathing_speed_inc(value)``` - Increase the speed of the breathing effect by a fixed value. -* ```breathing_speed_dec(value)``` - Decrease the speed of the breathing effect by a fixed value. -* ```breathing_speed_default()``` - Reset the speed of the breathing effect to the default value. - -The following example shows how to enable the backlight breathing effect when the FUNCTION layer macro button is pressed: - - case MACRO_FUNCTION: - if (record->event.pressed) - { - breathing_speed_set(3); - breathing_enable(); - layer_on(LAYER_FUNCTION); - } - else - { - breathing_speed_set(1); - breathing_self_disable(); - layer_off(LAYER_FUNCTION); - } - break; - -The following example shows how to pulse the backlight on-off-on when the RAISED layer macro button is pressed: - - case MACRO_RAISED: - if (record->event.pressed) - { - layer_on(LAYER_RAISED); - breathing_speed_set(2); - breathing_pulse(); - update_tri_layer(LAYER_LOWER, LAYER_RAISED, LAYER_ADJUST); - } - else - { - layer_off(LAYER_RAISED); - update_tri_layer(LAYER_LOWER, LAYER_RAISED, LAYER_ADJUST); - } - break; - -## Other firmware shortcut keycodes - -* `RESET` - puts the MCU in DFU mode for flashing new firmware (with `make dfu`) -* `DEBUG` - the firmware into debug mode - you'll need hid_listen to see things -* `BL_ON` - turns the backlight on -* `BL_OFF` - turns the backlight off -* `BL_` - sets the backlight to level *n* -* `BL_INC` - increments the backlight level by one -* `BL_DEC` - decrements the backlight level by one -* `BL_TOGG` - toggles the backlight -* `BL_STEP` - steps through the backlight levels - -Enable the backlight from the Makefile. - -# Custom Quantum functions - -All of these functions are available in the `*_kb()` or `*_user()` variety. `kb` ones should only be used in the `/.c` file, and `user` ones should only be used in the `keymap.c`. The keyboard ones call the user ones - it's necessary to keep these calls to allow the keymap functions to work correctly. - -## `void matrix_init_*(void)` - -This function gets called when the matrix is initiated, and can contain start-up code for your keyboard/keymap. - -## `void matrix_scan_*(void)` - -This function gets called at every matrix scan, which is basically as often as the MCU can handle. Be careful what you put here, as it will get run a lot. - -## `bool process_record_*(uint16_t keycode, keyrecord_t *record)` - -This function gets called on every keypress/release, and is where you can define custom functionality. The return value is whether or not QMK should continue processing the keycode - returning `false` stops the execution. - -The `keycode` variable is whatever is defined in your keymap, eg `MO(1)`, `KC_L`, etc. and can be switch-cased to execute code whenever a particular code is pressed. - -The `record` variable contains infomation about the actual press: - -``` -keyrecord_t record { - keyevent_t event { - keypos_t key { - uint8_t col - uint8_t row - } - bool pressed - uint16_t time - } -} -``` - -The conditional `if (record->event.pressed)` can tell if the key is being pressed or released, and you can execute code based on that. - -## `void led_set_*(uint8_t usb_led)` - -This gets called whenever there is a state change on your host LEDs (eg caps lock, scroll lock, etc). The LEDs are defined as: - -``` -#define USB_LED_NUM_LOCK 0 -#define USB_LED_CAPS_LOCK 1 -#define USB_LED_SCROLL_LOCK 2 -#define USB_LED_COMPOSE 3 -#define USB_LED_KANA 4 -``` - -and can be tested against the `usb_led` with a conditional like `if (usb_led & (1<` script to help get you started - you can simply pass your keyboard's name into the script, and all of the necessary files will be created. The components of each are described below. - -## `/keyboards//config.h` - -The `USB Device descriptor parameter` block contains parameters are used to uniquely identify your keyboard, but they don't really matter to the machine. - -Your `MATRIX_ROWS` and `MATRIX_COLS` are the numbers of rows and cols in your keyboard matrix - this may be different than the number of actual rows and columns on your keyboard. There are some tricks you can pull to increase the number of keys in a given matrix, but most keyboards are pretty straight-forward. - -The `MATRIX_ROW_PINS` and `MATRIX_COL_PINS` are the pins your MCU uses on each row/column. Your schematic (if you have one) will have this information on it, and the values will vary depending on your setup. This is one of the most important things to double-check in getting your keyboard setup correctly. - -For the `DIODE_DIRECTION`, most hand-wiring guides will instruct you to wire the diodes in the `COL2ROW` position, but it's possible that they are in the other - people coming from EasyAVR often use `ROW2COL`. Nothing will function if this is incorrect. - -`BACKLIGHT_PIN` is the pin that your PWM-controlled backlight (if one exists) is hooked-up to. Currently only B5, B6, and B7 are supported. - -`BACKLIGHT_BREATHING` is a fancier backlight feature that adds breathing/pulsing/fading effects to the backlight. It uses the same timer as the normal backlight. These breathing effects must be called by code in your keymap. - -`BACKLIGHT_LEVELS` is how many levels exist for your backlight - max is 15, and they are computed automatically from this number. - -## `/keyboards//Makefile` - -The values at the top likely won't need to be changed, since most boards use the `atmega32u4` chip. The `BOOTLOADER_SIZE` will need to be adjusted based on your MCU type. It's defaulted to the Teensy, since that's the most common controller. Below is quoted from the `Makefile`. - -``` -# Boot Section Size in *bytes* -# Teensy halfKay 512 -# Teensy++ halfKay 1024 -# Atmel DFU loader 4096 -# LUFA bootloader 4096 -# USBaspLoader 2048 -OPT_DEFS += -DBOOTLOADER_SIZE=512 -``` - -At the bottom of the file, you'll find lots of features to turn on and off - all of these options should be set with `?=` to allow for the keymap overrides. `?=` only assigns if the variable was previously undefined. For the full documenation of these features, see the [Makefile options](#makefile-options). - -## `/keyboards//readme.md` - -This is where you'll describe your keyboard - please write as much as you can about it! Talking about default functionality/features is useful here. Feel free to link to external pages/sites if necessary. Images can be included here as well. This file will be rendered into a webpage at qmk.fm/keyboards//. - -## `/keyboards//.c` - -This is where all of the custom logic for your keyboard goes - you may not need to put anything in this file, since a lot of things are configured automatically. All of the `*_kb()` functions are defined here. If you modify them, remember to keep the calls to `*_user()`, or things in the keymaps might not work. You can read more about the functions [here](#custom-quantum-functions-for-keyboards-and-keymaps) - -## `/keyboards//.h` - -Here is where you can (optionally) define your `KEYMAP` function to remap your matrix into a more readable format. With ortholinear boards, this isn't always necessary, but it can help to accomodate the dead spots on your matrix, where there are keys that take up more than one space (2u, staggering, 6.25u, etc). The example shows the difference between the physical keys, and the matrix design: - -``` -#define KEYMAP( \ - k00, k01, k02, \ - k10, k11 \ -) \ -{ \ - { k00, k01, k02 }, \ - { k10, KC_NO, k11 }, \ -} -``` - -Each of the `kxx` variables needs to be unique, and usually follows the format `k`. You can place `KC_NO` where your dead keys are in your matrix. - -# Unit Testing - -If you are new to unit testing, then you can find many good resources on internet. However most of it is scattered around in small pieces here and there, and there's also many different opinions, so I won't give any recommendations. - -Instead I recommend these two books, explaining two different styles of Unit Testing in detail. - -* "Test Driven Development: By Example: Kent Beck" -* "Growing Object-Oriented Software, Guided By Tests: Steve Freeman, Nat Pryce" - -If you prefer videos there are Uncle Bob's [Clean Coders Videos](https://cleancoders.com/), which unfortunately cost quite a bit, especially if you want to watch many of them. But James Shore has a free [Let's Play](http://www.jamesshore.com/Blog/Lets-Play) video series. - -## Google Test and Google Mock -It's possible to Unit Test your code using [Google Test](https://github.com/google/googletest). The Google Test framework also includes another component for writing testing mocks and stubs, called "Google Mock". For information how to write the actual tests, please refer to the documentation on that site. - -## Use of C++ - -Note that Google Test and therefore any test has to be written in C++, even if the rest of the QMK codebases is written in C. This should hopefully not be a problem even if you don't know any C++, since there's quite clear documentation and examples of the required C++ features, and you can write the rest of the test code almost as you would write normal C. Note that some compiler errors which you might get can look quite scary, but just read carefully what it says, and you should be ok. - -One thing to remember, is that you have to append `extern "C"` around all of your C file includes. - -## Adding tests for new or existing features - -If you want to unit test some feature, then take a look at the existing serial_link tests, in the `quantum/serial_link/tests folder`, and follow the steps below to create a similar structure. - -1. If it doesn't already exist, add a test subfolder to the folder containing the feature. -2. Create a `testlist.mk` and a `rules.mk` file in that folder. -3. Include those files from the root folder `testlist.mk`and `build_test.mk` respectively. -4. Add a new name for your testgroup to the `testlist.mk` file. Each group defined there will be a separate executable. And that's how you can support mocking out different parts. Note that it's worth adding some common prefix, just like it's done for the serial_link tests. The reason for that is that the make command allows substring filtering, so this way you can easily run a subset of the tests. -5. Define the source files and required options in the `rules.mk` file. - * `_SRC` for source files - * `_DEFS` for additional defines - * `_INC` for additional include folders -6. Write the tests in a new cpp file inside the test folder you created. That file has to be one of the files included from the `rules.mk` file. - -Note how there's several different tests, each mocking out a separate part. Also note that each of them only compiles the very minimum that's needed for the tests. It's recommend that you try to do the same. For a relevant video check out [Matt Hargett "Advanced Unit Testing in C & C++](https://www.youtube.com/watch?v=Wmy6g-aVgZI) - -## Running the tests - -To run all the tests in the codebase, type `make test`. You can also run test matching a substring by typing `make test-matchingsubstring` Note that the tests are always compiled with the native compiler of your platform, so they are also run like any other program on your computer. - -## Debugging the tests - -If there are problems with the tests, you can find the executable in the `./build/test` folder. You should be able to run those with GDB or a similar debugger. - -## Full Integration tests - -It's not yet possible to do a full integration test, where you would compile the whole firmware and define a keymap that you are going to test. However there are plans for doing that, because writing tests that way would probably be easier, at least for people that are not used to unit testing. - -In that model you would emulate the input, and expect a certain output from the emulated keyboard. - -# Tracing variables - -Sometimes you might wonder why a variable gets changed and where, and this can be quite tricky to track down without having a debugger. It's of course possible to manually add print statements to track it, but you can also enable the variable trace feature. This works for both for variables that are changed by the code, and when the variable is changed by some memory corruption. - -To take the feature into use add `VARIABLE_TRACE=x` to the end of you make command. `x` represents the number of variables you want to trace, which is usually 1. - -Then at a suitable place in the code, call `ADD_TRACED_VARIABLE`, to begin the tracing. For example to trace all the layer changes, you can do this -```c -void matrix_init_user(void) { - ADD_TRACED_VARIABLE("layer", &layer_state, sizeof(layer_state)); -} -``` - -This will add a traced variable named "layer" (the name is just for your information), which tracks the memory location of `layer_state`. It tracks 4 bytes (the size of `layer_state`), so any modification to the variable will be reported. By default you can not specify a size bigger than 4, but you can change it by adding `MAX_VARIABLE_TRACE_SIZE=x` to the end of the make command line. - -In order to actually detect changes to the variables you should call `VERIFY_TRACED_VARIABLES` around the code that you think that modifies the variable. If a variable is modified it will tell you between which two `VERIFY_TRACED_VARIABLES` calls the modification happened. You can then add more calls to track it down further. I don't recommend spamming the codebase with calls. It's better to start with a few, and then keep adding them in a binary search fashion. You can also delete the ones you don't need, as each call need to store the file name and line number in the ROM, so you can run out of memory if you add too many calls. - -Also remember to delete all the tracing code ones you have found the bug, as you wouldn't want to create a pull request with tracing code. From 1f52dbcac01c37157c29038334e1f7b5be9bd4aa Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 6 Dec 2016 14:15:23 -0600 Subject: [PATCH 199/727] removes double-tab brackets and adds back quot to left cmd. --- .../ergodox/keymaps/common-nighthawk/keymap.c | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c index be12debba3..5a1e46b7b0 100644 --- a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c +++ b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c @@ -26,37 +26,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | _ | x | x | _ | Esc | Hypr | Home | | End | Hypr | [ | ] | x | `~ | Bks | + * | _ | x | x | _ | Esc | Hypr | Home | | End | Hypr | [ | ] | `~ | `~ | Bks | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * |Ctrl/Tab| Q | W | E | R | T | Up | | PgUp | Y | U 2[ | I 2] | O | P | Ctrl | + * |Ctrl/Tab| Q | W | E | R | T | Up | | PgUp | Y | U | I | O | P | Ctrl | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | Cmd | A | S | D | F | G |------| |------| H | J | K | L | ;: |Entr/Cmd| + * | Cmd/"' | A | S | D | F | G |------| |------| H | J | K | L | ;: |Cmd/Entr| * |--------+------+------+------+------+------| Down | | PgDn |------+------+------+------+------+--------| * | Shft | Z | X | C | V | B | | | | N | M | ,< | .> | /? | Shft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | Alt | x | x | x | Left | |Right | Bks | x | x | Alt | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * | Mute | VolUp| | Play | Del | + * |Teensy| VolUp| | Play | Del | * ,------|------|------| |------+--------+------. * | | | VolDn| | Next | | | * |Sp/~L1| L2 |------| |------| L2 |'"/~L1| - * | | |Teensy| | Prev | | | + * | | | Mute | | Prev | | | * `--------------------' `----------------------' */ [BASE] = KEYMAP( // layer 0 : default // left hand KC_UNDS, KC_1, KC_1, KC_UNDS, KC_ESC, ALL_T(KC_NO), KC_HOME, CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, - KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G, + GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, KC_LALT, KC_1, KC_1, KC_1, KC_LEFT, - KC_MUTE, KC_VOLU, + RESET, KC_VOLU, KC_VOLD, - LT(SYMB, KC_SPC), TG(MDIA), RESET, + LT(SYMB, KC_SPC), TG(MDIA), KC_MUTE, // right hand - KC_END, ALL_T(KC_NO), KC_LBRC, KC_RBRC, KC_1, KC_GRV, KC_BSPC, - KC_PGUP, KC_Y, TD(TD_U_LBRC), TD(TD_I_RBRC), KC_O, KC_P, KC_LCTRL, + KC_END, ALL_T(KC_NO), KC_LBRC, KC_RBRC, KC_GRV, KC_GRV, KC_BSPC, + KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LCTRL, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RGHT, KC_BSPC, KC_1, KC_1, KC_RALT, From 5d241479f59493bf5e09004d918d34e85a63a194 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 9 Dec 2016 14:37:07 +0100 Subject: [PATCH 200/727] media keys --- keyboards/ergodox/keymaps/pvinis/keymap.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/keyboards/ergodox/keymaps/pvinis/keymap.c b/keyboards/ergodox/keymaps/pvinis/keymap.c index df906201a8..bc2a5380a6 100644 --- a/keyboards/ergodox/keymaps/pvinis/keymap.c +++ b/keyboards/ergodox/keymaps/pvinis/keymap.c @@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * |BEGIN |QWERTY| |SYSCTL| | + * |BEGIN |QWERTY| | | | * ,------|------|------| |------+--------+------. * | | |CARPAL| |Slack | | | * |Backsp|LShift|------| |------| Enter |Space | @@ -218,13 +218,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * a keymap to control my system. * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | Mute |VolDn |VolUp | | + * | | | | | | | | | | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | | | | | | | |MsUpL | MsUp |MsUpR | | | + * | | | | | | | | | | Mute |MsUpL | MsUp |MsUpR | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | |------| |------| |MsLeft| MsDn |MsRght| | Lock | + * | | | | | | |------| |------|VolUp |MsLeft| MsDn |MsRght| | Lock | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | | |MsDnL | MsDn | | | Sleep | + * | | | | | | | | | |VolDn |MsDnL | MsDn | | | Sleep | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | | | | Power| * `----------------------------------' `----------------------------------' @@ -245,13 +245,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_TRNS - /*,KC_POP*/,KC_NO ,KC_NO ,KC_NO ,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_NO - /*,KC_PTRN*/,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LCTL(LSFT(KC_PWR)) - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_SLEP - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_PWR + /*,KC_POP /// */,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + /* /// ,KC_PTRN*/,KC_NO ,KC_MUTE ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_VOLU ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LCTL(LSFT(KC_PWR)) + ,KC_NO ,KC_VOLD ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_SLEP + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_PWR ,KC_NO ,KC_NO ,KC_NO From d5914a4dfeb69023a0c4e81cd1bc3696df043777 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 9 Dec 2016 14:37:22 +0100 Subject: [PATCH 201/727] add alt key --- keyboards/ergodox/keymaps/pvinis/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/ergodox/keymaps/pvinis/keymap.c b/keyboards/ergodox/keymaps/pvinis/keymap.c index bc2a5380a6..045d6b5435 100644 --- a/keyboards/ergodox/keymaps/pvinis/keymap.c +++ b/keyboards/ergodox/keymaps/pvinis/keymap.c @@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * a beginner's keymap i currently use. * * ,--------------------------------------------------. ,--------------------------------------------------. - * | | 1 | 2 | 3 | 4 | 5 | 6 | | 6 | 7 | 8 | 9 | 0 | - | = | + * | | 1 | 2 | 3 | 4 | 5 | opt | | 6 | 7 | 8 | 9 | 0 | - | = | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| @@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------' `----------------------' */ [BEGIN] = KEYMAP( - KC_TRNS ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 + KC_TRNS ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_LALT ,KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC ,CTL_T(KC_ESC) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LPRN From be2863e56d2464170725cd6740f4d761e5102e48 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 9 Dec 2016 16:00:10 +0100 Subject: [PATCH 202/727] separate sysctl and mouse layers --- keyboards/ergodox/keymaps/pvinis/keymap.c | 128 +++++++++++----------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/keyboards/ergodox/keymaps/pvinis/keymap.c b/keyboards/ergodox/keymaps/pvinis/keymap.c index 045d6b5435..0052a93251 100644 --- a/keyboards/ergodox/keymaps/pvinis/keymap.c +++ b/keyboards/ergodox/keymaps/pvinis/keymap.c @@ -13,18 +13,13 @@ enum { QWERTY, CARPALX, SYSCTL, + MOUSE, }; // extra keys enum { NONE = 0, - // mouse - MS_UL, // up left - MS_UR, // up right - MS_DL, // down left - MS_DR, // down right - // tap dance TD_FLSH, // flash keyboard }; @@ -213,27 +208,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_TRNS ,KC_TRNS ), - /* SYSCTL * a keymap to control my system. * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | | | | | | | | | | | | | | | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | | | | | | | Mute |MsUpL | MsUp |MsUpR | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | |------| |------|VolUp |MsLeft| MsDn |MsRght| | Lock | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | | | | | | | |VolDn |MsDnL | MsDn | | | Sleep | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | | | | Power| - * `----------------------------------' `----------------------------------' + * ,--------------------------------------------------. ,------------------------------------------------------. + * | ^ | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+----------+------+------+--------| + * | | | | | | | | | | Mute | Home | Up | End | | | + * |--------+------+------+------+------+------| | | |------+------+----------+------+------+--------| + * | | | | | | |------| |------|VolUp | Left | Down |Right | | Lock | + * |--------+------+------+------+------+------| | | |------+------+----------+------+------+--------| + * | | | | | | | | | |VolDn | Prev |Play/Pause| Next | | Sleep | + * `--------+------+------+------+------+-------------' `-------------+------+----------+------+------+--------' + * | | | | | | | | | | | Power| + * `----------------------------------' `--------------------------------------' * ,-------------. ,-------------. - * | | | | |MidClk| + * | | | | | | * ,------|------|------| |------+------+------. - * | | | | | |Left |Right | - * | | |------| |------| Click| Click| * | | | | | | | | + * | | |------| |------| | | + * | | | ^ | | | | | * `--------------------' `--------------------' */ [SYSCTL] = KEYMAP( @@ -247,11 +241,55 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_NO ,KC_NO ,KC_NO ,KC_TRNS - /*,KC_POP /// */,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - /* /// ,KC_PTRN*/,KC_NO ,KC_MUTE ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_VOLU ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,LCTL(LSFT(KC_PWR)) - ,KC_NO ,KC_VOLD ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_SLEP - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_PWR + /*,KC_POP /// */,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + /* /// ,KC_PTRN*/,KC_NO ,KC_MUTE ,KC_HOME ,KC_UP ,KC_END ,KC_NO ,KC_NO + ,KC_VOLU ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_NO ,LCTL(LSFT(KC_PWR)) + ,KC_NO ,KC_VOLD ,KC_MPRV ,KC_MPLY ,KC_MNXT ,KC_NO ,KC_SLEP + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_PWR + + ,KC_NO ,KC_NO + ,KC_NO + ,KC_NO ,KC_NO ,KC_NO +), + +/* MOUSE + * a keymap to control my system. + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | ^ | | | | | | | | | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | | | | | | | | | | | MsUp | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | |------| |------| |MsLeft| MsDn |MsRght| | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | | | | | | | | | | | | | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | |MidClk| + * ,------|------|------| |------+------+------. + * | | | | | |Left |Right | + * | | |------| |------| Click| Click| + * | | | ^ | | | | | + * `--------------------' `--------------------' + */ +[MOUSE] = KEYMAP( + KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO +,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + + ,KC_NO ,KC_NO + ,KC_NO + ,KC_NO ,KC_NO ,KC_TRNS + + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_MS_U ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO @@ -344,44 +382,6 @@ void matrix_init_user() { // extra keys const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch (id) { - - // mouse - case MS_UL: - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_LEFT); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_LEFT); - } - break; - case MS_UR: - if (record->event.pressed) { - mousekey_on(KC_MS_UP); - mousekey_on(KC_MS_RIGHT); - } else { - mousekey_off(KC_MS_UP); - mousekey_off(KC_MS_RIGHT); - } - break; - case MS_DL: - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_LEFT); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_LEFT); - } - break; - case MS_DR: - if (record->event.pressed) { - mousekey_on(KC_MS_DOWN); - mousekey_on(KC_MS_RIGHT); - } else { - mousekey_off(KC_MS_DOWN); - mousekey_off(KC_MS_RIGHT); - } - break; } return MACRO_NONE; } From 063ade6bb5963d21b1f466f3cad33fa72f1f06a8 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 9 Dec 2016 16:00:46 +0100 Subject: [PATCH 203/727] add light for some layers --- keyboards/ergodox/keymaps/pvinis/keymap.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/keyboards/ergodox/keymaps/pvinis/keymap.c b/keyboards/ergodox/keymaps/pvinis/keymap.c index 0052a93251..52283a51e2 100644 --- a/keyboards/ergodox/keymaps/pvinis/keymap.c +++ b/keyboards/ergodox/keymaps/pvinis/keymap.c @@ -379,6 +379,25 @@ void matrix_init_user() { ergodox_led_all_off(); } +// light up leds based on the layer +void matrix_scan_user(void) { + uint8_t layer = biton32(layer_state); + + switch(layer) { + case SYSCTL: + ergodox_right_led_3_on(); + break; + case MOUSE: + ergodox_right_led_2_on(); + break; + default: + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + break; + } +} + // extra keys const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { switch (id) { From 9a59fee6677a51c5a15ecf9807a1e3962f606b50 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 9 Dec 2016 16:01:11 +0100 Subject: [PATCH 204/727] tap dance for some layers. one tap sysctl, two taps mouse. --- keyboards/ergodox/keymaps/pvinis/keymap.c | 32 ++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/keyboards/ergodox/keymaps/pvinis/keymap.c b/keyboards/ergodox/keymaps/pvinis/keymap.c index 52283a51e2..87ad70c919 100644 --- a/keyboards/ergodox/keymaps/pvinis/keymap.c +++ b/keyboards/ergodox/keymaps/pvinis/keymap.c @@ -22,6 +22,7 @@ enum { // tap dance TD_FLSH, // flash keyboard + TD_LAYR, // SYSCTL and MOUSE layer switch }; // application selection @@ -61,9 +62,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,TG(BEGIN) ,TG(QWERTY) - ,TG(CARPALX) - ,KC_BSPC ,KC_LSFT ,TG(SYSCTL) + ,TG(BEGIN) ,TD(TD_LAYR) + ,TG(MOUSE) + ,KC_BSPC ,KC_LSFT ,TD(TD_LAYR) ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO @@ -444,6 +445,31 @@ void flash_dance_reset(qk_tap_dance_state_t *state, void *user_data) { ergodox_right_led_3_off(); } +// SYSCTL on first tap, MOUSE ON second tap +void layers_dance_finished(qk_tap_dance_state_t *state, void *user_data) { + uint8_t layer = biton32(layer_state); + + switch(state->count) { + case 1: + switch(layer) { + case SYSCTL: + layer_off(SYSCTL); + break; + case MOUSE: + layer_off(MOUSE); + break; + default: + layer_on(SYSCTL); + break; + } + break; + case 2: + layer_on(MOUSE); + break; + } +} + qk_tap_dance_action_t tap_dance_actions[] = { [TD_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED( flash_each_tap, flash_dance_finished, flash_dance_reset ), + [TD_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, layers_dance_finished, NULL ), }; From 901f29e3aaa62879372c5957de131dd232cc1744 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 10 Dec 2016 04:08:08 +0700 Subject: [PATCH 205/727] The adafruit BLE C++ code requires -std=c++11 --- tmk_core/avr.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk index b48173341a..5df539def5 100644 --- a/tmk_core/avr.mk +++ b/tmk_core/avr.mk @@ -26,7 +26,7 @@ CFLAGS += -fno-inline-small-functions CFLAGS += -fno-strict-aliasing CPPFLAGS += $(COMPILEFLAGS) -CPPFLAGS += -fno-exceptions +CPPFLAGS += -fno-exceptions -std=c++11 LDFLAGS +=-Wl,--gc-sections From eac8fa799909817bfc7cb4043448f85551154c6b Mon Sep 17 00:00:00 2001 From: Ofer Plesser Date: Sat, 10 Dec 2016 00:49:11 +0200 Subject: [PATCH 206/727] Implemented basic key combination feature --- build_keyboard.mk | 5 ++ quantum/process_keycode/process_combo.c | 66 +++++++++++++++++++++++++ quantum/process_keycode/process_combo.h | 25 ++++++++++ quantum/quantum.c | 3 ++ quantum/quantum.h | 4 ++ 5 files changed, 103 insertions(+) create mode 100644 quantum/process_keycode/process_combo.c create mode 100644 quantum/process_keycode/process_combo.h diff --git a/build_keyboard.mk b/build_keyboard.mk index ce505de126..14f4f36bc9 100644 --- a/build_keyboard.mk +++ b/build_keyboard.mk @@ -144,6 +144,11 @@ ifeq ($(strip $(MIDI_ENABLE)), yes) SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c endif +ifeq ($(strip $(COMBO_ENABLE)), yes) + OPT_DEFS += -DCOMBO_ENABLE + SRC += $(QUANTUM_DIR)/process_keycode/process_combo.c +endif + ifeq ($(strip $(VIRTSER_ENABLE)), yes) OPT_DEFS += -DVIRTSER_ENABLE endif diff --git a/quantum/process_keycode/process_combo.c b/quantum/process_keycode/process_combo.c new file mode 100644 index 0000000000..a6cfed11aa --- /dev/null +++ b/quantum/process_keycode/process_combo.c @@ -0,0 +1,66 @@ +#include "process_combo.h" +#include "print.h" + +// __attribute__ ((weak)) +// combo_t key_combos[] = { + +// }; + +#define SEND_KEY(key) \ +do { \ + register_code16(key); \ + send_keyboard_report(); \ + unregister_code16(key); \ +} while(0) + + +#define ALL_COMBO_KEYS_ARE_DOWN (((1<state) +static bool process_single_combo(combo_t *combo, uint16_t keycode, keyrecord_t *record) +{ + uint8_t count = 0; + bool is_combo_key = false; + // bool combo_key_released = false; + + // Count the number of combo keys + for (const uint16_t *key = combo->keys; COMBO_END != pgm_read_word(key); ++key, ++count); + + for (uint8_t i = 0; i < count; ++i) { + uint16_t key = pgm_read_word(&combo->keys[i]); + + if (key == keycode) { + is_combo_key = true; + + if (record->event.pressed) { + combo->state |= (1<state) { + // The combo was sent, no need to send released key + return true; + } + + combo->state &= ~(1<action); + combo->state = 0; + } + + return is_combo_key; +} + + +bool process_combo(uint16_t keycode, keyrecord_t *record) +{ + bool is_combo_key = false; + + for (int i = 0; i < NUM_ELEMS(key_combos); ++i) { + combo_t *combo = &key_combos[i]; + is_combo_key |= process_single_combo(combo, keycode, record); + } + + return !is_combo_key; +} \ No newline at end of file diff --git a/quantum/process_keycode/process_combo.h b/quantum/process_keycode/process_combo.h new file mode 100644 index 0000000000..68786c0f19 --- /dev/null +++ b/quantum/process_keycode/process_combo.h @@ -0,0 +1,25 @@ +#ifndef PROCESS_COMBO_H +#define PROCESS_COMBO_H + +#include +#include "progmem.h" +#include "quantum.h" + + +typedef struct +{ + const uint16_t *keys; + uint16_t action; + uint32_t state; +} combo_t; + + +#define COMBO_END 0 +#define NUM_ELEMS(a) (sizeof(a)/sizeof 0[a]) + + +extern combo_t key_combos[1]; + +bool process_combo(uint16_t keycode, keyrecord_t *record); + +#endif \ No newline at end of file diff --git a/quantum/quantum.c b/quantum/quantum.c index f653564a67..eabeacff87 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -113,6 +113,9 @@ bool process_record_quantum(keyrecord_t *record) { if (!( process_record_kb(keycode, record) && + #ifdef COMBO_ENABLE + process_combo(keycode, record) && + #endif #ifdef MIDI_ENABLE process_midi(keycode, record) && #endif diff --git a/quantum/quantum.h b/quantum/quantum.h index e6adf974ab..8614c053ab 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -63,6 +63,10 @@ extern uint32_t default_layer_state; #include "process_printer.h" #endif +#ifdef COMBO_ENABLE + #include "process_combo.h" +#endif + #define SEND_STRING(str) send_string(PSTR(str)) void send_string(const char *str); From dc4c8875ba2b961deb5d9712f422b00ce7c90979 Mon Sep 17 00:00:00 2001 From: lucwastiaux Date: Sat, 10 Dec 2016 12:37:32 +0800 Subject: [PATCH 207/727] use thumb cluster key to toggle brackets layer --- keyboards/ergodox/keymaps/dvorak_programmer/README.md | 1 + keyboards/ergodox/keymaps/dvorak_programmer/keymap.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/README.md b/keyboards/ergodox/keymaps/dvorak_programmer/README.md index 63896909cc..b667485410 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/README.md +++ b/keyboards/ergodox/keymaps/dvorak_programmer/README.md @@ -12,6 +12,7 @@ Layers * KEY_SEL: same as above, but every movement shift-selects. * NUMBER: keypad layer. * SYMBOL: all the symbols as well as brackets at the bottom. +* BRACKET: special brackets-only layer for programming * SHORTCUTS: sends Hyper keys for Autohotkey to interpret. I use this to switch between specific apps. * MOUSE: use mouse keys diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c index 38359128f9..df8a2c33f3 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c +++ b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c @@ -58,12 +58,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = KEYMAP( // layer 0 : default // left hand KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, - LT(BRACKETS,KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(KEY_SEL), + LT(MOUSE,KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(KEY_SEL), MO(SHELL_NAV), KC_A, KC_O, KC_E, KC_U, KC_I, KC_FN3, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, MO(KEY_NAV), OSL(SHORTCUTS),KC_FN4, KC_FN5,OSL(SYMBOL),MO(NUMBER), // thumb cluster - MO(MOUSE), RCTL(KC_S), + MO(BRACKETS), RCTL(KC_S), RCTL(KC_DEL), KC_BSPC,RCTL(KC_BSPC),KC_DEL, // right hand From a3c8949627c7b56a24e14c07141b7155dce46103 Mon Sep 17 00:00:00 2001 From: lucwastiaux Date: Sat, 10 Dec 2016 12:52:59 +0800 Subject: [PATCH 208/727] readme updates --- keyboards/ergodox/keymaps/dvorak_programmer/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/README.md b/keyboards/ergodox/keymaps/dvorak_programmer/README.md index b667485410..3e4a2545b8 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/README.md +++ b/keyboards/ergodox/keymaps/dvorak_programmer/README.md @@ -11,7 +11,7 @@ Layers * KEY_NAV: arrow key movement with backward/forward word support, and copy/paste. * KEY_SEL: same as above, but every movement shift-selects. * NUMBER: keypad layer. -* SYMBOL: all the symbols as well as brackets at the bottom. +* SYMBOL: all the symbols. * BRACKET: special brackets-only layer for programming * SHORTCUTS: sends Hyper keys for Autohotkey to interpret. I use this to switch between specific apps. * MOUSE: use mouse keys @@ -19,6 +19,9 @@ Layers Updates ------- +2016/12/10: +* toggle for brackets layer is now on left thumb cluster. + 2016/11/05: * removed brackets anywhere but in brackets layer * added mouse layer back in From 75d7eb9cb533e37d99852623e2a547d52ada9797 Mon Sep 17 00:00:00 2001 From: lucwastiaux Date: Sat, 10 Dec 2016 13:20:05 +0800 Subject: [PATCH 209/727] put home/end on thumb cluster --- keyboards/ergodox/keymaps/dvorak_programmer/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c index df8a2c33f3..f3d02f688d 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c +++ b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c @@ -72,9 +72,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_PGDN, KC_B, KC_M, KC_W, KC_V, KC_Z, TD(TD_SHIFT_CAPSLOCK), // lower keys - browser tab control - RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), RCTL(KC_T), RCTL(KC_K), RCTL(KC_W), + RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), RCTL(KC_T), LALT(KC_LEFT), RCTL(KC_W), // thumb cluster - LALT(KC_LEFT),LALT(KC_RIGHT), + KC_HOME,KC_END, KC_UP, KC_DOWN,KC_ENT, KC_SPC ), From 434b28603253066a2aa2fd74177121f0981577fb Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 10 Dec 2016 19:40:44 +0700 Subject: [PATCH 210/727] Allow negative values for mouse movements --- tmk_core/protocol/lufa/adafruit_ble.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/protocol/lufa/adafruit_ble.cpp b/tmk_core/protocol/lufa/adafruit_ble.cpp index 37194e77a9..fd6edd42cf 100644 --- a/tmk_core/protocol/lufa/adafruit_ble.cpp +++ b/tmk_core/protocol/lufa/adafruit_ble.cpp @@ -86,7 +86,7 @@ struct queue_item { uint16_t consumer; struct __attribute__((packed)) { - uint8_t x, y, scroll, pan; + int8_t x, y, scroll, pan; } mousemove; }; }; From a6db20e518104c7f98d947e8570cfa80c69509d6 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 10 Dec 2016 21:08:22 +0700 Subject: [PATCH 211/727] Remove unneeded options to reduce firmware size --- keyboards/planck/keymaps/priyadi/Makefile | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/keyboards/planck/keymaps/priyadi/Makefile b/keyboards/planck/keymaps/priyadi/Makefile index f113f496c2..d9d4f3d1d7 100644 --- a/keyboards/planck/keymaps/priyadi/Makefile +++ b/keyboards/planck/keymaps/priyadi/Makefile @@ -1,8 +1,3 @@ -# Please remove if no longer applicable -$(warning THIS FILE MAY BE TOO LARGE FOR YOUR KEYBOARD) -$(warning Please disable some options in the Makefile to resolve) - - # Build Options # change to "no" to disable the options, or define them in the Makefile in # the appropriate keymap folder that will get included automatically @@ -11,7 +6,7 @@ BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) -COMMAND_ENABLE = yes # Commands for debug and configuration +COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls @@ -20,6 +15,7 @@ UNICODE_ENABLE = no # Unicode UNICODEMAP_ENABLE = yes # Unicode map BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +API_SYSEX_ENABLE = no # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend From b6bf4e0dce062a535685c4e772f613252d401ed3 Mon Sep 17 00:00:00 2001 From: Ofer Plesser Date: Sat, 10 Dec 2016 16:11:59 +0200 Subject: [PATCH 212/727] Added support for timing out combos if a key as been pressed for longer than COMBO_TERM --- quantum/process_keycode/process_combo.c | 111 +++++++++++++++++------- quantum/process_keycode/process_combo.h | 20 ++++- quantum/quantum.c | 5 ++ 3 files changed, 103 insertions(+), 33 deletions(-) diff --git a/quantum/process_keycode/process_combo.c b/quantum/process_keycode/process_combo.c index a6cfed11aa..ff7e8aba55 100644 --- a/quantum/process_keycode/process_combo.c +++ b/quantum/process_keycode/process_combo.c @@ -1,11 +1,6 @@ #include "process_combo.h" #include "print.h" -// __attribute__ ((weak)) -// combo_t key_combos[] = { - -// }; - #define SEND_KEY(key) \ do { \ register_code16(key); \ @@ -13,54 +8,110 @@ do { \ unregister_code16(key); \ } while(0) +#define COMBO_TIMER_ELAPSED -1 + +#if COMBO_TERM +#define IS_COMBO_KEY_HELD(combo) (COMBO_TIMER_ELAPSED == combo->timer ? false : true) +#define RESET_COMBO_TIMER_AND_KEY(combo) combo->timer = 0; combo->key = 0 +#else +#define IS_COMBO_KEY_HELD(combo) (true) +#define RESET_COMBO_TIMER_AND_KEY(combo) do {} while (0) +#endif + + +__attribute__ ((weak)) +combo_t key_combos[COMBO_COUNT] = { + +}; + +static inline void reset_combo(combo_t *combo) +{ + combo->state = 0; + RESET_COMBO_TIMER_AND_KEY(combo); +} #define ALL_COMBO_KEYS_ARE_DOWN (((1<state) +#define NO_COMBO_KEYS_ARE_DOWN (0 == combo->state) +#define KEY_STATE_DOWN(key) do{ combo->state |= (1<state &= ~(1<keys; ;++count) { + uint16_t key = pgm_read_word(&keys[count]); + if (keycode == key) index = count; + if (COMBO_END == key) break; + } - // Count the number of combo keys - for (const uint16_t *key = combo->keys; COMBO_END != pgm_read_word(key); ++key, ++count); + /* Return if not a combo key */ + if (-1 == index) return false; - for (uint8_t i = 0; i < count; ++i) { - uint16_t key = pgm_read_word(&combo->keys[i]); + bool is_combo_active = IS_COMBO_KEY_HELD(combo); - if (key == keycode) { - is_combo_key = true; - - if (record->event.pressed) { - combo->state |= (1<state) { - // The combo was sent, no need to send released key - return true; - } - - combo->state &= ~(1<event.pressed) { + KEY_STATE_DOWN(index); + +#if COMBO_TERM + if (is_combo_active) { + combo->timer = timer_read(); + combo->key = keycode; } +#endif + + } else { + if (is_combo_active && combo->state) { /* Combo key was tapped */ + RESET_COMBO_TIMER_AND_KEY(combo); + SEND_KEY(keycode); + } + +#if COMBO_TERM + if (!is_combo_active && keycode == combo->key) { /* Held combo key was released */ + unregister_code16(combo->key); + } +#endif + + KEY_STATE_UP(index); } - if (ALL_COMBO_KEYS_ARE_DOWN) { + if (ALL_COMBO_KEYS_ARE_DOWN && is_combo_active) { SEND_KEY(combo->action); - combo->state = 0; + reset_combo(combo); + } + + if(NO_COMBO_KEYS_ARE_DOWN && !is_combo_active) { + reset_combo(combo); } - return is_combo_key; + return is_combo_active; } - bool process_combo(uint16_t keycode, keyrecord_t *record) { bool is_combo_key = false; - for (int i = 0; i < NUM_ELEMS(key_combos); ++i) { + for (int i = 0; i < COMBO_COUNT; ++i) { combo_t *combo = &key_combos[i]; is_combo_key |= process_single_combo(combo, keycode, record); } return !is_combo_key; +} + +void matrix_scan_combo(void) +{ +#if COMBO_TERM + for (int i = 0; i < COMBO_COUNT; ++i) { + combo_t *combo = &key_combos[i]; + if (combo->timer && + combo->timer != COMBO_TIMER_ELAPSED && + timer_elapsed(combo->timer) > COMBO_TERM) { + + combo->timer = COMBO_TIMER_ELAPSED; + unregister_code16(combo->key); + register_code16(combo->key); + } + } +#endif } \ No newline at end of file diff --git a/quantum/process_keycode/process_combo.h b/quantum/process_keycode/process_combo.h index 68786c0f19..c475acd332 100644 --- a/quantum/process_keycode/process_combo.h +++ b/quantum/process_keycode/process_combo.h @@ -5,21 +5,35 @@ #include "progmem.h" #include "quantum.h" +#ifndef COMBO_TERM +#define COMBO_TERM TAPPING_TERM +#endif typedef struct { const uint16_t *keys; uint16_t action; uint32_t state; +#if COMBO_TERM + uint16_t timer; + uint16_t key; +#endif } combo_t; +#if COMBO_TERM +#define COMBO(ck, ca) {.keys = &(ck)[0], .action = (ca), .state = 0, .timer = 0, .key = 0} +#else +#define COMBO(ck, ca) {.keys = &(ck)[0], .action = (ca), .state = 0 } +#endif #define COMBO_END 0 -#define NUM_ELEMS(a) (sizeof(a)/sizeof 0[a]) +#ifndef COMBO_COUNT +#define COMBO_COUNT 0 +#endif - -extern combo_t key_combos[1]; +extern combo_t key_combos[COMBO_COUNT]; bool process_combo(uint16_t keycode, keyrecord_t *record); +void matrix_scan_combo(void); #endif \ No newline at end of file diff --git a/quantum/quantum.c b/quantum/quantum.c index eabeacff87..7767b63016 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -509,6 +509,11 @@ void matrix_scan_quantum() { #ifdef TAP_DANCE_ENABLE matrix_scan_tap_dance(); #endif + + #ifdef COMBO_ENABLE + matrix_scan_combo(); + #endif + matrix_scan_kb(); } From 56515ba5034e83c598891686cfdc43c186e5d487 Mon Sep 17 00:00:00 2001 From: climbalima Date: Sat, 10 Dec 2016 23:13:36 -0500 Subject: [PATCH 213/727] changed svg to support proto pcb --- keyboards/lets_split/imgs/letssplitv2.svg | 956 +++++++++++----------- 1 file changed, 482 insertions(+), 474 deletions(-) diff --git a/keyboards/lets_split/imgs/letssplitv2.svg b/keyboards/lets_split/imgs/letssplitv2.svg index c7bb1db86c..bf1e2756d4 100644 --- a/keyboards/lets_split/imgs/letssplitv2.svg +++ b/keyboards/lets_split/imgs/letssplitv2.svg @@ -22,7 +22,7 @@ style="display:inline">image/svg+xml \ No newline at end of file + style="fill:none;stroke:#0000ff;stroke-width:0.35433071;stroke-linecap:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /> \ No newline at end of file From 7bc1caa21cc9f67176b3dedbcbe68faeccd88003 Mon Sep 17 00:00:00 2001 From: climbalima Date: Sat, 10 Dec 2016 23:18:46 -0500 Subject: [PATCH 214/727] changed svg after merge --- keyboards/lets_split/imgs/letssplitv2.svg | 940 +++++++++++----------- 1 file changed, 470 insertions(+), 470 deletions(-) diff --git a/keyboards/lets_split/imgs/letssplitv2.svg b/keyboards/lets_split/imgs/letssplitv2.svg index bf1e2756d4..ce80db7269 100644 --- a/keyboards/lets_split/imgs/letssplitv2.svg +++ b/keyboards/lets_split/imgs/letssplitv2.svg @@ -549,9 +549,9 @@ bordercolor="#666666" pagecolor="#ffffff" id="base" - inkscape:zoom="11.23952" - inkscape:cx="326.81737" - inkscape:cy="112.75887" + inkscape:zoom="1.1519406" + inkscape:cx="274.80199" + inkscape:cy="339.22443" inkscape:window-x="0" inkscape:window-y="0" inkscape:current-layer="g21-5" @@ -3946,1515 +3946,1515 @@ id="g21" inkscape:label="0" transform="matrix(0.8,0,0,0.8,-113.89464,-481.88053)" - style="stroke:#0000ff;stroke-opacity:1;stroke-width:0.35433071;stroke-miterlimit:4;stroke-dasharray:none"> \ No newline at end of file + style="display:inline;fill:none;stroke:#0000ff;stroke-width:0.03543307;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> \ No newline at end of file From 0edfe55bfe4afd037918ff73e49552a28f39a5ca Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Mon, 12 Dec 2016 15:39:07 -0500 Subject: [PATCH 215/727] re-enable audio and extrakeys --- keyboards/planck/keymaps/default/Makefile | 2 +- keyboards/preonic/rules.mk | 6 +++--- quantum/audio/voices.c | 23 ++++++++++++++++++++++- quantum/audio/voices.h | 1 + 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/keyboards/planck/keymaps/default/Makefile b/keyboards/planck/keymaps/default/Makefile index 267a087ea9..17487ebbfc 100644 --- a/keyboards/planck/keymaps/default/Makefile +++ b/keyboards/planck/keymaps/default/Makefile @@ -10,7 +10,7 @@ EXTRAKEY_ENABLE = yes # Audio control and System control(+450) CONSOLE_ENABLE = no # Console for debug(+400) COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality MIDI_ENABLE = yes # MIDI controls AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode diff --git a/keyboards/preonic/rules.mk b/keyboards/preonic/rules.mk index c4ce2aacca..071bfdc7fe 100644 --- a/keyboards/preonic/rules.mk +++ b/keyboards/preonic/rules.mk @@ -56,11 +56,11 @@ BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) CONSOLE_ENABLE ?= no # Console for debug(+400) -COMMAND_ENABLE ?= yes # Commands for debug and configuration +COMMAND_ENABLE ?= no # Commands for debug and configuration NKRO_ENABLE ?= no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality -MIDI_ENABLE ?= no # MIDI controls -AUDIO_ENABLE ?= no # Audio output on port C6 +MIDI_ENABLE ?= yes # MIDI controls +AUDIO_ENABLE ?= yes # Audio output on port C6 UNICODE_ENABLE ?= no # Unicode BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. diff --git a/quantum/audio/voices.c b/quantum/audio/voices.c index 6d4172a06c..19f7b646ef 100644 --- a/quantum/audio/voices.c +++ b/quantum/audio/voices.c @@ -18,7 +18,7 @@ void voice_iterate() { } void voice_deiterate() { - voice = (voice - 1) % number_of_voices; + voice = (voice - 1 + number_of_voices) % number_of_voices; } float voice_envelope(float frequency) { @@ -31,6 +31,27 @@ float voice_envelope(float frequency) { polyphony_rate = 0; break; + case something: + polyphony_rate = 0; + switch (compensated_index) { + case 0 ... 9: + note_timbre = TIMBRE_12; + break; + + case 10 ... 19: + note_timbre = TIMBRE_25; + break; + + case 20 ... 200: + note_timbre = .25 + .125 + pow(((float)compensated_index - 20) / (200 - 20), 2)*.125; + break; + + default: + note_timbre = .25; + break; + } + break; + case butts_fader: polyphony_rate = 0; switch (compensated_index) { diff --git a/quantum/audio/voices.h b/quantum/audio/voices.h index b2495b23b5..b43def3d7d 100644 --- a/quantum/audio/voices.h +++ b/quantum/audio/voices.h @@ -11,6 +11,7 @@ float voice_envelope(float frequency); typedef enum { default_voice, + something, butts_fader, octave_crunch, duty_osc, From ae95834f5af7404c04e6fe3446019046278d814b Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Mon, 12 Dec 2016 16:06:41 -0500 Subject: [PATCH 216/727] specialise music variables --- quantum/process_keycode/process_music.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/quantum/process_keycode/process_music.c b/quantum/process_keycode/process_music.c index 2d52e47a72..bae43943e0 100644 --- a/quantum/process_keycode/process_music.c +++ b/quantum/process_keycode/process_music.c @@ -1,8 +1,8 @@ #include "process_music.h" bool music_activated = false; -uint8_t starting_note = 0x0C; -int offset = 7; +uint8_t music_starting_note = 0x0C; +int music_offset = 7; // music sequencer static bool music_sequence_recording = false; @@ -115,7 +115,7 @@ bool process_music(uint16_t keycode, keyrecord_t *record) { return false; } - float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)); + float freq = ((float)220.0)*pow(2.0, -5.0)*pow(2.0,(music_starting_note + SCALE[record->event.key.col + music_offset])/12.0+(MATRIX_ROWS - record->event.key.row)); if (record->event.pressed) { play_note(freq, 0xF); if (music_sequence_recording) { From 5dce74d0ff655766120b5c3ac4ad1c7b4f4d7212 Mon Sep 17 00:00:00 2001 From: climbalima Date: Mon, 12 Dec 2016 22:36:16 -0500 Subject: [PATCH 217/727] svg bug fix and added pilcrow to hand wire --- keyboards/handwired/pilcrow/Makefile | 3 + keyboards/handwired/pilcrow/config.h | 162 ++++++++++++++++++ .../pilcrow/keymaps/default/Makefile | 21 +++ .../pilcrow/keymaps/default/config.h | 8 + .../pilcrow/keymaps/default/keymap.c | 88 ++++++++++ .../pilcrow/keymaps/default/readme.md | 1 + keyboards/handwired/pilcrow/pilcrow.c | 28 +++ keyboards/handwired/pilcrow/pilcrow.h | 23 +++ keyboards/handwired/pilcrow/readme.md | 28 +++ keyboards/handwired/pilcrow/rules.mk | 67 ++++++++ keyboards/lets_split/imgs/letssplitv2.svg | 18 +- 11 files changed, 438 insertions(+), 9 deletions(-) create mode 100644 keyboards/handwired/pilcrow/Makefile create mode 100644 keyboards/handwired/pilcrow/config.h create mode 100644 keyboards/handwired/pilcrow/keymaps/default/Makefile create mode 100644 keyboards/handwired/pilcrow/keymaps/default/config.h create mode 100644 keyboards/handwired/pilcrow/keymaps/default/keymap.c create mode 100644 keyboards/handwired/pilcrow/keymaps/default/readme.md create mode 100644 keyboards/handwired/pilcrow/pilcrow.c create mode 100644 keyboards/handwired/pilcrow/pilcrow.h create mode 100644 keyboards/handwired/pilcrow/readme.md create mode 100644 keyboards/handwired/pilcrow/rules.mk diff --git a/keyboards/handwired/pilcrow/Makefile b/keyboards/handwired/pilcrow/Makefile new file mode 100644 index 0000000000..191c6bb664 --- /dev/null +++ b/keyboards/handwired/pilcrow/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/handwired/pilcrow/config.h b/keyboards/handwired/pilcrow/config.h new file mode 100644 index 0000000000..d63eeba36e --- /dev/null +++ b/keyboards/handwired/pilcrow/config.h @@ -0,0 +1,162 @@ +/* +Copyright 2012 Jun Wako + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6060 +#define DEVICE_VER 0x0001 +#define MANUFACTURER You +#define PRODUCT pilcrow +#define DESCRIPTION A custom keyboard + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 10 + +/* + * Keyboard Matrix Assignments + * + * Change this to how you wired your keyboard + * COLS: AVR pins used for columns, left to right + * ROWS: AVR pins used for rows, top to bottom + * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode) + * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode) + * +*/ +#define MATRIX_ROW_PINS { B4, F7, B1, B3 } +#define MATRIX_COL_PINS { D4, C6, D7, E6, F5, F6, B6, B2, F4, B5} +#define UNUSED_PINS + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +// #define BACKLIGHT_PIN B7 +// #define BACKLIGHT_BREATHING +// #define BACKLIGHT_LEVELS 3 + + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCING_DELAY 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* + * Force NKRO + * + * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved + * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the + * makefile for this to work.) + * + * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N) + * until the next keyboard reset. + * + * NKRO may prevent your keystrokes from being detected in the BIOS, but it is + * fully operational during normal computer usage. + * + * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N) + * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by + * bootmagic, NKRO mode will always be enabled until it is toggled again during a + * power-up. + * + */ +//#define FORCE_NKRO + +/* + * Magic Key Options + * + * Magic keys are hotkey commands that allow control over firmware functions of + * the keyboard. They are best used in combination with the HID Listen program, + * found here: https://www.pjrc.com/teensy/hid_listen.html + * + * The options below allow the magic key functionality to be changed. This is + * useful if your keyboard/keypad is missing keys and you want magic key support. + * + */ + +/* key combination for magic key command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* control how magic key switches layers */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false + +/* override magic key keymap */ +//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS +//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM +//#define MAGIC_KEY_HELP1 H +//#define MAGIC_KEY_HELP2 SLASH +//#define MAGIC_KEY_DEBUG D +//#define MAGIC_KEY_DEBUG_MATRIX X +//#define MAGIC_KEY_DEBUG_KBD K +//#define MAGIC_KEY_DEBUG_MOUSE M +//#define MAGIC_KEY_VERSION V +//#define MAGIC_KEY_STATUS S +//#define MAGIC_KEY_CONSOLE C +//#define MAGIC_KEY_LAYER0_ALT1 ESC +//#define MAGIC_KEY_LAYER0_ALT2 GRAVE +//#define MAGIC_KEY_LAYER0 0 +//#define MAGIC_KEY_LAYER1 1 +//#define MAGIC_KEY_LAYER2 2 +//#define MAGIC_KEY_LAYER3 3 +//#define MAGIC_KEY_LAYER4 4 +//#define MAGIC_KEY_LAYER5 5 +//#define MAGIC_KEY_LAYER6 6 +//#define MAGIC_KEY_LAYER7 7 +//#define MAGIC_KEY_LAYER8 8 +//#define MAGIC_KEY_LAYER9 9 +//#define MAGIC_KEY_BOOTLOADER PAUSE +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#endif diff --git a/keyboards/handwired/pilcrow/keymaps/default/Makefile b/keyboards/handwired/pilcrow/keymaps/default/Makefile new file mode 100644 index 0000000000..f4671a9d11 --- /dev/null +++ b/keyboards/handwired/pilcrow/keymaps/default/Makefile @@ -0,0 +1,21 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +NKRO_ENABLE = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/handwired/pilcrow/keymaps/default/config.h b/keyboards/handwired/pilcrow/keymaps/default/config.h new file mode 100644 index 0000000000..df06a26206 --- /dev/null +++ b/keyboards/handwired/pilcrow/keymaps/default/config.h @@ -0,0 +1,8 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +// place overrides here + +#endif \ No newline at end of file diff --git a/keyboards/handwired/pilcrow/keymaps/default/keymap.c b/keyboards/handwired/pilcrow/keymaps/default/keymap.c new file mode 100644 index 0000000000..e382e4c6ad --- /dev/null +++ b/keyboards/handwired/pilcrow/keymaps/default/keymap.c @@ -0,0 +1,88 @@ +#include "pilcrow.h" +#define _______ KC_TRNS +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = KEYMAP( \ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \ + KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, \ + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, \ + KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MT(MOD_LSFT, KC_SPC), MO(2), MO(3), KC_DEL, KC_ESC \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[1] = KEYMAP( \ + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, \ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, \ + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_PIPE, S(KC_QUOT), \ + _______, _______, _______, _______, KC_BSPC, KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_GRV \ +), +[2] = KEYMAP( \ + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \ + KC_TAB, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, \ + OSM(MOD_LSFT), KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_BSLS, KC_QUOT, \ + _______, _______, _______, _______, KC_ENT, KC_ENT, _______, KC_MNXT, KC_VOLD, KC_VOLU \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[3] = KEYMAP( \ + RESET, KC_UP, _______, _______, _______, _______, _______, KC_MS_WH_DOWN, KC_MS_U, KC_MS_WH_UP, \ + KC_LEFT, KC_DOWN, KC_RIGHT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_MS_L,KC_MS_D, KC_MS_R, \ + RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, \ + _______, _______, _______, _______, KC_MS_BTN1, KC_MS_BTN2, _______, _______, _______, _______ \ +) +}; + +const uint16_t PROGMEM fn_actions[] = { + +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + + +void matrix_init_user(void) { + +} + +void matrix_scan_user(void) { + +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + return true; +} + +void led_set_user(uint8_t usb_led) { + +} \ No newline at end of file diff --git a/keyboards/handwired/pilcrow/keymaps/default/readme.md b/keyboards/handwired/pilcrow/keymaps/default/readme.md new file mode 100644 index 0000000000..95472dfca8 --- /dev/null +++ b/keyboards/handwired/pilcrow/keymaps/default/readme.md @@ -0,0 +1 @@ +# The default keymap for pilcrow \ No newline at end of file diff --git a/keyboards/handwired/pilcrow/pilcrow.c b/keyboards/handwired/pilcrow/pilcrow.c new file mode 100644 index 0000000000..c8243df7bf --- /dev/null +++ b/keyboards/handwired/pilcrow/pilcrow.c @@ -0,0 +1,28 @@ +#include "pilcrow.h" + +void matrix_init_kb(void) { + // put your keyboard start-up code here + // runs once when the firmware starts up + + matrix_init_user(); +} + +void matrix_scan_kb(void) { + // put your looping keyboard code here + // runs every cycle (a lot) + + matrix_scan_user(); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware + + return process_record_user(keycode, record); +} + +void led_set_kb(uint8_t usb_led) { + // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + + led_set_user(usb_led); +} diff --git a/keyboards/handwired/pilcrow/pilcrow.h b/keyboards/handwired/pilcrow/pilcrow.h new file mode 100644 index 0000000000..7138ccb3f6 --- /dev/null +++ b/keyboards/handwired/pilcrow/pilcrow.h @@ -0,0 +1,23 @@ +#ifndef PILCROW_H +#define PILCROW_H + +#include "quantum.h" + +// This a shortcut to help you visually see your layout. +// The following is an example using the Planck MIT layout +// The first section contains all of the arguements +// The second converts the arguments into a two-dimensional array +#define KEYMAP( \ + k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \ + k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \ + k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \ + k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 \ +) \ +{ \ + { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09 }, \ + { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19 }, \ + { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29 }, \ + { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39 } \ +} + +#endif diff --git a/keyboards/handwired/pilcrow/readme.md b/keyboards/handwired/pilcrow/readme.md new file mode 100644 index 0000000000..7a7f6d2af5 --- /dev/null +++ b/keyboards/handwired/pilcrow/readme.md @@ -0,0 +1,28 @@ +pilcrow keyboard firmware +====================== + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme](/). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/pilcrow folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. + +Depending on which keymap you would like to use, you will have to compile slightly differently. + +### Default + +To build with the default keymap, simply run `make default`. + +### Other Keymaps + +Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files. + +To build the firmware binary hex file with a keymap just do `make` with a keymap like this: + +``` +$ make [default|jack|] +``` + +Keymaps follow the format **__\.c__** and are stored in the `keymaps` folder. diff --git a/keyboards/handwired/pilcrow/rules.mk b/keyboards/handwired/pilcrow/rules.mk new file mode 100644 index 0000000000..55898147dd --- /dev/null +++ b/keyboards/handwired/pilcrow/rules.mk @@ -0,0 +1,67 @@ +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 1024 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=512 + + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= yes # Console for debug(+400) +COMMAND_ENABLE ?= yes # Commands for debug and configuration +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE ?= no # USB Nkey Rollover +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default +MIDI_ENABLE ?= no # MIDI controls +UNICODE_ENABLE ?= no # Unicode +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +AUDIO_ENABLE ?= no # Audio output on port C6 diff --git a/keyboards/lets_split/imgs/letssplitv2.svg b/keyboards/lets_split/imgs/letssplitv2.svg index ce80db7269..f2cb9ce1e3 100644 --- a/keyboards/lets_split/imgs/letssplitv2.svg +++ b/keyboards/lets_split/imgs/letssplitv2.svg @@ -549,9 +549,9 @@ bordercolor="#666666" pagecolor="#ffffff" id="base" - inkscape:zoom="1.1519406" - inkscape:cx="274.80199" - inkscape:cy="339.22443" + inkscape:zoom="0.66928853" + inkscape:cx="198.17365" + inkscape:cy="416.82194" inkscape:window-x="0" inkscape:window-y="0" inkscape:current-layer="g21-5" @@ -3961,8 +3961,8 @@ style="fill:none;stroke:#0000ff;stroke-width:0.03543307;stroke-linecap:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" /> \ No newline at end of file From a747343b6172459a8b003907327a7d785ae2b43d Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 10 Dec 2016 03:19:32 +0700 Subject: [PATCH 218/727] Enable PS2 remote mode --- keyboards/handwired/promethium/promethium.h | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h index 662eeab990..5b3675c5ed 100644 --- a/keyboards/handwired/promethium/promethium.h +++ b/keyboards/handwired/promethium/promethium.h @@ -4,6 +4,7 @@ #include "quantum.h" #define PS2_INIT_DELAY 2000 +#define PS2_MOUSE_USE_REMOTE_MODE #define KEYMAP( \ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ From 9838ddcead713f5a61486bd2c3f230f29991cb79 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 10 Dec 2016 03:20:02 +0700 Subject: [PATCH 219/727] Pretend to be Thinkpad USB Keyboard --- keyboards/handwired/promethium/config.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h index 473af67d34..097920a548 100644 --- a/keyboards/handwired/promethium/config.h +++ b/keyboards/handwired/promethium/config.h @@ -20,9 +20,15 @@ along with this program. If not, see . #include "config_common.h" +#define USB_VENDOR_ID_LENOVO 0x17ef +#define USB_DEVICE_ID_LENOVO_TPKBD 0x6009 +#define USB_DEVICE_ID_LENOVO_CUSBKBD 0x6047 +#define USB_DEVICE_ID_LENOVO_CBTKBD 0x6048 +#define USB_DEVICE_ID_LENOVO_TPPRODOCK 0x6067 + /* USB Device descriptor parameter */ -#define VENDOR_ID 0xFEED -#define PRODUCT_ID 0x6660 +#define VENDOR_ID USB_VENDOR_ID_LENOVO +#define PRODUCT_ID USB_DEVICE_ID_LENOVO_CBTKBD #define DEVICE_VER 0x0001 #define MANUFACTURER Priyadi #define PRODUCT Promethium Keyboard From 0b54b32361ca0bb32086f0a8f74a9beedd3b6fa1 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Sat, 10 Dec 2016 19:39:27 +0700 Subject: [PATCH 220/727] Enable Adafruit BLE support --- keyboards/handwired/promethium/config.h | 2 +- keyboards/handwired/promethium/rules.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h index 097920a548..23fbfd0b9a 100644 --- a/keyboards/handwired/promethium/config.h +++ b/keyboards/handwired/promethium/config.h @@ -32,7 +32,7 @@ along with this program. If not, see . #define DEVICE_VER 0x0001 #define MANUFACTURER Priyadi #define PRODUCT Promethium Keyboard -#define DESCRIPTION Promethium Keyboard +#define DESCRIPTION /* key matrix size */ #define MATRIX_ROWS 8 diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk index 891f523c22..f305c07e8e 100644 --- a/keyboards/handwired/promethium/rules.mk +++ b/keyboards/handwired/promethium/rules.mk @@ -1,4 +1,3 @@ - # MCU name #MCU = at90usb1287 MCU = atmega32u4 @@ -66,6 +65,7 @@ BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. PS2_MOUSE_ENABLE ?= yes PS2_USE_INT ?= yes +ADAFRUIT_BLE_ENABLE ?= yes # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend From 32e952bda9ca6bde37c2a450c51a036b13aabd80 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Wed, 14 Dec 2016 05:56:17 +0700 Subject: [PATCH 221/727] disable remote mode --- keyboards/handwired/promethium/promethium.h | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/handwired/promethium/promethium.h b/keyboards/handwired/promethium/promethium.h index 5b3675c5ed..662eeab990 100644 --- a/keyboards/handwired/promethium/promethium.h +++ b/keyboards/handwired/promethium/promethium.h @@ -4,7 +4,6 @@ #include "quantum.h" #define PS2_INIT_DELAY 2000 -#define PS2_MOUSE_USE_REMOTE_MODE #define KEYMAP( \ k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \ From e5b165c2555365b495a29c4f85f8bf53a511304a Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Wed, 14 Dec 2016 07:10:28 +0700 Subject: [PATCH 222/727] fine tune trackpoint initialization --- .../promethium/keymaps/priyadi/keymap.c | 110 ++++-------------- keyboards/handwired/promethium/rules.mk | 1 + 2 files changed, 21 insertions(+), 90 deletions(-) diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c index bf797a7491..db33b9f666 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c +++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c @@ -736,106 +736,36 @@ void shutdown_user() void ps2_mouse_init_user() { + uint8_t rcv; + // set TrackPoint sensitivity PS2_MOUSE_SEND(0xE2, "set trackpoint sensitivity: 0xE2"); PS2_MOUSE_SEND(0x81, "set trackpoint sensitivity: 0x81"); PS2_MOUSE_SEND(0x4A, "set trackpoint sensitivity: 0x4A"); - PS2_MOUSE_SEND(0x60, "set trackpoint sensitivity: 0x60"); + PS2_MOUSE_SEND(0x49, "set trackpoint sensitivity: 0x59"); + + // set TrackPoint Negative Inertia factor + PS2_MOUSE_SEND(0xE2, "set negative inertia factor: 0xE2"); + PS2_MOUSE_SEND(0x81, "set negative inertia factor: 0x81"); + PS2_MOUSE_SEND(0x4D, "set negative inertia factor: 0x4D"); + PS2_MOUSE_SEND(0x06, "set negative inertia factor: 0x06"); // set TrackPoint speed // (transfer function upper plateau speed) PS2_MOUSE_SEND(0xE2, "set trackpoint speed: 0xE2"); PS2_MOUSE_SEND(0x81, "set trackpoint speed: 0x81"); PS2_MOUSE_SEND(0x60, "set trackpoint speed: 0x60"); - PS2_MOUSE_SEND(0x90, "set trackpoint speed: 0x90"); + PS2_MOUSE_SEND(0x61, "set trackpoint speed: 0x61"); - // set TrackPoint Negative Inertia factor - PS2_MOUSE_SEND(0xE2, "set negative inertia factor: 0xE2"); - PS2_MOUSE_SEND(0x81, "set negative inertia factor: 0x81"); - PS2_MOUSE_SEND(0x4D, "set negative inertia factor: 0x4D"); - PS2_MOUSE_SEND(0x03, "set negative inertia factor: 0x03"); - - // disable up threshold (click) - PS2_MOUSE_SEND(0xE2, "set disable up threshold: 0xE2"); - PS2_MOUSE_SEND(0x47, "set disable up threshold: 0x47"); - PS2_MOUSE_SEND(0x2C, "set disable up threshold: 0x2C"); - PS2_MOUSE_SEND(0x01, "set disable up threshold: 0x01"); - - // enable TrackPoint Press to Select (PtS) - // print("ps2_mouse_init: send 0xE2: "); - // rcv = ps2_host_send(0xE2); - // phex(rcv); phex(ps2_error); print("\n"); - // print("ps2_mouse_init: send 0x47: "); - // rcv = ps2_host_send(0x47); - // phex(rcv); phex(ps2_error); print("\n"); - // print("ps2_mouse_init: send 0x2C: "); - // rcv = ps2_host_send(0x2C); - // phex(rcv); phex(ps2_error); print("\n"); - // print("ps2_mouse_init: send 0x00: "); - // rcv = ps2_host_send(0x00); - // phex(rcv); phex(ps2_error); print("\n"); - - // set TrackPoint Press to Select threshold - // print("ps2_mouse_init: send 0xE2: "); - // rcv = ps2_host_send(0xE2); - // phex(rcv); phex(ps2_error); print("\n"); - // print("ps2_mouse_init: send 0x81: "); - // rcv = ps2_host_send(0x81); - // phex(rcv); phex(ps2_error); print("\n"); - // print("ps2_mouse_init: send 0x5C: "); - // rcv = ps2_host_send(0x5C); - // phex(rcv); phex(ps2_error); print("\n"); - // // default PtS threshold is 0x08 - // print("ps2_mouse_init: send 0x04: "); - // rcv = ps2_host_send(0x04); - // phex(rcv); phex(ps2_error); print("\n"); - - // set TrackPoint Press to Select time constant (zTc) - // print("ps2_mouse_init: send 0xE2: "); - // rcv = ps2_host_send(0xE2); - // phex(rcv); phex(ps2_error); print("\n"); - // print("ps2_mouse_init: send 0x81: "); - // rcv = ps2_host_send(0x81); - // phex(rcv); phex(ps2_error); print("\n"); - // print("ps2_mouse_init: send 0x5E: "); - // rcv = ps2_host_send(0x5E); - // phex(rcv); phex(ps2_error); print("\n"); - // // default zTc is 0x26 - // print("ps2_mouse_init: send 0x45: "); - // rcv = ps2_host_send(0x45); - // phex(rcv); phex(ps2_error); print("\n"); - - /* - // set TrackPoint Press to Select Jenks Curvature (jkcur) - print("ps2_mouse_init: send 0xE2: "); + // inquire pts status rcv = ps2_host_send(0xE2); - phex(rcv); phex(ps2_error); print("\n"); - print("ps2_mouse_init: send 0x81: "); - rcv = ps2_host_send(0x81); - phex(rcv); phex(ps2_error); print("\n"); - print("ps2_mouse_init: send 0x5D: "); - rcv = ps2_host_send(0x5D); - phex(rcv); phex(ps2_error); print("\n"); - // default jkcur is 0x87 - print("ps2_mouse_init: send 0x87: "); - rcv = ps2_host_send(0x87); - phex(rcv); phex(ps2_error); print("\n"); - */ - - /* - // set TrackPoint Minimum Drag (mindrag) - print("ps2_mouse_init: send 0xE2: "); - rcv = ps2_host_send(0xE2); - phex(rcv); phex(ps2_error); print("\n"); - print("ps2_mouse_init: send 0x81: "); - rcv = ps2_host_send(0x81); - phex(rcv); phex(ps2_error); print("\n"); - print("ps2_mouse_init: send 0x59: "); - rcv = ps2_host_send(0x59); - phex(rcv); phex(ps2_error); print("\n"); - // default PtS mindrag is 0x14 - print("ps2_mouse_init: send 0x14: "); - rcv = ps2_host_send(0x14); - phex(rcv); phex(ps2_error); print("\n"); - */ + rcv = ps2_host_send(0x2C); + rcv = ps2_host_recv_response(); + if ((rcv & 1) == 1) { + // if on, disable pts + rcv = ps2_host_send(0xE2); + rcv = ps2_host_send(0x47); + rcv = ps2_host_send(0x2C); + rcv = ps2_host_send(0x01); + } } \ No newline at end of file diff --git a/keyboards/handwired/promethium/rules.mk b/keyboards/handwired/promethium/rules.mk index f305c07e8e..465ef3359a 100644 --- a/keyboards/handwired/promethium/rules.mk +++ b/keyboards/handwired/promethium/rules.mk @@ -66,6 +66,7 @@ RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this PS2_MOUSE_ENABLE ?= yes PS2_USE_INT ?= yes ADAFRUIT_BLE_ENABLE ?= yes +API_SYSEX_ENABLE ?= no # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend From bd5f323bec8f5bd309eb570a65685f23f44654a3 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Wed, 14 Dec 2016 16:21:01 +0700 Subject: [PATCH 223/727] IBM Terminal M-122 converter support Code ported from TMK to QMK. --- keyboards/converter/Makefile | 3 + keyboards/converter/converter.c | 1 + keyboards/converter/converter.h | 1 + keyboards/converter/ibm_terminal/Makefile | 3 + keyboards/converter/ibm_terminal/README | 40 +++ keyboards/converter/ibm_terminal/config.h | 138 +++++++++++ .../converter/ibm_terminal/ibm_terminal.c | 6 + .../converter/ibm_terminal/ibm_terminal.h | 80 ++++++ .../ibm_terminal/keymaps/default/Makefile | 27 ++ .../ibm_terminal/keymaps/default/config.h | 6 + .../ibm_terminal/keymaps/default/keymap.c | 123 ++++++++++ keyboards/converter/ibm_terminal/led.c | 33 +++ keyboards/converter/ibm_terminal/matrix.c | 232 ++++++++++++++++++ keyboards/converter/ibm_terminal/rules.mk | 72 ++++++ keyboards/converter/rules.mk | 0 15 files changed, 765 insertions(+) create mode 100644 keyboards/converter/Makefile create mode 100644 keyboards/converter/converter.c create mode 100644 keyboards/converter/converter.h create mode 100644 keyboards/converter/ibm_terminal/Makefile create mode 100644 keyboards/converter/ibm_terminal/README create mode 100644 keyboards/converter/ibm_terminal/config.h create mode 100644 keyboards/converter/ibm_terminal/ibm_terminal.c create mode 100644 keyboards/converter/ibm_terminal/ibm_terminal.h create mode 100644 keyboards/converter/ibm_terminal/keymaps/default/Makefile create mode 100644 keyboards/converter/ibm_terminal/keymaps/default/config.h create mode 100644 keyboards/converter/ibm_terminal/keymaps/default/keymap.c create mode 100644 keyboards/converter/ibm_terminal/led.c create mode 100644 keyboards/converter/ibm_terminal/matrix.c create mode 100644 keyboards/converter/ibm_terminal/rules.mk create mode 100644 keyboards/converter/rules.mk diff --git a/keyboards/converter/Makefile b/keyboards/converter/Makefile new file mode 100644 index 0000000000..4e2a6f00fd --- /dev/null +++ b/keyboards/converter/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif \ No newline at end of file diff --git a/keyboards/converter/converter.c b/keyboards/converter/converter.c new file mode 100644 index 0000000000..aa4bef63a9 --- /dev/null +++ b/keyboards/converter/converter.c @@ -0,0 +1 @@ +#include "converter.h" \ No newline at end of file diff --git a/keyboards/converter/converter.h b/keyboards/converter/converter.h new file mode 100644 index 0000000000..7a4a4835e6 --- /dev/null +++ b/keyboards/converter/converter.h @@ -0,0 +1 @@ +#include "quantum.h" \ No newline at end of file diff --git a/keyboards/converter/ibm_terminal/Makefile b/keyboards/converter/ibm_terminal/Makefile new file mode 100644 index 0000000000..191c6bb664 --- /dev/null +++ b/keyboards/converter/ibm_terminal/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../../Makefile +endif \ No newline at end of file diff --git a/keyboards/converter/ibm_terminal/README b/keyboards/converter/ibm_terminal/README new file mode 100644 index 0000000000..6b7aff2c84 --- /dev/null +++ b/keyboards/converter/ibm_terminal/README @@ -0,0 +1,40 @@ +Keyboard converter for IBM terminal keyboard +============================================ + +This is a port of TMK's converter/terminal_usb to QMK. + +It supports PS/2 Scan Code Set 3 and runs on USB AVR chips such like PJRC Teensy. +I tested the converter on ATMega32U4 with 1392595(102keys) and 6110345(122keys). + +Source code: https://github.com/tmk/tmk_keyboard +Article: http://geekhack.org/index.php?topic=27272.0 + + +CONNECTION +---------- +Keyboard ATMega32U4 +---------------------- +Data: PD2 +Clock: PD5 + +And VCC and GND, of course. See RESOURCE for keyboard connector pin assign. + + +BUILD +----- +$ git clone https://github.com/tmk/tmk_keyboard.git +$ cd converter/terminal_usb +$ make + + +RESOURCE +-------- +Soarer's Converter: http://geekhack.org/index.php?topic=17458.0 +102keys(1392595): http://geekhack.org/index.php?topic=10737.0 +122keys(1390876): http://www.seasip.info/VintagePC/ibm_1390876.html +KbdBabel: http://www.kbdbabel.org/ +RJ45 Connector: http://www.kbdbabel.org/conn/kbd_connector_ibmterm.png +DIN Connector: http://www.kbdbabel.org/conn/kbd_connector_ibm3179_318x_319x.png +WinAVR: http://winavr.sourceforge.net/ + +EOF diff --git a/keyboards/converter/ibm_terminal/config.h b/keyboards/converter/ibm_terminal/config.h new file mode 100644 index 0000000000..4dd85f6983 --- /dev/null +++ b/keyboards/converter/ibm_terminal/config.h @@ -0,0 +1,138 @@ +/* +Copyright 2012 Jun Wako +Copyright 2016 Priyadi Iman Nurcahyo + +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 . +*/ + +#ifndef CONFIG_H +#define CONFIG_H + + +#define VENDOR_ID 0xFEED +#define PRODUCT_ID 0x6535 +#define DEVICE_VER 0x0100 +#define MANUFACTURER QMK +#define PRODUCT IBM Terminal Keyboard +#define DESCRIPTION USB converter for IBM Terminal Keyboard + + +/* matrix size */ +#define MATRIX_ROWS 17 // keycode bit: 3-0 +#define MATRIX_COLS 8 // keycode bit: 6-4 + + +/* legacy keymap support */ +#define USE_LEGACY_KEYMAP + + +/* key combination for command */ +#define IS_COMMAND() ( \ + keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT) | MOD_BIT(KC_RALT) | MOD_BIT(KC_RCTL)) \ +) + + +/* + * PS/2 USART configuration for ATMega32U4 + */ +#ifdef PS2_USE_USART +/* XCK for clock line */ +#define PS2_CLOCK_PORT PORTD +#define PS2_CLOCK_PIN PIND +#define PS2_CLOCK_DDR DDRD +#define PS2_CLOCK_BIT 5 +/* RXD for data line */ +#define PS2_DATA_PORT PORTD +#define PS2_DATA_PIN PIND +#define PS2_DATA_DDR DDRD +#define PS2_DATA_BIT 2 + +/* synchronous, odd parity, 1-bit stop, 8-bit data, sample at falling edge */ +/* set DDR of CLOCK as input to be slave */ +#define PS2_USART_INIT() do { \ + PS2_CLOCK_DDR &= ~(1< + +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 . +*/ + +#include +#include +#include "keycode.h" +#include "print.h" +#include "debug.h" +#include "util.h" +#include "ibm_terminal.h" + + +// Assign Fn key(0-7) to a layer to which switch with the Fn key pressed. +const uint8_t PROGMEM fn_layer[] = { + 0, // Fn0 + 0, // Fn1 + 0, // Fn2 + 0, // Fn3 + 0, // Fn4 + 0, // Fn5 + 0, // Fn6 + 0 // Fn7 +}; + +// Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer. +// See layer.c for details. +const uint8_t PROGMEM fn_keycode[] = { + KC_NO, // Fn0 + KC_NO, // Fn1 + KC_NO, // Fn2 + KC_NO, // Fn3 + KC_NO, // Fn4 + KC_NO, // Fn5 + KC_NO, // Fn6 + KC_NO // Fn7 +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* 0: default + * ,---. ,---------------. ,---------------. ,---------------. ,-----------. + * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| + * `---' `---------------' `---------------' `---------------' `-----------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|BS | |Ins|Hom|PgU| |NmL| /| *| -| + * |-----------------------------------------------------------| |-----------| |---------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| | + * |-----------------------------------------------------------| `-----------' |-----------| +| + * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '| #|Retu| | 4| 5| 6| | + * |-----------------------------------------------------------| ,---. |---------------| + * |Shif| \| Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | + * |-----------------------------------------------------------| ,-----------. |-----------|Ent| + * |Ctrl| |Alt | Space |Alt | |Ctrl| |Lef|Dow|Rig| | 0| .| | + * `----' `---------------------------------------' `----' `-----------' `---------------' + */ +/* + KEYMAP( + F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, + F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, + + PSCR,ESC, GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, + SLCK,INT4, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, DEL, END, PGDN, P7, P8, P9, PPLS, + PAUS,INT5, CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, UP, P4, P5, P6, PCMM, + APP, INT6, LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, LEFT,INT2,RGHT, P1, P2, P3, PENT, + RGUI,LGUI, LCTL, LALT, SPC, RALT, RCTL, DOWN, NO, P0, PDOT,NO + ), +*/ + // pseudo ANSI + KEYMAP( + F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, + F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, + + PSCR,ESC, ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NO, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, + SLCK,INT4, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, NO, DEL, END, PGDN, P7, P8, P9, PPLS, + PAUS,INT5, LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, BSLS,ENT, UP, P4, P5, P6, PCMM, + APP, INT6, LSFT,LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, NO, RSFT, LEFT,INT2,RGHT, P1, P2, P3, PENT, + RGUI,LGUI, LCTL, LALT, SPC, LGUI, GRV, DOWN, NO, P0, PDOT,NO + ), + +/* 101-key keymaps + */ + /* 0: default + * ,---. ,---------------. ,---------------. ,---------------. ,-----------. + * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| + * `---' `---------------' `---------------' `---------------' `-----------' + * ,-----------------------------------------------------------. ,-----------. ,---------------. + * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backspa| |Ins|Hom|PgU| |NmL| /| *| -| + * |-----------------------------------------------------------| |-----------| |---------------| + * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| | + * |-----------------------------------------------------------| `-----------' |-----------| +| + * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '|Return | | 4| 5| 6| | + * |-----------------------------------------------------------| ,---. |---------------| + * |Shift | Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | + * |-----------------------------------------------------------| ,-----------. |-----------|Ent| + * |Ctrl| |Alt | Space |Alt | |Ctrl| |Lef|Dow|Rig| | 0| .| | + * `----' `---------------------------------------' `----' `-----------' `---------------' + */ +/* + KEYMAP_101( + ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK, BRK, + + GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,MINS, EQL,BSPC, INS,HOME,PGUP, NLCK,PSLS,PAST,PMNS, + TAB, Q, W, E, R, T, Y, U, I, O, P,LBRC,RBRC,BSLS, DEL, END,PGDN, P7, P8, P9, + CAPS, A, S, D, F, G, H, J, K, L,SCLN,QUOT, ENT, P4, P5, P6,PPLS, + LSFT, Z, X, C, V, B, N, M,COMM, DOT,SLSH, RSFT, UP, P1, P2, P3, + LCTL, LALT, SPC, RALT, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT + ), +*/ +}; diff --git a/keyboards/converter/ibm_terminal/led.c b/keyboards/converter/ibm_terminal/led.c new file mode 100644 index 0000000000..e448e84ec7 --- /dev/null +++ b/keyboards/converter/ibm_terminal/led.c @@ -0,0 +1,33 @@ +/* +Copyright 2011 Jun Wako + +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 . +*/ + +#include "stdint.h" +#include "ps2.h" +#include "led.h" + + +void led_set(uint8_t usb_led) +{ + uint8_t ps2_led = 0; + if (usb_led & (1< + +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 . +*/ + +#include +#include +#include +#include +#include "print.h" +#include "util.h" +#include "debug.h" +#include "ps2.h" +#include "matrix.h" + +#define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) +#define print_matrix_header() print("\nr/c 01234567\n") +#define matrix_bitpop(i) bitpop(matrix[i]) +#define ROW_SHIFTER ((uint8_t)1) + + +static void matrix_make(uint8_t code); +static void matrix_break(uint8_t code); + + +/* + * Matrix Array usage: + * 'Scan Code Set 3' is assigned into 17x8 cell matrix. + * + * 8bit wide + * +---------+ + * 0| | + * :| | 0x00-0x87 + * ;| | + * 17| | + * +---------+ + */ +static uint8_t matrix[MATRIX_ROWS]; +#define ROW(code) (code>>3) +#define COL(code) (code&0x07) + + +void matrix_init(void) +{ + debug_enable = true; + //debug_matrix = true; + //debug_keyboard = true; + //debug_mouse = false; + + ps2_host_init(); + + // initialize matrix state: all keys off + for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00; + + return; +} + +uint8_t matrix_scan(void) +{ + + // scan code reading states + static enum { + RESET, + RESET_RESPONSE, + KBD_ID0, + KBD_ID1, + CONFIG, + READY, + F0, + } state = RESET; + + uint8_t code; + if ((code = ps2_host_recv())) { + debug("r"); debug_hex(code); debug(" "); + } + + switch (state) { + case RESET: + debug("wFF "); + if (ps2_host_send(0xFF) == 0xFA) { + debug("[ack]\nRESET_RESPONSE: "); + state = RESET_RESPONSE; + } + break; + case RESET_RESPONSE: + if (code == 0xAA) { + debug("[ok]\nKBD_ID: "); + state = KBD_ID0; + } else if (code) { + debug("err\nRESET: "); + state = RESET; + } + break; + // after reset receive keyboad ID(2 bytes) + case KBD_ID0: + if (code) { + state = KBD_ID1; + } + break; + case KBD_ID1: + if (code) { + debug("\nCONFIG: "); + state = CONFIG; + } + break; + case CONFIG: + debug("wF8 "); + if (ps2_host_send(0xF8) == 0xFA) { + debug("[ack]\nREADY\n"); + state = READY; + } + break; + case READY: + switch (code) { + case 0x00: + break; + case 0xF0: + state = F0; + debug(" "); + break; + default: // normal key make + if (code < 0x88) { + matrix_make(code); + } else { + debug("unexpected scan code at READY: "); debug_hex(code); debug("\n"); + } + state = READY; + debug("\n"); + } + break; + case F0: // Break code + switch (code) { + case 0x00: + break; + default: + if (code < 0x88) { + matrix_break(code); + } else { + debug("unexpected scan code at F0: "); debug_hex(code); debug("\n"); + } + state = READY; + debug("\n"); + } + break; + } + return 1; +} + +inline +uint8_t matrix_get_row(uint8_t row) +{ + return matrix[row]; +} + +inline +static void matrix_make(uint8_t code) +{ + if (!matrix_is_on(ROW(code), COL(code))) { + matrix[ROW(code)] |= 1< Date: Wed, 14 Dec 2016 22:33:56 +0700 Subject: [PATCH 224/727] Update KEYMAP macro to be consistent with the rest of QMK --- .../converter/ibm_terminal/ibm_terminal.c | 6 +- .../converter/ibm_terminal/ibm_terminal.h | 70 ++++++++-------- .../ibm_terminal/keymaps/default/keymap.c | 82 ++++--------------- keyboards/converter/ibm_terminal/matrix.c | 5 ++ 4 files changed, 58 insertions(+), 105 deletions(-) diff --git a/keyboards/converter/ibm_terminal/ibm_terminal.c b/keyboards/converter/ibm_terminal/ibm_terminal.c index d87041157d..17296864a3 100644 --- a/keyboards/converter/ibm_terminal/ibm_terminal.c +++ b/keyboards/converter/ibm_terminal/ibm_terminal.c @@ -1,6 +1,6 @@ #include "ibm_terminal.h" -void matrix_init_kb(void) { +// void matrix_init_kb(void) { - matrix_init_user(); -} \ No newline at end of file +// matrix_init_user(); +// } \ No newline at end of file diff --git a/keyboards/converter/ibm_terminal/ibm_terminal.h b/keyboards/converter/ibm_terminal/ibm_terminal.h index 9729343329..c6468349ca 100644 --- a/keyboards/converter/ibm_terminal/ibm_terminal.h +++ b/keyboards/converter/ibm_terminal/ibm_terminal.h @@ -3,6 +3,8 @@ #include "quantum.h" +void matrix_init_user(void); + /* * IBM Terminal keyboard 6110345(122keys)/1392595(102keys) * http://geekhack.org/showthread.php?10737-What-Can-I-Do-With-a-Terminal-Model-M @@ -27,23 +29,23 @@ K83,K0A, K12,K13,K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K51,K59, K61,K62,K6A, K69,K72,K7A,K79, \ K01,K09, K11, K19, K29, K39, K58, K60, K68,K70,K71,K78 \ ) { \ - { KC_NO, KC_##K01, KC_NO, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07 }, \ - { KC_##K08, KC_##K09, KC_##K0A, KC_##K0B, KC_##K0C, KC_##K0D, KC_##K0E, KC_##K0F }, \ - { KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ - { KC_##K18, KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ - { KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ - { KC_##K28, KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ - { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \ - { KC_##K38, KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \ - { KC_##K40, KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \ - { KC_##K48, KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \ - { KC_##K50, KC_##K51, KC_##K52, KC_##K53, KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ - { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_##K5D, KC_##K5E, KC_##K5F }, \ - { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ - { KC_##K68, KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \ - { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \ - { KC_##K78, KC_##K79, KC_##K7A, KC_##K7B, KC_##K7C, KC_##K7D, KC_##K7E, KC_NO }, \ - { KC_NO, KC_NO, KC_NO, KC_##K83, KC_##K84, KC_NO, KC_NO, KC_NO, }, \ + { KC_NO, K01, KC_NO, K03, K04, K05, K06, K07 }, \ + { K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ + { K10, K11, K12, K13, K14, K15, K16, K17 }, \ + { K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ + { K20, K21, K22, K23, K24, K25, K26, K27 }, \ + { K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \ + { K30, K31, K32, K33, K34, K35, K36, K37 }, \ + { K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \ + { K40, K41, K42, K43, K44, K45, K46, K47 }, \ + { K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \ + { K50, K51, K52, K53, K54, K55, K56, K57 }, \ + { K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \ + { K60, K61, K62, K63, K64, K65, K66, K67 }, \ + { K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \ + { K70, K71, K72, K73, K74, K75, K76, K77 }, \ + { K78, K79, K7A, K7B, K7C, K7D, K7E, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, K83, K84, KC_NO, KC_NO, KC_NO,}, \ } /* @@ -58,23 +60,23 @@ K12, K1A,K22,K21,K2A,K32,K31,K3A,K41,K49,K4A, K59, K63, K69,K72,K7A, \ K11, K19, K29, K39, K58, K61,K60,K6A, K70, K71,K79 \ ) { \ - { KC_NO, KC_NO , KC_NO, KC_NO , KC_NO , KC_NO , KC_NO , KC_##K07 }, \ - { KC_##K08, KC_NO , KC_NO , KC_NO , KC_NO , KC_##K0D, KC_##K0E, KC_##K0F }, \ - { KC_NO , KC_##K11, KC_##K12, KC_NO , KC_##K14, KC_##K15, KC_##K16, KC_##K17 }, \ - { KC_NO , KC_##K19, KC_##K1A, KC_##K1B, KC_##K1C, KC_##K1D, KC_##K1E, KC_##K1F }, \ - { KC_NO , KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27 }, \ - { KC_NO , KC_##K29, KC_##K2A, KC_##K2B, KC_##K2C, KC_##K2D, KC_##K2E, KC_##K2F }, \ - { KC_NO , KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37 }, \ - { KC_NO , KC_##K39, KC_##K3A, KC_##K3B, KC_##K3C, KC_##K3D, KC_##K3E, KC_##K3F }, \ - { KC_NO , KC_##K41, KC_##K42, KC_##K43, KC_##K44, KC_##K45, KC_##K46, KC_##K47 }, \ - { KC_NO , KC_##K49, KC_##K4A, KC_##K4B, KC_##K4C, KC_##K4D, KC_##K4E, KC_##K4F }, \ - { KC_NO , KC_NO , KC_##K52, KC_NO , KC_##K54, KC_##K55, KC_##K56, KC_##K57 }, \ - { KC_##K58, KC_##K59, KC_##K5A, KC_##K5B, KC_##K5C, KC_NO , KC_##K5E, KC_##K5F }, \ - { KC_##K60, KC_##K61, KC_##K62, KC_##K63, KC_##K64, KC_##K65, KC_##K66, KC_##K67 }, \ - { KC_NO , KC_##K69, KC_##K6A, KC_##K6B, KC_##K6C, KC_##K6D, KC_##K6E, KC_##K6F }, \ - { KC_##K70, KC_##K71, KC_##K72, KC_##K73, KC_##K74, KC_##K75, KC_##K76, KC_##K77 }, \ - { KC_NO , KC_##K79, KC_##K7A, KC_NO , KC_##K7C, KC_##K7D, KC_##K7E, KC_NO }, \ - { KC_NO, KC_NO, KC_NO, KC_NO , KC_##K84, KC_NO, KC_NO, KC_NO, }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K07 }, \ + { K08, KC_NO, KC_NO, KC_NO, KC_NO, K0D, K0E, K0F }, \ + { KC_NO, K11, K12, KC_NO, K14, K15, K16, K17 }, \ + { KC_NO, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ + { KC_NO, K21, K22, K23, K24, K25, K26, K27 }, \ + { KC_NO, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \ + { KC_NO, K31, K32, K33, K34, K35, K36, K37 }, \ + { KC_NO, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \ + { KC_NO, K41, K42, K43, K44, K45, K46, K47 }, \ + { KC_NO, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \ + { KC_NO, KC_NO, K52, KC_NO, K54, K55, K56, K57 }, \ + { K58, K59, K5A, K5B, K5C, KC_NO, K5E, K5F }, \ + { K60, K61, K62, K63, K64, K65, K66, K67 }, \ + { KC_NO, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \ + { K70, K71, K72, K73, K74, K75, K76, K77 }, \ + { KC_NO, K79, K7A, KC_NO, K7C, K7D, K7E, KC_NO }, \ + { KC_NO, KC_NO, KC_NO, KC_NO, K84, KC_NO, KC_NO, KC_NO,}, \ } #endif \ No newline at end of file diff --git a/keyboards/converter/ibm_terminal/keymaps/default/keymap.c b/keyboards/converter/ibm_terminal/keymaps/default/keymap.c index e41b82e123..2beb51106e 100644 --- a/keyboards/converter/ibm_terminal/keymaps/default/keymap.c +++ b/keyboards/converter/ibm_terminal/keymaps/default/keymap.c @@ -23,72 +23,18 @@ along with this program. If not, see . #include "util.h" #include "ibm_terminal.h" - -// Assign Fn key(0-7) to a layer to which switch with the Fn key pressed. -const uint8_t PROGMEM fn_layer[] = { - 0, // Fn0 - 0, // Fn1 - 0, // Fn2 - 0, // Fn3 - 0, // Fn4 - 0, // Fn5 - 0, // Fn6 - 0 // Fn7 -}; - -// Assign Fn key(0-7) to a keycode sent when release Fn key without use of the layer. -// See layer.c for details. -const uint8_t PROGMEM fn_keycode[] = { - KC_NO, // Fn0 - KC_NO, // Fn1 - KC_NO, // Fn2 - KC_NO, // Fn3 - KC_NO, // Fn4 - KC_NO, // Fn5 - KC_NO, // Fn6 - KC_NO // Fn7 -}; - - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - /* 0: default - * ,---. ,---------------. ,---------------. ,---------------. ,-----------. - * |Esc| |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau| - * `---' `---------------' `---------------' `---------------' `-----------' - * ,-----------------------------------------------------------. ,-----------. ,---------------. - * | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \|BS | |Ins|Hom|PgU| |NmL| /| *| -| - * |-----------------------------------------------------------| |-----------| |---------------| - * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| |Del|End|PgD| | 7| 8| 9| | - * |-----------------------------------------------------------| `-----------' |-----------| +| - * |CapsLo| A| S| D| F| G| H| J| K| L| ;| '| #|Retu| | 4| 5| 6| | - * |-----------------------------------------------------------| ,---. |---------------| - * |Shif| \| Z| X| C| V| B| N| M| ,| ,| /|Shift | |Up | | 1| 2| 3| | - * |-----------------------------------------------------------| ,-----------. |-----------|Ent| - * |Ctrl| |Alt | Space |Alt | |Ctrl| |Lef|Dow|Rig| | 0| .| | - * `----' `---------------------------------------' `----' `-----------' `---------------' - */ -/* - KEYMAP( - F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, - F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, + // Layer 0 - PSCR,ESC, GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, JYEN,BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, - SLCK,INT4, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, BSLS, DEL, END, PGDN, P7, P8, P9, PPLS, - PAUS,INT5, CAPS,A, S, D, F, G, H, J, K, L, SCLN,QUOT, NUHS,ENT, UP, P4, P5, P6, PCMM, - APP, INT6, LSFT,NUBS,Z, X, C, V, B, N, M, COMM,DOT, SLSH, RO, RSFT, LEFT,INT2,RGHT, P1, P2, P3, PENT, - RGUI,LGUI, LCTL, LALT, SPC, RALT, RCTL, DOWN, NO, P0, PDOT,NO - ), -*/ - // pseudo ANSI KEYMAP( - F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, - F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, - PSCR,ESC, ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, NO, BSPC, INS, HOME,PGUP, NLCK,PSLS,PAST,PMNS, - SLCK,INT4, TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC, NO, DEL, END, PGDN, P7, P8, P9, PPLS, - PAUS,INT5, LCTL,A, S, D, F, G, H, J, K, L, SCLN,QUOT, BSLS,ENT, UP, P4, P5, P6, PCMM, - APP, INT6, LSFT,LSFT,Z, X, C, V, B, N, M, COMM,DOT, SLSH, NO, RSFT, LEFT,INT2,RGHT, P1, P2, P3, PENT, - RGUI,LGUI, LCTL, LALT, SPC, LGUI, GRV, DOWN, NO, P0, PDOT,NO + KC_PSCR,KC_ESC, 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_NO, KC_BSPC, KC_INS, KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, + KC_SLCK,KC_INT4, 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_NO, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_PAUS,KC_INT5, 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_BSLS,KC_ENT, KC_UP, KC_P4, KC_P5, KC_P6, KC_PCMM, + KC_APP, KC_INT6, KC_LSFT,KC_LSFT,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_LEFT,KC_INT2,KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_RGUI,KC_LGUI, KC_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_GRV, KC_DOWN, KC_NO, KC_P0, KC_PDOT,KC_NO ), /* 101-key keymaps @@ -111,13 +57,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ /* KEYMAP_101( - ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, PSCR,SLCK, BRK, + KC_ESC, 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_PSCR,KC_SLCK, KC_BRK, - GRV, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,MINS, EQL,BSPC, INS,HOME,PGUP, NLCK,PSLS,PAST,PMNS, - TAB, Q, W, E, R, T, Y, U, I, O, P,LBRC,RBRC,BSLS, DEL, END,PGDN, P7, P8, P9, - CAPS, A, S, D, F, G, H, J, K, L,SCLN,QUOT, ENT, P4, P5, P6,PPLS, - LSFT, Z, X, C, V, B, N, M,COMM, DOT,SLSH, RSFT, UP, P1, P2, P3, - LCTL, LALT, SPC, RALT, RCTL, LEFT,DOWN,RGHT, P0, PDOT,PENT + KC_GRV, 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_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, + 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_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9, + 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_P4, KC_P5, KC_P6,KC_PPLS, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0, KC_PDOT,KC_PENT ), */ }; diff --git a/keyboards/converter/ibm_terminal/matrix.c b/keyboards/converter/ibm_terminal/matrix.c index c0b5971c3e..9d717b61f5 100644 --- a/keyboards/converter/ibm_terminal/matrix.c +++ b/keyboards/converter/ibm_terminal/matrix.c @@ -52,6 +52,10 @@ static uint8_t matrix[MATRIX_ROWS]; #define COL(code) (code&0x07) +__attribute__ ((weak)) +void matrix_init_user(void) { +} + void matrix_init(void) { debug_enable = true; @@ -64,6 +68,7 @@ void matrix_init(void) // initialize matrix state: all keys off for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00; + matrix_init_user(); return; } From e58304c0948dabaa334c583e9b9146a2e85995f5 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Wed, 14 Dec 2016 22:34:23 +0700 Subject: [PATCH 225/727] My layout for M-122 terminal keyboard --- .../ibm_terminal/keymaps/priyadi/Makefile | 27 ++ .../ibm_terminal/keymaps/priyadi/config.h | 6 + .../ibm_terminal/keymaps/priyadi/keymap.c | 312 ++++++++++++++++++ 3 files changed, 345 insertions(+) create mode 100644 keyboards/converter/ibm_terminal/keymaps/priyadi/Makefile create mode 100644 keyboards/converter/ibm_terminal/keymaps/priyadi/config.h create mode 100644 keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c diff --git a/keyboards/converter/ibm_terminal/keymaps/priyadi/Makefile b/keyboards/converter/ibm_terminal/keymaps/priyadi/Makefile new file mode 100644 index 0000000000..9ec2464943 --- /dev/null +++ b/keyboards/converter/ibm_terminal/keymaps/priyadi/Makefile @@ -0,0 +1,27 @@ +# Build Options +# change to "no" to disable the options, or define them in the Makefile in +# the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700) +EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) +CONSOLE_ENABLE ?= no # Console for debug(+400) +COMMAND_ENABLE ?= no # Commands for debug and configuration +NKRO_ENABLE ?= yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality +MIDI_ENABLE ?= no # MIDI controls +AUDIO_ENABLE ?= no # Audio output on port C6 +UNICODE_ENABLE ?= no # Unicode +UNICODEMAP_ENABLE ?= yes +BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE ?= no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +PS2_USE_USART ?= yes +API_SYSEX_ENABLE ?= no + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend + +ifndef QUANTUM_DIR + include ../../../../../Makefile +endif + diff --git a/keyboards/converter/ibm_terminal/keymaps/priyadi/config.h b/keyboards/converter/ibm_terminal/keymaps/priyadi/config.h new file mode 100644 index 0000000000..7fa3bf328e --- /dev/null +++ b/keyboards/converter/ibm_terminal/keymaps/priyadi/config.h @@ -0,0 +1,6 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +#endif diff --git a/keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c b/keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c new file mode 100644 index 0000000000..592f7654ba --- /dev/null +++ b/keyboards/converter/ibm_terminal/keymaps/priyadi/keymap.c @@ -0,0 +1,312 @@ +/* +Copyright 2016 Priyadi Iman Nurcahyo + +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 . +*/ + +#include "keycode.h" +#include "print.h" +#include "debug.h" +#include "util.h" +#include "ibm_terminal.h" +#include "action_layer.h" + +// Fillers to make layering clearer + +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +enum layers { + QWE, // qwerty + COL, // colemak + WOR, // workman + DVO, // dvorak + + MOU, // mouse keys + EMO, // emoji + SYS, // system +}; + +enum keycodes { + // default layout switcher + LAY_QWE = SAFE_RANGE, + LAY_COL, + LAY_WOR, + LAY_DVO, + + // layer switchers + LYR_SYS, + LYR_EMO, + + // os switchers + OS_LIN, + OS_WIN, + OS_MAC, +}; + +// unicode map + +enum unicode_name { + GRIN, // grinning face 😊 + TJOY, // tears of joy 😂 + SMILE, // grining face with smiling eyes 😁 + HEART, // heart ❤ + EYERT, // smiling face with heart shaped eyes 😍 + CRY, // crying face 😭 + SMEYE, // smiling face with smiling eyes 😊 + UNAMU, // unamused 😒 + KISS, // kiss 😘 + HART2, // two hearts 💕 + WEARY, // weary 😩 + OKHND, // ok hand sign 👌 + PENSV, // pensive 😔 + SMIRK, // smirk 😏 + RECYC, // recycle ♻ + WINK, // wink 😉 + THMUP, // thumb up 👍 + THMDN, // thumb down 👎 + PRAY, // pray 🙏 + PHEW, // relieved 😌 + MUSIC, // musical notes + FLUSH, // flushed 😳 + CELEB, // celebration 🙌 + CRY2, // crying face 😢 + COOL, // smile with sunglasses 😎 + NOEVS, // see no evil + NOEVH, // hear no evil + NOEVK, // speak no evil + POO, // pile of poo + EYES, // eyes + VIC, // victory hand + BHART, // broken heart + SLEEP, // sleeping face + SMIL2, // smiling face with open mouth & sweat + HUNRD, // 100 + CONFU, // confused + TONGU, // face with tongue & winking eye + DISAP, // disappointed + YUMMY, // face savoring delicious food + CLAP, // hand clapping + FEAR, // face screaming in fear + HORNS, // smiling face with horns + HALO, // smiling face with halo + BYE, // waving hand + SUN, // sun + MOON, // moon + SKULL, // skull +}; + +const uint32_t PROGMEM unicode_map[] = { + [GRIN] = 0x1F600, + [TJOY] = 0x1F602, + [SMILE] = 0x1F601, + [HEART] = 0x2764, + [EYERT] = 0x1f60d, + [CRY] = 0x1f62d, + [SMEYE] = 0x1F60A, + [UNAMU] = 0x1F612, + [KISS] = 0x1F618, + [HART2] = 0x1F495, + [WEARY] = 0x1F629, + [OKHND] = 0x1F44C, + [PENSV] = 0x1F614, + [SMIRK] = 0x1F60F, + [RECYC] = 0x267B, + [WINK] = 0x1F609, + [THMUP] = 0x1F44D, + [THMDN] = 0x1F44E, + [PRAY] = 0x1F64F, + [PHEW] = 0x1F60C, + [MUSIC] = 0x1F3B6, + [FLUSH] = 0x1F633, + [CELEB] = 0x1F64C, + [CRY2] = 0x1F622, + [COOL] = 0x1F60E, + [NOEVS] = 0x1F648, + [NOEVH] = 0x1F649, + [NOEVK] = 0x1F64A, + [POO] = 0x1F4A9, + [EYES] = 0x1F440, + [VIC] = 0x270C, + [BHART] = 0x1F494, + [SLEEP] = 0x1F634, + [SMIL2] = 0x1F605, + [HUNRD] = 0x1F4AF, + [CONFU] = 0x1F615, + [TONGU] = 0x1F61C, + [DISAP] = 0x1F61E, + [YUMMY] = 0x1F60B, + [CLAP] = 0x1F44F, + [FEAR] = 0x1F631, + [HORNS] = 0x1F608, + [HALO] = 0x1F607, + [BYE] = 0x1F44B, + [SUN] = 0x2600, + [MOON] = 0x1F314, + [SKULL] = 0x1F480, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* qwerty */ + [QWE] = KEYMAP( + KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_PSCR, KC_SLCK, KC_PAUS, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, + + MO(EMO), MO(SYS), 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, XXXXXXX, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, + KC_MNXT, KC_VOLU, 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, XXXXXXX, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_MPLY, KC_MUTE, 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_BSLS, KC_ENT, KC_UP, KC_P4, KC_P5, KC_P6, KC_PCMM, + KC_MPRV, KC_VOLD, KC_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, KC_LEFT, TG(MOU), KC_RGHT, KC_P1, KC_P2, KC_P3, KC_PENT, + KC_LGUI, KC_APP, KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_DOWN, XXXXXXX, KC_P0, KC_PDOT, XXXXXXX + ), + + /* colemak */ + [COL] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* workman */ + [WOR] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* dvorak */ + [DVO] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* system */ + [SYS] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, LAY_QWE, OS_WIN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, LAY_DVO, _______, _______, _______, _______, LAY_WOR, OS_LIN, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, LAY_COL, _______, _______, _______, OS_MAC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + + /* mouse keys */ + [MOU] = KEYMAP( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_BTN4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_U, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_BTN5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_L, _______, KC_MS_R, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + KC_BTN1, KC_BTN3, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MS_D, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + + /* emoji */ + [EMO] = KEYMAP( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, X(CRY2),X(WEARY),X(EYERT),X(SMIRK), X(TJOY), X(RECYC),X(UNAMU),X(MUSIC),X(OKHND),X(PENSV),XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, X(PRAY),X(SMILE),X(SMIL2),X(FLUSH), X(GRIN), X(HEART),X(BYE), X(KISS), X(CELEB),X(COOL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,X(SLEEP),X(CLAP), X(CRY), X(VIC), X(BHART),X(SUN), X(SMEYE),X(WINK), X(MOON), X(CONFU), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX + ), + + /* + [XXX] = KEYMAP( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + */ +}; + +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + /* layout switcher */ + case LAY_QWE: + if (record->event.pressed) { + persistant_default_layer_set(1UL<event.pressed) { + persistant_default_layer_set(1UL<event.pressed) { + persistant_default_layer_set(1UL<event.pressed) { + persistant_default_layer_set(1UL< Date: Thu, 15 Dec 2016 07:22:31 +0800 Subject: [PATCH 226/727] enable brackets using the - key on the right, and cleanups --- .../ergodox/keymaps/dvorak_programmer/keymap.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c index f3d02f688d..3d7e1893c9 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c +++ b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c @@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BASE] = KEYMAP( // layer 0 : default // left hand KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, - LT(MOUSE,KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(KEY_SEL), + LT(MOUSE,KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(KEY_SEL), MO(SHELL_NAV), KC_A, KC_O, KC_E, KC_U, KC_I, KC_FN3, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, MO(KEY_NAV), OSL(SHORTCUTS),KC_FN4, KC_FN5,OSL(SYMBOL),MO(NUMBER), @@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSLS, KC_PGUP, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, - KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, + KC_D, KC_H, KC_T, KC_N, KC_S, LT(BRACKETS,KC_MINS), KC_PGDN, KC_B, KC_M, KC_W, KC_V, KC_Z, TD(TD_SHIFT_CAPSLOCK), // lower keys - browser tab control RSFT(RCTL(KC_TAB)), RCTL(KC_TAB), RCTL(KC_T), LALT(KC_LEFT), RCTL(KC_W), @@ -209,12 +209,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [BRACKETS] = KEYMAP( // left hand - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,M(OPEN_CLOSE_CURLY), M(OPEN_CLOSE_PAREN),M(OPEN_CLOSE_BRACKET), KC_TRNS,KC_TRNS, + KC_TRNS,KC_LPRN, KC_RPRN, KC_LBRC, KC_RBRC, KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS,KC_TRNS, + KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, // right hand From 16483409cf9b97304b769b539225944dd9630ccb Mon Sep 17 00:00:00 2001 From: climbalima Date: Wed, 14 Dec 2016 23:11:04 -0500 Subject: [PATCH 227/727] better switch spacing in svg --- keyboards/lets_split/imgs/letssplitv2.svg | 1984 ++------------------- 1 file changed, 122 insertions(+), 1862 deletions(-) diff --git a/keyboards/lets_split/imgs/letssplitv2.svg b/keyboards/lets_split/imgs/letssplitv2.svg index f2cb9ce1e3..d33706dfc4 100644 --- a/keyboards/lets_split/imgs/letssplitv2.svg +++ b/keyboards/lets_split/imgs/letssplitv2.svg @@ -16,7 +16,7 @@ id="svg2242" sodipodi:version="0.32" inkscape:version="0.91 r13725" - sodipodi:docname="letssplitv2.svg" + sodipodi:docname="letssplittest.svg" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1" style="display:inline"> \ No newline at end of file + id="path25-2" + d="m -801.90794,332.02108 a 5.2558782,5.2558782 0 1 0 -10.51175,0 5.2558782,5.2558782 0 1 0 10.51175,0 z" + style="fill:none;stroke:#0000ff;stroke-width:0.03543307;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> \ No newline at end of file From 83e613ad239459582ae28f78b6c81535b9b138d7 Mon Sep 17 00:00:00 2001 From: Kyle Smith Date: Wed, 14 Dec 2016 23:24:40 -0500 Subject: [PATCH 228/727] Allow power consumption to be set per-keyboard. --- keyboards/ergodox/ez/config.h | 2 ++ tmk_core/protocol/lufa/descriptor.c | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/keyboards/ergodox/ez/config.h b/keyboards/ergodox/ez/config.h index c2750a321f..a3dc5bf152 100644 --- a/keyboards/ergodox/ez/config.h +++ b/keyboards/ergodox/ez/config.h @@ -56,6 +56,8 @@ along with this program. If not, see . /* Set 0 if debouncing isn't needed */ #define DEBOUNCE 5 +#define USB_MAX_POWER_CONSUMPTION 50 + /* * Feature disable options * These options are also useful to firmware size reduction. diff --git a/tmk_core/protocol/lufa/descriptor.c b/tmk_core/protocol/lufa/descriptor.c index bf47787d29..14d99b50bd 100644 --- a/tmk_core/protocol/lufa/descriptor.c +++ b/tmk_core/protocol/lufa/descriptor.c @@ -40,6 +40,9 @@ #include "report.h" #include "descriptor.h" +#ifndef USB_MAX_POWER_CONSUMPTION +#define USB_MAX_POWER_CONSUMPTION 500 +#endif /******************************************************************************* * HID Report Descriptors @@ -294,7 +297,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .ConfigAttributes = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_REMOTEWAKEUP), - .MaxPowerConsumption = USB_CONFIG_POWER_MA(500) + .MaxPowerConsumption = USB_CONFIG_POWER_MA(USB_MAX_POWER_CONSUMPTION) }, /* From 826c929c4917fee467b5f1525e81d365e6cf35b1 Mon Sep 17 00:00:00 2001 From: Samuel Ryan Goodwin Date: Thu, 15 Dec 2016 09:52:57 +0100 Subject: [PATCH 229/727] Make keymap compile again. --- keyboards/planck/keymaps/sgoodwin/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/planck/keymaps/sgoodwin/Makefile b/keyboards/planck/keymaps/sgoodwin/Makefile index b2ca419445..9081c6d3ec 100644 --- a/keyboards/planck/keymaps/sgoodwin/Makefile +++ b/keyboards/planck/keymaps/sgoodwin/Makefile @@ -19,6 +19,7 @@ AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +API_SYSEX_ENABLE = no # Disable extra stuff for ergodoxen # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend From c641e46567391276f7580996d544060d1bbac702 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo Date: Fri, 16 Dec 2016 01:16:55 +0700 Subject: [PATCH 230/727] QWERTZ style dot & comma, move QUOT to SCLN position --- .../promethium/keymaps/priyadi/keymap.c | 58 +++++++++++++---- keyboards/planck/keymaps/priyadi/keymap.c | 65 ++++++++++++++++--- 2 files changed, 100 insertions(+), 23 deletions(-) diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c index db33b9f666..7ae269563f 100644 --- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c +++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c @@ -425,7 +425,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_QWERTY] = KEYMAP( KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, - KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT , + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT , KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL ), @@ -442,10 +442,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_COLEMAK] = KEYMAP( - KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, - KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT , - KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL + _______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, _______, + _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______, + _______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), /* Workman @@ -460,10 +460,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_WORKMAN] = KEYMAP( - KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC, - KC_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_ENT , - KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, - KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL + _______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, _______, + _______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, _______, + _______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), /* Punc @@ -551,7 +551,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_GUI] = KEYMAP( _______, LGUI(KC_1),LGUI(KC_2),LGUI(KC_3),LGUI(KC_4),LGUI(KC_5),LGUI(KC_6),LGUI(KC_7),LGUI(KC_8),LGUI(KC_9),LGUI(KC_0), _______, - LINUX, _______, KC_VOLD, KC_MUTE, KC_VOLU,_______,_______,KC_WWW_BACK,_______,KC_WWW_FORWARD,_______, QWERTY, + LINUX, _______, KC_VOLD, KC_MUTE, KC_VOLU,_______,_______,KC_WWW_BACK,_______,KC_WWW_FORWARD,KC_PAUS, QWERTY, WIN, _______, KC_MPRV, KC_MPLY, KC_MNXT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, COLEMAK, OSX, _______, _______, _______, _______, BL_DEC, BL_INC, _______, _______, RGB_VAI, RGB_VAD, WORKMAN ), @@ -582,6 +582,39 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { #endif switch (keycode) { + // QWERTZ style comma and dot: semicolon and colon when shifted + case KC_COMM: + if (record->event.pressed) { + bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT); + bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT); + if (lshifted || rshifted) { + if (lshifted) unregister_code(KC_LSFT); + if (rshifted) unregister_code(KC_RSFT); + register_code(KC_SCLN); + unregister_code(KC_SCLN); + if (lshifted) register_code(KC_LSFT); + if (rshifted) register_code(KC_RSFT); + } else { + register_code(KC_COMM); + unregister_code(KC_COMM); + } + } + return false; + break; + case KC_DOT: + if (record->event.pressed) { + if ((keyboard_report->mods & MOD_BIT(KC_LSFT)) || (keyboard_report->mods & MOD_BIT(KC_RSFT))) { + register_code(KC_SCLN); + unregister_code(KC_SCLN); + } else { + register_code(KC_DOT); + unregister_code(KC_DOT); + } + } + return false; + break; + + // layout switchers case QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE @@ -610,8 +643,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return false; break; - - + // layer switcher case PUNC: if (record->event.pressed) { layer_on(_PUNC); @@ -673,7 +705,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return false; break; - + // OS switchers case LINUX: set_unicode_input_mode(UC_LNX); #ifdef AUDIO_ENABLE diff --git a/keyboards/planck/keymaps/priyadi/keymap.c b/keyboards/planck/keymaps/priyadi/keymap.c index 6e7f4e7355..f0dafebf3f 100644 --- a/keyboards/planck/keymaps/priyadi/keymap.c +++ b/keyboards/planck/keymaps/priyadi/keymap.c @@ -179,7 +179,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_QWERTY] = { {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT }, + {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT }, {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, {KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL} }, @@ -196,10 +196,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_COLEMAK] = { - {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, - {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT }, - {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL} + {_______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, _______}, + {_______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______}, + {_______, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, /* Workman @@ -214,10 +214,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_WORKMAN] = { - {KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC}, - {KC_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_ENT }, - {KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT}, - {KC_LCTL, KC_LGUI, KC_LALT, PUNC, NUM, KC_SPC, KC_SPC, FUNC, EMOJI, KC_RALT, KC_RGUI, KC_RCTL} + {_______, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, _______}, + {_______, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, _______}, + {_______, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, /* Punc @@ -322,6 +322,7 @@ float tone_linux[][2] = SONG(CAPS_LOCK_ON_SOUND); float tone_windows[][2] = SONG(SCROLL_LOCK_ON_SOUND); float tone_osx[][2] = SONG(NUM_LOCK_ON_SOUND); float tone_click[][2] = SONG(MUSICAL_NOTE(_F3, 2)); +float tone_release[][2] = SONG(MUSICAL_NOTE(_A3, 2)); #endif void persistant_default_layer_set(uint16_t default_layer) { @@ -331,9 +332,49 @@ void persistant_default_layer_set(uint16_t default_layer) { bool process_record_user(uint16_t keycode, keyrecord_t *record) { // faux clicky - if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0); + // if (record->event.pressed) PLAY_NOTE_ARRAY(tone_click, false, 0); + #ifdef AUDIO_ENABLE + if (record->event.pressed) { + PLAY_NOTE_ARRAY(tone_click, false, 0); + } else { + PLAY_NOTE_ARRAY(tone_release, false, 0); + } + #endif switch (keycode) { + // QWERTZ style comma and dot: semicolon and colon when shifted + case KC_COMM: + if (record->event.pressed) { + bool lshifted = keyboard_report->mods & MOD_BIT(KC_LSFT); + bool rshifted = keyboard_report->mods & MOD_BIT(KC_RSFT); + if (lshifted || rshifted) { + if (lshifted) unregister_code(KC_LSFT); + if (rshifted) unregister_code(KC_RSFT); + register_code(KC_SCLN); + unregister_code(KC_SCLN); + if (lshifted) register_code(KC_LSFT); + if (rshifted) register_code(KC_RSFT); + } else { + register_code(KC_COMM); + unregister_code(KC_COMM); + } + } + return false; + break; + case KC_DOT: + if (record->event.pressed) { + if ((keyboard_report->mods & MOD_BIT(KC_LSFT)) || (keyboard_report->mods & MOD_BIT(KC_RSFT))) { + register_code(KC_SCLN); + unregister_code(KC_SCLN); + } else { + register_code(KC_DOT); + unregister_code(KC_DOT); + } + } + return false; + break; + + // layout switcher case QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE @@ -361,6 +402,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + + // layer switchers case PUNC: if (record->event.pressed) { layer_on(_PUNC); @@ -397,6 +440,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { } return false; break; + + // OS switchers case LINUX: set_unicode_input_mode(UC_LNX); #ifdef AUDIO_ENABLE From 34d6f07d2cce5e54ae01b935e3b605fb1eb6e022 Mon Sep 17 00:00:00 2001 From: Pavlos Vinieratos Date: Fri, 16 Dec 2016 09:46:03 +0100 Subject: [PATCH 231/727] make a sysctl MO button so i can quickly use the arrows --- keyboards/ergodox/keymaps/pvinis/keymap.c | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/keyboards/ergodox/keymaps/pvinis/keymap.c b/keyboards/ergodox/keymaps/pvinis/keymap.c index 87ad70c919..3c49118842 100644 --- a/keyboards/ergodox/keymaps/pvinis/keymap.c +++ b/keyboards/ergodox/keymaps/pvinis/keymap.c @@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | | | | | | | | | | | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | | | | | | + * | | | | | | |SYSCTL| | | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * |BEGIN |QWERTY| | | | @@ -66,11 +66,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,TG(MOUSE) ,KC_BSPC ,KC_LSFT ,TD(TD_LAYR) - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO + ,MO(SYSCTL) ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,TG(SYSCTL) ,KC_NO ,AP_SLCK @@ -110,11 +110,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS - ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS ,KC_EQL - ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS - ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT - ,KC_RPRN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT - ,KC_UP ,KC_DOWN ,KC_TRNS ,KC_QUOT ,KC_TRNS + ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS ,KC_EQL + ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS + ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT + ,KC_RPRN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT + ,KC_TRNS ,KC_DOWN ,KC_TRNS ,KC_QUOT ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS @@ -246,7 +246,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* /// ,KC_PTRN*/,KC_NO ,KC_MUTE ,KC_HOME ,KC_UP ,KC_END ,KC_NO ,KC_NO ,KC_VOLU ,KC_LEFT ,KC_DOWN ,KC_RGHT ,KC_NO ,LCTL(LSFT(KC_PWR)) ,KC_NO ,KC_VOLD ,KC_MPRV ,KC_MPLY ,KC_MNXT ,KC_NO ,KC_SLEP - ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_PWR + ,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_PWR ,KC_NO ,KC_NO ,KC_NO From 6e7cfa83b9424061914793b02757fa4ec75b356b Mon Sep 17 00:00:00 2001 From: Ofer Plesser Date: Fri, 16 Dec 2016 21:50:28 +0200 Subject: [PATCH 232/727] Refactored as well as added support for action keys in combos --- quantum/process_keycode/process_combo.c | 125 ++++++++++++++---------- quantum/process_keycode/process_combo.h | 34 ++++--- 2 files changed, 90 insertions(+), 69 deletions(-) diff --git a/quantum/process_keycode/process_combo.c b/quantum/process_keycode/process_combo.c index ff7e8aba55..e2189ad98b 100644 --- a/quantum/process_keycode/process_combo.c +++ b/quantum/process_keycode/process_combo.c @@ -1,39 +1,39 @@ #include "process_combo.h" #include "print.h" -#define SEND_KEY(key) \ -do { \ - register_code16(key); \ - send_keyboard_report(); \ - unregister_code16(key); \ -} while(0) #define COMBO_TIMER_ELAPSED -1 -#if COMBO_TERM -#define IS_COMBO_KEY_HELD(combo) (COMBO_TIMER_ELAPSED == combo->timer ? false : true) -#define RESET_COMBO_TIMER_AND_KEY(combo) combo->timer = 0; combo->key = 0 -#else -#define IS_COMBO_KEY_HELD(combo) (true) -#define RESET_COMBO_TIMER_AND_KEY(combo) do {} while (0) -#endif - __attribute__ ((weak)) -combo_t key_combos[COMBO_COUNT] = { +combo_t key_combos[] = { }; -static inline void reset_combo(combo_t *combo) -{ - combo->state = 0; - RESET_COMBO_TIMER_AND_KEY(combo); +__attribute__ ((weak)) +void process_combo_event(uint8_t combo_index, bool pressed) { + } -#define ALL_COMBO_KEYS_ARE_DOWN (((1<state) -#define NO_COMBO_KEYS_ARE_DOWN (0 == combo->state) -#define KEY_STATE_DOWN(key) do{ combo->state |= (1<state &= ~(1<state) +#define NO_COMBO_KEYS_ARE_DOWN (0 == combo->state) +#define KEY_STATE_DOWN(key) do{ combo->state |= (1<state &= ~(1<timer ? false : true; if (record->event.pressed) { KEY_STATE_DOWN(index); - -#if COMBO_TERM + if (is_combo_active) { - combo->timer = timer_read(); - combo->key = keycode; - } + if (ALL_COMBO_KEYS_ARE_DOWN) { /* Combo was pressed */ + send_combo(combo->keycode, true); + combo->timer = COMBO_TIMER_ELAPSED; + } else { /* Combo key was pressed */ + combo->timer = timer_read(); +#ifdef COMBO_ALLOW_ACTION_KEYS + combo->prev_record = *record; +#else + combo->prev_key = keycode; #endif - + } + } } else { - if (is_combo_active && combo->state) { /* Combo key was tapped */ - RESET_COMBO_TIMER_AND_KEY(combo); - SEND_KEY(keycode); + if (ALL_COMBO_KEYS_ARE_DOWN) { /* Combo was released */ + send_combo(combo->keycode, false); } -#if COMBO_TERM - if (!is_combo_active && keycode == combo->key) { /* Held combo key was released */ - unregister_code16(combo->key); - } + if (is_combo_active) { /* Combo key was tapped */ +#ifdef COMBO_ALLOW_ACTION_KEYS + record->event.pressed = true; + process_action(record, store_or_get_action(record->event.pressed, record->event.key)); + record->event.pressed = false; + process_action(record, store_or_get_action(record->event.pressed, record->event.key)); +#else + register_code16(keycode); + send_keyboard_report(); + unregister_code16(keycode); #endif + combo->timer = 0; + } - KEY_STATE_UP(index); + KEY_STATE_UP(index); } - if (ALL_COMBO_KEYS_ARE_DOWN && is_combo_active) { - SEND_KEY(combo->action); - reset_combo(combo); - } - - if(NO_COMBO_KEYS_ARE_DOWN && !is_combo_active) { - reset_combo(combo); + if (NO_COMBO_KEYS_ARE_DOWN) { + combo->timer = 0; } return is_combo_active; @@ -91,8 +100,8 @@ bool process_combo(uint16_t keycode, keyrecord_t *record) { bool is_combo_key = false; - for (int i = 0; i < COMBO_COUNT; ++i) { - combo_t *combo = &key_combos[i]; + for (current_combo_index = 0; current_combo_index < COMBO_COUNT; ++current_combo_index) { + combo_t *combo = &key_combos[current_combo_index]; is_combo_key |= process_single_combo(combo, keycode, record); } @@ -101,17 +110,25 @@ bool process_combo(uint16_t keycode, keyrecord_t *record) void matrix_scan_combo(void) { -#if COMBO_TERM for (int i = 0; i < COMBO_COUNT; ++i) { combo_t *combo = &key_combos[i]; if (combo->timer && combo->timer != COMBO_TIMER_ELAPSED && timer_elapsed(combo->timer) > COMBO_TERM) { - + + /* This disables the combo, meaning key events for this + * combo will be handled by the next processors in the chain + */ combo->timer = COMBO_TIMER_ELAPSED; - unregister_code16(combo->key); - register_code16(combo->key); + +#ifdef COMBO_ALLOW_ACTION_KEYS + process_action(&combo->prev_record, + store_or_get_action(combo->prev_record.event.pressed, + combo->prev_record.event.key)); +#else + unregister_code16(combo->prev_key); + register_code16(combo->prev_key); +#endif } } -#endif -} \ No newline at end of file +} diff --git a/quantum/process_keycode/process_combo.h b/quantum/process_keycode/process_combo.h index c475acd332..847f2b7376 100644 --- a/quantum/process_keycode/process_combo.h +++ b/quantum/process_keycode/process_combo.h @@ -5,35 +5,39 @@ #include "progmem.h" #include "quantum.h" -#ifndef COMBO_TERM -#define COMBO_TERM TAPPING_TERM -#endif - typedef struct { const uint16_t *keys; - uint16_t action; + uint16_t keycode; +#ifdef EXTRA_EXTRA_LONG_COMBOS uint32_t state; -#if COMBO_TERM +#elif EXTRA_LONG_COMBOS + uint16_t state; +#else + uint8_t state; +#endif uint16_t timer; - uint16_t key; +#ifdef COMBO_ALLOW_ACTION_KEYS + keyrecord_t prev_record; +#else + uint16_t prev_key; #endif } combo_t; -#if COMBO_TERM -#define COMBO(ck, ca) {.keys = &(ck)[0], .action = (ca), .state = 0, .timer = 0, .key = 0} -#else -#define COMBO(ck, ca) {.keys = &(ck)[0], .action = (ca), .state = 0 } -#endif +#define COMBO(ck, ca) {.keys = &(ck)[0], .keycode = (ca)} +#define COMBO_ACTION(ck) {.keys = &(ck)[0]} + #define COMBO_END 0 #ifndef COMBO_COUNT #define COMBO_COUNT 0 #endif - -extern combo_t key_combos[COMBO_COUNT]; +#ifndef COMBO_TERM +#define COMBO_TERM TAPPING_TERM +#endif bool process_combo(uint16_t keycode, keyrecord_t *record); void matrix_scan_combo(void); +void process_combo_event(uint8_t combo_index, bool pressed); -#endif \ No newline at end of file +#endif From 40abf8bc9ce22cab472f79e3a97c413ac5648986 Mon Sep 17 00:00:00 2001 From: Ofer Plesser Date: Fri, 16 Dec 2016 22:00:29 +0200 Subject: [PATCH 233/727] Moved combo processing lower down in process logic --- quantum/quantum.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/quantum/quantum.c b/quantum/quantum.c index 7767b63016..e5385bc21c 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -113,9 +113,6 @@ bool process_record_quantum(keyrecord_t *record) { if (!( process_record_kb(keycode, record) && - #ifdef COMBO_ENABLE - process_combo(keycode, record) && - #endif #ifdef MIDI_ENABLE process_midi(keycode, record) && #endif @@ -131,6 +128,9 @@ bool process_record_quantum(keyrecord_t *record) { #ifndef DISABLE_CHORDING process_chording(keycode, record) && #endif + #ifdef COMBO_ENABLE + process_combo(keycode, record) && + #endif #ifdef UNICODE_ENABLE process_unicode(keycode, record) && #endif From df32d5b7699f43ec6edfe88970294f36a460572b Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Fri, 16 Dec 2016 20:13:40 -0500 Subject: [PATCH 234/727] Removes alt/j dual function --- keyboards/ergodox/keymaps/default/keymap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/ergodox/keymaps/default/keymap.c b/keyboards/ergodox/keymaps/default/keymap.c index 4eff280850..4477cab310 100644 --- a/keyboards/ergodox/keymaps/default/keymap.c +++ b/keyboards/ergodox/keymaps/default/keymap.c @@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | BkSp | A | S | D | F | G |------| |------| H |J/Alt | K | L |; / L2|' / Cmd | + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' @@ -49,11 +49,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_HOME, KC_SPC,KC_BSPC,KC_END, // right hand - KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, - TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, - KC_H, ALT_T(KC_J), KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), - MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, - KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT), + MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1, KC_LALT, CTL_T(KC_ESC), KC_PGUP, KC_PGDN,KC_TAB, KC_ENT From 8a65c640ecdaacfd57b86b684ec80b481f5d4b3b Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Fri, 16 Dec 2016 20:53:42 -0500 Subject: [PATCH 235/727] Adds a troubleshooting layout for resetting the EEPROM --- .../ergodox/keymaps/reset_eeprom/keymap.c | 140 ++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 keyboards/ergodox/keymaps/reset_eeprom/keymap.c diff --git a/keyboards/ergodox/keymaps/reset_eeprom/keymap.c b/keyboards/ergodox/keymaps/reset_eeprom/keymap.c new file mode 100644 index 0000000000..f708454ce2 --- /dev/null +++ b/keyboards/ergodox/keymaps/reset_eeprom/keymap.c @@ -0,0 +1,140 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" +#include "version.h" + +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys + +enum custom_keycodes { + PLACEHOLDER = SAFE_RANGE, // can always be here + EPRM, + VRSN, + RGB_SLD +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | App | LGui | | Alt |Ctrl/Esc| + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| Tab |Enter | + * | |ace | End | | PgDn | | | + * `--------------------' `----------------------' + */ +// If it accepts an argument (i.e, is a function), it doesn't need KC_. +// Otherwise, it needs KC_* +[BASE] = KEYMAP( // layer 0 : default + // left hand + EPRM, EPRM, EPRM, EPRM, EPRM, EPRM, EPRM, + EPRM, EPRM, EPRM, EPRM, EPRM, EPRM, EPRM, + EPRM, EPRM, EPRM, EPRM, EPRM, EPRM, + EPRM, EPRM, EPRM, EPRM, EPRM, EPRM, EPRM, + EPRM, EPRM, EPRM, EPRM,EPRM, + EPRM, EPRM, + EPRM, + EPRM,EPRM,EPRM, + // right hand + EPRM, EPRM, EPRM, EPRM, EPRM, EPRM, EPRM, + EPRM, EPRM, EPRM, EPRM, EPRM, EPRM, EPRM, + EPRM, EPRM, EPRM, EPRM, EPRM,EPRM, + EPRM,EPRM, EPRM, EPRM,EPRM, EPRM, EPRM, + EPRM, EPRM,EPRM,EPRM, EPRM, + EPRM, EPRM, + EPRM, + EPRM,EPRM, EPRM + ) +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + case 1: + if (record->event.pressed) { // For resetting EEPROM + eeconfig_init(); + } + break; + } + return MACRO_NONE; +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + // dynamically generate these. + case EPRM: + if (record->event.pressed) { + eeconfig_init(); + } + return false; + break; + case VRSN: + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + return false; + break; + case RGB_SLD: + if (record->event.pressed) { + #ifdef RGBLIGHT_ENABLE + rgblight_mode(1); + #endif + } + return false; + break; + } + return true; +} + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + // TODO: Make this relevant to the ErgoDox EZ. + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } + +}; From 46b93f02d570c0bb66410cb8d9af2451d5453635 Mon Sep 17 00:00:00 2001 From: dbroqua Date: Sat, 17 Dec 2016 22:25:08 +0100 Subject: [PATCH 236/727] - Added capslock key --- keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c b/keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c index 5d7c7f38a3..123c53a6de 100644 --- a/keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c +++ b/keyboards/kc60/keymaps/dbroqua_hhkb/keymap.c @@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del | * |-----------------------------------------------------------------------------------------+ - * | | Led | Led-| Led+| | | | | Psc | Slck| Paus| Up | | | + * | CAPS | Led | Led-| Led+| | | | | Psc | Slck| Paus| Up | | | * |-----------------------------------------------------------------------------------------+ * | | Vol-| Vol+| Mute| | | * | / | Home| PgUp| Left|Right| | * |-----------------------------------------------------------------------------------------+ @@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_FN] = KEYMAP( /* Layer 1 */ ______, 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, \ - ______, S_LED, S_LEDI, S_LEDD, ______, ______, ______, ______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, ______, \ + KC_CAPS, S_LED, S_LEDI, S_LEDD, ______, ______, ______, ______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, ______, \ ______, KC_VOLD, KC_VOLU, KC_MUTE, ______, ______, KC_PAST, KC_PSLS,KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, ______, ______, \ ______, ______, KC_MPRV, KC_MPLY, KC_MNXT,______,______,KC_PPLS,KC_PMNS,KC_END, KC_PGDN, KC_DOWN, ______,______, \ ______, ______, ______, ______, KC_DEL, KC_MSTP, ______, ______, ______ \ From e9f69ff46eb87eda30fa72e8e8eac2c69173989f Mon Sep 17 00:00:00 2001 From: dbroqua Date: Sat, 17 Dec 2016 22:33:45 +0100 Subject: [PATCH 237/727] - Revert local fail o_O --- .../keymaps/win10_writers-block/Makefile | 9 +++++++++ .../win10_writers-block/images/base-layer.png | Bin 0 -> 125979 bytes .../win10_writers-block/images/media-layer.png | Bin 0 -> 102643 bytes .../images/rimworld-layer.png | Bin 0 -> 90359 bytes .../images/symbol-layer.png | Bin 0 -> 101477 bytes 5 files changed, 9 insertions(+) create mode 100644 keyboards/ergodox/keymaps/win10_writers-block/Makefile create mode 100644 keyboards/ergodox/keymaps/win10_writers-block/images/base-layer.png create mode 100644 keyboards/ergodox/keymaps/win10_writers-block/images/media-layer.png create mode 100644 keyboards/ergodox/keymaps/win10_writers-block/images/rimworld-layer.png create mode 100644 keyboards/ergodox/keymaps/win10_writers-block/images/symbol-layer.png diff --git a/keyboards/ergodox/keymaps/win10_writers-block/Makefile b/keyboards/ergodox/keymaps/win10_writers-block/Makefile new file mode 100644 index 0000000000..fbab4b71c4 --- /dev/null +++ b/keyboards/ergodox/keymaps/win10_writers-block/Makefile @@ -0,0 +1,9 @@ +# Having a file like this allows you to override Makefile definitions +# for your own particular keymap + +TAP_DANCE_ENABLE=yes + + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/ergodox/keymaps/win10_writers-block/images/base-layer.png b/keyboards/ergodox/keymaps/win10_writers-block/images/base-layer.png new file mode 100644 index 0000000000000000000000000000000000000000..d1cb1987c8782761abfdc869a91ec522020bc301 GIT binary patch literal 125979 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 z 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

Esc0O0g&UsR<9WO4(8NhQW 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 HDWM4fwP78` literal 0 HcmV?d00001 diff --git a/keyboards/ergodox/keymaps/win10_writers-block/images/rimworld-layer.png b/keyboards/ergodox/keymaps/win10_writers-block/images/rimworld-layer.png new file mode 100644 index 0000000000000000000000000000000000000000..f866d3d55d5c248b58fec1b9f64aa8ac214e5fce GIT binary patch literal 90359 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∾cuYN1s*AD7l`6)888Tu*a*mZ$; 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 Date: Sun, 18 Dec 2016 15:35:03 -0800 Subject: [PATCH 238/727] Added XD60 support --- keyboards/xd60/Makefile | 3 + keyboards/xd60/arrow-cluster.JPG | Bin 0 -> 1875718 bytes keyboards/xd60/config.h | 68 +++++++++++++++++++++ keyboards/xd60/keymaps/default/keymap.c | 64 +++++++++++++++++++ keyboards/xd60/keymaps/default/readme.md | 9 +++ keyboards/xd60/keymaps/stanleylai/keymap.c | 60 ++++++++++++++++++ keyboards/xd60/readme.md | 13 ++++ keyboards/xd60/rules.mk | 65 ++++++++++++++++++++ keyboards/xd60/top-view.JPG | Bin 0 -> 2092542 bytes keyboards/xd60/xd60.c | 25 ++++++++ keyboards/xd60/xd60.h | 43 +++++++++++++ 11 files changed, 350 insertions(+) create mode 100644 keyboards/xd60/Makefile create mode 100644 keyboards/xd60/arrow-cluster.JPG create mode 100644 keyboards/xd60/config.h create mode 100644 keyboards/xd60/keymaps/default/keymap.c create mode 100644 keyboards/xd60/keymaps/default/readme.md create mode 100644 keyboards/xd60/keymaps/stanleylai/keymap.c create mode 100644 keyboards/xd60/readme.md create mode 100644 keyboards/xd60/rules.mk create mode 100644 keyboards/xd60/top-view.JPG create mode 100644 keyboards/xd60/xd60.c create mode 100644 keyboards/xd60/xd60.h diff --git a/keyboards/xd60/Makefile b/keyboards/xd60/Makefile new file mode 100644 index 0000000000..57b2ef62e5 --- /dev/null +++ b/keyboards/xd60/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED + include ../../Makefile +endif diff --git a/keyboards/xd60/arrow-cluster.JPG b/keyboards/xd60/arrow-cluster.JPG new file mode 100644 index 0000000000000000000000000000000000000000..aa03dc08edc3a1d45831059231e19a0f8424a99d GIT binary patch literal 1875718 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 z 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

Esc0O0g&UsR<9WO4(8NhQW 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 HDWM4fwP78` diff --git a/keyboards/ergodox/keymaps/win10_writers-block/images/rimworld-layer.png b/keyboards/ergodox/keymaps/win10_writers-block/images/rimworld-layer.png deleted file mode 100644 index f866d3d55d5c248b58fec1b9f64aa8ac214e5fce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90359 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∾cuYN1s*AD7l`6)888Tu*a*mZ$; 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 Date: Sun, 27 Nov 2016 16:12:32 -0600 Subject: [PATCH 147/727] removes the double actions from the metakeys. --- .../ergodox/keymaps/common-nighthawk/keymap.c | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c index 14ed257ee0..be12debba3 100644 --- a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c +++ b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c @@ -11,14 +11,12 @@ enum { TD_U_LBRC = 0, TD_I_RBRC, - TD_Y_ESC, }; //Tap Dance Definitions qk_tap_dance_action_t tap_dance_actions[] = { [TD_U_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_U, KC_LBRC), - [TD_I_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_I, KC_RBRC), - [TD_Y_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_Y, KC_ESC) + [TD_I_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_I, KC_RBRC) }; //Macro Declarations @@ -28,43 +26,43 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | Esc | x | x | x | Esc | Hypr | Home | | End | Esc | [ | ] | x | `~ | `~ | + * | _ | x | x | _ | Esc | Hypr | Home | | End | Hypr | [ | ] | x | `~ | Bks | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * |Tab/Ctrl| Q | W | E | R | T | Up | | PgUp |Y 2Esc| U 2[ | I 2] | O | P |Bks/Ctrl| + * |Ctrl/Tab| Q | W | E | R | T | Up | | PgUp | Y | U 2[ | I 2] | O | P | Ctrl | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | '"/Cmd | A | S | D | F | G |------| |------| H | J | K | L | ;: |Entr/Cmd| + * | Cmd | A | S | D | F | G |------| |------| H | J | K | L | ;: |Entr/Cmd| * |--------+------+------+------+------+------| Down | | PgDn |------+------+------+------+------+--------| - * | _/Shft | Z | X | C | V | B | | | | N | M | ,< | .> | /? | _/Shft | + * | Shft | Z | X | C | V | B | | | | N | M | ,< | .> | /? | Shft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | Alt | x | x | x | Left | |Right | x | x | x | Alt | + * | Alt | x | x | x | Left | |Right | Bks | x | x | Alt | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | Mute | VolUp| | Play | Del | * ,------|------|------| |------+--------+------. * | | | VolDn| | Next | | | - * |Sp/~L1| L2 |------| |------| L2 |Sp/~L1| + * |Sp/~L1| L2 |------| |------| L2 |'"/~L1| * | | |Teensy| | Prev | | | * `--------------------' `----------------------' */ [BASE] = KEYMAP( // layer 0 : default // left hand - KC_ESC, KC_1, KC_1, KC_1, KC_ESC, ALL_T(KC_NO), KC_HOME, + KC_UNDS, KC_1, KC_1, KC_UNDS, KC_ESC, ALL_T(KC_NO), KC_HOME, CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, - GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, - M(1), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, + KC_LGUI, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, KC_LALT, KC_1, KC_1, KC_1, KC_LEFT, KC_MUTE, KC_VOLU, KC_VOLD, LT(SYMB, KC_SPC), TG(MDIA), RESET, // right hand - KC_END, KC_ESC, KC_LBRC, KC_RBRC, KC_1, KC_GRV, KC_GRV, - KC_PGUP, TD(TD_Y_ESC), TD(TD_U_LBRC), TD(TD_I_RBRC), KC_O, KC_P, CTL_T(KC_BSPC), + KC_END, ALL_T(KC_NO), KC_LBRC, KC_RBRC, KC_1, KC_GRV, KC_BSPC, + KC_PGUP, KC_Y, TD(TD_U_LBRC), TD(TD_I_RBRC), KC_O, KC_P, KC_LCTRL, KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), - KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, M(1), - KC_RGHT, KC_1, KC_1, KC_1, KC_RALT, + KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, + KC_RGHT, KC_BSPC, KC_1, KC_1, KC_RALT, KC_MPLY, KC_DEL, KC_MNXT, - KC_MPRV, TG(MDIA), LT(SYMB, KC_SPC) + KC_MPRV, TG(MDIA), LT(SYMB, KC_QUOT) ), /* Keymap 1: Symbol Layer * From be4e75423a232d9d328bb23835e0fa5152292c95 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 27 Nov 2016 22:41:22 -0800 Subject: [PATCH 148/727] Tidy up atomicity in timer.c and ring_buffer.h Adopt the macros for saving/restoring the interrupt state that are provided by the avr gcc environment. Removing intialization of the timer value; this shaves off a few bytes because globals are default initialized to zero. --- tmk_core/common/avr/timer.c | 36 ++++++++++++++++-------------------- tmk_core/ring_buffer.h | 26 ++++++++++++-------------- 2 files changed, 28 insertions(+), 34 deletions(-) diff --git a/tmk_core/common/avr/timer.c b/tmk_core/common/avr/timer.c index 292b41c3a6..84af444885 100644 --- a/tmk_core/common/avr/timer.c +++ b/tmk_core/common/avr/timer.c @@ -17,6 +17,7 @@ along with this program. If not, see . #include #include +#include #include #include "timer_avr.h" #include "timer.h" @@ -24,7 +25,7 @@ along with this program. If not, see . // counter resolution 1ms // NOTE: union { uint32_t timer32; struct { uint16_t dummy; uint16_t timer16; }} -volatile uint32_t timer_count = 0; +volatile uint32_t timer_count; void timer_init(void) { @@ -52,10 +53,9 @@ void timer_init(void) inline void timer_clear(void) { - uint8_t sreg = SREG; - cli(); + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { timer_count = 0; - SREG = sreg; + } } inline @@ -63,10 +63,9 @@ uint16_t timer_read(void) { uint32_t t; - uint8_t sreg = SREG; - cli(); - t = timer_count; - SREG = sreg; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + t = timer_count; + } return (t & 0xFFFF); } @@ -76,10 +75,9 @@ uint32_t timer_read32(void) { uint32_t t; - uint8_t sreg = SREG; - cli(); - t = timer_count; - SREG = sreg; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + t = timer_count; + } return t; } @@ -89,10 +87,9 @@ uint16_t timer_elapsed(uint16_t last) { uint32_t t; - uint8_t sreg = SREG; - cli(); - t = timer_count; - SREG = sreg; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + t = timer_count; + } return TIMER_DIFF_16((t & 0xFFFF), last); } @@ -102,10 +99,9 @@ uint32_t timer_elapsed32(uint32_t last) { uint32_t t; - uint8_t sreg = SREG; - cli(); - t = timer_count; - SREG = sreg; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + t = timer_count; + } return TIMER_DIFF_32(t, last); } diff --git a/tmk_core/ring_buffer.h b/tmk_core/ring_buffer.h index 7bdebbcf34..005d1be613 100644 --- a/tmk_core/ring_buffer.h +++ b/tmk_core/ring_buffer.h @@ -4,13 +4,13 @@ * Ring buffer to store scan codes from keyboard *------------------------------------------------------------------*/ #define RBUF_SIZE 32 +#include static uint8_t rbuf[RBUF_SIZE]; static uint8_t rbuf_head = 0; static uint8_t rbuf_tail = 0; static inline void rbuf_enqueue(uint8_t data) { - uint8_t sreg = SREG; - cli(); + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { uint8_t next = (rbuf_head + 1) % RBUF_SIZE; if (next != rbuf_tail) { rbuf[rbuf_head] = data; @@ -18,36 +18,34 @@ static inline void rbuf_enqueue(uint8_t data) } else { print("rbuf: full\n"); } - SREG = sreg; + } } static inline uint8_t rbuf_dequeue(void) { uint8_t val = 0; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { - uint8_t sreg = SREG; - cli(); if (rbuf_head != rbuf_tail) { val = rbuf[rbuf_tail]; rbuf_tail = (rbuf_tail + 1) % RBUF_SIZE; } - SREG = sreg; + } return val; } static inline bool rbuf_has_data(void) { - uint8_t sreg = SREG; - cli(); - bool has_data = (rbuf_head != rbuf_tail); - SREG = sreg; - return has_data; + bool has_data; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + has_data = (rbuf_head != rbuf_tail); + } + return has_data; } static inline void rbuf_clear(void) { - uint8_t sreg = SREG; - cli(); + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { rbuf_head = rbuf_tail = 0; - SREG = sreg; + } } #endif /* RING_BUFFER_H */ From 8485bb34d2e291db5b6c81f892850da1cdca37ba Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 27 Nov 2016 22:43:11 -0800 Subject: [PATCH 149/727] Add arduino-alike GPIO pin control helpers Unlike the arduino functions, these don't take abstract pin numbers, they take pin labels like `B0`. Also, rather than taking very generic parameter names, these take slightly more descriptive enum values. These improve the clarity of code that would otherwise be inscrutable bit manipulation in tersely named port register names. --- quantum/pincontrol.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 quantum/pincontrol.h diff --git a/quantum/pincontrol.h b/quantum/pincontrol.h new file mode 100644 index 0000000000..36ce29ef22 --- /dev/null +++ b/quantum/pincontrol.h @@ -0,0 +1,37 @@ +#pragma once +// Some helpers for controlling gpio pins +#include + +enum { + PinDirectionInput = 0, + PinDirectionOutput = 1, + PinLevelHigh = 1, + PinLevelLow = 0, +}; + +// ex: pinMode(B0, PinDirectionOutput); +static inline void pinMode(uint8_t pin, int mode) { + uint8_t bv = _BV(pin & 0xf); + if (mode == PinDirectionOutput) { + _SFR_IO8((pin >> 4) + 1) |= bv; + } else { + _SFR_IO8((pin >> 4) + 1) &= ~bv; + _SFR_IO8((pin >> 4) + 2) &= ~bv; + } +} + +// ex: digitalWrite(B0, PinLevelHigh); +static inline void digitalWrite(uint8_t pin, int mode) { + uint8_t bv = _BV(pin & 0xf); + if (mode == PinLevelHigh) { + _SFR_IO8((pin >> 4) + 2) |= bv; + } else { + _SFR_IO8((pin >> 4) + 2) &= ~bv; + } +} + +// Return true if the pin is HIGH +// digitalRead(B0) +static inline bool digitalRead(uint8_t pin) { + return _SFR_IO8(pin >> 4) & _BV(pin & 0xf); +} From 712476cd288505cabb2ad6163d1c1ba13a7a1cca Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sun, 27 Nov 2016 22:48:04 -0800 Subject: [PATCH 150/727] Add support for Adafruit BLE modules This implements some helper functions that allow sending key reports to an SPI based Bluetooth Low Energy module, such as the Adafruit Feather 32u4 Bluefruit LE. There is some plumbing required in lufa.c to enable this; that is in a follow-on commit. --- tmk_core/common.mk | 6 +- tmk_core/protocol/lufa.mk | 4 + tmk_core/protocol/lufa/adafruit_ble.cpp | 805 ++++++++++++++++++++++++ tmk_core/protocol/lufa/adafruit_ble.h | 60 ++ tmk_core/protocol/lufa/ringbuffer.hpp | 66 ++ 5 files changed, 940 insertions(+), 1 deletion(-) create mode 100644 tmk_core/protocol/lufa/adafruit_ble.cpp create mode 100644 tmk_core/protocol/lufa/adafruit_ble.h create mode 100644 tmk_core/protocol/lufa/ringbuffer.hpp diff --git a/tmk_core/common.mk b/tmk_core/common.mk index f826a7b540..c32a12bb6f 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -81,6 +81,10 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) TMK_COMMON_DEFS += -DBACKLIGHT_ENABLE endif +ifeq ($(strip $(ADAFRUIT_BLE_ENABLE)), yes) + TMK_COMMON_DEFS += -DADAFRUIT_BLE_ENABLE +endif + ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) TMK_COMMON_DEFS += -DBLUETOOTH_ENABLE endif @@ -110,4 +114,4 @@ endif VPATH += $(TMK_PATH)/$(COMMON_DIR) ifeq ($(PLATFORM),CHIBIOS) VPATH += $(TMK_PATH)/$(COMMON_DIR)/chibios -endif \ No newline at end of file +endif diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk index 5b1e3d19d0..151d26cbc8 100644 --- a/tmk_core/protocol/lufa.mk +++ b/tmk_core/protocol/lufa.mk @@ -21,6 +21,10 @@ ifeq ($(strip $(MIDI_ENABLE)), yes) include $(TMK_PATH)/protocol/midi.mk endif +ifeq ($(strip $(ADAFRUIT_BLE_ENABLE)), yes) + LUFA_SRC += $(LUFA_DIR)/adafruit_ble.cpp +endif + ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ $(TMK_DIR)/protocol/serial_uart.c diff --git a/tmk_core/protocol/lufa/adafruit_ble.cpp b/tmk_core/protocol/lufa/adafruit_ble.cpp new file mode 100644 index 0000000000..37194e77a9 --- /dev/null +++ b/tmk_core/protocol/lufa/adafruit_ble.cpp @@ -0,0 +1,805 @@ +#include "adafruit_ble.h" +#include +#include +#include +#include +#include +#include "debug.h" +#include "pincontrol.h" +#include "timer.h" +#include "action_util.h" +#include "ringbuffer.hpp" +#include + +// These are the pin assignments for the 32u4 boards. +// You may define them to something else in your config.h +// if yours is wired up differently. +#ifndef AdafruitBleResetPin +#define AdafruitBleResetPin D4 +#endif + +#ifndef AdafruitBleCSPin +#define AdafruitBleCSPin B4 +#endif + +#ifndef AdafruitBleIRQPin +#define AdafruitBleIRQPin E6 +#endif + + +#define SAMPLE_BATTERY +#define ConnectionUpdateInterval 1000 /* milliseconds */ + +static struct { + bool is_connected; + bool initialized; + bool configured; + +#define ProbedEvents 1 +#define UsingEvents 2 + bool event_flags; + +#ifdef SAMPLE_BATTERY + uint16_t last_battery_update; + uint32_t vbat; +#endif + uint16_t last_connection_update; +} state; + +// Commands are encoded using SDEP and sent via SPI +// https://github.com/adafruit/Adafruit_BluefruitLE_nRF51/blob/master/SDEP.md + +#define SdepMaxPayload 16 +struct sdep_msg { + uint8_t type; + uint8_t cmd_low; + uint8_t cmd_high; + struct __attribute__((packed)) { + uint8_t len:7; + uint8_t more:1; + }; + uint8_t payload[SdepMaxPayload]; +} __attribute__((packed)); + +// The recv latency is relatively high, so when we're hammering keys quickly, +// we want to avoid waiting for the responses in the matrix loop. We maintain +// a short queue for that. Since there is quite a lot of space overhead for +// the AT command representation wrapped up in SDEP, we queue the minimal +// information here. + +enum queue_type { + QTKeyReport, // 1-byte modifier + 6-byte key report + QTConsumer, // 16-bit key code +#ifdef MOUSE_ENABLE + QTMouseMove, // 4-byte mouse report +#endif +}; + +struct queue_item { + enum queue_type queue_type; + uint16_t added; + union __attribute__((packed)) { + struct __attribute__((packed)) { + uint8_t modifier; + uint8_t keys[6]; + } key; + + uint16_t consumer; + struct __attribute__((packed)) { + uint8_t x, y, scroll, pan; + } mousemove; + }; +}; + +// Items that we wish to send +static RingBuffer send_buf; +// Pending response; while pending, we can't send any more requests. +// This records the time at which we sent the command for which we +// are expecting a response. +static RingBuffer resp_buf; + +static bool process_queue_item(struct queue_item *item, uint16_t timeout); + +enum sdep_type { + SdepCommand = 0x10, + SdepResponse = 0x20, + SdepAlert = 0x40, + SdepError = 0x80, + SdepSlaveNotReady = 0xfe, // Try again later + SdepSlaveOverflow = 0xff, // You read more data than is available +}; + +enum ble_cmd { + BleInitialize = 0xbeef, + BleAtWrapper = 0x0a00, + BleUartTx = 0x0a01, + BleUartRx = 0x0a02, +}; + +enum ble_system_event_bits { + BleSystemConnected = 0, + BleSystemDisconnected = 1, + BleSystemUartRx = 8, + BleSystemMidiRx = 10, +}; + +// The SDEP.md file says 2MHz but the web page and the sample driver +// both use 4MHz +#define SpiBusSpeed 4000000 + +#define SdepTimeout 150 /* milliseconds */ +#define SdepShortTimeout 10 /* milliseconds */ +#define SdepBackOff 25 /* microseconds */ +#define BatteryUpdateInterval 10000 /* milliseconds */ + +static bool at_command(const char *cmd, char *resp, uint16_t resplen, + bool verbose, uint16_t timeout = SdepTimeout); +static bool at_command_P(const char *cmd, char *resp, uint16_t resplen, + bool verbose = false); + +struct SPI_Settings { + uint8_t spcr, spsr; +}; + +static struct SPI_Settings spi; + +// Initialize 4Mhz MSBFIRST MODE0 +void SPI_init(struct SPI_Settings *spi) { + spi->spcr = _BV(SPE) | _BV(MSTR); + spi->spsr = _BV(SPI2X); + + static_assert(SpiBusSpeed == F_CPU / 2, "hard coded at 4Mhz"); + + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { + // Ensure that SS is OUTPUT High + digitalWrite(B0, PinLevelHigh); + pinMode(B0, PinDirectionOutput); + + SPCR |= _BV(MSTR); + SPCR |= _BV(SPE); + pinMode(B1 /* SCK */, PinDirectionOutput); + pinMode(B2 /* MOSI */, PinDirectionOutput); + } +} + +static inline void SPI_begin(struct SPI_Settings*spi) { + SPCR = spi->spcr; + SPSR = spi->spsr; +} + +static inline uint8_t SPI_TransferByte(uint8_t data) { + SPDR = data; + asm volatile("nop"); + while (!(SPSR & _BV(SPIF))) { + ; // wait + } + return SPDR; +} + +static inline void spi_send_bytes(const uint8_t *buf, uint8_t len) { + if (len == 0) return; + const uint8_t *end = buf + len; + while (buf < end) { + SPDR = *buf; + while (!(SPSR & _BV(SPIF))) { + ; // wait + } + ++buf; + } +} + +static inline uint16_t spi_read_byte(void) { + return SPI_TransferByte(0x00 /* dummy */); +} + +static inline void spi_recv_bytes(uint8_t *buf, uint8_t len) { + const uint8_t *end = buf + len; + if (len == 0) return; + while (buf < end) { + SPDR = 0; // write a dummy to initiate read + while (!(SPSR & _BV(SPIF))) { + ; // wait + } + *buf = SPDR; + ++buf; + } +} + +#if 0 +static void dump_pkt(const struct sdep_msg *msg) { + print("pkt: type="); + print_hex8(msg->type); + print(" cmd="); + print_hex8(msg->cmd_high); + print_hex8(msg->cmd_low); + print(" len="); + print_hex8(msg->len); + print(" more="); + print_hex8(msg->more); + print("\n"); +} +#endif + +// Send a single SDEP packet +static bool sdep_send_pkt(const struct sdep_msg *msg, uint16_t timeout) { + SPI_begin(&spi); + + digitalWrite(AdafruitBleCSPin, PinLevelLow); + uint16_t timerStart = timer_read(); + bool success = false; + bool ready = false; + + do { + ready = SPI_TransferByte(msg->type) != SdepSlaveNotReady; + if (ready) { + break; + } + + // Release it and let it initialize + digitalWrite(AdafruitBleCSPin, PinLevelHigh); + _delay_us(SdepBackOff); + digitalWrite(AdafruitBleCSPin, PinLevelLow); + } while (timer_elapsed(timerStart) < timeout); + + if (ready) { + // Slave is ready; send the rest of the packet + spi_send_bytes(&msg->cmd_low, + sizeof(*msg) - (1 + sizeof(msg->payload)) + msg->len); + success = true; + } + + digitalWrite(AdafruitBleCSPin, PinLevelHigh); + + return success; +} + +static inline void sdep_build_pkt(struct sdep_msg *msg, uint16_t command, + const uint8_t *payload, uint8_t len, + bool moredata) { + msg->type = SdepCommand; + msg->cmd_low = command & 0xff; + msg->cmd_high = command >> 8; + msg->len = len; + msg->more = (moredata && len == SdepMaxPayload) ? 1 : 0; + + static_assert(sizeof(*msg) == 20, "msg is correctly packed"); + + memcpy(msg->payload, payload, len); +} + +// Read a single SDEP packet +static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) { + bool success = false; + uint16_t timerStart = timer_read(); + bool ready = false; + + do { + ready = digitalRead(AdafruitBleIRQPin); + if (ready) { + break; + } + _delay_us(1); + } while (timer_elapsed(timerStart) < timeout); + + if (ready) { + SPI_begin(&spi); + + digitalWrite(AdafruitBleCSPin, PinLevelLow); + + do { + // Read the command type, waiting for the data to be ready + msg->type = spi_read_byte(); + if (msg->type == SdepSlaveNotReady || msg->type == SdepSlaveOverflow) { + // Release it and let it initialize + digitalWrite(AdafruitBleCSPin, PinLevelHigh); + _delay_us(SdepBackOff); + digitalWrite(AdafruitBleCSPin, PinLevelLow); + continue; + } + + // Read the rest of the header + spi_recv_bytes(&msg->cmd_low, sizeof(*msg) - (1 + sizeof(msg->payload))); + + // and get the payload if there is any + if (msg->len <= SdepMaxPayload) { + spi_recv_bytes(msg->payload, msg->len); + } + success = true; + break; + } while (timer_elapsed(timerStart) < timeout); + + digitalWrite(AdafruitBleCSPin, PinLevelHigh); + } + return success; +} + +static void resp_buf_read_one(bool greedy) { + uint16_t last_send; + if (!resp_buf.peek(last_send)) { + return; + } + + if (digitalRead(AdafruitBleIRQPin)) { + struct sdep_msg msg; + +again: + if (sdep_recv_pkt(&msg, SdepTimeout)) { + if (!msg.more) { + // We got it; consume this entry + resp_buf.get(last_send); + dprintf("recv latency %dms\n", TIMER_DIFF_16(timer_read(), last_send)); + } + + if (greedy && resp_buf.peek(last_send) && digitalRead(AdafruitBleIRQPin)) { + goto again; + } + } + + } else if (timer_elapsed(last_send) > SdepTimeout * 2) { + dprintf("waiting_for_result: timeout, resp_buf size %d\n", + (int)resp_buf.size()); + + // Timed out: consume this entry + resp_buf.get(last_send); + } +} + +static void send_buf_send_one(uint16_t timeout = SdepTimeout) { + struct queue_item item; + + // Don't send anything more until we get an ACK + if (!resp_buf.empty()) { + return; + } + + if (!send_buf.peek(item)) { + return; + } + if (process_queue_item(&item, timeout)) { + // commit that peek + send_buf.get(item); + dprintf("send_buf_send_one: have %d remaining\n", (int)send_buf.size()); + } else { + dprint("failed to send, will retry\n"); + _delay_ms(SdepTimeout); + resp_buf_read_one(true); + } +} + +static void resp_buf_wait(const char *cmd) { + bool didPrint = false; + while (!resp_buf.empty()) { + if (!didPrint) { + dprintf("wait on buf for %s\n", cmd); + didPrint = true; + } + resp_buf_read_one(true); + } +} + +static bool ble_init(void) { + state.initialized = false; + state.configured = false; + state.is_connected = false; + + pinMode(AdafruitBleIRQPin, PinDirectionInput); + pinMode(AdafruitBleCSPin, PinDirectionOutput); + digitalWrite(AdafruitBleCSPin, PinLevelHigh); + + SPI_init(&spi); + + // Perform a hardware reset + pinMode(AdafruitBleResetPin, PinDirectionOutput); + digitalWrite(AdafruitBleResetPin, PinLevelHigh); + digitalWrite(AdafruitBleResetPin, PinLevelLow); + _delay_ms(10); + digitalWrite(AdafruitBleResetPin, PinLevelHigh); + + _delay_ms(1000); // Give it a second to initialize + + state.initialized = true; + return state.initialized; +} + +static inline uint8_t min(uint8_t a, uint8_t b) { + return a < b ? a : b; +} + +static bool read_response(char *resp, uint16_t resplen, bool verbose) { + char *dest = resp; + char *end = dest + resplen; + + while (true) { + struct sdep_msg msg; + + if (!sdep_recv_pkt(&msg, 2 * SdepTimeout)) { + dprint("sdep_recv_pkt failed\n"); + return false; + } + + if (msg.type != SdepResponse) { + *resp = 0; + return false; + } + + uint8_t len = min(msg.len, end - dest); + if (len > 0) { + memcpy(dest, msg.payload, len); + dest += len; + } + + if (!msg.more) { + // No more data is expected! + break; + } + } + + // Ensure the response is NUL terminated + *dest = 0; + + // "Parse" the result text; we want to snip off the trailing OK or ERROR line + // Rewind past the possible trailing CRLF so that we can strip it + --dest; + while (dest > resp && (dest[0] == '\n' || dest[0] == '\r')) { + *dest = 0; + --dest; + } + + // Look back for start of preceeding line + char *last_line = strrchr(resp, '\n'); + if (last_line) { + ++last_line; + } else { + last_line = resp; + } + + bool success = false; + static const char kOK[] PROGMEM = "OK"; + + success = !strcmp_P(last_line, kOK ); + + if (verbose || !success) { + dprintf("result: %s\n", resp); + } + return success; +} + +static bool at_command(const char *cmd, char *resp, uint16_t resplen, + bool verbose, uint16_t timeout) { + const char *end = cmd + strlen(cmd); + struct sdep_msg msg; + + if (verbose) { + dprintf("ble send: %s\n", cmd); + } + + if (resp) { + // They want to decode the response, so we need to flush and wait + // for all pending I/O to finish before we start this one, so + // that we don't confuse the results + resp_buf_wait(cmd); + *resp = 0; + } + + // Fragment the command into a series of SDEP packets + while (end - cmd > SdepMaxPayload) { + sdep_build_pkt(&msg, BleAtWrapper, (uint8_t *)cmd, SdepMaxPayload, true); + if (!sdep_send_pkt(&msg, timeout)) { + return false; + } + cmd += SdepMaxPayload; + } + + sdep_build_pkt(&msg, BleAtWrapper, (uint8_t *)cmd, end - cmd, false); + if (!sdep_send_pkt(&msg, timeout)) { + return false; + } + + if (resp == NULL) { + auto now = timer_read(); + while (!resp_buf.enqueue(now)) { + resp_buf_read_one(false); + } + auto later = timer_read(); + if (TIMER_DIFF_16(later, now) > 0) { + dprintf("waited %dms for resp_buf\n", TIMER_DIFF_16(later, now)); + } + return true; + } + + return read_response(resp, resplen, verbose); +} + +bool at_command_P(const char *cmd, char *resp, uint16_t resplen, bool verbose) { + auto cmdbuf = (char *)alloca(strlen_P(cmd) + 1); + strcpy_P(cmdbuf, cmd); + return at_command(cmdbuf, resp, resplen, verbose); +} + +bool adafruit_ble_is_connected(void) { + return state.is_connected; +} + +bool adafruit_ble_enable_keyboard(void) { + char resbuf[128]; + + if (!state.initialized && !ble_init()) { + return false; + } + + state.configured = false; + + // Disable command echo + static const char kEcho[] PROGMEM = "ATE=0"; + // Make the advertised name match the keyboard + static const char kGapDevName[] PROGMEM = + "AT+GAPDEVNAME=" STR(PRODUCT) " " STR(DESCRIPTION); + // Turn on keyboard support + static const char kHidEnOn[] PROGMEM = "AT+BLEHIDEN=1"; + + // Adjust intervals to improve latency. This causes the "central" + // system (computer/tablet) to poll us every 10-30 ms. We can't + // set a smaller value than 10ms, and 30ms seems to be the natural + // processing time on my macbook. Keeping it constrained to that + // feels reasonable to type to. + static const char kGapIntervals[] PROGMEM = "AT+GAPINTERVALS=10,30,,"; + + // Reset the device so that it picks up the above changes + static const char kATZ[] PROGMEM = "ATZ"; + + // Turn down the power level a bit + static const char kPower[] PROGMEM = "AT+BLEPOWERLEVEL=-12"; + static PGM_P const configure_commands[] PROGMEM = { + kEcho, + kGapIntervals, + kGapDevName, + kHidEnOn, + kPower, + kATZ, + }; + + uint8_t i; + for (i = 0; i < sizeof(configure_commands) / sizeof(configure_commands[0]); + ++i) { + PGM_P cmd; + memcpy_P(&cmd, configure_commands + i, sizeof(cmd)); + + if (!at_command_P(cmd, resbuf, sizeof(resbuf))) { + dprintf("failed BLE command: %S: %s\n", cmd, resbuf); + goto fail; + } + } + + state.configured = true; + + // Check connection status in a little while; allow the ATZ time + // to kick in. + state.last_connection_update = timer_read(); +fail: + return state.configured; +} + +static void set_connected(bool connected) { + if (connected != state.is_connected) { + if (connected) { + print("****** BLE CONNECT!!!!\n"); + } else { + print("****** BLE DISCONNECT!!!!\n"); + } + state.is_connected = connected; + + // TODO: if modifiers are down on the USB interface and + // we cut over to BLE or vice versa, they will remain stuck. + // This feels like a good point to do something like clearing + // the keyboard and/or generating a fake all keys up message. + // However, I've noticed that it takes a couple of seconds + // for macOS to to start recognizing key presses after BLE + // is in the connected state, so I worry that doing that + // here may not be good enough. + } +} + +void adafruit_ble_task(void) { + char resbuf[48]; + + if (!state.configured && !adafruit_ble_enable_keyboard()) { + return; + } + resp_buf_read_one(true); + send_buf_send_one(SdepShortTimeout); + + if (resp_buf.empty() && (state.event_flags & UsingEvents) && + digitalRead(AdafruitBleIRQPin)) { + // Must be an event update + if (at_command_P(PSTR("AT+EVENTSTATUS"), resbuf, sizeof(resbuf))) { + uint32_t mask = strtoul(resbuf, NULL, 16); + + if (mask & BleSystemConnected) { + set_connected(true); + } else if (mask & BleSystemDisconnected) { + set_connected(false); + } + } + } + + if (timer_elapsed(state.last_connection_update) > ConnectionUpdateInterval) { + bool shouldPoll = true; + if (!(state.event_flags & ProbedEvents)) { + // Request notifications about connection status changes. + // This only works in SPIFRIEND firmware > 0.6.7, which is why + // we check for this conditionally here. + // Note that at the time of writing, HID reports only work correctly + // with Apple products on firmware version 0.6.7! + // https://forums.adafruit.com/viewtopic.php?f=8&t=104052 + if (at_command_P(PSTR("AT+EVENTENABLE=0x1"), resbuf, sizeof(resbuf))) { + at_command_P(PSTR("AT+EVENTENABLE=0x2"), resbuf, sizeof(resbuf)); + state.event_flags |= UsingEvents; + } + state.event_flags |= ProbedEvents; + + // leave shouldPoll == true so that we check at least once + // before relying solely on events + } else { + shouldPoll = false; + } + + static const char kGetConn[] PROGMEM = "AT+GAPGETCONN"; + state.last_connection_update = timer_read(); + + if (at_command_P(kGetConn, resbuf, sizeof(resbuf))) { + set_connected(atoi(resbuf)); + } + } + +#ifdef SAMPLE_BATTERY + // I don't know if this really does anything useful yet; the reported + // voltage level always seems to be around 3200mV. We may want to just rip + // this code out. + if (timer_elapsed(state.last_battery_update) > BatteryUpdateInterval && + resp_buf.empty()) { + state.last_battery_update = timer_read(); + + if (at_command_P(PSTR("AT+HWVBAT"), resbuf, sizeof(resbuf))) { + state.vbat = atoi(resbuf); + } + } +#endif +} + +static bool process_queue_item(struct queue_item *item, uint16_t timeout) { + char cmdbuf[48]; + char fmtbuf[64]; + + // Arrange to re-check connection after keys have settled + state.last_connection_update = timer_read(); + +#if 1 + if (TIMER_DIFF_16(state.last_connection_update, item->added) > 0) { + dprintf("send latency %dms\n", + TIMER_DIFF_16(state.last_connection_update, item->added)); + } +#endif + + switch (item->queue_type) { + case QTKeyReport: + strcpy_P(fmtbuf, + PSTR("AT+BLEKEYBOARDCODE=%02x-00-%02x-%02x-%02x-%02x-%02x-%02x")); + snprintf(cmdbuf, sizeof(cmdbuf), fmtbuf, item->key.modifier, + item->key.keys[0], item->key.keys[1], item->key.keys[2], + item->key.keys[3], item->key.keys[4], item->key.keys[5]); + return at_command(cmdbuf, NULL, 0, true, timeout); + + case QTConsumer: + strcpy_P(fmtbuf, PSTR("AT+BLEHIDCONTROLKEY=0x%04x")); + snprintf(cmdbuf, sizeof(cmdbuf), fmtbuf, item->consumer); + return at_command(cmdbuf, NULL, 0, true, timeout); + +#ifdef MOUSE_ENABLE + case QTMouseMove: + strcpy_P(fmtbuf, PSTR("AT+BLEHIDMOUSEMOVE=%d,%d,%d,%d")); + snprintf(cmdbuf, sizeof(cmdbuf), fmtbuf, item->mousemove.x, + item->mousemove.y, item->mousemove.scroll, item->mousemove.pan); + return at_command(cmdbuf, NULL, 0, true, timeout); +#endif + default: + return true; + } +} + +bool adafruit_ble_send_keys(uint8_t hid_modifier_mask, uint8_t *keys, + uint8_t nkeys) { + struct queue_item item; + bool didWait = false; + + item.queue_type = QTKeyReport; + item.key.modifier = hid_modifier_mask; + item.added = timer_read(); + + while (nkeys >= 0) { + item.key.keys[0] = keys[0]; + item.key.keys[1] = nkeys >= 1 ? keys[1] : 0; + item.key.keys[2] = nkeys >= 2 ? keys[2] : 0; + item.key.keys[3] = nkeys >= 3 ? keys[3] : 0; + item.key.keys[4] = nkeys >= 4 ? keys[4] : 0; + item.key.keys[5] = nkeys >= 5 ? keys[5] : 0; + + if (!send_buf.enqueue(item)) { + if (!didWait) { + dprint("wait for buf space\n"); + didWait = true; + } + send_buf_send_one(); + continue; + } + + if (nkeys <= 6) { + return true; + } + + nkeys -= 6; + keys += 6; + } + + return true; +} + +bool adafruit_ble_send_consumer_key(uint16_t keycode, int hold_duration) { + struct queue_item item; + + item.queue_type = QTConsumer; + item.consumer = keycode; + + while (!send_buf.enqueue(item)) { + send_buf_send_one(); + } + return true; +} + +#ifdef MOUSE_ENABLE +bool adafruit_ble_send_mouse_move(int8_t x, int8_t y, int8_t scroll, + int8_t pan) { + struct queue_item item; + + item.queue_type = QTMouseMove; + item.mousemove.x = x; + item.mousemove.y = y; + item.mousemove.scroll = scroll; + item.mousemove.pan = pan; + + while (!send_buf.enqueue(item)) { + send_buf_send_one(); + } + return true; +} +#endif + +uint32_t adafruit_ble_read_battery_voltage(void) { + return state.vbat; +} + +bool adafruit_ble_set_mode_leds(bool on) { + if (!state.configured) { + return false; + } + + // The "mode" led is the red blinky one + at_command_P(on ? PSTR("AT+HWMODELED=1") : PSTR("AT+HWMODELED=0"), NULL, 0); + + // Pin 19 is the blue "connected" LED; turn that off too. + // When turning LEDs back on, don't turn that LED on if we're + // not connected, as that would be confusing. + at_command_P(on && state.is_connected ? PSTR("AT+HWGPIO=19,1") + : PSTR("AT+HWGPIO=19,0"), + NULL, 0); + return true; +} + +// https://learn.adafruit.com/adafruit-feather-32u4-bluefruit-le/ble-generic#at-plus-blepowerlevel +bool adafruit_ble_set_power_level(int8_t level) { + char cmd[46]; + if (!state.configured) { + return false; + } + snprintf(cmd, sizeof(cmd), "AT+BLEPOWERLEVEL=%d", level); + return at_command(cmd, NULL, 0, false); +} diff --git a/tmk_core/protocol/lufa/adafruit_ble.h b/tmk_core/protocol/lufa/adafruit_ble.h new file mode 100644 index 0000000000..351fd55ae9 --- /dev/null +++ b/tmk_core/protocol/lufa/adafruit_ble.h @@ -0,0 +1,60 @@ +/* Bluetooth Low Energy Protocol for QMK. + * Author: Wez Furlong, 2016 + * Supports the Adafruit BLE board built around the nRF51822 chip. + */ +#pragma once +#ifdef ADAFRUIT_BLE_ENABLE +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Instruct the module to enable HID keyboard support and reset */ +extern bool adafruit_ble_enable_keyboard(void); + +/* Query to see if the BLE module is connected */ +extern bool adafruit_ble_query_is_connected(void); + +/* Returns true if we believe that the BLE module is connected. + * This uses our cached understanding that is maintained by + * calling ble_task() periodically. */ +extern bool adafruit_ble_is_connected(void); + +/* Call this periodically to process BLE-originated things */ +extern void adafruit_ble_task(void); + +/* Generates keypress events for a set of keys. + * The hid modifier mask specifies the state of the modifier keys for + * this set of keys. + * Also sends a key release indicator, so that the keys do not remain + * held down. */ +extern bool adafruit_ble_send_keys(uint8_t hid_modifier_mask, uint8_t *keys, + uint8_t nkeys); + +/* Send a consumer keycode, holding it down for the specified duration + * (milliseconds) */ +extern bool adafruit_ble_send_consumer_key(uint16_t keycode, int hold_duration); + +#ifdef MOUSE_ENABLE +/* Send a mouse/wheel movement report. + * The parameters are signed and indicate positive of negative direction + * change. */ +extern bool adafruit_ble_send_mouse_move(int8_t x, int8_t y, int8_t scroll, + int8_t pan); +#endif + +/* Compute battery voltage by reading an analog pin. + * Returns the integer number of millivolts */ +extern uint32_t adafruit_ble_read_battery_voltage(void); + +extern bool adafruit_ble_set_mode_leds(bool on); +extern bool adafruit_ble_set_power_level(int8_t level); + +#ifdef __cplusplus +} +#endif + +#endif // ADAFRUIT_BLE_ENABLE diff --git a/tmk_core/protocol/lufa/ringbuffer.hpp b/tmk_core/protocol/lufa/ringbuffer.hpp new file mode 100644 index 0000000000..70a3c4881d --- /dev/null +++ b/tmk_core/protocol/lufa/ringbuffer.hpp @@ -0,0 +1,66 @@ +#pragma once +// A simple ringbuffer holding Size elements of type T +template +class RingBuffer { + protected: + T buf_[Size]; + uint8_t head_{0}, tail_{0}; + public: + inline uint8_t nextPosition(uint8_t position) { + return (position + 1) % Size; + } + + inline uint8_t prevPosition(uint8_t position) { + if (position == 0) { + return Size - 1; + } + return position - 1; + } + + inline bool enqueue(const T &item) { + static_assert(Size > 1, "RingBuffer size must be > 1"); + uint8_t next = nextPosition(head_); + if (next == tail_) { + // Full + return false; + } + + buf_[head_] = item; + head_ = next; + return true; + } + + inline bool get(T &dest, bool commit = true) { + auto tail = tail_; + if (tail == head_) { + // No more data + return false; + } + + dest = buf_[tail]; + tail = nextPosition(tail); + + if (commit) { + tail_ = tail; + } + return true; + } + + inline bool empty() const { return head_ == tail_; } + + inline uint8_t size() const { + int diff = head_ - tail_; + if (diff >= 0) { + return diff; + } + return Size + diff; + } + + inline T& front() { + return buf_[tail_]; + } + + inline bool peek(T &item) { + return get(item, false); + } +}; From e26a80508f2247d27e431a7415df1ff3405f598a Mon Sep 17 00:00:00 2001 From: Olivier Date: Mon, 28 Nov 2016 11:20:00 +0100 Subject: [PATCH 151/727] Reorganize the numeric keypad layer more like a traditional numeric keypad. --- keyboards/ergodox/keymaps/bepo/bepo.png | Bin 80838 -> 80249 bytes keyboards/ergodox/keymaps/bepo/keymap.c | 24 ++++++++++++------------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/keyboards/ergodox/keymaps/bepo/bepo.png b/keyboards/ergodox/keymaps/bepo/bepo.png index bde2e2cfacb326e7934c5743aea2f303c8a42527..54992f5ae54c6c38b29221a78c45224af611573f 100644 GIT binary patch literal 80249 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

_DejfS5Dt%LJ8{^;Gn>0RZZ@zwM>S{@o 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 z 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 literal 0 HcmV?d00001 diff --git a/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png b/keyboards/atreus/keymaps/replicaJunction/atreus-replica-num.png index faeef089c508a7ace7cd4ccd8a85b49c0ce6ecbb..6598acb27b7f815ab068dec204de4b644674ff5e 100644 GIT binary patch delta 43343 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 U9kAn|;!dRVitw+5Uar3X4+C9_#8&j?=xZ)2?SU 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 T^HO7AU|{fc^>bP0l+XkKw_t&C delta 43353 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 z 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 V Date: Wed, 24 Aug 2016 23:49:33 -0500 Subject: [PATCH 033/727] Fixed getting "stuck" in gaming layer --- keyboards/atreus/keymaps/replicaJunction/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c index c229d22f1e..52d3677fa7 100644 --- a/keyboards/atreus/keymaps/replicaJunction/keymap.c +++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c @@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, KC_Z, _______, _______, _______, _______, KC_BTN3, _______, KC_MS_D, _______, _______, - _______, _______, _______, KC_LSFT, KC_SPC, KC_BSPC, KC_BTN2, KC_BTN1, _______, _______, _______, _______ + _______, TG(_GA), _______, KC_LSFT, KC_SPC, KC_BSPC, KC_BTN2, KC_BTN1, _______, _______, _______, _______ )}; const uint16_t PROGMEM fn_actions[] = { From 0c598f53c18419a10b143098b57a431c5545f906 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 1 Sep 2016 23:37:52 -0600 Subject: [PATCH 034/727] adds Hyper key. improves media layer. first attempt at tap dance. --- keyboards/ergodox/Makefile | 3 +- .../ergodox/keymaps/common-nighthawk/keymap.c | 75 ++++++++++--------- 2 files changed, 43 insertions(+), 35 deletions(-) diff --git a/keyboards/ergodox/Makefile b/keyboards/ergodox/Makefile index 7165350050..0dc0a77252 100644 --- a/keyboards/ergodox/Makefile +++ b/keyboards/ergodox/Makefile @@ -1,5 +1,6 @@ SUBPROJECT_DEFAULT = ez +TAP_DANCE_ENABLE = yes ifndef MAKEFILE_INCLUDED include ../../Makefile -endif \ No newline at end of file +endif diff --git a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c index d57f665317..919b7946cd 100644 --- a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c +++ b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c @@ -11,43 +11,48 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. - * | Esc | x | x | x | _ | x | Home | | End | x | Esc | x | x | x | `~ | + * | Esc | x | x | x | _ | Hypr | Home | | End | Hypr | Esc | x | x | x | `~ | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * |Tab/Ctrl| Q | W | E | R | T | Up | | PgUp | Y | U | I | O | P |Bks/Ctrl| * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | '"/Cmd | A | S | D | F | G |------| |------| H | J | K | L | ;: |Entr/Cmd| * |--------+------+------+------+------+------| Down | | PgDn |------+------+------+------+------+--------| - * |[/LShift| Z | X | C | V | B | | | | N | M | ,< | .> | /? |]/RShift| + * | Sft//[ | Z | X | C | V | B | | | | N | M | ,< | .> | /? |]/RShift| * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | Alt | x | x | x | Left | |Right | x | x | x | Alt | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. - * |CapLok| x | | x | Del | + * | Mute | VolUp| | Play | Del | * ,------|------|------| |------+--------+------. - * | | | x | | x | | | + * | | | VolDn| | Next | | | * |Sp/~L1| L2 |------| |------| L2 |Sp/~L1| - * | | |Teensy| |Teensy| | | + * | | |Teensy| | Prev | | | * `--------------------' `----------------------' */ + /* TO DO: turn on third light when shifted */ + /* consider turning caplock back on. but maybe not. */ + /* get less key presses for ShiftIt going with MEH or CAG */ + /* make all letter keys KC_NO for the media layer */ + /* add the mouse wheel up and down */ [BASE] = KEYMAP( // layer 0 : default // left hand - KC_ESC, KC_1, KC_1, KC_1, KC_UNDS, KC_1, KC_HOME, - CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, - GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, - SFT_T(KC_LBRC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, - KC_LALT, KC_1, KC_1, KC_1, KC_LEFT, - KC_CAPS, KC_1, - KC_1, - LT(SYMB, KC_SPC), TG(MDIA), RESET, + KC_ESC, KC_1, KC_1, KC_1, KC_UNDS, ALL_T(KC_NO), KC_HOME, + CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, + GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, + ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_LBRC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, + KC_LALT, KC_1, KC_1, KC_1, KC_LEFT, + KC_MUTE, KC_VOLU, + KC_VOLD, + LT(SYMB, KC_SPC), TG(MDIA), RESET, // right hand - KC_END, KC_1, KC_ESC, KC_1, KC_1, KC_1, KC_GRV, - KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, CTL_T(KC_BSPC), - KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), - KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_RBRC), - KC_RGHT, KC_1, KC_1, KC_1, KC_RALT, - KC_1, KC_DEL, - KC_1, - RESET, TG(MDIA), LT(SYMB, KC_SPC) + KC_END, ALL_T(KC_NO), KC_ESC, KC_1, KC_1, KC_1, KC_GRV, + KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, CTL_T(KC_BSPC), + KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), + KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_RBRC), + KC_RGHT, KC_1, KC_1, KC_1, KC_RALT, + KC_MPLY, KC_DEL, + KC_MNXT, + KC_MPRV, TG(MDIA), LT(SYMB, KC_SPC) ), /* Keymap 1: Symbol Layer * @@ -96,11 +101,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * |Version | | | | | | | | | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | xx | MsUp | xx | | | | | Play | Prev | Next | | | | + * | | | | | | | | | | | WhDn | WhUp | | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| xx | Lclk | Rclk | | | | + * | | | | R-Ck | L-Ck | |------| |------| MsLt | MsDn | MsUp | MsRt | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | xx | xx | xx | | | | | Mute |VolDn |VolUp | | | | + * | | | | | | | | | | | | | | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | | | | | | | | | | | | * `----------------------------------' `----------------------------------' @@ -115,19 +120,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // MEDIA AND MOUSE [MDIA] = KEYMAP( M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_NO, KC_MS_U, KC_NO, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, - KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_BTN1, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, // right hand - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, - KC_NO, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_WH_U, KC_WH_D, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WBAK @@ -168,7 +173,7 @@ void matrix_scan_user(void) { switch (layer) { // TODO: Make this relevant to the ErgoDox EZ. case 1: - ergodox_right_led_1_on(); + ergodox_right_led_3_on(); break; case 2: ergodox_right_led_2_on(); @@ -177,5 +182,7 @@ void matrix_scan_user(void) { // none break; } - + if (keyboard_report->mods & MOD_BIT(KC_LSFT)) { + ergodox_right_led_1_on (); + } }; From 250f096144529d6dbea4ae138da108440481ff22 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 2 Sep 2016 14:35:15 -0600 Subject: [PATCH 035/727] adds tap dance and macro to move underscore and l- and r- brackets to base layer. --- .../ergodox/keymaps/common-nighthawk/Makefile | 6 ++ .../ergodox/keymaps/common-nighthawk/keymap.c | 76 +++++++++++++------ 2 files changed, 57 insertions(+), 25 deletions(-) create mode 100644 keyboards/ergodox/keymaps/common-nighthawk/Makefile diff --git a/keyboards/ergodox/keymaps/common-nighthawk/Makefile b/keyboards/ergodox/keymaps/common-nighthawk/Makefile new file mode 100644 index 0000000000..fafa40c43d --- /dev/null +++ b/keyboards/ergodox/keymaps/common-nighthawk/Makefile @@ -0,0 +1,6 @@ +SUBPROJECT_DEFAULT = ez +TAP_DANCE_ENABLE = yes + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c index 919b7946cd..9744313700 100644 --- a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c +++ b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c @@ -7,17 +7,34 @@ #define SYMB 1 // symbols #define MDIA 2 // media keys +//Tap Dance Declarations +enum { + TD_J_LBRC = 0, + TD_K_RBRC, + TD_Y_ESC, +}; + +//Tap Dance Definitions +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_J_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_J, KC_LBRC), + [TD_K_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_K, KC_RBRC), + [TD_Y_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_Y, KC_ESC) +}; + +//Macro Declarations +static uint16_t sunds_timer; + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. * | Esc | x | x | x | _ | Hypr | Home | | End | Hypr | Esc | x | x | x | `~ | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * |Tab/Ctrl| Q | W | E | R | T | Up | | PgUp | Y | U | I | O | P |Bks/Ctrl| + * |Tab/Ctrl| Q | W | E | R | T | Up | | PgUp |Y 2Esc| U | I | O | P |Bks/Ctrl| * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | '"/Cmd | A | S | D | F | G |------| |------| H | J | K | L | ;: |Entr/Cmd| + * | '"/Cmd | A | S | D | F | G |------| |------| H | J 2[ | K 2] | L | ;: |Entr/Cmd| * |--------+------+------+------+------+------| Down | | PgDn |------+------+------+------+------+--------| - * | Sft//[ | Z | X | C | V | B | | | | N | M | ,< | .> | /? |]/RShift| + * | _/Shft | Z | X | C | V | B | | | | N | M | ,< | .> | /? | _/Shft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' * | Alt | x | x | x | Left | |Right | x | x | x | Alt | * `----------------------------------' `----------------------------------' @@ -29,27 +46,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | |Teensy| | Prev | | | * `--------------------' `----------------------' */ - /* TO DO: turn on third light when shifted */ - /* consider turning caplock back on. but maybe not. */ - /* get less key presses for ShiftIt going with MEH or CAG */ - /* make all letter keys KC_NO for the media layer */ - /* add the mouse wheel up and down */ [BASE] = KEYMAP( // layer 0 : default // left hand - KC_ESC, KC_1, KC_1, KC_1, KC_UNDS, ALL_T(KC_NO), KC_HOME, - CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, - GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, - ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_LBRC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, - KC_LALT, KC_1, KC_1, KC_1, KC_LEFT, - KC_MUTE, KC_VOLU, - KC_VOLD, - LT(SYMB, KC_SPC), TG(MDIA), RESET, + KC_ESC, KC_1, KC_1, KC_1, KC_UNDS, ALL_T(KC_NO), KC_HOME, + CTL_T(KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, + GUI_T(KC_QUOT), KC_A, KC_S, KC_D, KC_F, KC_G, + M(1), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, + KC_LALT, KC_1, KC_1, KC_1, KC_LEFT, + KC_MUTE, KC_VOLU, + KC_VOLD, + LT(SYMB, KC_SPC), TG(MDIA), RESET, // right hand - KC_END, ALL_T(KC_NO), KC_ESC, KC_1, KC_1, KC_1, KC_GRV, - KC_PGUP, KC_Y, KC_U, KC_I, KC_O, KC_P, CTL_T(KC_BSPC), - KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), - KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_RBRC), - KC_RGHT, KC_1, KC_1, KC_1, KC_RALT, + KC_END, ALL_T(KC_NO), KC_ESC, KC_1, KC_1, KC_1, KC_GRV, + KC_PGUP, TD(TD_Y_ESC), KC_U, KC_I, KC_O, KC_P, CTL_T(KC_BSPC), + KC_H, TD(TD_J_LBRC), TD(TD_K_RBRC), KC_L, KC_SCOLON, GUI_T(KC_ENT), + KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, M(1), + KC_RGHT, KC_1, KC_1, KC_1, KC_RALT, KC_MPLY, KC_DEL, KC_MNXT, KC_MPRV, TG(MDIA), LT(SYMB, KC_SPC) @@ -148,10 +160,24 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // MACRODOWN only works in this function switch(id) { case 0: - if (record->event.pressed) { - SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); - } - break; + if (record->event.pressed) { + SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); + } + break; + + case 1: + if (record->event.pressed) { + sunds_timer = timer_read(); + register_code (KC_LSFT); + } else { + if (timer_elapsed (sunds_timer) < TAPPING_TERM) { + register_code (KC_MINS); + unregister_code (KC_MINS); + } + unregister_code (KC_LSFT); + } + break; + } return MACRO_NONE; }; From b807867f955f95f832901b9d0cc0eed97ab8cea0 Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 6 Sep 2016 21:56:27 -0600 Subject: [PATCH 036/727] moves brackets from J/K to U/I to remove block of common vim sequence. --- .../ergodox/keymaps/common-nighthawk/keymap.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c index 9744313700..ab0dcfece2 100644 --- a/keyboards/ergodox/keymaps/common-nighthawk/keymap.c +++ b/keyboards/ergodox/keymaps/common-nighthawk/keymap.c @@ -9,15 +9,15 @@ //Tap Dance Declarations enum { - TD_J_LBRC = 0, - TD_K_RBRC, + TD_U_LBRC = 0, + TD_I_RBRC, TD_Y_ESC, }; //Tap Dance Definitions qk_tap_dance_action_t tap_dance_actions[] = { - [TD_J_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_J, KC_LBRC), - [TD_K_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_K, KC_RBRC), + [TD_U_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_U, KC_LBRC), + [TD_I_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_I, KC_RBRC), [TD_Y_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_Y, KC_ESC) }; @@ -30,9 +30,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | Esc | x | x | x | _ | Hypr | Home | | End | Hypr | Esc | x | x | x | `~ | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * |Tab/Ctrl| Q | W | E | R | T | Up | | PgUp |Y 2Esc| U | I | O | P |Bks/Ctrl| + * |Tab/Ctrl| Q | W | E | R | T | Up | | PgUp |Y 2Esc| U 2[ | I 2] | O | P |Bks/Ctrl| * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | '"/Cmd | A | S | D | F | G |------| |------| H | J 2[ | K 2] | L | ;: |Entr/Cmd| + * | '"/Cmd | A | S | D | F | G |------| |------| H | J | K | L | ;: |Entr/Cmd| * |--------+------+------+------+------+------| Down | | PgDn |------+------+------+------+------+--------| * | _/Shft | Z | X | C | V | B | | | | N | M | ,< | .> | /? | _/Shft | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' @@ -58,8 +58,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LT(SYMB, KC_SPC), TG(MDIA), RESET, // right hand KC_END, ALL_T(KC_NO), KC_ESC, KC_1, KC_1, KC_1, KC_GRV, - KC_PGUP, TD(TD_Y_ESC), KC_U, KC_I, KC_O, KC_P, CTL_T(KC_BSPC), - KC_H, TD(TD_J_LBRC), TD(TD_K_RBRC), KC_L, KC_SCOLON, GUI_T(KC_ENT), + KC_PGUP, TD(TD_Y_ESC), TD(TD_U_LBRC), TD(TD_I_RBRC), KC_O, KC_P, CTL_T(KC_BSPC), + KC_H, KC_J, KC_K, KC_L, KC_SCOLON, GUI_T(KC_ENT), KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, M(1), KC_RGHT, KC_1, KC_1, KC_1, KC_RALT, KC_MPLY, KC_DEL, From 67dfde765f5bc192aad8a7a7586b10a661ae52d1 Mon Sep 17 00:00:00 2001 From: Didier Chagniot Date: Fri, 9 Sep 2016 21:42:35 +0200 Subject: [PATCH 037/727] typing with it --- .../ergodox/keymaps/dvorak_emacs/keymap.c | 165 ++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100755 keyboards/ergodox/keymaps/dvorak_emacs/keymap.c diff --git a/keyboards/ergodox/keymaps/dvorak_emacs/keymap.c b/keyboards/ergodox/keymaps/dvorak_emacs/keymap.c new file mode 100755 index 0000000000..4cb11a56f4 --- /dev/null +++ b/keyboards/ergodox/keymaps/dvorak_emacs/keymap.c @@ -0,0 +1,165 @@ +#include "ergodox.h" +#include "debug.h" +#include "action_layer.h" + +/****************************************************************************************** + * DVORAK LAYOUT (see http://djelibeibi.unex.es/dvorak/) + * Layer 1: auxiliary keys + * Layer 2: full qwerty layout + *****************************************************************************************/ + +// LAYERS +#define BASE 0 // dvorak layout (default) +#define AUX 1 // auxiliary keys + +// MACROS +/* #define OBRACE 0 // key { or shift */ +/* #define CBRACE 1 // key } or shift */ +/* #define OBRACK 2 // key [ or left alt */ +/* #define CBRACK 3 // key ] or left alt */ +/* #define CAPS 4 // caps lock */ + +// LEDS +#define USB_LED_NUM_LOCK 0 +#define USB_LED_CAPS_LOCK 1 +#define USB_LED_SCROLL_LOCK 2 +#define USB_LED_COMPOSE 3 +#define USB_LED_KANA 4 + +// TIMERS +#define KEY_TAP_FAST 85 +#define KEY_TAP_SLOW 95 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Base layer + * Keys with double values (like Esc/Ctrl) correspond to the 'tapped' key and the 'held' key, respectively + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | 1 | 2 | 3 | 4 | 5 | Esc | | Esc | 6 | 7 | 8 | 9 | 0 | = / + | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | ~ |" / ' |, / < |. / > | P | Y | [ | | ] | F | G | C | H | L | / / ? | + * |--------+------+------+------+------+------| { | | } |------+------+------+------+------+--------| + * | Tab | A | O | E |U/LSft| I/L1 |------| |------| D/L1|R/RSft| T | N | S | - / _ | + * |--------+------+------+------+------+------| LGUI | | LGUI |------+------+------+------+------+--------| + * | {/LSft |; / : | Q | J | K | X | | | | B | M | W | V | Z | }/RSft | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | ~L1 | | ~L1 | | | \ / || | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | HOME | END | | LEFT | RIGHT| + * ,------|------|------| |------+--------+------. + * | BSPC | DEL | PGUP | | UP | SPACE |RETURN| + * | / | / |------| |------| / | / | + * | LCTL | LALT |PGDWN | | DOWN | LALT | LCTL | + * `--------------------' `----------------------' + * + */ +[BASE] = KEYMAP( + // left hand + KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, + KC_TILD, KC_QUOTE, KC_COMM,KC_DOT, KC_P, KC_Y, KC_LBRACKET, + KC_TAB, KC_A, KC_O, KC_E, SFT_T(KC_U), LT(AUX, KC_I), + SFT_T(KC_LBRC), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LGUI, + KC_NO, KC_NO, KC_NO, KC_NO, MO(AUX), + KC_HOME, KC_END, + KC_PGUP, + CTL_T(KC_BSPC), ALT_T(KC_DEL), KC_PGDN, + // right hand + KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, + KC_RBRACKET, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLASH, + LT(AUX, KC_D), SFT_T(KC_H), KC_T, KC_N, KC_S, KC_MINUS, + KC_LGUI, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_T(KC_RBRC), + MO(AUX), KC_NO, KC_NO, KC_BSLASH, KC_NO, + KC_LEFT, KC_RIGHT, + KC_UP, + KC_DOWN, ALT_T(KC_ENT), CTL_T(KC_SPC) + ), +/* Keymap 1: Aux layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | VolUp | | | | | | SLEEP | PWR | | | | | | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | VolDn | F1 | F2 | F3 | F4 | | | | | | 7 | 8 | 9 | * | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | F5 | F6 | F7 | F8 | TRANS|------| |------|TRANS | 4 | 5 | 6 | + | | + * |--------+------+------+------+------+------| | |PSCR |------+------+------+------+------+--------| + * | TRANS | F9 | F10 | F11 | F12 | | | | | | 1 | 2 | 3 | / | TRANS | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |CTRL-S|CTRL-Z|CTRL-X|CTRL-C| TRANS| | TRANS| . | 0 | = | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | TRANS| TRANS| | TRANS| TRANS| + * ,------|------|------| |------+------+------. + * | | | TRANS| | TRANS| | | + * |TRANS |TRANS |------| |------| TRANS| TRANS| + * | | | TRANS| | TRANS| | | + * `--------------------' `--------------------' + */ +[AUX] = KEYMAP( + // left hand + KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLEP, + KC_VOLD, KC_F1, KC_F2, KC_F3, KC_F4, KC_NO, KC_NO, + KC_NO , KC_F5, KC_F6, KC_F7, KC_F8, KC_TRNS, + KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, + LCTL(KC_S), LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), KC_TRNS, + KC_TRNS , KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_PWR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_7, KC_8, KC_9, KC_PAST, KC_NO, + KC_TRNS, KC_4, KC_5, KC_6, KC_PPLS, KC_NO, + KC_PSCR, KC_NO, KC_1, KC_2, KC_3, KC_PSLS, KC_TRNS, + KC_TRNS,KC_DOT, KC_0, KC_PEQL, KC_NO, + KC_TRNS , KC_TRNS, + KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(AUX) // FN1 - Momentary Layer 1 (Aux) +}; + + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ + // MACRODOWN only works in this function + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { + + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + ergodox_right_led_1_off(); + ergodox_right_led_2_off(); + ergodox_right_led_3_off(); + switch (layer) { + case 1: + ergodox_right_led_1_on(); + break; + case 2: + ergodox_right_led_2_on(); + break; + default: + // none + break; + } +} From 83b6dd0cd6f055d99d3a11690ccc81b908a0aa4c Mon Sep 17 00:00:00 2001 From: Didier Chagniot Date: Sat, 10 Sep 2016 00:20:21 +0200 Subject: [PATCH 038/727] readme.md updated --- .../ergodox/keymaps/dvorak_emacs/readme.md | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 keyboards/ergodox/keymaps/dvorak_emacs/readme.md diff --git a/keyboards/ergodox/keymaps/dvorak_emacs/readme.md b/keyboards/ergodox/keymaps/dvorak_emacs/readme.md new file mode 100644 index 0000000000..0578f1e257 --- /dev/null +++ b/keyboards/ergodox/keymaps/dvorak_emacs/readme.md @@ -0,0 +1,70 @@ +# Ergodox Dvorak Layout with emacs binding in mind + * Control & Alt key on the thumbs (activated if pressed with another key). + * In the same way, "I" and "R" are the shift modifier if pressed with another key. + * "I" and "D" set the layer 1 for the auxiliary keys if pressed with another key. + * Software layout set to english. + +## Keymap Layers + - L0: dvorak with some customizations (see layout below) + - L1: auxiliary keys (includes function keys, numpad...) + + +### Keymap 0: Base layer +Keys with double values (like U/LSft) correspond to the 'tapped' key and the 'held' key, respectively + +