Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Kanata] Add a HRM-optimized navigation layer #52

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Copy link
Contributor Author

@fnuttens fnuttens Oct 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I’m convinced this action is relevant but I’m not sure it is discoverable enough, being hidden in this file… On the other hand, making it appear in the root config file (like the @run action) would be confusing because it’s only supported here.


;; 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