Userspace for the open-source QMK keyboard firmware.
Find a file
Victor 68d921efe7
Point my userspace at a clone of .github
- this is where I keep my custom build actions (nontree)
2024-04-14 14:51:28 -05:00
.devcontainer Add support for devcontainers. (#6) 2024-02-23 22:35:45 +11:00
.github/workflows Point my userspace at a clone of .github 2024-04-14 14:51:28 -05:00
.vscode Add support for devcontainers. (#6) 2024-02-23 22:35:45 +11:00
keyboards Adjusting keymap to incorporate encoders 2024-04-14 09:57:45 -05:00
layouts Initial structure. 2023-11-22 15:22:43 +11:00
users/t4corun Adjusting keymap to incorporate encoders 2024-04-14 09:57:45 -05:00
.clang-format Initial structure. 2023-11-22 15:22:43 +11:00
.clangd Initial structure. 2023-11-22 15:22:43 +11:00
.editorconfig Initial structure. 2023-11-22 15:22:43 +11:00
.gitignore Migrating over userspace 2024-04-01 22:26:41 -05:00
LICENSE Initial structure. 2023-11-22 15:22:43 +11:00
Makefile Initial structure. 2023-11-22 15:22:43 +11:00
qmk.json Forgot to add the rollow back to the qmk.json file 2024-04-11 09:21:31 -05:00
qmk_nontree.json Fixed a bunch of stuff 2024-04-11 23:45:44 -05:00
README.md Adjusting keymap to incorporate encoders 2024-04-14 09:57:45 -05:00

T4CORUN Userspace

My userspace for building QMK firmware via GitHub Actions. This does not require a local build environment where files are placed within keyboard subfolders.

The custom layout optimizes for programming (SQL, Powershell, C) and minimizes holds for comfort. It started from Manna Harbor Miryoku and took heavy influence from Jonas Hietala T-34

Features

Layout Wrapper Macros

A single keymap layout can be shared with multiple keyboards by using C preprocessor macros. These macros are referenced in the keyboard JSON files, and the build process will expand them into a transient keymap.c file during compile time.

In this userspace, the base split 3x5_3 layout can be adapted for other split keyboards by expanding it with macros. For example, there is a wrapper that will add extra columns to the base layout for a Corne's 42-key 3x6_3 layout.

Tri-Layer

Hold both thumb momentary layer keys NAV and SYM to access the _SYMBOL layer

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.

Caps Word

Caps Word enables temporary all-caps typing without holding shift. Useful to typing programming variables. Tap shift twice to enable Caps Word. It cancels when any key is pressed except

  • numbers 0-9
  • backspace
  • delete
  • underscore

Tap-Holds

Certain keys have different behaviors when held vs tapped allowing commonly typed characters or auto-shifting certain keycodes

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_PERC % ^
TR_COMM , ( enables parenthesis on base layer
TR_DOT . )

Update this table later

Optional Features

These features can be disabled due to MCU size constraints or because certain keyboards do not support it

Pointing Device

Enables trackball functionality on certain boards (e.g., Ploopy Nano and Bastardkb Charybdis Nano). The board definitions enables unique functionality:

  • Charybdis Nano: "Sniper" precision tracking, drag Scroll, DPI changes
  • Ploopy Nano: Ties with Host Status LED macros to enable drag scroll, dpi changes, and bootloader

Note: MOUSEKEY_ENABLE do not need to be enabled in tandem with this to get the mouse buttons.

Mouse Keys

Enables mouse emulation for all boards. Required when using the Ploopy Nano as that has no mouse buttons.

Hold a to enter _MOUSE layer. Use right side directional pad (e.g. IJKL) to move the cursor and left side thumb keys for basic mouse clicking.

RGB Matrix

Taste the rainbow for boards with RGB LEDs and large MCU memory footprints. Enables RGB lighting effects and layer/host status indicators. Review the keyboard files to identify the key position for each LED and update the preprocessor definitions in config\rgbmatrix_config.h

Known Issue Commented out logic for layer/host status indicator LEDs as it caused random flickering on split side boards

OLED

Enables keyboard status visualization. Shows currently selected layer, active modifiers, and host status (e.g, Num / Caps / Scroll Lock)

Combos

Enables simultaneous pressing of key combinations to get another. Handy when there are not enough keys on the keyboard

Note Framework is present but disabled during redesign

Layout

This is the keymap designed for split 3x5 layout, two thumb keys on each side, and dual encoders. Emphasis on:

  • Releasing all keys always brings you back to base layer
  • Outside thumb keys are encoder clicks
  • Keeping certain keys consistent on all layers for better muscle memory
  • Numbers and function keys are positioned similarly
  • 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

Additional keys may be mapped if present. Check each keyboard's keymap.c for more information

╭──────┬──────┬──────┬──────┬──────╮         ╭──────┬──────┬──────┬──────┬──────╮
│ q    │ w    │ e    │ r    │ t    │         │ y    │ u    │ i    │ o    │ p    │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ a mou│ s    │ d    │ f    │ g    │ qwerty  │ h    │ j    │ k    │ l    │ ' "  │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ z    │ x    │ c    │ v    │ b    │         │ n    │ m    │ , (  │ . )  │ - _  │
╰──────┴──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┴──────╯
 enc: mwheel  │      │ num  │ mou  │         │ spc  │ nav  │ mute │ enc: volume
              ╰──────┴──────┴──────╯         ╰──────┴──────┴──────╯

╭──────┬──────┬──────┬──────┬──────╮         ╭──────┬──────┬──────┬──────┬──────╮
│ q    │ w    │ f    │ p    │ b    │         │ j    │ l    │ u    │ y    │ o    │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ a mou│ r    │ s    │ t    │ g    │ colemak │ m    │ n    │ e    │ i    │ ' "  │
├──────┼──────┼──────┼──────┼──────┤   dh    ├──────┼──────┼──────┼──────┼──────┤
│ z    │ x    │ c    │ d    │ v    │         │ k    │ h    │ , (  │ . )  │ - _  │
╰──────┴──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┴──────╯
 enc: mwheel  │      │ num  │ mou  │         │ spc  │ nav  │ mute │ enc: volume
              ╰──────┴──────┴──────╯         ╰──────┴──────┴──────╯

Notes:
- swapped o and repeat on this keymap to keep repeat key in the same position across layers

╭──────┬──────┬──────┬──────┬──────╮         ╭──────┬──────┬──────┬──────┬──────╮
│ tab  │ q    │ w    │ e    │ r    │         │      │      │      │      │      │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ gnum │ a    │ s    │ d    │ f    │  game   │      │      │      │      │      │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ z    │ x    │ c    │ v    │ b    │         │      │      │      │      │      │
╰──────┴──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┴──────╯
 enc: mwheel  │      │ shft │ spc  │         │ spc  │ nav  │ mute │ enc: volume
              ╰──────┴──────┴──────╯         ╰──────┴──────┴──────╯

╭──────┬──────┬──────┬──────┬──────╮         ╭──────┬──────┬──────┬──────┬──────╮
│ esc  │ home │ up   │ end  │ pgup │         │ ins  │      │ app  │      │ cfg  │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│      │ left │ down │ rght │ pgdn │   nav   │ bksp │ shft │ ctrl │ alt  │ gui  │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ undo │ cut  │ copy │ pste │ redo │         │ del  │ tab  │ vol- │ vol+ │ mute │
╰──────┴──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┴──────┴──────╯
 enc: zoom    │ zrst │ num  │ ent  │         │      │ nav  │      │ enc: none
              ╰──────┴──────┴──────╯         ╰──────┴──────┴──────╯

Notes:
- zrst - Ctrl + 0 to Zoom Reset

╭──────┬──────┬──────┬──────┬──────╮         ╭──────┬──────┬──────┬──────┬──────╮
│ esc  │ snip │ file │ func │ ` ~  │         │ ent  │ 7    │ 8    │ 9    │ tab  │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ gui  │ alt  │ ctrl │ shft │ ; :  │ numbers │ bksp │ 4    │ 5    │ 6    │ .    │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ undo │ cut  │ copy │ pste │ redo │         │ del  │ 1    │ 2    │ 3    │ - _  │
╰──────┴──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┴──────╯
 enc: none    │      │ sym  │      │         │ spc  │ 0 nav│      │ enc: ← →
              ╰──────┴──────┴──────╯         ╰──────┴──────┴──────╯

╭──────┬──────┬──────┬──────┬──────╮         ╭──────┬──────┬──────┬──────┬──────╮
│ esc  │      │ @    │ $    │ ` ~  │         │ = +  │ #    │ *    │      │ " "" │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ &    │ { {} │ }    │ |    │ ; :  │ symbols │ bksp │ ?    │ [ [] │ ]    │ ' '' │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ % ^  │ < <> │ >    │ \    │ !    │         │ del  │ /    │ , () │ . )  │ - _  │
╰──────┴──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┴──────╯
 enc: none    │      │ sym  │      │         │      │ nav  │      │ enc: none
              ╰──────┴──────┴──────╯         ╰──────┴──────┴──────╯

Notes:
- tri layer: Activate th the symbol layer by holding down symbol and navigation

╭──────┬──────┬──────┬──────┬──────╮         ╭──────┬──────┬──────┬──────┬──────╮
│ mply2│ mrec2│      │ func │      │         │ pscr │ F7   │ F8   │ F9   │ F10  │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│      │      │      │      │ scrl │  func   │ caps │ F4   │ F5   │ F6   │ F11  │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│      │      │      │      │      │         │ paus │ F1   │ F2   │ F3   │ F12  │
╰──────┴──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┴──────╯
  enc: none   │      │ sym  │      │         │ mply1│ mrec1│      │ enc: ↑ ↓
              ╰──────┴──────┴──────╯         ╰──────┴──────┴──────╯

╭──────┬──────┬──────┬──────┬──────╮         ╭──────┬──────┬──────┬──────┬──────╮
│      │ btn5 │ btn4 │ btn3 │      │         │ whup │      │ mouu │      │      │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ mou  │ alt  │ ctrl │ shft │      │  mouse  │ whdn │ moul │ moud │ mour │      │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│      │      │      │ drgs │ snip │         │ sdpi │ pdpi │      │      │      │
╰──────┴──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┴──────╯
  enc:mwheel  │      │ btn1 │ btn2 │         │      │      │      │ enc: none
              ╰──────┴──────┴──────╯         ╰──────┴──────┴──────╯

Notes:
- drgs on non Charybdis Nano boards will trigger drag scrolling on Ploopy Nano
- pdpi on non Charybdis Nano boards will cycle Ploopy Nano DPI settings
- both together will enter bootlaoder on Ploopy Nano

╭──────┬──────┬──────┬──────┬──────╮         ╭──────┬──────┬──────┬──────┬──────╮
│      │ esc  │ `    │ g    │ t    │         │      │      │      │      │      │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ gnum │ 1    │ 2    │ 3    │ 4    │  game   │      │      │      │      │      │
├──────┼──────┼──────┼──────┼──────┤    num  ├──────┼──────┼──────┼──────┼──────┤
│      │ 5    │ 6    │ 7    │ 8    │         │      │      │      │      │      │
╰──────┴──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┴──────╯
 end: mwheel  │      │ alt  │ ctr  │         │      │ nav  │ mute │ enc: volume
              ╰──────┴──────┴──────╯         ╰──────┴──────┴──────╯

╭──────┬──────┬──────┬──────┬──────╮         ╭──────┬──────┬──────┬──────┬──────╮
│      │      │      │      │      │         │ eeclr│ rboot│ boot │      │ cfg  │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│rgbtog│rgbMod│      │      │      │ config  │ blyr │ shft │ ctrl │ alt  │ gui  │
├──────┼──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┼──────┤
│ hue+ │ sat+ │ vib+ │ spd+ │      │         │      │      │      │      │      │
╰──────┴──────┼──────┼──────┼──────┤         ├──────┼──────┼──────┼──────┴──────╯
 enc: none    │      │      │      │         │      │ nav  │      │ enc: none
              ╰──────┴──────┴──────╯         ╰──────┴──────┴──────╯

notes: 
- blyr - toggles between the three base layers: qwerty, colemakdh, game

## Target Keyboards

All boards use my keymaps unless noted

- Ploopy Nano: `lkbm` keymap
- Bastardkb Charybdis Nano 3x5
- Crkbd 3x6
- Planck Rev6
- Ferris Swoop
- Barbell Rollow (non-tree)
- DZRGB60v2 (coming)
- Geist KLOR (coming)

## Links

- [qmk documentation](https://docs.qmk.fm/#/)
- [qmk/awesome-userspaces Github](https://github.com/qmk/awesome-userspaces?tab=readme-ov-file). Links to fantastic userspaces to draw inspiration from, such as Drashna's