From f4ba9662f41342dd40052c70c4384ff7d03d7c15 Mon Sep 17 00:00:00 2001 From: Jonathan Arnett Date: Thu, 21 Jan 2016 21:25:33 -0500 Subject: [PATCH 01/55] A to toggle L2, hjkl to move mouse --- keyboard/ergodox_ez/keymaps/j3rn/keymap.c | 27 ++++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c index b5463cb72d..e5be6fed90 100644 --- a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c +++ b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c @@ -14,7 +14,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | Tab | Q | W | E | R | T | - | | = | Y | U | I | O | P | \ | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * |Ctrl/Esc| A | S | D | F | G |------| |------| H | J | K | L |; / L2| ' | + * |Ctrl/Esc|A / L2| S | D | F | G |------| |------| H | J | K | L | ; | ' | * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, - CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, + CTL_T(KC_ESC), LT(MDIA, 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), KC_FN1, KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, @@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand KC_RBRC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_EQL, 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, + KC_H, KC_J, KC_K, KC_L, KC_SCLN, 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, @@ -99,13 +99,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,--------------------------------------------------. ,--------------------------------------------------. * | | | | | | | | | | | | | | | | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp | | | | | | | | | | | | + * | | | | | | | | | | | | Lclk | Rclk | | | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | + * | | | | | | |------| |------|MsLeft|MsDown| MsUp |MsRght| | Play | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | | | | | | | | | | | | Prev | Next | | | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | + * | | | | | | |VolUp |VolDn | Mute | | | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | | | | | | @@ -116,19 +116,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `--------------------' `--------------------' */ // MEDIA AND MOUSE -KEYMAP( +[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, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_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_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, + KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, 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, @@ -138,7 +138,8 @@ KEYMAP( }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) + [1] = ACTION_LAYER_TAP_TOGGLE(SYMB), // FN1 - Momentary Layer 1 (Symbols) + [2] = ACTION_LAYER_TAP_TOGGLE(MDIA) // FN2 - Momentary Layer 2 (Media) }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) From 6f53e17bf50fbe7bb833a0993e367be81fd2d559 Mon Sep 17 00:00:00 2001 From: Jonathan Arnett Date: Wed, 27 Jan 2016 19:13:54 -0500 Subject: [PATCH 02/55] Building a row of level switch buttons --- keyboard/ergodox_ez/keymaps/j3rn/keymap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c index e5be6fed90..5da697088f 100644 --- a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c +++ b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c @@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | ~L1 | '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | + * | ~L1 | ~L2 |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | * `----------------------------------' `----------------------------------' * ,-------------. ,-------------. * | App | Home | | PgUp |Ctrl/Esc| @@ -34,9 +34,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, - CTL_T(KC_ESC), LT(MDIA, KC_A),KC_S, KC_D, KC_F, KC_G, + CTL_T(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), - KC_FN1, KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT, + KC_FN1, KC_FN2, LALT(KC_LSFT), KC_LEFT,KC_RGHT, ALT_T(KC_APP), KC_HOME, KC_END, From 9cfc74c35b940884618b0fe1e6fd25c570e1c974 Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 7 Apr 2016 15:21:06 +0300 Subject: [PATCH 03/55] [Erez & Jack] Makes tri-layer available across Quantum --- keyboard/planck/keymaps/default/keymap.c | 9 --------- quantum/keymap_common.c | 8 ++++++++ quantum/keymap_common.h | 4 ++++ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index dee2840f2d..56092d04fb 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -174,16 +174,7 @@ float tone_dv[][2] = { }; #endif -#define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) -#define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer))) -void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { - layer_on(layer3); - } else { - layer_off(layer3); - } -} const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index e3030a8869..3a00d36f08 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -291,3 +291,11 @@ action_t keymap_func_to_action(uint16_t keycode) // For FUNC without 8bit limit return (action_t){ .code = pgm_read_word(&fn_actions[(int)keycode]) }; } + +void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { + layer_on(layer3); + } else { + layer_off(layer3); + } +} diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 4a877d2a70..7452a1ff3f 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -208,5 +208,9 @@ extern const uint16_t fn_actions[]; #define UNICODE(n) (n | 0x8000) #define UC(n) UNICODE(n) +// For tri-layer +void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3); +#define IS_LAYER_ON(layer) ((layer_state) & (1UL<<(layer))) +#define IS_LAYER_OFF(layer) ((!layer_state) & (1UL<<(layer))) #endif From 2557b91644d9565c43f0e5c27d45788d4a47f3eb Mon Sep 17 00:00:00 2001 From: Erez Zukerman Date: Thu, 7 Apr 2016 15:45:11 +0300 Subject: [PATCH 04/55] [Erez & Jack] Documents tri-layer and keymap-specific makefile options --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ab7373023a..613bdcf42b 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,21 @@ The documentation below explains QMK customizations and elaborates on some of th * If you're looking to customize a keyboard that currently runs QMK or TMK, find your keyboard's directory under `keyboard/` and run the make commands from there. * If you're looking to apply this firmware to an entirely new hardware project (a new kind of keyboard), you can create your own Quantum-based project by using `./new_project.sh `, which will create `/keyboard/` with all the necessary components for a Quantum project. +### Makefile Options + You have access to a bunch of goodies! Check out the Makefile to enable/disable some of the features. Uncomment the `#` to enable them. Setting them to `no` does nothing and will only confuse future you. BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality MIDI_ENABLE = yes # MIDI controls - # UNICODE_ENABLE = yes # Unicode support - this is commented out, just as an example. You have to use #, not // + UNICODE_ENABLE = no # <-- This is how you disable an option, just set it to "no" BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID +### Customizing Makefile options on a per-keymap basis + +If your keymap directory has a file called `makefile.mk` (note the lowercase filename, and the `.mk` extension), any Makefile options you set in that file will take precedence over other Makefile options (those set for Quantum as a whole or for your particular keyboard). + +So let's say your keyboard's makefile has `CONSOLE_ENABLE = yes` (or maybe doesn't even list the `CONSOLE_ENABLE` option, which would cause it to revert to the global Quantum default). You want your particular keymap to not have the debug console, so you make a file called `makefile.mk` and specify `CONSOLE_ENABLE = no`. + ## Quick aliases to common actions Your keymap can include shortcuts to common operations (called "function actions" in tmk). @@ -199,6 +207,10 @@ This will clear all mods currently pressed. 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). + #### Timer functionality It's possible to start timers and read values for time-specific events - here's an example: From aaa7af752c89bdf22054c6dd0369c83ca1bee30d Mon Sep 17 00:00:00 2001 From: Jonathan Arnett Date: Mon, 11 Apr 2016 19:01:39 -0400 Subject: [PATCH 05/55] Make a also toggle Media layer --- keyboard/ergodox_ez/keymaps/j3rn/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c index 5da697088f..5eb1574017 100644 --- a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c +++ b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, - CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, + CTL_T(KC_ESC), LT(MDIA, 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), KC_FN1, KC_FN2, LALT(KC_LSFT), KC_LEFT,KC_RGHT, From 4b03a0f3d5f59c80cce8bb666b3aea166de5e5f1 Mon Sep 17 00:00:00 2001 From: Jonathan Arnett Date: Mon, 11 Apr 2016 19:08:24 -0400 Subject: [PATCH 06/55] Stylistic changes --- keyboard/ergodox_ez/keymaps/j3rn/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c index 5eb1574017..6e271321d5 100644 --- a/keyboard/ergodox_ez/keymaps/j3rn/keymap.c +++ b/keyboard/ergodox_ez/keymaps/j3rn/keymap.c @@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LBRC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_MINS, - CTL_T(KC_ESC), LT(MDIA, KC_A), KC_S, KC_D, KC_F, KC_G, + CTL_T(KC_ESC), LT(MDIA, 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), KC_FN1, KC_FN2, LALT(KC_LSFT), KC_LEFT,KC_RGHT, From 9e2c767c454ff07330b522579f6433276ae9d7cb Mon Sep 17 00:00:00 2001 From: Jonathan Arnett Date: Mon, 11 Apr 2016 19:19:20 -0400 Subject: [PATCH 07/55] Added README note about Vim-style navigation --- keyboard/ergodox_ez/keymaps/j3rn/readme.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/j3rn/readme.md b/keyboard/ergodox_ez/keymaps/j3rn/readme.md index b0c4d267bd..fc4b640426 100644 --- a/keyboard/ergodox_ez/keymaps/j3rn/readme.md +++ b/keyboard/ergodox_ez/keymaps/j3rn/readme.md @@ -1,10 +1,10 @@ -# J3RN's Mac-centric Ergodox EZ keymap +# J3RN's Mac-centric ErgoDox EZ keymap ## Motivation -Essentially, I wanted to switch to a layout that was less jarring than the default Ergodox EZ layout, and did not require finger gymnastics to perform common OS X shortcuts (most of which involve the CMD (LGui) key). +Essentially, I wanted to switch to a layout that was less jarring than the default ErgoDox EZ layout, and did not require finger gymnastics to perform common OS X shortcuts (most of which involve the CMD (LGui) key). -## How is it different from the default Ergodox EZ layout? +## How is it different from the default ErgoDox EZ layout? This layout more closely resembles that of the Mac keyboard, and has some other goodness baked in. Here is a rundown of what that means: @@ -18,6 +18,7 @@ This layout more closely resembles that of the Mac keyboard, and has some other ### Other changes - **The button to the left of "A" is Ctrl/Esc instead of Backspace.** This is actually how I have the keyboard on my Macbook set up to be, since it's loads more convenient than a CAPS LOCK key. This is the Ctrl key I find myself using most. +- **Mouse uses Vim-style navigation**. To activate "Media mode," hold the 'a' key. This allows you to move the mouse around with hjkl just like in Vim. Additionally, right and left click are the conveniently placed 'i' and 'o' keys. - **The key to the right of "5" and the key to left of "6" are "[" and "]", respectively, instead of Left and Right.** There is a more convenient set of Left and Right already present. Truth be told, I don't really use these keys, as they are a stretch to reach. - **The Toggle L1 keys have been replaced by the otherwise displaced "-" and "=".** They are laid out, left-to-right, in the same order as on the Mac keyboard. Honestly, they are not terribly conveniently placed, and their placement might change in a later version. I found that I did not toggle L1 frequently at all, and found using the momentary keys to access L1 to fit my workflow better. - **The "~"/L1 key in the bottom-left is now just momentary L1.** The "~" key was moved to the top-left as mentioned before, and I like to keep my multi-use keys to a minimum due to the latency for them to switch from "press" to "hold." From efffbe35c88fbc2360ba643b3163a75c3393d601 Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Mon, 11 Apr 2016 22:51:12 -0500 Subject: [PATCH 08/55] The Ordinary Layout is the layout you are looking for. Come and see. --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 503 +++- .../keymaps/ordinary/ordinary-base.png | Bin 94771 -> 99031 bytes .../keymaps/ordinary/ordinary-base.txt | 14 +- .../keymaps/ordinary/ordinary-media.png | Bin 108774 -> 119139 bytes .../keymaps/ordinary/ordinary-media.txt | 44 +- .../keymaps/ordinary/ordinary-symbol.png | Bin 93001 -> 98257 bytes .../keymaps/ordinary/ordinary-symbol.txt | 40 +- .../ergodox_ez/keymaps/ordinary/ordinary.hex | 2294 +++++++++-------- .../ergodox_ez/keymaps/ordinary/readme.md | 66 +- 9 files changed, 1635 insertions(+), 1326 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 4dd6d883ca..07a1e5e899 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -1,149 +1,375 @@ #include "ergodox_ez.h" +#include "led.h" #include "debug.h" #include "action_layer.h" #define BASE 0 // default layer -#define SYMB 1 // symbols -#define MDIA 2 // media keys +#define LOCK 1 // layer lock keys +#define SYMB_MO 2 // symbols momentary layer +#define SYMB_TG 3 // symbols lock layer +#define SYMB_XX 4 // symbols lock layer +#define MDIA_MO 5 // media momentary layer +#define MDIA_TG 6 // media lock layer +#define MDIA_XX 7 // topmost escape /* - * Ordinary Ergodox EZ keyboard layout, v2 + * Ordinary Ergodox EZ keyboard layout, v3 * modifications from default by Nicholas Keene ergodoxez@nicholaskeene.com * Details: http://nicholas.rinard.us/2016/03/ergodox-ez-layout.html */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Keymap 0: Basic layer * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | Grv | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | = | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | MDIA \ | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | SYMB | A | S | D | F | G |------| |------| H | J | K | L | ; | SYMB ' | - * |--------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+--------| - * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | RShift | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * |LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh |RCtrl | - * `----------------------------------' `----------------------------------' - * ,---------------. ,---------------. - * | Home | End | | Left | Right | - * ,------|--------|------| |------+--------+------. - * | | | PgUp | | Up | | | - * |Backsp| Del |------| |------| Enter | Space| - * | | | PgDn | | Down | | |; - * `----------------------' `----------------------' + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | LOCK Grv | 1 | 2 | 3 | 4 | 5 | ESC | | - | 6 | 7 | 8 | 9 | 0 | = LOCK | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Media Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ Media | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | Symbol | A | S | D | F | G |------| |------| H | J | K | L | ; | ' Symbol | + * |-----------+------+------+------+------+------|Shift | | Tab |------+------+------+------+------+-----------| + * | LShift | Z | X | C | V | B | -Tab | | | N | M | , | . | / | RShift | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * |LCtrl | Meh |Hyper | LAlt | LGui | | RGui | RAlt | Hyper| Meh |RCtrl | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Home | End | | Left | Right| + * ,------|------|------| |------+------+------. + * | | | PgUp | | Up | | | + * |Backsp| Del |------| |------| Enter| Space| + * | | | PgDn | | Down | | | + * `--------------------' `--------------------' */ -// 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_ESC, - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, - MO(SYMB), KC_A, KC_S, KC_D, KC_F, KC_G, - KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, LSFT(KC_TAB), - KC_LCTL, MEH_T(KC_NO),ALL_T(KC_NO),KC_LALT,KC_LGUI, - KC_HOME, KC_END, - KC_PGUP, - KC_BSPC, KC_DEL, KC_PGDN, +[BASE] = KEYMAP( +// left hand + LT(LOCK, KC_GRV),KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_ESC +,LT(MDIA_MO, KC_TAB),KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_LBRC +,MO(SYMB_MO) ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G +,KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSFT(KC_TAB) +,KC_LCTL ,MEH_T(KC_NO),ALL_T(KC_NO),KC_LALT,KC_LGUI + + ,KC_HOME,KC_END + ,KC_PGUP + ,KC_BSPC,KC_DEL ,KC_PGDN // right hand - KC_MINS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, - KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, LT(MDIA, KC_BSLS), - KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(SYMB, KC_QUOT), - KC_TAB, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH),KC_RSFT, - KC_RGUI, KC_RALT, ALL_T(KC_NO),MEH_T(KC_NO), KC_RCTL, - KC_LEFT, KC_RGHT, - KC_UP, - KC_DOWN, KC_ENT, KC_SPC + ,KC_MINS ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,LT(LOCK, KC_EQL) + ,KC_RBRC ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,LT(MDIA_MO, KC_BSLS) + ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,LT(SYMB_MO, KC_QUOT) + ,KC_TAB ,KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH ,KC_RSFT + ,KC_RGUI,KC_RALT,ALL_T(KC_NO),MEH_T(KC_NO),KC_RCTL + + ,KC_LEFT ,KC_RGHT + ,KC_UP + ,KC_DOWN ,KC_ENT ,KC_SPC ), -/* Keymap 1: Symbol Layer + +/* Keymap 1: Layer Lock Keys * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | Esc | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | MDIA | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | F12 | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | | - * |--------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+--------| - * | | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | CAPS | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | | | | 0 | . | = | + | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Left | Right| | Home | End | - * ,------|------|------| |------+------+------. - * | | | Up | | PgUp | | | - * |Space |Enter |------| |------|BackSp| Del | - * | | | Down | | PgDn | | | - * `--------------------' `--------------------' + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | Esc | | | | | | | | | | | | | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Media LOCK| | | | | | | | | | | | | | Media LOCK| + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * |Symbol LOCK| | | | | |------| |------| | | | | |Symbol LOCK| + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | Caps LOCK| | | | | | | | | | | | | | Caps LOCK| + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' */ -// SYMBOLS -[SYMB] = KEYMAP( - // left hand - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, - MO(MDIA), KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_AMPR,LSFT(KC_COMM), - 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_TAB, - KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, - KC_LEFT,KC_RGHT, - KC_UP, - KC_SPC,KC_ENT,KC_DOWN, - // right hand - KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, - LSFT(KC_DOT), KC_PIPE, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_F12, - KC_SLSH, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, - LSFT(KC_TAB), KC_BSLS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_CAPS, - KC_P0, KC_DOT, KC_PEQL, KC_PPLS, KC_PENT, - KC_HOME, KC_END, - KC_PGUP, - KC_PGDN, KC_BSPC, KC_DEL -), -/* Keymap 2: Media and mouse keys +[LOCK] = KEYMAP( +// left hand + KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_FN3 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_FN2 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,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_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_FN3 + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN2 + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,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_TRNS + ), + +/* Keymap 10: Symbol Momentary Layer * - * ,--------------------------------------------------. ,--------------------------------------------------. - * | Esc |ShutDn| Sleep| Mute |Vol Dn|Vol Up| | | | |PrtSc | PgUp |MyComp| Mail | | - * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| - * | | | | MsUp |ScrlUp| |ScrlUp| |ScrlUp| |ScrlUp| Up | | | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | |MsLeft|MsDown|MsRght| |------| |------| Home | Left | Down | Right| End | | - * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| - * | | | |MsDown|ScrlDn| |ScrlDn| |ScrlDn| |ScrlDn| Down | | | | - * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' - * | | | | Lclk | Rclk | | | PgDn | | | | - * `----------------------------------' `----------------------------------' - * ,-------------. ,-------------. - * | Stop |Refrsh| | Prev | Next | - * ,------|------|------| |------+------+------. - * |Brwser|Brwser|Search| |VolUp | | | - * |Back | Fwd |------| |------| Stop | Play-| - * | | | Home | |VolDn | | Pause| - * `--------------------' `--------------------' + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Media | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | Media | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | Symbol | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | Symbol | + * |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------| + * | Shift | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | Shift | + * `-----------+------+------+------+------+-------------' `------------+------+------+------+------+------------' + * | | | | | | | 0 | . | = | + | Entr | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Left | Right| | Home | End | + * ,------|------|------| |------+------+------. + * | | | Up | | PgUp | | | + * |Space |Enter |------| |------|BackSp| Del | + * | | | Down | | PgDn | | | + * `--------------------' `--------------------' */ -// MEDIA AND MOUSE -[MDIA] = KEYMAP( - KC_ESC, KC_PWR, KC_SLEP, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, - MO(MDIA), KC_TRNS, KC_TRNS, KC_MS_U, KC_WH_U, KC_TRNS, KC_WH_U, - KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_D, KC_TRNS, KC_TRNS, KC_WH_D, - KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_WH_D, - KC_WSTP, KC_WREF, - KC_WSCH, - KC_WBAK, KC_TRNS, KC_WHOM, - // right hand - KC_TRNS, KC_TRNS, KC_PSCR, KC_PGUP, KC_MYCM, KC_MAIL, KC_TRNS, - KC_WH_U, KC_TRNS, KC_WH_U, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, - KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT,KC_END, KC_TRNS, - KC_WH_D, KC_TRNS, KC_WH_D, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_PGDN, KC_TRNS,KC_TRNS, KC_TRNS, - KC_MPRV, KC_MNXT, - KC_VOLU, - KC_VOLD, KC_MSTP, KC_MPLY +[SYMB_MO] = KEYMAP( +// left hand + KC_TRNS ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS +,MO(MDIA_MO) ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM) +,MO(SYMB_MO) ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV +,KC_LSFT ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_LEFT ,KC_RGHT + ,KC_UP + ,KC_SPC ,KC_ENT ,KC_DOWN + // right hand + ,KC_TRNS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_TRNS + ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,MO(MDIA_MO) + ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,MO(SYMB_MO) + ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_RSFT + ,KC_0 ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT + ,KC_HOME ,KC_END + ,KC_PGUP + ,KC_PGDN ,KC_BSPC ,KC_DEL ), + +/* Keymap 11: Symbol Lock Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | Lock | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | Lock | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Media | ! | @ | { | } | & | < | | > | | | 7 | 8 | 9 | / | Media | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | # | $ | ( | ) | ` |------| |------| / | 4 | 5 | 6 | * | | + * |-----------+------+------+------+------+------| Tab | | Shift|------+------+------+------+------+-----------| + * | Shift | % | ^ | [ | ] | ~ | | | -Tab| \ | 1 | 2 | 3 | - | Shift | + * `-----------+------+------+------+------+-------------' `------------+------+------+------+------+------------' + * | | | | | | | 0 | . | = | + | Entr | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Left | Right| | Home | End | + * ,------|------|------| |------+------+------. + * | | | Up | | PgUp | | | + * |Space |Enter |------| |------|BackSp| Del | + * | | | Down | | PgDn | | | + * `--------------------' `--------------------' + */ +[SYMB_TG] = KEYMAP( // layer 3 : return key for symbol lock layer +// left hand + MO(SYMB_XX) ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS +,MO(MDIA_MO) ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM) +,KC_NO ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV +,KC_LSFT ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_LEFT ,KC_RGHT + ,KC_UP + ,KC_SPC ,KC_ENT ,KC_DOWN + // right hand + ,KC_TRNS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,MO(SYMB_XX) + ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,MO(MDIA_MO) + ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,KC_NO + ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_RSFT + ,KC_0 ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT + ,KC_HOME ,KC_END + ,KC_PGUP + ,KC_PGDN ,KC_BSPC ,KC_DEL + ), + +/* Keymap 12: Symbol Unlock Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | Esc | | | | | | | | | | | | | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Unlock | | | | | | | | | | | | | | Unlock | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | |------| |------| | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | Caps LOCK | | | | | | | | | | | | | | Caps LOCK | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[SYMB_XX] = KEYMAP( +// left hand + KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,TG(MDIA_TG) ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_FN1 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,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_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 ,TG(MDIA_TG) + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_FN1 + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,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_TRNS + ), + +/* Keymap 20: Media and mouse keys + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | F11 | F12 | F13 | F14 | F15 | | | | F16 | F17 | F18 | F19 | F20 | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | |ShutDn| | MsUp | | |ScrlUp| |ScrlUp|PrtScr| Home | Up | PgUp | Mail | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | Sleep|MsLeft|MsDown|MsRght| |------| |------|NumLok| Left | Down | Right|MyComp| | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | |MsDown| | |ScrlDn| |ScrlDn| | End | Down | PgDn | | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | Mute |Vol Dn|Vol Up| Lclk | Rclk | |Insert|Delete| | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Stop |Refrsh| | Prev | Next | + * ,------|------|------| |------+------+------. + * |Brwser|Brwser|Search| |VolUp | | | + * |Back | Fwd |------| |------| Stop | Play-| + * | | | Home | |VolDn | | Pause| + * `--------------------' `--------------------' + */ +[MDIA_MO] = KEYMAP( +// left hand + KC_TRNS ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_TRNS +,MO(MDIA_MO) ,KC_POWER,KC_TRNS ,KC_MS_U ,KC_TRNS ,KC_TRNS ,KC_WH_U +,KC_NO ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_TRNS +,KC_LSFT ,KC_TRNS ,KC_TRNS ,KC_MS_D ,KC_TRNS ,KC_TRNS ,KC_WH_D +,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_BTN1 ,KC_BTN2 + ,KC_WSTP ,KC_WREF + ,KC_WSCH + ,KC_WBAK ,KC_TRNS ,KC_WHOM + // right hand + ,KC_TRNS ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS + ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,MO(MDIA_MO) + ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_NO + ,KC_WH_D ,KC_TRNS ,KC_END ,KC_DOWN ,KC_PGDN ,KC_TRNS ,KC_RSFT + ,KC_INS ,KC_DEL ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_MPRV ,KC_MNXT + ,KC_VOLU + ,KC_VOLD ,KC_MSTP ,KC_MPLY +), + +/* Keymap 21: Media Lock Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | F11 | F12 | F13 | F14 | F15 | | | | F16 | F17 | F18 | F19 | F20 | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | |ShutDn| | MsUp | | |ScrlUp| |ScrlUp|PrtScr| Home | Up | PgUp | Mail | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | Sleep|MsLeft|MsDown|MsRght| |------| |------|NumLok| Left | Down | Right|MyComp| | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | |MsDown| | |ScrlDn| |ScrlDn| | End | Down | PgDn | | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | Mute |Vol Dn|Vol Up| Lclk | Rclk | |Insert|Delete| | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | Stop |Refrsh| | Prev | Next | + * ,------|------|------| |------+------+------. + * |Brwser|Brwser|Search| |VolUp | | | + * |Back | Fwd |------| |------| Stop | Play-| + * | | | Home | |VolDn | | Pause| + * `--------------------' `--------------------' + */ +[MDIA_TG] = KEYMAP( +// left hand + MO(MDIA_XX) ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_TRNS +,KC_NO ,KC_POWER,KC_TRNS ,KC_MS_U ,KC_TRNS ,KC_TRNS ,KC_WH_U +,KC_NO ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_TRNS +,KC_LSFT ,KC_TRNS ,KC_TRNS ,KC_MS_D ,KC_TRNS ,KC_TRNS ,KC_WH_D +,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_BTN1 ,KC_BTN2 + ,KC_WSTP ,KC_WREF + ,KC_WSCH + ,KC_WBAK ,KC_TRNS ,KC_WHOM + // right hand + ,KC_TRNS ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,MO(MDIA_XX) + ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,KC_NO + ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_NO + ,KC_WH_D ,KC_TRNS ,KC_END ,KC_DOWN ,KC_PGDN ,KC_TRNS ,KC_RSFT + ,KC_INS ,KC_DEL ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_MPRV ,KC_MNXT + ,KC_VOLU + ,KC_VOLD ,KC_MSTP ,KC_MPLY + ), + +/* Keymap 22: Media Unlock Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | | Esc | | | | | | | | | | | | | | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | Unlock | | | | | | | | | | | | | | Unlock | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | |------| |------| | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | Caps LOCK | | | | | | | | | | | | | | Caps LOCK | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[MDIA_XX] = KEYMAP( +// left hand + KC_TRNS ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_FN1 ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,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_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_FN1 + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,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_TRNS + ) }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols) + [1] = ACTION_LAYER_CLEAR(ON_PRESS) // FN1 - clear to base layer + ,[2] = ACTION_LAYER_INVERT(SYMB_TG, ON_PRESS) // FN2 - toggle to Symbols on press + ,[3] = ACTION_LAYER_INVERT(MDIA_TG, ON_PRESS) // FN3 - toggle to Media on press }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -168,25 +394,36 @@ 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) { - // 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; + + // lock layer turns on all lights + if(layer == LOCK || layer == SYMB_XX) { + ergodox_right_led_1_on(); + ergodox_right_led_2_on(); + ergodox_right_led_3_on(); + } else if(layer == MDIA_XX) { + ergodox_right_led_1_on(); + ergodox_right_led_3_on(); } + // caps lock turns on red light + if(host_keyboard_leds() & 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 literal 94771 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\n\n\nTab"], +[{y:-0.875,c:"#2277ff",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#cccccc"},"A",{x:14.5},":\n;",{c:"#2277ff",w:1.5},"\"\n'\nSymbols\n\n\n\n\nShift"], +[{y:-0.625,x:6.5,c:"#54d6de",fa:[0,0,0,1],h:1.5},"< Tab\n\n\nShift Tab",{x:4.5,h:1.5},"Tab >\n\n\nTab"], [{y:-0.75,x:3.5,c:"#cccccc"},"C",{x:10.5},"<\n,"], [{y:-0.875,x:2.5},"X",{x:1},"V",{x:8.5},"M",{x:1},">\n."], [{y:-0.875,x:5.5},"B",{x:6.5},"N"], -[{y:-0.875,c:"#2277ff",w:1.5},"Capitals\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\nShift"], +[{y:-0.875,c:"#2277ff",fa:[0,1,0,1,0,0,0],w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#cccccc"},"Z",{x:14.5,f:3},"?\n/",{c:"#2277ff",w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], [{y:-0.375,x:3.5,c:"#77aaff"},"Option\n\n\nLAlt",{x:10.5},"Option\n\n\nRAlt"], [{y:-0.875,x:2.5},"Hyper",{x:1},"Cmd\n\n\nSuper",{x:8.5},"Cmd\n\n\nSuper",{x:1},"Hyper"], [{y:-0.75,x:0.5},"Ctrl\n\n\nLCtrl","Meh",{x:14.5},"Meh","Ctrl\n\n\nRCtrl"], -[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bfbf67"},"Home","End"], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#54d6de"},"Home","End"], [{h:2},"< Del\n\n\nBackspace",{h:2},"Del >\n\n\nDelete","Page\n\n\n\n\n\nUp"], [{x:2},"Page\n\n\n\n\n\nDown"], [{r:-30,rx:13,y:-1,x:-3},"Left","Right"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.png index 89d15e45069a0237c023e77315068b932b33fe5f..9c0e8bba39b372c7e68299cb06c8dfa5e00906ce 100644 GIT binary patch literal 119139 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 literal 108774 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 I>zopr0PzfrT>t<8 diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt index 4237f08201..c7bd272eca 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-media.txt @@ -1,27 +1,27 @@ -[{x:3.5,c:"#9988bb"},"Vol\n\n\n\n\n\nMute",{x:10.5,c:"#ccffff"},"Page\n\n\n\n\n\nUp"], -[{y:-0.875,x:2.5,c:"#9988bb"},"Sleep",{x:1},"Vol\n\n\n\n\n\nDown",{x:8.5},"Print\n\n\n\n\n\nScreen",{x:1},"Home\n\n\n\n\n\nDir"], -[{y:-0.875,x:5.5},"Vol\n\n\n\n\n\nUp",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",""], -[{y:-0.875,c:"#ff4444",a:4,w:1.5},"Esc",{c:"#9988bb"},"Shut\n\n\n\n\n\nDown",{x:14.5},"Email",{c:"#cccccc",a:7,w:1.5},""], -[{y:-0.375,x:3.5,c:"#ccffff",a:4},"Mouse\n\n\n\n\n\nUp",{x:10.5},"Cursor\n\n\n\n\n\nUp"], -[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#99ffff",a:4},"Scroll\n\n\n\n\n\nUp",{x:8.5},"Scroll\n\n\n\n\n\nUp",{x:1,c:"#cccccc",a:7},""], -[{y:-0.875,x:5.5},"",{c:"#99ffff",a:4,h:1.5},"Scroll\n\n\n\n\n\nUp",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nUp",{c:"#cccccc",a:7},""], -[{y:-0.875,c:"#000000",t:"#ff0000",a:4,fa:[0,0,0,1],w:1.5},"Media\n\n\nL2",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5},"",{c:"#000000",t:"#ff0000",a:4,w:1.5},"\n\nMedia\nL2"], -[{y:-0.375,x:3.5,c:"#ccffff",t:"#000000"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], +[{x:3.5,c:"#99de2a"},"F13",{x:10.5},"F18"], +[{y:-0.875,x:2.5},"F12",{x:1},"F14",{x:8.5},"F17",{x:1},"F19"], +[{y:-0.875,x:5.5},"F15",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",{c:"#99de2a",a:4},"F16"], +[{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F11",{x:14.5},"F20",{c:"#2277ff",w:1.5},"\n\nShift\n\n\n\n\nLock"], +[{y:-0.375,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nUp",{x:10.5},"Cursor\n\n\n\n\n\nUp"], +[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#ffb063",a:4},"Scroll\n\n\n\n\n\nUp",{x:8.5},"Home",{x:1},"Page\n\n\n\n\n\nUp"], +[{y:-0.875,x:5.5,c:"#cccccc",a:7},"",{c:"#ffb063",a:4,h:1.5},"Scroll\n\n\n\n\n\nUp",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nUp",{c:"#e6e067"},"Print\n\n\n\n\n\nScreen"], +[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#e6e067",t:"#000000"},"Shut\n\n\n\n\n\nDown",{x:14.5},"Mail",{c:"#000000",t:"#ff0000",w:1.5},"\n\nMedia\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#ff8500",t:"#000000"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], [{y:-0.875,x:2.5},"Mouse\n\n\n\n\n\nLeft",{x:1},"Mouse\n\n\n\n\n\nRight",{x:8.5},"Cursor\n\n\n\n\n\nLeft",{x:1},"Cursor\n\n\n\n\n\nRight"], -[{y:-0.875,x:5.5,c:"#cccccc",a:7},"",{x:6.5,c:"#ccffff",a:4},"Home"], -[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Symbols\n\n\nL1",{c:"#cccccc",t:"#000000",a:7},"",{x:14.5,c:"#ccffff",a:4},"End",{c:"#cccccc",a:7,w:1.5},""], -[{y:-0.625,x:6.5,c:"#99ffff",a:4,h:1.5},"Scroll\n\n\n\n\n\nDown",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nDown"], -[{y:-0.75,x:3.5,c:"#ccffff"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], -[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#99ffff",a:4},"Scroll\n\n\n\n\n\nDown",{x:8.5},"Scroll\n\n\n\n\n\nDown",{x:1,c:"#cccccc",a:7},""], -[{y:-0.875,x:5.5},"",{x:6.5},""], -[{y:-0.875,w:1.5},"","",{x:14.5},"",{w:1.5},""], -[{y:-0.375,x:3.5,c:"#ccffff",a:4},"Left\n\n\n\n\n\nClick",{x:10.5},"Page\n\n\n\n\n\nDown"], -[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#ccffff",a:4},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#cccccc",a:7},"",{x:1},""], -[{y:-0.75,x:0.5},"","",{x:14.5},"",""], -[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bbaacc",a:4},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"], +[{y:-0.875,x:5.5,c:"#cccccc",a:7},"",{x:6.5,c:"#e6e067",a:4},"Num\n\n\n\n\n\nLock"], +[{y:-0.875,c:"#cccccc",a:7,w:1.5},"",{c:"#e6e067",a:4},"Sleep",{x:14.5},"My\n\n\n\n\n\nComp",{c:"#cccccc",a:7,w:1.5},""], +[{y:-0.625,x:6.5,c:"#ffb063",a:4,h:1.5},"Scroll\n\n\n\n\n\nDown",{x:4.5,h:1.5},"Scroll\n\n\n\n\n\nDown"], +[{y:-0.75,x:3.5,c:"#ff8500"},"Mouse\n\n\n\n\n\nDown",{x:10.5},"Cursor\n\n\n\n\n\nDown"], +[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1,c:"#ffb063",a:4},"Scroll\n\n\n\n\n\nDown",{x:8.5},"End",{x:1},"Page\n\n\n\n\n\nDown"], +[{y:-0.875,x:5.5,c:"#cccccc",a:7},"",{x:6.5},""], +[{y:-0.875,c:"#2277ff",a:4,fa:[0,1,0,0,0,0,0],w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#cccccc",a:7},"",{x:14.5},"",{c:"#2277ff",a:4,fa:[0,1,0,1],w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#ff8500"},"Left\n\n\n\n\n\nClick",{x:10.5,c:"#ffb063"},"Delete"], +[{y:-0.875,x:2.5,c:"#e6e067"},"Vol\n\n\n\n\n\nUp",{x:1,c:"#ff8500"},"Right\n\n\n\n\n\nClick",{x:8.5,c:"#ffb063"},"Insert",{x:1,c:"#cccccc",a:7},""], +[{y:-0.75,x:0.5,c:"#e6e067",a:4},"Mute","Vol\n\n\n\n\n\nDown",{x:14.5,c:"#cccccc",a:7},"",""], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#cfc82b",a:4},"Stop\n\n\nBrowser","Reload\n\n\nBrowser"], [{h:2},"< Web\n\n\nBrowser",{h:2},"Web >\n\n\nBrowser","Search\n\n\nBrowser"], [{x:2},"Home\n\n\nBrowser"], [{r:-30,rx:13,y:-1,x:-3},"Prev\n\n\nAudio\n\n\nTrack","Next\n\n\nAudio\n\n\nTrack"], -[{x:-3,c:"#9988bb"},"Vol\n\n\n\n\n\nUp",{c:"#bbaacc",h:2},"Stop\n\n\nAudio",{h:2},"Play\n\n\nAudio\n\n\nPause"], -[{x:-3,c:"#9988bb"},"Vol\n\n\n\n\n\nDown"] +[{x:-3,c:"#e6e067"},"Vol\n\n\n\n\n\nUp",{c:"#cfc82b",h:2},"Stop\n\n\nAudio",{h:2},"Play\n\n\nAudio\n\n\nPause"], +[{x:-3,c:"#e6e067"},"Vol\n\n\n\n\n\nDown"] diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.png index 7522af3330a21dba81e3bdad2f7f868b2b294680..2538fbeb30874542445ee8fe73c0be7108c5e240 100644 GIT binary patch literal 98257 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[J4I4HdD_*s@24qF8l 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

??<5|oI#)#gLDd0PNtQJ~3btfj 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

  • @)4NpDZYOw2Po9q|$Dwb#Qu)uFeY9)q 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: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 O1B0ilpUXO@geCyL_BNCN diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt index dda15f71be..098a08d2f1 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary-symbol.txt @@ -1,24 +1,24 @@ -[{x:3.5,c:"#a3a3a3"},"F3",{x:10.5},"F8"], +[{x:3.5,c:"#99de2a"},"F3",{x:10.5},"F8"], [{y:-0.875,x:2.5},"F2",{x:1},"F4",{x:8.5},"F7",{x:1},"F9"], -[{y:-0.875,x:5.5},"F5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",{c:"#a3a3a3",a:4},"F6"], -[{y:-0.875,c:"#ff4444",w:1.5},"Esc",{c:"#a3a3a3"},"F1",{x:14.5},"F10",{w:1.5},"F11"], -[{y:-0.375,x:3.5,c:"#bbc6ed"},"{",{x:10.5,c:"#bed4ba"},"8"], -[{y:-0.875,x:2.5,c:"#bbc6ed"},"@",{x:1},"}",{x:8.5,c:"#bed4ba"},"7",{x:1},"9"], -[{y:-0.875,x:5.5,c:"#bbc6ed"},"&",{h:1.5},"<",{x:4.5,h:1.5},">","|"], -[{y:-0.875,c:"#2277ff",fa:[0,0,0,1],w:1.5},"Media\n\n\nL2",{c:"#bbc6ed"},"!",{x:14.5,c:"#bed4ba"},"/",{c:"#a3a3a3",w:1.5},"F12"], -[{y:-0.375,x:3.5,c:"#bbc6ed"},"(",{x:10.5,c:"#bed4ba"},"5"], -[{y:-0.875,x:2.5,c:"#bbc6ed"},"$",{x:1},")",{x:8.5,c:"#bed4ba"},"4",{x:1},"6"], -[{y:-0.875,x:5.5,c:"#bbc6ed"},"`",{x:6.5},"/"], -[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Symbols\n\n\nL1",{c:"#bbc6ed",t:"#000000"},"#",{x:14.5,c:"#bed4ba"},"*",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSymbols\nL1"], -[{y:-0.625,x:6.5,c:"#bfbf67",t:"#000000",h:1.5},"Tab >\n\n\nTab",{x:4.5,h:1.5},"< Tab\n\n\nShift Tab"], -[{y:-0.75,x:3.5,c:"#bbc6ed"},"[",{x:10.5,c:"#bed4ba"},"2"], -[{y:-0.875,x:2.5,c:"#bbc6ed"},"^",{x:1},"]",{x:8.5,c:"#bed4ba"},"1",{x:1},"3"], -[{y:-0.875,x:5.5,c:"#bbc6ed"},"~",{x:6.5},"\\"], -[{y:-0.875,c:"#cccccc",a:7,w:1.5},"",{c:"#bbc6ed",a:4},"%",{x:14.5,c:"#bed4ba"},"-",{c:"#2277ff",w:1.5},"\n\nCaps Lock"], -[{y:-0.375,x:3.5,c:"#cccccc",a:7},"",{x:10.5,c:"#bed4ba",a:4},"."], -[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1},"",{x:8.5,c:"#bed4ba",a:4},"0",{x:1},"="], -[{y:-0.75,x:0.5,c:"#cccccc",a:7},"","",{x:14.5,c:"#bed4ba",a:4},"+","Enter"], -[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#bfbf67"},"Left","Right"], +[{y:-0.875,x:5.5},"F5",{c:"#ff4444"},"Esc",{x:4.5,c:"#cccccc",a:7},"",{c:"#99de2a",a:4},"F6"], +[{y:-0.875,c:"#2277ff",w:1.5},"Shift\n\n\n\n\n\nLock",{c:"#99de2a"},"F1",{x:14.5},"F10",{c:"#2277ff",w:1.5},"\n\nShift\n\n\n\n\nLock"], +[{y:-0.375,x:3.5,c:"#c4e0bf"},"{",{x:10.5,c:"#89b087"},"8"], +[{y:-0.875,x:2.5,c:"#c4e0bf"},"@",{x:1},"}",{x:8.5,c:"#89b087"},"7",{x:1},"9"], +[{y:-0.875,x:5.5,c:"#c4e0bf"},"&",{h:1.5},"<",{x:4.5,h:1.5},">","|"], +[{y:-0.875,c:"#2277ff",w:1.5},"Media\n\n\n\n\n\nShift",{c:"#c4e0bf"},"!",{x:14.5,c:"#89b087"},"/",{c:"#2277ff",w:1.5},"\n\nMedia\n\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#c4e0bf"},"(",{x:10.5,c:"#89b087"},"5"], +[{y:-0.875,x:2.5,c:"#c4e0bf"},"$",{x:1},")",{x:8.5,c:"#89b087"},"4",{x:1},"6"], +[{y:-0.875,x:5.5,c:"#c4e0bf"},"`",{x:6.5},"/"], +[{y:-0.875,c:"#000000",t:"#ff0000",w:1.5},"Symbols\n\n\n\n\n\nShift",{c:"#c4e0bf",t:"#000000"},"#",{x:14.5,c:"#89b087"},"*",{c:"#000000",t:"#ff0000",w:1.5},"\n\nSymbols\n\n\n\n\nShift"], +[{y:-0.625,x:6.5,c:"#54d6de",t:"#000000",fa:[0,0,0,1],h:1.5},"Tab >\n\n\nTab",{x:4.5,h:1.5},"< Tab\n\n\nShift Tab"], +[{y:-0.75,x:3.5,c:"#c4e0bf"},"[",{x:10.5,c:"#89b087"},"2"], +[{y:-0.875,x:2.5,c:"#c4e0bf"},"^",{x:1},"]",{x:8.5,c:"#89b087"},"1",{x:1},"3"], +[{y:-0.875,x:5.5,c:"#c4e0bf"},"~",{x:6.5},"\\"], +[{y:-0.875,c:"#2277ff",f2:1,w:1.5},"Capitals\nShift\n\n\n\n\nShift",{c:"#c4e0bf"},"%",{x:14.5,c:"#89b087"},"-",{c:"#2277ff",fa:[0,1,0,1],w:1.5},"\n\nCapitals\nShift\n\n\n\nShift"], +[{y:-0.375,x:3.5,c:"#cccccc",a:7},"",{x:10.5,c:"#89b087",a:4},"."], +[{y:-0.875,x:2.5,c:"#cccccc",a:7},"",{x:1},"",{x:8.5,c:"#89b087",a:4},"0",{x:1},"="], +[{y:-0.75,x:0.5,c:"#cccccc",a:7},"","",{x:14.5,c:"#89b087",a:4},"+","Enter"], +[{r:30,rx:6.5,ry:4.25,y:-1,x:1,c:"#54d6de"},"Left","Right"], [{h:2},"Space",{h:2},"Enter","Up"], [{x:2},"Down"], [{r:-30,rx:13,y:-1,x:-3},"Home","End"], diff --git a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex index 1a08598465..c8d56d5b37 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex +++ b/keyboard/ergodox_ez/keymaps/ordinary/ordinary.hex @@ -1,1119 +1,1179 @@ -:100000000C9465020C94A9020C94A9020C94A90208 -:100010000C94A9020C94A9020C94A9020C94A902B4 -:100020000C94A9020C94A9020C94B00B0C94820CB1 -:100030000C94A9020C94A9020C94A9020C94A90294 -:100040000C94A9020C940B210C94A9020C94A90203 -:100050000C94A9020C94AD1A0C94A9020C94A90258 -:100060000C94A9020C94A9020C94A9020C94A90264 -:100070000C94A9020C94A9020C94A9020C94A90254 -:100080000C94A9020C94A9020C94A9020C94A90244 -:100090000C94A9020C94A9020C94A9020C94A90234 -:1000A0000C94A9020C94A9020C94A902E70C090D66 -:1000B000F40D090DF40D4B0D6E0DF40DC30DD60DA1 -:1000C000C310C310F110F11033116F116F136F13C0 -:1000D00087116F137E127E1249136F136F135D1316 -:1000E0000000F0A135002B000152E100E00000000B -:1000F0001E00140004001D7100774E001F001A003E -:1001000016001B00007F4C002000080007000600BE -:10011000E2002A002100150009001900E3004B004D -:10012000220017000A00050000004A0029002F00E5 -:1001300000002B0200004D002D00300000002B00BD -:100140000000500023001C000B00110000004F00B5 -:10015000240018000D001000E700520025000C00DC -:100160000E003600E6002C00260012000F003700BB -:10017000007F2800270013003300387100775100FA -:100180002E0031823481E500E40000002900025293 -:1001900001000100010000003A001E0220022202BC -:1001A000010051003B001F02210223020100280030 -:1001B0003C002F0226022F0001002C003D003002DF -:1001C00027023000010052003E00240235003502B3 -:1001D000000050000100360200002B0000004F001C -:1001E0000100370200002B0200004A003F003102EC -:1001F0003800310000004D0040005F005C005900F5 -:1002000062004B00410060005D005A0037004C0066 -:10021000420061005E005B0067002A00430054005A -:100220005500560057004E004400450001003900BB -:1002300058000000290002520100010001000000E6 -:10024000A5000100010001000100B500A6000100A9 -:10025000F200010001000100A800F000F100F1002F -:10026000F400B600AA00F900F3000100FA00B4009F -:10027000A9000100010001000000B8000100F90020 -:100280000000FA000000B9000100F9000000FA00C7 -:100290000000AC00010001004A0001000000AB00BA -:1002A0004600F9005000FA000100A9004B0052007E -:1002B000510051004E00AE00B30001004F0001009C -:1002C0000100AD00B10001004D0001000100AA00D5 -:1002D00001000100010001000100000016034500BB -:1002E000720067006F0044006F0078002000450036 -:1002F0005A00000016034500720067006F004400BA -:100300006F007800200045005A0000000403090433 -:1003100009026D00040100A0FA09040000010301B4 -:100320000100092111010001223F00070581030896 -:10033000000A090401000103010200092111010062 -:1003400001224D000705820308000A09040200018A -:100350000300000009211101000122360007058376 -:100360000308000A09040300010300000009211129 -:100370000100012239000705840310000112011059 -:100380000100000008EDFE07130100010200010555 -:10039000010906A101050719E029E71500250195C6 -:1003A0000875018102050819012905950575019156 -:1003B000029501750391010507190029771500259C -:1003C00001957875018102C005010980A1018502AE -:1003D00016010026B7001A01002AB7007510950112 -:1003E0008100C0050C0901A1018503160100269CAE -:1003F000021A01002A9C02751095018100C00501B6 -:100400000902A1010901A100050919012905150029 -:10041000250195057501810295017503810105018D -:10042000093009311581257F950275088106093843 -:100430001581257F950175088106050C0A3802157E -:1004400081257F950175088106C0C005010906A1B7 -:1004500001050719E029E7150025019508750181B7 -:100460000295017508810105081901290595057591 -:100470000191029501750391010507190029FF15E6 -:100480000025FF950675088100C0000000000000EF -:100490000000000000010204060A0F17202C3A4A4F -:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2 -:1004B000B39D87715D4A3A2C20170F0A060402018A -:1004C0000000000000000000000011241FBECFEF5C -:1004D000DAE0DEBFCDBF04B603FE24C08091EE019A -:1004E0009091EF01A091F001B091F1018730904B14 -:1004F000A740B04BB9F41092EE011092EF011092A8 -:10050000F0011092F10114BE84B7877F84BF88E1A7 -:100510000FB6F89480936000109260000FBEE0E088 -:10052000FFE3099511E0A0E0B1E0EAE9F5E402C0DB -:1005300005900D92A433B107D9F721E0A4E3B1E00F -:1005400001C01D92AE3EB207E1F70E94F6080C947E -:10055000CB220C94000061110BC0FC018281882326 -:1005600021F085EE0E94570F03C085EE0E941F10F8 -:1005700080E090E0089508956091B1017091B2011A -:100580008091B3019091B4010E94D91956985E9858 -:1005900025982D9826982E9827982F98813019F015 -:1005A000823021F00895259A2D9A0895269A2E9A40 -:1005B00008950C94BC0256985E9825982D9826981C -:1005C0002E9827982F988FEF90E090938900809332 -:1005D000880090938B0080938A0090938D00809385 -:1005E0008C00259A2D9A2FEF80E792E021508040D1 -:1005F0009040E1F700C00000269A2E9A2FEF80E786 -:1006000092E0215080409040E1F700C00000279A1E -:100610002F9A2FEF80E792E0215080409040E1F741 -:1006200000C0000025982D982FEF80E792E0215020 -:1006300080409040E1F700C0000026982E982FEFF0 -:1006400080E792E0215080409040E1F700C0000038 -:1006500027982F9856985E9825982D9826982E982A -:1006600027982F98089589EA8093800089E08093E5 -:10067000810024982C983F988AB18F748AB96E981B -:10068000479A8BB1806B8BB9769A0E94DB020C94EF -:10069000BB0280E2809300018091340181110EC081 -:1006A0000E94980381E0809334012FEF83ED90E363 -:1006B000215080409040E1F700C0000080E40E949B -:1006C0009E038093000181112EC00E94C803809375 -:1006D0000001811128C00E94C8038093000181118C -:1006E00022C08FE30E94C8038093000181111BC0C8 -:1006F0000E94C00380E40E949E0380930001811148 -:1007000012C08CE00E94C8038093000181110BC0CD -:100710000E94C80380930001811105C08FE30E94ED -:10072000C803809300010E94C003809100010895D6 -:100730001092B9008AE08093B800089594EA9093EB -:10074000BC009091BC0097FFFCCF9091B900987FBE -:10075000983021F0903111F081E008958093BB0032 -:1007600084E88093BC008091BC0087FFFCCF80911F -:10077000B900887F883111F0803471F780E00895E6 -:1007800084E98093BC008091BC0084FDFCCF089577 -:100790008093BB0084E88093BC008091BC0087FFFD -:1007A000FCCF9091B900987F81E0983209F480E005 -:1007B000089584E88093BC008091BC0087FFFCCF43 -:1007C0008091BB00089580910001811115C080E4E3 -:1007D0000E949E038093000181110CC082E10E945F -:1007E000C80380930001811105C08FEF0E94C803E8 -:1007F000809300010E94C00384B1807F84B985B1D9 -:10080000807F85B98AB1837F8AB98BB1837F8BB9A9 -:100810003E98469808950E944903809300010E94E3 -:10082000E30380B38C7080BB81B3836F81BBE4E44E -:10083000F1E0A6E3B1E011921D9281E0E235F80704 -:10084000D1F70C943303BF92CF92DF92EF92FF92D5 -:100850000F931F93CF93DF9380910001882379F04A -:10086000809135018F5F80933501811108C00E940E -:10087000490380930001811102C00E94DB0206E35C -:1008800011E0C0E0D0E0DD24D39482E0C82EEE2455 -:10089000E394F12CC73000F580910001811162C012 -:1008A00080E40E949E0380930001811112C082E1C6 -:1008B0000E94C8038093000181110BC0C7010C2E58 -:1008C00001C0880F0A94EAF780950E94C8038093BC -:1008D00000010E94C00346C0CA30A1F028F4C8300D -:1008E00059F0C93061F005C0CC3089F070F0CD30DE -:1008F00089F0209A289810C0219A29980DC0229A30 -:100900002A980AC0239A2B9807C0529A01C0539A7A -:100910005B9802C03E9A4698E0EAEA95F1F78FB1FB -:1009200079995AC092E081708D25892B7C9B02C0F9 -:1009300090E001C094E0892B7D9B02C090E001C053 -:1009400098E0892B7E9B02C090E001C090E1892B4A -:100950009FB19095991F9927991F9295990F907E15 -:10096000892B0FC08091000181114BC080E40E944F -:100970009E0380930001882389F1B12C0E94C0035B -:100980008B2DF8019081981719F08083C092010196 -:100990000E94E30321960F5F1F4FCE30D10509F06F -:1009A00079CF80910101882371F1815080930101F9 -:1009B000882339F08FE99FE00197F1F700C000002C -:1009C00022C0A4E4B1E0E6E3F1E081918D9391E0EF -:1009D000E434F907D1F717C090E0A5CF83E10E9476 -:1009E000C803809300018111C8CF81E40E949E0357 -:1009F000809300018111C1CF0E94D903B82EB09419 -:100A0000BDCF80E0BECF0E94D90281E0DF91CF91BF -:100A10001F910F91FF90EF90DF90CF90BF900895BE -:100A2000E82FF0E0EC5BFE4F8081089508958B3B4A -:100A3000910578F4883A910540F5853A9105D0F40E -:100A40008430910508F0B1C08130910509F4ADC042 -:100A50006BC0803E910508F467C0883E910508F49C -:100A6000A4C09C01205F31092031310508F05CC031 -:100A700090650895853A910509F459C0863A910523 -:100A800009F458C083E890E40895883A910509F480 -:100A900054C0893A910509F453C08A3A910509F482 -:100AA00052C08B3A910509F451C08C3A910509F472 -:100AB00050C08D3A910509F44FC0803B910509F46F -:100AC0004EC08E3A910509F44DC08F3A910509F454 -:100AD0004CC0813B910509F44BC0823B910509F460 -:100AE0004AC0833B910509F449C0843B910509F450 -:100AF00048C0853B910509F447C0863B910509F440 -:100B000046C0873B910509F445C0883B910509F42F -:100B100044C0893B910509F443C08A3B910509F023 -:100B200042C08AE296E4089580E090E0089581E86A -:100B300090E4089582E890E4089582EE94E40895A4 -:100B400089EE94E408958AEE94E4089585EB94E4A4 -:100B5000089586EB94E4089587EB94E408958CEC73 -:100B600094E408958DEC94E4089583E895E4089561 -:100B70008AE895E4089582E995E4089584E995E486 -:100B8000089581E296E4089583E296E4089584E26C -:100B900096E4089585E296E4089586E296E4089541 -:100BA00087E296E4089580E094E40895089596E03D -:100BB000799FF001112494E5899FE00DF11D112426 -:100BC000E60FF11DEE0FFF1FEC51FF4F8591949141 -:100BD0000895880F991F805A9040FC018591949147 -:100BE0000895880F991F80529F4FFC018591949121 -:100BF000089526E0729FF001112444E5849FE00DE2 -:100C0000F11D1124E60FF11DEE0FFF1FEC51FF4FF8 -:100C100025913491C9019A9581159F4110F4C9011C -:100C20000895C90190528115904128F4C9019F701F -:100C30000E94F1050895C90190538115904120F457 -:100C4000C9019927906C0895211580E5380769F44A -:100C50000E9490139FEF24E34CE0915020404040CD -:100C6000E1F700C000000C94D21A213080E538076B -:100C700031F48091CC0181608093CC010895C90149 -:100C800090558115904108F050C0832F99278F709F -:100C9000992781309105D9F4A9014370552702C0E5 -:100CA000880F991F4A95E2F79C68A90164E0440FF8 -:100CB000551F6A95E1F744275370842B952B73E0F9 -:100CC000220F331F7A95E1F7207633271DC082303B -:100CD000910529F4922F8827816F906A08958330B7 -:100CE0009105A9F4A9014370552781E090E002C065 -:100CF000880F991F4A95E2F79C6843E0220F331F43 -:100D00004A95E1F7207E3770822B932B0895049744 -:100D1000F1F4A9014370552781E090E002C0880FEB -:100D2000991F4A95E2F79A68E8CFC9019057811553 -:100D3000904120F4C9019F7090620895C9019058B4 -:100D40008115904120F4C9019F70906A0895203E5A -:100D50003105E0F4203C310558F52133310509F423 -:100D600070C048F42932310509F464C02A323105D3 -:100D700009F46EC074C029333105F1F02238310511 -:100D8000D9F02533310509F44EC069C0233E310541 -:100D900089F138F4203E3105C1F0223E3105E1F001 -:100DA0005EC0263E310569F1273E3105A9F157C0E5 -:100DB000C9010E94E90508958091DF0180FD02C00C -:100DC00081FF4DC080EE90E04BC08091DF0180FF3D -:100DD000F9CF89E390E044C08091DF0182FF0EC02B -:100DE0008091DF0184FF03C080E090E039C083EE92 -:100DF00090E036C08091DF0182FFF2CF82EE90E07A -:100E00002FC08091DF0183FF0BC08091DF0184FD43 -:100E1000EBCF87EE90E024C08091DF0183FFF5CF18 -:100E200086EE90E01DC08091DF0185FF07C089E25A -:100E300090E016C08091DF0185FFF9CF85E390E057 -:100E40000FC08091DF0186FF07C08AE290E008C0F2 -:100E50008091DF0186FFF9CF81E390E001C0C901F5 -:100E60000E941705089508950C943307809162013C -:100E70000895CF93DF9300D01F92CDB7DEB72091B6 -:100E8000E501243019F523E029839B838A8320938D -:100E9000E9008FEF9091E800815095FD06C095ED37 -:100EA0009A95F1F700008111F5CF8091E80085FF58 -:100EB0000DC040E050E063E070E0CE0101960E947A -:100EC000A3098091E8008E778093E8000F900F903F -:100ED0000F90DF91CF910895CF93DF9300D01F92B1 -:100EE000CDB7DEB72091E501243021F522E029833A -:100EF0009B838A8383E08093E9008FEF9091E800E1 -:100F0000815095FD06C095ED9A95F1F7000081118D -:100F1000F5CF8091E80085FF0DC040E050E063E030 -:100F200070E0CE0101960E94A3098091E8008E77BF -:100F30008093E8000F900F900F90DF91CF9108956C -:100F40002091E5012430F1F422E02093E9002FEF15 -:100F50003091E800215035FD06C035ED3A95F1F7A6 -:100F600000002111F5CF2091E80025FF0BC040E0E3 -:100F700050E065E070E00E94A3098091E8008E7760 -:100F80008093E8000895CF93DF93EC018091E50111 -:100F9000843009F046C090910C019923D9F09091CA -:100FA0000D019923B9F08093E9008FEF9091E8004B -:100FB000815095FD06C095E19A95F1F700008111E9 -:100FC000F5CF8091E80085FF2CC040E050E060E163 -:100FD00070E017C081E08093E9008FEF9091E80006 -:100FE000815095FD06C095ED9A95F1F700008111AD -:100FF000F5CF8091E80085FF14C040E050E068E044 -:1010000070E0CE010E94A3098091E8008E77809362 -:10101000E80080E1FE01A2E5B1E001900D928A9521 -:10102000E1F7DF91CF9108958091E401811109C02A -:101030000E94350B0E94920B8091E20084608093A5 -:10104000E20008951092E401089508950C94F820A8 -:101050000E94691A0E94FE200E942F0E0C943407F1 -:1010600042E061EC81E00E94AF0A42E061EC82E084 -:101070000E94AF0A42E061EC83E00E94AF0A42E1C5 -:1010800061EC84E00C94AF0A8091E701833009F4AD -:1010900055C030F4813071F0823009F48EC008956B -:1010A0008A3009F47AC08B3009F460C0893009F0C5 -:1010B0009CC020C08091E601813A09F096C08091E1 -:1010C000E800877F8093E8008091EA019091EB012E -:1010D000892B21F060E080E090E003C060E182E5D0 -:1010E00091E070E00E94EC098091E8008B7780939A -:1010F000E80008958091E601813209F076C0809180 -:10110000EA019091EB01009719F0039709F06DC087 -:101110008091E800877F8093E8008091E80082FD5D -:1011200005C08091E5018111F8CF5FC08091F10089 -:10113000809362018091E8008B7753C08091E60133 -:10114000813A09F052C08091EA019091EB01892B1C -:1011500009F04BC08091E800877F8093E800809180 -:10116000E80080FFFCCF80910C0136C08091E60141 -:101170008132D9F58091EA019091EB01892BA9F593 -:101180008091E800877F8093E8000E94E40A8091C4 -:10119000E80180930C010C9490138091E601813258 -:1011A00021F58091E800877F8093E8000E94E40A9F -:1011B0008091E9018093630108958091E601813A6D -:1011C000A1F48091E800877F8093E8008091E80097 -:1011D00080FFFCCF809163018093F1008091E80053 -:1011E0008E778093E8000C94E40A089584B7877F93 -:1011F00084BF88E10FB6F89480936000109260007D -:101200000FBE90E080E80FB6F89480936100909351 -:1012100061000FBE0E947E0E0E94350B0E94920B51 -:101220008091E20084608093E20078940E940D0E29 -:101230000E94800E82E091E00E942A0E0E94E62029 -:101240008091E501853069F40E942C1A8091E301B8 -:101250008823B1F30E94541A882391F30E948D09C8 -:10126000EFCF0E94860EECCF292F33272330310594 -:10127000A9F06CF42130310509F442C02230310567 -:1012800009F043C08DE690E020E133E042C0213216 -:101290003105C9F02232310519F137C09927813063 -:1012A000910541F08230910541F0892B71F5ECE018 -:1012B000F3E005C0E4EFF2E002C0ECEDF2E084916F -:1012C00090E09F0126C0643000F5E62FF0E0EE0FBD -:1012D000FF1FEE5DFE4F2081318189E090E019C053 -:1012E000643098F4E62FF0E0DF01AA0FBB1FA65E82 -:1012F000BE4F2D913C91EA5EFE4F808190E009C087 -:1013000082E190E02DE733E004C080E090E020E04F -:1013100030E0FA0131832083089580E189BD82E1C4 -:1013200089BD09B400FEFDCF8091D8008F7D8093E8 -:10133000D8008091E00082608093E0008091E0001E -:1013400081FDFCCF0895CF92DF92EF92FF920F9331 -:101350001F93CF93DF937C018B01EA010E94050B61 -:10136000811131C0209731F088819981081B190BB8 -:10137000E80EF91EC12CD12C0115110519F180912F -:10138000E80085FD14C08091E8008E778093E80026 -:10139000209741F0888199818C0D9D1D99838883C8 -:1013A00085E011C00E94050B882331F30CC0F701C2 -:1013B00081917F018093F10001501109FFEFCF1A55 -:1013C000DF0ADACF80E0DF91CF911F910F91FF907C -:1013D000EF90DF90CF9008952091EC013091ED01D6 -:1013E0002617370748F06115710539F42091E80098 -:1013F0002E772093E80001C0B901FC0120E06115BF -:101400007105B9F18091E501882309F440C0853068 -:1014100009F43FC08091E80083FD3DC08091E80061 -:1014200082FF06C08091E80082FF26C080E0089518 -:101430008091E80080FFE3CF2091F3008091F200DB -:1014400090E0922B6115710551F08830910538F4C8 -:1014500021912093F100615071090196F3CF21E0B1 -:10146000089709F020E08091E8008E778093E800EB -:10147000C6CF2111C7CFD6CF8091E501882339F09F -:10148000853039F08091E80083FFCCCF04C082E042 -:10149000089583E0089581E008952091EC01309152 -:1014A000ED012617370748F06115710539F42091D1 -:1014B000E8002E772093E80001C0B901FC0120E08C -:1014C00061157105C1F18091E501882309F441C0DE -:1014D000853009F440C08091E80083FD3EC08091D2 -:1014E000E80082FF06C08091E80082FF27C080E00C -:1014F00008958091E80080FFE3CF2091F300809170 -:10150000F20090E0922B6115710559F08830910539 -:1015100040F424912093F1003196615071090196B5 -:10152000F2CF21E0089709F020E08091E8008E7763 -:101530008093E800C5CF2111C6CFD5CF8091E501BA -:10154000882339F0853039F08091E80083FFCBCFD4 -:1015500004C082E0089583E0089581E00895982F03 -:10156000973058F59093E900981739F07091EC0096 -:101570002091ED005091F00003C0242F762F50E011 -:1015800021FF19C03091EB003E7F3093EB0030918A -:10159000ED003D7F3093ED003091EB0031603093F2 -:1015A000EB007093EC002093ED005093F00020913D -:1015B000EE0027FF07C09F5FD3CF8F708093E900B5 -:1015C00081E0089580E008958091E60187FD05C0DF -:1015D0008091E80080FF0EC012C08091E80082FD7B -:1015E00005C08091E5018111F8CF08958091E80050 -:1015F0008B7708C08091E5018111EACF0895809131 -:10160000E8008E778093E80008958091E40090913F -:10161000E50045E62091EC0020FF21C02091E80084 -:1016200020FD21C02091E501222389F0253089F099 -:101630002091EB0025FD0FC02091E4003091E500E2 -:101640002817390739F3415041F0C901E3CF82E04F -:10165000089583E0089581E0089584E0089520913D -:10166000E80022FFDFCF80E008950E94A30B0E94D4 -:10167000AB0BE0EEF0E0808181608083E8EDF0E08C -:1016800080818F77808319BCA7EDB0E08C918E7F2D -:101690008C9380818F7E80831092E40108950F9354 -:1016A0001F93CF93DF930E94A30B0E94AB0BC8ED57 -:1016B000D0E088818F77888388818068888388815B -:1016C0008F7D888319BC1092E5011092E101109280 -:1016D000E3011092E20100EE10E0F80180818B7FBF -:1016E000808388818160888342E060E080E00E949E -:1016F000AF0AE1EEF0E080818E7F8083E2EEF0E0E1 -:10170000808181608083808188608083F80180810E -:101710008E7F8083888180618883DF91CF911F9144 -:101720000F910895E8EDF0E080818F7E8083E7EDF2 -:10173000F0E080818160808384E082BF81E08093DB -:10174000E4010C944F0BE8EDF0E080818E7F808304 -:101750001092E20008951092DA001092E1000895CC -:101760001F920F920FB60F9211242F933F934F9316 -:101770005F936F937F938F939F93AF93BF93EF93F9 -:10178000FF938091E10082FF0BC08091E20082FF15 -:1017900007C08091E1008B7F8093E1000E940C0ED6 -:1017A0008091DA0080FF1FC08091D80080FF1BC0AD -:1017B0008091DA008E7F8093DA008091D90080FFDB -:1017C0000DC080E189BD82E189BD09B400FEFDCF75 -:1017D00081E08093E5010E94140805C019BC1092B5 -:1017E000E5010E9422088091E10080FF19C08091EC -:1017F000E20080FF15C08091E2008E7F8093E200BE -:101800008091E20080618093E2008091D800806244 -:101810008093D80019BC85E08093E5010E942608DA -:101820008091E10084FF30C08091E20084FF2CC0F1 -:1018300080E189BD82E189BD09B400FEFDCF8091C0 -:10184000D8008F7D8093D8008091E1008F7E8093B7 -:10185000E1008091E2008F7E8093E2008091E200BF -:1018600081608093E2008091E101882311F084E09F -:1018700007C08091E30087FF02C083E001C081E0E0 -:101880008093E5010E9428088091E10083FF29C030 -:101890008091E20083FF25C08091E100877F8093E3 -:1018A000E10082E08093E5011092E1018091E10086 -:1018B0008E7F8093E1008091E2008E7F8093E20032 -:1018C0008091E20080618093E20042E060E080E08D -:1018D0000E94AF0A8091F00088608093F0000E941F -:1018E0002508FF91EF91BF91AF919F918F917F91CB -:1018F0006F915F914F913F912F910F900FBE0F907D -:101900001F9018951F920F920FB60F9211242F93CC -:101910003F934F935F936F937F938F939F93AF9377 -:10192000BF93CF93EF93FF93C091E900CF70809165 -:10193000EC001092E9008091F000877F8093F00026 -:1019400078940E94BE0C1092E9008091F0008860AB -:101950008093F000C093E900FF91EF91CF91BF9188 -:10196000AF919F918F917F916F915F914F913F9137 -:101970002F910F900FBE0F901F9018951F93CF932C -:10198000DF93CDB7DEB7AA970FB6F894DEBF0FBED0 -:10199000CDBFE6EEF1E08091F100819321E0EE3ED3 -:1019A000F207C9F70E9444088091E80083FF1CC138 -:1019B0002091E6013091E701832F90E08A30910574 -:1019C00008F012C1FC01EA5AFF4F0C948022203823 -:1019D00081F0223809F008C18091EA018F7080936C -:1019E000E9008091EB0085FB882780F91092E900DF -:1019F00006C08091E2019091E30191118260909183 -:101A0000E800977F9093E8008093F1001092F10036 -:101A1000C5C0822F8D7F09F0E7C0222319F0223044 -:101A200061F0E2C08091E801813009F0DDC033301F -:101A300009F080E08093E30128C08091E8018111E2 -:101A400024C02091EA012F7009F4CEC02093E90050 -:101A50008091EB0080FF19C08091EB00333011F4CE -:101A6000806211C080618093EB0081E090E0022EE3 -:101A700001C0880F0A94EAF78093EA001092EA0006 -:101A80008091EB0088608093EB001092E9008091D8 -:101A9000E800877F86C02111A7C01091E8011F7759 -:101AA0008091E3008078812B8093E3008091E800AF -:101AB000877F8093E8000E94E40A8091E80080FF1D -:101AC000FCCF8091E30080688093E300112311F044 -:101AD00083E001C082E08093E50186C02058223077 -:101AE00008F082C08091E8019091E9018C3D23E0EB -:101AF000920779F583E08A838AE289834FB7F89465 -:101B0000DE01139620E03EE051E2E32FF0E0509337 -:101B10005700E49120FF03C0E295EF703F5FEF7044 -:101B20008E2F90E0EA3010F0C79601C0C0968D93DA -:101B30009D932F5F243149F74FBF8091E800877F45 -:101B40008093E8006AE270E0CE0101960E94EC0901 -:101B500014C0AE014F5F5F4F6091EA010E943409EB -:101B6000009709F441C02091E800277F2093E80006 -:101B7000BC0189819A810E944D0A8091E8008B778F -:101B80008093E80031C0203879F58091E800877FA4 -:101B90008093E8008091E1018093F1008091E8005A -:101BA0008E778093E8000E94E40A1EC021111CC0B9 -:101BB0009091E8019230C0F48091E800877F809393 -:101BC000E8009093E1010E94E40A8091E101811113 -:101BD00004C08091E30087FF02C084E001C081E07F -:101BE0008093E5010E9430088091E80083FF0AC0DD -:101BF0008091E800877F8093E8008091EB0080620D -:101C00008093EB00AA960FB6F894DEBF0FBECDBF4F -:101C1000DF91CF911F9108950895CF938091E501B1 -:101C20008823B1F08091E9008F709091EC0090FFD3 -:101C300002C090E801C090E0C92FC82B1092E900C3 -:101C40008091E80083FD0E94BE0CCF70C093E90034 -:101C5000CF91089590936901809368010895E09170 -:101C60006801F0916901309721F00190F081E02D39 -:101C7000099480E00895E0916801F091690130973E -:101C800021F00280F381E02D09940895E09168012C -:101C9000F0916901309721F00480F581E02D0994DD -:101CA000089520916601309167018217930771F0C2 -:101CB0009093670180936601E0916801F09169015A -:101CC000309721F00680F781E02D09940895209146 -:101CD0006401309165018217930771F0909365015B -:101CE00080936401E0916801F0916901309721F0DF -:101CF0000084F185E02D0994089508950C947D0EDB -:101D00000E946F1A0E940B040C94351BCF92DF9235 -:101D1000EF92FF920F931F93CF93DF93CDB7DEB770 -:101D20002B970FB6F894DEBF0FBECDBF0E942304E1 -:101D30003BE6E32E31E0F32E00E010E0C02E802FD2 -:101D40000E941005F701D1907F01D826B1F40F5FF2 -:101D50001F4F0E30110591F78FEF89838A831B8205 -:101D60000E94781A8160782F9D838C8349815A81E3 -:101D70006B818D810E94290F41C09091CC0191FF10 -:101D800004C08B870E9416058B8520E030E04D2D26 -:101D900050E0922FBA01022E02C0759567950A9401 -:101DA000E2F760FF25C02E83CF82EE24E394F12C6E -:101DB00002C0EE0CFF1C9A95E2F790E08E219F2165 -:101DC00021E0892B09F420E028870E94781A81609D -:101DD000782F9A8789874E815F8168858A850E94DE -:101DE000290FF801E559FE4F80818E25808306C0BA -:101DF0002F5F3F4F2630310561F6A9CF0E94191E93 -:101E000010916A010E942F0E1817A1F00E942F0E48 -:101E100080936A012B960FB6F894DEBF0FBECDBF3C -:101E2000DF91CF911F910F91FF90EF90DF90CF90B6 -:101E30000C9434072B960FB6F894DEBF0FBECDBFBF -:101E4000DF91CF911F910F91FF90EF90DF90CF9096 -:101E50000895CF93DF93CDB7DEB72B970FB6F894E5 -:101E6000DEBF0FBECDBF4F83588769877A878B87C8 -:101E7000DE01119686E0FD0111928A95E9F785E071 -:101E8000FE01379601900D928A95E1F749815A81BA -:101E90006B817C818D819E810E945C162B960FB692 -:101EA000F894DEBF0FBECDBFDF91CF910895CF93E1 -:101EB000C82F882309F4C1C0823859F40E942F0E1C -:101EC00081FDBBC089E30E94F9180E94B31989E320 -:101ED0000CC0833879F40E942F0E80FDAEC083E5DC -:101EE0000E94F9180E94B31983E50E943919CF9115 -:101EF0000C94B319843859F40E942F0E82FD9DC0B2 -:101F000087E40E94F9180E94B31987E4EECF8CEFA2 -:101F10008C0F813A48F48C2F0E944E2081118DC085 -:101F20008C2F0E94F918E3CF80E28C0F883048F4A0 -:101F3000C77081E001C0880FCA95EAF70E947A193C -:101F4000D6CF8BE58C0F833078F4C53A29F0C63AAA -:101F500031F482E890E005C081E890E002C083E8B7 -:101F600090E0CF910C94510E88E58C0F833108F0EE -:101F700064C0C83A39F1C93A41F1CA3A49F1CB3A99 -:101F800051F1CC3A59F1CD3A61F1C03B69F1CE3A09 -:101F900071F1CF3A79F1C13B81F1C23B89F1C33B89 -:101FA00091F1C43B99F1C53BA1F1C63BA9F1C73BF7 -:101FB000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2ED -:101FC00092E038C082EE90E035C089EE90E032C0F9 -:101FD0008AEE90E02FC085EB90E02CC086EB90E07D -:101FE00029C087EB90E026C08CEC90E023C08DECFC -:101FF00090E020C083E891E01DC08AE891E01AC01B -:1020000082E991E017C084E991E014C081E292E096 -:1020100011C083E292E00EC084E292E00BC085E240 -:1020200092E008C086E292E005C087E292E002C03A -:1020300080E090E0CF910C94670ECF9108958823B3 -:1020400009F44BC0823859F40E942F0E81FF45C01D -:1020500089E30E94F9180E94B31989E30CC0833800 -:1020600071F40E942F0E80FF38C083E50E94F9189A -:102070000E94B31983E50E9439190C94B31984386E -:1020800059F40E942F0E82FF28C087E40E94F9189D -:102090000E94B31987E4EFCF9CEF980F913A58F361 -:1020A00090E2980F983050F4877091E001C0990F3A -:1020B0008A95EAF7892F0E948019DFCF9BE5980F58 -:1020C000933020F480E090E00C94510E885A8331D4 -:1020D00020F480E090E00C94670E0895882321F0AE -:1020E0000E947A190C94B3190895882321F00E9454 -:1020F00080190C94B3190895CF92DF92EF92FF925A -:102100000F931F93CF93DF93CDB7DEB728970FB60A -:10211000F894DEBF0FBECDBF8C0185E0F801DE0173 -:10212000119601900D928A95E1F7F8014081318175 -:10213000F280258122952F7083819481892B31F043 -:102140003F3F31F481E04F3F19F403C081E001C00B -:1021500080E080FDC4C249833A8389819A812F83BC -:102160000E94B7189E8388870E94B6180E9489171C -:102170004E81E42FE295EF70F0E0E05AFF4F2F819F -:1021800068850C948022842F807F142F1F708823F1 -:1021900011F01295107FFF2059F0112309F454C259 -:1021A000812F68870E948A190E94B31968854CC2E2 -:1021B000862F0E941F10112309F491C2812F0E94C3 -:1021C000901928960FB6F894DEBF0FBECDBFDF91F1 -:1021D000CF911F910F91FF90EF90DF90CF900C94D3 -:1021E000B319342F307F842F8F70303211F08295E5 -:1021F000807F662319F0613019F12BC0FF20B1F008 -:10220000222309F493C1213009F090C128960FB61A -:10221000F894DEBF0FBECDBFDF91CF911F910F911C -:10222000FF90EF90DF90CF900C949A19222319F031 -:10223000213009F454C28E830E949D198E8189C178 -:10224000FF2021F0223008F04AC270C1211147C29C -:1022500080C1FF2021F0222309F468C1F5C12223A7 -:1022600009F477C105C2242F26952695237030E006 -:102270002115310521F021303105C9F030C2FF2090 -:1022800021F0862F942F937002C080E090E0289672 -:102290000FB6F894DEBF0FBECDBFDF91CF911F9177 -:1022A0000F91FF90EF90DF90CF900C94510EFF2094 -:1022B00021F0862F942F937002C080E090E0289642 -:1022C0000FB6F894DEBF0FBECDBFDF91CF911F9147 -:1022D0000F91FF90EF90DF90CF900C94670E862FB8 -:1022E000FF2019F00E94211D02C00E94891D28961E -:1022F0000FB6F894DEBF0FBECDBFDF91CF911F9117 -:102300000F91FF90EF90DF90CF900C940E1E842FD2 -:10231000837009F076C0F110E2C1262F2295269530 -:102320002770220F220F862F8F70C82ED12CE12C00 -:10233000F12C022E04C0CC0CDD1CEE1CFF1C0A94F8 -:10234000D2F764FF10C06FE070E080E090E004C05E -:10235000660F771F881F991F2A95D2F76095709591 -:102360008095909503C060E070E0CB01242F269506 -:1023700026952370422F50E042305105D1F0433072 -:10238000510559F16C297D298E299F29413051052C -:1023900041F128960FB6F894DEBF0FBECDBFDF9196 -:1023A000CF911F910F91FF90EF90DF90CF900C9401 -:1023B000AE176C297D298E299F2928960FB6F8948F -:1023C000DEBF0FBECDBFDF91CF911F910F91FF9068 -:1023D000EF90DF90CF900C94C8170E94AE17C70102 -:1023E000B60128960FB6F894DEBF0FBECDBFDF91C1 -:1023F000CF911F910F91FF90EF90DF90CF900C94B1 -:102400009417FF2019F0842F817001C086958823CE -:1024100009F465C1262F229526952770220F220FD9 -:10242000862F8F70C82ED12CE12CF12C022E04C0E7 -:10243000CC0CDD1CEE1CFF1C0A94D2F764FF10C00C -:102440006FE070E080E090E004C0660F771F881FA7 -:10245000991F2A95D2F7609570958095909503C045 -:1024600060E070E0CB01242F269526952370422F43 -:1024700050E042305105D1F04330510559F16C29FB -:102480007D298E299F294130510541F128960FB6AB -:10249000F894DEBF0FBECDBFDF91CF911F910F919A -:1024A000FF90EF90DF90CF900C9482186C297D29DB -:1024B0008E299F2928960FB6F894DEBF0FBECDBF98 -:1024C000DF91CF911F910F91FF90EF90DF90CF9010 -:1024D0000C949C180E948218C701B60128960FB66A -:1024E000F894DEBF0FBECDBFDF91CF911F910F914A -:1024F000FF90EF90DF90CF900C946818603FC9F187 -:1025000018F4603E50F49BC0623F09F460C008F4C8 -:102510004AC0633F09F46FC092C0162F1F70842F0A -:102520008F71FF2099F00E940118812F28960FB615 -:10253000F894DEBF0FBECDBFDF91CF911F910F91F9 -:10254000FF90EF90DF90CF900C946E100E942218B5 -:10255000812F28960FB6F894DEBF0FBECDBFDF9156 -:10256000CF911F910F91FF90EF90DF90CF900C943F -:102570007510FF20A1F02111B2C0842F8F71289611 -:102580000FB6F894DEBF0FBECDBFDF91CF911F9184 -:102590000F91FF90EF90DF90CF900C94471822306E -:1025A00008F09DC0EACFFF20A1F0842F8F712896FC -:1025B0000FB6F894DEBF0FBECDBFDF91CF911F9154 -:1025C0000F91FF90EF90DF90CF900C940118FF20B7 -:1025D00061F3842F8F7128960FB6F894DEBF0FBE7B -:1025E000CDBFDF91CF911F910F91FF90EF90DF90C2 -:1025F000CF900C942218FF2091F0842F8F71289691 -:102600000FB6F894DEBF0FBECDBFDF91CF911F9103 -:102610000F91FF90EF90DF90CF900C94EC172896DD -:102620000FB6F894DEBF0FBECDBFDF91CF911F91E3 -:102630000F91FF90EF90DF90CF900C94E217FF2066 -:10264000A1F0222309F4B1CF862F28960FB6F89473 +:100000000C940B040C944F040C944F040C944F0468 +:100010000C944F040C944F040C944F040C944F0414 +:100020000C944F040C944F040C946F0D0C94410EDF +:100030000C944F040C944F040C944F040C944F04F4 +:100040000C944F040C94EC220C944F040C944F0429 +:100050000C944F040C948E1C0C944F040C944F047D +:100060000C944F040C944F040C944F040C944F04C4 +:100070000C944F040C944F040C944F040C944F04B4 +:100080000C944F040C944F040C944F040C944F04A4 +:100090000C944F040C944F040C944F040C944F0494 +:1000A0000C944F040C944F040C944F04A60EC80EED +:1000B000B30FC80EB30F0A0F2D0FB30F820F950F9A +:1000C00089128912B712B712F91235133515351581 +:1000D0004D133515441444140F15351535152315D6 +:1000E000000000810889248935812B850252E100B6 +:1000F000E00000001E00140004001D0000774E0008 +:100100001F001A0016001B00007F4C002000080092 +:1001100007000600E2002A0021001500090019006E +:10012000E3004B00220017000A00050000004A000F +:1001300029002F0000002B0200004D002D00300090 +:1001400000002B000000500023001C000B001100D9 +:1001500000004F00240018000D001000E7005200BE +:1001600025000C000E003600E6002C0026001200D0 +:100170000F003700007F28002700130033003800ED +:10018000007751002E8131853482E500E4000000C3 +:100190000100C300C2003900010000002900010075 +:1001A0000100010001000100010001000100010047 +:1001B0000100010001000100010001000100010037 +:1001C0000100010001000100010001000100010027 +:1001D0000100010000000100010001000000010019 +:1001E000000001000100010000000100000001000A +:1001F00001000100010001000000010001000100F8 +:1002000001000100010001000100010001000100E6 +:1002100001000100010001000100010001000100D6 +:100220000100010001000100010001000100C30004 +:10023000C200390001000000010005520252E10035 +:10024000010000003A001E022002220201005100BB +:100250003B001F0221022302010028003C002F0264 +:1002600026022F0001002C003D0030022702300042 +:10027000010052003E00240235003502000050000B +:100280000100360200002B0000004F000100370281 +:1002900000002B0200004A003F003102380031000C +:1002A00000004D004000240021001E0027004B00EC +:1002B0004100250022001F0037004C0042002600AC +:1002C000230020002E002A004300380025022D00C4 +:1002D0002E024E00010005520252E50028000000E7 +:1002E000045205520000E100010000003A001E0225 +:1002F00020022202010051003B001F0221022302C2 +:10030000010028003C002F0226022F0001002C00D3 +:100310003D00300227023000010052003E0024025E +:1003200035003502000050000100360200002B00AD +:1003300000004F000100370200002B0200004A00BD +:100340003F0031023800310000004D004000240021 +:1003500021001E0027004B004100250022001F0045 +:1003600037004C0042002600230020002E002A0007 +:100370004300380025022D002E024E000452055283 +:100380000000E5002800000001000654C10039000B +:10039000010000002900010001000100010001002E +:1003A0000100010001000100010001000100010045 +:1003B0000100010001000100010001000100010035 +:1003C0000100010001000100010001000000010026 +:1003D0000100010000000100000001000100010017 +:1003E0000000010000000100010001000100010007 +:1003F00000000100010001000100010001000100F6 +:1004000001000100010001000100010001000100E4 +:1004100001000100010001000100010001000100D4 +:100420000100010001000654C10039000100000074 +:10043000010005520000E100A80000004400660031 +:10044000A6000100AA00B50045000100F20001006D +:10045000A90001006800F000F100F100F400B6000E +:1004600069000100F3000100F500B4006A0001001A +:10047000010001000000B8000100F9000000FA00CE +:100480000000B9000100F9000000FA000000AC0013 +:100490006B004600530001000000AB006C004A00F6 +:1004A00050004D004900A9006D005200510051005C +:1004B0004C00AE006E004B004F004E000100AD003E +:1004C0006F00B100B30001000100AA000100055255 +:1004D0000000E50001000000075200000000E100FC +:1004E000A800000044006600A6000100AA00B500B4 +:1004F00045000100F2000100A90001006800F000C1 +:10050000F100F100F400B60069000100F300010001 +:10051000F500B4006A000100010001000000B8000D +:100520000100F9000000FA000000B9000100F90024 +:100530000000FA000000AC006B0046005300010010 +:100540000000AB006C004A0050004D004900A900BB +:100550006D005200510051004C00AE006E004B0087 +:100560004F004E000100AD006F00B100B30001006C +:100570000100AA00075200000000E5000100000091 +:100580000100C10001003900010000002900010044 +:100590000100010001000100010001000100010053 +:1005A0000100010001000100010001000100010043 +:1005B0000100010001000100010001000100010033 +:1005C0000100010000000100010001000000010025 +:1005D0000000010001000100000001000000010016 +:1005E0000100010001000100000001000100010004 +:1005F00001000100010001000100010001000100F3 +:1006000001000100010001000100010001000100E2 +:100610000100010001000100010001000100C10012 +:100620000100390001000000160345007200670058 +:100630006F0044006F007800200045005A00000061 +:1006400016034500720067006F0044006F007800D9 +:10065000200045005A0000000403090409026D004F +:10066000040100A0FA0904000001030101000921AE +:1006700011010001223F000705810308000A090457 +:1006800001000103010200092111010001224D00B6 +:100690000705820308000A090402000103000000A4 +:1006A0000921110100012236000705830308000A11 +:1006B00009040300010300000009211101000122C7 +:1006C0003900070584031000011201100100000029 +:1006D00008EDFE071301000102000105010906A152 +:1006E00001050719E029E715002501950875018125 +:1006F00002050819012905950575019102950175F5 +:1007000003910105071900297715002501957875D2 +:10071000018102C005010980A101850216010026A0 +:10072000B7001A01002AB700751095018100C005B5 +:100730000C0901A1018503160100269C021A010083 +:100740002A9C02751095018100C005010902A101D2 +:100750000901A100050919012905150025019505C3 +:100760007501810295017503810105010930093187 +:100770001581257F95027508810609381581257F29 +:10078000950175088106050C0A38021581257F95AB +:100790000175088106C0C005010906A101050719F8 +:1007A000E029E7150025019508750181029501757D +:1007B0000881010508190129059505750191029522 +:1007C00001750391010507190029FF150025FF9503 +:1007D0000675088100C00000000000000000000055 +:1007E00000010204060A0F17202C3A4A5D71879D0A +:1007F000B3C7DAE9F5FCFFFCF5E9DAC7B39D877109 +:100800005D4A3A2C20170F0A06040201000000007E +:1008100000000000000011241FBECFEFDAE0DEBFB1 +:10082000CDBF04B603FE24C08091EF019091F0018A +:10083000A091F101B091F2018730904BA740B04BED +:10084000B9F41092EF011092F0011092F1011092A0 +:10085000F20114BE84B7877F84BF88E10FB6F89495 +:1008600080936000109260000FBEE0E0FFE3099506 +:1008700011E0A0E0B1E0ECE5F9E402C005900D92D2 +:10088000A433B107D9F721E0A4E3B1E001C01D9280 +:10089000AF3EB207E1F70E94B50A0C94AC240C9469 +:1008A000000061110BC0FC018281882321F085EEDC +:1008B0000E94161103C085EE0E94DE1180E090E0D8 +:1008C00008950895CF936091B1017091B201809124 +:1008D000B3019091B4010E94BA1BC82F56985E983C +:1008E00025982D9826982E9827982F98813011F0CA +:1008F000843029F4259A2D9A269A2E9A04C087309E +:1009000021F4259A2D9A279A2F9A0E94EE0F81FFA3 +:1009100002C0259A2D9A8EEF8C0F823010F4269A01 +:100920002E9AC550C23010F4279A2F9ACF9108956D +:100930000C94620456985E9825982D9826982E98C7 +:1009400027982F988FEF90E09093890080938800EC +:1009500090938B0080938A0090938D0080938C00FD +:10096000259A2D9A2FEF80E792E021508040904009 +:10097000E1F700C00000269A2E9A2FEF80E792E060 +:10098000215080409040E1F700C00000279A2F9A44 +:100990002FEF80E792E0215080409040E1F700C0C7 +:1009A000000025982D982FEF80E792E0215080409D +:1009B0009040E1F700C0000026982E982FEF80E7C6 +:1009C00092E0215080409040E1F700C0000027985D +:1009D0002F9856985E9825982D9826982E982798A7 +:1009E0002F98089589EA8093800089E080938100A0 +:1009F00024982C983F988AB18F748AB96E98479A38 +:100A00008BB1806B8BB9769A0E949A040C94610426 +:100A100080E2809300018091340181110EC00E9418 +:100A2000570581E0809334012FEF83ED90E321504F +:100A300080409040E1F700C0000080E40E945D0526 +:100A40008093000181112EC00E94870580930001D0 +:100A5000811128C00E94870580930001811122C066 +:100A60008FE30E9487058093000181111BC00E94C3 +:100A70007F0580E40E945D0580930001811112C012 +:100A80008CE00E9487058093000181110BC00E94B9 +:100A9000870580930001811105C08FE30E948705BF +:100AA000809300010E947F058091000108951092BB +:100AB000B9008AE08093B800089594EA9093BC004E +:100AC0009091BC0097FFFCCF9091B900987F98302F +:100AD00021F0903111F081E008958093BB0084E80B +:100AE0008093BC008091BC0087FFFCCF8091B9004F +:100AF000887F883111F0803471F780E0089584E9AF +:100B00008093BC008091BC0084FDFCCF089580934D +:100B1000BB0084E88093BC008091BC0087FFFCCFC1 +:100B20009091B900987F81E0983209F480E00895AF +:100B300084E88093BC008091BC0087FFFCCF80914B +:100B4000BB00089580910001811115C080E40E94CE +:100B50005D058093000181110CC082E10E94870530 +:100B600080930001811105C08FEF0E94870580935B +:100B700000010E947F0584B1807F84B985B1807FA8 +:100B800085B98AB1837F8AB98BB1837F8BB93E984F +:100B9000469808950E940805809300010E94A205CE +:100BA00080B38C7080BB81B3836F81BBE4E4F1E0E0 +:100BB000A6E3B1E011921D9281E0E235F807D1F78A +:100BC0000C94F204BF92CF92DF92EF92FF920F93B8 +:100BD0001F93CF93DF9380910001882379F0809158 +:100BE00035018F5F80933501811108C00E9408058F +:100BF00080930001811102C00E949A0406E311E073 +:100C0000C0E0D0E0DD24D39482E0C82EEE24E3944B +:100C1000F12CC73000F580910001811162C080E4A1 +:100C20000E945D0580930001811112C082E10E9443 +:100C300087058093000181110BC0C7010C2E01C0F4 +:100C4000880F0A94EAF780950E9487058093000137 +:100C50000E947F0546C0CA30A1F028F4C83059F080 +:100C6000C93061F005C0CC3089F070F0CD3089F02A +:100C7000209A289810C0219A29980DC0229A2A9863 +:100C80000AC0239A2B9807C0529A01C0539A5B98C6 +:100C900002C03E9A4698E0EAEA95F1F78FB1799959 +:100CA0005AC092E081708D25892B7C9B02C090E018 +:100CB00001C094E0892B7D9B02C090E001C098E0C8 +:100CC000892B7E9B02C090E001C090E1892B9FB1EF +:100CD0009095991F9927991F9295990F907E892B2E +:100CE0000FC08091000181114BC080E40E945D051E +:100CF00080930001882389F1B12C0E947F058B2D00 +:100D0000F8019081981719F08083C09201010E9428 +:100D1000A20521960F5F1F4FCE30D10509F079CF84 +:100D200080910101882371F1815080930101882312 +:100D300039F08FE99FE00197F1F700C0000022C071 +:100D4000A4E4B1E0E6E3F1E081918D9391E0E43435 +:100D5000F907D1F717C090E0A5CF83E10E9487057E +:100D6000809300018111C8CF81E40E945D058093CA +:100D700000018111C1CF0E949805B82EB094BDCF5B +:100D800080E0BECF0E94980481E0DF91CF911F9157 +:100D90000F91FF90EF90DF90CF90BF900895E82FD4 +:100DA000F0E0EC5BFE4F8081089508958B3B910548 +:100DB00078F4883A910540F5853A9105D0F484306D +:100DC000910508F0B1C08130910509F4ADC06BC048 +:100DD000803E910508F467C0883E910508F4A4C0E0 +:100DE0009C01205F31092031310508F05CC090651D +:100DF0000895853A910509F459C0863A910509F498 +:100E000058C083E890E40895883A910509F454C0E5 +:100E1000893A910509F453C08A3A910509F452C000 +:100E20008B3A910509F451C08C3A910509F450C0F0 +:100E30008D3A910509F44FC0803B910509F44EC0ED +:100E40008E3A910509F44DC08F3A910509F44CC0D2 +:100E5000813B910509F44BC0823B910509F44AC0DE +:100E6000833B910509F449C0843B910509F448C0CE +:100E7000853B910509F447C0863B910509F446C0BE +:100E8000873B910509F445C0883B910509F444C0AE +:100E9000893B910509F443C08A3B910509F042C0A2 +:100EA0008AE296E4089580E090E0089581E890E475 +:100EB000089582E890E4089582EE94E4089589EE1E +:100EC00094E408958AEE94E4089585EB94E40895FB +:100ED00086EB94E4089587EB94E408958CEC94E415 +:100EE00008958DEC94E4089583E895E408958AE8E4 +:100EF00095E4089582E995E4089584E995E40895D8 +:100F000081E296E4089583E296E4089584E296E40B +:100F1000089585E296E4089586E296E4089587E2CE +:100F200096E4089580E094E40895089596E0799F0A +:100F3000F001112494E5899FE00DF11D1124E60FC5 +:100F4000F11DEE0FFF1FE851FF4F85919491089519 +:100F5000880F991F805A9040FC01859194910895C3 +:100F6000880F991F80529F4FFC018591949108959D +:100F700026E0729FF001112444E5849FE00DF11DED +:100F80001124E60FF11DEE0FFF1FE851FF4F2591D1 +:100F90003491C9019A9581159F4110F4C9010895B2 +:100FA000C90190528115904128F4C9019F700E9497 +:100FB000B0070895C90190538115904120F4C901EB +:100FC0009927906C0895211580E5380769F40E94EF +:100FD00058159FEF24E34CE0915020404040E1F74A +:100FE00000C000000C94B31C213080E5380731F4B8 +:100FF0008091CD0181608093CD010895C901905504 +:101000008115904108F050C0832F99278F70992740 +:1010100081309105D9F4A9014370552702C0880F8A +:10102000991F4A95E2F79C68A90164E0440F551F97 +:101030006A95E1F744275370842B952B73E0220FB8 +:10104000331F7A95E1F7207633271DC08230910552 +:1010500029F4922F8827816F906A08958330910533 +:10106000A9F4A9014370552781E090E002C0880FE0 +:10107000991F4A95E2F79C6843E0220F331F4A9577 +:10108000E1F7207E3770822B932B08950497F1F4BB +:10109000A9014370552781E090E002C0880F991F95 +:1010A0004A95E2F79A68E8CFC901905781159041B7 +:1010B00020F4C9019F7090620895C901905881156C +:1010C000904120F4C9019F70906A0895203E310537 +:1010D000E0F4203C310558F52133310509F470C0A6 +:1010E00048F42932310509F464C02A32310509F483 +:1010F0006EC074C029333105F1F022383105D9F0C2 +:101100002533310509F44EC069C0233E310589F10C +:1011100038F4203E3105C1F0223E3105E1F05EC0D9 +:10112000263E310569F1273E3105A9F157C0C901B5 +:101130000E94A80708958091E00180FD02C081FF10 +:101140004DC080EE90E04BC08091E00180FFF9CF70 +:1011500089E390E044C08091E00182FF0EC080915D +:10116000E00184FF03C080E090E039C083EE90E0AE +:1011700036C08091E00182FFF2CF82EE90E02FC076 +:101180008091E00183FF0BC08091E00184FDEBCFF3 +:1011900087EE90E024C08091E00183FFF5CF86EEDA +:1011A00090E01DC08091E00185FF07C089E290E0DA +:1011B00016C08091E00185FFF9CF85E390E00FC074 +:1011C0008091E00186FF07C08AE290E008C080912C +:1011D000E00186FFF9CF81E390E001C0C9010E94E0 +:1011E000D606089508950C94F2088091620108953E +:1011F000CF93DF9300D01F92CDB7DEB72091E601E9 +:10120000243019F523E029839B838A832093E90006 +:101210008FEF9091E800815095FD06C095ED9A956D +:10122000F1F700008111F5CF8091E80085FF0DC036 +:1012300040E050E063E070E0CE0101960E94620B56 +:101240008091E8008E778093E8000F900F900F90C8 +:10125000DF91CF910895CF93DF9300D01F92CDB748 +:10126000DEB72091E601243021F522E029839B831B +:101270008A8383E08093E9008FEF9091E8008150AA +:1012800095FD06C095ED9A95F1F700008111F5CF17 +:101290008091E80085FF0DC040E050E063E070E021 +:1012A000CE0101960E94620B8091E8008E778093B8 +:1012B000E8000F900F900F90DF91CF91089520914B +:1012C000E6012430F1F422E02093E9002FEF309181 +:1012D000E800215035FD06C035ED3A95F1F70000E4 +:1012E0002111F5CF2091E80025FF0BC040E050E030 +:1012F00065E070E00E94620B8091E8008E77809339 +:10130000E8000895CF93DF93EC018091E6018430EB +:1013100009F046C090910C019923D9F090910D01EC +:101320009923B9F08093E9008FEF9091E800815004 +:1013300095FD06C095E19A95F1F700008111F5CF72 +:101340008091E80085FF2CC040E050E060E170E053 +:1013500017C081E08093E9008FEF9091E800815001 +:1013600095FD06C095ED9A95F1F700008111F5CF36 +:101370008091E80085FF14C040E050E068E070E034 +:10138000CE010E94620B8091E8008E778093E80086 +:1013900080E1FE01A2E5B1E001900D928A95E1F7AE +:1013A000DF91CF9108958091E501811109C00E94DC +:1013B000F40C0E94510D8091E20084608093E20061 +:1013C00008951092E501089508950C94D9220E9481 +:1013D0004A1C0E94DF220E94EE0F0C94F30842E0A8 +:1013E00061EC81E00E946E0C42E061EC82E00E94C0 +:1013F0006E0C42E061EC83E00E946E0C42E161EC15 +:1014000084E00C946E0C8091E801833009F455C09F +:1014100030F4813071F0823009F48EC008958A3042 +:1014200009F47AC08B3009F460C0893009F09CC09F +:1014300020C08091E701813A09F096C08091E800D0 +:10144000877F8093E8008091EB019091EC01892BDC +:1014500021F060E080E090E003C060E182E591E08F +:1014600070E00E94AB0B8091E8008B778093E800DE +:1014700008958091E701813209F076C08091EB01F7 +:101480009091EC01009719F0039709F06DC08091DD +:10149000E800877F8093E8008091E80082FD05C026 +:1014A0008091E6018111F8CF5FC08091F1008093B7 +:1014B00062018091E8008B7753C08091E701813A07 +:1014C00009F052C08091EB019091EC01892B09F059 +:1014D0004BC08091E800877F8093E8008091E8000E +:1014E00080FFFCCF80910C0136C08091E7018132F2 +:1014F000D9F58091EB019091EC01892BA9F58091B0 +:10150000E800877F8093E8000E94A30C8091E901A6 +:1015100080930C010C9458158091E701813221F5DC +:101520008091E800877F8093E8000E94A30C80915F +:10153000EA018093630108958091E701813AA1F463 +:101540008091E800877F8093E8008091E80080FF29 +:10155000FCCF809163018093F1008091E8008E7749 +:101560008093E8000C94A30C089584B7877F84BF10 +:1015700088E10FB6F89480936000109260000FBE6F +:1015800090E080E80FB6F89480936100909361003A +:101590000FBE0E943D100E94F40C0E94510D8091DC +:1015A000E20084608093E20078940E94CC0F0E9455 +:1015B0003F1082E091E00E94E90F0E94C7228091D3 +:1015C000E601853069F40E940D1C8091E4018823B6 +:1015D000B1F30E94351C882391F30E944C0BEFCF8E +:1015E0000E944510ECCF292F332723303105A9F075 +:1015F0006CF42130310509F442C02230310509F084 +:1016000043C08DE690E02CE536E042C02132310542 +:10161000C9F02232310519F137C09927813091057F +:1016200041F08230910541F0892B71F5E8E5F6E053 +:1016300005C0E0E4F6E002C0E8E2F6E0849190E064 +:101640009F0126C0643000F5E62FF0E0EE0FFF1F8B +:10165000EE5DFE4F2081318189E090E019C0643059 +:1016600098F4E62FF0E0DF01AA0FBB1FA65EBE4F85 +:101670002D913C91EA5EFE4F808190E009C082E1AD +:1016800090E029EC36E004C080E090E020E030E01B +:10169000FA0131832083089580E189BD82E189BD0B +:1016A00009B400FEFDCF8091D8008F7D8093D800D3 +:1016B0008091E00082608093E0008091E00081FDF5 +:1016C000FCCF0895CF92DF92EF92FF920F931F937A +:1016D000CF93DF937C018B01EA010E94C40C81113E +:1016E00031C0209731F088819981081B190BE80ED1 +:1016F000F91EC12CD12C0115110519F18091E800BA +:1017000085FD14C08091E8008E778093E8002097D3 +:1017100041F0888199818C0D9D1D9983888385E096 +:1017200011C00E94C40C882331F30CC0F7018191D1 +:101730007F018093F10001501109FFEFCF1ADF0AFA +:10174000DACF80E0DF91CF911F910F91FF90EF9062 +:10175000DF90CF9008952091ED013091EE01261792 +:10176000370748F06115710539F42091E8002E77AC +:101770002093E80001C0B901FC0120E0611571056A +:10178000B9F18091E601882309F440C0853009F45D +:101790003FC08091E80083FD3DC08091E80082FF5A +:1017A00006C08091E80082FF26C080E00895809105 +:1017B000E80080FFE3CF2091F3008091F20090E0F9 +:1017C000922B6115710551F08830910538F4219103 +:1017D0002093F100615071090196F3CF21E0089741 +:1017E00009F020E08091E8008E778093E800C6CF72 +:1017F0002111C7CFD6CF8091E601882339F08530FB +:1018000039F08091E80083FFCCCF04C082E00895D6 +:1018100083E0089581E008952091ED013091EE017B +:101820002617370748F06115710539F42091E80053 +:101830002E772093E80001C0B901FC0120E061157A +:101840007105C1F18091E601882309F441C085301A +:1018500009F440C08091E80083FD3EC08091E8001B +:1018600082FF06C08091E80082FF27C080E00895D3 +:101870008091E80080FFE3CF2091F3008091F20097 +:1018800090E0922B6115710559F08830910540F474 +:1018900024912093F1003196615071090196F2CFA5 +:1018A00021E0089709F020E08091E8008E7780938E +:1018B000E800C5CF2111C6CFD5CF8091E60188239E +:1018C00039F0853039F08091E80083FFCBCF04C038 +:1018D00082E0089583E0089581E00895982F97307D +:1018E00058F59093E900981739F07091EC00209129 +:1018F000ED005091F00003C0242F762F50E021FF1F +:1019000019C03091EB003E7F3093EB003091ED0039 +:101910003D7F3093ED003091EB0031603093EB0070 +:101920007093EC002093ED005093F0002091EE00B6 +:1019300027FF07C09F5FD3CF8F708093E90081E0BE +:10194000089580E008958091E70187FD05C08091AA +:10195000E80080FF0EC012C08091E80082FD05C043 +:101960008091E6018111F8CF08958091E8008B778E +:1019700008C08091E6018111EACF08958091E800C6 +:101980008E778093E80008958091E4009091E500BF +:1019900045E62091EC0020FF21C02091E80020FDC9 +:1019A00021C02091E601222389F0253089F0209181 +:1019B000EB0025FD0FC02091E4003091E5002817D1 +:1019C000390739F3415041F0C901E3CF82E008956E +:1019D00083E0089581E0089584E008952091E8006F +:1019E00022FFDFCF80E008950E94620D0E946A0D01 +:1019F000E0EEF0E0808181608083E8EDF0E08081BE +:101A00008F77808319BCA7EDB0E08C918E7F8C938B +:101A100080818F7E80831092E50108950F931F933C +:101A2000CF93DF930E94620D0E946A0DC8EDD0E053 +:101A300088818F77888388818068888388818F7D7B +:101A4000888319BC1092E6011092E2011092E40121 +:101A50001092E30100EE10E0F80180818B7F80831B +:101A600088818160888342E060E080E00E946E0CA3 +:101A7000E1EEF0E080818E7F8083E2EEF0E0808115 +:101A800081608083808188608083F80180818E7F7F +:101A90008083888180618883DF91CF911F910F912E +:101AA0000895E8EDF0E080818F7E8083E7EDF0E03F +:101AB00080818160808384E082BF81E08093E50142 +:101AC0000C940E0DE8EDF0E080818E7F8083109203 +:101AD000E20008951092DA001092E10008951F923A +:101AE0000F920FB60F9211242F933F934F935F9352 +:101AF0006F937F938F939F93AF93BF93EF93FF93D6 +:101B00008091E10082FF0BC08091E20082FF07C05C +:101B10008091E1008B7F8093E1000E94CB0F809148 +:101B2000DA0080FF1FC08091D80080FF1BC0809129 +:101B3000DA008E7F8093DA008091D90080FF0DC09B +:101B400080E189BD82E189BD09B400FEFDCF81E05D +:101B50008093E6010E94D30905C019BC1092E601EA +:101B60000E94E1098091E10080FF19C08091E200AC +:101B700080FF15C08091E2008E7F8093E20080910B +:101B8000E20080618093E2008091D80080628093BF +:101B9000D80019BC85E08093E6010E94E509809198 +:101BA000E10084FF30C08091E20084FF2CC080E11E +:101BB00089BD82E189BD09B400FEFDCF8091D800C6 +:101BC0008F7D8093D8008091E1008F7E8093E1002B +:101BD0008091E2008F7E8093E2008091E20081603C +:101BE0008093E2008091E201882311F084E007C035 +:101BF0008091E30087FF02C083E001C081E0809311 +:101C0000E6010E94E7098091E10083FF29C08091ED +:101C1000E20083FF25C08091E100877F8093E1008F +:101C200082E08093E6011092E2018091E1008E7FD4 +:101C30008093E1008091E2008E7F8093E2008091AA +:101C4000E20080618093E20042E060E080E00E9478 +:101C50006E0C8091F00088608093F0000E94E4098F +:101C6000FF91EF91BF91AF919F918F917F916F9174 +:101C70005F914F913F912F910F900FBE0F901F904A +:101C800018951F920F920FB60F9211242F933F9326 +:101C90004F935F936F937F938F939F93AF93BF9374 +:101CA000CF93EF93FF93C091E900CF708091EC0048 +:101CB0001092E9008091F000877F8093F000789483 +:101CC0000E947D0E1092E9008091F0008860809360 +:101CD000F000C093E900FF91EF91CF91BF91AF91D8 +:101CE0009F918F917F916F915F914F913F912F9134 +:101CF0000F900FBE0F901F9018951F93CF93DF93F7 +:101D0000CDB7DEB7AA970FB6F894DEBF0FBECDBF32 +:101D1000E7EEF1E08091F100819321E0EF3EF207E0 +:101D2000C9F70E94030A8091E80083FF1CC120913B +:101D3000E7013091E801832F90E08A30910508F0A7 +:101D400012C1FC01EA5AFF4F0C946124203881F043 +:101D5000223809F008C18091EB018F708093E9006F +:101D60008091EB0085FB882780F91092E90006C07E +:101D70008091E3019091E401911182609091E800DB +:101D8000977F9093E8008093F1001092F100C5C016 +:101D9000822F8D7F09F0E7C0222319F0223061F0F5 +:101DA000E2C08091E901813009F0DDC0333009F0F3 +:101DB00080E08093E40128C08091E901811124C072 +:101DC0002091EB012F7009F4CEC02093E90080919F +:101DD000EB0080FF19C08091EB00333011F480627A +:101DE00011C080618093EB0081E090E0022E01C081 +:101DF000880F0A94EAF78093EA001092EA00809133 +:101E0000EB0088608093EB001092E9008091E8007D +:101E1000877F86C02111A7C01091E9011F778091AB +:101E2000E3008078812B8093E3008091E800877F36 +:101E30008093E8000E94A30C8091E80080FFFCCF13 +:101E40008091E30080688093E300112311F083E028 +:101E500001C082E08093E60186C02058223008F05D +:101E600082C08091E9019091EA018C3D23E09207C4 +:101E700079F583E08A838AE289834FB7F894DE019B +:101E8000139620E03EE051E2E32FF0E0509357003C +:101E9000E49120FF03C0E295EF703F5FEF708E2F5B +:101EA00090E0EA3010F0C79601C0C0968D939D93E4 +:101EB0002F5F243149F74FBF8091E800877F8093DF +:101EC000E8006AE270E0CE0101960E94AB0B14C0FC +:101ED000AE014F5F5F4F6091EB010E94F30A0097E4 +:101EE00009F441C02091E800277F2093E800BC015D +:101EF00089819A810E940C0C8091E8008B778093F5 +:101F0000E80031C0203879F58091E800877F809320 +:101F1000E8008091E2018093F1008091E8008E77E3 +:101F20008093E8000E94A30C1EC021111CC0909158 +:101F3000E9019230C0F48091E800877F8093E80047 +:101F40009093E2010E94A30C8091E201811104C0F0 +:101F50008091E30087FF02C084E001C081E08093AC +:101F6000E6010E94EF098091E80083FF0AC080919A +:101F7000E800877F8093E8008091EB008062809387 +:101F8000EB00AA960FB6F894DEBF0FBECDBFDF916F +:101F9000CF911F9108950895CF938091E6018823F2 +:101FA000B1F08091E9008F709091EC0090FF02C039 +:101FB00090E801C090E0C92FC82B1092E9008091F1 +:101FC000E80083FD0E947D0ECF70C093E900CF91A1 +:101FD000089590936901809368010895E0916801E4 +:101FE000F0916901309721F00190F081E02D099482 +:101FF00080E00895E0916801F0916901309721F047 +:102000000280F381E02D09940895E0916801F09138 +:102010006901309721F00480F581E02D099408953D +:1020200020916601309167018217930771F09093B8 +:10203000670180936601E0916801F0916901309732 +:1020400021F00680F781E02D099408952091640124 +:10205000309165018217930771F090936501809329 +:102060006401E0916801F0916901309721F00084EA +:10207000F185E02D0994089508950C943C100E9478 +:10208000501C0E94CA050C94161DCF92DF92EF924D +:10209000FF920F931F93CF93DF93CDB7DEB72B97AC +:1020A0000FB6F894DEBF0FBECDBF0E94E2053BE63F +:1020B000E32E31E0F32E00E010E0C02E802F0E94CE +:1020C000CF06F701D1907F01D826B1F40F5F1F4FE3 +:1020D0000E30110591F78FEF89838A831B820E944E +:1020E000591C8160782F9D838C8349815A816B8133 +:1020F0008D810E94E81041C09091CD0191FF04C0F4 +:102100008B870E94D5068B8520E030E04D2D50E076 +:10211000922FBA01022E02C0759567950A94E2F7D4 +:1021200060FF25C02E83CF82EE24E394F12C02C001 +:10213000EE0CFF1C9A95E2F790E08E219F2121E0A2 +:10214000892B09F420E028870E94591C8160782F90 +:102150009A8789874E815F8168858A850E94E81009 +:10216000F801E559FE4F80818E25808306C02F5FE0 +:102170003F4F2630310561F6A9CF0E94FA1F10911A +:102180006A010E94EE0F1817A1F00E94EE0F8093D3 +:102190006A012B960FB6F894DEBF0FBECDBFDF915C +:1021A000CF911F910F91FF90EF90DF90CF900C9403 +:1021B000F3082B960FB6F894DEBF0FBECDBFDF91AC +:1021C000CF911F910F91FF90EF90DF90CF900895E6 +:1021D000CF93DF93CDB7DEB72B970FB6F894DEBF62 +:1021E0000FBECDBF4F83588769877A878B87DE0103 +:1021F000119686E0FD0111928A95E9F785E0FE01CE +:10220000379601900D928A95E1F749815A816B8149 +:102210007C818D819E810E9424182B960FB6F894A4 +:10222000DEBF0FBECDBFDF91CF910895CF93C82FF2 +:10223000882309F4C1C0823859F40E94EE0F81FD51 +:10224000BBC089E30E94C11A0E948B1B89E30CC0AA +:10225000833879F40E94EE0F80FDAEC083E50E94C2 +:10226000C11A0E948B1B83E50E94011BCF910C9425 +:102270008B1B843859F40E94EE0F82FD9DC087E4C9 +:102280000E94C11A0E948B1B87E4EECF8CEF8C0F4B +:10229000813A48F48C2F0E942F2281118DC08C2FFF +:1022A0000E94C11AE3CF80E28C0F883048F4C770D7 +:1022B00081E001C0880FCA95EAF70E94421BD6CF81 +:1022C0008BE58C0F833078F4C53A29F0C63A31F4A7 +:1022D00082E890E005C081E890E002C083E890E0E9 +:1022E000CF910C94101088E58C0F833108F064C0F6 +:1022F000C83A39F1C93A41F1CA3A49F1CB3A51F1F8 +:10230000CC3A59F1CD3A61F1C03B69F1CE3A71F165 +:10231000CF3A79F1C13B81F1C23B89F1C33B91F1E5 +:10232000C43B99F1C53BA1F1C63BA9F1C73BB1F153 +:10233000C83BB9F1C93BC1F1CA3BC9F58AE292E099 +:1023400038C082EE90E035C089EE90E032C08AEE6F +:1023500090E02FC085EB90E02CC086EB90E029C088 +:1023600087EB90E026C08CEC90E023C08DEC90E0F1 +:1023700020C083E891E01DC08AE891E01AC082E99C +:1023800091E017C084E991E014C081E292E011C0AD +:1023900083E292E00EC084E292E00BC085E292E01C +:1023A00008C086E292E005C087E292E002C080E0C9 +:1023B00090E0CF910C942610CF910895882309F4D2 +:1023C0004BC0823859F40E94EE0F81FF45C089E36B +:1023D0000E94C11A0E948B1B89E30CC0833871F4E0 +:1023E0000E94EE0F80FF38C083E50E94C11A0E9450 +:1023F0008B1B83E50E94011B0C948B1B843859F4C2 +:102400000E94EE0F82FF28C087E40E94C11A0E943A +:102410008B1B87E4EFCF9CEF980F913A58F390E233 +:10242000980F983050F4877091E001C0990F8A9509 +:10243000EAF7892F0E94481BDFCF9BE5980F933066 +:1024400020F480E090E00C941010885A833120F43E +:1024500080E090E00C9426100895882321F00E94DB +:10246000421B0C948B1B0895882321F00E94481B6B +:102470000C948B1B0895CF92DF92EF92FF920F93F3 +:102480001F93CF93DF93CDB7DEB728970FB6F8949D +:10249000DEBF0FBECDBF8C0185E0F801DE011196D5 +:1024A00001900D928A95E1F7F80140813181F28027 +:1024B000258122952F7083819481892B31F03F3FB4 +:1024C00031F481E04F3F19F403C081E001C080E0A6 +:1024D00080FDCBC249833A8389819A812F830E94F0 +:1024E0007F1A9E8388870E947E1A0E9451192F812D +:1024F0004E816885FF2029F00E945F1B68854E8110 +:102500002F81E42FE295EF70F0E0E05AFF4F0C943A +:102510006124842F807F142F1F70882311F012955F +:10252000107FFF2059F0112309F454C2812F6887CE +:102530000E94521B0E948B1B68854CC2862F0E94F2 +:10254000DE11112309F491C2812F0E94581B289695 +:102550000FB6F894DEBF0FBECDBFDF91CF911F91B4 +:102560000F91FF90EF90DF90CF900C948B1B342F46 +:10257000307F842F8F70303211F08295807F6623F8 +:1025800019F0613019F12BC0FF20B1F0222309F4BA +:1025900093C1213009F090C128960FB6F894DEBFA0 +:1025A0000FBECDBFDF91CF911F910F91FF90EF90A4 +:1025B000DF90CF900C94721B222319F0213009F484 +:1025C00054C28E830E94751B8E8189C1FF2021F029 +:1025D000223008F04AC270C1211147C280C1FF20D9 +:1025E00021F0222309F468C1F5C1222309F477C13F +:1025F00005C2242F26952695237030E0211531053C +:1026000021F021303105C9F030C2FF2021F0862FA2 +:10261000942F937002C080E090E028960FB6F89453 +:10262000DEBF0FBECDBFDF91CF911F910F91FF9005 +:10263000EF90DF90CF900C941010FF2021F0862FA8 +:10264000942F937002C080E090E028960FB6F89423 :10265000DEBF0FBECDBFDF91CF911F910F91FF90D5 -:10266000EF90DF90CF900C94570F222309F4B1CF55 -:10267000862F28960FB6F894DEBF0FBECDBFDF9130 -:10268000CF911F910F91FF90EF90DF90CF900C941E -:102690001F104F70C8010E94AB0228960FB6F89425 -:1026A000DEBF0FBECDBFDF91CF911F910F91FF9085 -:1026B000EF90DF90CF900C9409174F70C8012896C7 -:1026C0000FB6F894DEBF0FBECDBFDF91CF911F9143 -:1026D0000F91FF90EF90DF90CF900C94D605289645 -:1026E0000FB6F894DEBF0FBECDBFDF91CF911F9123 -:1026F0000F91FF90EF90DF90CF9008950E9497196F -:102700000E946C190E94B3190E94BA1E0E940E1EEC -:1027100080E090E00E94510E80E090E00C94670E03 -:102720000E9487190C947E130E94B718292F2295B6 -:102730002F7030E02C3031054CF42A3031056CF428 -:10274000225031092230310590F407C02C30310578 -:1027500051F02F30310539F00AC0803E10F0803F33 -:1027600031F481E0089593FB882780F9089580E093 -:102770000895CF93DF9300D000D01F92CDB7DEB77E -:102780000F900F900F900F900F90DF91CF910895C1 -:10279000CF93DF9300D000D000D0CDB7DEB7269620 -:1027A0000FB6F894DEBF0FBECDBFDF91CF91089575 -:1027B0001F93CF93DF93C091790116E080917A0146 -:1027C000C81799F0D0E01C9FF0011D9FF00D112457 -:1027D000E558FE4F408151816281738184819581EA -:1027E0000E94C8132196C770E9CFDF91CF911F9146 -:1027F00008954091AB015091AC016091AD01709191 -:10280000AE018091AF019091B0010C94C813CF93A9 -:102810008091B00182958F7009F05FC08091AD0109 -:10282000882309F45AC020917901A0917A0160911E -:10283000AB017091AC018091AE019091AF0131E09C -:102840006F3F09F030E0B32FC6E02A1709F445C006 -:10285000009721F07F3F21F44B2F03C041E001C0DE -:1028600040E030E040FD35C0C29FF001C39FF00D55 -:102870001124E558FE4F418174132BC0408164132D -:1028800028C04281411125C043815481481759070E -:1028900010F441505109481B590B483C5105C8F4EC -:1028A0008091B0018F7080618093B00186E0829F3B -:1028B000F001839FF00D1124E058FE4F80818F704E -:1028C000806180838BEA91E00E947C10CF910C9410 -:1028D000D8132F5F3F4F2770B8CFCF910895CF9275 -:1028E000DF92EF92FF920F931F93CF93DF93CDB7B9 -:1028F000DEB762970FB6F894DEBF0FBECDBF8C0176 -:1029000085E0F801DE011D9601900D928A95E1F7B0 -:10291000D8014C9111965C91119712966C91129777 -:102920001396ED90FC9014977091AB01E091AC017F -:102930002091AE013091AF012115310531F0EF3F0B -:1029400031F481E07F3F19F403C081E001C080E0F1 -:10295000B82FB170CB2E80FD6CC1D090AD01DD20C1 -:1029600009F4F5C0F091B001E216F30638F0C701A2 -:10297000821B930B883C910548F09BC020953095B5 -:102980002E0D3F1D283C310508F093C08F2F807F0E -:1029900009F052C0E51314C0741312C0D62E611191 -:1029A0000FC0FF70F061F093B0010E94F9138BEA41 -:1029B00091E00E947C108091B001F80185836CC188 -:1029C000EF2831F05F3F31F481E04F3F19F403C04D -:1029D00081E001C080E080FD03C081E0862701C066 -:1029E00080E0F82FF170FF2E80FF1CC080917901EC -:1029F00020917A0136E0821709F428C190E0389FCF -:102A0000F001399FF00D1124E558FE4F71815713E5 -:102A100006C07081471303C07281671303C001961B -:102A20008770E9CFD62E662309F436C18091B001B4 -:102A300081608093B00153C0E51308C0741306C0D1 -:102A4000611104C0D8011596FC93AEC04D875E8716 -:102A50008D859E856A8B0E9494136A89882329F14B -:102A6000D62E662311F12091B001822F82958F70AE -:102A700090E002970CF460C08091AB019091AC01A2 -:102A800098878F831986FB86EA862C87CE01079666 -:102A900051C0E51731F14D875E878D859E856A8B24 -:102AA0000E9494136A8981112EC0C8010E947C1073 -:102AB000A4C08F2F807F69F77E2DF98AE88A8989E3 -:102AC0000E94B9138BEA91E00E947C10EBEAF1E0DE -:102AD00086E0DF011D928A95E9F70E94F913D12C57 -:102AE000DBC07413D8CF6111D6CFD8011596FC93F3 -:102AF000C8010E947C10EBEAF1E086E0DF011D9244 -:102B00008A95E9F7C9C0D62E662379F22091B001E3 -:102B1000822F82958F7090E0029774F08091AB01C4 -:102B20009091AC019A8389831B82FD82EC822E8373 -:102B3000CE0101960E947C1086E0F801ABEAB1E07C -:102B400001900D928A95E1F70E9407146FC0E2167A -:102B5000F30628F0C701821B930B9C0104C020954B -:102B600030952E0D3F1D283C310508F052C0D62E61 -:102B7000662309F49ACFE5132CC074132AC0809100 -:102B8000B00180FD1DC0982F92959F70C9F0D801AB -:102B900015968C9315979F3039F09F5F9295907F93 -:102BA0008F70892B15968C93C8010E947C1086E04B -:102BB000F801ABEAB1E001900D928A95E1F736C0D9 -:102BC00086E0F801ABEAB1E001900D928A95E1F759 -:102BD00063C04D875E878D859E850E9494138823F0 -:102BE00079F086E0F801ABEAB1E001900D928A95A8 -:102BF000E1F70E9407140E94F913DD24D3944CC01E -:102C00008091B00181608093B001C8010E947C1066 -:102C100043C07E2DF98AE88A89890E94B913EBEABC -:102C2000F1E086E0DF011D928A95E9F70E94F91331 -:102C300033C0662309F439CF4D875E878D859E8525 -:102C40000E949413882309F430CFCBCF4D875E8741 -:102C50008D859E850E94B718292F22952F7030E010 -:102C6000223031052CF49F7041F0811106C00CC058 -:102C7000243031052CF49F7049F4805E883020F0B8 -:102C8000C8010E947C10CF2CDC2C06C0D801159600 -:102C90009C91907F91F7F8CF8D2D62960FB6F894A6 -:102CA000DEBF0FBECDBFDF91CF911F910F91FF907F -:102CB000EF90DF90CF9008951F93CF93DF93CDB720 -:102CC000DEB72C970FB6F894DEBF0FBECDBF4F8393 -:102CD000588769877A878B879C87CE0107960E94E1 -:102CE0006F148823C1F02F8138858A859B85892BB5 -:102CF00031F03F3F11F080E003C02F3FE1F781E06A -:102D0000811147C04F81588569857A858B859C855F -:102D10000E94C8133EC086E0FE013796DE01119680 -:102D200001900D928A95E1F7FF81E8854A855B85E0 -:102D30004115510531F0EF3F31F481E0FF3F19F4C7 -:102D400003C081E001C080E080FD23C020917A01B2 -:102D500030E0C9010196877099276091790170E090 -:102D600086179707F1F1F983EA835D834C8396E038 -:102D7000929FD001939FB00D1124A558BE4FFE0124 -:102D8000319601900D929A95E1F780937A010E9415 -:102D9000D81316E08091790190917A01891779F121 -:102DA000189FC001112485589E4F0E946F148823DC -:102DB00031F1E09179011E9FF0011124E558FE4F99 -:102DC0004081518162817381848195810E94C81301 -:102DD0008091790190E0019687709927809379011D -:102DE000D9CF0E94901310927A0110927901EBEAE8 -:102DF000F1E086E0DF011D928A95E9F7CACF2C96B3 -:102E00000FB6F894DEBF0FBECDBFDF91CF911F91FB -:102E10000895EF92FF920F931F93CF93DF93FC01DE -:102E2000009709F46FC0F12CEE24E394EF01219692 -:102E30008491843740F4843008F055C0813081F0AB -:102E4000823021F15FC0853709F447C0C0F19CE7AB -:102E5000980F903708F056C08F770E941F1045C01A -:102E60008F010E5F1F4FFE01849190E2980F983002 -:102E700050F48770FE2D01C0FF0F8A95EAF78F2F5F -:102E80000E948A1915C00E94570F14C08F010E5F4F -:102E90001F4FFE01849190E2980F983068F487707C -:102EA000FE2D01C0FF0F8A95EAF78F2F0E9490191F -:102EB0000E94B319E80119C00E941F10FBCFCF0177 -:102EC0000296FE01C491CC2361F0EFE9FFE0319757 -:102ED000F1F700C00000C150F6CFCF010296FE010D -:102EE000F490EC0102C00E94570F8F2D882341F00F -:102EF000EFE9FFE03197F1F700C000008150F6CF15 -:102F0000FE0194CFDF91CF911F910F91FF90EF9031 -:102F1000089508956093B5017093B6018093B70149 -:102F20009093B8010C947E130F931F930091B501F9 -:102F30001091B6012091B7013091B801062B172BE3 -:102F4000282B392B0093B5011093B6012093B701BC -:102F50003093B8011F910F910C947E130F931F9320 -:102F60000091B5011091B6012091B7013091B801DF -:102F700006231723282339230093B5011093B601A4 -:102F80002093B7013093B8011F910F910C947E13D9 -:102F90000F931F930091B5011091B6012091B701D5 -:102FA0003091B80106271727282739270093B50144 -:102FB0001093B6012093B7013093B8011F910F9180 -:102FC0000C947E131092B1011092B2011092B301D1 -:102FD0001092B4010C947E1341E050E060E070E088 -:102FE00004C0440F551F661F771F8A95D2F7409380 -:102FF000B1015093B2016093B3017093B4010C948A -:103000007E1341E050E060E070E004C0440F551FC3 -:10301000661F771F8A95D2F78091B1019091B20116 -:10302000A091B301B091B401842B952BA62BB72BA3 -:103030008093B1019093B201A093B301B093B40116 -:103040000C947E1341E050E060E070E004C0440F57 -:10305000551F661F771F8A95D2F74095509560954A -:1030600070958091B1019091B201A091B301B0919E -:10307000B40184239523A623B7238093B1019093B1 -:10308000B201A093B301B093B4010C947E1341E05C -:1030900050E060E070E004C0440F551F661F771FCA -:1030A0008A95D2F78091B1019091B201A091B301BC -:1030B000B091B40184279527A627B7278093B10143 -:1030C0009093B201A093B301B093B4010C947E131A -:1030D0000F931F930091B1011091B2012091B301A0 -:1030E0003091B401062B172B282B392B0093B101FB -:1030F0001093B2012093B3013093B4011F910F914B -:103100000C947E130F931F930091B1011091B201A3 -:103110002091B3013091B4010623172328233923CA -:103120000093B1011093B2012093B3013093B40125 -:103130001F910F910C947E130F931F930091B10177 -:103140001091B2012091B3013091B40106271727E5 -:10315000282739270093B1011093B2012093B301BE -:103160003093B4011F910F910C947E130895CF9268 -:10317000DF92EF92FF920F931F93CF93DF93EC01B7 -:10318000C090B501D090B601E090B701F090B801C1 -:103190008091B1019091B201A091B301B091B401BD -:1031A000C82AD92AEA2AFB2A0FE110E0B701A601B2 -:1031B000002E04C076956795579547950A94D2F7E7 -:1031C00040FF07C0BE01802F0E94F90581309105A4 -:1031D00039F40150110950F7BE0180E00E94F90551 -:1031E000DF91CF911F910F91FF90EF90DF90CF90E3 -:1031F000089590910C019923D9F090910D01992394 -:10320000B9F0982F9695969596959F3088F5E09110 -:103210000E01F0910F01E90FF11D877021E030E000 -:1032200001C0220F8A95EAF78181822B818308955C -:1032300040910E0150910F0120E030E09FEFFA0124 -:10324000E20FF31F6281681799F09F3F19F4611133 -:1032500001C0922F2F5F3F4F2E30310581F79F3FE6 -:1032600039F0FA01E90FF11D97FDFA95828308956F -:10327000089590910C019923E1F090910D0199230B -:10328000C1F0982F9695969596959F3020F5E091F0 -:103290000E01F0910F01E90FF11D877021E030E080 -:1032A00001C0220F8A95EAF7209581812823218386 -:1032B000089540910E0150910F0120E030E0FA0195 -:1032C000E20FF31F9281981301C012822F5F3F4FCC -:1032D0002E303105A1F7089581E090E0E0910E01D4 -:1032E000F0910F01E80FF91F1082019680319105CE -:1032F000A9F708959091CB01982B9093CB01089555 -:1033000080959091CB0198239093CB0108951092D2 -:10331000CB0108959091CA01982B9093CA0108950A -:1033200080959091CA0198239093CA0108951092B4 -:10333000CA0108958093B90108951092B9010895C2 -:1033400040910E0150910F0120E030E080E0FA0141 -:10335000E20FF31F918191118F5F2F5F3F4F2F304D -:103360003105A9F70895E0910E01F0910F018091C8 -:10337000CB018083E0910E01F0910F01808190914B -:10338000CA01892B80839091B901992361F0E09162 -:103390000E01F0910F018081892B80830E94A0197A -:1033A00081111092B90180910E0190910F010C943E -:1033B0003B0ECF92DF92EF92FF920F931F936C011F -:1033C000EE24FF24C114D104E104F10421F46B01C3 -:1033D0007C0180E001C080E133272F2D1E2D0D2DB3 -:1033E000011511052105310519F0885F6801790182 -:1033F00097018601A4E03695279517950795AA951C -:10340000D1F7011511052105310519F08C5F68010F -:10341000790197018601F2E0369527951795079572 -:10342000FA95D1F7011511052105310519F08E5FC7 -:1034300068017901B701A60176956795579547957B -:10344000452B462B472B09F08F5F1F910F91FF9063 -:10345000EF90DF90CF9008958091E501843009F1DD -:103460001092CD0120E488E190E00FB6F894A89581 -:10347000809360000FBE2093600083B7817F8460DB -:1034800083BF83B7816083BF7894889583B78E7F2D -:1034900083BF88E10FB6F8948093600010926000BB -:1034A0000FBE089508950895CF930E94521A0E9466 -:1034B00023040E94531AC0E08C2F0E941005811132 -:1034C00005C0CF5FCE30C1F780E001C081E0CF9171 -:1034D00008950E9490130E942F0E0C94340782E0EE -:1034E00084BD93E095BD9AEF97BD80936E000895DB -:1034F0002FB7F8948091CE019091CF01A091D00187 -:10350000B091D1012FBF0895CF92DF92EF92FF9239 -:103510000F931F932FB7F8944091CE015091CF0194 -:103520006091D0017091D1012FBF6A017B01EE241F -:10353000FF248C0120E030E0C016D106E206F3063D -:1035400010F441505109481B590BCA011F910F91AA -:10355000FF90EF90DF90CF9008951F920F920FB6DB -:103560000F9211248F939F93AF93BF938091CE01BD -:103570009091CF01A091D001B091D1010196A11DF0 -:10358000B11D8093CE019093CF01A093D001B09351 -:10359000D101BF91AF919F918F910F900FBE0F906E -:1035A0001F9018950E94350BF8942FEF87EA91E64B -:1035B000215080409040E1F700C0000087E090EB90 -:1035C000DC018093EE019093EF01A093F001B093A2 -:1035D000F1012CE088E190E00FB6F894A895809373 -:1035E00060000FBE20936000FFCFEF92FF920F9319 -:1035F0001F93CF93DF93E82EF12C8F2D0E9410059F -:10360000C0E0D0E0082F10E098010C2E02C03595E4 -:1036100027950A94E2F720FD05C02196C630D10512 -:1036200099F709C06C2F7F2D80E00E94D705E81222 -:10363000F4CF81E005C0F3948EE0F812DECF80E095 -:10364000DF91CF911F910F91FF90EF900895CF934D -:10365000C82F8CE20E94F51A882321F08C2FCF917D -:103660000C94F51A80E0CF910895CF930E947A1CB4 -:10367000811102C00E94601CC5E6C15049F00E9441 -:1036800023048FE39CE90197F1F700C00000F5CF18 -:1036900089E20E94271B811111C18AE20E94271B27 -:1036A00081110E94601C85E00E94271B81110E94ED -:1036B000D21A0E94851C8093CC0187E00E94271BB0 -:1036C000882399F18BE10E94271B882351F0909168 -:1036D000CC0191FB882780F921E0822780FB91F9BA -:1036E00022C08EE00E94271B882351F09091CC01CC -:1036F00092FB882780F921E0822780FB92F913C092 -:1037000080E10E94271B9091CC01882341F093FB1C -:10371000882780F921E0822780FB93F904C0892F54 -:10372000809580FB90F99093CC018091CC010E9410 -:10373000891C0E94971C8093DF0180EE0E94271B4A -:10374000882341F08091DF01982F909590FB80F9BC -:103750008093DF0189E30E94271B882359F0909111 -:10376000DF0191FB882780F921E0822780FB91F916 -:103770009093DF0182EE0E94271B882359F09091DD -:10378000DF0192FB882780F921E0822780FB92F9F4 -:103790009093DF0186EE0E94271B882359F09091B9 -:1037A000DF0193FB882780F921E0822780FB93F9D2 -:1037B0009093DF0183EE0E94271B882359F090919C -:1037C000DF0194FB882780F921E0822780FB94F9B0 -:1037D0009093DF0185E30E94271B882359F0909185 -:1037E000DF0195FB882780F921E0822780FB95F98E -:1037F0009093DF0181E30E94271B882359F0909169 -:10380000DF0196FB882780F921E0822780FB96F96B -:103810009093DF0181E10E94271B882359F090914A -:10382000DF0197FB882780F921E0822780FB97F949 -:103830009093DF018091DF010E949B1C8091DF014A -:1038400087FB882780F980930D0187E20E94271B60 -:10385000C82F8EE10E94271B8111C2608FE10E9458 -:10386000271B8111C46080E20E94271B8111C86060 -:1038700081E20E94271B8111C06182E20E94271B06 -:103880008111C06283E20E94271B8111C06484E21F -:103890000E94271B882311F0C06802C0CC2329F0A6 -:1038A0008C2F0E94921C6C2F03C00E948E1C682FCC -:1038B00070E080E090E0CF910C948A17CF9108954A -:1038C0006DEE7EEF80E090E00E94B62260E082E044 -:1038D00090E00E94A82260E083E090E00E94A8228D -:1038E00060E084E090E00E94A82260E085E090E043 -:1038F0000C94A82280E090E00E94A22221E08D3E5C -:103900009E4F09F020E0822F089582E090E00C9411 -:103910009A22682F82E090E00C94A82283E090E045 -:103920000C949A22682F83E090E00C94A82284E003 -:1039300090E00C949A22682F84E090E00C94A822E6 -:103940008091D40180FF0BC06091130185E0689FD6 -:10395000B001112475956795759567952AC081FF0B -:1039600009C06091130185E0689FB001112475952D -:1039700067951FC082FF07C06091130185E0689FB3 -:10398000B001112416C04091D5014423C9F06091C3 -:103990001201461788F72091130185E0289F9001B6 -:1039A0001124429FC001439F900D112470E00E949A -:1039B0006C226038710540F46115710539F002C060 -:1039C00065E070E0862F08958FE7089581E00895FF -:1039D0008091D40180FF08C06091110170E075955D -:1039E00067957595679521C081FF06C060911101AB -:1039F00070E07595679519C082FF04C06091110150 -:103A000070E010C08091D5018823C1F06091100151 -:103A10008617A0F790911101989FC001112470E0C2 -:103A20000E946C226038710528F46115710521F03F -:103A3000862F08958FE7089581E0089561E070E092 -:103A4000F4CF803F21F40E94A01C819504C0813FE7 -:103A500029F40E94A01C8093D8010895823F21F48C -:103A60000E94A01C819504C0833F29F40E94A01CE1 -:103A70008093D7010895893F19F40E94E81C05C07E -:103A80008A3F31F40E94E81C81958093D901089502 -:103A90008B3F21F40E94E81C819504C08C3F29F4DF -:103AA0000E94E81C8093DA010895843F21F48091FC -:103AB000D601816017C0853F21F48091D6018260D4 -:103AC00011C0863F21F48091D60184600BC0873FEE -:103AD00021F48091D601886005C0883F31F480913F -:103AE000D60180618093D60108958D3F21F48091A5 -:103AF000D40181600BC08E3F21F48091D40182609B -:103B000005C08F3F29F48091D40184608093D40153 -:103B10000895803F39F48091D80187FF6CC01092DE -:103B2000D80169C0813F29F48091D8011816BCF3EF -:103B300062C09091D701823F29F497FF5CC0109238 -:103B4000D70159C0833F19F41916CCF354C0893FEB -:103B500041F48091D90118160CF04DC01092D90192 -:103B60004AC08A3F29F48091D90187FF44C0F6CF2B -:103B70008B3F39F48091DA0187FF3DC01092DA0162 -:103B80003AC08C3F29F48091DA011816BCF333C097 -:103B9000843F21F48091D6018E7F17C0853F21F4A8 -:103BA0008091D6018D7F11C0863F21F48091D6018E -:103BB0008B7F0BC0873F21F48091D601877F05C0A2 -:103BC000883F31F48091D6018F7E8093D60113C057 -:103BD0008D3F21F48091D4018E7F0BC08E3F21F464 -:103BE0008091D4018D7F05C08F3F29F48091D4014D -:103BF0008B7F8093D4018091D70181110EC0809179 -:103C0000D80181110AC08091D901811106C080912B -:103C1000DA01811102C01092D501089586ED91E07C -:103C20000E94460E0E94781A9093D3018093D2018D -:103C300008951F93CF93DF938091D2019091D30188 -:103C40000E94841A4091D501442321F0209114014F -:103C500030E006C0209115015AE0259F9001112403 -:103C60008217930708F482C08091D7011091D80180 -:103C7000D091D901C091DA01811107C0111105C09D -:103C8000D11103C0CC2309F471C04F3F19F04F5F2D -:103C90004093D501181624F40E94A01C8093D701EC -:103CA0008091D70187FF05C00E94A01C8195809359 -:103CB000D701111624F40E94A01C8093D801809192 -:103CC000D80187FF05C00E94A01C81958093D80170 -:103CD0006091D701662339F11091D801112319F1B0 -:103CE000772767FD7095872F972F0E947D2123E30B -:103CF00033E343E35FE30E94E1210E944A216093A2 -:103D0000D701612F772767FD7095872F972F0E9426 -:103D10007D2123E333E343E35FE30E94E1210E943B -:103D20004A216093D8011D1624F40E94E81C809358 -:103D3000D9018091D90187FF05C00E94E81C8195B7 -:103D40008093D9011C1624F40E94E81C8093DA01A8 -:103D50008091DA0187FF05C00E94E81C819580935D -:103D6000DA01DF91CF911F910C940E1EDF91CF915C -:103D70001F910895E6EDF1E085E0DF011D928A953F -:103D8000E9F71092D5011092D4010895833081F1A2 -:103D900028F4813059F08230D1F00895853009F44B -:103DA00049C0B8F1863009F456C008952091150134 -:103DB000862F90E0820F911D8F3F910520F4620FB6 -:103DC0006093150108958FEF809315010895209158 -:103DD0001401862F90E0820F911D8F3F910520F4F2 -:103DE000620F6093140108958FEF8093140108957A -:103DF00020911301862F90E0820F911D8F3F910536 -:103E000020F4620F6093130108958FEF80931301E4 -:103E1000089520911201862F90E0820F911D8F3F0F -:103E2000910520F4620F6093120108958FEF809343 -:103E30001201089520911101862F90E0820F911DAB -:103E40008F3F910520F4620F6093110108958FEF69 -:103E500080931101089520911001862F90E0820F28 -:103E6000911D8F3F910520F4620F6093100108951A -:103E70008FEF809310010895833011F128F4813081 -:103E800049F0823091F00895853081F120F186303B -:103E9000C1F1089580911501681720F4861B809365 -:103EA0001501089510921501089580911401681765 -:103EB00020F4861B80931401089510921401089534 -:103EC00080911301681720F4861B809313010895D5 -:103ED00010921301089580911201681720F4861B37 -:103EE000809312010895109212010895809111019A -:103EF000681720F4861B8093110108951092110118 -:103F0000089580911001681720F4861B809310019A -:103F100008951092100108958D3109F442C020F5E2 -:103F20008E3009F479C070F4873009F45EC020F453 -:103F3000863009F442C033C08830D1F18B3009F4A7 -:103F4000A7C02DC0863109F4A3C038F4803109F42C -:103F50006DC0813109F47BC022C0893109F498C059 -:103F60008B3109F44FC01BC0853309F479C048F484 -:103F7000873209F475C008F478C0893209F470C03A -:103F80000EC0833438F48A3308F071C0883309F4E2 -:103F90007FC005C0833409F463C08834C1F080E079 -:103FA00008950E9404210E942F0E0E94340770C0C1 -:103FB0000E94851C0E94971C6BC08091CC01817F60 -:103FC0008E7F8093CC0181E08093DC0108950E9474 -:103FD00090132FEF83ED90E3215080409040E1F764 -:103FE00000C000000E94D21A53C09091CC01892FCA -:103FF000817090FF03C0917F9E7F26C09160909357 -:10400000CC0146C09091CC0191FB882780F921E03A -:10401000822780FB91F913C09091CC0192FB8827F5 -:1040200080F921E0822780FB92F909C09091CC01B0 -:1040300093FB882780F921E0822780FB93F99093F6 -:10404000CC01882329F191609093CC0108950E94BE -:10405000901380910D0191E0892780930D0118C084 -:1040600061E070E080E090E00FC023EE01C027EC3B -:10407000280F61E070E080E090E004C0660F771FD9 -:10408000881F991F2A95D2F70E948A170E949013C1 -:1040900081E0089580E0089580E00895CF93C82FCF -:1040A0008091DC01813079F018F08230D1F184C048 -:1040B000A0910E01B0910F018C91813169F0823293 -:1040C00009F07CC009C0A0910E01B0910F018C9144 -:1040D000813111F0823249F48C2F0E944A208111E3 -:1040E0001DC08C2F0E948C1F1AC08C2F0E944C2048 -:1040F000811114C0C43179F048F4CB3079F0C0316B -:1041000009F060C082E08093DC0108C0C93219F078 -:10411000C83321F057C01092DC0154C081E0817097 -:1041200053C0C93289F118F5C43171F1A8F4C73010 -:1041300009F046C08AE08093150194E19093140140 -:1041400093E0909313018093120188E08093110112 -:1041500088E28093100134C0CE51C63088F5EC2F30 -:10416000F0E0E65DFE4F80818093DB0129C0CE3414 -:10417000E9F020F4CB3421F56AE013C0C13579F0C1 -:10418000C235F1F461E00DC08091DB01882319F0A4 -:104190001092DB0115C081E08093DC0115C061E065 -:1041A00006C08091DB010E94C61E0AC06AE08091B1 -:1041B000DB010E943C1F04C01092DC0180E004C0BF -:1041C00081E002C080E0ABCFCF910895E1E8F0E05C -:1041D0008081886080838081816080838FB7F8943C -:1041E00093E09093890090ED909388008FBF08959D -:1041F000EFE6F0E08081826080830895EFE6F0E0F2 -:1042000080818D7F80830895EFE6F0E0808192E0E9 -:104210008927808308951F920F920FB60F92112461 -:104220002F933F934F935F936F937F938F939F93BE -:10423000AF93BF93EF93FF938091DD019091DE01E7 -:1042400001969093DE018093DD01811103C082E02D -:104250000E943407E091DE01E695E695F0E0E6572E -:10426000FB4FE4918091DD018E1303C080E00E943A -:104270003407FF91EF91BF91AF919F918F917F9103 -:104280006F915F914F913F912F910F900FBE0F90C3 -:104290001F90189504D06894B1118DC0089570D006 -:1042A00088F09F5790F0B92F9927B751A0F0D1F01F -:1042B000660F771F881F991F1AF0BA95C9F712C0A9 -:1042C000B13081F077D0B1E0089574C0672F782FB6 -:1042D0008827B85F39F0B93FCCF386957795679515 -:1042E000B395D9F73EF490958095709561957F4F81 -:1042F0008F4F9F4F0895E89409C097FB3EF4909527 -:104300008095709561957F4F8F4F9F4F9923A9F0AE -:10431000F92F96E9BB279395F6958795779567953D -:10432000B795F111F8CFFAF4BB0F11F460FF1BC081 -:104330006F5F7F4F8F4F9F4F16C0882311F096E914 -:1043400011C0772321F09EE8872F762F05C06623C2 -:1043500071F096E8862F70E060E02AF09A95660F7B -:10436000771F881FDAF7880F9695879597F9089534 -:1043700057FD9058440F551F59F05F3F71F0479516 -:10438000880F97FB991F61F09F3F79F087950895FB -:10439000121613061406551FF2CF4695F1DF08C01A -:1043A000161617061806991FF1CF86957105610537 -:1043B00008940895E894BB2766277727CB0197F9DF -:1043C00008950BD078C069D028F06ED018F09523EE -:1043D00009F05AC05FC01124EECFCADFA0F3959F49 -:1043E000D1F3950F50E0551F629FF001729FBB27DC -:1043F000F00DB11D639FAA27F00DB11DAA1F649F88 -:104400006627B00DA11D661F829F2227B00DA11D3A -:10441000621F739FB00DA11D621F839FA00D611DC0 -:10442000221F749F3327A00D611D231F849F600DE1 -:10443000211D822F762F6A2F11249F5750408AF01A -:10444000E1F088234AF0EE0FFF1FBB1F661F771FA6 -:10445000881F91505040A9F79E3F510570F014C03D -:10446000AACF5F3FECF3983EDCF38695779567958E -:10447000B795F795E7959F5FC1F7FE2B880F911DC4 -:104480009695879597F9089597F99F6780E870E06A -:1044900060E008959FEF80EC089500240A941616BA -:1044A000170618060906089500240A941216130622 -:1044B000140605060895092E0394000C11F48823B0 -:1044C00052F0BB0F40F4BF2B11F460FF04C06F5FCC -:1044D0007F4F8F4F9F4F089597FB072E16F4009440 -:1044E00007D077FD09D00E94862207FC05D03EF454 -:1044F000909581959F4F0895709561957F4F089590 -:10450000EE0FFF1F0590F491E02D0994AA1BBB1B31 -:1045100051E107C0AA1FBB1FA617B70710F0A61BC3 -:10452000B70B881F991F5A95A9F780959095BC01E4 -:10453000CD010895F999FECF92BD81BDF89A9927D2 -:1045400080B50895A8E1B0E042E050E00C94BD22AF -:10455000262FF999FECF1FBA92BD81BD20BD0FB69F -:10456000F894FA9AF99A0FBE019608950E94A8222B -:10457000272F0C94A922DC01CB01FC01F999FECF75 -:1045800006C0F2BDE1BDF89A319600B40D924150DB -:0A4590005040B8F70895F894FFCFEB -:10459A0020023607C307A0076C0739070101BA01D1 -:1045AA0028080A03140A3F4D36394B04FE03C80390 -:1045BA008F0322033B0354036D0301020304050620 -:0445CA0007080900D5 +:10266000EF90DF90CF900C942610862FFF2019F06A +:102670000E94021F02C00E946A1F28960FB6F8949B +:10268000DEBF0FBECDBFDF91CF911F910F91FF90A5 +:10269000EF90DF90CF900C94EF1F842F837009F0A0 +:1026A00076C0F110E2C1262F229526952770220FC1 +:1026B000220F862F8F70C82ED12CE12CF12C022EE8 +:1026C00004C0CC0CDD1CEE1CFF1C0A94D2F764FF86 +:1026D00010C06FE070E080E090E004C0660F771FEC +:1026E000881F991F2A95D2F76095709580959095CF +:1026F00003C060E070E0CB01242F2695269523705F +:10270000422F50E042305105D1F04330510559F18C +:102710006C297D298E299F294130510541F1289648 +:102720000FB6F894DEBF0FBECDBFDF91CF911F91E2 +:102730000F91FF90EF90DF90CF900C9476196C2959 +:102740007D298E299F2928960FB6F894DEBF0FBEEB +:10275000CDBFDF91CF911F910F91FF90EF90DF9050 +:10276000CF900C9490190E947619C701B601289653 +:102770000FB6F894DEBF0FBECDBFDF91CF911F9192 +:102780000F91FF90EF90DF90CF900C945C19FF2099 +:1027900019F0842F817001C08695882309F465C1E2 +:1027A000262F229526952770220F220F862F8F70B5 +:1027B000C82ED12CE12CF12C022E04C0CC0CDD1C37 +:1027C000EE1CFF1C0A94D2F764FF10C06FE070E0AB +:1027D00080E090E004C0660F771F881F991F2A953C +:1027E000D2F7609570958095909503C060E070E099 +:1027F000CB01242F269526952370422F50E042309E +:102800005105D1F04330510559F16C297D298E29AC +:102810009F294130510541F128960FB6F894DEBF4B +:102820000FBECDBFDF91CF911F910F91FF90EF9021 +:10283000DF90CF900C944A1A6C297D298E299F290C +:1028400028960FB6F894DEBF0FBECDBFDF91CF91B3 +:102850001F910F91FF90EF90DF90CF900C94641A2E +:102860000E944A1AC701B60128960FB6F894DEBF37 +:102870000FBECDBFDF91CF911F910F91FF90EF90D1 +:10288000DF90CF900C94301A603FC9F118F4603E8D +:1028900050F49BC0623F09F460C008F44AC0633F33 +:1028A00009F46FC092C0162F1F70842F8F71FF2004 +:1028B00099F00E94C919812F28960FB6F894DEBFAF +:1028C0000FBECDBFDF91CF911F910F91FF90EF9081 +:1028D000DF90CF900C942D120E94EA19812F289638 +:1028E0000FB6F894DEBF0FBECDBFDF91CF911F9121 +:1028F0000F91FF90EF90DF90CF900C943412FF2057 +:10290000A1F02111B2C0842F8F7128960FB6F894D0 +:10291000DEBF0FBECDBFDF91CF911F910F91FF9012 +:10292000EF90DF90CF900C940F1A223008F09DC0EA +:10293000EACFFF20A1F0842F8F7128960FB6F8946C +:10294000DEBF0FBECDBFDF91CF911F910F91FF90E2 +:10295000EF90DF90CF900C94C919FF2061F3842F82 +:102960008F7128960FB6F894DEBF0FBECDBFDF91F2 +:10297000CF911F910F91FF90EF90DF90CF900C942B +:10298000EA19FF2091F0842F8F7128960FB6F894E2 +:10299000DEBF0FBECDBFDF91CF911F910F91FF9092 +:1029A000EF90DF90CF900C94B41928960FB6F8945E +:1029B000DEBF0FBECDBFDF91CF911F910F91FF9072 +:1029C000EF90DF90CF900C94AA19FF20A1F0222362 +:1029D00009F4B1CF862F28960FB6F894DEBF0FBE4C +:1029E000CDBFDF91CF911F910F91FF90EF90DF90BE +:1029F000CF900C941611222309F4B1CF862F28967C +:102A00000FB6F894DEBF0FBECDBFDF91CF911F91FF +:102A10000F91FF90EF90DF90CF900C94DE114F70EC +:102A2000C8010E94510428960FB6F894DEBF0FBE6D +:102A3000CDBFDF91CF911F910F91FF90EF90DF906D +:102A4000CF900C94D1184F70C80128960FB6F89407 +:102A5000DEBF0FBECDBFDF91CF911F910F91FF90D1 +:102A6000EF90DF90CF900C94950728960FB6F894CE +:102A7000DEBF0FBECDBFDF91CF911F910F91FF90B1 +:102A8000EF90DF90CF9008950E945F1B0E946F1B14 +:102A90000E94341B0E948B1B0E949B200E94EF1FF0 +:102AA00080E090E00E94101080E090E00C942610EE +:102AB0000E944F1B0C9444150E947F1A292F2295C7 +:102AC0002F7030E02C3031054CF42A3031056CF495 +:102AD000225031092230310590F407C02C303105E5 +:102AE00051F02F30310539F00AC0803E10F0803FA0 +:102AF00031F481E0089593FB882780F9089580E000 +:102B00000895CF93DF9300D000D01F92CDB7DEB7EA +:102B10000F900F900F900F900F90DF91CF9108952D +:102B2000CF93DF9300D000D000D0CDB7DEB726968C +:102B30000FB6F894DEBF0FBECDBFDF91CF910895E1 +:102B40001F93CF93DF93C091790116E080917A01B2 +:102B5000C81799F0D0E01C9FF0011D9FF00D1124C3 +:102B6000E558FE4F40815181628173818481958156 +:102B70000E9490152196C770E9CFDF91CF911F91E8 +:102B800008954091AB015091AC016091AD017091FD +:102B9000AE018091AF019091B0010C949015CF934C +:102BA0008091B00182958F7009F05FC08091AD0176 +:102BB000882309F45AC020917901A0917A0160918B +:102BC000AB017091AC018091AE019091AF0131E009 +:102BD0006F3F09F030E0B32FC6E02A1709F445C073 +:102BE000009721F07F3F21F44B2F03C041E001C04B +:102BF00040E030E040FD35C0C29FF001C39FF00DC2 +:102C00001124E558FE4F418174132BC04081641399 +:102C100028C04281411125C043815481481759077A +:102C200010F441505109481B590B483C5105C8F458 +:102C30008091B0018F7080618093B00186E0829FA7 +:102C4000F001839FF00D1124E058FE4F80818F70BA +:102C5000806180838BEA91E00E943B12CF910C94BB +:102C6000A0152F5F3F4F2770B8CFCF910895CF9217 +:102C7000DF92EF92FF920F931F93CF93DF93CDB725 +:102C8000DEB762970FB6F894DEBF0FBECDBF8C01E2 +:102C900085E0F801DE011D9601900D928A95E1F71D +:102CA000D8014C9111965C91119712966C911297E4 +:102CB0001396ED90FC9014977091AB01E091AC01EC +:102CC0002091AE013091AF012115310531F0EF3F78 +:102CD00031F481E07F3F19F403C081E001C080E05E +:102CE000B82FB170CB2E80FD6CC1D090AD01DD202E +:102CF00009F4F5C0F091B001E216F30638F0C7010F +:102D0000821B930B883C910548F09BC02095309521 +:102D10002E0D3F1D283C310508F093C08F2F807F7A +:102D200009F052C0E51314C0741312C0D62E6111FD +:102D30000FC0FF70F061F093B0010E94C1158BEAE3 +:102D400091E00E943B128091B001F80185836CC133 +:102D5000EF2831F05F3F31F481E04F3F19F403C0B9 +:102D600081E001C080E080FD03C081E0862701C0D2 +:102D700080E0F82FF170FF2E80FF1CC08091790158 +:102D800020917A0136E0821709F428C190E0389F3B +:102D9000F001399FF00D1124E558FE4F7181571352 +:102DA00006C07081471303C07281671303C0019688 +:102DB0008770E9CFD62E662309F436C18091B00121 +:102DC00081608093B00153C0E51308C0741306C03E +:102DD000611104C0D8011596FC93AEC04D875E8783 +:102DE0008D859E856A8B0E945C156A89882329F1EE +:102DF000D62E662311F12091B001822F82958F701B +:102E000090E002970CF460C08091AB019091AC010E +:102E100098878F831986FB86EA862C87CE010796D2 +:102E200051C0E51731F14D875E878D859E856A8B90 +:102E30000E945C156A8981112EC0C8010E943B1254 +:102E4000A4C08F2F807F69F77E2DF98AE88A89894F +:102E50000E9481158BEA91E00E943B12EBEAF1E0BF +:102E600086E0DF011D928A95E9F70E94C115D12CF9 +:102E7000DBC07413D8CF6111D6CFD8011596FC935F +:102E8000C8010E943B12EBEAF1E086E0DF011D92EF +:102E90008A95E9F7C9C0D62E662379F22091B00150 +:102EA000822F82958F7090E0029774F08091AB0131 +:102EB0009091AC019A8389831B82FD82EC822E83E0 +:102EC000CE0101960E943B1286E0F801ABEAB1E028 +:102ED00001900D928A95E1F70E94CF156FC0E2161E +:102EE000F30628F0C701821B930B9C0104C02095B8 +:102EF00030952E0D3F1D283C310508F052C0D62ECE +:102F0000662309F49ACFE5132CC074132AC080916C +:102F1000B00180FD1DC0982F92959F70C9F0D80117 +:102F200015968C9315979F3039F09F5F9295907FFF +:102F30008F70892B15968C93C8010E943B1286E0F6 +:102F4000F801ABEAB1E001900D928A95E1F736C045 +:102F500086E0F801ABEAB1E001900D928A95E1F7C5 +:102F600063C04D875E878D859E850E945C15882392 +:102F700079F086E0F801ABEAB1E001900D928A9514 +:102F8000E1F70E94CF150E94C115DD24D3944CC0F7 +:102F90008091B00181608093B001C8010E943B1212 +:102FA00043C07E2DF98AE88A89890E948115EBEA5F +:102FB000F1E086E0DF011D928A95E9F70E94C115D4 +:102FC00033C0662309F439CF4D875E878D859E8592 +:102FD0000E945C15882309F430CFCBCF4D875E87E4 +:102FE0008D859E850E947F1A292F22952F7030E0B3 +:102FF000223031052CF49F7041F0811106C00CC0C5 +:10300000243031052CF49F7049F4805E883020F024 +:10301000C8010E943B12CF2CDC2C06C0D8011596AB +:103020009C91907F91F7F8CF8D2D62960FB6F89412 +:10303000DEBF0FBECDBFDF91CF911F910F91FF90EB +:10304000EF90DF90CF9008951F93CF93DF93CDB78C +:10305000DEB72C970FB6F894DEBF0FBECDBF4F83FF +:10306000588769877A878B879C87CE0107960E944D +:1030700037168823C1F02F8138858A859B85892B57 +:1030800031F03F3F11F080E003C02F3FE1F781E0D6 +:10309000811147C04F81588569857A858B859C85CC +:1030A0000E9490153EC086E0FE013796DE01119623 +:1030B00001900D928A95E1F7FF81E8854A855B854D +:1030C0004115510531F0EF3F31F481E0FF3F19F434 +:1030D00003C081E001C080E080FD23C020917A011F +:1030E00030E0C9010196877099276091790170E0FD +:1030F00086179707F1F1F983EA835D834C8396E0A5 +:10310000929FD001939FB00D1124A558BE4FFE0190 +:10311000319601900D929A95E1F780937A010E9481 +:10312000A01516E08091790190917A01891779F1C3 +:10313000189FC001112485589E4F0E94371688237E +:1031400031F1E09179011E9FF0011124E558FE4F05 +:103150004081518162817381848195810E949015A3 +:103160008091790190E00196877099278093790189 +:10317000D9CF0E94581510927A0110927901EBEA8A +:10318000F1E086E0DF011D928A95E9F7CACF2C961F +:103190000FB6F894DEBF0FBECDBFDF91CF911F9168 +:1031A0000895EF92FF920F931F93CF93DF93FC014B +:1031B000009709F46FC0F12CEE24E394EF012196FF +:1031C0008491843740F4843008F055C0813081F018 +:1031D000823021F15FC0853709F447C0C0F19CE718 +:1031E000980F903708F056C08F770E94DE1145C0C7 +:1031F0008F010E5F1F4FFE01849190E2980F98306F +:1032000050F48770FE2D01C0FF0F8A95EAF78F2FCB +:103210000E94621B15C00E94161114C08F010E5F20 +:103220001F4FFE01849190E2980F983068F48770E8 +:10323000FE2D01C0FF0F8A95EAF78F2F0E94681BB1 +:103240000E948B1BE80119C00E94DE11FBCFCF0149 +:103250000296FE01C491CC2361F0EFE9FFE03197C3 +:10326000F1F700C00000C150F6CFCF010296FE0179 +:10327000F490EC0102C00E9416118F2D882341F0BA +:10328000EFE9FFE03197F1F700C000008150F6CF81 +:10329000FE0194CFDF91CF911F910F91FF90EF909E +:1032A000089508956093B5017093B6018093B701B6 +:1032B0009093B8010C9444150F931F930091B5019E +:1032C0001091B6012091B7013091B801062B172B50 +:1032D000282B392B0093B5011093B6012093B70129 +:1032E0003093B8011F910F910C9444150F931F93C5 +:1032F0000091B5011091B6012091B7013091B8014C +:1033000006231723282339230093B5011093B60110 +:103310002093B7013093B8011F910F910C9444157D +:103320000F931F930091B5011091B6012091B70141 +:103330003091B80106271727282739270093B501B0 +:103340001093B6012093B7013093B8011F910F91EC +:103350000C9444151092B1011092B2011092B30175 +:103360001092B4010C94441541E050E060E070E02C +:1033700004C0440F551F661F771F8A95D2F74093EC +:10338000B1015093B2016093B3017093B4010C94F6 +:10339000441541E050E060E070E004C0440F551F68 +:1033A000661F771F8A95D2F78091B1019091B20183 +:1033B000A091B301B091B401842B952BA62BB72B10 +:1033C0008093B1019093B201A093B301B093B40183 +:1033D0000C94441541E050E060E070E004C0440FFC +:1033E000551F661F771F8A95D2F7409550956095B7 +:1033F00070958091B1019091B201A091B301B0910B +:10340000B40184239523A623B7238093B10190931D +:10341000B201A093B301B093B4010C94441541E000 +:1034200050E060E070E004C0440F551F661F771F36 +:103430008A95D2F78091B1019091B201A091B30128 +:10344000B091B40184279527A627B7278093B101AF +:103450009093B201A093B301B093B4010C944415BE +:103460000F931F930091B1011091B2012091B3010C +:103470003091B401062B172B282B392B0093B10167 +:103480001093B2012093B3013093B4011F910F91B7 +:103490000C9444150F931F930091B1011091B20148 +:1034A0002091B3013091B401062317232823392337 +:1034B0000093B1011093B2012093B3013093B40192 +:1034C0001F910F910C9444150F931F930091B1011C +:1034D0001091B2012091B3013091B4010627172752 +:1034E000282739270093B1011093B2012093B3012B +:1034F0003093B4011F910F910C9444150895CF920D +:10350000DF92EF92FF920F931F93CF93DF93EC0123 +:10351000C090B501D090B601E090B701F090B8012D +:103520008091B1019091B201A091B301B091B40129 +:10353000C82AD92AEA2AFB2A0FE110E0B701A6011E +:10354000002E04C076956795579547950A94D2F753 +:1035500040FF07C0BE01802F0E94B807813091054F +:1035600039F40150110950F7BE0180E00E94B807FC +:10357000DF91CF911F910F91FF90EF90DF90CF904F +:10358000089590910C019923D9F090910D01992300 +:10359000B9F0982F9695969596959F3088F5E0917D +:1035A0000E01F0910F01E90FF11D877021E030E06D +:1035B00001C0220F8A95EAF78181822B81830895C9 +:1035C00040910E0150910F0120E030E09FEFFA0191 +:1035D000E20FF31F6281681799F09F3F19F46111A0 +:1035E00001C0922F2F5F3F4F2E30310581F79F3F53 +:1035F00039F0FA01E90FF11D97FDFA9582830895DC +:10360000089590910C019923E1F090910D01992377 +:10361000C1F0982F9695969596959F3020F5E0915C +:103620000E01F0910F01E90FF11D877021E030E0EC +:1036300001C0220F8A95EAF72095818128232183F2 +:10364000089540910E0150910F0120E030E0FA0101 +:10365000E20FF31F9281981301C012822F5F3F4F38 +:103660002E303105A1F7089581E090E0E0910E0140 +:10367000F0910F01E80FF91F10820196803191053A +:10368000A9F708959091CC01982B9093CC010895BF +:1036900080959091CC0198239093CC01089510923D +:1036A000CC0108959091CB01982B9093CB01089574 +:1036B00080959091CB0198239093CB01089510921F +:1036C000CB0108959091CA01982B9093CA01089557 +:1036D00080959091CA0198239093CA010895109201 +:1036E000CA0108958093B90108951092B90108950F +:1036F00040910E0150910F0120E030E080E0FA018E +:10370000E20FF31F918191118F5F2F5F3F4F2F3099 +:103710003105A9F70895E0910E01F0910F01809114 +:10372000CC018083E0910E01F0910F018081909196 +:10373000CB01892B8083E0910E01F0910F018081F4 +:103740009091CA01892B80839091B901992361F0EE +:10375000E0910E01F0910F018081892B80830E94FE +:10376000781B81111092B90180910E0190910F0187 +:103770000C94FA0FCF92DF92EF92FF920F931F9368 +:103780006C01EE24FF24C114D104E104F10421F4FE +:103790006B017C0180E001C080E133272F2D1E2DBD +:1037A0000D2D011511052105310519F0885F6801FE +:1037B000790197018601A4E036952795179507951D +:1037C000AA95D1F7011511052105310519F08C5F76 +:1037D0006801790197018601F2E0369527951795E2 +:1037E0000795FA95D1F7011511052105310519F055 +:1037F0008E5F68017901B701A601769567955795A7 +:103800004795452B462B472B09F08F5F1F910F9152 +:10381000FF90EF90DF90CF9008958091E601843083 +:1038200009F11092CE0120E488E190E00FB6F894FF +:10383000A895809360000FBE2093600083B7817FBE +:10384000846083BF83B7816083BF7894889583B792 +:103850008E7F83BF88E10FB6F8948093600010924A +:1038600060000FBE089508950895CF930E94331C01 +:103870000E94E2050E94341CC0E08C2F0E94CF06FB +:10388000811105C0CF5FCE30C1F780E001C081E07B +:10389000CF9108950E9458150E94EE0F0C94F308E2 +:1038A00082E084BD93E095BD9AEF97BD80936E0052 +:1038B00008952FB7F8948091CF019091D001A091F5 +:1038C000D101B091D2012FBF0895CF92DF92EF9234 +:1038D000FF920F931F932FB7F8944091CF0150910F +:1038E000D0016091D1017091D2012FBF6A017B019B +:1038F000EE24FF248C0120E030E0C016D106E20661 +:10390000F30610F441505109481B590BCA011F918D +:103910000F91FF90EF90DF90CF9008951F920F923C +:103920000FB60F9211248F939F93AF93BF93809103 +:10393000CF019091D001A091D101B091D201019617 +:10394000A11DB11D8093CF019093D001A093D1010F +:10395000B093D201BF91AF919F918F910F900FBE05 +:103960000F901F9018950E94F40CF8942FEF87EA9F +:1039700091E6215080409040E1F700C0000087E0D0 +:1039800090EBDC018093EF019093F001A093F101A3 +:10399000B093F2012CE088E190E00FB6F894A8957E +:1039A000809360000FBE20936000FFCFEF92FF92E4 +:1039B0000F931F93CF93DF93E82EF12C8F2D0E944E +:1039C000CF06C0E0D0E0082F10E098010C2E02C016 +:1039D000359527950A94E2F720FD05C02196C6305B +:1039E000D10599F709C06C2F7F2D80E00E949607C2 +:1039F000E812F4CF81E005C0F3948EE0F812DECF38 +:103A000080E0DF91CF911F910F91FF90EF9008958B +:103A1000CF93C82F8CE20E94D61C882321F08C2FD4 +:103A2000CF910C94D61C80E0CF910895CF930E9443 +:103A30005B1E811102C00E94411EC5E6C15049F0C3 +:103A40000E94E2058FE39CE90197F1F700C00000B6 +:103A5000F5CF89E20E94081D811111C18AE20E94FE +:103A6000081D81110E94411E85E00E94081D8111E0 +:103A70000E94B31C0E94661E8093CD0187E00E94C5 +:103A8000081D882399F18BE10E94081D882351F0BD +:103A90009091CD0191FB882780F921E0822780FB5E +:103AA00091F922C08EE00E94081D882351F0909168 +:103AB000CD0192FB882780F921E0822780FB92F9D3 +:103AC00013C080E10E94081D9091CD01882341F030 +:103AD00093FB882780F921E0822780FB93F904C0BB +:103AE000892F809580FB90F99093CD018091CD0135 +:103AF0000E946A1E0E94781E8093E00180EE0E9460 +:103B0000081D882341F08091E001982F909590FB4B +:103B100080F98093E00189E30E94081D882359F011 +:103B20009091E00191FB882780F921E0822780FBBA +:103B300091F99093E00182EE0E94081D882359F0CC +:103B40009091E00192FB882780F921E0822780FB99 +:103B500092F99093E00186EE0E94081D882359F0A7 +:103B60009091E00193FB882780F921E0822780FB78 +:103B700093F99093E00183EE0E94081D882359F089 +:103B80009091E00194FB882780F921E0822780FB57 +:103B900094F99093E00185E30E94081D882359F071 +:103BA0009091E00195FB882780F921E0822780FB36 +:103BB00095F99093E00181E30E94081D882359F054 +:103BC0009091E00196FB882780F921E0822780FB15 +:103BD00096F99093E00181E10E94081D882359F035 +:103BE0009091E00197FB882780F921E0822780FBF4 +:103BF00097F99093E0018091E0010E947C1E8091F2 +:103C0000E00187FB882780F980930D0187E20E94FD +:103C1000081DC82F8EE10E94081D8111C2608FE12E +:103C20000E94081D8111C46080E20E94081D81115C +:103C3000C86081E20E94081D8111C06182E20E9479 +:103C4000081D8111C06283E20E94081D8111C064B9 +:103C500084E20E94081D882311F0C06802C0CC23B2 +:103C600029F08C2F0E94731E6C2F03C00E946F1EC0 +:103C7000682F70E080E090E0CF910C945219CF91C2 +:103C800008956DEE7EEF80E090E00E94972460E062 +:103C900082E090E00E94892460E083E090E00E944E +:103CA000892460E084E090E00E94892460E085E05F +:103CB00090E00C94892480E090E00E94832421E02D +:103CC0008D3E9E4F09F020E0822F089582E090E023 +:103CD0000C947B24682F82E090E00C94892483E08C +:103CE00090E00C947B24682F83E090E00C9489246E +:103CF00084E090E00C947B24682F84E090E00C94A6 +:103D000089248091D50180FF0BC06091130185E06B +:103D1000689FB001112475956795759567952AC0C0 +:103D200081FF09C06091130185E0689FB0011124F3 +:103D3000759567951FC082FF07C06091130185E0EC +:103D4000689FB001112416C04091D6014423C9F0E8 +:103D500060911201461788F72091130185E0289F92 +:103D600090011124429FC001439F900D112470E0E7 +:103D70000E944D246038710540F46115710539F0D9 +:103D800002C065E070E0862F08958FE7089581E016 +:103D900008958091D50180FF08C06091110170E005 +:103DA000759567957595679521C081FF06C06091EF +:103DB000110170E07595679519C082FF04C060918C +:103DC000110170E010C08091D6018823C1F060918C +:103DD00010018617A0F790911101989FC00111243E +:103DE00070E00E944D246038710528F4611571055A +:103DF00021F0862F08958FE7089581E0089561E00E +:103E000070E0F4CF803F21F40E94811E819504C0B0 +:103E1000813F29F40E94811E8093D9010895823F39 +:103E200021F40E94811E819504C0833F29F40E94E1 +:103E3000811E8093D8010895893F19F40E94C91EFC +:103E400005C08A3F31F40E94C91E81958093DA0132 +:103E500008958B3F21F40E94C91E819504C08C3FB8 +:103E600029F40E94C91E8093DB010895843F21F448 +:103E70008091D701816017C0853F21F48091D701DF +:103E8000826011C0863F21F48091D70184600BC00D +:103E9000873F21F48091D701886005C0883F31F4C5 +:103EA0008091D70180618093D70108958D3F21F4DF +:103EB0008091D50181600BC08E3F21F48091D501A6 +:103EC000826005C08F3F29F48091D5018460809382 +:103ED000D5010895803F39F48091D90187FF6CC0E6 +:103EE0001092D90169C0813F29F48091D901181637 +:103EF000BCF362C09091D801823F29F497FF5CC067 +:103F00001092D80159C0833F19F41916CCF354C04C +:103F1000893F41F48091DA0118160CF04DC01092DF +:103F2000DA014AC08A3F29F48091DA0187FF44C050 +:103F3000F6CF8B3F39F48091DB0187FF3DC01092B3 +:103F4000DB013AC08C3F29F48091DB011816BCF3E9 +:103F500033C0843F21F48091D7018E7F17C0853F05 +:103F600021F48091D7018D7F11C0863F21F480918B +:103F7000D7018B7F0BC0873F21F48091D701877FCA +:103F800005C0883F31F48091D7018F7E8093D7019F +:103F900013C08D3F21F48091D5018E7F0BC08E3FE1 +:103FA00021F48091D5018D7F05C08F3F29F4809148 +:103FB000D5018B7F8093D5018091D80181110EC0EE +:103FC0008091D90181110AC08091DA01811106C066 +:103FD0008091DB01811102C01092D601089587ED16 +:103FE00091E00E9405100E94591C9093D401809387 +:103FF000D30108951F93CF93DF938091D3019091C4 +:10400000D4010E94651C4091D601442321F02091E7 +:10401000140130E006C0209115015AE0259F90015F +:1040200011248217930708F482C08091D80110915F +:10403000D901D091DA01C091DB01811107C01111C2 +:1040400005C0D11103C0CC2309F471C04F3F19F052 +:104050004F5F4093D601181624F40E94811E80936E +:10406000D8018091D80187FF05C00E94811E8195EB +:104070008093D801111624F40E94811E8093D901E7 +:104080008091D90187FF05C00E94811E8195809390 +:10409000D9016091D801662339F11091D90111231A +:1040A00019F1772767FD7095872F972F0E945E2360 +:1040B00023E333E343E35FE30E94C2230E942B2305 +:1040C0006093D801612F772767FD7095872F972F11 +:1040D0000E945E2323E333E343E35FE30E94C223B2 +:1040E0000E942B236093D9011D1624F40E94C91E3F +:1040F0008093DA018091DA0187FF05C00E94C91E12 +:1041000081958093DA011C1624F40E94C91E8093C5 +:10411000DB018091DB0187FF05C00E94C91E8195EC +:104120008093DB01DF91CF911F910C94EF1FDF9102 +:10413000CF911F910895E7EDF1E085E0DF011D9239 +:104140008A95E9F71092D6011092D501089583302F +:1041500081F128F4813059F08230D1F00895853012 +:1041600009F449C0B8F1863009F456C00895209189 +:104170001501862F90E0820F911D8F3F910520F44D +:10418000620F6093150108958FEF809315010895D4 +:1041900020911401862F90E0820F911D8F3F910591 +:1041A00020F4620F6093140108958FEF809314013F +:1041B000089520911301862F90E0820F911D8F3F6B +:1041C000910520F4620F6093130108958FEF80939F +:1041D0001301089520911201862F90E0820F911D06 +:1041E0008F3F910520F4620F6093120108958FEFC5 +:1041F00080931201089520911101862F90E0820F83 +:10420000911D8F3F910520F4620F60931101089575 +:104210008FEF80931101089520911001862F90E077 +:10422000820F911D8F3F910520F4620F6093100162 +:1042300008958FEF809310010895833011F128F4D1 +:10424000813049F0823091F00895853081F120F17C +:104250008630C1F1089580911501681720F4861BFE +:10426000809315010895109215010895809114010D +:10427000681720F4861B809314010895109214018E +:10428000089580911301681720F4861B8093130111 +:10429000089510921301089580911201681720F477 +:1042A000861B809312010895109212010895809147 +:1042B0001101681720F4861B809311010895109254 +:1042C0001101089580911001681720F4861B8093D6 +:1042D000100108951092100108958D3109F442C023 +:1042E00020F58E3009F479C070F4873009F45EC08F +:1042F00020F4863009F442C033C08830D1F18B30CD +:1043000009F4A7C02DC0863109F4A3C038F4803168 +:1043100009F46DC0813109F47BC022C0893109F4F0 +:1043200098C08B3109F44FC01BC0853309F479C0A4 +:1043300048F4873209F475C008F478C0893209F46A +:1043400070C00EC0833438F48A3308F071C08833EB +:1043500009F47FC005C0833409F463C08834C1F018 +:1043600080E008950E94E5220E94EE0F0E94F3086B +:1043700070C00E94661E0E94781E6BC08091CD01A5 +:10438000817F8E7F8093CD0181E08093DD01089550 +:104390000E9458152FEF83ED90E32150804090400C +:1043A000E1F700C000000E94B31C53C09091CD0102 +:1043B000892F817090FF03C0917F9E7F26C09160FE +:1043C0009093CD0146C09091CD0191FB882780F953 +:1043D00021E0822780FB91F913C09091CD0192FBDF +:1043E000882780F921E0822780FB92F909C090910B +:1043F000CD0193FB882780F921E0822780FB93F988 +:104400009093CD01882329F191609093CD01089577 +:104410000E94581580910D0191E0892780930D012C +:1044200018C061E070E080E090E00FC023EE01C0B2 +:1044300027EC280F61E070E080E090E004C0660F98 +:10444000771F881F991F2A95D2F70E9452190E9440 +:10445000581581E0089580E0089580E00895CF9395 +:10446000C82F8091DD01813079F018F08230D1F1D0 +:1044700084C0A0910E01B0910F018C91813169F03F +:10448000823209F07CC009C0A0910E01B0910F01E9 +:104490008C91813111F0823249F48C2F0E942B22B1 +:1044A00081111DC08C2F0E946D211AC08C2F0E947B +:1044B0002D22811114C0C43179F048F4CB3079F049 +:1044C000C03109F060C082E08093DD0108C0C932CC +:1044D00019F0C83321F057C01092DD0154C081E0BB +:1044E000817053C0C93289F118F5C43171F1A8F453 +:1044F000C73009F046C08AE08093150194E190939B +:10450000140193E0909313018093120188E080934B +:10451000110188E28093100134C0CE51C63088F575 +:10452000EC2FF0E0E65DFE4F80818093DC0129C036 +:10453000CE34E9F020F4CB3421F56AE013C0C13564 +:1045400079F0C235F1F461E00DC08091DC0188237F +:1045500019F01092DC0115C081E08093DD0115C0D7 +:1045600061E006C08091DC010E94A7200AC06AE0D9 +:104570008091DC010E941D2104C01092DD0180E0C9 +:1045800004C081E002C080E0ABCFCF910895E1E8A4 +:10459000F0E08081886080838081816080838FB734 +:1045A000F89493E09093890090ED909388008FBFEA +:1045B0000895EFE6F0E08081826080830895EFE661 +:1045C000F0E080818D7F80830895EFE6F0E08081C8 +:1045D00092E08927808308951F920F920FB60F9261 +:1045E00011242F933F934F935F936F937F938F93F8 +:1045F0009F93AF93BF93EF93FF938091DE019091D0 +:10460000DF0101969093DF018093DE01811103C0E9 +:1046100082E00E94F308E091DF01E695E695F0E084 +:10462000EA52F84FE4918091DE018E1303C080E0DE +:104630000E94F308FF91EF91BF91AF919F918F91ED +:104640007F916F915F914F913F912F910F900FBE8E +:104650000F901F90189504D06894B1118DC00895E3 +:1046600070D088F09F5790F0B92F9927B751A0F0DC +:10467000D1F0660F771F881F991F1AF0BA95C9F7F6 +:1046800012C0B13081F077D0B1E0089574C0672FC7 +:10469000782F8827B85F39F0B93FCCF386957795A6 +:1046A0006795B395D9F73EF490958095709561958F +:1046B0007F4F8F4F9F4F0895E89409C097FB3EF4BA +:1046C00090958095709561957F4F8F4F9F4F99235F +:1046D000A9F0F92F96E9BB279395F69587957795DD +:1046E0006795B795F111F8CFFAF4BB0F11F460FF9D +:1046F0001BC06F5F7F4F8F4F9F4F16C0882311F0F5 +:1047000096E911C0772321F09EE8872F762F05C008 +:10471000662371F096E8862F70E060E02AF09A95A3 +:10472000660F771F881FDAF7880F9695879597F998 +:10473000089557FD9058440F551F59F05F3F71F091 +:104740004795880F97FB991F61F09F3F79F08795F8 +:104750000895121613061406551FF2CF4695F1DF81 +:1047600008C0161617061806991FF1CF8695710511 +:10477000610508940895E894BB2766277727CB0145 +:1047800097F908950BD078C069D028F06ED018F052 +:10479000952309F05AC05FC01124EECFCADFA0F301 +:1047A000959FD1F3950F50E0551F629FF001729FC6 +:1047B000BB27F00DB11D639FAA27F00DB11DAA1FE5 +:1047C000649F6627B00DA11D661F829F2227B00D32 +:1047D000A11D621F739FB00DA11D621F839FA00DBD +:1047E000611D221F749F3327A00D611D231F849F0D +:1047F000600D211D822F762F6A2F11249F57504064 +:104800008AF0E1F088234AF0EE0FFF1FBB1F661FFE +:10481000771F881F91505040A9F79E3F510570F0B7 +:1048200014C0AACF5F3FECF3983EDCF386957795F2 +:104830006795B795F795E7959F5FC1F7FE2B880FB2 +:10484000911D9695879597F9089597F99F6780E848 +:1048500070E060E008959FEF80EC089500240A94D2 +:104860001616170618060906089500240A9412164B +:104870001306140605060895092E0394000C11F47E +:10488000882352F0BB0F40F4BF2B11F460FF04C02B +:104890006F5F7F4F8F4F9F4F089597FB072E16F442 +:1048A000009407D077FD09D00E94672407FC05D04B +:1048B0003EF4909581959F4F0895709561957F4F37 +:1048C0000895EE0FFF1F0590F491E02D0994AA1BA7 +:1048D000BB1B51E107C0AA1FBB1FA617B70710F0EB +:1048E000A61BB70B881F991F5A95A9F7809590951D +:1048F000BC01CD010895F999FECF92BD81BDF89A12 +:10490000992780B50895A8E1B0E042E050E00C940A +:104910009E24262FF999FECF1FBA92BD81BD20BDDE +:104920000FB6F894FA9AF99A0FBE019608950E946C +:104930008924272F0C948A24DC01CB01FC01F999EE +:10494000FECF06C0F2BDE1BDF89A319600B40D92DB +:0C49500041505040B8F70895F894FFCF94 +:10495C002002F50882095F092B09F8080101BA0148 +:10496C0028080A03140A3F4D363997074A071407DB +:10497C00DB066E068706A006B906010203040506CF +:04498C00070809000F :00000001FF diff --git a/keyboard/ergodox_ez/keymaps/ordinary/readme.md b/keyboard/ergodox_ez/keymaps/ordinary/readme.md index 6534f481a1..b1aaed6980 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/readme.md +++ b/keyboard/ergodox_ez/keymaps/ordinary/readme.md @@ -10,54 +10,66 @@ no rights reserved, use for any purposes, credit me if you are a nice person ## The Base Layout ## -* The yellow keys are text navigation and manipulation -* The dark blue keys are shift keys: case shift (traditional shift), symbol shift, and media shift -* The light blue keys are modifiers: traditional Control, Option, and C ommand keys, plus Hyper and Meh -* The two green keys, tab and tilde, are in the typical places to ease use of the Application Switcher -* The red keys is Escape, one of the few buttons which is in an atypical position +* The light blue keys are modifiers: traditional Control, Option, and Command keys, plus Hyper and Meh +* The dark blue keys are Shift keys: Capitals Shift (traditional shift), Symbol Shift, and Media Shift; plus a Shift Lock key +* Several dark blue keys double for entry of characters which would typically be in those locations +* The turquoise keys are text navigation and manipulation +* The red keys is Escape and it is always found in that location no matter what ![Ordinary base layout](ordinary-base.png) -This layout puts the modifier keys along the bottom of the keyboard where they are on most layouts. They are in the regular order, with the addition of Hyper and Meh keys. The shift key (case shift) is in the prevalent location. The primo slots usually wasted on Caps Lock and Enter are instead used for the Symbol Shift key which promotes use of the Symbols layer. On the right side of the layout, the Symbol and Media shift keys also double as character keys -- quote and backslash, respectively -- so that touch typists can continue to find those punctuation marks in the right place. +This layout puts the modifier keys along the bottom of the keyboard where they are on most keyboards. They are in the regular order, with the addition of Hyper and Meh keys. On the outside edges are the Shift keys. The traditional shift key is called Capitals Shift and it is in the normal location. Above that are Symbols Shift and Media Shift. Each Shift key momentarily switches the layout to that layer, and if you use the Shift Lock button you can lock the layout to that layer. -Other than the yellow keys, the only buttons which move to new locations are the Brackets and Dash and Escape. Most touch typists dont touch-type brackets or dash anyway, so only Escape really requires retraining of muscle memory. +Touch typists will also find tilde, tab, equals/plus, slash/pipe, and quote/double-quote sharing space on those Shift keys where they would probably be on a common keyboard. Other than the turquoise keys the only buttons which move to new locations are the Brackets and Dash and Escape. Most touch typists dont touch-type brackets or dash anyway so only Escape really requires retraining of muscle memory, and see below for the Special Escape Sequence. -The four big yellow keys are arranged differently than in the default Ergodox EZ layout. The Ordinary Layout here copies the design of the old Fingerworks TouchStream keyboard, but also reflects the natural presumptions of the author -- me!; I type the space character with my right hand, and to me it makes sense for the two delete keys to be next to one another. +The four big turquoise keys are arranged differently than in the default Ergodox EZ layout. The Ordinary Layout here copies the design of the old Fingerworks TouchStream keyboard, but also reflects the natural presumptions of the author -- me! I type the space character with my right hand, and to me it makes sense for the two delete keys to be next to one another. -The Forward Tab and Backward Tab keys are there mostly because I ended up with two extra buttons and needed something to do with them. My muscle memory from using the Truly Ergonomic Keyboard makes me look for the Tab key with my right index finger, so it is handy to have this redundant Tab, and the idea with the Backward Tab key is that it becomes easy to navigate text fields in forms, or to indent/unindent code. +The Forward Tab and Backward Tab keys are in their locations mostly because I ended up with two extra buttons and needed something to do with them. My muscle memory from using the Truly Ergonomic Keyboard makes me look for the Tab key with my right index finger, so it is handy to have this redundant Tab, and the idea with the Backward Tab key is that it becomes easy to navigate text fields in forms, or to indent/unindent code. -## The Symbols Layout ## +## The Symbols Layer ## -* The periwinkle keys are the eponymous symbols -* The gray keys are F-Keys -* The green keys are a proper number pad -* The red Escape key is found in the "right" location on this layer -* The yellow keys are the *reverse* of the yellow keys on the base layer -* The dark blue Media key means that the Media layer is accessible with the left hand +* The light green keys are the eponymous symbols +* The bright green keys are F-Keys +* The dark green keys constitute a number pad +* The turquoise keys are the *reverse* of the turquoise keys on the base layer ![Ordinary symbol layout](ordinary-symbol.png) The Ergodox EZ ships with the "Coder Layer" which I like to call the Symbols layer. There are some significant improvements in The Ordinary Layout over the default layout. The symbol keys are mostly the same as on the default layout, which did a good job in this regard, but with a few enhancements: + * Angle brackets on this layer mean that curly, square, and angle brackets are all available on different layers of the same two buttons. Also, they mean that all kinds of brackets, including parentheses, are available on both the Base and Symbols layers. * The slash, backslash, and pipe characters are grouped together as a memory aid. * The & and | symbols are juxtaposed as a memory aid -The number pad area here, in green, includes all four arithmetic operations in the same order found on most number pads. This layout also has an Enter key, and importantly the key codes emitted by this number pad are *number pad specific key codes*, not regular keyboard key codes. Some software distinguishes keypad codes so users now have access to a fully realized number pad when using The Ordinary Layout. +The number pad area here, in green, includes all four arithmetic operations in the same order found on most number pads and features an Enter key. The keycodes emitted here are normal numeric keycodes, not the number-pad specific keycodes emitted by most number pads, because this layout does not use a Num Lock key to switch the buttons between numeric keycodes and navigational keycodes. See the explanation in The Media Layout section about navigation using these same buttons. -The Escape key's true home is in the top left corner of the keyboard, so on this layer it can be found there. And on the Symbols layer, the Tab key switches to become a Media key, so press Symbols then Media to access the Media layer using the left hand. +Finally, consider the turquoise text-nav keys. Here in the Symbols layer, these are *reversed* from the base layer, with most keys mirrored, but the Delete keys shifted to maintain the directional significance of their arrangement. This is powerful! Often I find myself using the mouse with my right hand, and the left hand needs to press Enter. Instead of reaching the left hand over to the right side of the keyboard, now I simply tap Symbols to reverse the yellow keys, and Enter is right where it should be. -Finally, consider the yellow text-nav keys. In the Symbols layer, these are *reversed* from the base layer, with most keys mirrored, but the Delete keys shifted to maintain the directional significance of their arrangement. This is powerful! Often I find myself using the mouse with my right hand, and the left hand needs to press Enter. Instead of reaching the left hand over to the right side of the keyboard, now I simply tap Symbols to reverse the yellow keys, and Enter is right where it should be. +## The Media Layer ## -## The Media Layout ## - -* The light turquoise keys move the mouse or the text cursor -* The dark turquoise keys scroll -* The light purple keys signal Web and Audio applications -* The dark purple keys signal the operating system -* The red Escape key is, again, found in the "right" location +* The dark orange keys on the left move the mouse cursor +* The dark orange keys on the right move the text cursor +* The light orange keys are for scrolling and paging +* The bright green keys are more F-keys +* The dark yellow keys signal Web and Audio applications +* The light yellow keys signal the operating system ![Ordinary media layout](ordinary-media.png) -This layer was inspired by the Media layer on the Ergodox EZ but takes it farther. The Fingerworks TouchStream had a very useful feature for controlling the text cursor easily and this layer does something similar. The left hand can move the mouse, the right hand moves the text cursor, in all four directions, in small or large increments. This greatly enhances navigation in text documents. +This layer was inspired by the Media layer on the Ergodox EZ but takes it farther. The Fingerworks TouchStream keyboard had a very useful feature for controlling the text cursor easily and this layer does something similar. The left hand can move the mouse, the right hand moves the text cursor, in all four directions, in small or large increments. This greatly enhances navigation in text documents. + +Moreover, the orange keys on the right overlay the numberpad from the Symbols Layer, such that in the Media Layer the same keys can be used as if they were a number pad in navigational mode (Num Lock off). For instance, in traditional number pads the '3' key became 'Page Down', and so it is here. This means a user can do text navigation without moving either hand. + +## Switching Between Layers ## + +The three Shift keys correspond to three logical layers on top of the ever-present base layer, and are represented in the three LEDs on the keyboard: Capitals (red), Symbols (green), Media (blue). Shift keys work in the expected way: press them and the keys shift to that layer; release them and the keys shift back to the base layer. There is also a feature of the Ordinary Layout to lock the keys onto a layer: hold down the Shift Lock key then press a Shift key and -- just like traditional Caps Lock -- the keys will remain in the shifted state. To revert to the base layer, use the Shift Lock key again in combination with the Shift key. + +This layout attempts to treat the Capitals Shift layer the same as the other two Shift layers, although internally they are different. Due to these differences, it is possible to switch from any layer to any other layer, and to lock to any layer, *except* it is not possible to go from Media to Symbols. You must exit the Media layer before engaging the Symbols layer. When you depress the Shift Lock key it will illuminate the LEDs corresponding to the layers available, so if you are on the base layer or the Capitals layer or the Symbols layer, then all three LEDs will light up, but if you are on the Media layer then only the Capitals and Media layers will light up. + +## Special Escape Sequence ## + +In the Ordinary Layout, the most unsatisfying key location is the Escape key which rightly belongs segregated on its own way up on the top left of the keyboard. The Ergodox does not have a physical button in such a location and the nearest one, in the top left corner, was assigned to the tilde button which is traditionally found in that location. The Escape key is important so it features prominently on the other top corner on the left side of the keyboard, and is always there in all layers. Nevertheless, alas, it isn't Ordinary to put the escape in that different corner! + +That tilde key has a second function as the Shift Lock key and that makes possible a special feature. To make this layout as Ordinary as possible, the Escape key can *also* be accessed by pressing Shift Lock then the 1 button right next to it. This easy gesture is a way to partially maintain the ease of flicking your wrist to the left and tapping Escape. This gesture works in all layers. From 96f75f39c8dfbd9d84d1a6ceb0b2db0ce5cc52bf Mon Sep 17 00:00:00 2001 From: Nicholas Keene Date: Mon, 11 Apr 2016 23:28:16 -0500 Subject: [PATCH 09/55] The Ordinary Layout is the layout you are looking for. Come and see. --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 91 +- .../ergodox_ez/keymaps/ordinary/ordinary.hex | 2214 +++++++++-------- .../ergodox_ez/keymaps/ordinary/readme.md | 4 +- 3 files changed, 1180 insertions(+), 1129 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 07a1e5e899..63cf8c0c88 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -3,14 +3,15 @@ #include "debug.h" #include "action_layer.h" -#define BASE 0 // default layer -#define LOCK 1 // layer lock keys +#define BASE 0 // default layer +#define LOCK 1 // layer lock keys #define SYMB_MO 2 // symbols momentary layer #define SYMB_TG 3 // symbols lock layer -#define SYMB_XX 4 // symbols lock layer +#define SYMB_XX 4 // symbols exit layer #define MDIA_MO 5 // media momentary layer #define MDIA_TG 6 // media lock layer -#define MDIA_XX 7 // topmost escape +#define MDIA_XX 7 // media exit layer +#define UNLOCK 8 // clear to base layer /* * Ordinary Ergodox EZ keyboard layout, v3 @@ -133,7 +134,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [SYMB_MO] = KEYMAP( // left hand - KC_TRNS ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS + KC_FN2 ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS ,MO(MDIA_MO) ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM) ,MO(SYMB_MO) ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV ,KC_LSFT ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB @@ -142,7 +143,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_UP ,KC_SPC ,KC_ENT ,KC_DOWN // right hand - ,KC_TRNS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_TRNS + ,KC_TRNS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_FN2 ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,MO(MDIA_MO) ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,MO(SYMB_MO) ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_RSFT @@ -177,7 +178,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // left hand MO(SYMB_XX) ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_TRNS ,MO(MDIA_MO) ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_AMPR ,LSFT(KC_COMM) -,KC_NO ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV +,MO(UNLOCK) ,KC_HASH ,KC_DLR ,KC_LPRN ,KC_RPRN ,KC_GRV ,KC_LSFT ,KC_PERC ,KC_CIRC ,KC_LBRC ,KC_RBRC ,KC_TILD ,KC_TAB ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_LEFT ,KC_RGHT @@ -186,7 +187,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // right hand ,KC_TRNS ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,MO(SYMB_XX) ,LSFT(KC_DOT),KC_PIPE ,KC_7 ,KC_8 ,KC_9 ,KC_SLSH ,MO(MDIA_MO) - ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,KC_NO + ,KC_SLSH ,KC_4 ,KC_5 ,KC_6 ,KC_ASTR ,MO(UNLOCK) ,LSFT(KC_TAB),KC_BSLS ,KC_1 ,KC_2 ,KC_3 ,KC_MINS ,KC_RSFT ,KC_0 ,KC_DOT ,KC_EQL,KC_PLUS ,KC_ENT ,KC_HOME ,KC_END @@ -259,18 +260,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [MDIA_MO] = KEYMAP( // left hand - KC_TRNS ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_TRNS + KC_FN3 ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_TRNS ,MO(MDIA_MO) ,KC_POWER,KC_TRNS ,KC_MS_U ,KC_TRNS ,KC_TRNS ,KC_WH_U -,KC_NO ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_TRNS +,MO(SYMB_MO) ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_TRNS ,KC_LSFT ,KC_TRNS ,KC_TRNS ,KC_MS_D ,KC_TRNS ,KC_TRNS ,KC_WH_D ,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_BTN1 ,KC_BTN2 ,KC_WSTP ,KC_WREF ,KC_WSCH ,KC_WBAK ,KC_TRNS ,KC_WHOM // right hand - ,KC_TRNS ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_TRNS + ,KC_TRNS ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,KC_FN3 ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,MO(MDIA_MO) - ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_NO + ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,MO(SYMB_MO) ,KC_WH_D ,KC_TRNS ,KC_END ,KC_DOWN ,KC_PGDN ,KC_TRNS ,KC_RSFT ,KC_INS ,KC_DEL ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_MPRV ,KC_MNXT @@ -302,7 +303,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [MDIA_TG] = KEYMAP( // left hand MO(MDIA_XX) ,KC_F11 ,KC_F12 ,KC_F13 ,KC_F14 ,KC_F15 ,KC_TRNS -,KC_NO ,KC_POWER,KC_TRNS ,KC_MS_U ,KC_TRNS ,KC_TRNS ,KC_WH_U +,MO(UNLOCK) ,KC_POWER,KC_TRNS ,KC_MS_U ,KC_TRNS ,KC_TRNS ,KC_WH_U ,KC_NO ,KC_SLEP ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_TRNS ,KC_LSFT ,KC_TRNS ,KC_TRNS ,KC_MS_D ,KC_TRNS ,KC_TRNS ,KC_WH_D ,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_BTN1 ,KC_BTN2 @@ -311,7 +312,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_WBAK ,KC_TRNS ,KC_WHOM // right hand ,KC_TRNS ,KC_F16 ,KC_F17 ,KC_F18 ,KC_F19 ,KC_F20 ,MO(MDIA_XX) - ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,KC_NO + ,KC_WH_U ,KC_PSCR ,KC_HOME,KC_UP ,KC_PGUP ,KC_MAIL ,MO(UNLOCK) ,KC_NLCK ,KC_LEFT,KC_DOWN ,KC_RIGHT,KC_MYCM ,KC_NO ,KC_WH_D ,KC_TRNS ,KC_END ,KC_DOWN ,KC_PGDN ,KC_TRNS ,KC_RSFT ,KC_INS ,KC_DEL ,KC_TRNS ,KC_TRNS ,KC_TRNS @@ -360,6 +361,51 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,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_TRNS + ), + +/* Keymap 22: Unlock Layer + * + * ,-----------------------------------------------------. ,-----------------------------------------------------. + * | Unlock | | | | | | | | | | | | | | Unlock | + * |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------| + * | | | | | | | | | | | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | |------| |------| | | | | | | + * |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------| + * | | | | | | | | | | | | | | | | + * `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------' + * | | | | | | | | | | | | + * `----------------------------------' `----------------------------------' + * ,-------------. ,-------------. + * | | | | | | + * ,------|------|------| |------+------+------. + * | | | | | | | | + * | | |------| |------| | | + * | | | | | | | | + * `--------------------' `--------------------' + */ +[UNLOCK] = KEYMAP( +// left hand + KC_FN1 ,KC_ESC ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS +,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,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_FN1 + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS + ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS @@ -367,7 +413,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_CLEAR(ON_PRESS) // FN1 - clear to base layer + [1] = ACTION_LAYER_CLEAR(ON_PRESS) // FN1 - clear to base layer ,[2] = ACTION_LAYER_INVERT(SYMB_TG, ON_PRESS) // FN2 - toggle to Symbols on press ,[3] = ACTION_LAYER_INVERT(MDIA_TG, ON_PRESS) // FN3 - toggle to Media on press }; @@ -396,21 +442,16 @@ void matrix_init_user(void) { void matrix_scan_user(void) { uint8_t layer = biton32(layer_state); + // do not change lights for locking and unlocking + if(layer == UNLOCK || layer == LOCK || layer == SYMB_XX || layer == MDIA_XX) { + return; + } + ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); - // lock layer turns on all lights - if(layer == LOCK || layer == SYMB_XX) { - ergodox_right_led_1_on(); - ergodox_right_led_2_on(); - ergodox_right_led_3_on(); - } else if(layer == MDIA_XX) { - ergodox_right_led_1_on(); - ergodox_right_led_3_on(); - } - // caps lock turns on red light if(host_keyboard_leds() & (1< Date: Mon, 11 Apr 2016 23:34:41 -0500 Subject: [PATCH 10/55] The Ordinary Layout is the layout you are looking for. Come and see. --- keyboard/ergodox_ez/keymaps/ordinary/keymap.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c index 63cf8c0c88..3a999f2665 100644 --- a/keyboard/ergodox_ez/keymaps/ordinary/keymap.c +++ b/keyboard/ergodox_ez/keymaps/ordinary/keymap.c @@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_TRNS ,KC_TRNS ), -/* Keymap 10: Symbol Momentary Layer +/* Keymap 2: Symbol Momentary Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | | @@ -153,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_PGDN ,KC_BSPC ,KC_DEL ), -/* Keymap 11: Symbol Lock Layer +/* Keymap 3: Symbol Lock Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | Lock | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | Lock | @@ -195,7 +195,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_PGDN ,KC_BSPC ,KC_DEL ), -/* Keymap 12: Symbol Unlock Layer +/* Keymap 4: Symbol Unlock Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | | Esc | | | | | | | | | | | | | | @@ -237,7 +237,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_TRNS ,KC_TRNS ), -/* Keymap 20: Media and mouse keys +/* Keymap 5: Media Momentary Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | | F11 | F12 | F13 | F14 | F15 | | | | F16 | F17 | F18 | F19 | F20 | | @@ -279,7 +279,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_VOLD ,KC_MSTP ,KC_MPLY ), -/* Keymap 21: Media Lock Layer +/* Keymap 6: Media Lock Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | | F11 | F12 | F13 | F14 | F15 | | | | F16 | F17 | F18 | F19 | F20 | | @@ -321,7 +321,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_VOLD ,KC_MSTP ,KC_MPLY ), -/* Keymap 22: Media Unlock Layer +/* Keymap 7: Media Unlock Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | | Esc | | | | | | | | | | | | | | @@ -366,7 +366,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { ,KC_TRNS ,KC_TRNS ,KC_TRNS ), -/* Keymap 22: Unlock Layer +/* Keymap 8: Unlock Layer * * ,-----------------------------------------------------. ,-----------------------------------------------------. * | Unlock | | | | | | | | | | | | | | Unlock | @@ -413,7 +413,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_CLEAR(ON_PRESS) // FN1 - clear to base layer + [1] = ACTION_LAYER_CLEAR(ON_PRESS) // FN1 - clear to base layer ,[2] = ACTION_LAYER_INVERT(SYMB_TG, ON_PRESS) // FN2 - toggle to Symbols on press ,[3] = ACTION_LAYER_INVERT(MDIA_TG, ON_PRESS) // FN3 - toggle to Media on press }; From 5ef6978cab7de2821eb6bfce4fd04067655a8937 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 12 Apr 2016 06:55:26 -0500 Subject: [PATCH 11/55] Adding personal files --- keyboard/planck/Makefile | 4 +- keyboard/planck/config.h | 2 +- keyboard/planck/keymaps/pc.c | 132 +++++++++++++++++++++++++++++++++++ 3 files changed, 135 insertions(+), 3 deletions(-) create mode 100644 keyboard/planck/keymaps/pc.c diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 03d2601761..17e5cd45cc 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -137,8 +137,8 @@ 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 = 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 +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 # AUDIO_ENABLE = YES # Audio output on port C6 # UNICODE_ENABLE = YES # Unicode diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index d3719e0cb1..d435cc795c 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -76,7 +76,7 @@ along with this program. If not, see . #define NO_DEBUG /* disable print */ -#define NO_PRINT +//#define NO_PRINT /* disable action features */ //#define NO_ACTION_LAYER diff --git a/keyboard/planck/keymaps/pc.c b/keyboard/planck/keymaps/pc.c new file mode 100644 index 0000000000..f8254fd46b --- /dev/null +++ b/keyboard/planck/keymaps/pc.c @@ -0,0 +1,132 @@ +// 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" +#ifdef BACKLIGHT_ENABLE + #include "backlight.h" +#endif + +// 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 _QW 0 +#define _CM 1 +#define _DV 2 +#define _LW 3 +#define _RS 4 + +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 | , | . | Up |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | |Raise | Space |Lower | / | Left | Down |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QW] = { + {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_UP, KC_ENT }, + {KC_LCTL, KC_LGUI, KC_LALT, KC_NO, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_SLSH, KC_LEFT, KC_DOWN, 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 |Raise | Space |Lower | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_CM] = { + {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 }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), 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 |Raise | Space |Lower | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DV] = { + {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 }, + {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RS] = { + {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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LW] = { + {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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, + {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, RESET, KC_TRNS}, + {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +} +}; + +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); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; From ff06eaf8537e5f6ab1489c77a6147531c57bb538 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Tue, 12 Apr 2016 08:17:02 -0500 Subject: [PATCH 12/55] Added del --- keyboard/planck/keymaps/pc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/planck/keymaps/pc.c b/keyboard/planck/keymaps/pc.c index f8254fd46b..0adee8b2e4 100644 --- a/keyboard/planck/keymaps/pc.c +++ b/keyboard/planck/keymaps/pc.c @@ -33,7 +33,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_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_UP, KC_ENT }, - {KC_LCTL, KC_LGUI, KC_LALT, KC_NO, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} + {KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} }, /* Colemak From 3a601e76e4efdd6dd42e02146fd52d8ede979756 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 14:43:09 -0500 Subject: [PATCH 13/55] Adding PC Atomic --- keyboard/atomic/Makefile | 7 +- keyboard/atomic/config.h | 91 ++++++++++++++++++-- keyboard/atomic/keymaps/default.c | 124 ++++++++++++++++------------ keyboard/atomic/keymaps/pc_atomic.c | 75 +++++++++++++++++ 4 files changed, 230 insertions(+), 67 deletions(-) create mode 100644 keyboard/atomic/keymaps/pc_atomic.c diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index da6d0ac60c..95554ea89d 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -115,14 +115,14 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # comment out to disable the options. # BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000) -MOUSEKEY_ENABLE = yes # Mouse keys(+4700) +#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 = yes # Breathing sleep LED during USB suspend -# NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +#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 @@ -137,4 +137,3 @@ VPATH += $(TOP_DIR) VPATH += $(TMK_DIR) include $(TOP_DIR)/quantum/quantum.mk - diff --git a/keyboard/atomic/config.h b/keyboard/atomic/config.h index 149aed4714..e28fa18c07 100644 --- a/keyboard/atomic/config.h +++ b/keyboard/atomic/config.h @@ -32,36 +32,109 @@ along with this program. If not, see . #define MATRIX_ROWS 5 #define MATRIX_COLS 15 -// Planck PCB default pin-out -// Change this to how you wired your keyboard -// COLS: Left to right, ROWS: Top to bottom +/* + * 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 COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } #define ROWS (int []){ D0, D5, B5, B6, C6 } /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW -/* define if matrix has ghost */ +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST /* number of backlight levels */ -/* NOTE: this is the max value of 0..BACKLIGHT_LEVELS so really 16 levels. */ #define BACKLIGHT_LEVELS 3 -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 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 */ +/* + * 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 B +//#define MAGIC_KEY_LOCK CAPS +//#define MAGIC_KEY_EEPROM E +//#define MAGIC_KEY_NKRO N +//#define MAGIC_KEY_SLEEP_LED Z /* * Feature disable options diff --git a/keyboard/atomic/keymaps/default.c b/keyboard/atomic/keymaps/default.c index f37d9d9a51..d62e5c2445 100644 --- a/keyboard/atomic/keymaps/default.c +++ b/keyboard/atomic/keymaps/default.c @@ -1,60 +1,76 @@ #include "atomic.h" +#define _QW 0 +#define _CM 1 +#define _DV 2 +#define _LW 3 +#define _RS 4 + +// ROW 1 OPTIONS +// .--------------------------------------------------------------------------------------------------------------------------------------. +// | | | | | | | | | | | | | | | | +// '--------------------------------------------------------------------------------------------------------------------------------------' +// .- 2u ------------. +// | X | +// '-----------------' + +// ROW 2 OPTIONS +// .--------------------------------------------------------------------------------------------------------------------------------------. +// | | | | | | | | | | | | | | | | +// '--------------------------------------------------------------------------------------------------------------------------------------' +// .- 2u ------------. .- 2u ------------. +// | X | | X | +// '-----------------' '-----------------' + +// ROW 3 OPTIONS +// .--------------------------------------------------------------------------------------------------------------------------------------. +// | | | | | | | | | | | | | | | | +// '--------------------------------------------------------------------------------------------------------------------------------------' +// .- 2u ------------. .- 2u ------------. +// | X | | X | +// '-----------------' '-----------------' +// .- 2u ------------. +// | X | +// '-----------------' + +// ROW 4 OPTIONS +// .--------------------------------------------------------------------------------------------------------------------------------------. +// | | | | | | | | | | | | | | | | +// '--------------------------------------------------------------------------------------------------------------------------------------' +// .- 2u ------------. +// | X | +// '-----------------' +// .- 2u ------------. .- 2u ------------. +// | X | | X | +// '-----------------' '-----------------' +// .- 2u ------------. +// | X | +// '-----------------' + +// ROW 5 OPTIONS +// .--------------------------------------------------------------------------------------------------------------------------------------. +// | | | | | | | | | | | | | | | | +// '--------------------------------------------------------------------------------------------------------------------------------------' +// .- 1.25u --+ 1.25u ------- 1.25u +--- 1.25u --- 2u -------------- 1.25u ---- 1.25u ------ 1.25u +---- 1.25u . +// | X | X | X | X | X | X | X | X | X | +// '-----------------------------------------------------------------------------------------------------------' +// .- 2u ------------. +// | X | +// '-----------------' +// .--------------------- 6.25u ----------------------------. +// | X | +// '--------------------------------------------------------' +// .----------------------- 6.25u ---------------------------- 1.25u ---- 1.25u ---- 1.25u ------ 1.25u +-- 1.25u --. +// | X | X | X | X | X | X | +// '----------------------------------------------------------------------------------------------------------------' + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [0] = { /* Qwerty */ - { 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_DEL }, -// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ -// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ -// ┌─ 2u ────────────┐ -// │ X │ -// └─────────────────┘ - { 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 }, -// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ -// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ -// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ -// │ X │ │ X │ -// └─────────────────┘ └─────────────────┘ - { 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_ENT, KC_ENT, KC_PGUP }, -// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ -// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ -// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ -// │ X │ │ X │ -// └─────────────────┘ └─────────────────┘ -// ┌─ 2u ────────────┐ -// │ X │ -// └─────────────────┘ - { 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_UP, KC_PGDN }, -// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ -// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ -// ┌─ 2u ────────────┐ -// │ X │ -// └─────────────────┘ -// ┌─ 2u ────────────┐ ┌─ 2u ────────────┐ -// │ X │ │ X │ -// └─────────────────┘ └─────────────────┘ -// ┌─ 2u ────────────┐ -// │ X │ -// └─────────────────┘ - { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RGUI, KC_RALT, KC_RCTL, BL_STEP, KC_LEFT, KC_DOWN, KC_RGHT }, -// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐ -// │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ -// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘ -// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐ -// │ X │ X │ X │ X │ X │ X │ X │ X │ X │ -// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘ -// ┌─ 2u ────────────┐ -// │ X │ -// └─────────────────┘ -// ┌───────────────────── 6.25u ────────────────────────────┐ -// │ X │ -// └────────────────────────────────────────────────────────┘ -// ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐ -// │ X │ X │ X │ X │ X │ X │ -// └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘ + [_QW] = { /* Qwerty */ + { 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_DEL }, + { 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_ESC, 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_ENT, KC_PGUP }, + { 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_UP, KC_PGDN }, + { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RGUI, KC_RALT, KC_RCTL, BL_STEP, KC_LEFT, KC_DOWN, KC_RGHT }, } }; diff --git a/keyboard/atomic/keymaps/pc_atomic.c b/keyboard/atomic/keymaps/pc_atomic.c new file mode 100644 index 0000000000..2792ff6e73 --- /dev/null +++ b/keyboard/atomic/keymaps/pc_atomic.c @@ -0,0 +1,75 @@ +#include "atomic.h" + +#define _QW 0 +#define _LW 1 +#define _RS 2 +#define _FN 3 + +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +/* + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | LCTRL | LWIN | FN | LALT | RAISED | XXXXXX . SPACE | LOWER | RALT | HOME | END | RCTRL | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +// [_QW] = { /* QWERTY */ + [0] = { /* 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, XXXXXXX, KC_BSPC }, + { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, KC_UP, KC_PGDN }, + { KC_LCTL, KC_LGUI, MO(_FN), KC_LALT, MO(_RS), XXXXXXX, KC_SPC, MO(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + }, + [_LW] = { /* LOWERED */ + { 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_PSCR, KC_PAUS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + [_RS] = { /* RAISED */ + { KC_TILD, 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_PAUS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + [_FN] = { /* FUNCTION */ + { KC_TILD, 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_PAUS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, +}; + +const uint16_t PROGMEM fn_actions[] = { + [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE + [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER + + [3] = ACTION_DEFAULT_LAYER_SET(0), + [4] = ACTION_DEFAULT_LAYER_SET(1), + +}; + +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: + return MACRODOWN(TYPE(KC_T), END); + break; + } + return MACRO_NONE; +}; From 02a3d77940d9b9dcf3af3e8ca9672145155fbfe6 Mon Sep 17 00:00:00 2001 From: Wojciech Siewierski Date: Wed, 13 Apr 2016 22:24:42 +0200 Subject: [PATCH 14/55] Optimize source_layers_cache for the cache memory Swapping the array indices should increase the locality of the memory access. --- tmk_core/common/action_layer.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tmk_core/common/action_layer.c b/tmk_core/common/action_layer.c index fc721a7323..e817c0d515 100644 --- a/tmk_core/common/action_layer.c +++ b/tmk_core/common/action_layer.c @@ -111,7 +111,7 @@ void layer_debug(void) #endif #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) -uint8_t source_layers_cache[MAX_LAYER_BITS][(MATRIX_ROWS * MATRIX_COLS + 7) / 8] = {0}; +uint8_t source_layers_cache[(MATRIX_ROWS * MATRIX_COLS + 7) / 8][MAX_LAYER_BITS] = {0}; void update_source_layers_cache(keypos_t key, uint8_t layer) { @@ -120,9 +120,9 @@ void update_source_layers_cache(keypos_t key, uint8_t layer) const uint8_t storage_bit = key_number % 8; for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) { - source_layers_cache[bit_number][storage_row] ^= + source_layers_cache[storage_row][bit_number] ^= (-((layer & (1U << bit_number)) != 0) - ^ source_layers_cache[bit_number][storage_row]) + ^ source_layers_cache[storage_row][bit_number]) & (1U << storage_bit); } } @@ -136,7 +136,7 @@ uint8_t read_source_layers_cache(keypos_t key) for (uint8_t bit_number = 0; bit_number < MAX_LAYER_BITS; bit_number++) { layer |= - ((source_layers_cache[bit_number][storage_row] + ((source_layers_cache[storage_row][bit_number] & (1U << storage_bit)) != 0) << bit_number; } From caf3e48de8b29aa21343301dd22ce425e8f7c3ba Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 17:40:16 -0500 Subject: [PATCH 15/55] LOCAL COMMIT LOCAL COMMIT --- keyboard/atomic/Makefile | 24 +- keyboard/atomic/config.h | 93 +------- keyboard/atomic/keymaps/default.c | 287 +++++++++++++++++------ keyboard/atomic/keymaps/pc_atomic.c | 37 ++- keyboard/planck/keymaps/default/keymap.c | 16 +- 5 files changed, 264 insertions(+), 193 deletions(-) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 95554ea89d..17baeaf536 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -114,19 +114,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options # comment out to disable the options. # -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 = yes # Breathing sleep LED during USB suspend -NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA -#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 +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 +#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +#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 +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/atomic/config.h b/keyboard/atomic/config.h index e28fa18c07..11c0e848e1 100644 --- a/keyboard/atomic/config.h +++ b/keyboard/atomic/config.h @@ -32,109 +32,36 @@ along with this program. If not, see . #define MATRIX_ROWS 5 #define MATRIX_COLS 15 -/* - * 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) - * -*/ +// Planck PCB default pin-out +// Change this to how you wired your keyboard +// COLS: Left to right, ROWS: Top to bottom #define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } #define ROWS (int []){ D0, D5, B5, B6, C6 } /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -/* define if matrix has ghost (lacks anti-ghosting diodes) */ +/* define if matrix has ghost */ //#define MATRIX_HAS_GHOST /* number of backlight levels */ +/* NOTE: this is the max value of 0..BACKLIGHT_LEVELS so really 16 levels. */ #define BACKLIGHT_LEVELS 3 +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCE 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 B -//#define MAGIC_KEY_LOCK CAPS -//#define MAGIC_KEY_EEPROM E -//#define MAGIC_KEY_NKRO N -//#define MAGIC_KEY_SLEEP_LED Z /* * Feature disable options @@ -154,4 +81,6 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION +#define MAGIC_KEY_BOOTLOADER B + #endif diff --git a/keyboard/atomic/keymaps/default.c b/keyboard/atomic/keymaps/default.c index d62e5c2445..4ed8a71f15 100644 --- a/keyboard/atomic/keymaps/default.c +++ b/keyboard/atomic/keymaps/default.c @@ -1,95 +1,234 @@ #include "atomic.h" +// Fillers to make layering more clear +#define _______ KC_TRNS +#define ___T___ KC_TRNS +#define XXXXXXX KC_NO + +// Layer shorthand #define _QW 0 #define _CM 1 #define _DV 2 #define _LW 3 #define _RS 4 +#define _FN 4 -// ROW 1 OPTIONS -// .--------------------------------------------------------------------------------------------------------------------------------------. -// | | | | | | | | | | | | | | | | -// '--------------------------------------------------------------------------------------------------------------------------------------' -// .- 2u ------------. -// | X | -// '-----------------' +/* ROW 1 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. + * | KEY . XXXXXX | + * '-----------------' + */ + +/* ROW 2 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. .- 2u ------------. + * | KEY . XXXXXX | | KEY . XXXXXX | + * '-----------------' '-----------------' + */ + +/* ROW 3 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. .- 2u ------------. + * | KEY . XXXXXX | | X | + * '-----------------' '-----------------' + * .- 2u ------------. + * | X | + * '-----------------' + */ + +/* ROW 4 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 2u ------------. + * | KEY . XXXXXX | + * '-----------------' + * .- 2u ------------. .- 2u ------------. + * | KEY . XXXXXX | | KEY . XXXXXX | + * '-----------------' '-----------------' + * .- 2u ------------. + * | KEY . XXXXXX | + * '-----------------' + */ -// ROW 2 OPTIONS -// .--------------------------------------------------------------------------------------------------------------------------------------. -// | | | | | | | | | | | | | | | | -// '--------------------------------------------------------------------------------------------------------------------------------------' -// .- 2u ------------. .- 2u ------------. -// | X | | X | -// '-----------------' '-----------------' - -// ROW 3 OPTIONS -// .--------------------------------------------------------------------------------------------------------------------------------------. -// | | | | | | | | | | | | | | | | -// '--------------------------------------------------------------------------------------------------------------------------------------' -// .- 2u ------------. .- 2u ------------. -// | X | | X | -// '-----------------' '-----------------' -// .- 2u ------------. -// | X | -// '-----------------' - -// ROW 4 OPTIONS -// .--------------------------------------------------------------------------------------------------------------------------------------. -// | | | | | | | | | | | | | | | | -// '--------------------------------------------------------------------------------------------------------------------------------------' -// .- 2u ------------. -// | X | -// '-----------------' -// .- 2u ------------. .- 2u ------------. -// | X | | X | -// '-----------------' '-----------------' -// .- 2u ------------. -// | X | -// '-----------------' - -// ROW 5 OPTIONS -// .--------------------------------------------------------------------------------------------------------------------------------------. -// | | | | | | | | | | | | | | | | -// '--------------------------------------------------------------------------------------------------------------------------------------' -// .- 1.25u --+ 1.25u ------- 1.25u +--- 1.25u --- 2u -------------- 1.25u ---- 1.25u ------ 1.25u +---- 1.25u . -// | X | X | X | X | X | X | X | X | X | -// '-----------------------------------------------------------------------------------------------------------' -// .- 2u ------------. -// | X | -// '-----------------' -// .--------------------- 6.25u ----------------------------. -// | X | -// '--------------------------------------------------------' -// .----------------------- 6.25u ---------------------------- 1.25u ---- 1.25u ---- 1.25u ------ 1.25u +-- 1.25u --. -// | X | X | X | X | X | X | -// '----------------------------------------------------------------------------------------------------------------' +/* ROW 5 OPTIONS + * .--------------------------------------------------------------------------------------------------------------------------------------. + * | | | | | | | | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + * .- 1.25u --+ 1.25u ------- 1.25u +--- 1.25u --- 2u -------------- 1.25u ---- 1.25u ------ 1.25u +---- 1.25u . + * | X | X | X | X | X | X | X | X | X | + * '-----------------------------------------------------------------------------------------------------------' + * .- 2u ------------. + * | X | + * '-----------------' + * .--------------------- 6.25u ----------------------------. + * | X | + * '--------------------------------------------------------' + * .----------------------- 6.25u ---------------------------- 1.25u ---- 1.25u ---- 1.25u ------ 1.25u +-- 1.25u --. + * | X | X | X | X | X | X | + * '----------------------------------------------------------------------------------------------------------------' + */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = { /* Qwerty */ - { 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_DEL }, - { 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_ESC, 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_ENT, KC_PGUP }, - { 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_UP, KC_PGDN }, - { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI, KC_SPC, KC_SPC, KC_RGUI, KC_RGUI, KC_RALT, KC_RCTL, BL_STEP, KC_LEFT, KC_DOWN, KC_RGHT }, - } + +/* QWERTY - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | S | D | F | G | H | J | K | L | ; | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | N | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_QW] = { /* QWERTY */ + { 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_BSPC }, + { KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { 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_ENT, KC_ENT, KC_PGUP }, + { 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_UP, KC_PGDN }, + { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* COLEMAK - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | Q | W | F | P | G | J | L | U | Y | ; | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | R | S | T | D | H | N | E | I | O | ' | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | Z | X | C | V | B | K | M | , | . | / | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_CM] = { /* COLEMAK */ + { 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_BSPC }, + { KC_TAB, 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_BSLS, KC_DEL }, + { 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_ENT, KC_ENT, KC_PGUP }, + { 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_RSFT, KC_UP, KC_PGDN }, + { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* DVORAK - MIT ENHANCED / GRID COMPATIBLE + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | XXXXXX . BACKSP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | TAB | ' | , | . | P | Y | F | G | C | R | L | [ | ] | \ | DEL | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | ESC | A | O | E | U | I | D | H | T | N | S | / | XXXXXX . ENTER | PG UP | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | LSHIFT | ; | Q | J | K | X | B | M | W | V | Z | XXXXXX . RSHIFT | UP | PG DN | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | BRITE | LCTRL | LALT | LGUI | RAISE | XXXXXX . SPACE | LOWER | RGUI | RALT | RCTRL | FN | LEFT | DOWN | RIGHT | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_DV] = { /* DVORAK */ + { 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_BSPC }, + { KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL }, + { 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_ENT, KC_ENT, KC_PGUP }, + { KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_RSFT, KC_UP, KC_PGDN }, + { M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_RS), KC_SPC, KC_SPC, MO(_LW), KC_RGUI, KC_RALT, KC_RCTL, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT }, + }, + +/* LOWERED + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | | | | | | | | | | | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | | | | | | | | | | | | XXXXXX . | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | | | | | | | | | | | XXXXXX . | | | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_LW] = { /* LOWERED */ + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + +/* RAISED + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | | | | | | | | | | | | | | | INS | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | | | | | | | | | | | | | XXXXXX . | | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | | | | | | | | | | | XXXXXX . | | | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . | | | | | | | | | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_RS] = { /* RAISED */ + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + }, + +/* FUNCTION + * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. + * | NUM LK | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| + * | SCR LK | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | F22 | F23 | F24 | PAUSE | PR SCR | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| + * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT | VOL+ | VOL- | PLAY | | XXXXXX . | WHEEL+ | + * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| + * | | | QWERTY | COLEMK | DVORAK | | | | | | | XXXXXX . | MOUS U | WHEEL- | + * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| + * | | | | | | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R | + * '--------------------------------------------------------------------------------------------------------------------------------------' + */ + + [_FN] = { /* FUNCTION */ + { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { KC_SLCK, 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_PAUS, KC_PSCR }, + { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, + { _______, _______, DF(_QW), DF(_CM), DF(_DV), _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + }, }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), }; -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 - switch(id) { - case 0: - return MACRODOWN(TYPE(KC_T), END); - break; - } + switch(id) { + case 0: + if (record->event.pressed) { + register_code(KC_RSFT); + #ifdef BACKLIGHT_ENABLE + backlight_step(); + #endif + } else { + unregister_code(KC_RSFT); + } + break; + } return MACRO_NONE; }; diff --git a/keyboard/atomic/keymaps/pc_atomic.c b/keyboard/atomic/keymaps/pc_atomic.c index 2792ff6e73..1c0425a76d 100644 --- a/keyboard/atomic/keymaps/pc_atomic.c +++ b/keyboard/atomic/keymaps/pc_atomic.c @@ -23,34 +23,33 @@ */ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -// [_QW] = { /* QWERTY */ - [0] = { /* 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, XXXXXXX, KC_BSPC }, + [_QW] = { /* 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_BSPC, XXXXXXX }, { 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, XXXXXXX, KC_ENT, KC_PGUP }, - { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX, KC_RSFT, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, MO(_FN), KC_LALT, MO(_RS), XXXXXXX, KC_SPC, MO(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + { 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, XXXXXXX, KC_PGUP }, + { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_UP, KC_PGDN }, + { KC_LCTL, KC_LGUI, MO(_FN), KC_LALT, MO(_RS), KC_SPC, XXXXXXX, MO(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, }, [_LW] = { /* LOWERED */ - { 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_PSCR, KC_PAUS }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { 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, ___T___, ___T___ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, }, [_RS] = { /* RAISED */ - { KC_TILD, 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_PAUS }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, }, [_FN] = { /* FUNCTION */ - { KC_TILD, 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_PAUS }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { KC_SLCK, 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_PAUS, KC_PSCR }, + { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, + { _______, _______, _______, DF(_CM), DF(_DV), _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, }, }; diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 988deee99d..f1c7b56102 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -16,6 +16,10 @@ #define _LW 3 #define _RS 4 +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Qwerty @@ -85,9 +89,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_RS] = { {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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, 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, DF(_QW), DF(_CM), DF(_DV), RESET, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, /* Lower @@ -103,9 +107,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LW] = { {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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, 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, DF(_QW), DF(_CM), DF(_DV), RESET, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} } }; From 390fd3107a84277151ceb63255c859307221a290 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 18:48:25 -0500 Subject: [PATCH 16/55] local files local files --- keyboard/planck/config.h | 2 +- keyboard/planck/keymaps/pc.c | 40 +++++++++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index d435cc795c..7d64f09773 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -73,7 +73,7 @@ along with this program. If not, see . */ /* disable debug print */ -#define NO_DEBUG +//#define NO_DEBUG /* disable print */ //#define NO_PRINT diff --git a/keyboard/planck/keymaps/pc.c b/keyboard/planck/keymaps/pc.c index 0adee8b2e4..ed062609f4 100644 --- a/keyboard/planck/keymaps/pc.c +++ b/keyboard/planck/keymaps/pc.c @@ -15,6 +15,14 @@ #define _DV 2 #define _LW 3 #define _RS 4 +#define _FN 5 + +#define XXXXXXX KC_NO +#define _______ KC_TRNS + +#define ASFT(kc) LSFT(RSFT(kc)) +#define MG_B ASFT(KC_B) +#define MG_H ASFT(KC_H) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -26,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------|------+------+------+------+------+------| * | Shift| Z | X | C | V | B | N | M | , | . | Up |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Ctrl | GUI | Alt | |Raise | Space |Lower | / | Left | Down |Right | + * | Ctrl | GUI | Alt | Del |Raise | Space |Lower | / | Left | Down |Right | * `-----------------------------------------------------------------------------------' */ [_QW] = { @@ -85,9 +93,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_RS] = { {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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, 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, XXXXXXX, XXXXXXX, XXXXXXX, RESET, _______}, + {_______, _______, _______, _______, MO(_FN), _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, /* Lower @@ -103,9 +111,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_LW] = { {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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, 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, XXXXXXX, XXXXXXX, XXXXXXX, MG_B, _______}, + {_______, _______, _______, _______, _______, _______, _______, MO(_FN), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Function + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Brite| Ctrl | Alt | GUI |Raise | Space |Lower | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_FN] = { + {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX}, + {XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MG_H, 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} } }; From 3755ef5ddbdad9f25a53fee951c3eb78035b52c3 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 20:57:51 -0500 Subject: [PATCH 17/55] Compiler Warnings / Atomic TLC Corrected compiler warnings for a number of issues. Gave Atomic some TLC. --- keyboard/atomic/Makefile | 4 +- keyboard/atomic/atomic.h | 3 + keyboard/atomic/backlight.c | 2 + keyboard/atomic/config.h | 93 +++++++++++++++++++++++++---- keyboard/atomic/keymaps/default.c | 26 ++++---- keyboard/atomic/keymaps/pc_atomic.c | 3 +- quantum/keymap_common.c | 6 +- quantum/keymap_common.h | 2 - quantum/keymap_midi.h | 2 +- tmk_core/common/action_code.h | 2 +- tmk_core/common/keymap.c | 3 +- 11 files changed, 112 insertions(+), 34 deletions(-) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 17baeaf536..2b017446dc 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -120,13 +120,13 @@ 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 = yes # USB Nkey Rollover - not yet supported in LUFA -#BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +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 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/atomic/atomic.h b/keyboard/atomic/atomic.h index d8574efa93..d5461e424d 100644 --- a/keyboard/atomic/atomic.h +++ b/keyboard/atomic/atomic.h @@ -26,5 +26,8 @@ void matrix_init_user(void); void matrix_scan_user(void); +void process_action_user(keyrecord_t *record); +void led_set_user(uint8_t usb_led); +void backlight_init_ports(void); #endif \ No newline at end of file diff --git a/keyboard/atomic/backlight.c b/keyboard/atomic/backlight.c index f69364b2af..647b57e718 100644 --- a/keyboard/atomic/backlight.c +++ b/keyboard/atomic/backlight.c @@ -1,6 +1,8 @@ #include #include "backlight.h" +#include "atomic.h" + #define CHANNEL OCR1C diff --git a/keyboard/atomic/config.h b/keyboard/atomic/config.h index 11c0e848e1..f30a9e6cc4 100644 --- a/keyboard/atomic/config.h +++ b/keyboard/atomic/config.h @@ -32,36 +32,109 @@ along with this program. If not, see . #define MATRIX_ROWS 5 #define MATRIX_COLS 15 -// Planck PCB default pin-out -// Change this to how you wired your keyboard -// COLS: Left to right, ROWS: Top to bottom +/* + * 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 COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } #define ROWS (int []){ D0, D5, B5, B6, C6 } /* COL2ROW or ROW2COL */ #define DIODE_DIRECTION COL2ROW -/* define if matrix has ghost */ +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST /* number of backlight levels */ -/* NOTE: this is the max value of 0..BACKLIGHT_LEVELS so really 16 levels. */ #define BACKLIGHT_LEVELS 3 -/* Set 0 if debouncing isn't needed */ -#define DEBOUNCE 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 */ +/* + * 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 @@ -81,6 +154,4 @@ along with this program. If not, see . //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION -#define MAGIC_KEY_BOOTLOADER B - #endif diff --git a/keyboard/atomic/keymaps/default.c b/keyboard/atomic/keymaps/default.c index 4ed8a71f15..0ede363a1f 100644 --- a/keyboard/atomic/keymaps/default.c +++ b/keyboard/atomic/keymaps/default.c @@ -11,7 +11,7 @@ #define _DV 2 #define _LW 3 #define _RS 4 -#define _FN 4 +#define _FN 5 /* ROW 1 OPTIONS * .--------------------------------------------------------------------------------------------------------------------------------------. @@ -148,11 +148,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | | | | | | | | | | | | | | INS | + * | | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | | INS | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | | | | | | | | | | | | | XXXXXX . | | + * | | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | XXXXXX . | | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | | | | | | | | | | | | XXXXXX . | | | + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| * | | | | | | XXXXXX . | | | | | | | | | * '--------------------------------------------------------------------------------------------------------------------------------------' @@ -160,9 +160,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LW] = { /* LOWERED */ { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, KC_INS }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, ___T___, ___T___, _______ }, + { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, }, @@ -170,11 +170,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * .---------------------------------------------------------------------------------------------------------------------- 2u ------------. * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | XXXXXX . | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------| - * | | | | | | | | | | | | | | | INS | + * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | | | | INS | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------| - * | | | | | | | | | | | | | XXXXXX . | | + * | | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | XXXXXX . | | * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------| - * | | | | | | | | | | | | XXXXXX . | | | + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | XXXXXX . | | | * |--------+--------+--------+--------+--------+- 2u ------------+--------+--------+--------+--------+-----------------+--------+--------| * | | | | | | XXXXXX . | | | | | | | | | * '--------------------------------------------------------------------------------------------------------------------------------------' @@ -182,9 +182,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_RS] = { /* RAISED */ { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, KC_INS }, + { _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, ___T___, ___T___, _______ }, + { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, }, diff --git a/keyboard/atomic/keymaps/pc_atomic.c b/keyboard/atomic/keymaps/pc_atomic.c index 1c0425a76d..bdf575046b 100644 --- a/keyboard/atomic/keymaps/pc_atomic.c +++ b/keyboard/atomic/keymaps/pc_atomic.c @@ -6,6 +6,7 @@ #define _FN 3 #define _______ KC_TRNS +#define ___T___ KC_TRNS #define XXXXXXX KC_NO /* @@ -48,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, { KC_SLCK, 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_PAUS, KC_PSCR }, { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, - { _______, _______, _______, DF(_CM), DF(_DV), _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, }, }; diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 2eef4f15a7..ae6cddb343 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -87,6 +87,7 @@ action_t action_for_key(uint8_t layer, keypos_t key) return action; #endif } else if (keycode == RESET) { // RESET is 0x5000, which is why this is here + action_t action; clear_keyboard(); #ifdef AUDIO_ENABLE play_notes(&goodbye, 5, false); @@ -96,12 +97,13 @@ action_t action_for_key(uint8_t layer, keypos_t key) *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific #endif bootloader_jump(); - return; + return action; } else if (keycode == DEBUG) { // DEBUG is 0x5001 // TODO: Does this actually work? + action_t action; print("\nDEBUG: enabled.\n"); debug_enable = true; - return; + return action; } else if (keycode >= 0x5000 && keycode < 0x6000) { // Layer movement shortcuts // See .h to see constraints/usage diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 3db40772e0..4a877d2a70 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -184,8 +184,6 @@ extern const uint16_t fn_actions[]; // Toggle to layer - 256 layer max #define TG(layer) (layer | 0x5400) -#define MIDI(n) (n | 0x6000) - // M-od, T-ap - 256 keycode max #define MT(mod, kc) (kc | 0x7000 | ((mod & 0xF) << 8)) #define CTL_T(kc) MT(0x1, kc) diff --git a/quantum/keymap_midi.h b/quantum/keymap_midi.h index a89420ce2a..436fb2eb50 100644 --- a/quantum/keymap_midi.h +++ b/quantum/keymap_midi.h @@ -20,7 +20,7 @@ along with this program. If not, see . #include -#define MIDI 0x6000 +#define MIDI(n) (n | 0x6000) #define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000 #define CHNL(note, channel) (note + (channel << 8)) diff --git a/tmk_core/common/action_code.h b/tmk_core/common/action_code.h index 4fe9c1d581..2b0b0b077e 100644 --- a/tmk_core/common/action_code.h +++ b/tmk_core/common/action_code.h @@ -301,7 +301,7 @@ enum backlight_opt { #define ACTION_BACKLIGHT_DECREASE() ACTION(ACT_BACKLIGHT, BACKLIGHT_DECREASE << 8) #define ACTION_BACKLIGHT_TOGGLE() ACTION(ACT_BACKLIGHT, BACKLIGHT_TOGGLE << 8) #define ACTION_BACKLIGHT_STEP() ACTION(ACT_BACKLIGHT, BACKLIGHT_STEP << 8) -#define ACTION_BACKLIGHT_LEVEL(level) ACTION(ACT_BACKLIGHT, BACKLIGHT_LEVEL << 8 | level) +#define ACTION_BACKLIGHT_LEVEL(level) ACTION(ACT_BACKLIGHT, BACKLIGHT_LEVEL << 8 | (level)) /* Command */ #define ACTION_COMMAND(id, opt) ACTION(ACT_COMMAND, (opt)<<8 | (addr)) /* Function */ diff --git a/tmk_core/common/keymap.c b/tmk_core/common/keymap.c index 11f4aa8aaa..8955fc710d 100644 --- a/tmk_core/common/keymap.c +++ b/tmk_core/common/keymap.c @@ -22,7 +22,7 @@ along with this program. If not, see . #include "action_macro.h" #include "wait.h" #include "debug.h" - +#include "bootloader.h" static action_t keycode_to_action(uint8_t keycode); @@ -143,6 +143,7 @@ static action_t keycode_to_action(uint8_t keycode) action.code = ACTION_TRANSPARENT; break; case KC_BOOTLOADER: + action.code = ACTION_NO; clear_keyboard(); wait_ms(50); bootloader_jump(); // not return From 9ff9317720d4fcee6b35800f71d598f9a59de661 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 21:55:04 -0500 Subject: [PATCH 18/55] Corrected spacing. --- keyboard/planck/Makefile | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 17e5cd45cc..ae637fc295 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -130,20 +130,22 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options # comment out to disable the options. # -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 +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 +# 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 +# AUDIO_ENABLE = yes # Audio output on port C6 +# UNICODE_ENABLE = yes # Unicode +# BLUETOOTH_ENABLE = ye # Enable Bluetooth with the Adafruit EZ-Key HID +# RGBLIGHT_ENABLE = yes # 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 = 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 -# AUDIO_ENABLE = YES # Audio output on port C6 -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID -# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend + ifdef BACKLIGHT_ENABLE SRC += backlight.c From aa9eaa97730d9dea730e74b6d5a01bc344af9bfd Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 21:56:27 -0500 Subject: [PATCH 19/55] Corrected spacing. --- keyboard/atomic/Makefile | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 2b017446dc..20cf4fff18 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -114,19 +114,19 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # Build Options # comment out to disable the options. # -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 -#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA -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 +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 +#NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +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 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend +#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax From 95a44cdf01a98180363e8039d769fa7be92b0194 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 22:00:36 -0500 Subject: [PATCH 20/55] Disabled print. --- keyboard/planck/config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index 7d64f09773..d3719e0cb1 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -73,10 +73,10 @@ along with this program. If not, see . */ /* disable debug print */ -//#define NO_DEBUG +#define NO_DEBUG /* disable print */ -//#define NO_PRINT +#define NO_PRINT /* disable action features */ //#define NO_ACTION_LAYER From 2900b4884598b06ed59371c48ecea9d3f0bff5ac Mon Sep 17 00:00:00 2001 From: IBNobody Date: Wed, 13 Apr 2016 22:04:44 -0500 Subject: [PATCH 21/55] Added parenthesis to midi macro. --- quantum/keymap_midi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantum/keymap_midi.h b/quantum/keymap_midi.h index 436fb2eb50..795f26380e 100644 --- a/quantum/keymap_midi.h +++ b/quantum/keymap_midi.h @@ -20,7 +20,7 @@ along with this program. If not, see . #include -#define MIDI(n) (n | 0x6000) +#define MIDI(n) ((n) | 0x6000) #define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000 #define CHNL(note, channel) (note + (channel << 8)) From 44e4320b2ea508d75f28cb6796f6cf414164564b Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 06:34:56 -0500 Subject: [PATCH 22/55] Nightly --- keyboard/planck/keymaps/pc.c | 71 +++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 18 deletions(-) diff --git a/keyboard/planck/keymaps/pc.c b/keyboard/planck/keymaps/pc.c index ed062609f4..20bb5d86d7 100644 --- a/keyboard/planck/keymaps/pc.c +++ b/keyboard/planck/keymaps/pc.c @@ -2,6 +2,8 @@ // this is the style you want to emulate. #include "planck.h" +#include "print.h" +#include "action_layer.h" #ifdef BACKLIGHT_ENABLE #include "backlight.h" #endif @@ -38,10 +40,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_QW] = { - {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, + {RESET, 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_UP, KC_ENT }, - {KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} + {KC_LCTL, KC_LGUI, KC_LALT, KC_DEL, M(_LW), KC_SPC, KC_SPC, M(_RS), KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT} }, /* Colemak @@ -95,7 +97,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, XXXXXXX, XXXXXXX, XXXXXXX, RESET, _______}, - {_______, _______, _______, _______, MO(_FN), _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, /* Lower @@ -113,7 +115,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, XXXXXXX, XXXXXXX, XXXXXXX, MG_B, _______}, - {_______, _______, _______, _______, _______, _______, _______, MO(_FN), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, /* Function @@ -139,20 +141,53 @@ const uint16_t PROGMEM fn_actions[] = { }; + +int tri_layer = 0; +void update_tri_layer(int layer) { + if (tri_layer > 1) { + layer_on(layer); + } else { + layer_off(layer); + } +} + + 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); - #ifdef BACKLIGHT_ENABLE - backlight_step(); - #endif - } else { - unregister_code(KC_RSFT); - } - break; - } - return MACRO_NONE; + // MACRODOWN only works in this function + switch(id) + { + case _RS: + if (record->event.pressed) { + print("RS_DN"); + layer_on(_RS); + tri_layer++; + update_tri_layer(_FN); + } else { + print("RS_UP"); + layer_off(_RS); + tri_layer--; + update_tri_layer(_FN); + phex(layer_state); + } + break; + + case _LW: + if (record->event.pressed) { + print("LW_DN"); + layer_on(_LW); + tri_layer++; + update_tri_layer(_FN); + } else { + print("LW_UP"); + layer_off(_LW); + tri_layer--; + update_tri_layer(_FN); + } + break; + + default: + break; + } + return MACRO_NONE; }; From 59e041672ccd35060aba75c7c05561a39c05d742 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 08:20:55 -0500 Subject: [PATCH 23/55] Remapped magic bootloader key to B. --- keyboard/atomic/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboard/atomic/config.h b/keyboard/atomic/config.h index f30a9e6cc4..1b34decf9c 100644 --- a/keyboard/atomic/config.h +++ b/keyboard/atomic/config.h @@ -130,7 +130,7 @@ along with this program. If not, see . //#define MAGIC_KEY_LAYER7 7 //#define MAGIC_KEY_LAYER8 8 //#define MAGIC_KEY_LAYER9 9 -//#define MAGIC_KEY_BOOTLOADER PAUSE +#define MAGIC_KEY_BOOTLOADER B //#define MAGIC_KEY_LOCK CAPS //#define MAGIC_KEY_EEPROM E //#define MAGIC_KEY_NKRO N From 4b4d3069b4e71de370f0fea8a949f1ae39bb0993 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 08:50:01 -0500 Subject: [PATCH 24/55] Update and rename pc_atomic.c to pvc_atomic.c Also removed unused FNs --- keyboard/atomic/keymaps/{pc_atomic.c => pvc_atomic.c} | 6 ------ 1 file changed, 6 deletions(-) rename keyboard/atomic/keymaps/{pc_atomic.c => pvc_atomic.c} (96%) diff --git a/keyboard/atomic/keymaps/pc_atomic.c b/keyboard/atomic/keymaps/pvc_atomic.c similarity index 96% rename from keyboard/atomic/keymaps/pc_atomic.c rename to keyboard/atomic/keymaps/pvc_atomic.c index bdf575046b..b18e3a377a 100644 --- a/keyboard/atomic/keymaps/pc_atomic.c +++ b/keyboard/atomic/keymaps/pvc_atomic.c @@ -55,12 +55,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), - }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) From 19061f2ff1283f756b162055bac776814caa2d84 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 08:54:22 -0500 Subject: [PATCH 25/55] Update and rename pc_atomic.c to pvc_atomic.c --- keyboard/atomic/keymaps/{pc_atomic.c => pvc_atomic.c} | 6 ------ 1 file changed, 6 deletions(-) rename keyboard/atomic/keymaps/{pc_atomic.c => pvc_atomic.c} (96%) diff --git a/keyboard/atomic/keymaps/pc_atomic.c b/keyboard/atomic/keymaps/pvc_atomic.c similarity index 96% rename from keyboard/atomic/keymaps/pc_atomic.c rename to keyboard/atomic/keymaps/pvc_atomic.c index bdf575046b..b18e3a377a 100644 --- a/keyboard/atomic/keymaps/pc_atomic.c +++ b/keyboard/atomic/keymaps/pvc_atomic.c @@ -55,12 +55,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; const uint16_t PROGMEM fn_actions[] = { - [1] = ACTION_LAYER_MOMENTARY(2), // to RAISE - [2] = ACTION_LAYER_MOMENTARY(3), // to LOWER - - [3] = ACTION_DEFAULT_LAYER_SET(0), - [4] = ACTION_DEFAULT_LAYER_SET(1), - }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) From 3d601c1bce23cf31052b9a61818fd1343970499b Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 08:56:27 -0500 Subject: [PATCH 26/55] Rename pc.c to pvc_planck.c --- keyboard/planck/keymaps/{pc.c => pvc_planck.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename keyboard/planck/keymaps/{pc.c => pvc_planck.c} (100%) diff --git a/keyboard/planck/keymaps/pc.c b/keyboard/planck/keymaps/pvc_planck.c similarity index 100% rename from keyboard/planck/keymaps/pc.c rename to keyboard/planck/keymaps/pvc_planck.c From 3dd20f2b6c16ea56bacc5e1581db3fbc1cfc5444 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 11:35:49 -0500 Subject: [PATCH 27/55] Rename pc.c to pvc_planck.c --- keyboard/planck/keymaps/{pc.c => pvc_planck.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename keyboard/planck/keymaps/{pc.c => pvc_planck.c} (100%) diff --git a/keyboard/planck/keymaps/pc.c b/keyboard/planck/keymaps/pvc_planck.c similarity index 100% rename from keyboard/planck/keymaps/pc.c rename to keyboard/planck/keymaps/pvc_planck.c From cf17687f29820b6bf9b8feb3b23dec6e271572c5 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 12:59:16 -0500 Subject: [PATCH 28/55] Adding personal build file settings --- keyboard/atomic/Makefile | 4 ++-- keyboard/planck/Makefile | 4 ++-- keyboard/planck/config.h | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 20cf4fff18..f95b2350cd 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -119,8 +119,8 @@ 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 = yes # USB Nkey Rollover - not yet supported in LUFA -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA +#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 diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index ae637fc295..5271c27957 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -135,8 +135,8 @@ 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 = 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 +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 # AUDIO_ENABLE = yes # Audio output on port C6 # UNICODE_ENABLE = yes # Unicode diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index d3719e0cb1..7d64f09773 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -73,10 +73,10 @@ along with this program. If not, see . */ /* disable debug print */ -#define NO_DEBUG +//#define NO_DEBUG /* disable print */ -#define NO_PRINT +//#define NO_PRINT /* disable action features */ //#define NO_ACTION_LAYER From f051496f1343259f4da8c5d917b9c9e47b97e38c Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 18:01:29 -0500 Subject: [PATCH 29/55] Checkin --- keyboard/atomic/Makefile | 7 ++ keyboard/atomic/keymaps/pvc_atomic.c | 170 +++++++++++++++++++++++++-- tmk_core/common/action_layer.h | 1 + 3 files changed, 169 insertions(+), 9 deletions(-) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index f95b2350cd..206b5f119c 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -136,4 +136,11 @@ VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) VPATH += $(TMK_DIR) +debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION +debug-on: all + +debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT +debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) +debug-off: all + include $(TOP_DIR)/quantum/quantum.mk diff --git a/keyboard/atomic/keymaps/pvc_atomic.c b/keyboard/atomic/keymaps/pvc_atomic.c index b18e3a377a..3ddd3e3294 100644 --- a/keyboard/atomic/keymaps/pvc_atomic.c +++ b/keyboard/atomic/keymaps/pvc_atomic.c @@ -1,9 +1,12 @@ #include "atomic.h" +#include "action_layer.h" #define _QW 0 #define _LW 1 #define _RS 2 #define _FN 3 +#define _F1 4 +#define _F2 5 #define _______ KC_TRNS #define ___T___ KC_TRNS @@ -29,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_BSLS, KC_DEL }, { 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, XXXXXXX, KC_PGUP }, { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, MO(_FN), KC_LALT, MO(_RS), KC_SPC, XXXXXXX, MO(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + { KC_LCTL, KC_LGUI, M(_FN), KC_LALT, M(_RS), KC_SPC, XXXXXXX, M(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, }, [_LW] = { /* LOWERED */ { 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, ___T___, ___T___ }, @@ -52,18 +55,167 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, }, + [_F1] = { /* FUNCTION */ + { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { KC_SLCK, 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_PAUS, KC_PSCR }, + { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + }, + [_F2] = { /* FUNCTION */ + { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { KC_SLCK, 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_PAUS, KC_PSCR }, + { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + }, }; +#define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) +#define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer))) + +void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) +{ + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) + { + layer_on(layer3); + } + else + { + layer_off(layer3); + } +} + +void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order) +{ + if (order) + { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) + { + layer_on(layer3); + } + else + { + layer_off(layer3); + layer_off(layer4); + } + } + else + { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) + { + layer_on(layer4); + } + else + { + layer_off(layer3); + layer_off(layer4); + } + } +} + +/* ignore me +void change_quad_layer(uint8_t focus_layer, bool desired_focus_layer_state, uint8_t pair_layer, uint8_t layer3, uint8_t layer4) +{ + + // If desired focus layer state == 1 and current focus layer state == 1 + if ((desired_focus_layer_state) && IS_LAYER_ON(layer1)) + { + // Do Nothing + } + // If desired focus layer state == 0 and current focus layer state == 1 + else if ((desired_focus_layer_state) && IS_LAYER_ON(layer1)) + { + // If + layer_off(layer3); + layer_off(layer4); + } + } + else + { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) + { + layer_on(layer4); + } + else + { + layer_off(layer3); + layer_off(layer4); + } + } +} +*/ + 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 - switch(id) { - case 0: - return MACRODOWN(TYPE(KC_T), END); - break; - } - return MACRO_NONE; + + // MACRODOWN only works in this function + switch(id) + { + case _FN: + if (record->event.pressed) { + print("FN_DN\n"); + print_val_bin32(layer_state); + layer_on(_FN); + print_val_bin32(layer_state); + } else { + print("FN_UP\n"); + print_val_bin32(layer_state); + layer_off(_FN); + print_val_bin32(layer_state); + } + break; + + case _RS: + if (record->event.pressed) { + print("RS_DN\n"); + print_val_bin32(layer_state); + layer_on(_RS); + //tri_layer++; + print_val_bin32(layer_state); + //update_tri_layer(_RS, _LW, _FN); + update_quad_layer(_RS, _LW, _F1, _F2, 0); + print_val_bin32(layer_state); + } else { + print("RS_UP\n"); + print_val_bin32(layer_state); + layer_off(_RS); + //tri_layer--; + print_val_bin32(layer_state); + //update_tri_layer(_RS, _LW, _FN); + update_quad_layer(_RS, _LW, _F1, _F2, 0); + print_val_bin32(layer_state); + } + break; + + case _LW: + if (record->event.pressed) { + print("LW_DN\n"); + print_val_bin32(layer_state); + layer_on(_LW); + //tri_layer++; + print_val_bin32(layer_state); + //update_tri_layer(_RS, _LW, _FN); + update_quad_layer(_RS, _LW, _F1, _F2, 1); + print_val_bin32(layer_state); + } else { + print("LW_UP\n"); + print_val_bin32(layer_state); + layer_off(_LW); + //tri_layer--; + print_val_bin32(layer_state); + //update_tri_layer(_RS, _LW, _FN); + update_quad_layer(_RS, _LW, _F1, _F2, 1); + print_val_bin32(layer_state); + } + break; + + default: + break; + } + return MACRO_NONE; }; diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h index 3a4b1e3349..025cf5420f 100644 --- a/tmk_core/common/action_layer.h +++ b/tmk_core/common/action_layer.h @@ -68,6 +68,7 @@ void layer_xor(uint32_t state); #define layer_and(state) #define layer_xor(state) #define layer_debug() + #endif /* pressed actions cache */ From ddbe4307789b6087c3e6f146a5e02f1084f3cecc Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 14 Apr 2016 19:13:24 -0400 Subject: [PATCH 30/55] new defaults --- keyboard/planck/Makefile | 2 +- keyboard/planck/keymaps/default/keymap.c | 146 ++++++++++++++++++++--- 2 files changed, 133 insertions(+), 15 deletions(-) diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index ae637fc295..ee1c60feda 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -138,7 +138,7 @@ COMMAND_ENABLE = yes # Commands for debug and configuration # 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 -# AUDIO_ENABLE = yes # Audio output on port C6 +AUDIO_ENABLE = yes # Audio output on port C6 # UNICODE_ENABLE = yes # Unicode # BLUETOOTH_ENABLE = ye # Enable Bluetooth with the Adafruit EZ-Key HID # RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 30ad877605..e06567339e 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -5,6 +5,10 @@ #ifdef BACKLIGHT_ENABLE #include "backlight.h" #endif +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif // 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. @@ -15,6 +19,15 @@ #define _DV 2 #define _LW 3 #define _RS 4 +#define _AD 5 + +// Macro name shortcuts +#define M_QW 0 +#define M_CM 1 +#define M_DV 2 +#define M_LW 3 +#define M_RS 4 +#define M_BL 5 // Fillers to make layering more clear #define _______ KC_TRNS @@ -37,7 +50,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_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 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Colemak @@ -55,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {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 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Dvorak @@ -73,24 +86,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {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 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Raise * ,-----------------------------------------------------------------------------------. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Next | Vol- | Vol+ | Play | + * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ [_RS] = { {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, DF(_QW), DF(_CM), DF(_DV), RESET, _______}, + {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_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} }, @@ -98,18 +111,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |Qwerty|Colemk|Dvorak| Reset|Enter | + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | * |------+------+------+------+------+------+------+------+------+------+------+------| - * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Next | Vol- | Vol+ | Play | + * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ [_LW] = { {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, DF(_QW), DF(_CM), DF(_DV), RESET, _______}, + {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, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | | | | | |Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_AD] = { + {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, + {_______, _______, _______, _______, _______, _______, _______, M(M_QW), M(M_CM), M(M_DV), _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } }; @@ -117,11 +148,85 @@ const uint16_t PROGMEM fn_actions[] = { }; +float tone_qw[][2] = { + {440.0*pow(2.0,(67)/12.0), 400}, + {440.0*pow(2.0,(60)/12.0), 400}, + {0, 400}, + {440.0*pow(2.0,(67)/12.0), 1600} +}; + +float tone_cm[][2] = { + {440.0*pow(2.0,(67)/12.0), 400}, + {440.0*pow(2.0,(60)/12.0), 400}, + {0, 400}, + {440.0*pow(2.0,(67)/12.0), 1000}, + {0, 200}, + {440.0*pow(2.0,(67)/12.0), 1000} +}; + +float tone_dv[][2] = { + {440.0*pow(2.0,(67)/12.0), 400}, + {440.0*pow(2.0,(60)/12.0), 400}, + {0, 400}, + {440.0*pow(2.0,(67)/12.0), 800}, + {0, 200}, + {440.0*pow(2.0,(67)/12.0), 800}, + {0, 200}, + {440.0*pow(2.0,(67)/12.0), 800} +}; + + +#define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) +#define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer))) + +void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { + if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { + layer_on(layer3); + } else { + layer_off(layer3); + } +} 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: + case M_QW: + if (record->event.pressed) { + play_notes(&tone_qw, 4, false); + default_layer_set(1UL<<_QW); + } + break; + case M_CM: + if (record->event.pressed) { + play_notes(&tone_cm, 6, false); + default_layer_set(1UL<<_CM); + } + break; + case M_DV: + if (record->event.pressed) { + play_notes(&tone_dv, 8, false); + default_layer_set(1UL<<_DV); + } + break; + case M_LW: + if (record->event.pressed) { + layer_on(_LW); + update_tri_layer(_LW, _RS, _AD); + } else { + layer_off(_LW); + update_tri_layer(_LW, _RS, _AD); + } + break; + case M_RS: + if (record->event.pressed) { + layer_on(_RS); + update_tri_layer(_LW, _RS, _AD); + } else { + layer_off(_RS); + update_tri_layer(_LW, _RS, _AD); + } + break; + case M_BL: if (record->event.pressed) { register_code(KC_RSFT); #ifdef BACKLIGHT_ENABLE @@ -134,3 +239,16 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) } return MACRO_NONE; }; + +float start_up[][2] = { + {440.0*pow(2.0,(67)/12.0), 650}, + {440.0*pow(2.0,(64)/12.0), 450}, + {440.0*pow(2.0,(55)/12.0), 450}, + {440.0*pow(2.0,(60)/12.0), 450}, + {440.0*pow(2.0,(64)/12.0), 1000} +}; + +void matrix_init_user(void) { + init_notes(); + play_notes(&start_up, 5, false); +} From 63462bf8c12cea1c13ca1bd1f105fe53f556806e Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 14 Apr 2016 20:42:14 -0400 Subject: [PATCH 31/55] changing up the makefile a bit --- keyboard/planck/Makefile | 56 +++++++++++-------- keyboard/planck/keymaps/default/keymap.c | 61 ++++++++++++--------- keyboard/planck/keymaps/default/makefile.mk | 1 + quantum/quantum.mk | 8 +-- tmk_core/common.mk | 26 ++++----- tmk_core/protocol/lufa.mk | 4 +- 6 files changed, 90 insertions(+), 66 deletions(-) create mode 100644 keyboard/planck/keymaps/default/makefile.mk diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index ee1c60feda..dc6e46df2c 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -38,6 +38,27 @@ # To rebuild project do "make clean" then "make all". #---------------------------------------------------------------------------- +# Build Options +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically +# +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 +NKRO_ENABLE = no # 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 = 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. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + # Target file name (without extension). TARGET = planck @@ -62,17 +83,28 @@ ifneq ("$(wildcard keymaps/$(KEYMAP).c)","") else ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","") KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif else $(error Keymap file does not exist) +endif endif -endif + else + ifneq ("$(wildcard keymaps/default.c)","") KEYMAP_FILE = keymaps/default.c else KEYMAP_FILE = keymaps/default/keymap.c endif + +ifneq ("$(wildcard keymaps/default/makefile.mk)","") + include keymaps/default/makefile.mk endif + +endif + SRC := $(KEYMAP_FILE) $(SRC) CONFIG_H = config.h @@ -127,27 +159,7 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT OPT_DEFS += -DBOOTLOADER_SIZE=4096 -# Build Options -# comment out to disable the options. -# -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 -# 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 -AUDIO_ENABLE = yes # Audio output on port C6 -# UNICODE_ENABLE = yes # Unicode -# BLUETOOTH_ENABLE = ye # Enable Bluetooth with the Adafruit EZ-Key HID -# RGBLIGHT_ENABLE = yes # 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 = yes # Breathing sleep LED during USB suspend - - -ifdef BACKLIGHT_ENABLE +ifeq ($(BACKLIGHT_ENABLE), yes) SRC += backlight.c endif diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index e06567339e..97ba5d285e 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -89,24 +89,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, -/* 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 | | | | |Enter | - * |------+------+------+------+------+------+------+------+------+------+------+------| - * | | | | | | | | Next | Vol- | Vol+ | Play | - * `-----------------------------------------------------------------------------------' - */ -[_RS] = { - {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_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, - /* Lower * ,-----------------------------------------------------------------------------------. * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | @@ -125,6 +107,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {_______, _______, _______, _______, _______, _______, _______, _______, 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 | | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RS] = { + {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_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + /* Adjust (Lower + Raise) * ,-----------------------------------------------------------------------------------. * | | Reset| | | | | | | | | | Del | @@ -148,17 +148,18 @@ const uint16_t PROGMEM fn_actions[] = { }; +#ifdef AUDIO_ENABLE float tone_qw[][2] = { {440.0*pow(2.0,(67)/12.0), 400}, {440.0*pow(2.0,(60)/12.0), 400}, - {0, 400}, + {0, 800}, {440.0*pow(2.0,(67)/12.0), 1600} }; float tone_cm[][2] = { {440.0*pow(2.0,(67)/12.0), 400}, {440.0*pow(2.0,(60)/12.0), 400}, - {0, 400}, + {0, 800}, {440.0*pow(2.0,(67)/12.0), 1000}, {0, 200}, {440.0*pow(2.0,(67)/12.0), 1000} @@ -167,14 +168,14 @@ float tone_cm[][2] = { float tone_dv[][2] = { {440.0*pow(2.0,(67)/12.0), 400}, {440.0*pow(2.0,(60)/12.0), 400}, - {0, 400}, + {0, 800}, {440.0*pow(2.0,(67)/12.0), 800}, {0, 200}, {440.0*pow(2.0,(67)/12.0), 800}, {0, 200}, {440.0*pow(2.0,(67)/12.0), 800} }; - +#endif #define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) #define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer))) @@ -192,19 +193,25 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) switch(id) { case M_QW: if (record->event.pressed) { - play_notes(&tone_qw, 4, false); + #ifdef AUDIO_ENABLE + play_notes(&tone_qw, 4, false); + #endif default_layer_set(1UL<<_QW); } break; case M_CM: if (record->event.pressed) { - play_notes(&tone_cm, 6, false); + #ifdef AUDIO_ENABLE + play_notes(&tone_cm, 6, false); + #endif default_layer_set(1UL<<_CM); } break; case M_DV: if (record->event.pressed) { - play_notes(&tone_dv, 8, false); + #ifdef AUDIO_ENABLE + play_notes(&tone_dv, 8, false); + #endif default_layer_set(1UL<<_DV); } break; @@ -240,6 +247,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; +#ifdef AUDIO_ENABLE float start_up[][2] = { {440.0*pow(2.0,(67)/12.0), 650}, {440.0*pow(2.0,(64)/12.0), 450}, @@ -247,8 +255,11 @@ float start_up[][2] = { {440.0*pow(2.0,(60)/12.0), 450}, {440.0*pow(2.0,(64)/12.0), 1000} }; +#endif void matrix_init_user(void) { + #ifdef AUDIO_ENABLE init_notes(); play_notes(&start_up, 5, false); + #endif } diff --git a/keyboard/planck/keymaps/default/makefile.mk b/keyboard/planck/keymaps/default/makefile.mk new file mode 100644 index 0000000000..628167ff66 --- /dev/null +++ b/keyboard/planck/keymaps/default/makefile.mk @@ -0,0 +1 @@ +AUDIO_ENABLE = yes \ No newline at end of file diff --git a/quantum/quantum.mk b/quantum/quantum.mk index de93af7e8c..3069f582c3 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -23,19 +23,19 @@ ifndef CUSTOM_MATRIX SRC += $(QUANTUM_DIR)/matrix.c endif -ifdef MIDI_ENABLE +ifeq ($(MIDI_ENABLE), yes) SRC += $(QUANTUM_DIR)/keymap_midi.c endif -ifdef AUDIO_ENABLE +ifeq ($(AUDIO_ENABLE), yes) SRC += $(QUANTUM_DIR)/audio.c endif -ifdef UNICODE_ENABLE +ifeq ($(UNICODE_ENABLE), yes) SRC += $(QUANTUM_DIR)/keymap_unicode.c endif -ifdef RGBLIGHT_ENABLE +ifeq ($(RGBLIGHT_ENABLE), yes) SRC += $(QUANTUM_DIR)/light_ws2812.c SRC += $(QUANTUM_DIR)/rgblight.c OPT_DEFS += -DRGBLIGHT_ENABLE diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 89c366f554..8d028d52ac 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -17,66 +17,66 @@ SRC += $(COMMON_DIR)/host.c \ # Option modules -ifdef BOOTMAGIC_ENABLE +ifeq ($(BOOTMAGIC_ENABLE), yes) SRC += $(COMMON_DIR)/bootmagic.c SRC += $(COMMON_DIR)/avr/eeconfig.c OPT_DEFS += -DBOOTMAGIC_ENABLE endif -ifdef MOUSEKEY_ENABLE +ifeq ($(MOUSEKEY_ENABLE), yes) SRC += $(COMMON_DIR)/mousekey.c OPT_DEFS += -DMOUSEKEY_ENABLE OPT_DEFS += -DMOUSE_ENABLE endif -ifdef EXTRAKEY_ENABLE +ifeq ($(EXTRAKEY_ENABLE), yes) OPT_DEFS += -DEXTRAKEY_ENABLE endif -ifdef CONSOLE_ENABLE +ifeq ($(CONSOLE_ENABLE), yes) OPT_DEFS += -DCONSOLE_ENABLE else OPT_DEFS += -DNO_PRINT OPT_DEFS += -DNO_DEBUG endif -ifdef COMMAND_ENABLE +ifeq ($(COMMAND_ENABLE), yes) SRC += $(COMMON_DIR)/command.c OPT_DEFS += -DCOMMAND_ENABLE endif -ifdef NKRO_ENABLE +ifeq ($(NKRO_ENABLE), yes) OPT_DEFS += -DNKRO_ENABLE endif -ifdef MIDI_ENABLE +ifeq ($(MIDI_ENABLE), yes) OPT_DEFS += -DMIDI_ENABLE endif -ifdef AUDIO_ENABLE +ifeq ($(AUDIO_ENABLE), yes) OPT_DEFS += -DAUDIO_ENABLE endif -ifdef USB_6KRO_ENABLE +ifeq ($(USB_6KRO_ENABLE), yes) OPT_DEFS += -DUSB_6KRO_ENABLE endif -ifdef SLEEP_LED_ENABLE +ifeq ($(SLEEP_LED_ENABLE), yes) SRC += $(COMMON_DIR)/sleep_led.c OPT_DEFS += -DSLEEP_LED_ENABLE OPT_DEFS += -DNO_SUSPEND_POWER_DOWN endif -ifdef BACKLIGHT_ENABLE +ifeq ($(BACKLIGHT_ENABLE), yes) SRC += $(COMMON_DIR)/backlight.c OPT_DEFS += -DBACKLIGHT_ENABLE endif -ifdef BLUETOOTH_ENABLE +ifeq ($(BLUETOOTH_ENABLE), yes) OPT_DEFS += -DBLUETOOTH_ENABLE endif -ifdef KEYMAP_SECTION_ENABLE +ifeq ($(KEYMAP_SECTION_ENABLE), yes) OPT_DEFS += -DKEYMAP_SECTION_ENABLE ifeq ($(strip $(MCU)),atmega32u2) diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk index 4905760bb4..f3209c227e 100644 --- a/tmk_core/protocol/lufa.mk +++ b/tmk_core/protocol/lufa.mk @@ -17,7 +17,7 @@ LUFA_SRC = $(LUFA_DIR)/lufa.c \ $(LUFA_DIR)/descriptor.c \ $(LUFA_SRC_USB) -ifdef MIDI_ENABLE +ifeq ($(MIDI_ENABLE), yes) LUFA_SRC += $(LUFA_DIR)/midi/midi.c \ $(LUFA_DIR)/midi/midi_device.c \ $(LUFA_DIR)/midi/bytequeue/bytequeue.c \ @@ -25,7 +25,7 @@ ifdef MIDI_ENABLE $(LUFA_SRC_USBCLASS) endif -ifdef BLUETOOTH_ENABLE +ifeq ($(BLUETOOTH_ENABLE), yes) LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ $(TMK_DIR)/protocol/serial_uart.c endif From 3993afbb2e022f4e6371c729ac6a025f16bc734e Mon Sep 17 00:00:00 2001 From: IBNobody Date: Thu, 14 Apr 2016 22:27:28 -0500 Subject: [PATCH 32/55] adding new per-keymap makefile --- keyboard/atomic/Makefile | 85 +++++++++++++------ keyboard/atomic/keymaps/pvc/makefile.mk | 16 ++++ .../atomic/keymaps/{ => pvc}/pvc_atomic.c | 0 3 files changed, 73 insertions(+), 28 deletions(-) create mode 100644 keyboard/atomic/keymaps/pvc/makefile.mk rename keyboard/atomic/keymaps/{ => pvc}/pvc_atomic.c (100%) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 206b5f119c..364efa3fa5 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -27,7 +27,7 @@ # make flip-ee = Download the eeprom file to the device, using Atmel FLIP # (must have Atmel FLIP installed). # -# make debug = Start either simulavr or avarice as specified for debugging, +# make debug = Start either simulavr or avarice as specified for debugging, # with avr-gdb or avr-insight as the front end for debugging. # # make filename.s = Just compile filename.c into the assembler code only. @@ -38,6 +38,27 @@ # To rebuild project do "make clean" then "make all". #---------------------------------------------------------------------------- +# Build Options +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically +# +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 +NKRO_ENABLE = no # 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 = 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. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + # Target file name (without extension). TARGET = atomic @@ -50,14 +71,41 @@ TMK_DIR = ../../tmk_core TARGET_DIR = . # # project specific files -SRC = atomic.c \ - backlight.c +SRC = atomic.c + +ifdef keymap + KEYMAP = $(keymap) +endif ifdef KEYMAP - SRC := keymaps/$(KEYMAP).c $(SRC) +ifneq ("$(wildcard keymaps/$(KEYMAP).c)","") + KEYMAP_FILE = keymaps/$(KEYMAP).c else - SRC := keymaps/default.c $(SRC) +ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","") + KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk endif +else +$(error Keymap file does not exist) +endif +endif + +else + +ifneq ("$(wildcard keymaps/default.c)","") + KEYMAP_FILE = keymaps/default.c +else + KEYMAP_FILE = keymaps/default/keymap.c +endif + +ifneq ("$(wildcard keymaps/default/makefile.mk)","") + include keymaps/default/makefile.mk +endif + +endif + +SRC := $(KEYMAP_FILE) $(SRC) CONFIG_H = config.h @@ -111,22 +159,10 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT OPT_DEFS += -DBOOTLOADER_SIZE=4096 -# Build Options -# comment out to disable the options. -# -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 -NKRO_ENABLE = yes # USB Nkey Rollover - not yet supported in LUFA -#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 +ifeq ($(BACKLIGHT_ENABLE), yes) + SRC += backlight.c +endif -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -#SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax @@ -136,11 +172,4 @@ VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) VPATH += $(TMK_DIR) -debug-on: EXTRAFLAGS += -DDEBUG -DDEBUG_ACTION -debug-on: all - -debug-off: EXTRAFLAGS += -DNO_DEBUG -DNO_PRINT -debug-off: OPT_DEFS := $(filter-out -DCONSOLE_ENABLE,$(OPT_DEFS)) -debug-off: all - -include $(TOP_DIR)/quantum/quantum.mk +include $(TOP_DIR)/quantum/quantum.mk \ No newline at end of file diff --git a/keyboard/atomic/keymaps/pvc/makefile.mk b/keyboard/atomic/keymaps/pvc/makefile.mk new file mode 100644 index 0000000000..ff0a9c338b --- /dev/null +++ b/keyboard/atomic/keymaps/pvc/makefile.mk @@ -0,0 +1,16 @@ +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 = no # Console for debug(+400) +COMMAND_ENABLE = yes # Commands for debug and configuration +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 = 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. + +# 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/keyboard/atomic/keymaps/pvc_atomic.c b/keyboard/atomic/keymaps/pvc/pvc_atomic.c similarity index 100% rename from keyboard/atomic/keymaps/pvc_atomic.c rename to keyboard/atomic/keymaps/pvc/pvc_atomic.c From 2597fb7c508cf36704291cd48b2c752dd21f2b0d Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 14 Apr 2016 23:33:46 -0400 Subject: [PATCH 33/55] might have broken something --- keyboard/planck/config.h | 4 ++-- keyboard/planck/keymaps/default/makefile.mk | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/keyboard/planck/config.h b/keyboard/planck/config.h index d3719e0cb1..7d64f09773 100644 --- a/keyboard/planck/config.h +++ b/keyboard/planck/config.h @@ -73,10 +73,10 @@ along with this program. If not, see . */ /* disable debug print */ -#define NO_DEBUG +//#define NO_DEBUG /* disable print */ -#define NO_PRINT +//#define NO_PRINT /* disable action features */ //#define NO_ACTION_LAYER diff --git a/keyboard/planck/keymaps/default/makefile.mk b/keyboard/planck/keymaps/default/makefile.mk index 628167ff66..e1c5bd2e80 100644 --- a/keyboard/planck/keymaps/default/makefile.mk +++ b/keyboard/planck/keymaps/default/makefile.mk @@ -1 +1,2 @@ -AUDIO_ENABLE = yes \ No newline at end of file +AUDIO_ENABLE = yes +BACKLIGHT_ENABLE = yes \ No newline at end of file From 43a4ffc25971b2aea94b65ca1db66371e653ec5f Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Thu, 14 Apr 2016 23:53:35 -0400 Subject: [PATCH 34/55] bootmagic somehow not getting enabled, so adding eeconfig to backlight src include cond --- keyboard/planck/Makefile | 11 ++++------- keyboard/planck/keymaps/default/keymap.c | 3 --- tmk_core/common.mk | 1 + 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index dc6e46df2c..693e9c8aa5 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -107,6 +107,10 @@ endif SRC := $(KEYMAP_FILE) $(SRC) +ifeq ($(BACKLIGHT_ENABLE), yes) + SRC := backlight.c $(SRC) +endif + CONFIG_H = config.h # MCU name @@ -126,7 +130,6 @@ MCU = atmega32u4 # software delays. F_CPU = 16000000 - # # LUFA specific # @@ -158,12 +161,6 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # USBaspLoader 2048 OPT_DEFS += -DBOOTLOADER_SIZE=4096 - -ifeq ($(BACKLIGHT_ENABLE), yes) - SRC += backlight.c -endif - - # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 97ba5d285e..151a6b4f46 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -2,9 +2,6 @@ // this is the style you want to emulate. #include "planck.h" -#ifdef BACKLIGHT_ENABLE - #include "backlight.h" -#endif #include "action_layer.h" #ifdef AUDIO_ENABLE #include "audio.h" diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 8d028d52ac..030767cc3f 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -69,6 +69,7 @@ endif ifeq ($(BACKLIGHT_ENABLE), yes) SRC += $(COMMON_DIR)/backlight.c + SRC += $(COMMON_DIR)/avr/eeconfig.c OPT_DEFS += -DBACKLIGHT_ENABLE endif From bb0836c62016f482f517771a9f5a8dbc68bd0a1c Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 15 Apr 2016 00:26:22 -0400 Subject: [PATCH 35/55] the spacessss --- keyboard/planck/Makefile | 66 +++++++++++++-------- keyboard/planck/keymaps/default/makefile.mk | 3 +- quantum/quantum.mk | 8 +-- tmk_core/common.mk | 26 ++++---- tmk_core/protocol/lufa.mk | 4 +- 5 files changed, 60 insertions(+), 47 deletions(-) diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 693e9c8aa5..8d4e7787a6 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -38,31 +38,9 @@ # To rebuild project do "make clean" then "make all". #---------------------------------------------------------------------------- -# Build Options -# change to "no" to disable the options, or define them in the makefile.mk in -# the appropriate keymap folder that will get included automatically -# -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 -NKRO_ENABLE = no # 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 = 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. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - # Target file name (without extension). TARGET = planck - # Directory common source filess exist TOP_DIR = ../.. TMK_DIR = ../../tmk_core @@ -107,10 +85,6 @@ endif SRC := $(KEYMAP_FILE) $(SRC) -ifeq ($(BACKLIGHT_ENABLE), yes) - SRC := backlight.c $(SRC) -endif - CONFIG_H = config.h # MCU name @@ -161,6 +135,46 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # USBaspLoader 2048 OPT_DEFS += -DBOOTLOADER_SIZE=4096 +# Build Options +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically +# +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 +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 +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 + +ifdef KEYMAP + +ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif +endif + +else + +ifneq ("$(wildcard keymaps/default/makefile.mk)","") + include keymaps/default/makefile.mk +endif + +endif + +ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) + SRC := backlight.c $(SRC) +endif + # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/planck/keymaps/default/makefile.mk b/keyboard/planck/keymaps/default/makefile.mk index e1c5bd2e80..8cbec4a1f5 100644 --- a/keyboard/planck/keymaps/default/makefile.mk +++ b/keyboard/planck/keymaps/default/makefile.mk @@ -1,2 +1 @@ -AUDIO_ENABLE = yes -BACKLIGHT_ENABLE = yes \ No newline at end of file +AUDIO_ENABLE = yes \ No newline at end of file diff --git a/quantum/quantum.mk b/quantum/quantum.mk index 3069f582c3..17bb501718 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -23,19 +23,19 @@ ifndef CUSTOM_MATRIX SRC += $(QUANTUM_DIR)/matrix.c endif -ifeq ($(MIDI_ENABLE), yes) +ifeq ($(strip $(MIDI_ENABLE)), yes) SRC += $(QUANTUM_DIR)/keymap_midi.c endif -ifeq ($(AUDIO_ENABLE), yes) +ifeq ($(strip $(AUDIO_ENABLE)), yes) SRC += $(QUANTUM_DIR)/audio.c endif -ifeq ($(UNICODE_ENABLE), yes) +ifeq ($(strip $(UNICODE_ENABLE)), yes) SRC += $(QUANTUM_DIR)/keymap_unicode.c endif -ifeq ($(RGBLIGHT_ENABLE), yes) +ifeq ($(strip $(RGBLIGHT_ENABLE)), yes) SRC += $(QUANTUM_DIR)/light_ws2812.c SRC += $(QUANTUM_DIR)/rgblight.c OPT_DEFS += -DRGBLIGHT_ENABLE diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 030767cc3f..f8006c6708 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -17,67 +17,67 @@ SRC += $(COMMON_DIR)/host.c \ # Option modules -ifeq ($(BOOTMAGIC_ENABLE), yes) +ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes) SRC += $(COMMON_DIR)/bootmagic.c SRC += $(COMMON_DIR)/avr/eeconfig.c OPT_DEFS += -DBOOTMAGIC_ENABLE endif -ifeq ($(MOUSEKEY_ENABLE), yes) +ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) SRC += $(COMMON_DIR)/mousekey.c OPT_DEFS += -DMOUSEKEY_ENABLE OPT_DEFS += -DMOUSE_ENABLE endif -ifeq ($(EXTRAKEY_ENABLE), yes) +ifeq ($(strip $(EXTRAKEY_ENABLE)), yes) OPT_DEFS += -DEXTRAKEY_ENABLE endif -ifeq ($(CONSOLE_ENABLE), yes) +ifeq ($(strip $(CONSOLE_ENABLE)), yes) OPT_DEFS += -DCONSOLE_ENABLE else OPT_DEFS += -DNO_PRINT OPT_DEFS += -DNO_DEBUG endif -ifeq ($(COMMAND_ENABLE), yes) +ifeq ($(strip $(COMMAND_ENABLE)), yes) SRC += $(COMMON_DIR)/command.c OPT_DEFS += -DCOMMAND_ENABLE endif -ifeq ($(NKRO_ENABLE), yes) +ifeq ($(strip $(NKRO_ENABLE)), yes) OPT_DEFS += -DNKRO_ENABLE endif -ifeq ($(MIDI_ENABLE), yes) +ifeq ($(strip $(MIDI_ENABLE)), yes) OPT_DEFS += -DMIDI_ENABLE endif -ifeq ($(AUDIO_ENABLE), yes) +ifeq ($(strip $(AUDIO_ENABLE)), yes) OPT_DEFS += -DAUDIO_ENABLE endif -ifeq ($(USB_6KRO_ENABLE), yes) +ifeq ($(strip $(USB_6KRO_ENABLE)), yes) OPT_DEFS += -DUSB_6KRO_ENABLE endif -ifeq ($(SLEEP_LED_ENABLE), yes) +ifeq ($(strip $(SLEEP_LED_ENABLE)), yes) SRC += $(COMMON_DIR)/sleep_led.c OPT_DEFS += -DSLEEP_LED_ENABLE OPT_DEFS += -DNO_SUSPEND_POWER_DOWN endif -ifeq ($(BACKLIGHT_ENABLE), yes) +ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) SRC += $(COMMON_DIR)/backlight.c SRC += $(COMMON_DIR)/avr/eeconfig.c OPT_DEFS += -DBACKLIGHT_ENABLE endif -ifeq ($(BLUETOOTH_ENABLE), yes) +ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) OPT_DEFS += -DBLUETOOTH_ENABLE endif -ifeq ($(KEYMAP_SECTION_ENABLE), yes) +ifeq ($(strip $(KEYMAP_SECTION_ENABLE)), yes) OPT_DEFS += -DKEYMAP_SECTION_ENABLE ifeq ($(strip $(MCU)),atmega32u2) diff --git a/tmk_core/protocol/lufa.mk b/tmk_core/protocol/lufa.mk index f3209c227e..9ac6298f11 100644 --- a/tmk_core/protocol/lufa.mk +++ b/tmk_core/protocol/lufa.mk @@ -17,7 +17,7 @@ LUFA_SRC = $(LUFA_DIR)/lufa.c \ $(LUFA_DIR)/descriptor.c \ $(LUFA_SRC_USB) -ifeq ($(MIDI_ENABLE), yes) +ifeq ($(strip $(MIDI_ENABLE)), yes) LUFA_SRC += $(LUFA_DIR)/midi/midi.c \ $(LUFA_DIR)/midi/midi_device.c \ $(LUFA_DIR)/midi/bytequeue/bytequeue.c \ @@ -25,7 +25,7 @@ ifeq ($(MIDI_ENABLE), yes) $(LUFA_SRC_USBCLASS) endif -ifeq ($(BLUETOOTH_ENABLE), yes) +ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) LUFA_SRC += $(LUFA_DIR)/bluetooth.c \ $(TMK_DIR)/protocol/serial_uart.c endif From ee2ee7f4f049dda385a9db7dddd8e7e91681315b Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 15 Apr 2016 13:44:07 -0400 Subject: [PATCH 36/55] audio note length fixes --- keyboard/planck/keymaps/default/keymap.c | 46 ++++++++++++------------ quantum/audio.c | 7 +++- quantum/keymap_common.c | 10 +++--- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 151a6b4f46..dee2840f2d 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -147,30 +147,30 @@ const uint16_t PROGMEM fn_actions[] = { #ifdef AUDIO_ENABLE float tone_qw[][2] = { - {440.0*pow(2.0,(67)/12.0), 400}, - {440.0*pow(2.0,(60)/12.0), 400}, - {0, 800}, - {440.0*pow(2.0,(67)/12.0), 1600} + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16} }; float tone_cm[][2] = { - {440.0*pow(2.0,(67)/12.0), 400}, - {440.0*pow(2.0,(60)/12.0), 400}, - {0, 800}, - {440.0*pow(2.0,(67)/12.0), 1000}, - {0, 200}, - {440.0*pow(2.0,(67)/12.0), 1000} + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16}, + {0, 4}, + {440.0*pow(2.0,(71)/12.0), 16} }; float tone_dv[][2] = { - {440.0*pow(2.0,(67)/12.0), 400}, - {440.0*pow(2.0,(60)/12.0), 400}, - {0, 800}, - {440.0*pow(2.0,(67)/12.0), 800}, - {0, 200}, - {440.0*pow(2.0,(67)/12.0), 800}, - {0, 200}, - {440.0*pow(2.0,(67)/12.0), 800} + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16}, + {0, 4}, + {440.0*pow(2.0,(69)/12.0), 16}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16} }; #endif @@ -246,11 +246,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE float start_up[][2] = { - {440.0*pow(2.0,(67)/12.0), 650}, - {440.0*pow(2.0,(64)/12.0), 450}, - {440.0*pow(2.0,(55)/12.0), 450}, - {440.0*pow(2.0,(60)/12.0), 450}, - {440.0*pow(2.0,(64)/12.0), 1000} + {440.0*pow(2.0,(67)/12.0), 12}, + {440.0*pow(2.0,(64)/12.0), 8}, + {440.0*pow(2.0,(55)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(64)/12.0), 20} }; #endif diff --git a/quantum/audio.c b/quantum/audio.c index f29d941d7c..50e5505fe0 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -255,7 +255,12 @@ ISR(TIMER3_COMPA_vect) { note_position++; - if (note_position >= note_length) { + bool end_of_note = false; + if (ICR3 > 0) + end_of_note = (note_position >= (note_length / ICR3 * 0xFFFF)); + else + end_of_note = (note_position >= (note_length * 0x7FF)); + if (end_of_note) { current_note++; if (current_note >= notes_length) { if (notes_repeat) { diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index ae6cddb343..e3030a8869 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -33,11 +33,9 @@ along with this program. If not, see . #include "audio.h" float goodbye[][2] = { - {440.0*pow(2.0,(67)/12.0), 400}, - {0, 50}, - {440.0*pow(2.0,(60)/12.0), 400}, - {0, 50}, - {440.0*pow(2.0,(55)/12.0), 600}, + {440.0*pow(2.0,(67)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(55)/12.0), 12}, }; #endif @@ -90,7 +88,7 @@ action_t action_for_key(uint8_t layer, keypos_t key) action_t action; clear_keyboard(); #ifdef AUDIO_ENABLE - play_notes(&goodbye, 5, false); + play_notes(&goodbye, 3, false); #endif _delay_ms(250); #ifdef ATREUS_ASTAR From 8f85117aa9e060371177e3b523bc89dc7aad19e8 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Fri, 15 Apr 2016 14:42:50 -0500 Subject: [PATCH 37/55] Added Audio to my Atomic --- keyboard/atomic/Makefile | 67 +++--- keyboard/atomic/keymaps/pvc/config.h | 157 +++++++++++++ .../keymaps/pvc/{pvc_atomic.c => keymap.c} | 207 ++++++++---------- keyboard/atomic/keymaps/pvc/makefile.mk | 6 +- keyboard/planck/Makefile | 31 +-- quantum/audio.h | 4 +- 6 files changed, 297 insertions(+), 175 deletions(-) create mode 100644 keyboard/atomic/keymaps/pvc/config.h rename keyboard/atomic/keymaps/pvc/{pvc_atomic.c => keymap.c} (59%) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 364efa3fa5..1203cf6a39 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -38,31 +38,9 @@ # To rebuild project do "make clean" then "make all". #---------------------------------------------------------------------------- -# Build Options -# change to "no" to disable the options, or define them in the makefile.mk in -# the appropriate keymap folder that will get included automatically -# -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 -NKRO_ENABLE = no # 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 = 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. - -# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend - # Target file name (without extension). TARGET = atomic - # Directory common source filess exist TOP_DIR = ../.. TMK_DIR = ../../tmk_core @@ -73,6 +51,8 @@ TARGET_DIR = . # # project specific files SRC = atomic.c +CONFIG_H = config.h + ifdef keymap KEYMAP = $(keymap) endif @@ -88,7 +68,7 @@ ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") endif else $(error Keymap file does not exist) -endif +endif endif else @@ -107,8 +87,6 @@ endif SRC := $(KEYMAP_FILE) $(SRC) -CONFIG_H = config.h - # MCU name #MCU = at90usb1287 MCU = atmega32u4 @@ -126,7 +104,6 @@ MCU = atmega32u4 # software delays. F_CPU = 16000000 - # # LUFA specific # @@ -158,11 +135,45 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # USBaspLoader 2048 OPT_DEFS += -DBOOTLOADER_SIZE=4096 +# Build Options +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically +# +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 +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 +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. -ifeq ($(BACKLIGHT_ENABLE), yes) - SRC += backlight.c +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifdef KEYMAP + +ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif endif +else + +ifneq ("$(wildcard keymaps/default/makefile.mk)","") + include keymaps/default/makefile.mk +endif + +endif + +ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) + SRC := backlight.c $(SRC) +endif # Optimize size but this may cause error "relocation truncated to fit" #EXTRALDFLAGS = -Wl,--relax diff --git a/keyboard/atomic/keymaps/pvc/config.h b/keyboard/atomic/keymaps/pvc/config.h new file mode 100644 index 0000000000..8449fa06de --- /dev/null +++ b/keyboard/atomic/keymaps/pvc/config.h @@ -0,0 +1,157 @@ +/* +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 Ortholinear Keyboards +#define PRODUCT The Atomic Keyboard +#define DESCRIPTION A compact ortholinear keyboard + +/* key matrix size */ +#define MATRIX_ROWS 5 +#define MATRIX_COLS 15 + +/* + * 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 COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 } +#define ROWS (int []){ D0, D5, B5, B6, B3 } + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* define if matrix has ghost (lacks anti-ghosting diodes) */ +//#define MATRIX_HAS_GHOST + +/* number of backlight levels */ +#define BACKLIGHT_LEVELS 3 + +/* 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 B +//#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/keyboard/atomic/keymaps/pvc/pvc_atomic.c b/keyboard/atomic/keymaps/pvc/keymap.c similarity index 59% rename from keyboard/atomic/keymaps/pvc/pvc_atomic.c rename to keyboard/atomic/keymaps/pvc/keymap.c index 3ddd3e3294..627f57ff70 100644 --- a/keyboard/atomic/keymaps/pvc/pvc_atomic.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -1,12 +1,19 @@ #include "atomic.h" #include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" +#endif #define _QW 0 #define _LW 1 #define _RS 2 #define _FN 3 -#define _F1 4 -#define _F2 5 + +#define M_QW 0 +#define M_LW 1 +#define M_RS 2 +#define M_FN 3 + #define _______ KC_TRNS #define ___T___ KC_TRNS @@ -32,7 +39,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_BSLS, KC_DEL }, { 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, XXXXXXX, KC_PGUP }, { KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, XXXXXXX, KC_UP, KC_PGDN }, - { KC_LCTL, KC_LGUI, M(_FN), KC_LALT, M(_RS), KC_SPC, XXXXXXX, M(_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, + { KC_LCTL, KC_LGUI, M(M_FN), KC_LALT, M(M_RS), KC_SPC, XXXXXXX, M(M_LW), KC_RALT, KC_HOME, KC_END, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT }, }, [_LW] = { /* LOWERED */ { 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, ___T___, ___T___ }, @@ -55,29 +62,50 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, }, - [_F1] = { /* FUNCTION */ - { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, - { KC_SLCK, 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_PAUS, KC_PSCR }, - { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, - { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, - }, - [_F2] = { /* FUNCTION */ - { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, - { KC_SLCK, 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_PAUS, KC_PSCR }, - { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, - { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, - }, }; #define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) #define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer))) + +#ifdef AUDIO_ENABLE +float tone_lw[][2] = { + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16} +}; + +float tone_rs[][2] = { + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16}, + {0, 4}, + {440.0*pow(2.0,(71)/12.0), 16} +}; + +float tone_fn[][2] = { + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16}, + {0, 4}, + {440.0*pow(2.0,(69)/12.0), 16}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16} +}; +#endif + + void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) { if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) { + #ifdef AUDIO_ENABLE + println("PlayNotes FN"); + play_notes(&tone_fn, 8, false); + #endif layer_on(layer3); } else @@ -114,37 +142,6 @@ void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t l } } -/* ignore me -void change_quad_layer(uint8_t focus_layer, bool desired_focus_layer_state, uint8_t pair_layer, uint8_t layer3, uint8_t layer4) -{ - - // If desired focus layer state == 1 and current focus layer state == 1 - if ((desired_focus_layer_state) && IS_LAYER_ON(layer1)) - { - // Do Nothing - } - // If desired focus layer state == 0 and current focus layer state == 1 - else if ((desired_focus_layer_state) && IS_LAYER_ON(layer1)) - { - // If - layer_off(layer3); - layer_off(layer4); - } - } - else - { - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) - { - layer_on(layer4); - } - else - { - layer_off(layer3); - layer_off(layer4); - } - } -} -*/ const uint16_t PROGMEM fn_actions[] = { }; @@ -152,70 +149,54 @@ 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 _FN: - if (record->event.pressed) { - print("FN_DN\n"); - print_val_bin32(layer_state); - layer_on(_FN); - print_val_bin32(layer_state); - } else { - print("FN_UP\n"); - print_val_bin32(layer_state); - layer_off(_FN); - print_val_bin32(layer_state); - } - break; - - case _RS: - if (record->event.pressed) { - print("RS_DN\n"); - print_val_bin32(layer_state); - layer_on(_RS); - //tri_layer++; - print_val_bin32(layer_state); - //update_tri_layer(_RS, _LW, _FN); - update_quad_layer(_RS, _LW, _F1, _F2, 0); - print_val_bin32(layer_state); - } else { - print("RS_UP\n"); - print_val_bin32(layer_state); - layer_off(_RS); - //tri_layer--; - print_val_bin32(layer_state); - //update_tri_layer(_RS, _LW, _FN); - update_quad_layer(_RS, _LW, _F1, _F2, 0); - print_val_bin32(layer_state); - } - break; - - case _LW: - if (record->event.pressed) { - print("LW_DN\n"); - print_val_bin32(layer_state); - layer_on(_LW); - //tri_layer++; - print_val_bin32(layer_state); - //update_tri_layer(_RS, _LW, _FN); - update_quad_layer(_RS, _LW, _F1, _F2, 1); - print_val_bin32(layer_state); - } else { - print("LW_UP\n"); - print_val_bin32(layer_state); - layer_off(_LW); - //tri_layer--; - print_val_bin32(layer_state); - //update_tri_layer(_RS, _LW, _FN); - update_quad_layer(_RS, _LW, _F1, _F2, 1); - print_val_bin32(layer_state); - } - break; - + // MACRODOWN only works in this function + switch(id) { + case M_LW: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + println("PlayNotes LW"); + play_notes(&tone_lw, 4, false); + #endif + layer_on(_LW); + update_tri_layer(_LW, _RS, _FN); + } else { + layer_off(_LW); + update_tri_layer(_LW, _RS, _FN); + } + break; + case M_RS: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + println("PlayNotes RS"); + play_notes(&tone_rs, 6, false); + #endif + layer_on(_RS); + update_tri_layer(_LW, _RS, _FN); + } else { + layer_off(_RS); + update_tri_layer(_LW, _RS, _FN); + } + break; default: - break; - } - return MACRO_NONE; + break; + } + return MACRO_NONE; }; + +#ifdef AUDIO_ENABLE +float start_up[][2] = { + {440.0*pow(2.0,(67)/12.0), 12}, + {440.0*pow(2.0,(64)/12.0), 8}, + {440.0*pow(2.0,(55)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(64)/12.0), 20} +}; +#endif + +void matrix_init_user(void) { + #ifdef AUDIO_ENABLE + init_notes(); + play_notes(&start_up, 5, false); + println("Matrix Init"); + #endif +} diff --git a/keyboard/atomic/keymaps/pvc/makefile.mk b/keyboard/atomic/keymaps/pvc/makefile.mk index ff0a9c338b..c41102f5d4 100644 --- a/keyboard/atomic/keymaps/pvc/makefile.mk +++ b/keyboard/atomic/keymaps/pvc/makefile.mk @@ -1,16 +1,18 @@ 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 = no # Console for debug(+400) +CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = yes # Commands for debug and configuration 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 = no # Enable keyboard backlight functionality MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 +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 + +CONFIG_H = keymaps/$(KEYMAP)/config.h \ No newline at end of file diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index c8517e756f..83b8303b02 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -157,39 +157,10 @@ SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifdef KEYMAP -<<<<<<< HEAD -<<<<<<< HEAD -# Build Options -# comment out to disable the options. -# -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 -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 -# AUDIO_ENABLE = yes # Audio output on port C6 -# UNICODE_ENABLE = yes # Unicode -# BLUETOOTH_ENABLE = ye # Enable Bluetooth with the Adafruit EZ-Key HID -# RGBLIGHT_ENABLE = yes # 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 = yes # Breathing sleep LED during USB suspend - - -ifdef BACKLIGHT_ENABLE -======= -ifeq ($(BACKLIGHT_ENABLE), yes) ->>>>>>> master - SRC += backlight.c -======= ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") include keymaps/$(KEYMAP)/makefile.mk endif ->>>>>>> remotes/jackhumbert/new_defaults endif else @@ -212,4 +183,4 @@ VPATH += $(TARGET_DIR) VPATH += $(TOP_DIR) VPATH += $(TMK_DIR) -include $(TOP_DIR)/quantum/quantum.mk +include $(TOP_DIR)/quantum/quantum.mk \ No newline at end of file diff --git a/quantum/audio.h b/quantum/audio.h index 99203cea7a..31f9a35793 100644 --- a/quantum/audio.h +++ b/quantum/audio.h @@ -6,6 +6,6 @@ void play_sample(uint8_t * s, uint16_t l, bool r); void play_note(double freq, int vol); void stop_note(double freq); -void stop_all_notes(); -void init_notes(); +void stop_all_notes(void); +void init_notes(void); void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat); \ No newline at end of file From 2aa51e4416b65317b16660c0676696974b2dcfc5 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Fri, 15 Apr 2016 16:32:44 -0500 Subject: [PATCH 38/55] Tweaking PVC atomic layout --- keyboard/atomic/Makefile | 30 ++++++++++++------------- keyboard/atomic/keymaps/pvc/keymap.c | 13 +++++++++-- keyboard/atomic/keymaps/pvc/makefile.mk | 27 +++++++++++----------- 3 files changed, 39 insertions(+), 31 deletions(-) diff --git a/keyboard/atomic/Makefile b/keyboard/atomic/Makefile index 1203cf6a39..3f066aebcd 100644 --- a/keyboard/atomic/Makefile +++ b/keyboard/atomic/Makefile @@ -51,8 +51,6 @@ TARGET_DIR = . # # project specific files SRC = atomic.c -CONFIG_H = config.h - ifdef keymap KEYMAP = $(keymap) endif @@ -87,6 +85,8 @@ endif SRC := $(KEYMAP_FILE) $(SRC) +CONFIG_H = config.h + # MCU name #MCU = at90usb1287 MCU = atmega32u4 @@ -139,21 +139,21 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # change to "no" to disable the options, or define them in the makefile.mk in # the appropriate keymap folder that will get included automatically # -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 -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 -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. +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 +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 +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 +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend ifdef KEYMAP diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 627f57ff70..7bfd910a17 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -1,13 +1,15 @@ #include "atomic.h" #include "action_layer.h" + #ifdef AUDIO_ENABLE - #include "audio.h" +#include "audio.h" #endif #define _QW 0 #define _LW 1 #define _RS 2 -#define _FN 3 +#define _AD 3 +#define _FN 4 #define M_QW 0 #define M_LW 1 @@ -62,6 +64,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, }, + [_ADJ] = { /* ADJUST */ + { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, + { KC_SLCK, 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_PAUS, KC_PSCR }, + { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, + { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + }, }; #define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) diff --git a/keyboard/atomic/keymaps/pvc/makefile.mk b/keyboard/atomic/keymaps/pvc/makefile.mk index c41102f5d4..d469966501 100644 --- a/keyboard/atomic/keymaps/pvc/makefile.mk +++ b/keyboard/atomic/keymaps/pvc/makefile.mk @@ -1,18 +1,17 @@ -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 -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 = 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. +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 +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 = 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 +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend CONFIG_H = keymaps/$(KEYMAP)/config.h \ No newline at end of file From 549b797ad1ebb30ebaa19af2cf3b7cc2a2c055bc Mon Sep 17 00:00:00 2001 From: Jason Janse van Rensburg Date: Sat, 16 Apr 2016 01:36:18 +0200 Subject: [PATCH 39/55] My Attempt at adapting the Bone2 layout with Neo2 navigation cluster & number block to the Planck. Very much a WIP, will most likely start tweaking further once my Planck kit has dropped --- keyboard/planck/keymaps/bone2planck.c | 112 ++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 keyboard/planck/keymaps/bone2planck.c diff --git a/keyboard/planck/keymaps/bone2planck.c b/keyboard/planck/keymaps/bone2planck.c new file mode 100644 index 0000000000..a99e7719f9 --- /dev/null +++ b/keyboard/planck/keymaps/bone2planck.c @@ -0,0 +1,112 @@ + +#include "planck.h" +#ifdef BACKLIGHT_ENABLE +#include "backlight.h" +#endif +#include "..\..\quantum\keymap_extras\keymap_german.h" + +/* This Layout tries to emulate the Bone2 Variant of Neo2, and is intended to be used with a German QWERTZ Softwarelayout. + It has Umlauts and "ß" as it is optimized for a mix of German & English. + My favourite features are the placement of the special characters often used for programming right on the home row + and the number & navigation block combo, so you never have to move your hands from their home position. + + Bone2 wiki page: http://wiki.neo-layout.org/wiki/Bone +*/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* Bone2 + * ,-----------------------------------------------------------------------------------. + * | Q | J | D | U | A | X | P | H | L | M | W | ẞ | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | M1 | C | T | I | E | O | B | N | R | S | G | M1 | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| F | V | Ü | Ä | Ö | Y | Z | , | . | K |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter | + * `-----------------------------------------------------------------------------------' + */ + [0] = { + { DE_Q, DE_J, DE_D, DE_U, DE_A, DE_X, DE_P, DE_H, DE_L, DE_M, DE_W, DE_SS }, + { MO(1), DE_C, DE_T, DE_I, DE_E, DE_O, DE_B, DE_N, DE_R, DE_S, DE_G, MO(1) }, + { DE_S, DE_F, DE_V, DE_UE, DE_AE, DE_OE, DE_Y, DE_Z, DE_COMM, DE_DOT, DE_K, DE_S }, + { KC_LCTL, KC_LGUI, KC_LALT, MO(3), MO(2), KC_SPC, KC_SPC, MO(2), MO(3), KC_ESC, KC_TAB, KC_ENT } + }, + + /* M1 Special Characters + * ,-----------------------------------------------------------------------------------. + * | ° | @ | _ | [ | ] | ^ | ! | < | > | = | & | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | M1 | \ | / | { | } | * | ? | ( | ) | - | : | M1 | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | # | $ | | | ~ | € | + | % | " | ' | ; | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter | + * `-----------------------------------------------------------------------------------' + */ + [1] = { + { DE_RING, DE_AT, DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LESS, DE_MORE, DE_EQL, DE_AMPR, KC_NO }, + { KC_TRNS, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QST, DE_LPRN, DE_RPRN, DE_MINS, DE_COLN, KC_TRNS }, + { KC_NO , DE_HASH, DE_DLR, DE_PIPE, DE_TILD, DE_EURO, DE_PLUS, DE_PERC, DE_DQOT, DE_QUOT, DE_SCLN, 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 } + }, + + /* Navigation & Number Blocks + * ,-----------------------------------------------------------------------------------. + * | | PgUp | Bksp | Up | DEL | PgDn | | 7 | 8 | 9 | | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | Home | Lft | Down | Right| End | . | 4 | 5 | 6 | , | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| | Tab | Ins | Enter| | 0 | 1 | 2 | 3 | ; |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | M3 | M2 | Space | M2 | M3 | Esc | Tab |Enter | + * `-----------------------------------------------------------------------------------' + */ + [2] = { + { KC_NO, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_NO, DE_7, DE_8, DE_9, KC_NO, KC_NO }, + { KC_NO, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, DE_DOT, DE_4, DE_5, DE_6, DE_COMM, KC_NO }, + { DE_S, KC_NO, KC_TAB, KC_INS, KC_ENT, KC_NO, KC_0, DE_1, DE_2, DE_3, DE_SCLN, DE_S }, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS } + }, + + /* Function & Media Keys + * ,-----------------------------------------------------------------------------------. + * | | | Print|Scroll|Pause | | | F7 | F8 | F9 | F12 | | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | Mute | Vol- | Vol+ | | ³ | F4 | F5 | F6 | F11 | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| | Prev | Play | Next | | ² | F1 | F2 | F3 | F10 |Shift | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Ctrl | GUI | Alt | M3 | | Space | | M3 | Esc | Tab |Enter | + * `-----------------------------------------------------------------------------------' + */ + [3] = { + { KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F12, KC_NO }, + { KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, DE_SQ3, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO }, + { KC_TRNS, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, DE_SQ2, KC_F1, KC_F2, KC_F3, KC_F10, KC_TRNS}, + { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_NO, 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); +#ifdef BACKLIGHT_ENABLE + backlight_step(); +#endif + } + else { + unregister_code(KC_RSFT); + } + break; + } + return MACRO_NONE; +}; From 0faa18eab996c2cfcc5da0b60b702f52335c5854 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 15 Apr 2016 23:38:21 -0400 Subject: [PATCH 40/55] audio enable stored in eeprom --- keyboard/planck/keymaps/default/keymap.c | 7 +++- keyboard/preonic/Makefile | 4 +- keyboard/preonic/keymaps/default/keymap.c | 12 +++--- quantum/audio.c | 48 ++++++++++++++++++++++- quantum/audio.h | 14 ++++++- tmk_core/common/avr/eeconfig.c | 8 ++++ tmk_core/common/eeconfig.h | 6 +++ 7 files changed, 89 insertions(+), 10 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 56092d04fb..3f34ba4120 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -135,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_AD] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, _______, _______, _______, _______, M(M_QW), M(M_CM), M(M_DV), _______, _______}, + {_______, _______, _______, _______, M(6), _______, _______, M(M_QW), M(M_CM), M(M_DV), _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -231,6 +231,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) unregister_code(KC_RSFT); } break; + case 6: + if (record->event.pressed) { + audio_toggle(); + } + break; } return MACRO_NONE; }; diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index 664aff7321..e48052c825 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -139,8 +139,8 @@ COMMAND_ENABLE = yes # Commands for debug and configuration # 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 -AUDIO_ENABLE = YES # Audio output on port C6 +MIDI_ENABLE = yes # MIDI controls +AUDIO_ENABLE = yes # Audio output on port C6 # UNICODE_ENABLE = YES # Unicode # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID # RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time. diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 7846707848..3da69c2155 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -59,11 +59,11 @@ const uint16_t PROGMEM fn_actions[] = { }; float start_up[][2] = { - {440.0*pow(2.0,(67)/12.0), 600}, - {440.0*pow(2.0,(64)/12.0), 400}, - {440.0*pow(2.0,(55)/12.0), 400}, - {440.0*pow(2.0,(60)/12.0), 400}, - {440.0*pow(2.0,(64)/12.0), 1000}, + {440.0*pow(2.0,(67)/12.0), 4}, + {440.0*pow(2.0,(64)/12.0), 8}, + {440.0*pow(2.0,(55)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(64)/12.0), 10}, }; const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) @@ -76,8 +76,10 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef BACKLIGHT_ENABLE backlight_step(); #endif + audio_toggle(); } else { unregister_code(KC_RSFT); + play_notes(&start_up, 5, false); } break; } diff --git a/quantum/audio.c b/quantum/audio.c index 50e5505fe0..73985479cc 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -8,6 +8,8 @@ #include "audio.h" #include "keymap_common.h" +#include "eeconfig.h" + #define PI 3.14159265 // #define PWM_AUDIO @@ -57,6 +59,25 @@ uint8_t notes_length; bool notes_repeat; uint8_t current_note = 0; +audio_config_t audio_config; + + +void audio_toggle(void) { + audio_config.enable ^= 1; + eeconfig_write_audio(audio_config.raw); +} + +void audio_on(void) { + audio_config.enable = 1; + eeconfig_write_audio(audio_config.raw); +} + +void audio_off(void) { + audio_config.enable = 0; + eeconfig_write_audio(audio_config.raw); +} + + void stop_all_notes() { voices = 0; #ifdef PWM_AUDIO @@ -129,6 +150,12 @@ void stop_note(double freq) { void init_notes() { + /* check signature */ + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + audio_config.raw = eeconfig_read_audio(); + #ifdef PWM_AUDIO PLLFRQ = _BV(PDIV2); PLLCSR = _BV(PLLE); @@ -160,7 +187,6 @@ void init_notes() { ISR(TIMER3_COMPA_vect) { - if (note) { #ifdef PWM_AUDIO if (voices == 1) { @@ -288,9 +314,16 @@ ISR(TIMER3_COMPA_vect) { } + if (!audio_config.enable) { + notes = false; + note = false; + } } void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat) { + +if (audio_config.enable) { + if (note) stop_all_notes(); notes = true; @@ -319,7 +352,12 @@ void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat) { #endif } +} + void play_sample(uint8_t * s, uint16_t l, bool r) { + +if (audio_config.enable) { + stop_all_notes(); place_int = 0; sample = s; @@ -330,9 +368,15 @@ void play_sample(uint8_t * s, uint16_t l, bool r) { TIMSK3 |= _BV(OCIE3A); #else #endif + +} + } void play_note(double freq, int vol) { + +if (audio_config.enable) { + if (notes) stop_all_notes(); note = true; @@ -367,4 +411,6 @@ void play_note(double freq, int vol) { TCCR3A |= _BV(COM3A1); #endif +} + } \ No newline at end of file diff --git a/quantum/audio.h b/quantum/audio.h index 99203cea7a..58270015df 100644 --- a/quantum/audio.h +++ b/quantum/audio.h @@ -3,9 +3,21 @@ #include #include +typedef union { + uint8_t raw; + struct { + bool enable :1; + uint8_t level :7; + }; +} audio_config_t; + +void audio_toggle(void); +void audio_on(void); +void audio_off(void); + void play_sample(uint8_t * s, uint16_t l, bool r); void play_note(double freq, int vol); void stop_note(double freq); void stop_all_notes(); void init_notes(); -void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat); \ No newline at end of file +void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat); diff --git a/tmk_core/common/avr/eeconfig.c b/tmk_core/common/avr/eeconfig.c index 5bd47dc6ad..d0c3f4f570 100644 --- a/tmk_core/common/avr/eeconfig.c +++ b/tmk_core/common/avr/eeconfig.c @@ -13,6 +13,9 @@ void eeconfig_init(void) #ifdef BACKLIGHT_ENABLE eeprom_write_byte(EECONFIG_BACKLIGHT, 0); #endif +#ifdef AUDIO_ENABLE + eeprom_write_byte(EECONFIG_AUDIO, 0); +#endif } void eeconfig_enable(void) @@ -43,3 +46,8 @@ void eeconfig_write_keymap(uint8_t val) { eeprom_write_byte(EECONFIG_KEYMAP, val uint8_t eeconfig_read_backlight(void) { return eeprom_read_byte(EECONFIG_BACKLIGHT); } void eeconfig_write_backlight(uint8_t val) { eeprom_write_byte(EECONFIG_BACKLIGHT, val); } #endif + +#ifdef AUDIO_ENABLE +uint8_t eeconfig_read_audio(void) { return eeprom_read_byte(EECONFIG_AUDIO); } +void eeconfig_write_audio(uint8_t val) { eeprom_write_byte(EECONFIG_AUDIO, val); } +#endif \ No newline at end of file diff --git a/tmk_core/common/eeconfig.h b/tmk_core/common/eeconfig.h index 3cd1a174f6..ddefca1347 100644 --- a/tmk_core/common/eeconfig.h +++ b/tmk_core/common/eeconfig.h @@ -31,6 +31,7 @@ along with this program. If not, see . #define EECONFIG_KEYMAP (uint8_t *)4 #define EECONFIG_MOUSEKEY_ACCEL (uint8_t *)5 #define EECONFIG_BACKLIGHT (uint8_t *)6 +#define EECONFIG_AUDIO (uint8_t *)7 /* debug bit */ @@ -72,4 +73,9 @@ uint8_t eeconfig_read_backlight(void); void eeconfig_write_backlight(uint8_t val); #endif +#ifdef AUDIO_ENABLE +uint8_t eeconfig_read_audio(void); +void eeconfig_write_audio(uint8_t val); +#endif + #endif From 9d4bfc1bcf9a93b25ce4f7c32d8f3db12c85c23b Mon Sep 17 00:00:00 2001 From: IBNobody Date: Fri, 15 Apr 2016 22:40:07 -0500 Subject: [PATCH 41/55] Corrected layer macros --- keyboard/atomic/keymaps/pvc/keymap.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 7bfd910a17..7abd7f4f7d 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -64,20 +64,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, }, - [_ADJ] = { /* ADJUST */ - { KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___ }, - { KC_SLCK, 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_PAUS, KC_PSCR }, - { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U }, - { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, KC_MS_U, KC_WH_D }, - { _______, _______, _______, _______, _______, KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R }, + [_AD] = { /* ADJUST */ + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______ }, + { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ }, }, }; -#define IS_LAYER_ON(layer) ((layer_state) & (1<<(layer))) -#define IS_LAYER_OFF(layer) ((!layer_state) & (1<<(layer))) - +#define IS_LAYER_ON(layer) (layer_state & (1UL << (layer))) +#define IS_LAYER_OFF(layer) (!IS_LAYER_ON(layer)) #ifdef AUDIO_ENABLE + + + + float tone_lw[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, From c294636c666a6c4a9c170a9a7f62607d48081b3c Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 15 Apr 2016 23:46:35 -0400 Subject: [PATCH 42/55] audio on by default --- tmk_core/common/avr/eeconfig.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmk_core/common/avr/eeconfig.c b/tmk_core/common/avr/eeconfig.c index d0c3f4f570..25bb9e849c 100644 --- a/tmk_core/common/avr/eeconfig.c +++ b/tmk_core/common/avr/eeconfig.c @@ -14,7 +14,7 @@ void eeconfig_init(void) eeprom_write_byte(EECONFIG_BACKLIGHT, 0); #endif #ifdef AUDIO_ENABLE - eeprom_write_byte(EECONFIG_AUDIO, 0); + eeprom_write_byte(EECONFIG_AUDIO, 0xFF); // On by default #endif } From 0b0ec82427aff54481103559066213056b6d7598 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 00:01:22 -0400 Subject: [PATCH 43/55] eeprom reset tool --- quantum/tools/README.md | 6 ++++++ quantum/tools/eeprom_reset.hex | 9 +++++++++ 2 files changed, 15 insertions(+) create mode 100644 quantum/tools/README.md create mode 100644 quantum/tools/eeprom_reset.hex diff --git a/quantum/tools/README.md b/quantum/tools/README.md new file mode 100644 index 0000000000..0702144238 --- /dev/null +++ b/quantum/tools/README.md @@ -0,0 +1,6 @@ +`eeprom_reset.hex` is to reset the eeprom on the Atmega32u4, like this: + + dfu-programmer atmega32u4 erase + dfu-programmer atmega32u4 flash --eeprom eeprom-reset.bin + + You'll need to reflash afterwards, because DFU requires the flash to be erased before messing with the eeprom. \ No newline at end of file diff --git a/quantum/tools/eeprom_reset.hex b/quantum/tools/eeprom_reset.hex new file mode 100644 index 0000000000..a8a75389fe --- /dev/null +++ b/quantum/tools/eeprom_reset.hex @@ -0,0 +1,9 @@ +:10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 +:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +:10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 +:10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +:10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 +:00000001FF From d81ef5b7eb888ae2878e60d548854413ee3023c6 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 01:19:37 -0400 Subject: [PATCH 44/55] new defaults for planck and preonic --- keyboard/planck/keymaps/default/keymap.c | 74 +++--- keyboard/preonic/Makefile | 53 ++-- keyboard/preonic/keymaps/default/README.md | 35 +-- keyboard/preonic/keymaps/default/keymap.c | 264 ++++++++++++++++--- keyboard/preonic/keymaps/default/makefile.mk | 1 + 5 files changed, 309 insertions(+), 118 deletions(-) create mode 100644 keyboard/preonic/keymaps/default/makefile.mk diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 3f34ba4120..ede08ad7f1 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -19,12 +19,16 @@ #define _AD 5 // Macro name shortcuts -#define M_QW 0 -#define M_CM 1 -#define M_DV 2 -#define M_LW 3 -#define M_RS 4 +#define QWERTY M(_QW) +#define COLEMAK M(_CM) +#define DVORAK M(_DV) +#define LOWER M(_LW) +#define RAISE M(_RS) #define M_BL 5 +#ifdef AUDIO_ENABLE + #define AUD_OFF M(6) + #define AUD_ON M(7) +#endif // Fillers to make layering more clear #define _______ KC_TRNS @@ -47,7 +51,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_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 }, - {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Colemak @@ -65,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {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 }, - {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Dvorak @@ -83,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { {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 }, - {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, M(M_LW), KC_SPC, KC_SPC, M(M_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, /* Lower @@ -126,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | | Reset| | | | | | | | | | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | | | | | |Qwerty|Colemk|Dvorak| | | + * | | | |Aud on|Audoff| | |Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | | | | | | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| @@ -135,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_AD] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, _______, M(6), _______, _______, M(M_QW), M(M_CM), M(M_DV), _______, _______}, + {_______, _______, _______, AUD_ON, AUD_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -146,6 +150,14 @@ const uint16_t PROGMEM fn_actions[] = { }; #ifdef AUDIO_ENABLE +float start_up[][2] = { + {440.0*pow(2.0,(67)/12.0), 12}, + {440.0*pow(2.0,(64)/12.0), 8}, + {440.0*pow(2.0,(55)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(64)/12.0), 20} +}; + float tone_qw[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, @@ -157,20 +169,20 @@ float tone_cm[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16}, + {440.0*pow(2.0,(67)/12.0), 12}, {0, 4}, - {440.0*pow(2.0,(71)/12.0), 16} + {440.0*pow(2.0,(71)/12.0), 12} }; float tone_dv[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16}, + {440.0*pow(2.0,(67)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(69)/12.0), 16}, + {440.0*pow(2.0,(69)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16} + {440.0*pow(2.0,(67)/12.0), 8} }; #endif @@ -179,7 +191,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { // MACRODOWN only works in this function switch(id) { - case M_QW: + case _QW: if (record->event.pressed) { #ifdef AUDIO_ENABLE play_notes(&tone_qw, 4, false); @@ -187,7 +199,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) default_layer_set(1UL<<_QW); } break; - case M_CM: + case _CM: if (record->event.pressed) { #ifdef AUDIO_ENABLE play_notes(&tone_cm, 6, false); @@ -195,7 +207,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) default_layer_set(1UL<<_CM); } break; - case M_DV: + case _DV: if (record->event.pressed) { #ifdef AUDIO_ENABLE play_notes(&tone_dv, 8, false); @@ -203,7 +215,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) default_layer_set(1UL<<_DV); } break; - case M_LW: + case _LW: if (record->event.pressed) { layer_on(_LW); update_tri_layer(_LW, _RS, _AD); @@ -212,7 +224,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) update_tri_layer(_LW, _RS, _AD); } break; - case M_RS: + case _RS: if (record->event.pressed) { layer_on(_RS); update_tri_layer(_LW, _RS, _AD); @@ -233,23 +245,23 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) break; case 6: if (record->event.pressed) { - audio_toggle(); + #ifdef AUDIO_ENABLE + audio_off(); + #endif + } + break; + case 7: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + audio_on(); + play_notes(&start_up, 5, false); + #endif } break; } return MACRO_NONE; }; -#ifdef AUDIO_ENABLE -float start_up[][2] = { - {440.0*pow(2.0,(67)/12.0), 12}, - {440.0*pow(2.0,(64)/12.0), 8}, - {440.0*pow(2.0,(55)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {440.0*pow(2.0,(64)/12.0), 20} -}; -#endif - void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index e48052c825..eaf9ef927c 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -126,27 +126,44 @@ OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT # USBaspLoader 2048 OPT_DEFS += -DBOOTLOADER_SIZE=4096 - # Build Options -# comment out to disable the options. +# change to "no" to disable the options, or define them in the makefile.mk in +# the appropriate keymap folder that will get included automatically # -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 = 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 -AUDIO_ENABLE = yes # Audio output on port C6 -# UNICODE_ENABLE = YES # Unicode -# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID -# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time. +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 +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 +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. -ifdef BACKLIGHT_ENABLE - SRC += backlight.c +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +ifdef KEYMAP + +ifeq ("$(wildcard keymaps/$(KEYMAP).c)","") +ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","") + include keymaps/$(KEYMAP)/makefile.mk +endif +endif + +else + +ifneq ("$(wildcard keymaps/default/makefile.mk)","") + include keymaps/default/makefile.mk +endif + +endif + +ifeq ($(strip $(BACKLIGHT_ENABLE)), yes) + SRC := backlight.c $(SRC) endif diff --git a/keyboard/preonic/keymaps/default/README.md b/keyboard/preonic/keymaps/default/README.md index d2f43bbdb8..e911968dd9 100644 --- a/keyboard/preonic/keymaps/default/README.md +++ b/keyboard/preonic/keymaps/default/README.md @@ -1,34 +1 @@ -# The Default Planck Layout - - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = { /* 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 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_CM] = { /* 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 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_DV] = { /* 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 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_RS] = { /* 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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} - }, - [_LW] = { /* 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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} - } - }; \ No newline at end of file +# The default Preonic layout - largely based on the Planck's \ No newline at end of file diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 3da69c2155..c52d8472f4 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -1,9 +1,7 @@ -// 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 "preonic.h" -#ifdef BACKLIGHT_ENABLE - #include "backlight.h" +#include "action_layer.h" +#ifdef AUDIO_ENABLE + #include "audio.h" #endif // Each layer gets a name for readability, which is then used in the keymap matrix below. @@ -15,42 +13,150 @@ #define _DV 2 #define _LW 3 #define _RS 4 +#define _AD 5 + +// Macro name shortcuts +#define QWERTY M(_QW) +#define COLEMAK M(_CM) +#define DVORAK M(_DV) +#define LOWER M(_LW) +#define RAISE M(_RS) +#define M_BL 5 +#ifdef AUDIO_ENABLE + #define AUD_OFF M(6) + #define AUD_ON M(7) +#endif + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { -[_QW] = { /* Qwerty */ + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | 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 | + * `-----------------------------------------------------------------------------------' + */ +[_QW] = { {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_TAB, 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_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL}, {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 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, -[_CM] = { /* Colemak */ + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | 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 | + * `-----------------------------------------------------------------------------------' + */ +[_CM] = { {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_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, + {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL}, {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 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, -[_DV] = { /* Dvorak */ + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | Tab | " | , | . | P | Y | F | G | C | R | L | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | 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 | + * `-----------------------------------------------------------------------------------' + */ +[_DV] = { {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_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, 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_DEL}, {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 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} + {M(M_BL), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} }, -[_RS] = { /* 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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, - {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} -}, -[_LW] = { /* LOWER */ - {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LW] = { {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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} + {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_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, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RS] = { + {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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, + {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_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} +}, + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Audoff|Aud on| | |Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | | | | | | | | | | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_AD] = { + {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_DEL}, + {_______, _______, _______, AUD_ON, AUD_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } }; @@ -58,28 +164,116 @@ const uint16_t PROGMEM fn_actions[] = { }; +#ifdef AUDIO_ENABLE float start_up[][2] = { - {440.0*pow(2.0,(67)/12.0), 4}, + {440.0*pow(2.0,(55)/12.0), 12}, + {0, 2}, + {440.0*pow(2.0,(67)/12.0), 8}, {440.0*pow(2.0,(64)/12.0), 8}, {440.0*pow(2.0,(55)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {440.0*pow(2.0,(64)/12.0), 10}, + {440.0*pow(2.0,(67)/12.0), 12}, + {0, 2}, + {440.0*pow(2.0,(67)/12.0), 12} }; +float tone_qw[][2] = { + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 16} +}; + +float tone_cm[][2] = { + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 12}, + {0, 4}, + {440.0*pow(2.0,(71)/12.0), 12} +}; + +float tone_dv[][2] = { + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(69)/12.0), 8}, + {0, 4}, + {440.0*pow(2.0,(67)/12.0), 8} +}; +#endif + + 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: + case _QW: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + play_notes(&tone_qw, 4, false); + #endif + default_layer_set(1UL<<_QW); + } + break; + case _CM: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + play_notes(&tone_cm, 6, false); + #endif + default_layer_set(1UL<<_CM); + } + break; + case _DV: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + play_notes(&tone_dv, 8, false); + #endif + default_layer_set(1UL<<_DV); + } + break; + case _LW: + if (record->event.pressed) { + layer_on(_LW); + update_tri_layer(_LW, _RS, _AD); + } else { + layer_off(_LW); + update_tri_layer(_LW, _RS, _AD); + } + break; + case _RS: + if (record->event.pressed) { + layer_on(_RS); + update_tri_layer(_LW, _RS, _AD); + } else { + layer_off(_RS); + update_tri_layer(_LW, _RS, _AD); + } + break; + case M_BL: if (record->event.pressed) { register_code(KC_RSFT); #ifdef BACKLIGHT_ENABLE backlight_step(); #endif - audio_toggle(); } else { unregister_code(KC_RSFT); - play_notes(&start_up, 5, false); + } + break; + case 6: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + audio_off(); + #endif + } + break; + case 7: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + audio_on(); + play_notes(&start_up, 7, false); + #endif } break; } @@ -87,8 +281,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) }; void matrix_init_user(void) { -#ifdef AUDIO_ENABLE + #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 5, false); -#endif + play_notes(&start_up, 7, false); + #endif } diff --git a/keyboard/preonic/keymaps/default/makefile.mk b/keyboard/preonic/keymaps/default/makefile.mk new file mode 100644 index 0000000000..628167ff66 --- /dev/null +++ b/keyboard/preonic/keymaps/default/makefile.mk @@ -0,0 +1 @@ +AUDIO_ENABLE = yes \ No newline at end of file From 142ce47698613bb8fb757f13c29928a572a4d9d9 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 01:23:08 -0400 Subject: [PATCH 45/55] added keymap_extras to path --- quantum/quantum.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/quantum/quantum.mk b/quantum/quantum.mk index 17bb501718..1fe7390eba 100644 --- a/quantum/quantum.mk +++ b/quantum/quantum.mk @@ -46,6 +46,7 @@ endif # Search Path VPATH += $(TOP_DIR)/$(QUANTUM_DIR) +VPATH += $(TOP_DIR)/$(QUANTUM_DIR)/keymap_extras include $(TMK_DIR)/protocol/lufa.mk From 86169833c597fa5f2b5226e1587c48a6692ec017 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 15:47:17 -0400 Subject: [PATCH 46/55] updates to preonic default, music mode integrated --- keyboard/preonic/keymaps/default/keymap.c | 160 +++++++++++++++------- quantum/audio.c | 102 +++++++------- 2 files changed, 166 insertions(+), 96 deletions(-) diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index c52d8472f4..6824f68b60 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -1,31 +1,40 @@ #include "preonic.h" #include "action_layer.h" +#include "eeconfig.h" #ifdef AUDIO_ENABLE #include "audio.h" + #define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \ + 0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \ + 0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \ + 0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \ + 0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), } #endif // 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 _QW 0 -#define _CM 1 -#define _DV 2 -#define _LW 3 -#define _RS 4 -#define _AD 5 +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 5 +#define _MUSIC 6 // Macro name shortcuts -#define QWERTY M(_QW) -#define COLEMAK M(_CM) -#define DVORAK M(_DV) -#define LOWER M(_LW) -#define RAISE M(_RS) +#define QWERTY M(_QWERTY) +#define COLEMAK M(_COLEMAK) +#define DVORAK M(_DVORAK) +#define LOWER M(_LOWER) +#define RAISE M(_RAISE) #define M_BL 5 #ifdef AUDIO_ENABLE #define AUD_OFF M(6) #define AUD_ON M(7) #endif +#define MUS_OFF M(8) +#define MUS_ON M(9) // Fillers to make layering more clear #define _______ KC_TRNS @@ -46,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_QW] = { +[_QWERTY] = { {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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL}, {KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT}, @@ -67,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_CM] = { +[_COLEMAK] = { {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_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL}, {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT}, @@ -88,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_DV] = { +[_DVORAK] = { {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_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL}, {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, @@ -109,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_LW] = { +[_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_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, @@ -130,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_RS] = { +[_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_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL}, {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, @@ -151,10 +160,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ -[_AD] = { +[_ADJUST] = { {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_DEL}, {_______, _______, _______, AUD_ON, AUD_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, _______, _______, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, + +/* Music (reserved for process_action_user) + * + */ +[_MUSIC] = { + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -166,24 +186,20 @@ const uint16_t PROGMEM fn_actions[] = { #ifdef AUDIO_ENABLE float start_up[][2] = { - {440.0*pow(2.0,(55)/12.0), 12}, - {0, 2}, - {440.0*pow(2.0,(67)/12.0), 8}, - {440.0*pow(2.0,(64)/12.0), 8}, - {440.0*pow(2.0,(55)/12.0), 8}, - {440.0*pow(2.0,(67)/12.0), 12}, - {0, 2}, - {440.0*pow(2.0,(67)/12.0), 12} + {440.0*pow(2.0,(50)/12.0), 20}, + {440.0*pow(2.0,(62)/12.0), 8}, + {440.0*pow(2.0,(54)/12.0), 20}, + {440.0*pow(2.0,(62)/12.0), 8} }; -float tone_qw[][2] = { +float tone_qwerty[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, {0, 4}, {440.0*pow(2.0,(67)/12.0), 16} }; -float tone_cm[][2] = { +float tone_colemak[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, {0, 4}, @@ -192,7 +208,7 @@ float tone_cm[][2] = { {440.0*pow(2.0,(71)/12.0), 12} }; -float tone_dv[][2] = { +float tone_dvorak[][2] = { {440.0*pow(2.0,(59)/12.0), 8}, {440.0*pow(2.0,(60)/12.0), 8}, {0, 4}, @@ -202,53 +218,66 @@ float tone_dv[][2] = { {0, 4}, {440.0*pow(2.0,(67)/12.0), 8} }; + +float tone_music[][2] = { + {440.0*pow(2.0,(48)/12.0), 8}, + {440.0*pow(2.0,(50)/12.0), 8}, + {440.0*pow(2.0,(52)/12.0), 8}, + {440.0*pow(2.0,(53)/12.0), 8}, + {440.0*pow(2.0,(55)/12.0), 8}, + {440.0*pow(2.0,(57)/12.0), 8}, + {440.0*pow(2.0,(59)/12.0), 8}, + {440.0*pow(2.0,(60)/12.0), 8} +}; #endif const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - // MACRODOWN only works in this function switch(id) { - case _QW: + case _QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_qw, 4, false); + play_notes(&tone_qwerty, 4, false); #endif - default_layer_set(1UL<<_QW); + eeconfig_write_default_layer(1UL<<_QWERTY); + default_layer_set(1UL<<_QWERTY); } break; - case _CM: + case _COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_cm, 6, false); + play_notes(&tone_colemak, 6, false); #endif - default_layer_set(1UL<<_CM); + eeconfig_write_default_layer(1UL<<_COLEMAK); + default_layer_set(1UL<<_COLEMAK); } break; - case _DV: + case _DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_dv, 8, false); + play_notes(&tone_dvorak, 8, false); #endif - default_layer_set(1UL<<_DV); + eeconfig_write_default_layer(1UL<<_DVORAK); + default_layer_set(1UL<<_DVORAK); } break; - case _LW: + case _LOWER: if (record->event.pressed) { - layer_on(_LW); - update_tri_layer(_LW, _RS, _AD); + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { - layer_off(_LW); - update_tri_layer(_LW, _RS, _AD); + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } break; - case _RS: + case _RAISE: if (record->event.pressed) { - layer_on(_RS); - update_tri_layer(_LW, _RS, _AD); + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { - layer_off(_RS); - update_tri_layer(_LW, _RS, _AD); + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } break; case M_BL: @@ -272,7 +301,23 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - play_notes(&start_up, 7, false); + play_notes(&start_up, 4, false); + #endif + } + break; + case 8: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + layer_off(_MUSIC); + stop_all_notes(); + #endif + } + break; + case 9: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + play_notes(&tone_music, 8, false); + layer_on(_MUSIC); #endif } break; @@ -280,9 +325,24 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; +uint8_t starting_note = 0x0C; +int offset = 7; + +void process_action_user(keyrecord_t *record) { + + if (IS_LAYER_ON(_MUSIC)) { + if (record->event.pressed) { + play_note(((double)261.626)*pow(2.0, -2.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + } else { + stop_note(((double)261.626)*pow(2.0, -2.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); + } + } + +} + void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 7, false); + play_notes(&start_up, 4, false); #endif } diff --git a/quantum/audio.c b/quantum/audio.c index 73985479cc..5edcccdbe1 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -32,6 +32,8 @@ int voice_place = 0; double frequency = 0; int volume = 0; long position = 0; +int duty_place = 1; +int duty_counter = 0; double frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0}; int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0}; @@ -98,53 +100,55 @@ void stop_all_notes() { } void stop_note(double freq) { - #ifdef PWM_AUDIO - freq = freq / SAMPLE_RATE; - #endif - for (int i = 7; i >= 0; i--) { - if (frequencies[i] == freq) { - frequencies[i] = 0; - volumes[i] = 0; - for (int j = i; (j < 7); j++) { - frequencies[j] = frequencies[j+1]; - frequencies[j+1] = 0; - volumes[j] = volumes[j+1]; - volumes[j+1] = 0; - } - } - } - voices--; - if (voices < 0) - voices = 0; - if (voices == 0) { + if (note) { #ifdef PWM_AUDIO - TIMSK3 &= ~_BV(OCIE3A); - #else - TIMSK3 &= ~_BV(OCIE3A); - TCCR3A &= ~_BV(COM3A1); + freq = freq / SAMPLE_RATE; #endif - frequency = 0; - volume = 0; - note = false; - } else { - double freq = frequencies[voices - 1]; - int vol = volumes[voices - 1]; - double starting_f = frequency; - if (frequency < freq) { - sliding = true; - for (double f = starting_f; f <= freq; f += ((freq - starting_f) / 2000.0)) { - frequency = f; + for (int i = 7; i >= 0; i--) { + if (frequencies[i] == freq) { + frequencies[i] = 0; + volumes[i] = 0; + for (int j = i; (j < 7); j++) { + frequencies[j] = frequencies[j+1]; + frequencies[j+1] = 0; + volumes[j] = volumes[j+1]; + volumes[j+1] = 0; + } } - sliding = false; - } else if (frequency > freq) { - sliding = true; - for (double f = starting_f; f >= freq; f -= ((starting_f - freq) / 2000.0)) { - frequency = f; - } - sliding = false; } - frequency = freq; - volume = vol; + voices--; + if (voices < 0) + voices = 0; + if (voices == 0) { + #ifdef PWM_AUDIO + TIMSK3 &= ~_BV(OCIE3A); + #else + TIMSK3 &= ~_BV(OCIE3A); + TCCR3A &= ~_BV(COM3A1); + #endif + frequency = 0; + volume = 0; + note = false; + } else { + double freq = frequencies[voices - 1]; + int vol = volumes[voices - 1]; + double starting_f = frequency; + if (frequency < freq) { + sliding = true; + for (double f = starting_f; f <= freq; f += ((freq - starting_f) / 2000.0)) { + frequency = f; + } + sliding = false; + } else if (frequency > freq) { + sliding = true; + for (double f = starting_f; f >= freq; f -= ((starting_f - freq) / 2000.0)) { + frequency = f; + } + sliding = false; + } + frequency = freq; + volume = vol; + } } } @@ -239,13 +243,19 @@ ISR(TIMER3_COMPA_vect) { if (frequency > 0) { // ICR3 = (int)(((double)F_CPU) / frequency); // Set max to the period // OCR3A = (int)(((double)F_CPU) / frequency) >> 1; // Set compare to half the period - if (place > 10) { + voice_place %= voices; + if (place > (frequencies[voice_place] / 500)) { voice_place = (voice_place + 1) % voices; place = 0.0; } ICR3 = (int)(((double)F_CPU) / frequencies[voice_place]); // Set max to the period - OCR3A = (int)(((double)F_CPU) / frequencies[voice_place]) >> 1; // Set compare to half the period + OCR3A = (int)(((double)F_CPU) / frequencies[voice_place]) >> 1 * duty_place; // Set compare to half the period place++; + // if (duty_counter > (frequencies[voice_place] / 500)) { + // duty_place = (duty_place % 3) + 1; + // duty_counter = 0; + // } + // duty_counter++; } #endif } @@ -375,7 +385,7 @@ if (audio_config.enable) { void play_note(double freq, int vol) { -if (audio_config.enable) { +if (audio_config.enable && voices < 8) { if (notes) stop_all_notes(); From ab19ebd08a8b955775e6fa94cdf6b8d128d8b43c Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 18:51:58 -0400 Subject: [PATCH 47/55] MAGIC functionality, AG swap in default layout --- keyboard/planck/keymaps/default/README.md | 32 --- keyboard/preonic/Makefile | 2 +- keyboard/preonic/keymaps/default/keymap.c | 19 +- quantum/keymap_common.c | 250 ++++++++++++---------- quantum/keymap_common.h | 28 ++- tmk_core/common.mk | 3 + tmk_core/common/keyboard.c | 8 +- tmk_core/common/keymap.h | 3 - tmk_core/common/magic.c | 36 ++++ tmk_core/common/magic.h | 6 + 10 files changed, 226 insertions(+), 161 deletions(-) create mode 100644 tmk_core/common/magic.c create mode 100644 tmk_core/common/magic.h diff --git a/keyboard/planck/keymaps/default/README.md b/keyboard/planck/keymaps/default/README.md index d2f43bbdb8..de9680b498 100644 --- a/keyboard/planck/keymaps/default/README.md +++ b/keyboard/planck/keymaps/default/README.md @@ -1,34 +1,2 @@ # The Default Planck Layout - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_QW] = { /* 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 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_CM] = { /* 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 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_DV] = { /* 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 }, - {M(0), KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} - }, - [_RS] = { /* 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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} - }, - [_LW] = { /* 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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, - {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS}, - {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} - } - }; \ No newline at end of file diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index eaf9ef927c..9199968c3d 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -130,7 +130,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # change to "no" to disable the options, or define them in the makefile.mk 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) diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 6824f68b60..e1f9b62029 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -153,9 +153,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * |------+------+------+------+------+------+------+------+------+------+------+------| * | | Reset| | | | | | | | | | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Audoff|Aud on| | |Qwerty|Colemk|Dvorak| | | + * | | | |Audoff|Aud on|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| - * | | | | | | | | | | | | | + * | | | |Musoff|Mus on| | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' @@ -163,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_ADJUST] = { {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_DEL}, - {_______, _______, _______, AUD_ON, AUD_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, {_______, _______, _______, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} }, @@ -231,6 +231,10 @@ float tone_music[][2] = { }; #endif +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_write_default_layer(default_layer); + default_layer_set(default_layer); +} const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { @@ -240,8 +244,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE play_notes(&tone_qwerty, 4, false); #endif - eeconfig_write_default_layer(1UL<<_QWERTY); - default_layer_set(1UL<<_QWERTY); + persistant_default_layer_set(1UL<<_QWERTY); } break; case _COLEMAK: @@ -249,8 +252,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE play_notes(&tone_colemak, 6, false); #endif - eeconfig_write_default_layer(1UL<<_COLEMAK); - default_layer_set(1UL<<_COLEMAK); + persistant_default_layer_set(1UL<<_COLEMAK); } break; case _DVORAK: @@ -258,8 +260,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE play_notes(&tone_dvorak, 8, false); #endif - eeconfig_write_default_layer(1UL<<_DVORAK); - default_layer_set(1UL<<_DVORAK); + persistant_default_layer_set(1UL<<_DVORAK); } break; case _LOWER: diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 3a00d36f08..b919166853 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -27,6 +27,8 @@ along with this program. If not, see . #include "keymap_midi.h" #include "bootloader.h" +extern keymap_config_t keymap_config; + #include #include #ifdef AUDIO_ENABLE @@ -47,120 +49,9 @@ action_t action_for_key(uint8_t layer, keypos_t key) // 16bit keycodes - important uint16_t keycode = keymap_key_to_keycode(layer, key); - if (keycode >= 0x0100 && keycode < 0x2000) { - // Has a modifier - action_t action; - // Split it up - action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); // adds modifier to key - return action; - } else if (keycode >= 0x2000 && keycode < 0x3000) { - // Is a shortcut for function layer, pull last 12bits - // This means we have 4,096 FN macros at our disposal - return keymap_func_to_action(keycode & 0xFFF); - } else if (keycode >= 0x3000 && keycode < 0x4000) { - // When the code starts with 3, it's an action macro. - action_t action; - action.code = ACTION_MACRO(keycode & 0xFF); - return action; -#ifdef BACKLIGHT_ENABLE - } else if (keycode >= BL_0 && keycode <= BL_15) { - action_t action; - action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F); - return action; - } else if (keycode == BL_DEC) { - action_t action; - action.code = ACTION_BACKLIGHT_DECREASE(); - return action; - } else if (keycode == BL_INC) { - action_t action; - action.code = ACTION_BACKLIGHT_INCREASE(); - return action; - } else if (keycode == BL_TOGG) { - action_t action; - action.code = ACTION_BACKLIGHT_TOGGLE(); - return action; - } else if (keycode == BL_STEP) { - action_t action; - action.code = ACTION_BACKLIGHT_STEP(); - return action; -#endif - } else if (keycode == RESET) { // RESET is 0x5000, which is why this is here - action_t action; - clear_keyboard(); - #ifdef AUDIO_ENABLE - play_notes(&goodbye, 3, false); - #endif - _delay_ms(250); - #ifdef ATREUS_ASTAR - *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific - #endif - bootloader_jump(); - return action; - } else if (keycode == DEBUG) { // DEBUG is 0x5001 - // TODO: Does this actually work? - action_t action; - print("\nDEBUG: enabled.\n"); - debug_enable = true; - return action; - } else if (keycode >= 0x5000 && keycode < 0x6000) { - // Layer movement shortcuts - // See .h to see constraints/usage - int type = (keycode >> 0x8) & 0xF; - if (type == 0x1) { - // Layer set "GOTO" - int when = (keycode >> 0x4) & 0x3; - int layer = keycode & 0xF; - action_t action; - action.code = ACTION_LAYER_SET(layer, when); - return action; - } else if (type == 0x2) { - // Momentary layer - int layer = keycode & 0xFF; - action_t action; - action.code = ACTION_LAYER_MOMENTARY(layer); - return action; - } else if (type == 0x3) { - // Set default layer - int layer = keycode & 0xFF; - action_t action; - action.code = ACTION_DEFAULT_LAYER_SET(layer); - return action; - } else if (type == 0x4) { - // Set default layer - int layer = keycode & 0xFF; - action_t action; - action.code = ACTION_LAYER_TOGGLE(layer); - return action; - } -#ifdef MIDI_ENABLE - } else if (keycode >= 0x6000 && keycode < 0x7000) { - action_t action; - action.code = ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8); - return action; -#endif - } else if (keycode >= 0x7000 && keycode < 0x8000) { - action_t action; - action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); - return action; - } else if (keycode >= 0x8000 && keycode < 0x9000) { - action_t action; - action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); - return action; -#ifdef UNICODE_ENABLE - } else if (keycode >= 0x8000000) { - action_t action; - uint16_t unicode = keycode & ~(0x8000); - action.code = ACTION_FUNCTION_OPT(unicode & 0xFF, (unicode & 0xFF00) >> 8); - return action; -#endif - } else { - - } - switch (keycode) { case KC_FN0 ... KC_FN31: return keymap_fn_to_action(keycode); -#ifdef BOOTMAGIC_ENABLE case KC_CAPSLOCK: case KC_LOCKING_CAPS: if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) { @@ -224,7 +115,6 @@ action_t action_for_key(uint8_t layer, keypos_t key) return keycode_to_action(KC_BSLASH); } return keycode_to_action(KC_BSPACE); -#endif default: return keycode_to_action(keycode); } @@ -265,6 +155,142 @@ static action_t keycode_to_action(uint16_t keycode) case KC_TRNS: action.code = ACTION_TRANSPARENT; break; + case 0x0100 ... 0x1FFF: ; + // Has a modifier + // Split it up + action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); // adds modifier to key + break; + case 0x2000 ... 0x2FFF: + // Is a shortcut for function layer, pull last 12bits + // This means we have 4,096 FN macros at our disposal + return keymap_func_to_action(keycode & 0xFFF); + break; + case 0x3000 ... 0x3FFF: ; + // When the code starts with 3, it's an action macro. + action.code = ACTION_MACRO(keycode & 0xFF); + break; + #ifdef BACKLIGHT_ENABLE + case BL_0 ... BL_15: + action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F); + break; + case BL_DEC: + action.code = ACTION_BACKLIGHT_DECREASE(); + break; + case BL_INC: + action.code = ACTION_BACKLIGHT_INCREASE(); + break; + case BL_TOGG: + action.code = ACTION_BACKLIGHT_TOGGLE(); + break; + case BL_STEP: + action.code = ACTION_BACKLIGHT_STEP(); + break; + #endif + case RESET: ; // RESET is 0x5000, which is why this is here + clear_keyboard(); + #ifdef AUDIO_ENABLE + play_notes(&goodbye, 3, false); + #endif + _delay_ms(250); + #ifdef ATREUS_ASTAR + *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific + #endif + bootloader_jump(); + break; + case DEBUG: ; // DEBUG is 0x5001 + print("\nDEBUG: enabled.\n"); + debug_enable = true; + break; + case 0x5002 ... 0x50FF: + // MAGIC actions (BOOTMAGIC without the boot) + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + /* keymap config */ + keymap_config.raw = eeconfig_read_keymap(); + if (keycode == MAGIC_SWAP_CONTROL_CAPSLOCK) { + keymap_config.swap_control_capslock = 1; + } else if (keycode == MAGIC_CAPSLOCK_TO_CONTROL) { + keymap_config.capslock_to_control = 1; + } else if (keycode == MAGIC_SWAP_LALT_LGUI) { + keymap_config.swap_lalt_lgui = 1; + } else if (keycode == MAGIC_SWAP_RALT_RGUI) { + keymap_config.swap_ralt_rgui = 1; + } else if (keycode == MAGIC_NO_GUI) { + keymap_config.no_gui = 1; + } else if (keycode == MAGIC_SWAP_GRAVE_ESC) { + keymap_config.swap_grave_esc = 1; + } else if (keycode == MAGIC_SWAP_BACKSLASH_BACKSPACE) { + keymap_config.swap_backslash_backspace = 1; + } else if (keycode == MAGIC_HOST_NKRO) { + keymap_config.nkro = 1; + } else if (keycode == MAGIC_SWAP_ALT_GUI) { + keymap_config.swap_lalt_lgui = 1; + keymap_config.swap_ralt_rgui = 1; + } + /* UNs */ + else if (keycode == MAGIC_UNSWAP_CONTROL_CAPSLOCK) { + keymap_config.swap_control_capslock = 0; + } else if (keycode == MAGIC_UNCAPSLOCK_TO_CONTROL) { + keymap_config.capslock_to_control = 0; + } else if (keycode == MAGIC_UNSWAP_LALT_LGUI) { + keymap_config.swap_lalt_lgui = 0; + } else if (keycode == MAGIC_UNSWAP_RALT_RGUI) { + keymap_config.swap_ralt_rgui = 0; + } else if (keycode == MAGIC_UNNO_GUI) { + keymap_config.no_gui = 0; + } else if (keycode == MAGIC_UNSWAP_GRAVE_ESC) { + keymap_config.swap_grave_esc = 0; + } else if (keycode == MAGIC_UNSWAP_BACKSLASH_BACKSPACE) { + keymap_config.swap_backslash_backspace = 0; + } else if (keycode == MAGIC_UNHOST_NKRO) { + keymap_config.nkro = 0; + } else if (keycode == MAGIC_UNSWAP_ALT_GUI) { + keymap_config.swap_lalt_lgui = 0; + keymap_config.swap_ralt_rgui = 0; + } + eeconfig_write_keymap(keymap_config.raw); + break; + case 0x5100 ... 0x5FFF: ; + // Layer movement shortcuts + // See .h to see constraints/usage + int type = (keycode >> 0x8) & 0xF; + if (type == 0x1) { + // Layer set "GOTO" + int when = (keycode >> 0x4) & 0x3; + int layer = keycode & 0xF; + action.code = ACTION_LAYER_SET(layer, when); + } else if (type == 0x2) { + // Momentary layer + int layer = keycode & 0xFF; + action.code = ACTION_LAYER_MOMENTARY(layer); + } else if (type == 0x3) { + // Set default layer + int layer = keycode & 0xFF; + action.code = ACTION_DEFAULT_LAYER_SET(layer); + } else if (type == 0x4) { + // Set default layer + int layer = keycode & 0xFF; + action.code = ACTION_LAYER_TOGGLE(layer); + } + break; + #ifdef MIDI_ENABLE + case 0x6000 ... 0x6FFF: + action.code = ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8); + break; + #endif + case 0x7000 ... 0x7FFF: + action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); + break; + case 0x8000 ... 0x8FFF: + action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); + break; + #ifdef UNICODE_ENABLE + case 0x8000000 ... 0x8FFFFFF: + uint16_t unicode = keycode & ~(0x8000); + action.code = ACTION_FUNCTION_OPT(unicode & 0xFF, (unicode & 0xFF00) >> 8); + break; + #endif default: action.code = ACTION_NO; break; diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index 7452a1ff3f..ce87e4770e 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -30,7 +30,6 @@ along with this program. If not, see . // #include "print.h" #include "debug.h" -#ifdef BOOTMAGIC_ENABLE /* NOTE: Not portable. Bit field order depends on implementation */ typedef union { uint16_t raw; @@ -45,8 +44,6 @@ typedef union { bool nkro:1; }; } keymap_config_t; -keymap_config_t keymap_config; -#endif /* translates key to keycode */ @@ -168,6 +165,30 @@ extern const uint16_t fn_actions[]; #define RESET 0x5000 #define DEBUG 0x5001 +// MAGIC keycodes +#define MAGIC_SWAP_CONTROL_CAPSLOCK 0x5002 +#define MAGIC_UNSWAP_CONTROL_CAPSLOCK 0x5003 +#define MAGIC_CAPSLOCK_TO_CONTROL 0x5004 +#define MAGIC_UNCAPSLOCK_TO_CONTROL 0x5005 +#define MAGIC_SWAP_LALT_LGUI 0x5006 +#define MAGIC_UNSWAP_LALT_LGUI 0x5007 +#define MAGIC_SWAP_RALT_RGUI 0x5008 +#define MAGIC_UNSWAP_RALT_RGUI 0x5009 +#define MAGIC_NO_GUI 0x500a +#define MAGIC_UNNO_GUI 0x500b +#define MAGIC_SWAP_GRAVE_ESC 0x500c +#define MAGIC_UNSWAP_GRAVE_ESC 0x500d +#define MAGIC_SWAP_BACKSLASH_BACKSPACE 0x500e +#define MAGIC_UNSWAP_BACKSLASH_BACKSPACE 0x500f +#define MAGIC_HOST_NKRO 0x5010 +#define MAGIC_UNHOST_NKRO 0x5011 +#define MAGIC_SWAP_ALT_GUI 0x5012 +#define MAGIC_UNSWAP_ALT_GUI 0x5013 + +#define AG_SWAP MAGIC_SWAP_ALT_GUI +#define AG_NORM MAGIC_UNSWAP_ALT_GUI + + // GOTO layer - 16 layers max // when: // ON_PRESS = 1 @@ -213,4 +234,5 @@ void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3); #define IS_LAYER_ON(layer) ((layer_state) & (1UL<<(layer))) #define IS_LAYER_OFF(layer) ((!layer_state) & (1UL<<(layer))) + #endif diff --git a/tmk_core/common.mk b/tmk_core/common.mk index f8006c6708..9cb2eb8ecd 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -21,6 +21,9 @@ ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes) SRC += $(COMMON_DIR)/bootmagic.c SRC += $(COMMON_DIR)/avr/eeconfig.c OPT_DEFS += -DBOOTMAGIC_ENABLE +else + SRC += $(COMMON_DIR)/magic.c + SRC += $(COMMON_DIR)/avr/eeconfig.c endif ifeq ($(strip $(MOUSEKEY_ENABLE)), yes) diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index 302b3ec87c..1d99818481 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -27,7 +27,11 @@ along with this program. If not, see . #include "command.h" #include "util.h" #include "sendchar.h" -#include "bootmagic.h" +#ifdef BOOTMAGIC_ENABLE + #include "bootmagic.h" +#else + #include "magic.h" +#endif #include "eeconfig.h" #include "backlight.h" #ifdef MOUSEKEY_ENABLE @@ -86,6 +90,8 @@ void keyboard_init(void) #ifdef BOOTMAGIC_ENABLE bootmagic(); +#else + magic(); #endif #ifdef BACKLIGHT_ENABLE diff --git a/tmk_core/common/keymap.h b/tmk_core/common/keymap.h index e1a6f992e6..abc9bdb32d 100644 --- a/tmk_core/common/keymap.h +++ b/tmk_core/common/keymap.h @@ -22,8 +22,6 @@ along with this program. If not, see . #include #include "action.h" - -#ifdef BOOTMAGIC_ENABLE /* NOTE: Not portable. Bit field order depends on implementation */ typedef union { uint8_t raw; @@ -39,7 +37,6 @@ typedef union { }; } keymap_config_t; keymap_config_t keymap_config; -#endif /* translates key to keycode */ diff --git a/tmk_core/common/magic.c b/tmk_core/common/magic.c new file mode 100644 index 0000000000..f21d1346c7 --- /dev/null +++ b/tmk_core/common/magic.c @@ -0,0 +1,36 @@ +#include +#include +#include +#include "matrix.h" +#include "bootloader.h" +#include "debug.h" +#include "keymap.h" +#include "host.h" +#include "action_layer.h" +#include "eeconfig.h" +#include "magic.h" + +keymap_config_t keymap_config; + +void magic(void) +{ + /* check signature */ + if (!eeconfig_is_enabled()) { + eeconfig_init(); + } + + /* debug enable */ + debug_config.raw = eeconfig_read_debug(); + + /* keymap config */ + keymap_config.raw = eeconfig_read_keymap(); + +#ifdef NKRO_ENABLE + keyboard_nkro = keymap_config.nkro; +#endif + + uint8_t default_layer = 0; + default_layer = eeconfig_read_default_layer(); + default_layer_set((uint32_t)default_layer); + +} \ No newline at end of file diff --git a/tmk_core/common/magic.h b/tmk_core/common/magic.h new file mode 100644 index 0000000000..3fa2d8b81c --- /dev/null +++ b/tmk_core/common/magic.h @@ -0,0 +1,6 @@ +#ifndef MAGIC_H +#define MAGIC_H + +void magic(void); + +#endif From b8d2e66638409066661e7dd3c66473d583256ec5 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 19:30:15 -0400 Subject: [PATCH 48/55] readme clarity for rgbleds --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 613bdcf42b..6e1ab9bc53 100644 --- a/README.md +++ b/README.md @@ -304,7 +304,7 @@ For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring Please note that the underglow is not compatible with audio output. So you cannot enable both of them at the same time. -Please add the following options into your config.h, and set them up according your hardware configuration. +Please add the following options into your config.h, and set them up according your hardware configuration. These settings are for the F4 by default: #define ws2812_PORTREG PORTF #define ws2812_DDRREG DDRF @@ -314,6 +314,12 @@ Please add the following options into your config.h, and set them up according y #define RGBLIGHT_SAT_STEP 17 #define RGBLIGHT_VAL_STEP 17 +You'll need to edit `PORTF`, `DDRF`, and `PF4` on the first three lines to the port/pin you have your LED(s) wired to, eg for B3 change things to: + + #define ws2812_PORTREG PORTB + #define ws2812_DDRREG DDRB + #define ws2812_pin PB3 + The firmware supports 5 different light effects, and the color (hue, saturation, brightness) can be customized in most effects. To control the underglow, you need to modify your keymap file to assign those functions to some keys/key combinations. For details, please check this keymap. `keyboard/planck/keymaps/yang/keymap.c` ### WS2812 Wiring From c83aa16f1d614c1c10f7597a67ffb9f2ae871951 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 20:26:02 -0400 Subject: [PATCH 49/55] fixes audio prescaler to emit correct freq --- keyboard/preonic/keymaps/default/keymap.c | 52 +++++++++++------------ quantum/audio.c | 12 +++--- quantum/keymap_common.c | 6 +-- 3 files changed, 36 insertions(+), 34 deletions(-) diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index e1f9b62029..6b62623180 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -186,48 +186,48 @@ const uint16_t PROGMEM fn_actions[] = { #ifdef AUDIO_ENABLE float start_up[][2] = { - {440.0*pow(2.0,(50)/12.0), 20}, - {440.0*pow(2.0,(62)/12.0), 8}, - {440.0*pow(2.0,(54)/12.0), 20}, - {440.0*pow(2.0,(62)/12.0), 8} + {440.0*pow(2.0,(14)/12.0), 20}, + {440.0*pow(2.0,(26)/12.0), 8}, + {440.0*pow(2.0,(18)/12.0), 20}, + {440.0*pow(2.0,(26)/12.0), 8} }; float tone_qwerty[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16} + {440.0*pow(2.0,(31)/12.0), 16} }; float tone_colemak[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 12}, + {440.0*pow(2.0,(31)/12.0), 12}, {0, 4}, - {440.0*pow(2.0,(71)/12.0), 12} + {440.0*pow(2.0,(35)/12.0), 12} }; float tone_dvorak[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 8}, + {440.0*pow(2.0,(31)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(69)/12.0), 8}, + {440.0*pow(2.0,(33)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 8} + {440.0*pow(2.0,(31)/12.0), 8} }; float tone_music[][2] = { - {440.0*pow(2.0,(48)/12.0), 8}, - {440.0*pow(2.0,(50)/12.0), 8}, - {440.0*pow(2.0,(52)/12.0), 8}, - {440.0*pow(2.0,(53)/12.0), 8}, - {440.0*pow(2.0,(55)/12.0), 8}, - {440.0*pow(2.0,(57)/12.0), 8}, - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8} + {440.0*pow(2.0,(12)/12.0), 8}, + {440.0*pow(2.0,(14)/12.0), 8}, + {440.0*pow(2.0,(16)/12.0), 8}, + {440.0*pow(2.0,(17)/12.0), 8}, + {440.0*pow(2.0,(19)/12.0), 8}, + {440.0*pow(2.0,(21)/12.0), 8}, + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8} }; #endif @@ -333,9 +333,9 @@ void process_action_user(keyrecord_t *record) { if (IS_LAYER_ON(_MUSIC)) { if (record->event.pressed) { - play_note(((double)261.626)*pow(2.0, -2.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + play_note(((double)261.626)*pow(2.0, -3.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); } else { - stop_note(((double)261.626)*pow(2.0, -2.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); + stop_note(((double)261.626)*pow(2.0, -3.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); } } diff --git a/quantum/audio.c b/quantum/audio.c index 5edcccdbe1..470dc8e0c7 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -12,6 +12,8 @@ #define PI 3.14159265 +#define CPU_PRESCALER 8 + // #define PWM_AUDIO #ifdef PWM_AUDIO @@ -244,12 +246,12 @@ ISR(TIMER3_COMPA_vect) { // ICR3 = (int)(((double)F_CPU) / frequency); // Set max to the period // OCR3A = (int)(((double)F_CPU) / frequency) >> 1; // Set compare to half the period voice_place %= voices; - if (place > (frequencies[voice_place] / 500)) { + if (place > (frequencies[voice_place] / 50)) { voice_place = (voice_place + 1) % voices; place = 0.0; } - ICR3 = (int)(((double)F_CPU) / frequencies[voice_place]); // Set max to the period - OCR3A = (int)(((double)F_CPU) / frequencies[voice_place]) >> 1 * duty_place; // Set compare to half the period + ICR3 = (int)(((double)F_CPU) / (frequencies[voice_place] * CPU_PRESCALER)); // Set max to the period + OCR3A = (int)(((double)F_CPU) / (frequencies[voice_place] * CPU_PRESCALER)) >> 1 * duty_place; // Set compare to half the period place++; // if (duty_counter > (frequencies[voice_place] / 500)) { // duty_place = (duty_place % 3) + 1; @@ -281,8 +283,8 @@ ISR(TIMER3_COMPA_vect) { place -= SINE_LENGTH; #else if (note_frequency > 0) { - ICR3 = (int)(((double)F_CPU) / note_frequency); // Set max to the period - OCR3A = (int)(((double)F_CPU) / note_frequency) >> 1; // Set compare to half the period + ICR3 = (int)(((double)F_CPU) / (note_frequency * CPU_PRESCALER)); // Set max to the period + OCR3A = (int)(((double)F_CPU) / (note_frequency * CPU_PRESCALER)) >> 1; // Set compare to half the period } else { ICR3 = 0; OCR3A = 0; diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index b919166853..899437f447 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -35,9 +35,9 @@ extern keymap_config_t keymap_config; #include "audio.h" float goodbye[][2] = { - {440.0*pow(2.0,(67)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {440.0*pow(2.0,(55)/12.0), 12}, + {440.0*pow(2.0,(31)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, + {440.0*pow(2.0,(19)/12.0), 12}, }; #endif From b5c22ab5b5b77d5e21cc4145831608eed6756ad7 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sat, 16 Apr 2016 19:27:21 -0500 Subject: [PATCH 50/55] Merging with QMK main to fix audio issues --- keyboard/atomic/keymaps/pvc/keymap.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 7abd7f4f7d..189da16c47 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -3,8 +3,10 @@ #ifdef AUDIO_ENABLE #include "audio.h" +#include "musical_notes.h" #endif + #define _QW 0 #define _LW 1 #define _RS 2 @@ -82,10 +84,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float tone_lw[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16} +Q_NOTE(_C4 ) , +Q_NOTE(_CS4 ) , +Q_NOTE(_D4 ) , +Q_NOTE(_DS4 ) , +Q_NOTE(_E4 ) , +Q_NOTE(_F4 ) , +Q_NOTE(_FS4 ) , +Q_NOTE(_G4 ) , +Q_NOTE(_GS4 ) , +Q_NOTE(_A4 ) , +Q_NOTE(_AS4 ) , +Q_NOTE(_B4 ) , }; float tone_rs[][2] = { @@ -158,6 +168,7 @@ void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t l const uint16_t PROGMEM fn_actions[] = { }; +#define ARRAY_SIZE(x) ((sizeof x) / (sizeof *x)) const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { @@ -167,7 +178,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE println("PlayNotes LW"); - play_notes(&tone_lw, 4, false); + print_val_hex32(ARRAY_SIZE(tone_lw)); + play_notes(&tone_lw, 12, false); #endif layer_on(_LW); update_tri_layer(_LW, _RS, _FN); From 41cc35425ab32c9a9492006da8b667d01d32dfa6 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 21:31:40 -0400 Subject: [PATCH 51/55] rests between notes as an argument --- keyboard/planck/keymaps/default/keymap.c | 10 ++++---- keyboard/preonic/keymaps/default/keymap.c | 16 ++++++------- quantum/audio.c | 29 ++++++++++++++++------- quantum/audio.h | 3 ++- quantum/keymap_common.c | 2 +- 5 files changed, 37 insertions(+), 23 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index ede08ad7f1..a6edefefd9 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -194,7 +194,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _QW: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_qw, 4, false); + play_notes(&tone_qw, 4, false, 0); #endif default_layer_set(1UL<<_QW); } @@ -202,7 +202,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _CM: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_cm, 6, false); + play_notes(&tone_cm, 6, false, 0); #endif default_layer_set(1UL<<_CM); } @@ -210,7 +210,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _DV: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_dv, 8, false); + play_notes(&tone_dv, 8, false, 0); #endif default_layer_set(1UL<<_DV); } @@ -254,7 +254,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - play_notes(&start_up, 5, false); + play_notes(&start_up, 5, false, 0); #endif } break; @@ -265,6 +265,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 5, false); + play_notes(&start_up, 5, false, 0); #endif } diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 6b62623180..1223793cfa 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -242,7 +242,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_qwerty, 4, false); + play_notes(&tone_qwerty, 4, false, 0); #endif persistant_default_layer_set(1UL<<_QWERTY); } @@ -250,7 +250,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_colemak, 6, false); + play_notes(&tone_colemak, 6, false, 1); #endif persistant_default_layer_set(1UL<<_COLEMAK); } @@ -258,7 +258,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_dvorak, 8, false); + play_notes(&tone_dvorak, 8, false, 10); #endif persistant_default_layer_set(1UL<<_DVORAK); } @@ -302,7 +302,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - play_notes(&start_up, 4, false); + play_notes(&start_up, 4, false, 0); #endif } break; @@ -317,7 +317,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case 9: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_music, 8, false); + play_notes(&tone_music, 8, false, 0); layer_on(_MUSIC); #endif } @@ -333,9 +333,9 @@ void process_action_user(keyrecord_t *record) { if (IS_LAYER_ON(_MUSIC)) { if (record->event.pressed) { - play_note(((double)261.626)*pow(2.0, -3.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); } else { - stop_note(((double)261.626)*pow(2.0, -3.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); + stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); } } @@ -344,6 +344,6 @@ void process_action_user(keyrecord_t *record) { void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 4, false); + play_notes(&start_up, 4, false, 0); #endif } diff --git a/quantum/audio.c b/quantum/audio.c index 470dc8e0c7..40d09d62fd 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -61,7 +61,11 @@ uint16_t note_position = 0; float (* notes_pointer)[][2]; uint8_t notes_length; bool notes_repeat; +float notes_rest; +bool note_resting = false; + uint8_t current_note = 0; +uint8_t rest_counter = 0; audio_config_t audio_config; @@ -314,13 +318,21 @@ ISR(TIMER3_COMPA_vect) { return; } } - #ifdef PWM_AUDIO - note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE; - note_length = (*notes_pointer)[current_note][1]; - #else - note_frequency = (*notes_pointer)[current_note][0]; - note_length = (*notes_pointer)[current_note][1] / 4; - #endif + if (!note_resting && ((int)notes_rest != 0)) { + note_resting = true; + note_frequency = 0; + note_length = notes_rest; + current_note--; + } else { + note_resting = false; + #ifdef PWM_AUDIO + note_frequency = (*notes_pointer)[current_note][0] / SAMPLE_RATE; + note_length = (*notes_pointer)[current_note][1]; + #else + note_frequency = (*notes_pointer)[current_note][0]; + note_length = (*notes_pointer)[current_note][1] / 4; + #endif + } note_position = 0; } @@ -332,7 +344,7 @@ ISR(TIMER3_COMPA_vect) { } } -void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat) { +void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat, float n_rest) { if (audio_config.enable) { @@ -343,6 +355,7 @@ if (audio_config.enable) { notes_pointer = np; notes_length = n_length; notes_repeat = n_repeat; + notes_rest = n_rest; place = 0; current_note = 0; diff --git a/quantum/audio.h b/quantum/audio.h index 58270015df..65a6f9434d 100644 --- a/quantum/audio.h +++ b/quantum/audio.h @@ -2,6 +2,7 @@ #include #include #include +#include "musical_notes.h" typedef union { uint8_t raw; @@ -20,4 +21,4 @@ void play_note(double freq, int vol); void stop_note(double freq); void stop_all_notes(); void init_notes(); -void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat); +void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat, float n_rest); diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 899437f447..457f70a448 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -189,7 +189,7 @@ static action_t keycode_to_action(uint16_t keycode) case RESET: ; // RESET is 0x5000, which is why this is here clear_keyboard(); #ifdef AUDIO_ENABLE - play_notes(&goodbye, 3, false); + play_notes(&goodbye, 3, false, 0); #endif _delay_ms(250); #ifdef ATREUS_ASTAR From a87522033d6385ecd2422f26f5bb6bdad9d44676 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sat, 16 Apr 2016 20:37:22 -0500 Subject: [PATCH 52/55] Merging with QMK main to fix rest issues --- keyboard/atomic/keymaps/pvc/keymap.c | 169 ++++++++++++++++++++++----- 1 file changed, 139 insertions(+), 30 deletions(-) diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 189da16c47..229708344f 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -84,6 +84,59 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { float tone_lw[][2] = { +/* +Q_NOTE(_C1 ) , +Q_NOTE(_CS1 ) , +Q_NOTE(_D1 ) , +Q_NOTE(_DS1 ) , +Q_NOTE(_E1 ) , +Q_NOTE(_F1 ) , +Q_NOTE(_FS1 ) , +Q_NOTE(_G1 ) , +Q_NOTE(_GS1 ) , +Q_NOTE(_A1 ) , +Q_NOTE(_AS1 ) , +Q_NOTE(_B1 ) , +*/ + +Q_NOTE(_C4 ) , +Q_NOTE(_CS4 ) , +Q_NOTE(_D4 ) , +Q_NOTE(_DS4 ) , +Q_NOTE(_E4 ) , +Q_NOTE(_F4 ) , +Q_NOTE(_FS4 ) , +Q_NOTE(_G4 ) , +Q_NOTE(_GS4 ) , +Q_NOTE(_A4 ) , +Q_NOTE(_AS4 ) , +Q_NOTE(_B1 ) , + + +Q_NOTE(_C2 ) , +Q_NOTE(_CS2 ) , +Q_NOTE(_D2 ) , +Q_NOTE(_DS2 ) , +Q_NOTE(_E2 ) , +Q_NOTE(_F2 ) , +Q_NOTE(_FS2 ) , +Q_NOTE(_G2 ) , +Q_NOTE(_GS2 ) , +Q_NOTE(_A2 ) , +Q_NOTE(_AS2 ) , +Q_NOTE(_B2 ) , +Q_NOTE(_C3 ) , +Q_NOTE(_CS3 ) , +Q_NOTE(_D3 ) , +Q_NOTE(_DS3 ) , +Q_NOTE(_E3 ) , +Q_NOTE(_F3 ) , +Q_NOTE(_FS3 ) , +Q_NOTE(_G3 ) , +Q_NOTE(_GS3 ) , +Q_NOTE(_A3 ) , +Q_NOTE(_AS3 ) , +Q_NOTE(_B3 ) , Q_NOTE(_C4 ) , Q_NOTE(_CS4 ) , Q_NOTE(_D4 ) , @@ -96,15 +149,64 @@ Q_NOTE(_GS4 ) , Q_NOTE(_A4 ) , Q_NOTE(_AS4 ) , Q_NOTE(_B4 ) , +Q_NOTE(_C5 ) , +Q_NOTE(_CS5 ) , +Q_NOTE(_D5 ) , +Q_NOTE(_DS5 ) , +Q_NOTE(_E5 ) , +Q_NOTE(_F5 ) , +Q_NOTE(_FS5 ) , +Q_NOTE(_G5 ) , +Q_NOTE(_GS5 ) , +Q_NOTE(_A5 ) , +Q_NOTE(_AS5 ) , +Q_NOTE(_B5 ) , +Q_NOTE(_C6 ) , +Q_NOTE(_CS6 ) , +Q_NOTE(_D6 ) , +Q_NOTE(_DS6 ) , +Q_NOTE(_E6 ) , +Q_NOTE(_F6 ) , +Q_NOTE(_FS6 ) , +Q_NOTE(_G6 ) , +Q_NOTE(_GS6 ) , +Q_NOTE(_A6 ) , +Q_NOTE(_AS6 ) , +Q_NOTE(_B6 ) , +Q_NOTE(_C7 ) , +Q_NOTE(_CS7 ) , +Q_NOTE(_D7 ) , +Q_NOTE(_DS7 ) , +Q_NOTE(_E7 ) , +Q_NOTE(_F7 ) , +Q_NOTE(_FS7 ) , +Q_NOTE(_G7 ) , +Q_NOTE(_GS7 ) , +Q_NOTE(_A7 ) , +Q_NOTE(_AS7 ) , +Q_NOTE(_B7 ) , +Q_NOTE(_C8 ) , +Q_NOTE(_CS8 ) , +Q_NOTE(_D8 ) , +Q_NOTE(_DS8 ) , +Q_NOTE(_E8 ) , +Q_NOTE(_F8 ) , +Q_NOTE(_FS8 ) , +Q_NOTE(_G8 ) , +Q_NOTE(_GS8 ) , +Q_NOTE(_A8 ) , +Q_NOTE(_AS8 ) , +Q_NOTE(_B8 ) , + }; float tone_rs[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16}, - {0, 4}, - {440.0*pow(2.0,(71)/12.0), 16} +Q_NOTE(_F8 ) , +Q_NOTE(_G8 ) , +Q_NOTE(_GS8 ) , +Q_NOTE(_A8 ) , +Q_NOTE(_AS8 ) , +Q_NOTE(_B8 ) , }; float tone_fn[][2] = { @@ -119,23 +221,6 @@ float tone_fn[][2] = { }; #endif - -void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) -{ - if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) - { - #ifdef AUDIO_ENABLE - println("PlayNotes FN"); - play_notes(&tone_fn, 8, false); - #endif - layer_on(layer3); - } - else - { - layer_off(layer3); - } -} - void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order) { if (order) @@ -179,7 +264,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE println("PlayNotes LW"); print_val_hex32(ARRAY_SIZE(tone_lw)); - play_notes(&tone_lw, 12, false); + play_notes(&tone_lw, 96, false); #endif layer_on(_LW); update_tri_layer(_LW, _RS, _FN); @@ -209,18 +294,42 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE float start_up[][2] = { - {440.0*pow(2.0,(67)/12.0), 12}, - {440.0*pow(2.0,(64)/12.0), 8}, - {440.0*pow(2.0,(55)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {440.0*pow(2.0,(64)/12.0), 20} +Q_NOTE(_E4 ) , +{0,1} , +Q_NOTE(_E4 ) , +{0,1} , +Q_NOTE(_F4 ) , +{0,1} , +Q_NOTE(_G4 ) , +{0,1} , +Q_NOTE(_G4 ) , +{0,1} , +Q_NOTE(_F4 ) , +{0,1} , +Q_NOTE(_E4 ) , +{0,1} , +Q_NOTE(_D4 ) , +{0,1} , +Q_NOTE(_C4 ) , +{0,1} , +Q_NOTE(_C4 ) , +{0,1} , +Q_NOTE(_D4 ) , +{0,1} , +Q_NOTE(_E4 ) , +{0,1} , +H_NOTE(_E4 ) , +{0,1} , +Q_NOTE(_D4 ) , +{0,1} , +H_NOTE(_D4 ) , }; #endif void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 5, false); + play_notes(&start_up, 29, false); println("Matrix Init"); #endif } From 8bbd064cf52a76508589579f19595607a1f3af21 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sat, 16 Apr 2016 23:07:50 -0400 Subject: [PATCH 53/55] changes to play_notes, goodbye --- keyboard/planck/keymaps/default/keymap.c | 10 +++++----- keyboard/preonic/Makefile | 2 +- keyboard/preonic/config.h | 4 ++-- keyboard/preonic/keymaps/default/keymap.c | 12 ++++++------ quantum/audio.c | 2 +- quantum/keymap_common.c | 16 +++++++++------- 6 files changed, 24 insertions(+), 22 deletions(-) diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index a6edefefd9..5591b337dd 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -194,7 +194,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _QW: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_qw, 4, false, 0); + play_notes(&tone_qw, false, 0); #endif default_layer_set(1UL<<_QW); } @@ -202,7 +202,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _CM: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_cm, 6, false, 0); + play_notes(&tone_cm, false, 0); #endif default_layer_set(1UL<<_CM); } @@ -210,7 +210,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _DV: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_dv, 8, false, 0); + play_notes(&tone_dv, false, 0); #endif default_layer_set(1UL<<_DV); } @@ -254,7 +254,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - play_notes(&start_up, 5, false, 0); + play_notes(&start_up, false, 0); #endif } break; @@ -265,6 +265,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 5, false, 0); + play_notes(&start_up, false, 0); #endif } diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile index 9199968c3d..3504e27201 100644 --- a/keyboard/preonic/Makefile +++ b/keyboard/preonic/Makefile @@ -133,7 +133,7 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 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) +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 = yes # Enable keyboard backlight functionality diff --git a/keyboard/preonic/config.h b/keyboard/preonic/config.h index 5528667fa7..bb9d29dab7 100644 --- a/keyboard/preonic/config.h +++ b/keyboard/preonic/config.h @@ -73,10 +73,10 @@ along with this program. If not, see . */ /* disable debug print */ -#define NO_DEBUG +// #define NO_DEBUG /* disable print */ -#define NO_PRINT +// #define NO_PRINT /* disable action features */ //#define NO_ACTION_LAYER diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c index 1223793cfa..c7b6b89f2c 100644 --- a/keyboard/preonic/keymaps/default/keymap.c +++ b/keyboard/preonic/keymaps/default/keymap.c @@ -242,7 +242,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_qwerty, 4, false, 0); + play_notes(&tone_qwerty, false, 0); #endif persistant_default_layer_set(1UL<<_QWERTY); } @@ -250,7 +250,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_colemak, 6, false, 1); + play_notes(&tone_colemak, false, 0); #endif persistant_default_layer_set(1UL<<_COLEMAK); } @@ -258,7 +258,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case _DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_dvorak, 8, false, 10); + play_notes(&tone_dvorak, false, 0); #endif persistant_default_layer_set(1UL<<_DVORAK); } @@ -302,7 +302,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - play_notes(&start_up, 4, false, 0); + play_notes(&start_up, false, 0); #endif } break; @@ -317,7 +317,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) case 9: if (record->event.pressed) { #ifdef AUDIO_ENABLE - play_notes(&tone_music, 8, false, 0); + play_notes(&tone_music, false, 0); layer_on(_MUSIC); #endif } @@ -344,6 +344,6 @@ void process_action_user(keyrecord_t *record) { void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 4, false, 0); + play_notes(&start_up, false, 0); #endif } diff --git a/quantum/audio.c b/quantum/audio.c index 40d09d62fd..773edfd8ee 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -318,7 +318,7 @@ ISR(TIMER3_COMPA_vect) { return; } } - if (!note_resting && ((int)notes_rest != 0)) { + if (!note_resting && (notes_rest > 0)) { note_resting = true; note_frequency = 0; note_length = notes_rest; diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 457f70a448..8f35521a2d 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -33,12 +33,14 @@ extern keymap_config_t keymap_config; #include #ifdef AUDIO_ENABLE #include "audio.h" - - float goodbye[][2] = { - {440.0*pow(2.0,(31)/12.0), 8}, - {440.0*pow(2.0,(24)/12.0), 8}, - {440.0*pow(2.0,(19)/12.0), 12}, - }; + #ifndef GOODBYE_TUNE + #define GOODBYE_TUNE { \ + {440.0*pow(2.0,(31)/12.0), 8}, \ + {440.0*pow(2.0,(24)/12.0), 8}, \ + {440.0*pow(2.0,(19)/12.0), 12}, \ + } + #endif + float goodbye_tune[][2] = GOODBYE_TUNE; #endif static action_t keycode_to_action(uint16_t keycode); @@ -189,7 +191,7 @@ static action_t keycode_to_action(uint16_t keycode) case RESET: ; // RESET is 0x5000, which is why this is here clear_keyboard(); #ifdef AUDIO_ENABLE - play_notes(&goodbye, 3, false, 0); + play_notes(&goodbye_tune, false, 0); #endif _delay_ms(250); #ifdef ATREUS_ASTAR From 45f10b4c4b308226fa1568277654a13853a03ab4 Mon Sep 17 00:00:00 2001 From: IBNobody Date: Sat, 16 Apr 2016 22:10:18 -0500 Subject: [PATCH 54/55] Fixed how note arrays are used. --- keyboard/atomic/keymaps/pvc/keymap.c | 44 ++++++---------------------- quantum/audio.c | 14 ++++----- quantum/audio.h | 17 +++++++++-- quantum/keymap_common.c | 4 +-- quantum/musical_notes.h | 7 ++++- 5 files changed, 39 insertions(+), 47 deletions(-) diff --git a/keyboard/atomic/keymaps/pvc/keymap.c b/keyboard/atomic/keymaps/pvc/keymap.c index 229708344f..c2081f525e 100644 --- a/keyboard/atomic/keymaps/pvc/keymap.c +++ b/keyboard/atomic/keymaps/pvc/keymap.c @@ -75,8 +75,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }, }; -#define IS_LAYER_ON(layer) (layer_state & (1UL << (layer))) -#define IS_LAYER_OFF(layer) (!IS_LAYER_ON(layer)) #ifdef AUDIO_ENABLE @@ -201,24 +199,14 @@ Q_NOTE(_B8 ) , }; float tone_rs[][2] = { -Q_NOTE(_F8 ) , -Q_NOTE(_G8 ) , -Q_NOTE(_GS8 ) , -Q_NOTE(_A8 ) , +Q_NOTE(_A4 ) , +Q_NOTE(_A4 ) , +Q_NOTE(_A4 ) , +Q_NOTE(_A4 ) , Q_NOTE(_AS8 ) , Q_NOTE(_B8 ) , }; -float tone_fn[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16}, - {0, 4}, - {440.0*pow(2.0,(69)/12.0), 16}, - {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16} -}; #endif void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t layer4, bool order) @@ -253,18 +241,18 @@ void update_quad_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3, uint8_t l const uint16_t PROGMEM fn_actions[] = { }; -#define ARRAY_SIZE(x) ((sizeof x) / (sizeof *x)) +//#define MUSIC_ARRAY_SIZE(x) (((int)(sizeof(x) / (sizeof(x[0][0])))) / 2) const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { + // MACRODOWN only works in this function switch(id) { case M_LW: if (record->event.pressed) { #ifdef AUDIO_ENABLE println("PlayNotes LW"); - print_val_hex32(ARRAY_SIZE(tone_lw)); - play_notes(&tone_lw, 96, false); + PLAY_NOTE_ARRAY(tone_lw, false, STACCATO); #endif layer_on(_LW); update_tri_layer(_LW, _RS, _FN); @@ -277,7 +265,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE println("PlayNotes RS"); - play_notes(&tone_rs, 6, false); + PLAY_NOTE_ARRAY(tone_rs, false, LEGATO); #endif layer_on(_RS); update_tri_layer(_LW, _RS, _FN); @@ -295,33 +283,19 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) #ifdef AUDIO_ENABLE float start_up[][2] = { Q_NOTE(_E4 ) , -{0,1} , Q_NOTE(_E4 ) , -{0,1} , Q_NOTE(_F4 ) , -{0,1} , Q_NOTE(_G4 ) , -{0,1} , Q_NOTE(_G4 ) , -{0,1} , Q_NOTE(_F4 ) , -{0,1} , Q_NOTE(_E4 ) , -{0,1} , Q_NOTE(_D4 ) , -{0,1} , Q_NOTE(_C4 ) , -{0,1} , Q_NOTE(_C4 ) , -{0,1} , Q_NOTE(_D4 ) , -{0,1} , Q_NOTE(_E4 ) , -{0,1} , H_NOTE(_E4 ) , -{0,1} , Q_NOTE(_D4 ) , -{0,1} , H_NOTE(_D4 ) , }; #endif @@ -329,7 +303,7 @@ H_NOTE(_D4 ) , void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - play_notes(&start_up, 29, false); + PLAY_NOTE_ARRAY(start_up, false, STACCATO); println("Matrix Init"); #endif } diff --git a/quantum/audio.c b/quantum/audio.c index 40d09d62fd..90f3c5a13f 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -181,7 +181,7 @@ void init_notes() { DDRC |= _BV(PORTC6); TIMSK3 &= ~_BV(OCIE3A); // Turn off 3A interputs - + TCCR3A = 0x0; // Options not needed TCCR3B = _BV(CS31) | _BV(CS30) | _BV(WGM32); // 64th prescaling and CTC OCR3A = SAMPLE_DIVIDER - 1; // Correct count/compare, related to sample playback @@ -202,14 +202,14 @@ ISR(TIMER3_COMPA_vect) { if (voices == 1) { // SINE OCR4A = pgm_read_byte(&sinewave[(uint16_t)place]) >> 2; - + // SQUARE // if (((int)place) >= 1024){ // OCR4A = 0xFF >> 2; // } else { // OCR4A = 0x00; // } - + // SAWTOOTH // OCR4A = (int)place / 4; @@ -298,9 +298,9 @@ ISR(TIMER3_COMPA_vect) { note_position++; bool end_of_note = false; - if (ICR3 > 0) + if (ICR3 > 0) end_of_note = (note_position >= (note_length / ICR3 * 0xFFFF)); - else + else end_of_note = (note_position >= (note_length * 0x7FF)); if (end_of_note) { current_note++; @@ -318,7 +318,7 @@ ISR(TIMER3_COMPA_vect) { return; } } - if (!note_resting && ((int)notes_rest != 0)) { + if (!note_resting && (notes_rest > 0)) { note_resting = true; note_frequency = 0; note_length = notes_rest; @@ -412,7 +412,7 @@ if (audio_config.enable && voices < 8) { if (frequency != 0) { double starting_f = frequency; if (frequency < freq) { - for (double f = starting_f; f <= freq; f += ((freq - starting_f) / 2000.0)) { + for (double f = starting_f; f <= freq; f += ((freq - starting_f) / 2000.0)) { frequency = f; } } else if (frequency > freq) { diff --git a/quantum/audio.h b/quantum/audio.h index 65a6f9434d..762c980643 100644 --- a/quantum/audio.h +++ b/quantum/audio.h @@ -4,6 +4,9 @@ #include #include "musical_notes.h" +#ifndef AUDIO_H +#define AUDIO_H + typedef union { uint8_t raw; struct { @@ -19,6 +22,16 @@ void audio_off(void); void play_sample(uint8_t * s, uint16_t l, bool r); void play_note(double freq, int vol); void stop_note(double freq); -void stop_all_notes(); -void init_notes(); +void stop_all_notes(void); +void init_notes(void); void play_notes(float (*np)[][2], uint8_t n_length, bool n_repeat, float n_rest); + + +// These macros are used to allow play_notes to play an array of indeterminate +// length. This works around the limitation of C's sizeof operation on pointers. +// The global float array for the song must be used here. +#define NOTE_ARRAY_SIZE(x) ((int)(sizeof(x) / (sizeof(x[0])))) +#define PLAY_NOTE_ARRAY(note_array, note_repeat, note_rest_style) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), (note_repeat), (note_rest_style)); + + +#endif \ No newline at end of file diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 457f70a448..61a51aedb4 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -189,7 +189,7 @@ static action_t keycode_to_action(uint16_t keycode) case RESET: ; // RESET is 0x5000, which is why this is here clear_keyboard(); #ifdef AUDIO_ENABLE - play_notes(&goodbye, 3, false, 0); + PLAY_NOTE_ARRAY(goodbye, false, 0); #endif _delay_ms(250); #ifdef ATREUS_ASTAR @@ -202,7 +202,7 @@ static action_t keycode_to_action(uint16_t keycode) debug_enable = true; break; case 0x5002 ... 0x50FF: - // MAGIC actions (BOOTMAGIC without the boot) + // MAGIC actions (BOOTMAGIC without the boot) if (!eeconfig_is_enabled()) { eeconfig_init(); } diff --git a/quantum/musical_notes.h b/quantum/musical_notes.h index 79f04fd988..837f6a069d 100644 --- a/quantum/musical_notes.h +++ b/quantum/musical_notes.h @@ -9,7 +9,7 @@ #define WHOLE_NOTE(note) {(NOTE##note), 64} #define HALF_NOTE(note) {(NOTE##note), 32} #define QUARTER_NOTE(note) {(NOTE##note), 16} -#define EIGTH_NOTE(note) {(NOTE##note), 8} +#define EIGHTH_NOTE(note) {(NOTE##note), 8} #define SIXTEENTH_NOTE(note) {(NOTE##note), 4} // Note Types Short @@ -19,6 +19,11 @@ #define E_NOTE(n) EIGTH_NOTE(n) #define S_NOTE(n) SIXTEENTH_NOTE(n) +// Note Styles +// Staccato makes sure there is a rest between each note. Think: TA TA TA +// Legato makes notes flow together. Think: TAAA +#define STACCATO 0.01 +#define LEGATO 0 // Notes - # = Octave #define NOTE_REST 0.00 From a67d425f4d5278595e7ab785a0f246b83fb1a09f Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 17 Apr 2016 01:00:39 -0400 Subject: [PATCH 55/55] planck default layout updates --- keyboard/planck/Makefile | 4 +- keyboard/planck/keymaps/default/keymap.c | 183 +++++++++++++++-------- quantum/audio.c | 5 +- quantum/keymap_common.c | 8 +- 4 files changed, 130 insertions(+), 70 deletions(-) diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile index 83b8303b02..01d9e3ce9a 100644 --- a/keyboard/planck/Makefile +++ b/keyboard/planck/Makefile @@ -139,10 +139,10 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 # change to "no" to disable the options, or define them in the makefile.mk 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) +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 = yes # Enable keyboard backlight functionality diff --git a/keyboard/planck/keymaps/default/keymap.c b/keyboard/planck/keymaps/default/keymap.c index 207af2a1df..aecddec4a1 100644 --- a/keyboard/planck/keymaps/default/keymap.c +++ b/keyboard/planck/keymaps/default/keymap.c @@ -11,24 +11,27 @@ // 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 _QW 0 -#define _CM 1 -#define _DV 2 -#define _LW 3 -#define _RS 4 -#define _AD 5 +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 5 +#define _MUSIC 6 // Macro name shortcuts -#define QWERTY M(_QW) -#define COLEMAK M(_CM) -#define DVORAK M(_DV) -#define LOWER M(_LW) -#define RAISE M(_RS) +#define QWERTY M(_QWERTY) +#define COLEMAK M(_COLEMAK) +#define DVORAK M(_DVORAK) +#define LOWER M(_LOWER) +#define RAISE M(_RAISE) #define M_BL 5 #ifdef AUDIO_ENABLE #define AUD_OFF M(6) #define AUD_ON M(7) #endif +#define MUS_OFF M(8) +#define MUS_ON M(9) // Fillers to make layering more clear #define _______ KC_TRNS @@ -47,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_QW] = { +[_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 }, @@ -65,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_CM] = { +[_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 }, @@ -83,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right | * `-----------------------------------------------------------------------------------' */ -[_DV] = { +[_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 }, @@ -101,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_LW] = { +[_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, _______, _______, _______, _______, _______}, @@ -119,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * | | | | | | | | Next | Vol- | Vol+ | Play | * `-----------------------------------------------------------------------------------' */ -[_RS] = { +[_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, _______, _______, _______, _______, _______}, @@ -130,16 +133,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * ,-----------------------------------------------------------------------------------. * | | Reset| | | | | | | | | | Del | * |------+------+------+------+------+-------------+------+------+------+------+------| - * | | | |Aud on|Audoff| | |Qwerty|Colemk|Dvorak| | | + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | * |------+------+------+------+------+------|------+------+------+------+------+------| * | | | | | | | | | | | | | * |------+------+------+------+------+------+------+------+------+------+------+------| * | | | | | | | | | | | | * `-----------------------------------------------------------------------------------' */ -[_AD] = { +[_ADJUST] = { {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL}, - {_______, _______, _______, AUD_ON, AUD_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, _______, _______, AUD_ON, AUD_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______}, + {_______, _______, _______, MUS_ON, MUS_OFF, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} +}, + +/* Music (reserved for process_action_user) + * + */ +[_MUSIC] = { + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, + {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} } @@ -150,87 +163,102 @@ const uint16_t PROGMEM fn_actions[] = { }; #ifdef AUDIO_ENABLE -float start_up[][2] = { - {440.0*pow(2.0,(67)/12.0), 12}, - {440.0*pow(2.0,(64)/12.0), 8}, - {440.0*pow(2.0,(55)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, - {440.0*pow(2.0,(64)/12.0), 20} +float tone_startup[][2] = { + {440.0*pow(2.0,(31)/12.0), 12}, + {440.0*pow(2.0,(28)/12.0), 8}, + {440.0*pow(2.0,(19)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, + {440.0*pow(2.0,(28)/12.0), 20} }; -float tone_qw[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, +float tone_qwerty[][2] = { + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 16} + {440.0*pow(2.0,(31)/12.0), 16} }; -float tone_cm[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, +float tone_colemak[][2] = { + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 12}, + {440.0*pow(2.0,(31)/12.0), 12}, {0, 4}, - {440.0*pow(2.0,(71)/12.0), 12} + {440.0*pow(2.0,(35)/12.0), 12} }; -float tone_dv[][2] = { - {440.0*pow(2.0,(59)/12.0), 8}, - {440.0*pow(2.0,(60)/12.0), 8}, +float tone_dvorak[][2] = { + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 8}, + {440.0*pow(2.0,(31)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(69)/12.0), 8}, + {440.0*pow(2.0,(33)/12.0), 8}, {0, 4}, - {440.0*pow(2.0,(67)/12.0), 8} + {440.0*pow(2.0,(31)/12.0), 8} +}; + +float tone_music[][2] = { + {440.0*pow(2.0,(12)/12.0), 8}, + {440.0*pow(2.0,(14)/12.0), 8}, + {440.0*pow(2.0,(16)/12.0), 8}, + {440.0*pow(2.0,(17)/12.0), 8}, + {440.0*pow(2.0,(19)/12.0), 8}, + {440.0*pow(2.0,(21)/12.0), 8}, + {440.0*pow(2.0,(23)/12.0), 8}, + {440.0*pow(2.0,(24)/12.0), 8} }; #endif +void persistant_default_layer_set(uint16_t default_layer) { + eeconfig_write_default_layer(default_layer); + default_layer_set(default_layer); +} + const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) { - // MACRODOWN only works in this function switch(id) { - case _QW: + case _QWERTY: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_qw, false, 0); + PLAY_NOTE_ARRAY(tone_qwerty, false, 0); #endif - default_layer_set(1UL<<_QW); + persistant_default_layer_set(1UL<<_QWERTY); } break; - case _CM: + case _COLEMAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_cm, false, 0); + PLAY_NOTE_ARRAY(tone_colemak, false, 0); #endif - default_layer_set(1UL<<_CM); + persistant_default_layer_set(1UL<<_COLEMAK); } break; - case _DV: + case _DVORAK: if (record->event.pressed) { #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(tone_dv, false, 0); + PLAY_NOTE_ARRAY(tone_dvorak, false, 0); #endif - default_layer_set(1UL<<_DV); + persistant_default_layer_set(1UL<<_DVORAK); } break; - case _LW: + case _LOWER: if (record->event.pressed) { - layer_on(_LW); - update_tri_layer(_LW, _RS, _AD); + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { - layer_off(_LW); - update_tri_layer(_LW, _RS, _AD); + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } break; - case _RS: + case _RAISE: if (record->event.pressed) { - layer_on(_RS); - update_tri_layer(_LW, _RS, _AD); + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { - layer_off(_RS); - update_tri_layer(_LW, _RS, _AD); + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); } break; case M_BL: @@ -254,7 +282,23 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) if (record->event.pressed) { #ifdef AUDIO_ENABLE audio_on(); - PLAY_NOTE_ARRAY(start_up, false, 0); + PLAY_NOTE_ARRAY(tone_startup, false, 0); + #endif + } + break; + case 8: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + layer_off(_MUSIC); + stop_all_notes(); + #endif + } + break; + case 9: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_NOTE_ARRAY(tone_music, false, 0); + layer_on(_MUSIC); #endif } break; @@ -262,9 +306,24 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) return MACRO_NONE; }; +uint8_t starting_note = 0x0C; +int offset = 7; + +void process_action_user(keyrecord_t *record) { + + if (IS_LAYER_ON(_MUSIC)) { + if (record->event.pressed) { + play_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF); + } else { + stop_note(((double)220.0)*pow(2.0, -4.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row))); + } + } + +} + void matrix_init_user(void) { #ifdef AUDIO_ENABLE init_notes(); - PLAY_NOTE_ARRAY(start_up, false, 0); + PLAY_NOTE_ARRAY(tone_startup, false, 0); #endif } diff --git a/quantum/audio.c b/quantum/audio.c index 90f3c5a13f..6bd6532a3a 100644 --- a/quantum/audio.c +++ b/quantum/audio.c @@ -350,7 +350,6 @@ if (audio_config.enable) { if (note) stop_all_notes(); - notes = true; notes_pointer = np; notes_length = n_length; @@ -375,6 +374,8 @@ if (audio_config.enable) { TIMSK3 |= _BV(OCIE3A); TCCR3A |= _BV(COM3A1); #endif + + notes = true; } } @@ -404,7 +405,6 @@ if (audio_config.enable && voices < 8) { if (notes) stop_all_notes(); - note = true; #ifdef PWM_AUDIO freq = freq / SAMPLE_RATE; #endif @@ -436,6 +436,7 @@ if (audio_config.enable && voices < 8) { TCCR3A |= _BV(COM3A1); #endif + note = true; } } \ No newline at end of file diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 02d3c74be6..d38e6fdb20 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -33,14 +33,14 @@ extern keymap_config_t keymap_config; #include #ifdef AUDIO_ENABLE #include "audio.h" - #ifndef GOODBYE_TUNE - #define GOODBYE_TUNE { \ + #ifndef TONE_GOODBYE + #define TONE_GOODBYE { \ {440.0*pow(2.0,(31)/12.0), 8}, \ {440.0*pow(2.0,(24)/12.0), 8}, \ {440.0*pow(2.0,(19)/12.0), 12}, \ } #endif - float goodbye_tune[][2] = GOODBYE_TUNE; + float tone_goodbye[][2] = TONE_GOODBYE; #endif static action_t keycode_to_action(uint16_t keycode); @@ -191,7 +191,7 @@ static action_t keycode_to_action(uint16_t keycode) case RESET: ; // RESET is 0x5000, which is why this is here clear_keyboard(); #ifdef AUDIO_ENABLE - PLAY_NOTE_ARRAY(goodbye_tune, false, 0); + PLAY_NOTE_ARRAY(tone_goodbye, false, 0); #endif _delay_ms(250); #ifdef ATREUS_ASTAR