Cleanup and Adding more overrides

- Updated documentation and standardize identation formatting
- Added numpad key overrides to get function keys
- got rid of function layer
This commit is contained in:
Victor 2024-05-10 00:00:37 -05:00
parent 7c923a5c4a
commit fdfc997c28
Failed to generate hash of commit
19 changed files with 143 additions and 394 deletions

View file

@ -4,11 +4,10 @@ My userspace for building QMK firmware via GitHub Actions. This does not require
## Layout ## Layout
The custom layout optimizes for programming (SQL, Powershell, C) and minimizes holds for comfort. It started from [Manna Harbor Miryoku](https://github.com/manna-harbour/miryoku), took heavy influence from [Jonas Hietala T-34](https://www.jonashietala.se/series/t-34/), and trying to achieve [Callum's Minimal Layout](https://github.com/qmk/qmk_firmware/tree/user-keymaps-still-present/users/callum). The keymap designed for split 3x5, two thumbs keys, dual encoders, and combined with a Ploopy Nano trackball mouse. Design themes: The custom layout optimizes for programming (SQL, Powershell, C) and minimizes holds for comfort. It started from [Manna Harbor Miryoku](https://github.com/manna-harbour/miryoku) and took heavy influence from [Jonas Hietala T-34](https://www.jonashietala.se/series/t-34/). The keymap designed for split 3x5, two thumbs keys, dual encoders, and combined with a Ploopy Nano trackball mouse. Design themes:
- Releasing all keys always brings you back to base layer - Releasing all keys always brings you back to base layer
- Keeping certain keys consistent on all layers for better muscle memory - Patterns to layout design to reduce learning curve (e.g., Shortcuts in same place on multiple layers)
- Numbers and function keys are positioned similarly
- Symbols important for powershell / writing are positioned under stronger fingers - Symbols important for powershell / writing are positioned under stronger fingers
- Game keymap that doesn't require massive game key bind changes. Tested on Resident Evil 4 Remake - Game keymap that doesn't require massive game key bind changes. Tested on Resident Evil 4 Remake
@ -33,11 +32,11 @@ In this userspace, the base split 3x5_3 layout can be adapted for other split ke
### Tri-Layer ### Tri-Layer
Hold both thumb momentary layer keys `NAVIGATION` and `SYMBOL` to access the `NUMBER` layer Hold both thumb momentary layer keys `NAVIGATION` and `NUMBER` to access the `SYMBOL` layer
### One Shot Mods ### One Shot Mods
One Shot Mods is here to minimize holding and simplify layers as mods are not required on every layer. Here we have bi-lateral(ish) GACS mods. One Shot Mods is here to minimize holding, simplify layers, and avoid misfires from having Home Row Mods. Here we have bi-lateral(ish) GACS mods.
### Caps Word ### Caps Word
@ -57,23 +56,21 @@ Certain keys have different behaviors when held vs tapped allowing commonly type
| `TR_LBRC` | `[` | `[]` with cursor inside | | | `TR_LBRC` | `[` | `[]` with cursor inside | |
| `TR_LABK` | `<` | `<>` with cursor inside | | | `TR_LABK` | `<` | `<>` with cursor inside | |
| `TR_LPRN` | `(` | `()` with cursor inside | | | `TR_LPRN` | `(` | `()` with cursor inside | |
| `TR_SQUO` | `"` | `""` with cursor inside | |
| `TR_SQUO` | `'` | `''` with cursor inside | | | `TR_SQUO` | `'` | `''` with cursor inside | |
| `TR_EQL` | `=` | `==` | | | `TR_BSLS` | `\` | `\\` | |
| `TR_EXLM` | `!` | `$` | | | `TR_SLSH` | `/` | `//` | |
| `TR_PIPE` | `\|` | `\|\|` | |
| `TR_COMM` | `,` | `(` | enables parenthesis on base layer | | `TR_COMM` | `,` | `(` | enables parenthesis on base layer |
| `TR_DOT` | `.` | `)` | | | `TR_DOT` | `.` | `)` | |
| `TR_PERC` | `%` | `^` | | | `TR_PERC` | `%` | `^` | |
| `TR_EQL` | `=` | `+` | |
| `TR_MINS` | `-` | `_` | | | `TR_MINS` | `-` | `_` | |
| `TR_GRV` | `backtick` | `~` | | | `TR_GRV` | `backtick` | `~` | |
| `TR_SCLN` | `;` | `:` | | | `TR_SCLN` | `;` | `:` | |
| `TR_QUOT` | `'` | `"` | | | `TR_QUOT` | `'` | `"` | |
| `TR_AT` | `@` | `&` | |
| `TR_EXLM` | `!` | `$` | |
Opted to implement overrides here instead of using built-in Key Override functionality because Opted to implement overrides here instead of using built-in Key Override functionality because this implementation does not require pressing/holding shift to get the alternate key
- Not required to press/hold shift to get the alternate key
- Key Overrides would enable holding to repeat keycodes but hard to justify that for the symbols, even for programming
### Combos ### Combos

View file

@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVIGATION] = ROLLOW(LAYER_NAVIGATION), [_NAVIGATION] = ROLLOW(LAYER_NAVIGATION),
[_NUMBER] = ROLLOW(LAYER_NUMBER), [_NUMBER] = ROLLOW(LAYER_NUMBER),
[_SYMBOL] = ROLLOW(LAYER_SYMBOL), [_SYMBOL] = ROLLOW(LAYER_SYMBOL),
[_FUNCTION] = ROLLOW(LAYER_FUNCTION), //[_FUNCTION] = ROLLOW(LAYER_FUNCTION),
[_CONFIG] = ROLLOW(LAYER_CONFIG) [_CONFIG] = ROLLOW(LAYER_CONFIG)
}; };
@ -42,7 +42,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_NAVIGATION] = { ENCODER_CCW_CW(ZOOMIN, ZOOMOUT), ENCODER_CCW_CW(___x___, ___x___) }, [_NAVIGATION] = { ENCODER_CCW_CW(ZOOMIN, ZOOMOUT), ENCODER_CCW_CW(___x___, ___x___) },
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) }, [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) },
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, [_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
[_FUNCTION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, //[_FUNCTION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
[_CONFIG] = { ENCODER_CCW_CW(BASELYR, RBSELYR), ENCODER_CCW_CW(TR_RMOD, TR_RRMD) } [_CONFIG] = { ENCODER_CCW_CW(BASELYR, RBSELYR), ENCODER_CCW_CW(TR_RMOD, TR_RRMD) }
}; };

View file

@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVIGATION] = CNANO(LAYER_NAVIGATION), [_NAVIGATION] = CNANO(LAYER_NAVIGATION),
[_NUMBER] = CNANO(LAYER_NUMBER), [_NUMBER] = CNANO(LAYER_NUMBER),
[_SYMBOL] = CNANO(LAYER_SYMBOL), [_SYMBOL] = CNANO(LAYER_SYMBOL),
[_FUNCTION] = CNANO(LAYER_FUNCTION), //[_FUNCTION] = CNANO(LAYER_FUNCTION),
[_CONFIG] = CNANO(LAYER_CONFIG) [_CONFIG] = CNANO(LAYER_CONFIG)
}; };

View file

@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVIGATION] = SWOOP(LAYER_NAVIGATION), [_NAVIGATION] = SWOOP(LAYER_NAVIGATION),
[_NUMBER] = SWOOP(LAYER_NUMBER), [_NUMBER] = SWOOP(LAYER_NUMBER),
[_SYMBOL] = SWOOP(LAYER_SYMBOL), [_SYMBOL] = SWOOP(LAYER_SYMBOL),
[_FUNCTION] = SWOOP(LAYER_FUNCTION), //[_FUNCTION] = SWOOP(LAYER_FUNCTION),
[_CONFIG] = SWOOP(LAYER_CONFIG) [_CONFIG] = SWOOP(LAYER_CONFIG)
}; };
@ -42,7 +42,7 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_NAVIGATION] = { ENCODER_CCW_CW(ZOOMOUT, ZOOMIN), ENCODER_CCW_CW(___x___, ___x___) }, [_NAVIGATION] = { ENCODER_CCW_CW(ZOOMOUT, ZOOMIN), ENCODER_CCW_CW(___x___, ___x___) },
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_LEFT, KC_RGHT) }, [_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_LEFT, KC_RGHT) },
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, [_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
[_FUNCTION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) }, //[_FUNCTION] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
[_CONFIG] = { ENCODER_CCW_CW(RBSELYR, BASELYR), ENCODER_CCW_CW(TR_RRMD, TR_RMOD) } [_CONFIG] = { ENCODER_CCW_CW(RBSELYR, BASELYR), ENCODER_CCW_CW(TR_RRMD, TR_RMOD) }
}; };

View file

@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVIGATION] = CRKBD(LAYER_NAVIGATION), [_NAVIGATION] = CRKBD(LAYER_NAVIGATION),
[_NUMBER] = CRKBD(LAYER_NUMBER), [_NUMBER] = CRKBD(LAYER_NUMBER),
[_SYMBOL] = CRKBD(LAYER_SYMBOL), [_SYMBOL] = CRKBD(LAYER_SYMBOL),
[_FUNCTION] = CRKBD(LAYER_FUNCTION), //[_FUNCTION] = CRKBD(LAYER_FUNCTION),
[_CONFIG] = CRKBD(LAYER_CONFIG) [_CONFIG] = CRKBD(LAYER_CONFIG)
}; };

View file

@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVIGATION] = PLANCK(LAYER_NAVIGATION), [_NAVIGATION] = PLANCK(LAYER_NAVIGATION),
[_NUMBER] = PLANCK(LAYER_NUMBER), [_NUMBER] = PLANCK(LAYER_NUMBER),
[_SYMBOL] = PLANCK(LAYER_SYMBOL), [_SYMBOL] = PLANCK(LAYER_SYMBOL),
[_FUNCTION] = PLANCK(LAYER_FUNCTION), //[_FUNCTION] = PLANCK(LAYER_FUNCTION),
[_CONFIG] = PLANCK(LAYER_CONFIG) [_CONFIG] = PLANCK(LAYER_CONFIG)
}; };

View file

@ -4,8 +4,8 @@ layout:
layers: layers:
base_QWERTY: base_QWERTY:
- [Q, W, E, R, T, Y, U, I ,O, P] - [Q, W, E, R, T, Y, U, I ,O, P]
- [A, S, D, F, G, H, J, K ,L, {h: '"', t: ''''}] - [A, S, D, F, G, H, J, K ,L, {h: "\"", t: "'"}]
- [Z, X, C, V, B, N, M, {h: '(', t: ','} , {h: ')', t: '.'}, {h: '_', t: '-'}] - [Z, X, C, V, B, N, M, {h: "(", t: ","} , {h: ")", t: "."}, {h: "_", t: "-"}]
- {type: ghost} - {type: ghost}
- NUM - NUM
- Shift - Shift
@ -13,9 +13,9 @@ layers:
- NAV - NAV
- {t: Mute, type: ghost} - {t: Mute, type: ghost}
base_COLEMAK_DH: base_COLEMAK_DH:
- [Q, W, F, P, B, J, L, U ,Y, {h: '"', t: ''''}] - [Q, W, F, P, B, J, L, U ,Y, {h: "\"", t: "'"}]
- [A, R, S, T, G, M, N, E ,I, O] - [A, R, S, T, G, M, N, E ,I, O]
- [Z, X, C, D, V, K, H, {h: '(', t: ','} , {h: ')', t: '.'}, {h: '_', t: '-'}] - [Z, X, C, D, V, K, H, {h: "(", t: ","} , {h: ")", t: "."}, {h: "_", t: "-"}]
- {type: ghost} - {type: ghost}
- NUM - NUM
- Shift - Shift
@ -23,39 +23,39 @@ layers:
- NAV - NAV
- {t: Mute, type: ghost} - {t: Mute, type: ghost}
base_GAME: base_GAME:
- [Tab, Q, W, E, R, T, '7', '8' ,'9', Esc] - [Tab, Q, W, E, R, T, "7", "8" ,"9", Esc]
- [Ctrl, A, S, D, F, G, '4', '5' ,'6', '`'] - [Ctrl, A, S, D, F, G, "4", "5" ,"6", {s: "~", t: "`"}]
- [Z, X, C, V, B, Alt, '1', '2' ,'3', Combo Toggle] - [Z, X, C, V, B, Alt, "1", "2" ,"3", Combo Toggle]
- {t: Enter, type: ghost} - {t: Enter, type: ghost}
- Space - Space
- Shift - Shift
- Space - Space
- NAV - {h: "NAV", t: "0"}
- {t: Mute, type: ghost} - {t: Mute, type: ghost}
NAV: NAV:
- [null, Home, ▲, End, Page Up, null, null, Caps Lock, Print Screen, CONFIG ] - [Esc, Home, ▲, End, Page Up, Vol+, Next, Play Pause, null, CONFIG ]
- [null, ◄, ▼, ►, Page Down, null, Shift, Ctrl, Alt, Gui ] - [null, ◄, ▼, ►, Page Down, Vol-, Shift, Ctrl, Alt, Gui ]
- [Undo, Cut, Copy, Paste, Redo, null, App, Sniper Toggle, Sniper DPI, Pointer DPI ] - [Undo, Cut, Copy, Paste, Redo, Mute, App, Sniper Toggle, Sniper DPI, Pointer DPI ]
- {t: Zoom Reset, type: ghost} - {t: Zoom Reset, type: ghost}
- NUM - NUM
- Space - Ent
- null - null
- {type: held} - {type: held}
- null
NUM:
- [Esc, Mouse 3, Mouse 2, Mouse 1, Print Screen, null, "7", "8" ,"9", {s: "<", t: ","} ]
- [Gui, Alt, Ctrl, Shift, null, null, "4", "5" ,"6", {s: ">", t: "."}]
- [Undo, Cut, Copy, Paste, Redo, null, "1", "2" ,"3", {h: "_", t: "-"}]
- {type: ghost}
- {type: held}
- null
- Space
- {h: "NAV", t: "0"}
- {t: Mute, type: ghost} - {t: Mute, type: ghost}
SYM: SYM:
- [Esc, Mouse 3, Mouse 2, Mouse 1, {h: '~', t: '`'}, {h: '==', t: '='}, '#', {h: '<>', t: '<'}, '>', {h: '^', t: '%'}] - [null, null, "&", {h: "%", t: "^"}, {h: "~", t: "`"}, {h: "+", t: "="}, "#", "*", null, {h: "\"\"", t: "\""}]
- [Gui, Alt, Ctrl, Shift, {h: ':', t: ';'}, {h: '&', t: '@'}, {h: '*', t: '?'}, {h: '[]', t: '['}, ']', {h: '''''', t: ''''}] - [Caps Lock, {h: "{}", t: "{"}, "}", "!", {h: ":", t: ";"}, "@", "?", {h: "[]", t: "]"}, "]", {h: "''", t: "'"}]
- [Undo, Cut, Copy, Paste, Redo, {h: '\\', t: "\\"}, {h: '//', t: '/'}, {h: '()', t: '('}, ')', {h: '_', t: '-'}] - [null, {h: "<>", t: "<"}, ">", {h: "\\\\", t: "\\"}, {h: "||", t: "|"}, "$", {h: "//", t: "/"}, {h: "()", t: "("}, ")", {h: "_", t: "-"}]
- {type: ghost}
- {type: held}
- null
- {h: '$', t: '!'}
- NAV
- {type: ghost}
NUM:
- [F7, F5, F3, F1, F9, F8, F10, F2, F4, F6]
- ['7', '5', '3', '1', '9', '8', '0', '2' , '4', '6' ]
- [Mute, Vol-, Vol+, Next, Play Pause, F11, F12, {h: '(', t: ','} , {h: ')', t: '.'}, {h: '_', t: '-'}]
- {type: ghost} - {type: ghost}
- {type: held} - {type: held}
- null - null

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Before After
Before After

View file

@ -3,9 +3,12 @@
//static bool caps_word_state = false; //static bool caps_word_state = false;
bool caps_word_press_user(uint16_t keycode) { bool caps_word_press_user(uint16_t keycode) {
switch (keycode) { switch (keycode) {
// Keycodes that continue Caps Word, with shift applied. // Keycodes that continue Caps Word, with shift applied.
case KC_A ... KC_Z: case KC_A ... KC_Z:
case KC_MINS: case KC_MINS:
add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key. add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key.
return true; return true;
@ -19,5 +22,7 @@ bool caps_word_press_user(uint16_t keycode) {
default: default:
return false; // Deactivate Caps Word. return false; // Deactivate Caps Word.
} }
} }

View file

@ -17,30 +17,24 @@ bool get_combo_must_tap(uint16_t index, combo_t *combo) {
default: default:
return false; return false;
} }
} }
bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) { bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) {
// disable all combos on config layer // disable all combos on config layer
if ( get_highest_layer(layer_state) == _CONFIG ) { if ( get_highest_layer(layer_state) == _CONFIG ) return false;
return false;
}
switch (combo_index) { switch (combo_index) {
case KEY_ENT: case KEY_ENT:
if ( get_highest_layer(layer_state) == _SYMBOL ) { if ( get_highest_layer(layer_state) == _SYMBOL ) return false;
return false;
}
break;
case KEY_TAB: case KEY_TAB:
if ( get_highest_layer(layer_state) == _NAVIGATION || if ( get_highest_layer(layer_state) == _NAVIGATION ||
get_highest_layer(layer_state) == _SYMBOL ) { get_highest_layer(layer_state) == _SYMBOL ) return false;
return false;
}
break;
case MOUSE_BUTTON1: case MOUSE_BUTTON1:
case MOUSE_BUTTON2: case MOUSE_BUTTON2:
@ -48,10 +42,7 @@ bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode
case MOUSE_BUTTON4: case MOUSE_BUTTON4:
case MOUSE_BUTTON5: case MOUSE_BUTTON5:
case MOUSE_DRGTOG: case MOUSE_DRGTOG:
if ( get_highest_layer(layer_state) > _DEFAULT_LAYER_1 ) { if ( get_highest_layer(layer_state) > _DEFAULT_LAYER_1 ) return false;
return false;
}
break;
} }

View file

@ -34,6 +34,7 @@ enum combos {
KEY_BSPC, KEY_BSPC,
COMBO_LENGTH COMBO_LENGTH
}; };

View file

@ -15,10 +15,35 @@ Intentionally did not convert all the override/autoshit tap holds to this format
const key_override_t delete_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPC, KC_DEL); const key_override_t delete_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPC, KC_DEL);
const key_override_t media_next_override = ko_make_basic(MOD_MASK_SHIFT, KC_MNXT, KC_MPRV); const key_override_t media_next_override = ko_make_basic(MOD_MASK_SHIFT, KC_MNXT, KC_MPRV);
const key_override_t f1_override = ko_make_with_layers(MOD_MASK_CSA, KC_1, KC_F1, _NUMBER);
const key_override_t f2_override = ko_make_with_layers(MOD_MASK_CSA, KC_2, KC_F2, _NUMBER);
const key_override_t f3_override = ko_make_with_layers(MOD_MASK_CSA, KC_3, KC_F3, _NUMBER);
const key_override_t f4_override = ko_make_with_layers(MOD_MASK_CSA, KC_4, KC_F4, _NUMBER);
const key_override_t f5_override = ko_make_with_layers(MOD_MASK_CSA, KC_5, KC_F5, _NUMBER);
const key_override_t f6_override = ko_make_with_layers(MOD_MASK_CSA, KC_6, KC_F6, _NUMBER);
const key_override_t f7_override = ko_make_with_layers(MOD_MASK_CSA, KC_7, KC_F7, _NUMBER);
const key_override_t f8_override = ko_make_with_layers(MOD_MASK_CSA, KC_8, KC_F8, _NUMBER);
const key_override_t f9_override = ko_make_with_layers(MOD_MASK_CSA, KC_9, KC_F9, _NUMBER);
const key_override_t f10_override = ko_make_with_layers(MOD_MASK_CSA, KC_COMM, KC_F10, _NUMBER);
const key_override_t f11_override = ko_make_with_layers(MOD_MASK_CSA, KC_DOT, KC_F11, _NUMBER);
const key_override_t f12_override = ko_make_with_layers(MOD_MASK_CSA, TR_MINS, KC_F12, _NUMBER);
const key_override_t **key_overrides = (const key_override_t *[]) { const key_override_t **key_overrides = (const key_override_t *[]) {
&delete_override, &delete_override,
&media_next_override, &media_next_override,
&f1_override,
&f2_override,
&f3_override,
&f4_override,
&f5_override,
&f6_override,
&f7_override,
&f8_override,
&f9_override,
&f10_override,
&f11_override,
&f12_override,
NULL // Null terminate the array of overrides! NULL // Null terminate the array of overrides!
}; };

View file

@ -1,19 +1,27 @@
#include "oled.h" #include "oled.h"
void render_crkbd_logo(void) { void render_crkbd_logo(void) {
oled_write_P(crkbd_logo, false); oled_write_P(crkbd_logo, false);
} }
void render_rollow_logo(void) { void render_rollow_logo(void) {
oled_write_raw_P(rollow_logo, sizeof(rollow_logo)); oled_write_raw_P(rollow_logo, sizeof(rollow_logo));
} }
void render_qmk_logo(void) { void render_qmk_logo(void) {
oled_write_raw_P(qmk_logo, sizeof(qmk_logo)); oled_write_raw_P(qmk_logo, sizeof(qmk_logo));
} }
void render_default_layer_state(void) { void render_default_layer_state(void) {
oled_write_P(PSTR(OLED_RENDER_LAYOUT_NAME), false); oled_write_P(PSTR(OLED_RENDER_LAYOUT_NAME), false);
switch (get_highest_layer(default_layer_state)) { switch (get_highest_layer(default_layer_state)) {
case _QWERTY: case _QWERTY:
@ -27,27 +35,33 @@ void render_default_layer_state(void) {
case _GAME: case _GAME:
oled_write_P(PSTR(OLED_RENDER_LAYOUT_GAME), false); oled_write_P(PSTR(OLED_RENDER_LAYOUT_GAME), false);
break; break;
} }
} }
void render_layer_state(void) { void render_layer_state(void) {
oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false); oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false);
oled_write_P(PSTR(OLED_RENDER_LAYER_BASE), get_highest_layer(layer_state) == FIRST_DEFAULT_LAYER); oled_write_P(PSTR(OLED_RENDER_LAYER_BASE), get_highest_layer(layer_state) == FIRST_DEFAULT_LAYER);
oled_write_P(PSTR(OLED_RENDER_LAYER_NAVIGATION), get_highest_layer(layer_state) == _NAVIGATION); oled_write_P(PSTR(OLED_RENDER_LAYER_NAVIGATION), get_highest_layer(layer_state) == _NAVIGATION);
oled_write_P(PSTR(OLED_RENDER_LAYER_NUMBER), get_highest_layer(layer_state) == _NUMBER); oled_write_P(PSTR(OLED_RENDER_LAYER_NUMBER), get_highest_layer(layer_state) == _NUMBER);
oled_write_P(PSTR(OLED_RENDER_LAYER_SYMBOL), get_highest_layer(layer_state) == _SYMBOL); oled_write_P(PSTR(OLED_RENDER_LAYER_SYMBOL), get_highest_layer(layer_state) == _SYMBOL);
oled_write_P(PSTR(OLED_RENDER_LAYER_FUNCTION), get_highest_layer(layer_state) == _FUNCTION); //oled_write_P(PSTR(OLED_RENDER_LAYER_FUNCTION), get_highest_layer(layer_state) == _FUNCTION);
oled_write_P(PSTR(OLED_RENDER_LAYER_CONFIG), get_highest_layer(layer_state) == _CONFIG); oled_write_P(PSTR(OLED_RENDER_LAYER_CONFIG), get_highest_layer(layer_state) == _CONFIG);
} }
void render_keylock_status(void) { void render_keylock_status(void) {
oled_write_P(PSTR(OLED_RENDER_KEYLOCK_NAME), false); oled_write_P(PSTR(OLED_RENDER_KEYLOCK_NAME), false);
oled_write_P(PSTR(" "), false); oled_write_P(PSTR(" "), false);
oled_write_P(PSTR("N"), host_keyboard_led_state().num_lock); oled_write_P(PSTR("N"), host_keyboard_led_state().num_lock);
oled_write_P(PSTR("C"), host_keyboard_led_state().caps_lock || is_caps_word_on() ); oled_write_P(PSTR("C"), host_keyboard_led_state().caps_lock || is_caps_word_on() );
oled_write_ln_P(PSTR("S"), host_keyboard_led_state().scroll_lock ); oled_write_ln_P(PSTR("S"), host_keyboard_led_state().scroll_lock );
} }
@ -68,6 +82,7 @@ void render_mod_status(void) {
oled_write_P(PSTR("C"), isCtrl ); oled_write_P(PSTR("C"), isCtrl );
oled_write_P(PSTR("A"), isAlt ); oled_write_P(PSTR("A"), isAlt );
oled_write_P(PSTR("G"), isGUI ); oled_write_P(PSTR("G"), isGUI );
} }
@ -84,8 +99,11 @@ void render_oled_main(void) {
bool oled_task_user(void) { bool oled_task_user(void) {
if (is_keyboard_master()) { if (is_keyboard_master()) {
render_oled_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) render_oled_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
} else { } else {
#if defined(KEYBOARD_barbellboards_rollow) #if defined(KEYBOARD_barbellboards_rollow)
render_rollow_logo(); render_rollow_logo();
#elif defined(KEYBOARD_crkbd) #elif defined(KEYBOARD_crkbd)
@ -93,15 +111,25 @@ bool oled_task_user(void) {
#else #else
render_qmk_logo(); render_qmk_logo();
#endif #endif
} }
return false; return false;
} }
oled_rotation_t oled_init_user(oled_rotation_t rotation) { oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (is_keyboard_master()) { if (is_keyboard_master()) {
return OLED_ROTATION_270; return OLED_ROTATION_270;
} else { } else {
return OLED_ROTATION_0; return OLED_ROTATION_0;
} }
} }

View file

@ -15,7 +15,7 @@
#define OLED_RENDER_LAYER_NAVIGATION " Nav " #define OLED_RENDER_LAYER_NAVIGATION " Nav "
#define OLED_RENDER_LAYER_NUMBER " Num " #define OLED_RENDER_LAYER_NUMBER " Num "
#define OLED_RENDER_LAYER_SYMBOL " Sym " #define OLED_RENDER_LAYER_SYMBOL " Sym "
#define OLED_RENDER_LAYER_FUNCTION " Fun " //#define OLED_RENDER_LAYER_FUNCTION " Fun "
#define OLED_RENDER_LAYER_CONFIG " Cfg " #define OLED_RENDER_LAYER_CONFIG " Cfg "
void render_crkbd_logo(void); void render_crkbd_logo(void);

View file

@ -1,33 +1,5 @@
#include "taphold.h" #include "taphold.h"
/*
void single_tap(uint16_t key, uint16_t altkey, bool isHold) {
isHold ? tap_code16(altkey) : tap_code16(key);
}
void double_tap(uint16_t key, uint16_t altkey, uint32_t ms) {
bool isShift = ( (get_mods() & MOD_BIT(KC_LSFT)) || (get_oneshot_mods() & MOD_BIT(KC_LSFT)) );
isShift ? tap_code16(LSFT(key)) : tap_code16(key);
wait_ms(ms);
isShift ? tap_code16(LSFT(altkey)) : tap_code16(altkey);
void insert_brackets(uint16_t left, uint16_t right, uint32_t ms) {
bool isShift = ( (get_mods() & MOD_BIT(KC_LSFT)) || (get_oneshot_mods() & MOD_BIT(KC_LSFT)) );
isShift ? tap_code16(LSFT(left)) : tap_code16(left);
wait_ms(ms);
isShift ? tap_code16(LSFT(right)) : tap_code16(right);
wait_ms(ms);
tap_code16(KC_LEFT);
}
*/
void single_tap(uint16_t key) {
tap_code16(key);
}
void double_tap(uint16_t key, uint32_t ms) { void double_tap(uint16_t key, uint32_t ms) {
@ -49,9 +21,6 @@ void insert_brackets(uint16_t left, uint16_t right, uint32_t ms) {
bool process_tap_hold_key(keyrecord_t* record, uint16_t tap_keycode, uint16_t hold_keycode, int mode) { bool process_tap_hold_key(keyrecord_t* record, uint16_t tap_keycode, uint16_t hold_keycode, int mode) {
// https://getreuer.info/posts/keyboards/triggers/index.html#tap-vs.-long-press
if (record->tap.count > 0) { // Key is being tapped if (record->tap.count > 0) { // Key is being tapped
// register on press, unregister on release // register on press, unregister on release
@ -78,131 +47,3 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t tap_keycode, uint16_t ho
return false; return false;
} }
/*
// here we can have the holds be more complex, like sending "" when you hold "
bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
// tap is record->tap.count && record->event.pressed
// hold is record->event.pressed
// just saving this to handle mods
// bool isShift = ( (get_mods() & MOD_BIT(KC_LSFT)) || (get_oneshot_mods() & MOD_BIT(KC_LSFT)) );
// isShift ? insert_brackets(LSFT(key), LSFT(altkey)) : insert_brackets(key, altkey);
bool isHold = false;
if (record->tap.count && record->event.pressed) {
switch(keycode) {
case TR_LCBR:
single_tap(TAPHOLD_LCBR, isHold); break;
case TR_LABK:
single_tap(TAPHOLD_LABK, isHold); break;
case TR_LBRC:
single_tap(TAPHOLD_LBRC, isHold); break;
case TR_LPRN:
single_tap(TAPHOLD_LPRN, isHold); break;
case TR_DQUO:
single_tap(TAPHOLD_DQUO, isHold); break;
case TR_SQUO:
single_tap(TAPHOLD_SQUO, isHold); break;
case TR_BSLS:
single_tap(TAPHOLD_BSLS, isHold); break;
case TR_SLSH:
single_tap(TAPHOLD_SLSH, isHold); break;
case TR_PIPE:
single_tap(TAPHOLD_PIPE, isHold); break;
case TR_COMM:
single_tap(TAPHOLD_COMM, isHold); break;
case TR_DOT:
single_tap(TAPHOLD_DOT, isHold); break;
case TR_PERC:
single_tap(TAPHOLD_PERC, isHold); break;
case TR_EQL:
single_tap(TAPHOLD_EQL, isHold); break;
case TR_MINS:
single_tap(TAPHOLD_MINS, isHold); break;
case TR_GRV:
single_tap(TAPHOLD_GRV, isHold); break;
case TR_SCLN:
single_tap(TAPHOLD_SCLN, isHold); break;
case TR_QUOT:
single_tap(TAPHOLD_QUOT, isHold); break;
}
return false;
} else if (record->tap.count == 0 && record->event.pressed) {
isHold = true;
switch(keycode) {
// Brackets: open and close brackets and put the cursor inside
case TR_LCBR:
insert_brackets(TAPHOLD_LCBR, WAIT_DELAY); break;
case TR_LABK:
insert_brackets(TAPHOLD_LABK, WAIT_DELAY); break;
case TR_LBRC:
insert_brackets(TAPHOLD_LBRC, WAIT_DELAY); break;
case TR_LPRN:
insert_brackets(TAPHOLD_LPRN, WAIT_DELAY); break;
case TR_DQUO:
insert_brackets(TAPHOLD_DQUO, WAIT_DELAY); break;
case TR_SQUO:
insert_brackets(TAPHOLD_SQUO, WAIT_DELAY); break;
// double tap
case TR_BSLS:
double_tap(TAPHOLD_BSLS, WAIT_DELAY); break;
case TR_SLSH:
double_tap(TAPHOLD_SLSH, WAIT_DELAY); break;
case TR_PIPE:
double_tap(TAPHOLD_PIPE, WAIT_DELAY); break;
// custom override without holding shift
case TR_COMM:
single_tap(TAPHOLD_COMM, isHold); break;
case TR_DOT:
single_tap(TAPHOLD_DOT, isHold); break;
case TR_PERC:
single_tap(TAPHOLD_PERC, isHold); break;
// simulates auto-shift
case TR_EQL:
single_tap(TAPHOLD_EQL, isHold); break;
case TR_MINS:
single_tap(TAPHOLD_MINS, isHold); break;
case TR_GRV:
single_tap(TAPHOLD_GRV, isHold); break;
case TR_SCLN:
single_tap(TAPHOLD_SCLN, isHold); break;
case TR_QUOT:
single_tap(TAPHOLD_QUOT, isHold); break;
}
return false;
}
return true; // Continue default handling.
}
*/

View file

@ -1,52 +1,7 @@
#pragma once #pragma once
#include "t4corun.h" #include "t4corun.h"
/*
void single_tap(uint16_t key, uint16_t altkey, bool isHold);
void double_tap(uint16_t key, uint16_t altkey, uint32_t ms);
void insert_brackets(uint16_t left, uint16_t right, uint32_t ms);
void insert_brackets(uint16_t left, uint16_t right, uint32_t ms);
bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode);
*/
void single_tap(uint16_t key); void single_tap(uint16_t key);
void double_tap(uint16_t key, uint32_t ms); void double_tap(uint16_t key, uint32_t ms);
void insert_brackets(uint16_t left, uint16_t right, uint32_t ms); void insert_brackets(uint16_t left, uint16_t right, uint32_t ms);
bool process_tap_hold_key(keyrecord_t* record, uint16_t tap_keycode, uint16_t hold_keycode, int mode); bool process_tap_hold_key(keyrecord_t* record, uint16_t tap_keycode, uint16_t hold_keycode, int mode);
/* the first element is the alt key (tap action)
* the second is altkey (hold action usually)
*
* I was doing a switch statement to assign these each time, but this is faster
* and easier to maintain
*/
/*
// Brackets: open and close brackets and put the cursor inside
#define TAPHOLD_LCBR KC_LCBR, KC_RCBR
#define TAPHOLD_LABK KC_LABK, KC_RABK
#define TAPHOLD_LBRC KC_LBRC, KC_RBRC
#define TAPHOLD_LPRN KC_LPRN, KC_RPRN
#define TAPHOLD_DQUO KC_DQUO, KC_DQUO
#define TAPHOLD_SQUO KC_QUOT, KC_QUOT
// double tap
#define TAPHOLD_BSLS KC_BSLS, KC_BSLS
#define TAPHOLD_SLSH KC_SLSH, KC_SLSH
#define TAPHOLD_PIPE KC_PIPE, KC_PIPE
// Custom override without holding shift
#define TAPHOLD_COMM KC_COMM, KC_LPRN
#define TAPHOLD_DOT KC_DOT, KC_RPRN
#define TAPHOLD_PERC KC_PERC, KC_CIRC
// auto shift
#define TAPHOLD_EQL KC_EQL, KC_PLUS
#define TAPHOLD_MINS KC_MINS, KC_UNDS
#define TAPHOLD_GRV KC_GRV, KC_TILD
#define TAPHOLD_SCLN KC_SCLN, KC_COLN
#define TAPHOLD_QUOT KC_QUOT, KC_DQUO
*/

View file

@ -8,7 +8,6 @@ uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
return TAPPING_TERM + 60; return TAPPING_TERM + 60;
default: default:
//uprintf("tapping term: %d \n", TAPPING_TERM);
return TAPPING_TERM; return TAPPING_TERM;
} }

View file

@ -15,20 +15,27 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case BASELYR: case BASELYR:
if (record->event.pressed) { if (record->event.pressed) {
current_base_layer = (current_base_layer + 1) % NUM_BASE_LAYER; current_base_layer = (current_base_layer + 1) % NUM_BASE_LAYER;
set_single_persistent_default_layer(current_base_layer); set_single_persistent_default_layer(current_base_layer);
} }
return false; return false;
case RBSELYR: case RBSELYR:
if (record->event.pressed) { if (record->event.pressed) {
current_base_layer = (current_base_layer - 1) % NUM_BASE_LAYER; current_base_layer = (current_base_layer - 1) % NUM_BASE_LAYER;
set_single_persistent_default_layer(current_base_layer); set_single_persistent_default_layer(current_base_layer);
} }
return false; return false;
case PN_DRGS: case PN_DRGS:
if (record->event.pressed) { if (record->event.pressed) {
//tap numlock twice to toggle ploopy nano drag scroll //tap numlock twice to toggle ploopy nano drag scroll
// double_tap(KC_NUM, KC_NUM, WAIT_DELAY); // double_tap(KC_NUM, KC_NUM, WAIT_DELAY);
double_tap(KC_NUM, WAIT_DELAY); double_tap(KC_NUM, WAIT_DELAY);
@ -36,91 +43,20 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
} }
return false; return false;
case PN_PDPI: case PN_PDPI:
if (record->event.pressed) { if (record->event.pressed) {
//tap capslock twice to cycle ploopy nano pointer DPI //tap capslock twice to cycle ploopy nano pointer DPI
//double_tap(KC_CAPS, KC_CAPS, WAIT_DELAY); //double_tap(KC_CAPS, KC_CAPS, WAIT_DELAY);
double_tap(KC_CAPS, WAIT_DELAY); double_tap(KC_CAPS, WAIT_DELAY);
} }
return false; return false;
/*
case KC_BSPC: {
//https://docs.qmk.fm/#/feature_advanced_keycodes?id=shift-backspace-for-delete
// Initialize a boolean variable that keeps track
// of the delete key status: registered or not?
static bool delkey_registered = false;
if (record->event.pressed) {
uint8_t current_mod = get_mods();
uint8_t current_osm = get_oneshot_mods();
// Detect the activation of either shift keys
if ((current_mod | current_osm) & MOD_MASK_SHIFT) {
// First temporarily canceling both shifts so that
// shift isn't applied to the KC_DEL keycode
del_mods(MOD_MASK_SHIFT);
del_oneshot_mods(MOD_MASK_SHIFT);
// Press delete and keep track that key press
register_code(KC_DEL);
delkey_registered = true;
// Reapplying modifier state so that the held shift key(s)
// still work even after having tapped the Backspace/Delete key
set_mods(current_mod);
set_oneshot_mods(current_osm);
return false;
}
} else { // on release of KC_BSPC
if(delkey_registered) {
unregister_code(KC_DEL);
delkey_registered = false;
return false;
}
}
// QMK will process Backspace instead
// if the shift modifier is not detected
return true;
}
*/
//https://docs.qmk.fm/#/mod_tap?id=changing-both-tasp-and-hold //https://docs.qmk.fm/#/mod_tap?id=changing-both-tasp-and-hold
//https://getreuer.info/posts/keyboards/triggers/index.html#tap-vs.-long-press //https://getreuer.info/posts/keyboards/triggers/index.html#tap-vs.-long-press
//https://www.jonashietala.se/series/t-34/ he focuses on a keymap for programming/VIM //https://www.jonashietala.se/series/t-34/ he focuses on a keymap for programming/VIM
/*
case TR_LCBR:
case TR_LABK:
case TR_LBRC:
case TR_LPRN:
case TR_SQUO:
case TR_EQL:
case TR_BSLS:
case TR_SLSH:
case TR_COMM:
case TR_DOT:
case TR_PERC:
case TR_EXLM:
case TR_AT:
case TR_QUES:
case TR_MINS:
case TR_GRV:
case TR_SCLN:
case TR_QUOT:
return process_tap_hold_key(record, keycode);
*/
// Brackets: open and close brackets and put the cursor inside // Brackets: open and close brackets and put the cursor inside
case TR_LCBR: case TR_LCBR:
return process_tap_hold_key(record, KC_LCBR, KC_RCBR, HOLD_BRACKETS); return process_tap_hold_key(record, KC_LCBR, KC_RCBR, HOLD_BRACKETS);

View file

@ -11,7 +11,7 @@ enum layers {
_NAVIGATION, _NAVIGATION,
_NUMBER, _NUMBER,
_SYMBOL, _SYMBOL,
_FUNCTION, //_FUNCTION,
_CONFIG _CONFIG
}; };
@ -51,7 +51,7 @@ enum keycodes {
#define NAV MO(_NAVIGATION) #define NAV MO(_NAVIGATION)
#define NAV_0 LT(_NAVIGATION, KC_0) #define NAV_0 LT(_NAVIGATION, KC_0)
#define NUM MO(_NUMBER) #define NUM MO(_NUMBER)
#define FUNC MO(_FUNCTION) //f#define FUNC MO(_FUNCTION)
#define CONFIG MO(_CONFIG) #define CONFIG MO(_CONFIG)
// Windows Shortcuts // Windows Shortcuts
@ -85,61 +85,32 @@ enum keycodes {
// Brackets: open and close brackets and put the cursor inside // Brackets: open and close brackets and put the cursor inside
#define TR_LCBR LT(_DEFAULT_LAYER_1, TH_LCBR) #define TR_LCBR LT(_DEFAULT_LAYER_1, TH_LCBR)
#define TR_LABK LT(_DEFAULT_LAYER_1, TH_LABK) #define TR_LABK LT(_DEFAULT_LAYER_1, TH_LABK)
#define TR_LBRC LT(_DEFAULT_LAYER_1, TH_LBRC) // #define TR_LBRC LT(_DEFAULT_LAYER_1, TH_LBRC)
#define TR_LPRN LT(_DEFAULT_LAYER_1, TH_LPRN) #define TR_LPRN LT(_DEFAULT_LAYER_1, TH_LPRN)
#define TR_DQUO LT(_DEFAULT_LAYER_1, TH_DQUO) #define TR_DQUO LT(_DEFAULT_LAYER_1, TH_DQUO)
#define TR_SQUO LT(_DEFAULT_LAYER_1, TH_SQUO) #define TR_SQUO LT(_DEFAULT_LAYER_1, TH_SQUO)
// double tap // double tap
#define TR_BSLS LT(_DEFAULT_LAYER_1, TH_BSLS) // #define TR_BSLS LT(_DEFAULT_LAYER_1, TH_BSLS)
#define TR_SLSH LT(_DEFAULT_LAYER_1, TH_SLSH) // #define TR_SLSH LT(_DEFAULT_LAYER_1, TH_SLSH)
#define TR_PIPE LT(_DEFAULT_LAYER_1, TH_PIPE) #define TR_PIPE LT(_DEFAULT_LAYER_1, TH_PIPE)
// Custom override without holding shift // Custom override without holding shift
#define TR_COMM LT(_DEFAULT_LAYER_1, TH_COMM) // #define TR_COMM LT(_DEFAULT_LAYER_1, TH_COMM)
#define TR_DOT LT(_DEFAULT_LAYER_1, TH_DOT) // #define TR_DOT LT(_DEFAULT_LAYER_1, TH_DOT)
#define TR_PERC LT(_DEFAULT_LAYER_1, TH_PERC) #define TR_PERC LT(_DEFAULT_LAYER_1, TH_PERC)
// auto shift // auto shift
#define TR_EQL LT(_DEFAULT_LAYER_1, TH_EQL) // #define TR_EQL LT(_DEFAULT_LAYER_1, TH_EQL)
#define TR_MINS LT(_DEFAULT_LAYER_1, TH_MINS) // #define TR_MINS LT(_DEFAULT_LAYER_1, TH_MINS)
#define TR_GRV LT(_DEFAULT_LAYER_1, TH_GRV) // #define TR_GRV LT(_DEFAULT_LAYER_1, TH_GRV)
#define TR_SCLN LT(_DEFAULT_LAYER_1, TH_SCLN) // #define TR_SCLN LT(_DEFAULT_LAYER_1, TH_SCLN)
#define TR_QUOT LT(_DEFAULT_LAYER_1, TH_QUOT) // #define TR_QUOT LT(_DEFAULT_LAYER_1, TH_QUOT)
#define HOLD_SINGLETP 0 #define HOLD_SINGLETP 0
#define HOLD_DOUBLETP 1 #define HOLD_DOUBLETP 1
#define HOLD_BRACKETS 2 #define HOLD_BRACKETS 2
/*
// tap hoLd. These will be intercepted and overridden. The LT will be ignored
// Brackets: open and close brackets and put the cursor inside
#define TR_LCBR LT(_DEFAULT_LAYER_1, TH_LCBR)
#define TR_LABK LT(_DEFAULT_LAYER_1, TH_LABK)
#define TR_LBRC LT(_DEFAULT_LAYER_1, TH_LBRC) //
#define TR_LPRN LT(_DEFAULT_LAYER_1, TH_LPRN)
#define TR_DQUO LT(_DEFAULT_LAYER_1, TH_DQUO)
#define TR_SQUO LT(_DEFAULT_LAYER_1, TH_SQUO)
// double tap
#define TR_BSLS LT(_DEFAULT_LAYER_1, TH_BSLS) //
#define TR_SLSH LT(_DEFAULT_LAYER_1, TH_SLSH) //
#define TR_PIPE LT(_DEFAULT_LAYER_1, TH_PIPE)
// Custom override without holding shift
#define TR_COMM LT(_DEFAULT_LAYER_1, TH_COMM) //
#define TR_DOT LT(_DEFAULT_LAYER_1, TH_DOT) //
#define TR_PERC LT(_DEFAULT_LAYER_1, TH_PERC)
// auto shift
#define TR_EQL LT(_DEFAULT_LAYER_1, TH_EQL) //
#define TR_MINS LT(_DEFAULT_LAYER_1, TH_MINS) //
#define TR_GRV LT(_DEFAULT_LAYER_1, TH_GRV) //
#define TR_SCLN LT(_DEFAULT_LAYER_1, TH_SCLN) //
#define TR_QUOT LT(_DEFAULT_LAYER_1, TH_QUOT) //
*/
#if defined(KEYBOARD_bastardkb_charybdis_3x5) #if defined(KEYBOARD_bastardkb_charybdis_3x5)
//these mouse codes are defined in charybdis.h //these mouse codes are defined in charybdis.h
@ -232,7 +203,7 @@ enum keycodes {
#define LAYER_NUMBER \ #define LAYER_NUMBER \
KC_ESC, KC_BTN3, KC_BTN2, KC_BTN1, KC_PSCR, ___x___, KC_7, KC_8, KC_9, KC_COMM, \ KC_ESC, KC_BTN3, KC_BTN2, KC_BTN1, KC_PSCR, ___x___, KC_7, KC_8, KC_9, KC_COMM, \
_GACS_MODS________________________, FUNC, ___x___, KC_4, KC_5, KC_6, KC_DOT, \ _GACS_MODS________________________, ___x___, ___x___, KC_4, KC_5, KC_6, KC_DOT, \
_UCCPR_L___________________________________, ___x___, KC_1, KC_2, KC_3, TR_MINS, \ _UCCPR_L___________________________________, ___x___, KC_1, KC_2, KC_3, TR_MINS, \
_LAYER_TRANS_____________, _BASE_R4_ZERO____________ _LAYER_TRANS_____________, _BASE_R4_ZERO____________
@ -243,13 +214,13 @@ enum keycodes {
___x___, TR_LABK, KC_RABK, TR_BSLS, TR_PIPE, KC_DLR, TR_SLSH, TR_LPRN, KC_RPRN, TR_MINS, \ ___x___, TR_LABK, KC_RABK, TR_BSLS, TR_PIPE, KC_DLR, TR_SLSH, TR_LPRN, KC_RPRN, TR_MINS, \
_LAYER_TRANS_____________, _LAYER_TRANS_____________ _LAYER_TRANS_____________, _LAYER_TRANS_____________
/*
#define LAYER_FUNCTION \ #define LAYER_FUNCTION \
_NONE_5____________________________________, ___x___, KC_F7, KC_F8, KC_F9, KC_F10, \ _NONE_5____________________________________, ___x___, KC_F7, KC_F8, KC_F9, KC_F10, \
___x___, ___x___, ___x___, ___x___, _______, KC_CAPS, KC_F4, KC_F5, KC_F6, KC_F11, \ ___x___, ___x___, ___x___, ___x___, _______, KC_CAPS, KC_F4, KC_F5, KC_F6, KC_F11, \
_NONE_5____________________________________, ___x___, KC_F1, KC_F2, KC_F3, KC_F12, \ _NONE_5____________________________________, ___x___, KC_F1, KC_F2, KC_F3, KC_F12, \
_LAYER_TRANS_____________, _NONE_3__________________ _LAYER_TRANS_____________, _NONE_3__________________
*/
#define LAYER_CONFIG \ #define LAYER_CONFIG \
_NONE_5____________________________________, ___x___, ___x___, EE_CLR, QK_BOOT, _______, \ _NONE_5____________________________________, ___x___, ___x___, EE_CLR, QK_BOOT, _______, \