dotfiles/.config/kanata/conf.kbd

170 lines
5.2 KiB
Text
Raw Normal View History

#|
Kanata Config
○ Ergonomic (kinda?) 34-key QWERTY layout
○ GACS home-row mods
○ Layers for function, number, and symbol keys
○ Dedicated (and non-intrusive!) standard layout toggle for reliant tasks
○ Decently commented for beginners and seasoned veterans alike.
FEEL FREE TO FORK!!!
NOTE: Due to NixOS's declarative nature, you must comment out the
defcfg for proper functionality. Defcfg arguments can be added using
the 'extraDefCfg' variable.
|#
(defcfg
concurrent-tap-hold yes
)
#|
Trying to be minimal in order to reduce constant editing
of layer keys, not to mention how ugly having a 60% layout
is when you have mapped keys in the grid.
|#
(defsrc
caps
q w e r t y u i o p
a s d f g h j k l scln
z x c v b n m , . /
lalt spc ralt
)
;; Variables for clean code
(defvar
tap-time 200
hold-time 250
)
;; Bindings
(defalias
;; Normal keyboard layer for gaming/other normie usage
normie (layer-switch norm)
;; Key chord definitions
chw (chord ch w)
che (chord ch e)
chi (chord ch i)
cho (chord ch o)
chs (chord ch s)
chd (chord ch d)
chk (chord ch k)
chl (chord ch l)
ch_lalt (chord ch lalt)
ch_ralt (chord ch ralt)
;; Remap Caps to tap dance with Escape/Hyper Key & Caps/Navlayer
navlayer (layer-while-held nav)
caps (tap-dance 200
(
(tap-hold $tap-time $hold-time esc (multi lmet lalt lctl lsft))
(tap-hold $tap-time $hold-time caps @navlayer)
)
)
;; Home row mods
a (tap-hold $tap-time $hold-time a lmet)
s (tap-hold $tap-time $hold-time s lalt)
d (tap-hold $tap-time $hold-time d lctl)
f (tap-hold $tap-time $hold-time f lsft)
j (tap-hold $tap-time $hold-time j rsft)
k (tap-hold $tap-time $hold-time k lctl)
l (tap-hold $tap-time $hold-time l lalt)
scln (tap-hold $tap-time $hold-time scln rmet)
;; Numpad layer
numpad (layer-while-held num)
g (tap-hold $tap-time $hold-time g @numpad)
;; Function key layer
fnkeys (layer-while-held fn)
h (tap-hold $tap-time $hold-time h @fnkeys)
#|
Meh key when V or N are held down to allow for either hand to
use meh key for Raycast shortcuts.
|#
v (tap-hold $tap-time $hold-time v (multi lsft lalt lmet))
n (tap-hold $tap-time $hold-time n (multi lsft lalt lmet))
;; Holding Spacebar activates symbol layer
symbols (layer-while-held symbol)
spc (tap-hold $tap-time $hold-time spc @symbols)
;; Media layer when Z or / are held.
medialy (layer-while-held md)
z (tap-hold $tap-time $hold-time z @medialy)
/ (tap-hold $tap-time $hold-time / @medialy)
)
;; Chord definitions. Kind of weird to read as a layperson
;; so I provided sufficient comments for general understanding.
(defchords ch 50
(w ) w ;; W => W
( e) e ;; E => E
(w e) ret ;; W + E => Enter
(i ) i ;; I => I
( o) o ;; O => O
(i o) bspc ;; I + O => Backspace
(s ) @s ;; S => S
( d) @d ;; D => D
(s d) tab ;; S + D => Tab
(k ) @k ;; K => K (See defalias)
( l) @l ;; L => L (See defalias)
(k l) esc ;; K + L => Escape
(lalt ) lalt ;; LAlt => LAlt
( ralt) ralt ;; RAlt => RAlt
#|
Put simply, the below line allows for toggling a no-bind
layer for when you may require a standard layout (such as
playing Street Fighter, Counter Strike, etc.) by pressing
both alt keys at the same time. You can toggle back to the
base layer by holding both alts at the same time, as to allow
for normal functionality when holding either key down for a shortcut.
|#
(lalt ralt) (tap-hold $tap-time $hold-time @normie (layer-switch base))
)
;; Base layer with all binds enabled
(deflayer base
@caps
q @chw @che r t y u @chi @cho p
@a @chs @chd @f @g @h @j @chk @chl @scln
@z x c @v b @n m , . @/
@ch_lalt @spc @ch_ralt
)
;; Navigation layer
(deflayer nav
_
mbck (movemouse-up 3 3) mfwd _ _ _ mlft mrgt pgup pgdn
(movemouse-left 3 3) (movemouse-down 3 3) (movemouse-right 3 3) _ home left down up right end
_ _ _ _ _ _ _ _ _ _
_ _ _
)
;; Numpad Layer
(deflayer num
_
_ _ _ _ _ _ 7 8 9 _
_ _ _ _ _ _ 4 5 6 0 _
_ _ _ _ _ 1 2 3 _
_ _ _
)
;; Function key layer
(deflayer fn
_
f1 f2 f3 f4 _ _ _ _ _ _
f5 f6 f7 f8 _ _ _ _ _ _ _
f9 f10 f11 f12 _ _ _ _ _
_ _ _
)
;; Symbol layer
(deflayer symbol
_
S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 S-9 S-0
- S-= S-[ S-] [ ] S-` S-scln S-\ \
= _ _ ` _ S-- _ _ ' S-'
_ _ _
)
;; Aformentioned standard layer with combo binds for toggling back
;; to base layer.
(deflayer norm
esc
q w e r t y u i o p
a s d f g h j k l scln
z x c v b n m , . /
@ch_lalt spc @ch_ralt
)
(deflayer md
_
_ _ _ _ _ _ _ _ _ prtsc
prev pp next mute vold volu ins del brdn brup
_ _ _ _ _ _ _ _ _ _
_ _ _
)