diff --git a/.config/kanata/conf.kbd b/.config/kanata/conf.kbd deleted file mode 120000 index d30b93f..0000000 --- a/.config/kanata/conf.kbd +++ /dev/null @@ -1 +0,0 @@ -/mnt/c/Tools/Kanata/conf.kbd \ No newline at end of file diff --git a/.config/kanata/conf.kbd b/.config/kanata/conf.kbd new file mode 100755 index 0000000..3c25e7f --- /dev/null +++ b/.config/kanata/conf.kbd @@ -0,0 +1,173 @@ +#| + 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 + ;; process-unmapped-keys false + concurrent-tap-hold yes ;; Required to use chords +) +#| + 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 +) +;; MacOS specific. Swap the meta and control places for optimal +;; home row mod placement. +(platform (macos) + (defoverrides + (lmet lctl) + (lctl lmet) + ) +) +;; 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 Escape/Nav layer + navlayer (layer-while-held nav) + caps (tap-hold $tap-time $hold-time (tap-dance 200 (esc 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) + #| + Hyper key when V or N are held down to allow for either hand to + use hyper key for AHK/Raycast shortcuts. + |# + v (tap-hold $tap-time $hold-time v (multi lsft lctl lalt lmet)) + n (tap-hold $tap-time $hold-time n (multi lsft lctl 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 + _ _ _ _ _ _ _ _ _ _ + _ _ _ +) \ No newline at end of file