From ac3513b79fc171a8efc92a94641e0b88dd43bd4f Mon Sep 17 00:00:00 2001 From: Piet Nutbey Date: Sat, 19 Dec 2015 22:50:48 -0500 Subject: corrected folder --- .../ergodox_ez/keymaps/keymap_osx_kinesis_pnut.c | 191 +++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/keymap_osx_kinesis_pnut.c (limited to 'keyboard/ergodox_ez/keymaps') diff --git a/keyboard/ergodox_ez/keymaps/keymap_osx_kinesis_pnut.c b/keyboard/ergodox_ez/keymaps/keymap_osx_kinesis_pnut.c new file mode 100644 index 0000000000..4f36c1b762 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/keymap_osx_kinesis_pnut.c @@ -0,0 +1,191 @@ +// Netable differences vs. the default firmware for the ErgoDox EZ: +// 1. The Cmd key is now on the right side, making Cmd+Space easier. +// 2. The media keys work on OSX (But not on Windows). +// Wanted to map default layer of my EZ to my existing Kinesis Mapping. +// Only default layer was remapped all others layers are standard Ergodox EZ +// Very personal mapping of-course, but who knows a starting point for others. + +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.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 + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | CapsL | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | TAB | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | ESC | A | S | D | F | G |------| |------| H | J | K | L |; / L2| '" | + * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| + * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | LGui | App | | Ctrl/Esc | RGui | + * ,------|------|------| |------+--------+------. + * | | | Home | | = | | | + * | Backs|Delete|------| |------| Enter |Space | + * | pace | | End | | TAB | | | + * `--------------------' `----------------------' + */ +// 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_CAPSLOCK, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1), + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), + LALT(KC_LSFT), LT(SYMB,KC_GRV),KC_QUOT,KC_LEFT,KC_RGHT, + KC_LGUI, ALT_T(KC_APP), + KC_HOME, + KC_BSPC,KC_DELT,KC_END, + // right hand + KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + TG(1), 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_QUOTE, + 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, + CTL_T(KC_ESC), KC_LGUI, + KC_EQL, + KC_TAB, KC_ENT, KC_SPC + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | 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 + 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_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 +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) { + 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; + default: + // none + break; + } + +}; -- cgit v1.2.3 From cc79f1742472f16199a138e9cefd8fd5ed1bde0e Mon Sep 17 00:00:00 2001 From: Piet Nutbey Date: Sat, 19 Dec 2015 23:24:59 -0500 Subject: Fixed keymap "graphic" --- keyboard/ergodox_ez/keymaps/keymap_osx_kinesis_pnut.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'keyboard/ergodox_ez/keymaps') diff --git a/keyboard/ergodox_ez/keymaps/keymap_osx_kinesis_pnut.c b/keyboard/ergodox_ez/keymaps/keymap_osx_kinesis_pnut.c index 4f36c1b762..f71ca28ceb 100644 --- a/keyboard/ergodox_ez/keymaps/keymap_osx_kinesis_pnut.c +++ b/keyboard/ergodox_ez/keymaps/keymap_osx_kinesis_pnut.c @@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * |AltShf|Grv/L1| '" | Left | Right| | Up | Down | [ | ] | ~L1 | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | LGui | App | | Ctrl/Esc | RGui | -- cgit v1.2.3 From a67ef035b88015ae43c045c1f8b0b982e0dc9151 Mon Sep 17 00:00:00 2001 From: Technovangelist Date: Mon, 21 Dec 2015 09:52:10 -0500 Subject: first attempt at a working workman layout for the ergodoxez --- .../ergodox_ez/keymaps/keymap_workman_osx_mdw.c | 366 +++++++++++++++++++++ 1 file changed, 366 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/keymap_workman_osx_mdw.c (limited to 'keyboard/ergodox_ez/keymaps') diff --git a/keyboard/ergodox_ez/keymaps/keymap_workman_osx_mdw.c b/keyboard/ergodox_ez/keymaps/keymap_workman_osx_mdw.c new file mode 100644 index 0000000000..d0195faf34 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/keymap_workman_osx_mdw.c @@ -0,0 +1,366 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" +// README +// This keyboard layout is based on the [Workman Dead layout](https://github.com/ojbucao/Workman/tree/master/mac#workman-dead-for-programmers), which uses the comma as a dead key to trigger a second layer. +// Since I have more keys at my disposal on the ErgoDox, I moved the dead key to the bottom right. There are still a lot of +// blanks so still discovering what I like. +// If you aren't familiar with a dead key, the idea is that you tap the dead key which switches the layout. the next key you hit +// triggers the key you pressed AND switches the layout back to the original. For now I do this with a super kludgey macro and I +// look forward to learning about a more elegant way to do the same thing. Until then, this will have to do. + + +// TODO: Define layer names that make sense for the ErgoDox EZ. +#define BASE 0 // default layer +#define SYMB 1 // symbols +#define MDIA 2 // media keys +#define DEAD 3 // dead version of the symbols layer + +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 | - | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | Tab | Q | D | R | W | B | L1 | | L1 | J | F | U | P | ; | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | Hyper | A | S | H | T | G |------| |------| Y | N | E | O | I | ' | + * |--------+------+------+------+------+------| | | Meh |------+------+------+------+------+--------| + * | LShift | Z | X | M | C | V | | | | K | L | , | . |//Ctrl| RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | CTRL | OPT | CMD | | Left | Down | Up | Right| L3 | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+--------+------. + * | | | Home | | PgUp | | | + * | Space|Backsp|------| |------| 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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, + KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, TG(1), + ALL_T(KC_ESC), KC_A, KC_S, KC_H, KC_T, KC_G, + KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_NO, + KC_NO, KC_NO, KC_LCTL,KC_LALT,KC_LGUI, + KC_NO, KC_NO, + 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(1), KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSLS, + KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, + MEH_T(KC_NO),KC_K, KC_L, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT, + KC_LEFT,KC_DOWN,KC_UP, KC_RGHT, KC_FN4, + KC_NO, KC_NO, + KC_PGUP, + KC_PGDN,KC_ENT, KC_SPC + ), +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | % | & | ? | + | @ | | | | $ | _ | [ | ] | ! | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | / | ( | = | 0 | { |------| |------| } | 1 | * | ) | - | " | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | 6 | 7 | 8 | 9 | | | | | | \ | 2 | 3 | 4 | 5 | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[SYMB] = KEYMAP( + // left hand + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS, KC_PERC, KC_AMPR, LSFT(KC_SLSH), LSFT(KC_EQL), KC_AT, KC_TRNS, + KC_TRNS, KC_SLSH, KC_LPRN, KC_EQL, KC_0, LSFT(KC_LBRC), + KC_TRNS, KC_6, KC_7, KC_8, KC_9, 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, + // right hand + KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRNS, KC_DLR, KC_UNDERSCORE, KC_LBRC, KC_RBRC, KC_EXLM, KC_F12, + KC_RCBR, KC_1, KC_ASTR, KC_RPRN, KC_MINS, KC_QUOT, + KC_TRNS, KC_SLSH, KC_2, KC_3, KC_4, KC_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 +), +/* 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 +), +/* Keymap 4: Dead Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | % | & | ? | + | @ | | | | $ | _ | [ | ] | ! | F12 | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | / | ( | = | 0 | { |------| |------| } | 1 | * | ) | - | " | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | 6 | 7 | 8 | 9 | | | | | | \ | 2 | 3 | 4 | 5 | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +// SYMBOLS +[DEAD] = KEYMAP( + // left hand + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, + KC_TRNS, M(100), M(101), M(102), M(103), M(104), KC_TRNS, + KC_TRNS, M(109), M(110), M(111), M(112), M(113), + KC_TRNS, M(120), M(121), M(122), M(123), M(124), 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, M(105), M(106), M(107), M(108), M(130), KC_F12, + M(114), M(115), M(116), M(117), M(118), M(119), + KC_TRNS, M(125), M(126), M(127), M(128), M(129), 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[] = { + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Layer 1 (Symbols) + [2] = ACTION_LAYER_ON(BASE,0), // FN2 - Go back to the base layer + [3] = ACTION_LAYER_ON(DEAD,0), + [4] = ACTION_LAYER_TOGGLE(DEAD), +}; + +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; + case 100: + layer_clear(); + return MACRODOWN(D(LSFT), T(5), U(LSFT), T(FN4), END); + break; + case 101: + layer_clear(); + return MACRODOWN(D(LSFT), T(7), U(LSFT), T(FN4), END); + break; + case 102: + layer_clear(); + return MACRODOWN(D(LSFT), T(SLSH), U(LSFT), T(FN4), END); + break; + case 103: + layer_clear(); + return MACRODOWN(D(LSFT), T(EQL), U(LSFT), T(FN4), END); + break; + case 104: + layer_clear(); + return MACRODOWN(D(LSFT), T(2), U(LSFT), T(FN4), END); + break; + case 105: + layer_clear(); + return MACRODOWN(D(LSFT), T(4), U(LSFT), T(FN4), END); + break; + case 106: + layer_clear(); + return MACRODOWN(D(LSFT), T(MINS), U(LSFT), T(FN4), END); + break; + case 107: + layer_clear(); + return MACRODOWN(T(LBRC), T(FN4), END); + break; + case 108: + layer_clear(); + return MACRODOWN(T(RBRC), T(FN4), END); + break; + case 130: + layer_clear(); + return MACRODOWN(D(LSFT), T(1), U(LSFT), T(FN4), END); + break; + case 109: + layer_clear(); + return MACRODOWN(T(SLSH), T(FN4), END); + break; + case 110: + layer_clear(); + return MACRODOWN(D(LSFT), T(9), U(LSFT), T(FN4), END); + break; + case 111: + layer_clear(); + return MACRODOWN(T(EQL), T(FN4), END); + break; + case 112: + layer_clear(); + return MACRODOWN(T(0), T(FN4), END); + break; + case 113: + layer_clear(); + return MACRODOWN(D(LSFT), T(LBRC), U(LSFT), T(FN4), END); + break; + case 114: + layer_clear(); + return MACRODOWN(D(LSFT), T(RBRC), U(LSFT), T(FN4), END); + break; + case 115: + layer_clear(); + return MACRODOWN(T(1), T(FN4), END); + break; + case 116: + layer_clear(); + return MACRODOWN(D(LSFT), T(8), U(LSFT), T(FN4), END); + break; + case 117: + layer_clear(); + return MACRODOWN(D(LSFT), T(0), U(LSFT), T(FN4), END); + break; + case 118: + layer_clear(); + return MACRODOWN(T(MINS), T(FN4), END); + break; + case 119: + layer_clear(); + return MACRODOWN(D(LSFT), T(QUOT), U(LSFT), T(FN4), END); + break; + case 120: + layer_clear(); + return MACRODOWN(T(6), T(FN4), END); + break; + case 121: + layer_clear(); + return MACRODOWN(T(7), T(FN4), END); + break; + case 122: + layer_clear(); + return MACRODOWN(T(8), T(FN4), END); + break; + case 123: + layer_clear(); + return MACRODOWN(T(9), T(FN4), END); + break; + case 124: + layer_clear(); + return MACRODOWN(D(LSFT), T(BSLS), U(LSFT), T(FN4), END); + break; + case 125: + layer_clear(); + return MACRODOWN(T(BSLS), T(FN4), END); + break; + case 126: + layer_clear(); + return MACRODOWN(T(2), T(FN4), END); + break; + case 127: + layer_clear(); + return MACRODOWN(T(3), T(FN4), END); + break; + case 128: + layer_clear(); + return MACRODOWN(T(4), T(FN4), END); + break; + case 129: + layer_clear(); + return MACRODOWN(T(5), T(FN4), END); + break; + + default: + 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; + } + +}; -- cgit v1.2.3 From 42ca2e6684b7656a5715ccd88d982e6df04eb6d6 Mon Sep 17 00:00:00 2001 From: Technovangelist Date: Mon, 21 Dec 2015 10:20:02 -0500 Subject: swapped the space and enter to get the space under where the thumb is. --- keyboard/ergodox_ez/keymaps/keymap_workman_osx_mdw.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'keyboard/ergodox_ez/keymaps') diff --git a/keyboard/ergodox_ez/keymaps/keymap_workman_osx_mdw.c b/keyboard/ergodox_ez/keymaps/keymap_workman_osx_mdw.c index d0195faf34..14bbe010d5 100644 --- a/keyboard/ergodox_ez/keymaps/keymap_workman_osx_mdw.c +++ b/keyboard/ergodox_ez/keymaps/keymap_workman_osx_mdw.c @@ -34,8 +34,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | * ,------|------|------| |------+--------+------. * | | | Home | | PgUp | | | - * | Space|Backsp|------| |------| Enter |Space | - * | |ace | End | | PgDn | | | + * |Bckspc| Space|------| |------| Space |Enter | + * | | | End | | PgDn | | | * `--------------------' `----------------------' */ // If it accepts an argument (i.e, is a function), it doesn't need KC_. @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_NO, KC_NO, KC_LCTL,KC_LALT,KC_LGUI, KC_NO, KC_NO, KC_HOME, - KC_SPC,KC_BSPC,KC_END, + KC_BSPC,KC_SPC,KC_END, // right hand KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, TG(1), KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSLS, @@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_LEFT,KC_DOWN,KC_UP, KC_RGHT, KC_FN4, KC_NO, KC_NO, KC_PGUP, - KC_PGDN,KC_ENT, KC_SPC + KC_PGDN,KC_SPC,KC_ENT ), /* Keymap 1: Symbol Layer * -- cgit v1.2.3 From 7ba06c9e0dbc17cc46794b9961ff9290694d93df Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Sat, 19 Dec 2015 22:18:58 +0000 Subject: Dave's custom keymap This moves the keys closer to a traditional layout with some redundancy around the middle to compensate for fast non-traditional typists like myself who tend to wander from the home row a fair bit. Navigation keys are provided in layer 2 (accessed by left thumb button), programming symbols and classic numeric keypad in layer 1 (accessed by right thumb button). Permanent layer switching is provided with a smaller thumb button. Ctrl provided in place of caps lock (because no-one needs caps/num lock), space, backspace, enter, shift all in traditional positions with layer 1 providing things like equals, tilde and apostrophe (an attempt to re-use existing muscle memory). LEDs are pimped to the point of being silly (fading in/out on layer switch, rolling on reboot ... because I can). Power and reset keys provided on left thumb pad in layer 2. No meh or hyper as I haven't found a burning need for them yet. --- keyboard/ergodox_ez/keymaps/keymap_dave.c | 183 ++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 keyboard/ergodox_ez/keymaps/keymap_dave.c (limited to 'keyboard/ergodox_ez/keymaps') diff --git a/keyboard/ergodox_ez/keymaps/keymap_dave.c b/keyboard/ergodox_ez/keymaps/keymap_dave.c new file mode 100644 index 0000000000..b53aed9222 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/keymap_dave.c @@ -0,0 +1,183 @@ +#include "ergodox_ez.h" +#include "debug.h" +#include "action_layer.h" + +#define BASE 0 // default layer +#define PROG 1 // symbols +#define NAVI 2 // navigation keys + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap 0: Basic layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | | 6 | 7 | 8 | 9 | 0 | - | BkSpce | + * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| + * | Tab | Q | W | E | R | T | Y | | G | Y | U | I | O | P | Enter | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | LCtrl | A | S | D | F | G |------| |------| H | J | K | L | ; | Enter | + * |--------+------+------+------+------+------| H | | B |------+------+------+------+------+--------| + * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * |`/Ctrl| \ | | | LAlt | | RAlt | | [ | ] |'/Ctrl| + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | PrtS | Apps | | Paus | CtAl | + * ,------+------+------| |------+------+------. + * | | | L1 | | L1 | | | + * | Spce | ~L2 +------| |------+ ~L1 | Spce | + * | | | LGui | | RGui | | | + * `--------------------' `--------------------' + */ +[BASE] = KEYMAP( // layer 0 : default + // left hand + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, + KC_LCTRL, KC_A, KC_S, KC_D, KC_F, KC_G, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_H, + CTL_T(KC_GRV),KC_NUBS,KC_NO, KC_NO, KC_LALT, + KC_PSCREEN, KC_APP, + TO(PROG, ON_PRESS), + KC_SPC, MO(NAVI), KC_LGUI, + // right hand + KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_BSPC, + KC_G, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENTER, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENTER, + KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_RSFT, + KC_RALT,KC_NO, KC_LBRC,KC_RBRC, CTL_T(KC_QUOT), + KC_PAUS, MT(0x5, KC_NO), + TO(PROG, ON_PRESS), + KC_RGUI, MO(PROG), KC_SPC + ), + +/* Keymap 1: Symbol Layer + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | | | | | | | | | | | K/ | K* | K- | = | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | ! | @ | ( | ) | | | | | | | K7 | K8 | K9 | K+ | # | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | # | $ | { | } | ` |------| |------| | K4 | K5 | K6 | K+ | ' | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | % | ^ | [ | ] | ~ | | | | | K1 | K2 | K3 | K= | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | | | | | | K0 | K0 | K. | K= | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | L2 | | L2 | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[PROG] = KEYMAP( + // left hand + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, + TO(NAVI, ON_PRESS), + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_TRNS, KC_TRNS, KC_NO, KC_PSLS, KC_PAST, KC_PMNS, KC_EQUAL, + KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_NUHS, + KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_QUOT, + KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PENT, KC_TRNS, + KC_P0, KC_P0, KC_PDOT, KC_PENT, KC_TRNS, + KC_TRNS, KC_TRNS, + TO(NAVI, ON_PRESS), + KC_TRNS, KC_TRNS, KC_TRNS +), + +/* Keymap 2: Navigation and system keys + * + * ,--------------------------------------------------. ,--------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | | + * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| + * | | Home | Up | End | Ins | PgUp | | | | | | Ins | | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | Left | Down | Rght | Del | PgDn |------| |------| | Back | Del | Fwrd | | | + * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| + * | | Lclk | MsUp | Rclk | | | | | | | Prev | Play | Next | | | + * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' + * | | MsLt | MsDn | MsRt | | |VolDn | Mute |VolUp | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Powr | Log | | | | + * ,------|------|------| |------+------+------. + * | | | L0 | | L0 | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[NAVI] = KEYMAP( + KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, + KC_TRNS, KC_HOME, KC_UP, KC_END, KC_INS, KC_PGUP, KC_TRNS, + KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_DELT, KC_PGDN, + KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, + KC_PWR, LCTL(LALT(KC_DELT)), + TO(BASE, ON_PRESS), + KC_TRNS, KC_TRNS, KC_TRNS, + // right hand + KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_WBAK, KC_DELT, KC_WFWD, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, + KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, + TO(BASE, ON_PRESS), + KC_TRNS, KC_TRNS, KC_TRNS +), +}; + +const uint16_t PROGMEM fn_actions[] = { + //[1] = ACTION_LAYER_TAP_TOGGLE(PROG), // FN1 - Momentary Layer 1 (Symbols) + //[2] = ACTION_LAYER_TAP_TOGGLE(NAVI) // FN2 - Momentary Layer 2 (Navigation) +}; + +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) { + return NULL; +}; + +// Runs constantly in the background, in a loop. +void * matrix_scan_user(void) { + static uint8_t leds[4]; // Yes, I'm wasting a byte. Sue me. + uint8_t led; + uint8_t layer = biton32(layer_state); + + ergodox_board_led_off(); + + for (led = 1; led <= 3; ++led) { + leds[led] += (layer == led) ? + (leds[led] < 255 ? 1 : 0): + (leds[led] > 0 ? -1 : 0); + if (leds[led]) { + ergodox_right_led_on(led); + ergodox_right_led_set(led, leds[led]); + } + else { + ergodox_right_led_off(led); + } + } + + return NULL; +}; -- cgit v1.2.3 From dcc9948fae588daa0649a94ae342a4b13e631eba Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Sat, 2 Jan 2016 18:23:49 +0000 Subject: Added comments to LED stuff and included .hex file --- keyboard/ergodox_ez/keymaps/keymap_dave.c | 14 +- keyboard/ergodox_ez/keymaps/keymap_dave.hex | 1483 +++++++++++++++++++++++++++ 2 files changed, 1496 insertions(+), 1 deletion(-) create mode 100644 keyboard/ergodox_ez/keymaps/keymap_dave.hex (limited to 'keyboard/ergodox_ez/keymaps') diff --git a/keyboard/ergodox_ez/keymaps/keymap_dave.c b/keyboard/ergodox_ez/keymaps/keymap_dave.c index b53aed9222..a0c74ad805 100644 --- a/keyboard/ergodox_ez/keymaps/keymap_dave.c +++ b/keyboard/ergodox_ez/keymaps/keymap_dave.c @@ -160,16 +160,28 @@ void * matrix_init_user(void) { // Runs constantly in the background, in a loop. void * matrix_scan_user(void) { - static uint8_t leds[4]; // Yes, I'm wasting a byte. Sue me. + /* leds is a static array holding the current brightness of each of the + * three keyboard LEDs. It's 4 long simply to avoid the ugliness of +1s and + * -1s in the code below, and because wasting a byte really doesn't matter + * that much (no, it *doesn't*, stop whinging!). Note that because it's + * static it'll maintain state across invocations of this routine. + */ + static uint8_t leds[4]; uint8_t led; uint8_t layer = biton32(layer_state); ergodox_board_led_off(); + /* Loop over each LED/layer */ for (led = 1; led <= 3; ++led) { + /* If the current layer matches the current LED, increment its + * brightness by 1 up to a maximum of 255. If the current layer doesn't + * match, decrement its brightness by 1 down to a minimum of zero. + */ leds[led] += (layer == led) ? (leds[led] < 255 ? 1 : 0): (leds[led] > 0 ? -1 : 0); + /* Set LED state according to the new brightness */ if (leds[led]) { ergodox_right_led_on(led); ergodox_right_led_set(led, leds[led]); diff --git a/keyboard/ergodox_ez/keymaps/keymap_dave.hex b/keyboard/ergodox_ez/keymaps/keymap_dave.hex new file mode 100644 index 0000000000..767a9ca117 --- /dev/null +++ b/keyboard/ergodox_ez/keymaps/keymap_dave.hex @@ -0,0 +1,1483 @@ +:100000000C94FE060C9442070C9442070C94420791 +:100010000C9442070C9442070C9442070C9442073C +:100020000C9442070C9442070C94B2120C94841363 +:100030000C9442070C9442070C9442070C9442071C +:100040000C9442070C945C2C0C9442070C944207CD +:100050000C9442070C9463220C9442070C944207C0 +:100060000C9442070C9442070C9442070C944207EC +:100070000C9442070C9442070C9442070C944207DC +:100080000C9442070C9442070C9442070C944207CC +:100090000C9442070C9442070C9442070C944207BC +:1000A0000C9442070C9442070C944207E9130B147A +:1000B000F6140B14F6144D147014F614C514D81459 +:1000C00026182618541854189718D318D41AD41A66 +:1000D000EB18D41AE219E219AE1AD41AD41AC21AB9 +:1000E00029002B00E000E100357100001E00140023 +:1000F00004001D006400E3001F001A0016001B002E +:1001000000000252200008000700060000002C003A +:100110002100150009001900E2001151220017000A +:100120000A0005000000460023001C0000000B0030 +:100130000000650023000A000000050000004800E0 +:1001400024001C000B0011000000007525001800A1 +:100150000D001000E600115126000C000E003600C4 +:1001600000002C00270012000F0037002F00015262 +:100170002D001300330038003000E7002A0028006B +:100180002800E500347100000100010001000100B9 +:100190000100000001001E022002220201000100F5 +:1001A00001001F02210223020100010001002F02B1 +:1001B00026022F000100010001003002270230005A +:1001C000010012510100310235003502000001002A +:1001D0000100010000000100000001000100010019 +:1001E0000000010000000100010001000100010009 +:1001F0000000010000005F005C0059006200125125 +:10020000540060005D005A0062000100550061006A +:100210005E005B0063000100560057005700580065 +:10022000580001002E0032003400010001000000DF +:100230000100010001000100010000003A004A0035 +:100240005000F400F20001003B0052005100F000A9 +:10025000F10001003C004D004F00F500F3000100EB +:100260003D0049004C000100010010513E004B00D0 +:100270004E0001000000A5003F0001000000010049 +:1002800000004C05400001000000010000000100DA +:1002900041000100010001000000010042000100D6 +:1002A000B600AC00AA001051430049004C00AE005B +:1002B000A800010044000100B700AB00A900010044 +:1002C00045000100010001000100010001000100E2 +:1002D00001000100010000000A00253031366200F3 +:1002E0003A200025303258000A722F632030313214 +:1002F000333435363738394142434445460A000ADB +:10030000002530325800626F756E6365213A200017 +:100310006C656674207369646520617474616368D8 +:1003200065640A006C6566742073696465206E6F8D +:100330007420726573706F6E64696E670A00747200 +:1003400079696E6720746F207265736574206D63C0 +:100350007032333031380A000A44454255473A205A +:10036000656E61626C65642E0A005B735D004B65AF +:1003700079626F6172642073746172742E0A005B1B +:10038000575D005B535D005B525D005B445D005B4D +:10039000435D0016034500720067006F0044006F64 +:1003A000007800200045005A000000160345007246 +:1003B0000067006F0044006F007800200045005A7D +:1003C0000000000403090409028D00050100A0FAE1 +:1003D00009040000010301010009211101000122AB +:1003E0003F000705810308000A0904010001030119 +:1003F0000200092111010001224D000705820308B6 +:10040000000A090402000103000000092111010093 +:10041000012236000705830308000A0904030002CD +:1004200003000000092111010001222000070584BA +:100430000320000107050403200001090404000152 +:100440000300000009211101000122390007058580 +:10045000031000011201100100000008EDFE071357 +:1004600001000102000105010906A101050719E0CB +:1004700029E7150025019508750181020508190174 +:1004800029059505750191029501750391010507EF +:100490001900297715002501957875018102C0069C +:1004A00031FF0974A1010975150025FF9520750814 +:1004B00081020976150025FF952075089102C00577 +:1004C000010980A101850216010026B7001A01006A +:1004D0002AB700751095018100C0050C0901A10122 +:1004E0008503160100269C021A01002A9C02751041 +:1004F00095018100C005010902A1010901A10005C2 +:100500000919012905150025019505750181029537 +:1005100001750381010501093009311581257F9598 +:10052000027508810609381581257F9501750881B6 +:1005300006050C0A38021581257F9501750881068C +:10054000C0C005010906A101050719E029E715004A +:10055000250195087501810295017508810105083D +:100560001901290595057501910295017503910100 +:100570000507190029FF150025FF9506750881005C +:10058000C00A002530325820006B6579626F6172B5 +:10059000645F7265706F72743A20000A0025303211 +:1005A00058006B6579626F6172645F7365745F6C2C +:1005B00065643A200064656C5F6B65795F6269749D +:1005C0003A2063616E27742064656C3A20253032CE +:1005D000580A006164645F6B65795F6269743A20F0 +:1005E00063616E2774206164643A20253032580AB2 +:1005F00000646F6E652E0A00626F6F676D616769D8 +:1006000063207363616E3A202E2E2E2000290A008B +:100610002575002F002575005D2800256400200049 +:10062000256400200025640020002564007C00254E +:10063000303258006D6F7573656B6579205B62743D +:100640006E7C782079207620685D287265702F6135 +:10065000636C293A205B006D6B5F776865656C5F42 +:1006600074696D655F746F5F6D6178203D202564EE +:100670000A006D6B5F776865656C5F6D61785F73AD +:1006800070656564203D2025640A006D6B5F7469A8 +:100690006D655F746F5F6D6178203D2025640A0091 +:1006A0006D6B5F6D61785F7370656564203D2025BB +:1006B000640A006D6B5F696E74657276616C203DD3 +:1006C0002025640A006D6B5F64656C6179203D20B4 +:1006D00025640A006D6B5F776865656C5F74696D92 +:1006E000655F746F5F6D6178203D2025640A006D41 +:1006F0006B5F776865656C5F6D61785F737065656A +:1007000064203D2025640A006D6B5F74696D655F30 +:10071000746F5F6D6178203D2025640A006D6B5F0A +:100720006D61785F7370656564203D2025640A0003 +:100730006D6B5F696E74657276616C203D20256417 +:100740000A006D6B5F64656C6179203D2025640A49 +:10075000000A00257500363A20776865656C5F747D +:10076000696D655F746F5F6D61783A20000A0025DE +:100770007500353A20776865656C5F6D61785F73E9 +:10078000706565643A20000A00257500343A2074CB +:10079000696D655F746F5F6D61783A20000A0025AE +:1007A0007500333A206D61785F73706565643A2037 +:1007B000000A00257500323A20696E746572766110 +:1007C0006C286D73293A20000A00257500313A2003 +:1007D00064656C6179282A31306D73293A20000AEA +:1007E000092D2056616C756573202D0A004D3E0061 +:1007F0004D25643E20003F0073657420646566618A +:10080000756C740A00433E20007768657265206449 +:10081000656C74613A20637572736F723D25642C48 +:1008200020776865656C3D25640A536565206874AA +:1008300074703A2F2F656E2E77696B6970656469E5 +:10084000612E6F72672F77696B692F4D6F757365B6 +:100850005F6B6579730A000A092D204D6F7573650A +:100860006B6579202D0A4553432F713A09717569DB +:10087000740A313A0964656C6179282A31306D73E4 +:10088000290A323A09696E74657276616C286D7353 +:10089000290A333A096D61785F73706565640A34BB +:1008A0003A0974696D655F746F5F6D61780A353AF6 +:1008B00009776865656C5F6D61785F737065656405 +:1008C0000A363A09776865656C5F74696D655F74AF +:1008D0006F5F6D61780A0A703A097072696E7420F0 +:1008E00076616C7565730A643A0973657420646592 +:1008F0006661756C74730A75703A092B310A646FFE +:10090000776E3A092D310A706775703A092B3130CC +:100910000A7067646F776E3A092D31300A0A737076 +:10092000656564203D2064656C7461202A206D61DA +:10093000785F7370656564202A2028726570656130 +:1009400074202F2074696D655F746F5F6D61782905 +:100950000A003F004D3E2000433E20004C25640A23 +:10096000000A092D20436F6E736F6C65202D0A45B8 +:1009700053432F713A09717569740A6D3A096D6FA5 +:100980007573656B65790A000A092D204D616769E9 +:1009900063202D0A643A0964656275670A783A092A +:1009A0006465627567206D61747269780A6B3A09D3 +:1009B0006465627567206B6579626F6172640A6D48 +:1009C0003A096465627567206D6F7573650A763ADA +:1009D0000976657273696F6E0A733A09737461748C +:1009E00075730A633A09636F6E736F6C65206D6F80 +:1009F00064650A302D343A096C61796572302D34A2 +:100A0000284631302D4634290A506175733A0962FF +:100A10006F6F746C6F616465720A653A0965657021 +:100A2000726F6D0A6E3A094E4B524F0A7A3A097349 +:100A30006C656570204C454420746573740A000A27 +:100A4000002575002E6E6B726F3A20000A00257526 +:100A5000002E737761705F6261636B736C617368A2 +:100A60005F6261636B73706163653A20000A002501 +:100A700075002E737761705F67726176655F65736D +:100A8000633A20000A002575002E6E6F5F67756956 +:100A90003A20000A002575002E737761705F72613D +:100AA0006C745F726775693A20000A002575002E24 +:100AB000737761705F6C616C745F6C6775693A2005 +:100AC000000A002575002E636170736C6F636B5FA5 +:100AD000746F5F636F6E74726F6C3A20000A00254A +:100AE00075002E737761705F636F6E74726F6C5FE9 +:100AF000636170736C6F636B3A20000A00253032BB +:100B000058006B65796D61705F636F6E6669672E03 +:100B10007261773A20000A002575002E6D6F75739B +:100B2000653A20000A002575002E6B6579626F61B9 +:100B300072643A20000A002575002E6D6174726996 +:100B4000783A20000A002575002E656E61626C659A +:100B50003A20000A00253032580064656275675FEC +:100B6000636F6E6669672E7261773A20000A00250E +:100B7000750064656661756C745F6C617965723A65 +:100B800020003F004E4B524F3A206F66660A004EDF +:100B90004B524F3A206F6E0A0074696D65725F6345 +:100BA0006F756E743A202530346C580A006B657985 +:100BB000626F6172645F6E6B726F3A2025580A0033 +:100BC0006B6579626F6172645F69646C653A202558 +:100BD000580A006B6579626F6172645F70726F743E +:100BE0006F636F6C3A2025580A00686F73745F6BEF +:100BF0006579626F6172645F6C65647328293A205D +:100C000025580A000A092D20537461747573202D2C +:100C10000A004743433A20342E382E3220415652A0 +:100C20002D4C4942433A20312E382E302041565225 +:100C30005F415243483A20617672350A004F505462 +:100C4000494F4E533A204C55464120424F4F544D48 +:100C500041474943204D4F5553454B455920455831 +:100C60005452414B455920434F4E534F4C4520431E +:100C70004F4D4D414E44204E4B524F203531320A9C +:100C8000004255494C443A203135316565303420B5 +:100C90002832303A35393A343720446563203230CF +:100CA0002032303135290A005649443A20307846FE +:100CB000454544284572676F446F7820455A29207E +:100CC0005049443A20307831333037284572676FC5 +:100CD000446F7820455A29205645523A20307830C2 +:100CE0003030310A00444553433A20742E6D2E6B48 +:100CF0002E206B6579626F617264206669726D7710 +:100D000061726520666F72204572676F646F780A42 +:100D1000000A092D2056657273696F6E202D0A0036 +:100D20000A6D6F7573653A206F66660A000A6D6F0B +:100D30007573653A206F6E0A000A6B6579626F61A0 +:100D400072643A206F66660A000A6B6579626F61A9 +:100D500072643A206F6E0A000A6D61747269783AA3 +:100D6000206F66660A000A6D61747269783A206FB6 +:100D70006E0A000A64656275673A206F6E0A000A9F +:100D800064656275673A206F66660A000A0A626FD8 +:100D90006F746C6F616465722E2E2E2000433E20AE +:100DA000006565636F6E6669673A0A00536C656536 +:100DB00070204C454420746573740A0000000000E4 +:100DC00000000000000000010204060A0F17202C9A +:100DD0003A4A5D71879DB3C7DAE9F5FCFFFCF5E996 +:100DE000DAC7B39D87715D4A3A2C20170F0A0604B3 +:100DF00002010000000000000000000011241FBEDE +:100E0000CFEFDAE0DEBFCDBF04B603FE24C0809191 +:100E1000FD019091FE01A091FF01B0910002873089 +:100E2000904BA740B04BB9F41092FD011092FE0117 +:100E30001092FF011092000214BE84B7877F84BF16 +:100E400088E10FB6F89480936000109260000FBEA6 +:100E5000E0E0FFE3099511E0A0E0B1E0E4E5FCE5A6 +:100E600002C005900D92AA33B107D9F711E0AAE3A9 +:100E7000B1E001C01D92AD3FB107E1F70E94EC0F58 +:100E80000C94282E0C940000FF93EF93E0913A010C +:100E9000F0913B01309709F00995EF91FF9108958A +:100EA000FC018591803011F0EFDFFBCF0895FF2723 +:100EB000E0E230E247FF0CC0419597FF09C0EDE248 +:100EC0006095709580959095611D711D811D911D96 +:100ED00027FF02C0219530E350E2AA27660F771F53 +:100EE000881F991FAA1FA41710F0A41B63955A9579 +:100EF000A9F7AA3008F0A95FA05DAF93F39561153B +:100F000071058105910541F7ED3211F4EF93F395E9 +:100F1000F21718F43F93F395FBCF8F91B5DFFA9555 +:100F2000E1F70895E991F9918591803021F08532BA +:100F300019F0AADFF9CF089520E0E89455915532D1 +:100F4000C1F3503311F4689455915A3348F4505317 +:100F500090F3220F022E220F220F200D250FF4CF27 +:100F60000EF4219589919991533619F3533729F14C +:100F7000533559F1BC0188279927E8945C3621F450 +:100F80008991999168945591543639F446EF7EF0E1 +:100F900077FF0DC08FEF9FEF0AC055374AE039F059 +:100FA000583540E121F0523642E009F00895FF93B0 +:100FB000EF937DDFEF91FF91B7CFFF93EF93FC01AC +:100FC00081918030B9F360DFFBCFFF93EF9368DF4F +:100FD000F1CFDF93CF93CDB7DEB72596A3DFCF91C7 +:100FE000DF91089561110BC0FC018281882321F0FB +:100FF00085EE0E94BA1603C085EE0E94821780E03B +:1010000090E0089580E090E00895EF92FF921F93A2 +:10101000CF93DF936091C0017091C1018091C201B3 +:101020009091C3010E94672156985E9821E030E0BC +:10103000682F70E0EB01C45CDE4FE1E0F0E0122FBE +:10104000821307C0AB019881A1E09F3F61F4A0E04B +:101050000AC0A901D901A45CBE4F9C91A1E09111E5 +:1010600001C0A0E0A1959A0FDA01A45CBE4F9C9349 +:101070004C5F5F4F992309F194B17F0102C0EE0CE0 +:10108000FF1C4A95E2F79E2994B995B19E2995B91E +:101090004C9150E0113029F450938900409388001E +:1010A0001AC0123029F450938B0040938A0013C069 +:1010B00050938D0040938C000EC094B1DF0102C0AC +:1010C000AA0FBB1F4A95E2F7AD014095942394B94E +:1010D00095B1942395B92F5F3F4F2430310509F026 +:1010E000AECF80E090E0DF91CF911F91FF90EF9025 +:1010F000089585E098E0892B11F00E94050880E0B2 +:1011000090E0089556985E9825982D9826982E98E8 +:1011100027982F988FEF90E0909389008093880014 +:1011200090938B0080938A0090938D0080938C0025 +:10113000259A2D9A2FEF80E792E021508040904031 +:10114000E1F700C00000269A2E9A2FEF80E792E088 +:10115000215080409040E1F700C00000279A2F9A6C +:101160002FEF80E792E0215080409040E1F700C0EF +:10117000000025982D982FEF80E792E021508040C5 +:101180009040E1F700C0000026982E982FEF80E7EE +:1011900092E0215080409040E1F700C00000279885 +:1011A0002F9856985E9825982D9826982E982798CF +:1011B0002F98089589EA8093800089E080938100C8 +:1011C00024982C983F988AB18F748AB96E98479A60 +:1011D0008BB1806B8BB9769A0E94820882E098E08E +:1011E000892B11F00E94020880E090E0089580E2CF +:1011F000809300018091400181110EC00E94460938 +:1012000081E0809340012FEF83ED90E321508040F7 +:101210009040E1F700C0000080E40E944C098093F8 +:10122000000181112EC00E94760980930001811176 +:1012300028C00E94760980930001811122C08FE3AB +:101240000E9476098093000181111BC00E946E09E3 +:1012500080E40E944C0980930001811112C08CE04F +:101260000E9476098093000181110BC00E947609CB +:1012700080930001811105C08FE30E94760980935D +:1012800000010E946E098091000108951092B9003A +:101290008AE08093B800089594EA9093BC009091FE +:1012A000BC0097FFFCCF9091B900987F983021F057 +:1012B000903111F081E008958093BB0084E8809321 +:1012C000BC008091BC0087FFFCCF8091B900887F73 +:1012D000883111F0803471F780E0089584E98093BB +:1012E000BC008091BC0084FDFCCF08958093BB00BE +:1012F00084E88093BC008091BC0087FFFCCF909174 +:10130000B900987F81E0983209F480E0089584E87C +:101310008093BC008091BC0087FFFCCF8091BB0014 +:10132000089580910001811115C080E40E944C094C +:101330008093000181110CC082E10E9476098093A4 +:101340000001811105C08FEF0E9476098093000192 +:101350000E946E0984B1807F84B985B1807F85B990 +:101360008AB1837F8AB98BB1837F8BB93E984698C7 +:1013700008950E94F708809300010E94910980B3AC +:101380008C7080BB81B3836F81BBE0E5F1E0A2E4A8 +:10139000B1E011921D9281E0EE35F807D1F78AEDA8 +:1013A00098E0892B11F00C94DA0808959F92AF927F +:1013B000BF92CF92DF92EF92FF920F931F93CF9342 +:1013C000DF93809100018823E1F0809141018F5FDC +:1013D00080934101811115C08EE393E00E94500774 +:1013E0000E94F70880930001882329F084E293E0AB +:1013F0000E94500706C080E193E00E9450070E94BF +:10140000820802E411E0C0E0D0E0BB24B39482E0A3 +:10141000A82ECC24C394D12C21E0E22E23E0F22E7E +:10142000C73000F580910001811162C080E40E9404 +:101430004C0980930001811112C082E10E9476095B +:101440008093000181110BC0C6010C2E01C0880FD2 +:101450000A94EAF780950E947609809300010E9421 +:101460006E0946C0CA30A1F028F4C83059F0C9301E +:1014700061F005C0CC3089F070F0CD3089F0209A51 +:10148000289810C0219A29980DC0229A2A980AC03B +:10149000239A2B9807C0529A01C0539A5B9802C0B6 +:1014A0003E9A4698E0EAEA95F1F78FB1799985C0BE +:1014B00092E081708B25892B7C9B02C090E001C05B +:1014C00094E0892B7D9B02C090E001C098E0892BBD +:1014D0007E9B02C090E001C090E1892B9FB1909566 +:1014E000991F9927991F9295990F907E892B10C06B +:1014F00080910001811176C080E40E944C098093A4 +:101500000001882309F45BC0912C0E946E09892D8B +:10151000F8019081981739F1808