diff --git a/Autocorrect.md b/Autocorrect.md new file mode 100644 index 0000000..1502626 --- /dev/null +++ b/Autocorrect.md @@ -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). diff --git a/Combos.md b/Combos.md new file mode 100644 index 0000000..b237a50 --- /dev/null +++ b/Combos.md @@ -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). diff --git a/Home.md b/Home.md index 5d08b7b..10c54a0 100644 --- a/Home.md +++ b/Home.md @@ -1 +1,43 @@ -Welcome to the Wiki. \ No newline at end of file +Welcome to the Wiki. + +## Layout + +**[Canary](https://github.com/Apsu/Canary)**
+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)**
+Automatically fixes 400+ common typing mistakes in real-time + +**[Combos](Combos)**
+Press multiple keys simultaneously for numbers, symbols, and shortcuts + +**[Repeat and Magic Key](Repeat-and-Magic-Key)**
+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/)**
+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)**
+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)**
+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. \ No newline at end of file diff --git a/Repeat-and-Magic-Key.md b/Repeat-and-Magic-Key.md new file mode 100644 index 0000000..6e9ff2f --- /dev/null +++ b/Repeat-and-Magic-Key.md @@ -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). diff --git a/Symbol-Layer.md b/Symbol-Layer.md new file mode 100644 index 0000000..373f810 --- /dev/null +++ b/Symbol-Layer.md @@ -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
+**Home row:** Parentheses and pipe for function calls and conditionals
+**Bottom row:** Boolean operators (`!`, `&`, `^`, `@`) for logic and bitwise operations + +### Right Hand - Structures & Math + +**Top row:** Square brackets for data structures
+**Home row:** Curly braces for code blocks, dollar for variables/strings
+**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).