mirror of
https://github.com/qmk/qmk_userspace.git
synced 2025-05-11 18:14:16 -04:00
commit
aa2a8463fe
20 changed files with 281 additions and 220 deletions
30
README.md
30
README.md
|
@ -4,7 +4,7 @@ My userspace for building QMK firmware via GitHub Actions. This does not require
|
|||
|
||||
## 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) 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:
|
||||
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:
|
||||
|
||||
- Releasing all keys always brings you back to base layer
|
||||
- Keeping certain keys consistent on all layers for better muscle memory
|
||||
|
@ -33,7 +33,7 @@ In this userspace, the base split 3x5_3 layout can be adapted for other split ke
|
|||
|
||||
### Tri-Layer
|
||||
|
||||
Hold both thumb momentary layer keys `NUMBER` and `NAVIGATION` to access the `SYMBOL` layer
|
||||
Hold both thumb momentary layer keys `NAVIGATION` and `SYMBOL` to access the `NUMBER` layer
|
||||
|
||||
### One Shot Mods
|
||||
|
||||
|
@ -50,32 +50,44 @@ Caps Word enables temporary all-caps typing without holding shift. Useful to typ
|
|||
|
||||
### Tap-Holds
|
||||
|
||||
Certain keys have different behaviors when held vs tapped allowing commonly typed characters or auto-shifting certain keycodes
|
||||
Certain keys have different behaviors when held vs tapped allowing commonly typed programming syntax or shifting certain keycodes without actually pressing/holding shift
|
||||
|
||||
| Keycode | When tapped | When held | Comments |
|
||||
| --------- | ----------- | ----------------------- | --------------------------------- |
|
||||
| `TR_LBRC` | `[` | `[]` with cursor inside | |
|
||||
| `TH_LCBR` | `{` | `{}` with cursor inside | |
|
||||
| `TR_LABK` | `<` | `<>` with cursor inside | |
|
||||
| `TR_LPRN` | `(` | `()` with cursor inside | |
|
||||
| `TR_SQUO` | `'` | `''` with cursor inside | |
|
||||
| `TR_DQUO` | `"` | `""` with cursor inside | |
|
||||
| `TR_EQL` | `=` | `==` | |
|
||||
| `TR_PLUS` | `+` | `++` | |
|
||||
| `TR_PIPE` | `\|` | `\|\|` | |
|
||||
| `TR_EXLM` | `!` | `!=` | |
|
||||
| `TR_EXLM` | `!` | `$` | |
|
||||
| `TR_COMM` | `,` | `(` | enables parenthesis on base layer |
|
||||
| `TR_DOT` | `.` | `)` | |
|
||||
| `TR_PERC` | `%` | `^` | |
|
||||
| `TR_MINS` | `-` | `_` | |
|
||||
| `TR_GRV` | ` | `~` | |
|
||||
| `TR_GRV` | `backtick` | `~` | |
|
||||
| `TR_SCLN` | `;` | `:` | |
|
||||
| `TR_QUOT` | `'` | `"` | |
|
||||
| `TR_AT` | `@` | `&` | |
|
||||
| `TR_EXLM` | `!` | `$` | |
|
||||
|
||||
Opted to implement overrides here instead of using built-in Key Override functionality because
|
||||
|
||||
- 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
|
||||
|
||||
Enables additional keys to be mapped by pressing multiple keys simultaneously. Primarily used to implement mouse buttons and make important keys (enter, backspace, etc) available on base layer
|
||||
|
||||
### Key Overrides
|
||||
|
||||
Primarily used to minimize the layout
|
||||
|
||||
| Keycode | Shift Mod Applied | Comment |
|
||||
| --------- | ----------------- | -------------------------------------- |
|
||||
| `KC_BSPC` | `KC_DEL` | Implemented to reduce amount of combos |
|
||||
| `KC_MNXT` | `KC_MPRV` | |
|
||||
|
||||
### Mouse Keys
|
||||
|
||||
This layout is designed to be used with a Ploopy Nano. Mouse buttons and scroll wheel is handled on the keyboard side. There are macros with the host status (Caps lock, Num Lock) to toggle Ploopy Nano settings or change the tracking to simulate a scroll wheel
|
||||
|
|
|
@ -23,8 +23,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
[_DEFAULT_LAYER_2] = ROLLOW(LAYER_COLEMAK_DH),
|
||||
[_DEFAULT_LAYER_3] = ROLLOW(LAYER_GAME),
|
||||
[_NAVIGATION] = ROLLOW(LAYER_NAVIGATION),
|
||||
[_NUMBER] = ROLLOW(LAYER_NUMBER),
|
||||
[_SYMBOL] = ROLLOW(LAYER_SYMBOL),
|
||||
[_NUMBER] = ROLLOW(LAYER_NUMBER),
|
||||
[_CONFIG] = ROLLOW(LAYER_CONFIG)
|
||||
|
||||
};
|
||||
|
@ -34,13 +34,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
|
||||
/* These are horizontal encoders. Found I have to make it opposite the rotary encoders for it to feel intuitive*/
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[_DEFAULT_LAYER_1] = { ENCODER_CCW_CW(TR_MWHD, TR_MWHU), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
|
||||
[_DEFAULT_LAYER_2] = { ENCODER_CCW_CW(TR_MWHD, TR_MWHU), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
|
||||
[_DEFAULT_LAYER_3] = { ENCODER_CCW_CW(TR_MWHD, TR_MWHU), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
|
||||
[_DEFAULT_LAYER_1] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
|
||||
[_DEFAULT_LAYER_2] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
|
||||
[_DEFAULT_LAYER_3] = { ENCODER_CCW_CW(KC_WH_D, KC_WH_U), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
|
||||
[_NAVIGATION] = { ENCODER_CCW_CW(ZOOMIN, ZOOMOUT), ENCODER_CCW_CW(___x___, ___x___) },
|
||||
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) },
|
||||
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
|
||||
[_CONFIG] = { ENCODER_CCW_CW(TR_RMOD, TR_RRMD), ENCODER_CCW_CW(BASELYR, RBSELYR) }
|
||||
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) },
|
||||
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
|
||||
[_CONFIG] = { ENCODER_CCW_CW(BASELYR, RBSELYR), ENCODER_CCW_CW(TR_RMOD, TR_RRMD) }
|
||||
};
|
||||
|
||||
#endif
|
|
@ -12,7 +12,7 @@ LAYOUT_cnano_wrapper ( \
|
|||
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, \
|
||||
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, \
|
||||
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, \
|
||||
TR_BTN1, k33, k34, k35, k36 \
|
||||
KC_BTN1, k33, k34, k35, k36 \
|
||||
)
|
||||
|
||||
#define CNANO(...) LAYOUT_3x5_3_keymap(__VA_ARGS__)
|
||||
|
@ -23,8 +23,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
[_DEFAULT_LAYER_2] = CNANO(LAYER_COLEMAK_DH),
|
||||
[_DEFAULT_LAYER_3] = CNANO(LAYER_GAME),
|
||||
[_NAVIGATION] = CNANO(LAYER_NAVIGATION),
|
||||
[_NUMBER] = CNANO(LAYER_NUMBER),
|
||||
[_SYMBOL] = CNANO(LAYER_SYMBOL),
|
||||
[_NUMBER] = CNANO(LAYER_NUMBER),
|
||||
[_CONFIG] = CNANO(LAYER_CONFIG)
|
||||
|
||||
};
|
|
@ -23,8 +23,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
[_DEFAULT_LAYER_2] = SWOOP(LAYER_COLEMAK_DH),
|
||||
[_DEFAULT_LAYER_3] = SWOOP(LAYER_GAME),
|
||||
[_NAVIGATION] = SWOOP(LAYER_NAVIGATION),
|
||||
[_NUMBER] = SWOOP(LAYER_NUMBER),
|
||||
[_SYMBOL] = SWOOP(LAYER_SYMBOL),
|
||||
[_NUMBER] = SWOOP(LAYER_NUMBER),
|
||||
[_CONFIG] = SWOOP(LAYER_CONFIG)
|
||||
|
||||
};
|
||||
|
@ -34,13 +34,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
|
||||
/* The encoder presses are handled in the keymap */
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[_DEFAULT_LAYER_1] = { ENCODER_CCW_CW(TR_MWHU, TR_MWHD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_DEFAULT_LAYER_2] = { ENCODER_CCW_CW(TR_MWHU, TR_MWHD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_DEFAULT_LAYER_3] = { ENCODER_CCW_CW(TR_MWHU, TR_MWHD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_DEFAULT_LAYER_1] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_DEFAULT_LAYER_2] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_DEFAULT_LAYER_3] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_NAVIGATION] = { ENCODER_CCW_CW(ZOOMOUT, ZOOMIN), ENCODER_CCW_CW(___x___, ___x___) },
|
||||
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_LEFT, KC_RGHT) },
|
||||
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
|
||||
[_CONFIG] = { ENCODER_CCW_CW(TR_RRMD, TR_RMOD), ENCODER_CCW_CW(RBSELYR, BASELYR) }
|
||||
[_SYMBOL] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(KC_LEFT, KC_RGHT) },
|
||||
[_NUMBER] = { ENCODER_CCW_CW(___x___, ___x___), ENCODER_CCW_CW(___x___, ___x___) },
|
||||
[_CONFIG] = { ENCODER_CCW_CW(RBSELYR, BASELYR), ENCODER_CCW_CW(TR_RRMD, TR_RMOD) }
|
||||
};
|
||||
|
||||
#endif //ENCODER_MAP_ENABLE
|
||||
|
|
|
@ -12,7 +12,7 @@ LAYOUT_crkbd_wrapper ( \
|
|||
KC_NO, k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, KC_NO, \
|
||||
KC_NO, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, KC_NO, \
|
||||
KC_NO, k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, KC_NO, \
|
||||
TR_BTN1, k33, k34, k35, k36, TR_BTN4 \
|
||||
KC_BTN1, k33, k34, k35, k36, KC_BTN4 \
|
||||
)
|
||||
|
||||
#define CRKBD(...) LAYOUT_3x5_3_keymap(__VA_ARGS__)
|
||||
|
@ -23,8 +23,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
[_DEFAULT_LAYER_2] = CRKBD(LAYER_COLEMAK_DH),
|
||||
[_DEFAULT_LAYER_3] = CRKBD(LAYER_GAME),
|
||||
[_NAVIGATION] = CRKBD(LAYER_NAVIGATION),
|
||||
[_NUMBER] = CRKBD(LAYER_NUMBER),
|
||||
[_SYMBOL] = CRKBD(LAYER_SYMBOL),
|
||||
[_NUMBER] = CRKBD(LAYER_NUMBER),
|
||||
[_CONFIG] = CRKBD(LAYER_CONFIG)
|
||||
|
||||
};
|
|
@ -23,8 +23,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
[_DEFAULT_LAYER_2] = PLANCK(LAYER_COLEMAK_DH),
|
||||
[_DEFAULT_LAYER_3] = PLANCK(LAYER_GAME),
|
||||
[_NAVIGATION] = PLANCK(LAYER_NAVIGATION),
|
||||
[_NUMBER] = PLANCK(LAYER_NUMBER),
|
||||
[_SYMBOL] = PLANCK(LAYER_SYMBOL),
|
||||
[_NUMBER] = PLANCK(LAYER_NUMBER),
|
||||
[_CONFIG] = PLANCK(LAYER_CONFIG)
|
||||
|
||||
};
|
|
@ -4,8 +4,8 @@ layout:
|
|||
layers:
|
||||
base_QWERTY:
|
||||
- [Q, W, E, R, T, Y, U, I ,O, P]
|
||||
- [A, S, D, F, G, H, J, K ,L, {h: "\"", t: "'"}]
|
||||
- [Z, X, C, V, B, N, M, {h: "(", t: ","} , {h: ")", t: "."}, {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: '-'}]
|
||||
- {type: ghost}
|
||||
- NUM
|
||||
- Shift
|
||||
|
@ -13,9 +13,9 @@ layers:
|
|||
- NAV
|
||||
- {t: Mute, type: ghost}
|
||||
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]
|
||||
- [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}
|
||||
- NUM
|
||||
- Shift
|
||||
|
@ -23,39 +23,39 @@ layers:
|
|||
- NAV
|
||||
- {t: Mute, type: ghost}
|
||||
base_GAME:
|
||||
- [Tab, Q, W, E, R, T, "7", "8" ,"9", Esc]
|
||||
- [Ctrl, A, S, D, F, G, "4", "5" ,"6", "`"]
|
||||
- [Z, X, C, V, B, Alt, "1", "2" ,"3", Combo Toggle]
|
||||
- [Tab, Q, W, E, R, T, '7', '8' ,'9', Esc]
|
||||
- [Ctrl, A, S, D, F, G, '4', '5' ,'6', '`']
|
||||
- [Z, X, C, V, B, Alt, '1', '2' ,'3', Combo Toggle]
|
||||
- {t: Enter, type: ghost}
|
||||
- Space
|
||||
- Shift
|
||||
- Space
|
||||
- {h: "NAV", t: "0"}
|
||||
- NAV
|
||||
- {t: Mute, type: ghost}
|
||||
NAV:
|
||||
- [null, Home, ▲, End, Page Up, null, null, Sniper Toggle, Sniper DPI, Pointer DPI ]
|
||||
- [null, Home, ▲, End, Page Up, null, null, Caps Lock, Print Screen, CONFIG ]
|
||||
- [null, ◄, ▼, ►, Page Down, null, Shift, Ctrl, Alt, Gui ]
|
||||
- [Undo, Cut, Copy, Paste, Redo, null, App, Vol-, Vol+, Mute ]
|
||||
- [Undo, Cut, Copy, Paste, Redo, null, App, Sniper Toggle, Sniper DPI, Pointer DPI ]
|
||||
- {t: Zoom Reset, type: ghost}
|
||||
- NUM
|
||||
- Space
|
||||
- null
|
||||
- {type: held}
|
||||
- {t: Mute, type: ghost}
|
||||
NUM:
|
||||
- [CONFIG, Win Snip, Win File, null, null, null, "7", "8" ,"9", {h: "<", t: ","} ]
|
||||
- [Gui, Alt, Ctrl, Shift, null, null, "4", "5" ,"6", {h: ">", t: "."}]
|
||||
- [Undo, Cut, Copy, Paste, Redo, null, "1", "2" ,"3", {h: "_", t: "-"}]
|
||||
SYM:
|
||||
- [Esc, Mouse 3, Mouse 2, Mouse 1, {h: '~', t: '`'}, {h: '==', t: '='}, '#', {h: '<>', t: '<'}, '>', {h: '^', t: '%'}]
|
||||
- [Gui, Alt, Ctrl, Shift, {h: ':', t: ';'}, {h: '&', t: '@'}, {h: '*', t: '?'}, {h: '[]', t: '['}, ']', {h: '''''', t: ''''}]
|
||||
- [Undo, Cut, Copy, Paste, Redo, {h: '\\', t: "\\"}, {h: '//', t: '/'}, {h: '()', t: '('}, ')', {h: '_', t: '-'}]
|
||||
- {type: ghost}
|
||||
- {type: held}
|
||||
- null
|
||||
- Space
|
||||
- {h: "NAV", t: "0"}
|
||||
- {t: Mute, type: ghost}
|
||||
SYM:
|
||||
- [Caps Lock, Print Screen, "@", "$", {h: "~", t: "`"}, {h: "==", t: "="}, "#", "*", null, {h: "\"\"", t: "\""}]
|
||||
- ["&", {h: "{}", t: "{"}, "}", {h: "||", t: "|"}, {h: ":", t: ";"}, {h: "++", t: "+"}, "?", {h: "[]", t: "]"}, "]", {h: "''", t: "'"}]
|
||||
- [{h: "^", t: "%"}, {h: "<>", t: "<"}, ">", "\\", {h: "!=", t: "!"}, null, "/", {h: "()", t: "("}, ")", {h: "_", t: "-"}]
|
||||
- {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: held}
|
||||
- null
|
||||
|
@ -63,26 +63,24 @@ layers:
|
|||
- {type: held}
|
||||
- {type: ghost}
|
||||
CONFIG:
|
||||
- [{type: held}, null, null, null, null, null, F7, F8, F9, F10]
|
||||
- [null, null, null, Shift, null, null, F4, F5, F6, F11]
|
||||
- [RGB Hue, RGB Sat, RGB Vib, RGB Spd, null, null, F1, F2, F3, F12]
|
||||
- {t: RGB Toggle, type: ghost}
|
||||
- EEPROM Clear
|
||||
- Boot Loader
|
||||
- [null, null, null, null, null, null, null, EEPROM Clear, Boot Loader, {type: held}]
|
||||
- [null, null, null, null, null, null, Shift, null, null, RGB Mode]
|
||||
- [null, null, null, null, null, RGB Toggle, RGB Hue, RGB Sat, RGB Vib, RGB Spd]
|
||||
- {t: Base Layer, type: ghost}
|
||||
- null
|
||||
- null
|
||||
- Macro Play
|
||||
- Macro Rec
|
||||
- {t: Base Layer, type: ghost}
|
||||
- {t: RGB Toggle, type: ghost}
|
||||
combos:
|
||||
- { p: [0, 1], k: Esc, l: [base_QWERTY] }
|
||||
- { p: [12, 13], k: MB1, l: [base_QWERTY] }
|
||||
- { p: [11, 12], k: MB2, l: [base_QWERTY] }
|
||||
- { p: [14, 24], k: MB3, l: [base_QWERTY] }
|
||||
- { p: [13, 14], k: MB3, l: [base_QWERTY] }
|
||||
- { p: [3, 13], k: MB4, l: [base_QWERTY] }
|
||||
- { p: [4, 14], k: MB5, l: [base_QWERTY] }
|
||||
- { p: [21, 22], k: DrgScr Tog, l: [base_QWERTY] }
|
||||
- { p: [6, 7], k: Tab, l: [base_QWERTY] }
|
||||
- { p: [22, 23], k: Enter, l: [base_QWERTY] }
|
||||
- { p: [26, 27], k: Bksp, l: [base_QWERTY] }
|
||||
- { p: [27, 28], k: Del, l: [base_QWERTY] }
|
||||
draw_config:
|
||||
small_pad: 6
|
BIN
my_keymap.png
BIN
my_keymap.png
Binary file not shown.
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 133 KiB |
|
@ -11,7 +11,6 @@ bool get_combo_must_tap(uint16_t index, combo_t *combo) {
|
|||
case MOUSE_DRGTOG:
|
||||
#endif //MOUSEKEY_ENABLEdf
|
||||
|
||||
case KEY_ESC:
|
||||
case KEY_ENT:
|
||||
case KEY_TAB:
|
||||
return true;
|
||||
|
@ -36,7 +35,6 @@ bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode
|
|||
}
|
||||
break;
|
||||
|
||||
case KEY_ESC:
|
||||
case KEY_TAB:
|
||||
if ( get_highest_layer(layer_state) == _NAVIGATION ||
|
||||
get_highest_layer(layer_state) == _SYMBOL ) {
|
||||
|
|
|
@ -1,6 +1,23 @@
|
|||
#pragma once
|
||||
#include "t4corun.h"
|
||||
|
||||
|
||||
|
||||
#if defined(MOUSEKEY_ENABLE)
|
||||
const uint16_t PROGMEM mou_btn1_combo[] = { KC_D, KC_F, COMBO_END };
|
||||
const uint16_t PROGMEM mou_btn2_combo[] = { KC_S, KC_D, COMBO_END };
|
||||
const uint16_t PROGMEM mou_btn3_combo[] = { KC_F, KC_G, COMBO_END };
|
||||
const uint16_t PROGMEM mou_btn4_combo[] = { KC_F, KC_R, COMBO_END };
|
||||
const uint16_t PROGMEM mou_btn5_combo[] = { KC_T, KC_G, COMBO_END };
|
||||
const uint16_t PROGMEM mou_drg_combo[] = { KC_X, KC_C, COMBO_END };
|
||||
#endif //MOUSEKEY_ENABLE
|
||||
|
||||
const uint16_t PROGMEM key_ent_combo[] = { KC_C, KC_V, COMBO_END };
|
||||
const uint16_t PROGMEM key_tab_combo[] = { KC_U, KC_I, COMBO_END };
|
||||
const uint16_t PROGMEM key_bspc_combo[] = { KC_M, TR_COMM, COMBO_END };
|
||||
|
||||
|
||||
|
||||
enum combos {
|
||||
|
||||
#if defined(MOUSEKEY_ENABLE)
|
||||
|
@ -12,52 +29,31 @@ enum combos {
|
|||
MOUSE_DRGTOG,
|
||||
#endif //MOUSEKEY_ENABLE
|
||||
|
||||
KEY_ESC,
|
||||
KEY_ENT,
|
||||
KEY_TAB,
|
||||
KEY_DEL,
|
||||
KEY_BSPC,
|
||||
|
||||
COMBO_LENGTH
|
||||
};
|
||||
|
||||
|
||||
//their documentation is so confusing because you don't use COMBO_LEN defining the actions
|
||||
uint16_t COMBO_LEN = COMBO_LENGTH;
|
||||
|
||||
|
||||
#if defined(MOUSEKEY_ENABLE)
|
||||
const uint16_t PROGMEM mou_btn1_combo[] = { KC_D, KC_F, COMBO_END };
|
||||
const uint16_t PROGMEM mou_btn2_combo[] = { KC_S, KC_D, COMBO_END };
|
||||
const uint16_t PROGMEM mou_btn3_combo[] = { KC_G, KC_B, COMBO_END };
|
||||
const uint16_t PROGMEM mou_btn4_combo[] = { KC_F, KC_R, COMBO_END };
|
||||
const uint16_t PROGMEM mou_btn5_combo[] = { KC_T, KC_G, COMBO_END };
|
||||
const uint16_t PROGMEM mou_drg_combo[] = { KC_X, KC_C, COMBO_END };
|
||||
#endif //MOUSEKEY_ENABLE
|
||||
|
||||
const uint16_t PROGMEM key_esc_combo[] = { KC_Q, KC_W, COMBO_END };
|
||||
const uint16_t PROGMEM key_ent_combo[] = { KC_C, KC_V, COMBO_END };
|
||||
const uint16_t PROGMEM key_tab_combo[] = { KC_U, KC_I, COMBO_END };
|
||||
const uint16_t PROGMEM key_bspc_combo[] = { KC_M, TR_COMM, COMBO_END };
|
||||
const uint16_t PROGMEM key_del_combo[] = { TR_COMM, TR_DOT, COMBO_END };
|
||||
|
||||
|
||||
combo_t key_combos[COMBO_LENGTH] = {
|
||||
|
||||
#if defined(MOUSEKEY_ENABLE)
|
||||
[MOUSE_BUTTON1] = COMBO(mou_btn1_combo, TR_BTN1),
|
||||
[MOUSE_BUTTON2] = COMBO(mou_btn2_combo, TR_BTN2),
|
||||
[MOUSE_BUTTON3] = COMBO(mou_btn3_combo, TR_BTN3),
|
||||
[MOUSE_BUTTON4] = COMBO(mou_btn4_combo, TR_BTN4),
|
||||
[MOUSE_BUTTON5] = COMBO(mou_btn5_combo, TR_BTN5),
|
||||
[MOUSE_BUTTON1] = COMBO(mou_btn1_combo, KC_BTN1),
|
||||
[MOUSE_BUTTON2] = COMBO(mou_btn2_combo, KC_BTN2),
|
||||
[MOUSE_BUTTON3] = COMBO(mou_btn3_combo, KC_BTN3),
|
||||
[MOUSE_BUTTON4] = COMBO(mou_btn4_combo, KC_BTN4),
|
||||
[MOUSE_BUTTON5] = COMBO(mou_btn5_combo, KC_BTN5),
|
||||
[MOUSE_DRGTOG] = COMBO(mou_drg_combo, TR_DRGS),
|
||||
#endif //MOUSEKEY_ENABLE
|
||||
|
||||
[KEY_ESC] = COMBO(key_esc_combo, KC_ESC),
|
||||
[KEY_ENT] = COMBO(key_ent_combo, KC_ENT),
|
||||
[KEY_TAB] = COMBO(key_tab_combo, KC_TAB),
|
||||
[KEY_DEL] = COMBO(key_del_combo, KC_DEL),
|
||||
[KEY_BSPC] = COMBO(key_bspc_combo, KC_BSPC)
|
||||
//[LYR_CONFIG] = COMBO(lyr_cfg_combo, CONFIG)
|
||||
|
||||
};
|
||||
|
||||
};
|
24
users/t4corun/features/keyoverride.c
Normal file
24
users/t4corun/features/keyoverride.c
Normal file
|
@ -0,0 +1,24 @@
|
|||
#include "keyoverride.h"
|
||||
|
||||
/*
|
||||
Key Override
|
||||
Here we will override some shifted versions of keys
|
||||
https://docs.qmk.fm/#/feature_key_overrides?id=simple-example
|
||||
|
||||
Intentionally did not convert all the override/autoshit tap holds to this format
|
||||
- Here I could type faster and be able to hold to repeat the keycodes however
|
||||
- I had tons of same finger bigrams doing trying to get ~ and :
|
||||
- I didn't feel the need to be able to repeat those symbols
|
||||
*/
|
||||
|
||||
|
||||
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 **key_overrides = (const key_override_t *[]){
|
||||
|
||||
&delete_override,
|
||||
&media_next_override,
|
||||
NULL // Null terminate the array of overrides!
|
||||
|
||||
};
|
2
users/t4corun/features/keyoverride.h
Normal file
2
users/t4corun/features/keyoverride.h
Normal file
|
@ -0,0 +1,2 @@
|
|||
#pragma once
|
||||
#include "t4corun.h"
|
|
@ -35,8 +35,8 @@ void render_layer_state(void) {
|
|||
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_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_SYMBOL), get_highest_layer(layer_state) == _SYMBOL);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_NUMBER), get_highest_layer(layer_state) == _NUMBER);
|
||||
oled_write_P(PSTR(OLED_RENDER_LAYER_CONFIG), get_highest_layer(layer_state) == _CONFIG);
|
||||
}
|
||||
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
|
||||
#define OLED_RENDER_LAYER_NAME "Layer"
|
||||
#define OLED_RENDER_LAYER_BASE " Def "
|
||||
#define OLED_RENDER_LAYER_NUMBER " Num "
|
||||
#define OLED_RENDER_LAYER_NAVIGATION " Nav "
|
||||
#define OLED_RENDER_LAYER_SYMBOL " Sym "
|
||||
#define OLED_RENDER_LAYER_NUMBER " Num "
|
||||
#define OLED_RENDER_LAYER_CONFIG " Cfg "
|
||||
|
||||
void render_crkbd_logo(void);
|
||||
|
|
|
@ -5,28 +5,32 @@ void single_tap(uint16_t key, uint16_t altkey, bool isHold) {
|
|||
}
|
||||
|
||||
void double_tap(uint16_t key, uint16_t altkey, uint32_t ms) {
|
||||
tap_code16(key);
|
||||
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);
|
||||
tap_code16(altkey);
|
||||
isShift ? tap_code16(LSFT(altkey)) : tap_code16(altkey);
|
||||
}
|
||||
|
||||
void insert_brackets(uint16_t left, uint16_t right, uint32_t ms) {
|
||||
tap_code16(left);
|
||||
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);
|
||||
tap_code16(right);
|
||||
isShift ? tap_code16(LSFT(right)) : tap_code16(right);
|
||||
wait_ms(ms);
|
||||
tap_code16(KC_LEFT);
|
||||
}
|
||||
|
||||
//here we can have the holds be more complex, like sending "" when you hold "
|
||||
// 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
|
||||
// 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);
|
||||
// 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;
|
||||
|
||||
|
@ -49,17 +53,14 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
|
|||
case TR_SQUO:
|
||||
single_tap(TAPHOLD_SQUO, isHold);
|
||||
break;
|
||||
case TR_DQUO:
|
||||
single_tap(TAPHOLD_DQUO, isHold);
|
||||
break;
|
||||
case TR_EQL:
|
||||
single_tap(TAPHOLD_EQL, isHold);
|
||||
break;
|
||||
case TR_PLUS:
|
||||
single_tap(TAPHOLD_PLUS, isHold);
|
||||
case TR_BSLS:
|
||||
single_tap(TAPHOLD_BSLS, isHold);
|
||||
break;
|
||||
case TR_PIPE:
|
||||
single_tap(TAPHOLD_PIPE, isHold);
|
||||
case TR_SLSH:
|
||||
single_tap(TAPHOLD_SLSH, isHold);
|
||||
break;
|
||||
case TR_COMM:
|
||||
single_tap(TAPHOLD_COMM, isHold);
|
||||
|
@ -73,6 +74,12 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
|
|||
case TR_EXLM:
|
||||
single_tap(TAPHOLD_EXLM, isHold);
|
||||
break;
|
||||
case TR_AT:
|
||||
single_tap(TAPHOLD_AT, isHold);
|
||||
break;
|
||||
case TR_QUES:
|
||||
single_tap(TAPHOLD_QUES, isHold);
|
||||
break;
|
||||
case TR_MINS:
|
||||
single_tap(TAPHOLD_MINS, isHold);
|
||||
break;
|
||||
|
@ -96,7 +103,7 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
|
|||
|
||||
switch(keycode) {
|
||||
|
||||
//Brackets
|
||||
// Brackets
|
||||
case TR_LCBR:
|
||||
insert_brackets(TAPHOLD_LCBR, WAIT_DELAY);
|
||||
break;
|
||||
|
@ -106,28 +113,25 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
|
|||
case TR_LBRC:
|
||||
insert_brackets(TAPHOLD_LBRC, WAIT_DELAY);
|
||||
break;
|
||||
case TR_SQUO:
|
||||
insert_brackets(TAPHOLD_SQUO, WAIT_DELAY);
|
||||
break;
|
||||
case TR_DQUO:
|
||||
insert_brackets(TAPHOLD_DQUO, WAIT_DELAY);
|
||||
break;
|
||||
case TR_LPRN:
|
||||
insert_brackets(TAPHOLD_LPRN, WAIT_DELAY);
|
||||
break;
|
||||
case TR_SQUO:
|
||||
insert_brackets(TAPHOLD_SQUO, WAIT_DELAY);
|
||||
break;
|
||||
|
||||
//double tap
|
||||
// double tap
|
||||
case TR_EQL:
|
||||
double_tap(TAPHOLD_EQL, WAIT_DELAY);
|
||||
break;
|
||||
case TR_PLUS:
|
||||
double_tap(TAPHOLD_PLUS, WAIT_DELAY);
|
||||
case TR_BSLS:
|
||||
double_tap(TAPHOLD_BSLS, WAIT_DELAY);
|
||||
break;
|
||||
case TR_PIPE:
|
||||
double_tap(TAPHOLD_PIPE, WAIT_DELAY);
|
||||
case TR_SLSH:
|
||||
double_tap(TAPHOLD_SLSH, WAIT_DELAY);
|
||||
break;
|
||||
|
||||
//custom action
|
||||
// custom override without holding shift
|
||||
case TR_COMM:
|
||||
single_tap(TAPHOLD_COMM, isHold);
|
||||
break;
|
||||
|
@ -138,10 +142,16 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
|
|||
single_tap(TAPHOLD_PERC, isHold);
|
||||
break;
|
||||
case TR_EXLM:
|
||||
double_tap(TAPHOLD_NEQL, WAIT_DELAY);
|
||||
single_tap(TAPHOLD_EXLM, isHold);
|
||||
break;
|
||||
case TR_AT:
|
||||
single_tap(TAPHOLD_AT, isHold);
|
||||
break;
|
||||
case TR_QUES:
|
||||
single_tap(TAPHOLD_QUES, isHold);
|
||||
break;
|
||||
|
||||
//simulates auto-shift
|
||||
// simulates auto-shift
|
||||
case TR_MINS:
|
||||
single_tap(TAPHOLD_MINS, isHold);
|
||||
break;
|
||||
|
@ -154,6 +164,7 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode) {
|
|||
case TR_QUOT:
|
||||
single_tap(TAPHOLD_QUOT, isHold);
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -13,30 +13,28 @@ bool process_tap_hold_key(keyrecord_t* record, uint16_t keycode);
|
|||
* and easier to maintain
|
||||
*/
|
||||
|
||||
//Brackets: open and close brackets and put the cursor inside
|
||||
// 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_SQUO KC_QUOT, KC_QUOT
|
||||
#define TAPHOLD_DQUO KC_DQUO, KC_DQUO
|
||||
#define TAPHOLD_LPRN KC_LPRN, KC_RPRN
|
||||
#define TAPHOLD_SQUO KC_QUOT, KC_QUOT
|
||||
|
||||
//double tap
|
||||
// double tap
|
||||
#define TAPHOLD_EQL KC_EQL, KC_EQL
|
||||
#define TAPHOLD_PLUS KC_PLUS, KC_PLUS
|
||||
#define TAPHOLD_PIPE KC_PIPE, KC_PIPE
|
||||
#define TAPHOLD_BSLS KC_BSLS, KC_BSLS
|
||||
#define TAPHOLD_SLSH KC_SLSH, KC_SLSH
|
||||
|
||||
//Custom: things like overriding default shifted key
|
||||
// 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
|
||||
#define TAPHOLD_EXLM KC_EXLM, KC_EXLM
|
||||
#define TAPHOLD_NEQL KC_EXLM, KC_EQL
|
||||
#define TAPHOLD_EXLM KC_EXLM, KC_DLR
|
||||
#define TAPHOLD_AT KC_AT, KC_AMPR
|
||||
#define TAPHOLD_QUES KC_QUES, KC_ASTR
|
||||
|
||||
//auto shift
|
||||
// auto shift
|
||||
#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
|
||||
|
||||
|
||||
#define TAPHOLD_QUOT KC_QUOT, KC_DQUO
|
|
@ -3,9 +3,6 @@
|
|||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
|
||||
case NAV_0:
|
||||
return TAPPING_TERM - 60;
|
||||
|
||||
default:
|
||||
//uprintf("tapping term: %d \n", TAPPING_TERM);
|
||||
return TAPPING_TERM;
|
||||
|
|
|
@ -32,15 +32,17 @@ AUDIO_ENABLE = no
|
|||
CAPS_WORD_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
COMBO_ENABLE = yes
|
||||
KEY_OVERRIDE_ENABLE = yes
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# include my code that will be common across all my keyboards
|
||||
|
||||
SRC += \
|
||||
t4corun.c \
|
||||
features/tapping.c \
|
||||
features/taphold.c \
|
||||
features/capsword.c \
|
||||
SRC += \
|
||||
t4corun.c \
|
||||
features/tapping.c \
|
||||
features/taphold.c \
|
||||
features/capsword.c \
|
||||
features/keyoverride.c \
|
||||
|
||||
INTROSPECTION_KEYMAP_C += features/combo.c
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ static uint8_t current_base_layer = _DEFAULT_LAYER_1;
|
|||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
|
||||
state = update_tri_layer_state(state, _NAVIGATION, _NUMBER, _SYMBOL);
|
||||
state = update_tri_layer_state(state, _NAVIGATION, _SYMBOL, _NUMBER);
|
||||
return state;
|
||||
|
||||
}
|
||||
|
@ -41,6 +41,58 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
}
|
||||
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://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
|
||||
|
@ -49,14 +101,15 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|||
case TR_LBRC:
|
||||
case TR_LPRN:
|
||||
case TR_SQUO:
|
||||
case TR_DQUO:
|
||||
case TR_EQL:
|
||||
case TR_PLUS:
|
||||
case TR_PIPE:
|
||||
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:
|
||||
|
|
|
@ -9,8 +9,8 @@ enum layers {
|
|||
_COLEMAK_DH,
|
||||
_GAME,
|
||||
_NAVIGATION,
|
||||
_NUMBER,
|
||||
_SYMBOL,
|
||||
_NUMBER,
|
||||
_CONFIG
|
||||
};
|
||||
|
||||
|
@ -21,16 +21,17 @@ enum keycodes {
|
|||
TH_LBRC,
|
||||
TH_LPRN,
|
||||
TH_SQUO,
|
||||
TH_DQUO,
|
||||
|
||||
TH_EQL,
|
||||
TH_PLUS,
|
||||
TH_PIPE,
|
||||
TH_BSLS,
|
||||
TH_SLSH,
|
||||
|
||||
TH_COMM,
|
||||
TH_DOT,
|
||||
TH_PERC,
|
||||
TH_EXLM,
|
||||
TH_AT,
|
||||
TH_QUES,
|
||||
|
||||
TH_MINS,
|
||||
TH_GRV,
|
||||
|
@ -48,8 +49,7 @@ enum keycodes {
|
|||
|
||||
// momentary layer
|
||||
#define NAV MO(_NAVIGATION)
|
||||
#define NAV_0 LT(_NAVIGATION, KC_0)
|
||||
#define NUM MO(_NUMBER)
|
||||
#define SYM MO(_SYMBOL)
|
||||
#define CONFIG MO(_CONFIG)
|
||||
|
||||
// Windows Shortcuts
|
||||
|
@ -79,71 +79,42 @@ enum keycodes {
|
|||
#define TR_LGUI OSM(MOD_LGUI)
|
||||
|
||||
|
||||
//tap hoLd. These will be intercepted and overridden. The LT will be ignored
|
||||
#define TR_LCBR LT(_DEFAULT_LAYER_1, TH_LCBR) // bracket behvavior
|
||||
// tap hoLd. These will be intercepted and overridden. The LT will be ignored
|
||||
#define TR_LCBR LT(_DEFAULT_LAYER_1, TH_LCBR) // bracket behavior
|
||||
#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_SQUO LT(_DEFAULT_LAYER_1, TH_SQUO)
|
||||
#define TR_DQUO LT(_DEFAULT_LAYER_1, TH_DQUO)
|
||||
|
||||
#define TR_EQL LT(_DEFAULT_LAYER_1, TH_EQL) // double tap
|
||||
#define TR_PLUS LT(_DEFAULT_LAYER_1, TH_PLUS)
|
||||
#define TR_PIPE LT(_DEFAULT_LAYER_1, TH_PIPE)
|
||||
#define TR_BSLS LT(_DEFAULT_LAYER_1, TH_BSLS)
|
||||
#define TR_SLSH LT(_DEFAULT_LAYER_1, TH_SLSH)
|
||||
|
||||
#define TR_COMM LT(_DEFAULT_LAYER_1, TH_COMM) // custom behavior
|
||||
#define TR_DOT LT(_DEFAULT_LAYER_1, TH_DOT)
|
||||
#define TR_PERC LT(_DEFAULT_LAYER_1, TH_PERC)
|
||||
#define TR_EXLM LT(_DEFAULT_LAYER_1, TH_EXLM)
|
||||
#define TR_AT LT(_DEFAULT_LAYER_1, TH_AT)
|
||||
#define TR_QUES LT(_DEFAULT_LAYER_1, TH_QUES)
|
||||
|
||||
// basically auto shift
|
||||
#define TR_MINS LT(_DEFAULT_LAYER_1, TH_MINS)
|
||||
#define TR_MINS LT(_DEFAULT_LAYER_1, TH_MINS) // auto shift
|
||||
#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(MOUSEKEY_ENABLE)
|
||||
|
||||
# define TR_MWHU KC_WH_U
|
||||
# define TR_MWHD KC_WH_D
|
||||
|
||||
# define TR_BTN1 KC_BTN1
|
||||
# define TR_BTN2 KC_BTN2
|
||||
# define TR_BTN3 KC_BTN3
|
||||
# define TR_BTN4 KC_BTN4
|
||||
# define TR_BTN5 KC_BTN5
|
||||
|
||||
# if defined(KEYBOARD_bastardkb_charybdis_3x5)
|
||||
//these codes are defined in charybdis.h
|
||||
#if defined(KEYBOARD_bastardkb_charybdis_3x5)
|
||||
//these mouse codes are defined in charybdis.h
|
||||
# define TR_SNIP SNIPING
|
||||
# define TR_DRGS DRG_TOG
|
||||
# define TR_SDPI S_D_MOD //sniping dpi
|
||||
# define TR_PDPI DPI_MOD //pointer dpi
|
||||
# else
|
||||
#else
|
||||
# define TR_SNIP ___x___
|
||||
# define TR_DRGS PN_DRGS //use host status for ploopy nano drag scroll
|
||||
# define TR_SDPI ___x___
|
||||
# define TR_PDPI PN_PDPI //use host status for ploopy nano dpi switch
|
||||
# endif //KEYBOARD_bastardkb_charybdis_3x5
|
||||
|
||||
#else
|
||||
|
||||
# define TR_MWHU ___x___
|
||||
# define TR_MWHD ___x___
|
||||
|
||||
# define TR_BTN1 ___x___
|
||||
# define TR_BTN2 ___x___
|
||||
# define TR_BTN3 ___x___
|
||||
# define TR_BTN4 ___x___
|
||||
# define TR_BTN5 ___x___
|
||||
|
||||
# define TR_SNIP ___x___
|
||||
# define TR_DRGS ___x___
|
||||
# define TR_SDPI ___x___
|
||||
# define TR_PDPI ___x___
|
||||
|
||||
#endif //MOUSEKEY_ENABLE
|
||||
#endif //KEYBOARD_bastardkb_charybdis_3x5
|
||||
|
||||
|
||||
#if defined(DYNAMIC_MACRO_ENABLE)
|
||||
|
@ -154,6 +125,7 @@ enum keycodes {
|
|||
# define TR_DMP1 ___x___
|
||||
#endif //DYNAMIC_MACRO_ENABLE
|
||||
|
||||
|
||||
#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
|
||||
# define TR_RHUI RGB_HUI
|
||||
# define TR_RSAI RGB_SAI
|
||||
|
@ -173,7 +145,6 @@ enum keycodes {
|
|||
#endif //RGB_MATRIX_ENABLE || RGBLIGHT_ENABLE
|
||||
|
||||
|
||||
|
||||
#define _DEFAULT_LAYER_1 FIRST_DEFAULT_LAYER
|
||||
#define _DEFAULT_LAYER_2 (FIRST_DEFAULT_LAYER + 1)
|
||||
#define _DEFAULT_LAYER_3 (FIRST_DEFAULT_LAYER + 2)
|
||||
|
@ -185,61 +156,60 @@ enum keycodes {
|
|||
#define _SCAG_MODS________________________ TR_LSFT, TR_LCTL, TR_LALT, TR_LGUI
|
||||
#define _UCCPR_L___________________________________ SC_UNDO, SC_CUT, SC_COPY, SC_PAST, SC_REDO
|
||||
|
||||
#define _BASE_L4_________________ ___x___, NUM, TR_LSFT
|
||||
#define _BASE_L4_________________ ___x___, SYM, TR_LSFT
|
||||
#define _BASE_R4_________________ KC_SPC, NAV, KC_MUTE
|
||||
#define _BASE_ZERO_R4____________ KC_SPC, NAV_0, KC_MUTE
|
||||
#define _LAYER_TRANS_____________ ___x___, _______, ___x___
|
||||
|
||||
|
||||
//___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___,
|
||||
//___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___,
|
||||
|
||||
#define LAYER_QWERTY \
|
||||
#define LAYER_QWERTY \
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
|
||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, TR_QUOT, \
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TR_COMM, TR_DOT, TR_MINS, \
|
||||
_BASE_L4_________________, _BASE_R4_________________
|
||||
|
||||
|
||||
#define LAYER_COLEMAK_DH \
|
||||
#define LAYER_COLEMAK_DH \
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, TR_QUOT, \
|
||||
KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, \
|
||||
KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, TR_COMM, TR_DOT, TR_MINS, \
|
||||
_BASE_L4_________________, _BASE_R4_________________
|
||||
|
||||
|
||||
#define LAYER_GAME \
|
||||
#define LAYER_GAME \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_7, KC_8, KC_9, KC_ESC, \
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_4, KC_5, KC_6, KC_GRV, \
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_1, KC_2, KC_3, CM_TOGG, \
|
||||
KC_ENT, KC_SPC, KC_LSFT, _BASE_ZERO_R4____________
|
||||
KC_ENT, KC_SPC, KC_LSFT, _BASE_R4_________________
|
||||
|
||||
|
||||
#define LAYER_NAVIGATION \
|
||||
___x___, KC_HOME, KC_UP, KC_END, KC_PGUP, ___x___, ___x___, TR_SNIP, TR_SDPI, TR_PDPI, \
|
||||
#define LAYER_NAVIGATION \
|
||||
___x___, KC_HOME, KC_UP, KC_END, KC_PGUP, ___x___, ___x___, KC_CAPS, KC_PSCR, CONFIG, \
|
||||
___x___, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, ___x___, _SCAG_MODS________________________, \
|
||||
_UCCPR_L___________________________________, ___x___, KC_APP, KC_VOLD, KC_VOLU, KC_MUTE, \
|
||||
ZOOMRST, _______, KC_SPC, _LAYER_TRANS_____________
|
||||
_UCCPR_L___________________________________, ___x___, KC_APP, TR_SNIP, TR_SDPI, TR_PDPI, \
|
||||
ZOOMRST, SYM, KC_ENT, _LAYER_TRANS_____________
|
||||
|
||||
|
||||
#define LAYER_NUMBER \
|
||||
CONFIG, SC_SNIP, SC_FILE, ___x___, ___x___, ___x___, KC_7, KC_8, KC_9, KC_COMM, \
|
||||
_GACS_MODS________________________, ___x___, ___x___, KC_4, KC_5, KC_6, KC_DOT, \
|
||||
_UCCPR_L___________________________________, ___x___, KC_1, KC_2, KC_3, TR_MINS, \
|
||||
_LAYER_TRANS_____________, _BASE_ZERO_R4____________
|
||||
#define LAYER_SYMBOL \
|
||||
KC_ESC, KC_BTN3, KC_BTN2, KC_BTN1, TR_GRV, TR_EQL, KC_HASH, TR_LABK, KC_RABK, TR_PERC, \
|
||||
_GACS_MODS________________________, TR_SCLN, TR_AT, TR_QUES, TR_LBRC, KC_RBRC, TR_SQUO, \
|
||||
_UCCPR_L___________________________________, TR_BSLS, TR_SLSH, TR_LPRN, KC_RPRN, TR_MINS, \
|
||||
_LAYER_TRANS_____________, TR_EXLM, _______, ___x___
|
||||
|
||||
|
||||
#define LAYER_SYMBOL \
|
||||
KC_CAPS, KC_PSCR, KC_AT, KC_DLR, TR_GRV, TR_EQL, KC_HASH, KC_ASTR, ___x___, TR_DQUO, \
|
||||
KC_AMPR, TR_LCBR, KC_RCBR, TR_PIPE, TR_SCLN, TR_PLUS, KC_QUES, TR_LBRC, KC_RBRC, TR_SQUO, \
|
||||
TR_PERC, TR_LABK, KC_RABK, KC_BSLS, TR_EXLM, ___x___, KC_SLSH, TR_LPRN, KC_RPRN, TR_MINS, \
|
||||
#define LAYER_NUMBER \
|
||||
KC_F7, KC_F5, KC_F3, KC_F1, KC_F9, KC_F8, KC_F10, KC_F2, KC_F4, KC_F6, \
|
||||
KC_7, KC_5, KC_3, KC_1, KC_9, KC_8, KC_0, KC_2, KC_4, KC_6, \
|
||||
KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, KC_F11, KC_F12, TR_COMM, TR_DOT, TR_MINS, \
|
||||
_LAYER_TRANS_____________, _LAYER_TRANS_____________
|
||||
|
||||
|
||||
#define LAYER_CONFIG \
|
||||
_______, ___x___, ___x___, ___x___, ___x___, ___x___, KC_F7, KC_F8, KC_F9, KC_F10, \
|
||||
___x___, ___x___, ___x___, TR_LSFT, ___x___, ___x___, KC_F4, KC_F5, KC_F6, KC_F11, \
|
||||
TR_RHUI, TR_RSAI, TR_RVAI, TR_RSPI, ___x___, ___x___, KC_F1, KC_F2, KC_F3, KC_F12, \
|
||||
TR_RTOG, EE_CLR, QK_BOOT, TR_DMP1, TR_DMR1, BASELYR
|
||||
#define LAYER_CONFIG \
|
||||
_NONE_5____________________________________, ___x___, ___x___, EE_CLR, QK_BOOT, _______, \
|
||||
_NONE_5____________________________________, ___x___, TR_LSFT, ___x___, ___x___, TR_RMOD, \
|
||||
_NONE_5____________________________________, TR_RTOG, TR_RHUI, TR_RSAI, TR_RVAI, TR_RSPI, \
|
||||
BASELYR, ___x___, ___x___, TR_DMP1, TR_DMR1, TR_RTOG
|
||||
|
||||
/*
|
||||
If I was going to combine number and symbols together, it'd look like this
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue