Skip to content

Commit

Permalink
feat(kanata): add HRM-optimized navigation layer
Browse files Browse the repository at this point in the history
## HRM friendly S-tab/tab

S-tab and tab stay on the homerow while playing nice with Ctrl and Alt mods.

## Add cross-platform quit shortcut on HRM nav layer

@qut → [Q]
- @qut allows closing apps on any OS (C-q on Linux, A-f4 on Windows, etc.), optimizing muscular memory
- it is more coherent to map @qut on [Q]

@pad → [A]
- @pad thus mirrors @fun on the right hand
- allows using the numpad’s arrow keys without locking the layer (layer-while-held)

## Map esc/del on [A]/[V]

The goal is to allow escaping and deleting using the left hand only.
  • Loading branch information
fnuttens committed Oct 29, 2024
1 parent 2aa9171 commit 0643e40
Show file tree
Hide file tree
Showing 4 changed files with 315 additions and 0 deletions.
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,18 @@ without holding the key until escaped with <kbd>Alt</kbd> or <kbd>AltGr</kbd>.
<em>Fn layer toggled</em>
</p>

##### HRM friendly variant

The basic `Navigation` layer’s `WASZXCV` shortcuts are useful for some layouts, but they can be seen as a waste of layer space when using Home Row Mods.

This variant replaces QWERTY shorcuts by the following:
- cross-platform quit shortcut
- HRM optimized `tab` and `S-tab`
- easy to use `escape` and `delete`
- three empty spots for your own keys or layers

![HRM friendly Vim navigation layer on a 33-key keyboard](./img/vim_hrm_navigation.svg)

### 5. Keyboard layout

Choose your keyboard layout among the available ones for Arsenik to work
Expand Down
248 changes: 248 additions & 0 deletions img/vim_hrm_navigation.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
54 changes: 54 additions & 0 deletions kanata/deflayer/navigation_vim_hrm.kbd
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
;; Vim-Navigation layer (optimized for home-row mods):
;; - right: Vim-like arrows on HJKL, home/end page up/down, mouse scroll
;; - left: Tab/Shift-Tab, prev/next, quit, esc, del
;; - top: Super-num (i3/sway) or Alt-num (browser), zoom in/out

;; The `lrld` action stands for "live reload". This will re-parse everything
;; except for linux-dev, i.e. you cannot live reload and switch keyboard devices.

(deflayer navigation
M-1 M-2 M-3 M-4 M-5 lrld M-6 M-7 M-8 M-9 M-0
@qut esc bck fwd XX home pgdn pgup end @run
@pad S-tab tab tab XX lft down up rght @fun
XX XX XX del XX _ @mwl @mwd @mwu @mwr XX
del _ esc
)

;; NumPad
(deflayer numpad
_ _ _ _ _ _ _ _ _ _ _
XX home up end pgup @/ @7 @8 @9 XX
XX lft down rght pgdn @- @4 @5 @6 @0
XX XX XX XX XX _ @, @1 @2 @3 @.
@std @nbs @std
)

;; function keys
(deflayer funpad
XX XX XX XX XX XX XX XX XX XX XX
f1 f2 f3 f4 XX XX XX XX XX XX
f5 f6 f7 f8 XX XX lctl lalt lmet _
f9 f10 f11 f12 XX XX XX XX XX XX XX
_ _ _
)

(defalias
std (layer-switch base)
pad (layer-switch numpad)

fun (layer-while-held funpad)

;; Choose the quit shortcut according to your OS.
;; qut C-q ;; [Control]-[Q] (Linux)
;; qut M-q ;; [Command]-[Q] (macOS)
;; qut A-f4 ;; [Alt]-[F4] (Windows)
qut XX ;; do nothing

;; Mouse wheel emulation
mwu (mwheel-up 50 120)
mwd (mwheel-down 50 120)
mwl (mwheel-left 50 120)
mwr (mwheel-right 50 120)
)

;; vim: set ft=lisp
1 change: 1 addition & 0 deletions kanata/kanata.kbd
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@

(include deflayer/navigation.kbd) ;; ESDF on the left, NumPad on the right
;; (include deflayer/navigation_vim.kbd) ;; HJKL + NumPad on [Space]+[Q]
;; (include deflayer/navigation_vim_hrm.kbd) ;; HJKL + NumPad on [Space]+[A], optimized for home-row mods

;; Replace XX by the keyboard shortcut of your application launcher, if any.
;; Mapped on [Space]+[P] in both navigation layers.
Expand Down

0 comments on commit 0643e40

Please sign in to comment.