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.

## Media controls in funpad

Because funpad stands for fun!
Rationale: mod keys in the existing funpad are pointless with HRMs.
  • Loading branch information
fnuttens committed Oct 22, 2024
1 parent 2aa9171 commit 39b7ebd
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
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 prev pp next XX
f5 f6 f7 f8 XX XX vold volu mute _
f9 f10 f11 f12 XX XX XX brdn bru 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]+[W], 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 39b7ebd

Please sign in to comment.