diff --git a/layouts/community/ortho_4x12/alfrdmalr/config.h b/layouts/community/ortho_4x12/alfrdmalr/config.h new file mode 100644 index 00000000000..58c9d57abc6 --- /dev/null +++ b/layouts/community/ortho_4x12/alfrdmalr/config.h @@ -0,0 +1,5 @@ +#pragma once + +#ifdef AUDIO_ENABLE + #define STARTUP_SONG SONG(NO_SOUND) +#endif \ No newline at end of file diff --git a/layouts/community/ortho_4x12/alfrdmalr/keymap.c b/layouts/community/ortho_4x12/alfrdmalr/keymap.c new file mode 100644 index 00000000000..14b76339654 --- /dev/null +++ b/layouts/community/ortho_4x12/alfrdmalr/keymap.c @@ -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 +) +}; \ No newline at end of file diff --git a/layouts/community/ortho_4x12/alfrdmalr/rules.mk b/layouts/community/ortho_4x12/alfrdmalr/rules.mk new file mode 100644 index 00000000000..e69de29bb2d diff --git a/layouts/community/ortho_5x12/alfrdmalr/keymap.c b/layouts/community/ortho_5x12/alfrdmalr/keymap.c index c140128d80d..2cd5105b217 100644 --- a/layouts/community/ortho_5x12/alfrdmalr/keymap.c +++ b/layouts/community/ortho_5x12/alfrdmalr/keymap.c @@ -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, diff --git a/users/alfrdmalr/alfrdmalr.c b/users/alfrdmalr/alfrdmalr.c index 39d2b62e003..18ce8bad7cb 100644 --- a/users/alfrdmalr/alfrdmalr.c +++ b/users/alfrdmalr/alfrdmalr.c @@ -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; + } } \ No newline at end of file diff --git a/users/alfrdmalr/alfrdmalr.h b/users/alfrdmalr/alfrdmalr.h index 922b7ca4067..1989fb11a02 100644 --- a/users/alfrdmalr/alfrdmalr.h +++ b/users/alfrdmalr/alfrdmalr.h @@ -20,16 +20,24 @@ along with this program. If not, see . 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 \ No newline at end of file +#define K3B_SET KC_ASTG +#define K4B_SET KC_NO diff --git a/users/alfrdmalr/readme.md b/users/alfrdmalr/readme.md index d462a5baf17..9e5f962bbb6 100644 --- a/users/alfrdmalr/readme.md +++ b/users/alfrdmalr/readme.md @@ -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 |