Update README with expanded feature descriptions
- Add detailed descriptions for each feature (Autocorrect, Combos, Home Row Mods, Repeat/Magic Keys) - Resize and center images for better display on wide layouts - Make keymap image collapsible by default - Move Magic Sturdy reference to feature section
This commit is contained in:
parent
e0bfafecc7
commit
837808e4c1
5 changed files with 164 additions and 117 deletions
108
README.md
108
README.md
|
@ -1,37 +1,101 @@
|
|||
# QMK Keymaps
|
||||
|
||||

|
||||
<div align="center">
|
||||
<img src="./assets/img/keyboards/ferris-sweep.jpg" width="70%" alt="ferris-sweep">
|
||||
</div>
|
||||
|
||||
## Features
|
||||
* **Autocorrect**
|
||||
* **Case Modes**
|
||||
* **Combos**
|
||||
* **Home Row Mods**
|
||||
* **Leader Key**
|
||||
* **Repeat / Magic Keys**
|
||||
|
||||
## My Keymap
|
||||

|
||||
|
||||
See [**magic sturdy**](https://github.com/Ikcelaks/keyboard_layouts/blob/main/magic_sturdy/magic_sturdy.md) for usage of the magic key.
|
||||
## Table of Contents
|
||||
- [Installation](#installation)
|
||||
- [About](#about)
|
||||
- [Features](#features)
|
||||
- [My Keymap](#my-keymap)
|
||||
- [References](#references)
|
||||
|
||||
## Installation
|
||||
|
||||
### Prerequisites
|
||||
Follow the [getting started](https://docs.qmk.fm/#/newbs_getting_started) docs to install [QMK Firmware](https://docs.qmk.fm/#/)
|
||||
|
||||
### Setup
|
||||
```sh
|
||||
# Clone the keymaps
|
||||
# Clone the userspace
|
||||
git clone https://git.sajenim.dev/jasmine/qmk_userspace.git
|
||||
|
||||
# Setup external userspace
|
||||
# Configure QMK to use external userspace
|
||||
qmk config user.overlay_dir="$(realpath qmk_userspace)"
|
||||
|
||||
# Compile the firmware
|
||||
qmk compile -kb <keyboard> -km <keymap>
|
||||
# Compile for Ferris Sweep
|
||||
qmk compile -kb ferris/sweep -km sajenim
|
||||
|
||||
# Flash to keyboard (enter bootloader mode first)
|
||||
qmk flash -kb ferris/sweep -km sajenim
|
||||
```
|
||||
|
||||
## About
|
||||
|
||||
This is a custom QMK userspace for the Ferris Sweep keyboard, featuring the **[Canary layout](https://github.com/Apsu/Canary)** - a collaborative design by the Alternate Keyboard Layout (AKL) community with over 55% rolling trigrams for a flowy typing feel. The keymap includes extensive customizations for improved typing efficiency, emphasizing minimal finger movement through home row mods, combos, and intelligent repeat keys.
|
||||
|
||||
### Design Philosophy
|
||||
- **Comfort first**: All frequently used keys accessible without leaving home position
|
||||
- **Smart automation**: Let the keyboard handle common patterns (repeat key, magic completions, autocorrect)
|
||||
- **Minimal layers**: 5 carefully designed layers (CANARY, NAV, NUM, SYM, FUN) with logical access patterns
|
||||
|
||||
## Features
|
||||
|
||||
### Autocorrect
|
||||
Automatically fixes common typing mistakes in real-time. Maintains a dictionary of frequently mistyped words and corrects them as you type, reducing the need for manual backspacing and retyping.
|
||||
|
||||
### Combos
|
||||
Press multiple keys simultaneously to output different characters or trigger actions. Enables access to numbers, symbols, and commands without leaving the home position, reducing finger travel and improving typing efficiency.
|
||||
|
||||
### Home Row Mods
|
||||
Modifier keys (Alt, Shift, GUI, Ctrl) placed on the home row as dual-function keys. Tap for the letter, hold for the modifier. Eliminates the need to reach for traditional modifier positions, reducing hand movement and strain.
|
||||
|
||||
### Repeat / Magic Keys
|
||||
Two intelligent repeat mechanisms on the thumb keys:
|
||||
- **Repeat Key** - Repeats the last keystroke with context-aware enhancements for common trigrams and word briefs
|
||||
- **Magic Key** - Context-aware completions based on the previous key. Reduces same-finger bigrams and enables common word completions
|
||||
|
||||
See [**magic sturdy**](https://github.com/Ikcelaks/keyboard_layouts/blob/main/magic_sturdy/magic_sturdy.md) for the inspiration behind the magic key implementation.
|
||||
|
||||
## My Keymap
|
||||
|
||||
<div align="center">
|
||||
<img src="./assets/img/keymaps/ferris-sajenim.svg" width="100%" alt="ferris-keymap">
|
||||
</div>
|
||||
|
||||
### Usage Examples
|
||||
|
||||
**Combos for Numbers:**
|
||||
Press home row + upper row simultaneously for vertical number access:
|
||||
- `L + R` → 2
|
||||
- `Y + S` → 3
|
||||
- `P + T` → 4
|
||||
|
||||
**Magic Key Completions:**
|
||||
Type a letter, then press the Magic key (right thumb):
|
||||
- `w` + Magic → `which`
|
||||
- `b` + Magic → `efore`
|
||||
- `+` + Magic → `=` (creates `+=`)
|
||||
|
||||
**Repeat Key Enhancements:**
|
||||
Tap a key twice using the Repeat key (left thumb):
|
||||
- `a` + Repeat → `nd` (completes "and")
|
||||
- `i` + Repeat → `ng` (completes "ing")
|
||||
- `.` + Repeat → `./` (first repeat), `../` (second repeat)
|
||||
|
||||
For complete documentation of all repeat and magic key behaviors, see the [wiki](https://git.sajenim.dev/jasmine/qmk_userspace/wiki).
|
||||
|
||||
## References
|
||||
* [Precondition](https://precondition.github.io/home-row-mods)
|
||||
* [Pascal Getreuer](https://getreuer.info/posts/keyboards/index.html)
|
||||
* [Ikcelaks](https://github.com/Ikcelaks/keyboard_layouts/tree/main)
|
||||
* [Andrew Rae](https://github.com/andrewjrae/kyria-keymap)
|
||||
* [Jonas Hietala](https://www.jonashietala.se/series/t-34/)
|
||||
|
||||
**[Precondition](https://precondition.github.io/home-row-mods)**<br>
|
||||
Home row mods timing and configuration guidance
|
||||
|
||||
**[Pascal Getreuer](https://getreuer.info/posts/keyboards/index.html)**<br>
|
||||
Advanced QMK features and custom keycodes
|
||||
|
||||
**[Ikcelaks](https://github.com/Ikcelaks/keyboard_layouts/tree/main)**<br>
|
||||
Magic key implementation and layout analysis
|
||||
|
||||
**[Jonas Hietala](https://www.jonashietala.se/series/t-34/)**<br>
|
||||
Keyboard layout development journey
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<svg width="732" height="1411" viewBox="0 0 732 1411" class="keymap" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<svg width="1464" height="734" viewBox="0 0 1464 734" class="keymap" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<style>/* inherit to force styles through use tags */
|
||||
svg path {
|
||||
fill: inherit;
|
||||
|
@ -181,17 +181,16 @@ path.combo { stroke: #7f7f7f; }
|
|||
<g transform="translate(28, 137)" class="key keypos-10">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">c</text>
|
||||
<text x="0" y="24" class="key hold">Shift</text>
|
||||
</g>
|
||||
<g transform="translate(84, 102)" class="key keypos-11">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">r</text>
|
||||
<text x="0" y="24" class="key hold">Ctrl</text>
|
||||
<text x="0" y="24" class="key hold">Alt</text>
|
||||
</g>
|
||||
<g transform="translate(140, 84)" class="key keypos-12">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">s</text>
|
||||
<text x="0" y="24" class="key hold">Alt</text>
|
||||
<text x="0" y="24" class="key hold">Shift</text>
|
||||
</g>
|
||||
<g transform="translate(196, 100)" class="key keypos-13">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -214,17 +213,16 @@ path.combo { stroke: #7f7f7f; }
|
|||
<g transform="translate(532, 84)" class="key keypos-17">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">e</text>
|
||||
<text x="0" y="24" class="key hold">Alt</text>
|
||||
<text x="0" y="24" class="key hold">Shift</text>
|
||||
</g>
|
||||
<g transform="translate(588, 102)" class="key keypos-18">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">i</text>
|
||||
<text x="0" y="24" class="key hold">Ctrl</text>
|
||||
<text x="0" y="24" class="key hold">Alt</text>
|
||||
</g>
|
||||
<g transform="translate(644, 137)" class="key keypos-19">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">a</text>
|
||||
<text x="0" y="24" class="key hold">Shift</text>
|
||||
</g>
|
||||
<g transform="translate(28, 193)" class="key keypos-20">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -233,6 +231,7 @@ path.combo { stroke: #7f7f7f; }
|
|||
<g transform="translate(84, 158)" class="key keypos-21">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">j</text>
|
||||
<text x="0" y="24" class="key hold">Sym</text>
|
||||
</g>
|
||||
<g transform="translate(140, 140)" class="key keypos-22">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -241,7 +240,7 @@ path.combo { stroke: #7f7f7f; }
|
|||
<g transform="translate(196, 156)" class="key keypos-23">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">d</text>
|
||||
<text x="0" y="24" class="key hold">Sym</text>
|
||||
<text x="0" y="24" class="key hold">Ctrl</text>
|
||||
</g>
|
||||
<g transform="translate(252, 164)" class="key keypos-24">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -254,7 +253,7 @@ path.combo { stroke: #7f7f7f; }
|
|||
<g transform="translate(476, 156)" class="key keypos-26">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">h</text>
|
||||
<text x="0" y="24" class="key hold">Sym</text>
|
||||
<text x="0" y="24" class="key hold">Ctrl</text>
|
||||
</g>
|
||||
<g transform="translate(532, 140)" class="key keypos-27">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -263,6 +262,7 @@ path.combo { stroke: #7f7f7f; }
|
|||
<g transform="translate(588, 158)" class="key keypos-28">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">,</text>
|
||||
<text x="0" y="24" class="key hold">Sym</text>
|
||||
</g>
|
||||
<g transform="translate(644, 193)" class="key keypos-29">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -287,104 +287,80 @@ path.combo { stroke: #7f7f7f; }
|
|||
<text x="0" y="24" class="key hold">Num</text>
|
||||
</g>
|
||||
<g class="combo combopos-0">
|
||||
<rect rx="6" ry="6" x="98" y="24" width="28" height="26" class="combo"/>
|
||||
<text x="112" y="37" class="combo tap">Lead</text>
|
||||
</g>
|
||||
<g class="combo combopos-1">
|
||||
<rect rx="6" ry="6" x="490" y="23" width="28" height="26" class="combo"/>
|
||||
<text x="504" y="36" class="combo tap">[</text>
|
||||
</g>
|
||||
<g class="combo combopos-2">
|
||||
<rect rx="6" ry="6" x="546" y="24" width="28" height="26" class="combo"/>
|
||||
<text x="560" y="37" class="combo tap">]</text>
|
||||
</g>
|
||||
<g class="combo combopos-3">
|
||||
<rect rx="6" ry="6" x="14" y="96" width="28" height="26" class="combo"/>
|
||||
<text x="28" y="109" class="combo tap">1</text>
|
||||
</g>
|
||||
<g class="combo combopos-4">
|
||||
<g class="combo combopos-1">
|
||||
<rect rx="6" ry="6" x="70" y="61" width="28" height="26" class="combo"/>
|
||||
<text x="84" y="74" class="combo tap">2</text>
|
||||
</g>
|
||||
<g class="combo combopos-5">
|
||||
<g class="combo combopos-2">
|
||||
<rect rx="6" ry="6" x="126" y="43" width="28" height="26" class="combo"/>
|
||||
<text x="140" y="56" class="combo tap">3</text>
|
||||
</g>
|
||||
<g class="combo combopos-6">
|
||||
<g class="combo combopos-3">
|
||||
<rect rx="6" ry="6" x="182" y="59" width="28" height="26" class="combo"/>
|
||||
<text x="196" y="72" class="combo tap">4</text>
|
||||
</g>
|
||||
<g class="combo combopos-7">
|
||||
<g class="combo combopos-4">
|
||||
<rect rx="6" ry="6" x="238" y="67" width="28" height="26" class="combo"/>
|
||||
<text x="252" y="80" class="combo tap">5</text>
|
||||
</g>
|
||||
<g class="combo combopos-8">
|
||||
<g class="combo combopos-5">
|
||||
<rect rx="6" ry="6" x="406" y="67" width="28" height="26" class="combo"/>
|
||||
<text x="420" y="80" class="combo tap">6</text>
|
||||
</g>
|
||||
<g class="combo combopos-9">
|
||||
<g class="combo combopos-6">
|
||||
<rect rx="6" ry="6" x="462" y="59" width="28" height="26" class="combo"/>
|
||||
<text x="476" y="72" class="combo tap">7</text>
|
||||
</g>
|
||||
<g class="combo combopos-10">
|
||||
<g class="combo combopos-7">
|
||||
<rect rx="6" ry="6" x="518" y="43" width="28" height="26" class="combo"/>
|
||||
<text x="532" y="56" class="combo tap">8</text>
|
||||
</g>
|
||||
<g class="combo combopos-11">
|
||||
<g class="combo combopos-8">
|
||||
<rect rx="6" ry="6" x="574" y="61" width="28" height="26" class="combo"/>
|
||||
<text x="588" y="74" class="combo tap">9</text>
|
||||
</g>
|
||||
<g class="combo combopos-12">
|
||||
<g class="combo combopos-9">
|
||||
<rect rx="6" ry="6" x="630" y="96" width="28" height="26" class="combo"/>
|
||||
<text x="644" y="109" class="combo tap">0</text>
|
||||
</g>
|
||||
<g class="combo combopos-13">
|
||||
<g class="combo combopos-10">
|
||||
<rect rx="6" ry="6" x="98" y="80" width="28" height="26" class="combo"/>
|
||||
<text x="112" y="93" class="combo tap">Tab</text>
|
||||
</g>
|
||||
<g class="combo combopos-14">
|
||||
<g class="combo combopos-11">
|
||||
<rect rx="6" ry="6" x="154" y="79" width="28" height="26" class="combo"/>
|
||||
<text x="168" y="92" class="combo tap">C-w</text>
|
||||
</g>
|
||||
<g class="combo combopos-15">
|
||||
<g class="combo combopos-12">
|
||||
<rect rx="6" ry="6" x="490" y="79" width="28" height="26" class="combo"/>
|
||||
<text x="504" y="92" class="combo tap">Esc</text>
|
||||
</g>
|
||||
<g class="combo combopos-16">
|
||||
<g class="combo combopos-13">
|
||||
<rect rx="6" ry="6" x="546" y="80" width="28" height="26" class="combo"/>
|
||||
<text x="560" y="93" class="combo tap">Ent</text>
|
||||
</g>
|
||||
<g class="combo combopos-17">
|
||||
<g class="combo combopos-14">
|
||||
<rect rx="6" ry="6" x="98" y="136" width="28" height="26" class="combo"/>
|
||||
<text x="112" y="149" class="combo tap">:</text>
|
||||
</g>
|
||||
<g class="combo combopos-18">
|
||||
<g class="combo combopos-15">
|
||||
<rect rx="6" ry="6" x="154" y="135" width="28" height="26" class="combo"/>
|
||||
<text x="168" y="148" class="combo tap">M-a</text>
|
||||
</g>
|
||||
<g class="combo combopos-19">
|
||||
<rect rx="6" ry="6" x="210" y="147" width="28" height="26" class="combo"/>
|
||||
<text x="224" y="160" class="combo tap">
|
||||
<tspan x="224" dy="-0.6em">OS</tspan><tspan x="224" dy="1.2em">Shift</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g class="combo combopos-20">
|
||||
<rect rx="6" ry="6" x="434" y="147" width="28" height="26" class="combo"/>
|
||||
<text x="448" y="160" class="combo tap">
|
||||
<tspan x="448" dy="-0.6em">OS</tspan><tspan x="448" dy="1.2em">Shift</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g class="combo combopos-21">
|
||||
<g class="combo combopos-16">
|
||||
<rect rx="6" ry="6" x="490" y="135" width="28" height="26" class="combo"/>
|
||||
<text x="504" y="148" class="combo tap">M1-a</text>
|
||||
</g>
|
||||
<g class="combo combopos-22">
|
||||
<g class="combo combopos-17">
|
||||
<rect rx="6" ry="6" x="546" y="136" width="28" height="26" class="combo"/>
|
||||
<text x="560" y="149" class="combo tap">\</text>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="translate(30, 339)" class="layer-NAV">
|
||||
<g transform="translate(762, 0)" class="layer-NAV">
|
||||
<text x="0" y="28" class="label" id="NAV">NAV:</text>
|
||||
<g transform="translate(0, 56)">
|
||||
<g transform="translate(28, 81)" class="key keypos-0">
|
||||
|
@ -437,20 +413,17 @@ path.combo { stroke: #7f7f7f; }
|
|||
</g>
|
||||
<g transform="translate(28, 137)" class="key keypos-10">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Shift</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(84, 102)" class="key keypos-11">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Ctrl</tspan>
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Alt</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(140, 84)" class="key keypos-12">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Alt</tspan>
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Shift</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(196, 100)" class="key keypos-13">
|
||||
|
@ -492,12 +465,18 @@ path.combo { stroke: #7f7f7f; }
|
|||
</g>
|
||||
<g transform="translate(84, 158)" class="key keypos-21">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Sym</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(140, 140)" class="key keypos-22">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
</g>
|
||||
<g transform="translate(196, 156)" class="key keypos-23">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Ctrl</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(252, 164)" class="key keypos-24">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -507,6 +486,7 @@ path.combo { stroke: #7f7f7f; }
|
|||
</g>
|
||||
<g transform="translate(476, 156)" class="key keypos-26">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">Tab</text>
|
||||
</g>
|
||||
<g transform="translate(532, 140)" class="key keypos-27">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -537,7 +517,7 @@ path.combo { stroke: #7f7f7f; }
|
|||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="translate(30, 678)" class="layer-NUM">
|
||||
<g transform="translate(30, 339)" class="layer-NUM">
|
||||
<text x="0" y="28" class="label" id="NUM">NUM:</text>
|
||||
<g transform="translate(0, 56)">
|
||||
<g transform="translate(28, 81)" class="key keypos-0">
|
||||
|
@ -565,18 +545,19 @@ path.combo { stroke: #7f7f7f; }
|
|||
</g>
|
||||
<g transform="translate(476, 44)" class="key keypos-6">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">*</text>
|
||||
<text x="0" y="0" class="key tap">+</text>
|
||||
</g>
|
||||
<g transform="translate(532, 28)" class="key keypos-7">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">%</text>
|
||||
<text x="0" y="0" class="key tap">-</text>
|
||||
</g>
|
||||
<g transform="translate(588, 46)" class="key keypos-8">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">/</text>
|
||||
<text x="0" y="0" class="key tap">*</text>
|
||||
</g>
|
||||
<g transform="translate(644, 81)" class="key keypos-9">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">/</text>
|
||||
</g>
|
||||
<g transform="translate(28, 137)" class="key keypos-10">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -596,7 +577,7 @@ path.combo { stroke: #7f7f7f; }
|
|||
</g>
|
||||
<g transform="translate(252, 108)" class="key keypos-14">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">.</text>
|
||||
<text x="0" y="0" class="key tap">=</text>
|
||||
</g>
|
||||
<g transform="translate(420, 108)" class="key keypos-15">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -610,24 +591,21 @@ path.combo { stroke: #7f7f7f; }
|
|||
<g transform="translate(532, 84)" class="key keypos-17">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Alt</tspan>
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Shift</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(588, 102)" class="key keypos-18">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Ctrl</tspan>
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Alt</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(644, 137)" class="key keypos-19">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Shift</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(28, 193)" class="key keypos-20">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap"><</text>
|
||||
<text x="0" y="0" class="key tap">,</text>
|
||||
</g>
|
||||
<g transform="translate(84, 158)" class="key keypos-21">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -643,22 +621,25 @@ path.combo { stroke: #7f7f7f; }
|
|||
</g>
|
||||
<g transform="translate(252, 164)" class="key keypos-24">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">></text>
|
||||
<text x="0" y="0" class="key tap">.</text>
|
||||
</g>
|
||||
<g transform="translate(420, 164)" class="key keypos-25">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
</g>
|
||||
<g transform="translate(476, 156)" class="key keypos-26">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">+</text>
|
||||
<text x="0" y="0" class="key tap">
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Ctrl</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(532, 140)" class="key keypos-27">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">=</text>
|
||||
</g>
|
||||
<g transform="translate(588, 158)" class="key keypos-28">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">-</text>
|
||||
<text x="0" y="0" class="key tap">
|
||||
<tspan x="0" dy="-0.6em">OS</tspan><tspan x="0" dy="1.2em">Sym</tspan>
|
||||
</text>
|
||||
</g>
|
||||
<g transform="translate(644, 193)" class="key keypos-29">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -683,7 +664,7 @@ path.combo { stroke: #7f7f7f; }
|
|||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="translate(30, 1016)" class="layer-SYM">
|
||||
<g transform="translate(762, 339)" class="layer-SYM">
|
||||
<text x="0" y="28" class="label" id="SYM">SYM:</text>
|
||||
<g transform="translate(0, 56)">
|
||||
<g transform="translate(28, 81)" class="key keypos-0">
|
||||
|
@ -726,7 +707,7 @@ path.combo { stroke: #7f7f7f; }
|
|||
</g>
|
||||
<g transform="translate(28, 137)" class="key keypos-10">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">!</text>
|
||||
<text x="0" y="0" class="key tap">|</text>
|
||||
</g>
|
||||
<g transform="translate(84, 102)" class="key keypos-11">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
@ -766,7 +747,7 @@ path.combo { stroke: #7f7f7f; }
|
|||
</g>
|
||||
<g transform="translate(28, 193)" class="key keypos-20">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
<text x="0" y="0" class="key tap">|</text>
|
||||
<text x="0" y="0" class="key tap">!</text>
|
||||
</g>
|
||||
<g transform="translate(84, 158)" class="key keypos-21">
|
||||
<rect rx="6" ry="6" x="-26" y="-26" width="52" height="52" class="key"/>
|
||||
|
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
@ -4,32 +4,30 @@ layout:
|
|||
layers:
|
||||
CANARY:
|
||||
- [w, l, y, p, b, z, f, o, u, "'"]
|
||||
- [{h: Shift, t: c}, {h: Ctrl, t: r}, {h: Alt, t: s}, {h: Gui, t: t}, g, m, {h: Gui, t: n}, {h: Alt, t: e}, {h: Ctrl, t: i}, {h: Shift, t: a}]
|
||||
- [q, j, v, {h: Sym, t: d}, k, x, {h: Sym, t: h}, "/", ",", "."]
|
||||
- [c, {h: Alt, t: r}, {h: Shift, t: s}, {h: Gui, t: t}, g, m, {h: Gui, t: n}, {h: Shift, t: e}, {h: Alt, t: i}, a]
|
||||
- [q, {h: Sym, t: j}, v, {h: Ctrl, t: d}, k, x, {h: Ctrl, t: h}, "/", {h: Sym, t: ","}, "."]
|
||||
- [{h: Nav, t: Repeat}, Spc, Bspc, {h: Num, t: Magic}]
|
||||
|
||||
NAV:
|
||||
- [Null, Prev Track, Play Pause, Next Track, Vol Up, Page Up, Home, Up, End, Null]
|
||||
- [OS Shift, OS Ctrl, OS Alt, OS Gui, Vol Down, Page Down, Left, Down, Right, Del]
|
||||
- [Null, Null, Null, Null, Null, Null, Null, Null, Null, Null]
|
||||
- [Null, OS Alt, OS Shift, OS Gui, Vol Down, Page Down, Left, Down, Right, Del]
|
||||
- [Null, OS Sym, Null, OS Ctrl, Null, Null, Tab, Null, Null, Null]
|
||||
- [{h: Nav, t: Repeat, type: trans}, {t: Spc, type: trans}, {t: Bspc, type: trans}, {h: Num, t: Magic, type: trans}]
|
||||
|
||||
NUM:
|
||||
- ["(", 7, 8, 9, ")", Null, "*", "%", "/", Null]
|
||||
- [0, 4, 5, 6, ".", Null, OS Gui, OS Alt, OS Ctrl, OS Shift]
|
||||
- ["<", 1, 2, 3, ">", Null, "+", "=", "-", Null]
|
||||
- ["(", 7, 8, 9, ")", Null, "+", "-", "*", "/"]
|
||||
- [0, 4, 5, 6, "=", Null, OS Gui, OS Shift, OS Alt, Null]
|
||||
- [",", 1, 2, 3, ".", Null, OS Ctrl, Null, OS Sym, Null]
|
||||
- [{h: Nav, t: Repeat, type: trans}, {t: Spc, type: trans}, {t: Bspc, type: trans}, {h: Num, t: Magic, type: trans}]
|
||||
|
||||
SYM:
|
||||
- ["`", "<", "-", ">", Null, Null, "[", "_", "]", "+"]
|
||||
- ["!", "(", "=", ")", "#", "%", "{", "$", "}", ";"]
|
||||
- ["|", "&", "^", "@", Null, Null, "*", {t: "/", type: trans}, {t: ",", type: trans}, {t: ".", type: trans}]
|
||||
- ["|", "(", "=", ")", "#", "%", "{", "$", "}", ";"]
|
||||
- ["!", "&", "^", "@", Null, Null, "*", {t: "/", type: trans}, {t: ",", type: trans}, {t: ".", type: trans}]
|
||||
- [{h: Nav, t: Repeat, type: trans}, {t: Spc, type: trans}, {t: Bspc, type: trans}, {h: Num, t: Magic, type: trans}]
|
||||
|
||||
combos:
|
||||
- {p: [1, 2], k: "Lead", l: ["CANARY"]}
|
||||
- {p: [6, 7], k: "[", l: ["CANARY"]}
|
||||
- {p: [7, 8], k: "]", l: ["CANARY"]}
|
||||
# Vertical numbers
|
||||
- {p: [0, 10], k: "1", l: ["CANARY"]}
|
||||
- {p: [1, 11], k: "2", l: ["CANARY"]}
|
||||
- {p: [2, 12], k: "3", l: ["CANARY"]}
|
||||
|
@ -40,13 +38,19 @@ combos:
|
|||
- {p: [7, 17], k: "8", l: ["CANARY"]}
|
||||
- {p: [8, 18], k: "9", l: ["CANARY"]}
|
||||
- {p: [9, 19], k: "0", l: ["CANARY"]}
|
||||
|
||||
# Home row left
|
||||
- {p: [11, 12], k: "Tab", l: ["CANARY"]}
|
||||
- {p: [12, 13], k: "C-w", l: ["CANARY"]}
|
||||
|
||||
# Home row right
|
||||
- {p: [16, 17], k: "Esc", l: ["CANARY"]}
|
||||
- {p: [17, 18], k: "Ent", l: ["CANARY"]}
|
||||
|
||||
# Bottom row left
|
||||
- {p: [21, 22], k: ":", l: ["CANARY"]}
|
||||
- {p: [22, 23], k: "M-a", l: ["CANARY"]}
|
||||
- {p: [23, 24], k: "OS Shift", l: ["CANARY"]}
|
||||
- {p: [25, 26], k: "OS Shift", l: ["CANARY"]}
|
||||
- {p: [26, 27], k: "M1-a", l: ["CANARY"]}
|
||||
|
||||
# Bottom row right
|
||||
- {p: [26, 27], k: "M1-a", l: ["CANARY"]}
|
||||
- {p: [27, 28], k: "\\", l: ["CANARY"]}
|
||||
|
|
|
@ -19,17 +19,14 @@ COMB(delword, C(KC_BSPC), HRM_S, HRM_T)
|
|||
// home row right
|
||||
COMB(escape, KC_ESC, HRM_N, HRM_E)
|
||||
COMB(enter, KC_ENT, HRM_E, HRM_I)
|
||||
SUBS(vim_save, "\e:w\n", HRM_N, HRM_E, HRM_I)
|
||||
|
||||
// bottom row left
|
||||
COMB(vim_cmd, KC_COLN, HRM_J, KC_V)
|
||||
COMB(xmonad, G(KC_A), KC_V, HRM_D)
|
||||
COMB(capsword, CW_TOGG, HRM_J, HRM_D)
|
||||
|
||||
// bottom row right
|
||||
COMB(wezterm, A(KC_A), HRM_H, KC_SLSH)
|
||||
COMB(esc_seq, KC_BSLS, KC_SLSH, HRM_COM)
|
||||
COMB(paste, C(S(KC_V)), HRM_H, HRM_COM)
|
||||
|
||||
/* vim: set filetype=c: */
|
||||
|
||||
|
|
|
@ -71,6 +71,7 @@ enum custom_keycodes {
|
|||
#define OS_RSFT OSM(MOD_RSFT)
|
||||
#define OS_RALT OSM(MOD_RALT)
|
||||
#define OS_RGUI OSM(MOD_RGUI)
|
||||
#define OS_SYM OSL(SYM)
|
||||
|
||||
#include "g/keymap_combo.h" // layer names must be defined before engine include
|
||||
|
||||
|
@ -94,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
//|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
|
||||
XXXXXXX, OS_LALT, OS_LSFT, OS_LGUI, KC_VOLD, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL,
|
||||
//|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, OS_LCTL, XXXXXXX, XXXXXXX, KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, OS_SYM, XXXXXXX, OS_LCTL, XXXXXXX, XXXXXXX, KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______
|
||||
//`-----------------' `-----------------'
|
||||
|
@ -106,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
//|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
|
||||
KC_0, KC_4, KC_5, KC_6, KC_EQL, XXXXXXX, OS_RGUI, OS_RSFT, OS_RALT, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
|
||||
KC_COMM, KC_1, KC_2, KC_3, KC_DOT, XXXXXXX, OS_RCTL, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
KC_COMM, KC_1, KC_2, KC_3, KC_DOT, XXXXXXX, OS_RCTL, XXXXXXX, OS_SYM, XXXXXXX,
|
||||
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
|
||||
_______, _______, _______, _______
|
||||
//`-----------------' `-----------------'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue