diff options
| -rw-r--r-- | docs/feature_rgblight.md | 64 | ||||
| -rw-r--r-- | keyboards/dz60/keymaps/billiams/readme.md | 2 | ||||
| -rw-r--r-- | keyboards/minidox/keymaps/norman/config.h | 5 | ||||
| -rw-r--r-- | keyboards/minidox/keymaps/norman/keymap.c | 69 | ||||
| -rw-r--r-- | keyboards/minidox/keymaps/norman/readme.md | 56 | ||||
| -rw-r--r-- | quantum/keymap_extras/keymap_norman.h | 54 | ||||
| -rw-r--r-- | quantum/keymap_extras/sendstring_norman.h | 39 | 
7 files changed, 268 insertions, 21 deletions
| diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md index 4572f45b26..1e0ce91473 100644 --- a/docs/feature_rgblight.md +++ b/docs/feature_rgblight.md @@ -37,9 +37,9 @@ QMK uses [Hue, Saturation, and Value](https://en.wikipedia.org/wiki/HSL_and_HSV)  <img src="gitbook/images/color-wheel.svg" alt="HSV Color Wheel" width="250"/> -Changing the **Hue** cycles around the circle.   -Changing the **Saturation** moves between the inner and outer sections of the wheel, affecting the intensity of the color.   -Changing the **Value** sets the overall brightness. +Changing the **Hue** cycles around the circle.<br> +Changing the **Saturation** moves between the inner and outer sections of the wheel, affecting the intensity of the color.<br> +Changing the **Value** sets the overall brightness.<br>  ## Keycodes @@ -77,8 +77,7 @@ Your RGB lighting can be configured by placing these `#define`s in your `config.  |`RGBLIGHT_SLEEP`     |*Not defined*|If defined, the RGB lighting will be switched off when the host goes to sleep|  |`RGBLIGHT_SPLIT`     |*Not defined*|If defined, synchronization functionality for split keyboards is added| -## Animations - +## Effects and Animations  Not only can this lighting be whatever color you want,  if `RGBLIGHT_EFFECT_xxxx` or `RGBLIGHT_ANIMATIONS` is defined, you also have a number of animation modes at your disposal: @@ -100,29 +99,54 @@ Check out [this video](https://youtube.com/watch?v=VKrpPAHlisY) for a demonstrat  Note: For versions older than 0.6.117, The mode numbers were written directly. In `quantum/rgblight.h` there is a contrast table between the old mode number and the current symbol. -The following options can be used to tweak the various animations: +### Effect and Animation Toggles + +Use these defines to add or remove animations from the firmware. When you are running low on flash space, it can be helpful to disable animations you are not using. + +|Define                              |Default      |Description                                                                          | +|------------------------------------|-------------|-------------------------------------------------------------------------------------| +|`RGBLIGHT_ANIMATIONS`               |*Not defined*|Enable all additional animation modes.                                   | +|`RGBLIGHT_EFFECT_ALTERNATING`       |*Not defined*|Enable alternating animation mode.                                       | +|`RGBLIGHT_EFFECT_BREATHING`         |*Not defined*|Enable breathing animation mode.                                         | +|`RGBLIGHT_EFFECT_CHRISTMAS`         |*Not defined*|Enable christmas animation mode.                                         | +|`RGBLIGHT_EFFECT_KNIGHT`            |*Not defined*|Enable knight animation mode.                                            | +|`RGBLIGHT_EFFECT_RAINBOW_MOOD`      |*Not defined*|Enable rainbow mood animation mode.                                      | +|`RGBLIGHT_EFFECT_RAINBOW_SWIRL`     |*Not defined*|Enable rainbow swirl animation mode.                                     | +|`RGBLIGHT_EFFECT_RGB_TEST`          |*Not defined*|Enable RGB test animation mode.                                          | +|`RGBLIGHT_EFFECT_SNAKE`             |*Not defined*|Enable snake animation mode.                                             | +|`RGBLIGHT_EFFECT_STATIC_GRADIENT`   |*Not defined*|Enable static gradient mode.                                             | + +### Effect and Animation Settings + +The following options are used to tweak the various animations:  |Define                              |Default      |Description                                                                          |  |------------------------------------|-------------|-------------------------------------------------------------------------------------| -|`RGBLIGHT_EFFECT_BREATHING`         |*Not defined*|If defined, enable breathing animation mode.                                         | -|`RGBLIGHT_EFFECT_RAINBOW_MOOD`      |*Not defined*|If defined, enable rainbow mood animation mode.                                      | -|`RGBLIGHT_EFFECT_RAINBOW_SWIRL`     |*Not defined*|If defined, enable rainbow swirl animation mode.                                     | -|`RGBLIGHT_EFFECT_SNAKE`             |*Not defined*|If defined, enable snake animation mode.                                             | -|`RGBLIGHT_EFFECT_KNIGHT`            |*Not defined*|If defined, enable knight animation mode.                                            | -|`RGBLIGHT_EFFECT_CHRISTMAS`         |*Not defined*|If defined, enable christmas animation mode.                                         | -|`RGBLIGHT_EFFECT_STATIC_GRADIENT`   |*Not defined*|If defined, enable static gradient mode.                                             | -|`RGBLIGHT_EFFECT_RGB_TEST`          |*Not defined*|If defined, enable RGB test animation mode.                                          | -|`RGBLIGHT_EFFECT_ALTERNATING`       |*Not defined*|If defined, enable alternating animation mode.                                       | -|`RGBLIGHT_ANIMATIONS`               |*Not defined*|If defined, enables all additional animation modes                                   |  |`RGBLIGHT_EFFECT_BREATHE_CENTER`    |*Not defined*|If defined, used to calculate the curve for the breathing animation. Valid values are 1.0 to 2.7 |  |`RGBLIGHT_EFFECT_BREATHE_MAX`       |`255`        |The maximum brightness for the breathing mode. Valid values are 1 to 255             | -|`RGBLIGHT_EFFECT_SNAKE_LENGTH`      |`4`          |The number of LEDs to light up for the "Snake" animation                             | -|`RGBLIGHT_EFFECT_KNIGHT_LENGTH`     |`3`          |The number of LEDs to light up for the "Knight" animation                            | -|`RGBLIGHT_EFFECT_KNIGHT_OFFSET`     |`0`          |The number of LEDs to start the "Knight" animation from the start of the strip by    | -|`RGBLIGHT_EFFECT_KNIGHT_LED_NUM`    |`RGBLED_NUM` |The number of LEDs to have the "Knight" animation travel                             |  |`RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL`|`1000`       |How long to wait between light changes for the "Christmas" animation, in milliseconds|  |`RGBLIGHT_EFFECT_CHRISTMAS_STEP`    |`2`          |The number of LEDs to group the red/green colors by for the "Christmas" animation    | +|`RGBLIGHT_EFFECT_KNIGHT_LED_NUM`    |`RGBLED_NUM` |The number of LEDs to have the "Knight" animation travel                             | +|`RGBLIGHT_EFFECT_KNIGHT_LENGTH`     |`3`          |The number of LEDs to light up for the "Knight" animation                            | +|`RGBLIGHT_EFFECT_KNIGHT_OFFSET`     |`0`          |The number of LEDs to start the "Knight" animation from the start of the strip by    |  |`RGBLIGHT_RAINBOW_SWIRL_RANGE`      |`360`        |Range adjustment for the rainbow swirl effect to get different swirls                | +|`RGBLIGHT_EFFECT_SNAKE_LENGTH`      |`4`          |The number of LEDs to light up for the "Snake" animation                             | + +### Example Usage to Reduce Memory Footprint +  1. Remove `RGBLIGHT_ANIMATIONS` from `config.h`. +  1. Selectively add the animations you want to enable. The following would enable two animations and save about 4KiB: + +```diff + #undef RGBLED_NUM +-#define RGBLIGHT_ANIMATIONS ++#define RGBLIGHT_EFFECT_STATIC_GRADIENT ++#define RGBLIGHT_EFFECT_RAINBOW_SWIRL + #define RGBLED_NUM 12 + #define RGBLIGHT_HUE_STEP 8 + #define RGBLIGHT_SAT_STEP 8 +``` + +### Animation Speed  You can also modify the speeds that the different modes animate at: diff --git a/keyboards/dz60/keymaps/billiams/readme.md b/keyboards/dz60/keymaps/billiams/readme.md index 32d39be689..60096473a9 100644 --- a/keyboards/dz60/keymaps/billiams/readme.md +++ b/keyboards/dz60/keymaps/billiams/readme.md @@ -10,7 +10,7 @@ Settings:  * Del is available as `Fn` + `Backspace`  * `/ ?` are available when you tap the right shift. Otherwise RShift is shift when held down  * RESET is available as `Fn`+ ` ESC` -* Underglow toggle and mode selection are available as `Fn` + `Q` and `Fn` + `S`. Yes your keyboard has lights even if you didn't get the LEDs. Bonus! +* Underglow toggle is available as `Fn` + `Q`. Yes your keyboard has lights even if you didn't get the LEDs. Bonus!  ### Initial Installation diff --git a/keyboards/minidox/keymaps/norman/config.h b/keyboards/minidox/keymaps/norman/config.h new file mode 100644 index 0000000000..0d3542a03e --- /dev/null +++ b/keyboards/minidox/keymaps/norman/config.h @@ -0,0 +1,5 @@ +#pragma once + +#define PERMISSIVE_HOLD +#define QMK_KEYS_PER_SCAN 4  +#define TAPPING_TERM 160 diff --git a/keyboards/minidox/keymaps/norman/keymap.c b/keyboards/minidox/keymaps/norman/keymap.c new file mode 100644 index 0000000000..2786b7dd93 --- /dev/null +++ b/keyboards/minidox/keymaps/norman/keymap.c @@ -0,0 +1,69 @@ +#include QMK_KEYBOARD_H + +#include <sendstring_norman.h> + + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +enum layers { +    _NORMAN, +    _LOWER, +    _RAISE, +    _ADJUST +}; + +enum custom_keycodes { +  QWERTY = SAFE_RANGE, +  LOWER, +  RAISE, +  ADJUST +}; + +// Defines for task manager and such +#define CALTDEL LCTL(LALT(KC_DEL)) +#define TSKMGR LCTL(LSFT(KC_ESC)) +#define DSK_LFT LGUI(LCTL(KC_LEFT)) +#define DSK_RT  LGUI(LCTL(KC_RIGHT)) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + +[_NORMAN] = LAYOUT( \ +  NM_Q,    NM_W,    NM_D,    NM_F,    NM_K,                       NM_J,    NM_U,    NM_R,    NM_L,    NM_SCLN,    \ +  NM_A,    NM_S,    NM_E,    NM_T,    NM_G,                       NM_Y,    NM_N,    NM_I,    NM_O,    NM_H, \ +  NM_Z,    NM_X,    NM_C,    NM_V,    NM_B,                       NM_P,    NM_M,    NM_COMM, NM_DOT,  NM_SLSH, \ +    LGUI_T(KC_ENT), LT(_RAISE, KC_ESC), SFT_T(KC_BSPC),    CTL_T(KC_SPC), LT(_LOWER, KC_TAB), ALT_T(KC_ENT)    \ +), + +[_RAISE] = LAYOUT( \ +  KC_EXLM,    KC_AT,    KC_HASH, KC_DLR,  KC_PERC,      KC_PLUS, KC_7,     KC_8,   KC_9, KC_0,    \ +  KC_CIRC,    KC_AMPR,  KC_TILD, KC_PIPE, KC_BSLS,      KC_MINUS,  KC_4,     KC_5,   KC_6, KC_EQL, \ +  KC_DQT,     KC_QUOT,  KC_UNDS, KC_GRV,  _______,      KC_ASTR,  KC_1,     KC_2,   KC_3, _______, \ +                        _______, _______, _______,      _______,  MO(_ADJUST), _______                    \ +), + + +[_LOWER] = LAYOUT( \ +  KC_ESC,   KC_HOME, KC_UP,   KC_END,   _______,     _______, KC_LPRN, KC_RPRN,  _______, _______, +  KC_VOLU,  KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGUP,     _______, KC_LBRC, KC_RBRC,  _______, _______, \ +  KC_VOLD,  KC_MPRV, KC_MPLY, KC_MNXT,  KC_PGDN,     _______, KC_LCBR, KC_RCBR,  _______,  _______, \ +                  _______, MO(_ADJUST), _______,      _______,  _______,  _______                    \ +), + +[_ADJUST] =  LAYOUT( \ +  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,        KC_F6,   KC_F7,    KC_F8,   KC_F9,    KC_F10, \ +  _______, DSK_LFT, _______, DSK_RT,  _______,      TSKMGR,  CALTDEL,  _______, KC_F11,   KC_F12, \ +  RESET,   _______, _______, _______, _______,      _______, _______,  _______, _______,  _______, \ +                    _______, _______, _______,      _______, _______,  _______                    \ +) + +}; + +void persistant_default_layer_set(uint16_t default_layer) { +  eeconfig_update_default_layer(default_layer); +  default_layer_set(default_layer); +} diff --git a/keyboards/minidox/keymaps/norman/readme.md b/keyboards/minidox/keymaps/norman/readme.md new file mode 100644 index 0000000000..018e436322 --- /dev/null +++ b/keyboards/minidox/keymaps/norman/readme.md @@ -0,0 +1,56 @@ +# Minidox Norman Layout by LeHoff +Based on the QWERTY layout created by Khitsule. + + +[KLE link](http://www.keyboard-layout-editor.com/#/gists/86ec49f9f820a8b9b36f6e0d2ef8fff7) + +## Layers +| Layer | Legend | +| ----- | ------ | +| Base  |  Top left (black) | +| Lower | Bottom right (red) | +| Raise | Top right (orange) | +| Adjust | Front print | + +## Features +* Raise/lower layers focus first on one-handed use +* Numpad on right hand with raise layer +* Navigation on left hand with lower layer (ESDF) +    * D refers to desktop left/right on Win 10 (win+ctrl+left/right) +* Heavy use of hold/tap dual function keys - from left to right: +    * Cmd/Enter +    * Raise/Esc +    * Shift/Backspace +    * Ctrl/Space +    * Lower/Tab +    * Alt/Enter + + +## Modifier Placement Rationale + +There are several major driving forces at play: + +* I use MacOS. +* I'm Danish so the Alt and Shift-Alt layers in MacOS simply have to work. +* I use Vim for coding. +* I use org-mode in Emacs to keep track of my time. + +* Space is on the right hand side because I almost exclusively use my right hand thumb for +  space. +* Cmd is on the left since I often use Cmd+click to open a link in a new tab in Safari. +* Due to my usage of Vim Esc got a spot on the modifier row. +* Tab is on the right to enable easy navigation between winows with Cmd+Tab. +* Shift is on the left since org-mode uses Ctrl+arrows to manipulate task state quickly, + and since the arrow keys are activated using Lower (which has been moved to the right) and S, E, T, + and D, it works well that way.  +* Ctrl is on the right since Ctrl+<0-9> is used in MacOS to switch between spaces. +* Enter is on both sides since Enter is often used together with all of the modifiers. E.g., +  Cmd+Enter to send mails in most situations, but Ctrl+Enter is used in Emacs to create a +  new task in org-mode. +  +This means that arrows and digits are being modified from the other hand, which could be +bad for gaming, so if you're into that you might want to re-think a few things, but in +that case you are probably using a Windows machine and then there are other constraints +you have to deal with. + + diff --git a/quantum/keymap_extras/keymap_norman.h b/quantum/keymap_extras/keymap_norman.h new file mode 100644 index 0000000000..995b1b8a02 --- /dev/null +++ b/quantum/keymap_extras/keymap_norman.h @@ -0,0 +1,54 @@ + +/* Copyright 2019 Torben Hoffmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +#pragma once + +#include "keymap.h" +// For software implementation of norman +#define NM_Q    KC_Q +#define NM_W    KC_W +#define NM_D    KC_E +#define NM_F    KC_R +#define NM_K    KC_T +#define NM_J    KC_Y +#define NM_U    KC_U +#define NM_R    KC_I +#define NM_L    KC_O +#define NM_SCLN KC_P +#define NM_COLN LSFT(NM_SCLN) + +#define NM_A    KC_A +#define NM_S    KC_S +#define NM_E    KC_D +#define NM_T    KC_F +#define NM_G    KC_G +#define NM_Y    KC_H +#define NM_N    KC_J +#define NM_I    KC_K +#define NM_O    KC_L +#define NM_H    KC_SCLN + +#define NM_Z    KC_Z +#define NM_X    KC_X +#define NM_C    KC_C +#define NM_V    KC_V +#define NM_B    KC_B +#define NM_P    KC_N +#define NM_M    KC_M +#define NM_COMM KC_COMM +#define NM_DOT  KC_DOT +#define NM_SLSH KC_SLSH + diff --git a/quantum/keymap_extras/sendstring_norman.h b/quantum/keymap_extras/sendstring_norman.h new file mode 100644 index 0000000000..57d450ca85 --- /dev/null +++ b/quantum/keymap_extras/sendstring_norman.h @@ -0,0 +1,39 @@ +/* Copyright 2019 Torben Hoffmann + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ +/* Sendstring definitions for the Colemak layout */ +#pragma once + +#include "keymap_norman.h" + +const uint8_t ascii_to_keycode_lut[0x80] PROGMEM = { +    0, 0, 0, 0, 0, 0, 0, 0, +    KC_BSPC, KC_TAB, KC_ENT, 0, 0, 0, 0, 0, +    0, 0, 0, 0, 0, 0, 0, 0, +    0, 0, 0, KC_ESC, 0, 0, 0, 0, +    KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT, +    KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH, +    KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, +    KC_8, KC_9, NM_SCLN, NM_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH, +    KC_2, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G, +    NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O, +    NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W, +    NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS, +    KC_GRV, NM_A, NM_B, NM_C, NM_D, NM_E, NM_F, NM_G, +    NM_H, NM_I, NM_J, NM_K, NM_L, NM_M, NM_N, NM_O, +    NM_P, NM_Q, NM_R, NM_S, NM_T, NM_U, NM_V, NM_W, +    NM_X, NM_Y, NM_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL +}; + | 
