Document features and layers
parent
49a657ebb4
commit
e5a33a8e62
5 changed files with 371 additions and 1 deletions
84
Autocorrect.md
Normal file
84
Autocorrect.md
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
# Autocorrect
|
||||||
|
|
||||||
|
Automatically fixes common typing mistakes in real-time. Uses Pascal Getreuer's [400-entry autocorrection dictionary](https://getreuer.info/posts/keyboards/autocorrection/index.html) for frequently mistyped words, reducing the need for manual backspacing and retyping.
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
|
||||||
|
The autocorrect feature monitors your keystrokes and automatically replaces common typos as you type. Corrections happen instantly and invisibly.
|
||||||
|
|
||||||
|
## Word-Start Corrections
|
||||||
|
|
||||||
|
Some corrections require a word boundary before them (indicated by `:` prefix). These only trigger at the start of a word:
|
||||||
|
|
||||||
|
| Typo | Correction |
|
||||||
|
|----------|------------|
|
||||||
|
| `:htere` | `there` |
|
||||||
|
| `:thier` | `their` |
|
||||||
|
| `:hwihc` | `which` |
|
||||||
|
| `:owudl` | `would` |
|
||||||
|
| `:htink` | `think` |
|
||||||
|
| `:goign` | `going` |
|
||||||
|
|
||||||
|
## Common Corrections
|
||||||
|
|
||||||
|
### Frequent Words
|
||||||
|
|
||||||
|
| Typo | Correction |
|
||||||
|
|------------|------------|
|
||||||
|
| `abbout` | `about` |
|
||||||
|
| `abotu` | `about` |
|
||||||
|
| `woudl` | `would` |
|
||||||
|
| `coudl` | `could` |
|
||||||
|
| `shoudl` | `should` |
|
||||||
|
| `whcih` | `which` |
|
||||||
|
| `whihc` | `which` |
|
||||||
|
| `teh` | `the` |
|
||||||
|
|
||||||
|
### Common Mistakes
|
||||||
|
|
||||||
|
| Typo | Correction |
|
||||||
|
|------------|------------|
|
||||||
|
| `peaple` | `people` |
|
||||||
|
| `peopel` | `people` |
|
||||||
|
| `peolpe` | `people` |
|
||||||
|
| `becasue` | `because` |
|
||||||
|
| `becuase` | `because` |
|
||||||
|
| `beacuse` | `because` |
|
||||||
|
| `thikn` | `think` |
|
||||||
|
| `thnigs` | `things` |
|
||||||
|
| `aroud` | `around` |
|
||||||
|
| `arround` | `around` |
|
||||||
|
| `alwasy` | `always` |
|
||||||
|
| `alwyas` | `always` |
|
||||||
|
| `anohter` | `another` |
|
||||||
|
| `beween` | `between` |
|
||||||
|
| `bewteen` | `between` |
|
||||||
|
|
||||||
|
### Positional Typos
|
||||||
|
|
||||||
|
| Typo | Correction |
|
||||||
|
|------------|------------|
|
||||||
|
| `realy` | `really` |
|
||||||
|
| `raelly` | `really` |
|
||||||
|
| `littel` | `little` |
|
||||||
|
| `befoer` | `before` |
|
||||||
|
| `bedore` | `before` |
|
||||||
|
| `beeing` | `being` |
|
||||||
|
| `almsot` | `almost` |
|
||||||
|
| `chnage` | `change` |
|
||||||
|
| `chekc` | `check` |
|
||||||
|
| `childen` | `children` |
|
||||||
|
| `claer` | `clear` |
|
||||||
|
| `comapny` | `company` |
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
```
|
||||||
|
Type: "I htink this is graet" → "I think this is great"
|
||||||
|
Type: "peaple aroud the world" → "people around the world"
|
||||||
|
Type: "becuase I shoudl check" → "because I should check"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
|
||||||
|
For the complete dictionary of all 400 corrections, see our [autocorrect_data.h](../qmk_userspace/features/autocorrect_data.h).
|
||||||
53
Combos.md
Normal file
53
Combos.md
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
# Combos
|
||||||
|
|
||||||
|
Press multiple keys simultaneously to output different characters or trigger actions. Enables access to numbers, symbols, and commands without leaving the home position.
|
||||||
|
|
||||||
|
Inspired by Jonas Hietala's [T-34 keyboard layout](https://www.jonashietala.se/series/t-34/).
|
||||||
|
|
||||||
|
## Vertical Numbers
|
||||||
|
|
||||||
|
Press home row and upper row simultaneously for the column number:
|
||||||
|
|
||||||
|
| Combo | Output | Combo | Output |
|
||||||
|
|--------------|--------|--------------|--------|
|
||||||
|
| `W` + `C` | `1` | `Z` + `M` | `6` |
|
||||||
|
| `L` + `R` | `2` | `F` + `N` | `7` |
|
||||||
|
| `Y` + `S` | `3` | `O` + `E` | `8` |
|
||||||
|
| `P` + `T` | `4` | `U` + `I` | `9` |
|
||||||
|
| `B` + `G` | `5` | `'` + `A` | `0` |
|
||||||
|
|
||||||
|
## Home Row Shortcuts
|
||||||
|
|
||||||
|
### Left Hand
|
||||||
|
|
||||||
|
| Combo | Output | Description |
|
||||||
|
|--------------|------------------|------------------|
|
||||||
|
| `R` + `S` | `Tab` | Tab key |
|
||||||
|
| `S` + `T` | `Ctrl+Backspace` | Delete word |
|
||||||
|
|
||||||
|
### Right Hand
|
||||||
|
|
||||||
|
| Combo | Output | Description |
|
||||||
|
|--------------|-----------|--------------|
|
||||||
|
| `N` + `E` | `Escape` | Escape key |
|
||||||
|
| `E` + `I` | `Enter` | Enter key |
|
||||||
|
|
||||||
|
## Bottom Row Shortcuts
|
||||||
|
|
||||||
|
### Left Hand
|
||||||
|
|
||||||
|
| Combo | Output | Description |
|
||||||
|
|--------------|------------|---------------------|
|
||||||
|
| `J` + `V` | `:` | Vim command mode |
|
||||||
|
| `V` + `D` | `Gui+A` | XMonad prefix |
|
||||||
|
|
||||||
|
### Right Hand
|
||||||
|
|
||||||
|
| Combo | Output | Description |
|
||||||
|
|--------------|------------|---------------------|
|
||||||
|
| `H` + `/` | `Alt+A` | WezTerm prefix |
|
||||||
|
| `/` + `,` | `\` | Escape sequences |
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
|
||||||
|
For the complete implementation, see our [combos.def](../qmk_userspace/keyboards/ferris/sweep/keymaps/sajenim/combos.def).
|
||||||
42
Home.md
42
Home.md
|
|
@ -1 +1,43 @@
|
||||||
Welcome to the Wiki.
|
Welcome to the Wiki.
|
||||||
|
|
||||||
|
## Layout
|
||||||
|
|
||||||
|
**[Canary](https://github.com/Apsu/Canary)**<br>
|
||||||
|
Community-designed keyboard layout with over 55% rolling trigrams for a flowy typing experience. Emphasizes reduced same-finger bigrams and balanced hand usage. We use the standard Canary layout without modifications.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
**[Autocorrect](Autocorrect)**<br>
|
||||||
|
Automatically fixes 400+ common typing mistakes in real-time
|
||||||
|
|
||||||
|
**[Combos](Combos)**<br>
|
||||||
|
Press multiple keys simultaneously for numbers, symbols, and shortcuts
|
||||||
|
|
||||||
|
**[Repeat and Magic Key](Repeat-and-Magic-Key)**<br>
|
||||||
|
Advanced repeat key implementation with intelligent context-aware completions
|
||||||
|
|
||||||
|
## Layers
|
||||||
|
|
||||||
|
**[Colemak Extend](https://colemakmods.github.io/ergonomic-mods/extend.html)** | **[DreymaR](https://dreymar.colemak.org/layers-extend.html)** | **[Seniply](https://stevep99.github.io/seniply/)**<br>
|
||||||
|
Our NAV and NUM layers are inspired by Colemak Extend, a navigation and editing layer concept that keeps frequently-used keys accessible from home position. Extend layers provide cursor movement, text editing shortcuts, and number access without reaching for dedicated keys. Our implementation adapts these principles for a split 34-key layout with application-specific modifier positioning.
|
||||||
|
|
||||||
|
**[Symbol Layer](Symbol-Layer)**<br>
|
||||||
|
Custom symbol layer optimized for programming with bracket rolls and logical operator placement
|
||||||
|
|
||||||
|
## Home Row Mods
|
||||||
|
|
||||||
|
**[Precondition's Guide](https://precondition.github.io/home-row-mods)**<br>
|
||||||
|
Modifier keys (Alt, Shift, GUI, Ctrl) placed on the home row as dual-function keys. Tap for letter, hold for modifier. Reduces finger movement and strain by eliminating reaches to traditional modifier positions.
|
||||||
|
|
||||||
|
### Our Positioning Rationale
|
||||||
|
|
||||||
|
Each modifier is positioned based on its primary application:
|
||||||
|
|
||||||
|
| Modifier | Application | Purpose |
|
||||||
|
|-----------|-------------|--------------------------------------|
|
||||||
|
| **GUI** | XMonad | Workspace switching, window management |
|
||||||
|
| **Alt** | WezTerm | Tab navigation, pane control |
|
||||||
|
| **Ctrl** | Neovim | Text manipulation, commands |
|
||||||
|
| **Shift** | - | Chording with other modifiers |
|
||||||
|
|
||||||
|
The NAV and NUM layers duplicate these modifiers on the opposite hand. This creates powerful home row chords: hold a modifier on one hand while accessing navigation keys or numbers on the other. For example, GUI+arrow keys manages XMonad windows, Alt+numbers switches WezTerm tabs, and Ctrl+navigation executes Neovim motions - all without moving from home position.
|
||||||
105
Repeat-and-Magic-Key.md
Normal file
105
Repeat-and-Magic-Key.md
Normal file
|
|
@ -0,0 +1,105 @@
|
||||||
|
# Repeat and Magic Key
|
||||||
|
|
||||||
|
Two intelligent repeat mechanisms on the thumb keys that reduce keystrokes and improve typing flow. Inspired by [magic sturdy](https://github.com/Ikcelaks/keyboard_layouts/blob/main/magic_sturdy/magic_sturdy.md) by Ikcelaks.
|
||||||
|
|
||||||
|
## Repeat Key
|
||||||
|
|
||||||
|
Replays the last key press with intelligent overrides for common patterns.
|
||||||
|
|
||||||
|
### Repeat Key Overrides
|
||||||
|
|
||||||
|
| First Key | Output | Result | Frequency |
|
||||||
|
|-----------|-----------|-----------|-----------|
|
||||||
|
| `A` | `nd` | `and` | 3.293% |
|
||||||
|
| `I` | `ng` | `ing` | 3.476% |
|
||||||
|
| `Y` | `ou` | `you` | 3.492% |
|
||||||
|
| `N` | `f` | `nf` | 0.036% |
|
||||||
|
| `B` | `ecause` | `because` | - |
|
||||||
|
| `W` | `ould` | `would` | - |
|
||||||
|
| `,` | ` and` | `, and` | - |
|
||||||
|
| `Space` | `for` | ` for` | - |
|
||||||
|
|
||||||
|
### Path Shortcuts
|
||||||
|
|
||||||
|
| Keys | Output |
|
||||||
|
|-------------------|-------------|
|
||||||
|
| `` ` `` + Repeat | `~/` |
|
||||||
|
| `.` + Repeat | `../` |
|
||||||
|
| `.` + Repeat × 2 | `../../` |
|
||||||
|
|
||||||
|
## Magic Key
|
||||||
|
|
||||||
|
Context-aware completions based on the previous key. Reduces same-finger bigrams and enables common suffixes.
|
||||||
|
|
||||||
|
### Same Finger Bigrams
|
||||||
|
|
||||||
|
| First Key | Output | Bigram | Frequency |
|
||||||
|
|-----------|--------|--------|-----------|
|
||||||
|
| `Y` | `S` | YS | 0.123% |
|
||||||
|
| `E` | `O` | EO | 0.121% |
|
||||||
|
| `R` | `L` | RL | 0.114% |
|
||||||
|
| `U` | `I` | UI | 0.073% |
|
||||||
|
| `O` | `E` | OE | 0.060% |
|
||||||
|
| `P` | `T` | PT | 0.050% |
|
||||||
|
| `S` | `Y` | SY | 0.024% |
|
||||||
|
| `D` | `G` | DG | 0.021% |
|
||||||
|
|
||||||
|
### Magic Suffixes
|
||||||
|
|
||||||
|
| First Key | Output | Example |
|
||||||
|
|-----------|---------|----------------------------|
|
||||||
|
| `B` | `efore` | before |
|
||||||
|
| `I` | `on` | ion, action, question |
|
||||||
|
| `J` | `ust` | just, adjust |
|
||||||
|
| `M` | `ent` | ment, moment, movement |
|
||||||
|
| `N` | `ion` | nation, station |
|
||||||
|
| `T` | `ment` | treatment, statement |
|
||||||
|
| `V` | `er` | over, never, ever |
|
||||||
|
| `W` | `hich` | which |
|
||||||
|
| `X` | `es` | fixes, boxes |
|
||||||
|
| `,` | ` but` | text, but more text |
|
||||||
|
| `Space` | `the` | the |
|
||||||
|
|
||||||
|
### Coding Shortcuts
|
||||||
|
|
||||||
|
**Compound Assignment:**
|
||||||
|
|
||||||
|
| First Key | Output | Result |
|
||||||
|
|-----------|--------|--------|
|
||||||
|
| `+` | `=` | `+=` |
|
||||||
|
| `-` | `=` | `-=` |
|
||||||
|
| `*` | `=` | `*=` |
|
||||||
|
| `/` | `=` | `/=` |
|
||||||
|
|
||||||
|
**Auto-pair Cursor Positioning:**
|
||||||
|
|
||||||
|
| First Key | Output | Result (│ = cursor) |
|
||||||
|
|-----------|--------|---------------------|
|
||||||
|
| `>` | `Left` | `<│>` |
|
||||||
|
| `)` | `Left` | `(│)` |
|
||||||
|
| `]` | `Left` | `[│]` |
|
||||||
|
| `}` | `Left` | `{│}` |
|
||||||
|
|
||||||
|
## Usage Examples
|
||||||
|
|
||||||
|
### Natural Language
|
||||||
|
|
||||||
|
```
|
||||||
|
Type: "n" + Magic → "nation"
|
||||||
|
Type: "treat" + Magic → "treatment"
|
||||||
|
Type: "b" + Repeat → "because"
|
||||||
|
Type: "y" + Magic → "ys" (avoiding SFB)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Coding
|
||||||
|
|
||||||
|
```
|
||||||
|
Type: "count +" + Magic → "count +="
|
||||||
|
Type: "{}" + Magic → "{│}" (cursor inside)
|
||||||
|
Type: "../" → "." + Repeat
|
||||||
|
Type: "../../" → "." + Repeat + Repeat
|
||||||
|
```
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
|
||||||
|
For the complete implementation, see our [keymap.c](../qmk_userspace/keyboards/ferris/sweep/keymaps/sajenim/keymap.c).
|
||||||
86
Symbol-Layer.md
Normal file
86
Symbol-Layer.md
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
# Symbol Layer
|
||||||
|
|
||||||
|
Our custom symbol layer is designed for programming efficiency, prioritizing fast rolls for common bracket pairs and logical symbol placement for operators.
|
||||||
|
|
||||||
|
Inspired by Pascal Getreuer's [symbol layer design](https://getreuer.info/posts/keyboards/symbol-layer/index.html).
|
||||||
|
|
||||||
|
## Design Philosophy
|
||||||
|
|
||||||
|
1. **Brackets as rolls** - Opening and closing pairs on the same hand for fluid typing
|
||||||
|
2. **Operators on home row** - Frequently used symbols in comfortable positions
|
||||||
|
3. **Related symbols grouped** - Logical grouping by symbol type and usage
|
||||||
|
4. **Minimize same-finger bigrams** - Avoid uncomfortable stretches
|
||||||
|
|
||||||
|
## Symbol Grouping
|
||||||
|
|
||||||
|
### Left Hand - Logic & Control
|
||||||
|
|
||||||
|
**Top row:** Angle brackets and minus for arrows and comparisons<br>
|
||||||
|
**Home row:** Parentheses and pipe for function calls and conditionals<br>
|
||||||
|
**Bottom row:** Boolean operators (`!`, `&`, `^`, `@`) for logic and bitwise operations
|
||||||
|
|
||||||
|
### Right Hand - Structures & Math
|
||||||
|
|
||||||
|
**Top row:** Square brackets for data structures<br>
|
||||||
|
**Home row:** Curly braces for code blocks, dollar for variables/strings<br>
|
||||||
|
**Bottom row:** Asterisk for multiplication and pointers
|
||||||
|
|
||||||
|
## Bracket Rolls
|
||||||
|
|
||||||
|
Fast same-hand rolls for common bracket pairs:
|
||||||
|
|
||||||
|
| Pair | Position | Roll Direction | Use Case |
|
||||||
|
|------|----------|----------------|----------|
|
||||||
|
| `<>` | Left top row | Index → Ring | HTML tags, comparisons |
|
||||||
|
| `()` | Left home row | Index → Ring | Function calls, grouping |
|
||||||
|
| `[]` | Right top row | Index → Ring | Arrays, indexing |
|
||||||
|
| `{}` | Right home row | Index → Ring | Code blocks, objects |
|
||||||
|
|
||||||
|
## Redirected Rolls
|
||||||
|
|
||||||
|
More complex patterns requiring direction changes on the same hand:
|
||||||
|
|
||||||
|
| Pattern | Keys | Use Case |
|
||||||
|
|---------|------|----------|
|
||||||
|
| `/**/` | `/` → `*` → `*` → `/` | C-style comment blocks |
|
||||||
|
| `${}` | `$` → `{` → `}` | Variable interpolation (shell, JS) |
|
||||||
|
| `{};` | `{` → `}` → `;` | Empty block/attribute scaffolding |
|
||||||
|
|
||||||
|
## Operator Positioning
|
||||||
|
|
||||||
|
### Arithmetic & Assignment
|
||||||
|
|
||||||
|
| Symbol | Position | Reasoning |
|
||||||
|
|--------|----------|-----------|
|
||||||
|
| `=` | Left home (middle) | Most common operator, prime position |
|
||||||
|
| `-` | Left top (middle) | Accessible for subtraction and arrows |
|
||||||
|
| `+` | Right top (pinky) | Addition, concatenation |
|
||||||
|
| `_` | Right top (middle) | Underscores in identifiers |
|
||||||
|
| `*` | Right bottom (index) | Multiplication, pointers, globs |
|
||||||
|
|
||||||
|
### Comparison & Compound Assignment
|
||||||
|
|
||||||
|
Relatively easy patterns with some tradeoffs:
|
||||||
|
|
||||||
|
| Pattern | Hand Pattern | Notes |
|
||||||
|
|---------|--------------|-------|
|
||||||
|
| `<=` | Left hand vertical | Easy |
|
||||||
|
| `>=` | Left hand vertical | Easy |
|
||||||
|
| `!=` | Left hand vertical | Easy |
|
||||||
|
| `+=` | Alternate hands | Comfortable |
|
||||||
|
| `*=` | Alternate hands | Comfortable |
|
||||||
|
| `-=` | Left hand SFB | Sacrifice for layout optimization |
|
||||||
|
|
||||||
|
### Arrow Operators
|
||||||
|
|
||||||
|
All arrow operators are positioned on the left hand for easy typing:
|
||||||
|
|
||||||
|
| Pattern | Keys | Use Case |
|
||||||
|
|---------|------|----------|
|
||||||
|
| `<-` | Top row inward roll | Assignment (R, Haskell) |
|
||||||
|
| `->` | Top row outward roll | Method access, lambdas |
|
||||||
|
| `=>` | Home to top diagonal | Fat arrow (JS, Rust) |
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
|
||||||
|
For the complete implementation, see our [keymap.c](../qmk_userspace/keyboards/ferris/sweep/keymaps/sajenim/keymap.c).
|
||||||
Loading…
Add table
Add a link
Reference in a new issue