[Keymap] Feature/alfrdmalr/keymap update (#8174)

* WIP do not merge

* first pass at custom preonic layout

* add auto shift and reset via leader key

* Update readme

* update copyright notice

* formatting changes

* fix: use MO instead of process_record_user

* added backslash and moved grave position

* remove extraneous 'j' characer in NUMPAD template

* update template formatting

* remove process_record_user

* swap "!" with "@"

* fix readme formatting

* update readme layout image

* restore settings layer

* add windows minimize sequence

* fix: switch to correct seq function for three-key sequence

* fix: missing semicolon

* refactor: move keymap to userspace and generic 5x12 layout

* add numlock to numpad layer

* add readme

* update readme formatting

* remove unused wrappers from layout keymap

* update readme title to reflect new location

* remove alfrdmalr directory from preonic/keymaps

* add ortho 4x12 support

* add 'trilayer' settings and update keymap

* update SYMBOLS layer to SYMBOL

* remove minimize sequence

* clean up user config

* add brightness controls

* update settings ascii

* moved some symbols around to make vim/linux smoother
master
Alfred Maler 2020-03-03 13:13:42 -05:00 committed by GitHub
parent acaecb4f94
commit ed6586e25b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 171 additions and 62 deletions

View File

@ -0,0 +1,5 @@
#pragma once
#ifdef AUDIO_ENABLE
#define STARTUP_SONG SONG(NO_SOUND)
#endif

View File

@ -0,0 +1,44 @@
#include "alfrdmalr.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// QWERTY
[_QWERTY] = LAYOUT_ortho_4x12_wrapper(
K10, ____QWERTY_L1____, ____QWERTY_R1____, K1B,
K20, ____QWERTY_L2____, ____QWERTY_R2____, K2B,
K30, ____QWERTY_L3____, ____QWERTY_R3____, K3B,
K40, _____BASE_L4_____, _____BASE_R4_____, K4B
),
// SYMBOL
[_SYMBOL] = LAYOUT_ortho_4x12_wrapper(
K10_SYM, ____SYMBOL_L1____, ____SYMBOL_R1____, K1B_SYM,
K20_SYM, ____SYMBOL_L2____, ____SYMBOL_R2____, K2B_SYM,
K30_SYM, ____SYMBOL_L3____, ____SYMBOL_R3____, K3B_SYM,
K40_SYM, ____SYMBOL_L4____, ____SYMBOL_R4____, K4B_SYM
),
// NAVIGATION
[_NAVIGATION] = LAYOUT_ortho_4x12_wrapper(
K10_NAV, __NAVIGATION_L1__, __NAVIGATION_R1__, K1B_NAV,
K20_NAV, __NAVIGATION_L2__, __NAVIGATION_R2__, K2B_NAV,
K30_NAV, __NAVIGATION_L3__, __NAVIGATION_R3__, K3B_NAV,
K40_NAV, __NAVIGATION_L4__, __NAVIGATION_R4__, K4B_NAV
),
// NUMPAD
[_NUMPAD] = LAYOUT_ortho_4x12_wrapper(
K10_NUM, ____NUMPAD_L1____, ____NUMPAD_R1____, K1B_NUM,
K20_NUM, ____NUMPAD_L2____, ____NUMPAD_R2____, K2B_NUM,
K30_NUM, ____NUMPAD_L3____, ____NUMPAD_R3____, K3B_NUM,
K40_NUM, ____NUMPAD_L4____, ____NUMPAD_R4____, K4B_NUM
),
// SETTINGS
[_SETTINGS] = LAYOUT_ortho_4x12_wrapper(
K10_SET, ___SETTINGS_L1___, ___SETTINGS_R1___, K1B_SET,
K20_SET, ___SETTINGS_L2___, ___SETTINGS_R2___, K2B_SET,
K30_SET, ___SETTINGS_L3___, ___SETTINGS_R3___, K3B_SET,
K40_SET, ___SETTINGS_L4___, ___SETTINGS_R4___, K4B_SET
)
};

View File

@ -11,8 +11,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
K40, _____BASE_L4_____, _____BASE_R4_____, K4B
),
// SYMBOLS
[_SYMBOLS] = LAYOUT_ortho_5x12_wrapper(
// SYMBOL
[_SYMBOL] = LAYOUT_ortho_5x12_wrapper(
K00_SYM, ____NUMROW_L0____, ____NUMROW_R0____, K0B_SYM,
K10_SYM, ____SYMBOL_L1____, ____SYMBOL_R1____, K1B_SYM,
K20_SYM, ____SYMBOL_L2____, ____SYMBOL_R2____, K2B_SYM,

View File

@ -35,10 +35,61 @@ void matrix_scan_user(void) {
SEQ_FIVE_KEYS(KC_R, KC_E, KC_S, KC_E, KC_T) {
reset_keyboard();
}
// minimize window (Windows)
SEQ_THREE_KEYS(KC_M, KC_I, KC_N) {
SEND_STRING(SS_LALT(" ")"n");
}
leader_end();
}
}
bool syml_pressed = false;
bool symr_pressed = false;
bool settings_active = false;
bool symbols_active = false;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
case SYML:
if (record->event.pressed) {
syml_pressed = true;
} else {
syml_pressed = false;
}
break;
case SYMR:
if (record->event.pressed) {
symr_pressed = true;
} else {
symr_pressed = false;
}
break;
}
// trilayer-esque behavior. If both SYMBOL layer keys are held, then the
// settings layer is open. If only one is held, SYMBOL is active.
if (syml_pressed && symr_pressed) {
layer_on(_SETTINGS);
settings_active = true;
} else if (syml_pressed || symr_pressed) {
if (settings_active) {
layer_off(_SETTINGS);
settings_active = false;
}
layer_on(_SYMBOL);
symbols_active = true;
} else {
if (symbols_active) {
layer_off(_SYMBOL);
symbols_active = false;
}
}
return true;
}
// allow access to the settings layer to turn music mode back off
bool music_mask_user(uint16_t keycode) {
switch (keycode) {
case SYML:
case SYMR:
return false;
default:
return true;
}
}

View File

@ -20,16 +20,24 @@ along with this program. If not, see <http://www.gnu/org/licenses/>.
enum shared_layers {
_QWERTY,
_SETTINGS,
_SYMBOLS,
_SYMBOL,
_NAVIGATION,
_NUMPAD
_NUMPAD,
_SETTINGS
};
// KEYCODES ============================================================================
// the SYML and SYMR keycodes are just used to activate the symbols layer.
// they're distinct so that I can hit both of them to activate a trilayer
enum alfrdmalr_keycodes {
SYML = SAFE_RANGE,
SYMR
};
#define NUMSPACE LT(_NUMPAD, KC_SPC)
#define NAVLAYER MO(_NAVIGATION)
#define SYMLAYER MO(_SYMBOLS)
#define SYMLAYER MO(_SYMBOL)
#define SETLAYER MO(_SETTINGS)
#define CTRLSHFT C(KC_LSFT)
#define WINUNDO C(KC_Z)
@ -42,10 +50,12 @@ enum shared_layers {
#define K41 CTRLSHFT
#define K42 KC_LGUI
#define K43 KC_LALT
#define K44 SYMLAYER
// #define K44 SYMLAYER
#define K44 SYML
#define K45 NUMSPACE
#define K46 NUMSPACE
#define K47 SYMLAYER
// #define K47 SYMLAYER
#define K47 SYMR
#define K48 KC_RALT
#define K49 SETLAYER
#define K4A MU_TOG
@ -86,7 +96,7 @@ enum shared_layers {
* ,-----------------------------------------------------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BKSP |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | TAB | Q | W | E | R | T | Y | U | I | O | P | DEL |
* | TAB | Q | W | E | R | T | Y | U | I | O | P | BKSP |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | NAV | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------+------+------+------+------+------+------|
@ -110,13 +120,13 @@ enum shared_layers {
/* NUMPAD ==============================================================================
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | TRNS |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | TRNS | F9 | F10 | F11 | F12 | | NLCK | 7 | 8 | 9 | - | DEL |
* | TRNS | F9 | F10 | F11 | F12 | | NLCK | 7 | 8 | 9 | - | TRNS |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | ESC | F5 | F6 | F7 | F8 | SPC | SPC | 4 | 5 | 6 | + | ENTR |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | TRNS | F1 | F2 | F3 | F4 | ALT | CAPS | 1 | 2 | 3 | / | TRNS |
* | TRNS | F1 | F2 | F3 | F4 | ALT | | 1 | 2 | 3 | / | TRNS |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | 0 | , | . | * | TRNS |
* `-----------------------------------------------------------------------------------'
@ -140,7 +150,7 @@ enum shared_layers {
// - CORE
#define ____NUMPAD_R1____ KC_NLCK, KC_7, KC_8, KC_9, KC_MINS
#define ____NUMPAD_R2____ KC_SPC, KC_4, KC_5, KC_6, KC_PLUS
#define ____NUMPAD_R3____ KC_CAPS, KC_1, KC_2, KC_3, KC_SLSH
#define ____NUMPAD_R3____ KC_NO, KC_1, KC_2, KC_3, KC_SLSH
// - MODS
#define ____NUMPAD_R4____ KC_TRNS, KC_0, KC_COMM, KC_DOT, KC_ASTR
@ -150,15 +160,15 @@ enum shared_layers {
#define K3B_NUM KC_TRNS
#define K4B_NUM KC_TRNS
/* SYMBOLS =============================================================================
/* SYMBOL ==============================================================================
* ,-----------------------------------------------------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BKSP |
* | TRNS | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | TRNS |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | TRNS | # | $ | { | } | | | ^ | * | | | ~ | TRNS |
* | TRNS | ! | @ | { | } | | | ^ | $ | & | | | DEL |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | TRNS | < | > | ( | ) | | | - | + | & | \ | ` |
* | TRNS | < | > | ( | ) | | | - | + | = | \ | ` |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | TRNS | ! | @ | [ | ] | | | _ | = | % | / | SHFT |
* | TRNS | ~ | # | [ | ] | | | _ | * | % | / | TRNS |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS |
* `-----------------------------------------------------------------------------------'
@ -166,9 +176,9 @@ enum shared_layers {
// LEFT
// - CORE
#define ____SYMBOL_L1____ KC_HASH, KC_DOLLAR, KC_LCBR, KC_RCBR, KC_NO
#define ____SYMBOL_L2____ KC_LABK, KC_RABK, KC_LPRN, KC_RPRN, KC_NO
#define ____SYMBOL_L3____ KC_EXCLAIM, KC_AT, KC_LBRC, KC_RBRC, KC_NO
#define ____SYMBOL_L1____ KC_EXCLAIM, KC_AT, KC_LCBR, KC_RCBR, KC_NO
#define ____SYMBOL_L2____ KC_LABK, KC_RABK, KC_LPRN, KC_RPRN, KC_NO
#define ____SYMBOL_L3____ KC_TILD, KC_HASH, KC_LBRC, KC_RBRC, KC_NO
// - MODS
#define ____SYMBOL_L4____ ______TRANS______
@ -180,27 +190,27 @@ enum shared_layers {
// RIGHT
// - CORE
#define ____SYMBOL_R1____ KC_NO, KC_CIRC, KC_ASTR, KC_PIPE, KC_TILD
#define ____SYMBOL_R2____ KC_NO, KC_MINS, KC_PLUS, KC_AMPR, KC_BSLS
#define ____SYMBOL_R3____ KC_NO, KC_UNDS, KC_EQL, KC_PERC, KC_SLSH
#define ____SYMBOL_R1____ KC_NO, KC_CIRC, KC_DOLLAR, KC_AMPR, KC_PIPE
#define ____SYMBOL_R2____ KC_NO, KC_MINS, KC_PLUS, KC_EQL, KC_BSLS
#define ____SYMBOL_R3____ KC_NO, KC_UNDS, KC_ASTR, KC_PERC, KC_SLSH
// - MODS
#define ____SYMBOL_R4____ ______TRANS______
#define K0B_SYM KC_TRNS
#define K1B_SYM KC_TRNS
#define K1B_SYM KC_DEL
#define K2B_SYM KC_GRV
#define K3B_SYM KC_TRNS
#define K4B_SYM KC_TRNS
/* NAVIGATION ==========================================================================
* ,-----------------------------------------------------------------------------------.
* | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | BKSP |
* | TRNS | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | TRNS |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | TRNS | | | SPC | F5 | | INS | HOME | END | TAB | DEL | TRNS |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | TRNS | SHFT | CTRl | ALT | GUI | | LEFT | DOWN | UP | RGHT | | ENTR |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | TRNS | UNDO | CUT | COPY | PSTE | | SPC | PGDO | PGUP | | | TRNS |
* | TRNS | UNDO | CUT | COPY | PSTE | | | PGDO | PGUP | CAPS | | TRNS |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | TRNS | TRNS | TRNS | TRNS | TRNS | ESC | TRNS | TRNS | TRNS | TRNS | TRNS |
* `-----------------------------------------------------------------------------------'
@ -213,7 +223,7 @@ enum shared_layers {
#define __NAVIGATION_L3__ WINUNDO, WINCUT, WINCOPY, WINPASTE, KC_NO
// - MODS
#define __NAVIGATION_L4__ _______, _______, _______, _______, KC_ESC
#define __NAVIGATION_L4__ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ESC
#define K00_NAV KC_TRNS
#define K10_NAV KC_TRNS
#define K20_NAV KC_TRNS
@ -224,10 +234,10 @@ enum shared_layers {
// - CORE
#define __NAVIGATION_R1__ KC_INS, KC_HOME, KC_END, KC_TAB, KC_DEL
#define __NAVIGATION_R2__ KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_NO
#define __NAVIGATION_R3__ KC_SPC, KC_PGDN, KC_PGUP, KC_NO, KC_NO
#define __NAVIGATION_R3__ KC_NO, KC_PGDN, KC_PGUP, KC_CAPS, KC_NO
// - MODS
#define __NAVIGATION_R4__ KC_ESC, _______, _______, _______, _______
#define __NAVIGATION_R4__ KC_ESC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
#define K0B_NAV KC_TRNS
#define K1B_NAV KC_TRNS
#define K2B_NAV KC_ENT
@ -236,41 +246,41 @@ enum shared_layers {
/* SETTINGS ============================================================================
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | BRID | BRIU | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | DBUG | | | | | | | | | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | | |Aud on|AudOff|AGnorm|AGswap| | | | | |
* | | | | | | | MPRV | MPLY | MUTE | MNXT | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | ASTG |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
* | ASTG | MUTO | AUOF | AUON | | | | VOLD | VOLU | | | ASTG |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | |
* | | | | | TRNS | | TRNS | | | | |
* `-----------------------------------------------------------------------------------'
*/
// LEFT
// - CORE
#define ___SETTINGS_L1___ _______, DEBUG, _______, _______, _______
#define ___SETTINGS_L2___ _______, MU_MOD, AU_ON, AU_OFF, AG_NORM
#define ___SETTINGS_L3___ MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON
#define ___SETTINGS_L1___ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
#define ___SETTINGS_L2___ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
#define ___SETTINGS_L3___ MU_TOG, AU_OFF, AU_ON, KC_NO, KC_NO
// - MODS
#define ___SETTINGS_L4___ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
#define ___SETTINGS_L4___ KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO
#define K00_SET KC_NO
#define K10_SET KC_NO
#define K20_SET KC_NO
#define K30_SET KC_ASTG
#define K40_SET KC_NO
// RIGHT
// RIGHT
// - CORE
#define ___SETTINGS_R1___ TERM_ON, TERM_OFF, _______, _______, _______
#define ___SETTINGS_R2___ _______, _______, _______, _______, _______
#define ___SETTINGS_R3___ _______, _______, _______, _______, _______
#define ___SETTINGS_R1___ KC_NO, KC_NO, KC_NO, KC_BRID, KC_BRIU
#define ___SETTINGS_R2___ KC_MPRV, KC_MPLY, KC_MUTE, KC_MNXT, KC_NO
#define ___SETTINGS_R3___ KC_NO, KC_VOLD, KC_VOLU, KC_NO, KC_NO
// - MODS
#define ___SETTINGS_R4___ KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO
#define ___SETTINGS_R4___ KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO
#define K0B_SET KC_NO
#define K1B_SET KC_NO
#define K2B_SET KC_NO
#define K3B_SET KC_NO
#define K4B_SET KC_NO
#define K3B_SET KC_ASTG
#define K4B_SET KC_NO

View File

@ -1,6 +1,6 @@
# alfrdmalr's userspace
## Overview
The alphanumeric characters and symbols are spread between three main 'typing' layers: REGULAR, NUMPAD, and SYMBOLS.
The alphanumeric characters and symbols are spread between three main 'typing' layers: REGULAR, NUMPAD, and SYMBOL.
A fourth layer, NAVIGATION, contains useful modifiers, shortcuts, and navigation functions like the arrow keys and page up/down. This layer also provides access to the `ENTER` and `ESC` keys.
@ -22,26 +22,25 @@ The NUMPAD layer puts a numpad under the right hand, surrounding the home row po
This layer also holds the first twelve function keys.
#### SYMBOLS
This layer holds all the symbols that are not accessible from the REGULAR layer. There is some redundancy (for instance, `/` exists in both the REGULAR and SYMBOLS layer; its position, however, remains consistent) but with the exception of single and double quotes, all symbols are available from this layer.
#### SYMBOL
This layer holds all the symbols that are not accessible from the REGULAR layer. There is some redundancy (for instance, `/` exists in both the REGULAR and SYMBOL layer; its position, however, remains consistent) but with the exception of single and double quotes, all symbols are available from this layer.
#### NAVIGATION
The primary function of this layer is to provide arrow keys under hjkl. The surrounding keys contain similar functionality - for instance, the keys directly below `DOWN` and `UP` are `PAGEDOWN` and `PAGEUP`, respectively. `HOME` and `END` are inverted from this convention, simply because I kept hitting the wrong key when trying to jump to the beginning/end of lines when editing text.
Over time, this layer has become a general utility layer, though its primary function of is still to provide arrow keys under hjkl. The surrounding keys contain similar functionality - for instance, the keys directly below `DOWN` and `UP` are `PAGEDOWN` and `PAGEUP`, respectively. `HOME` and `END` are inverted from this convention, simply because I kept hitting the wrong key when trying to jump to the beginning/end of lines when editing text.
To the immediate right of the NAVIGATION layer key are the following modifiers: `SHIFT`, `CONTROL`, `ALT`, `GUI`. All modifiers are the "left" variants. The idea is to use the left hand to hold different modifiers as necessary while using the right hand to navigate and format.
`ESCAPE` is located on the spacebar from this layer, and `DELETE` is placed next to `BACKSPACE`, for convenience when formatting text. There are also four Windows shortcuts for undo, cut, copy, and paste, located in the same position as the relevant keys on the base layer (undo, for example, is in the same place as the `Z` key).
`ESCAPE` is located on the spacebar from this layer, and `DELETE` is placed next to `BACKSPACE`, for convenience when formatting text. There are also four Windows shortcuts for undo, cut, copy, and paste, located in the same position as the relevant keys on the base layer (undo, for example, is in the same place as the `Z` key). Again, this is for convenience when formatting text.
#### SETTINGS
Right now, this is pretty similar to the default settings layer (the planck's ADJUST layer).
The SETTINGS layer can be accessed by pressing both SYMBOL layer keys at once. This is functionally the same as a trilayer, though because both keys are activating the same layer it doesn't actually use the trilayer feature.
Primary differences are the inclusion of an autoshift toggle and the removal of the reset button. The bootloader functionality has been moved to a leader key sequence: LEAD - R - E - S - E - T.
This layer contains things like feature toggles, media controls, and other infrequently-used options.
### Leader Key Sequences
A complete list of leader sequences can be found below:
A complete list of leader sequences can be found below. The LEAD key that begins each sequence has been omitted.
#### Reset
LEAD - R - E - S - E - T
#### Minimize (Windows)
LEAD - M - I - N
| Sequence | Function |
| :------: | -------------------------------- |
| R-E-S-E-T | Reset the keyboard into DFU mode |