;; Kanata configuration for MacBook Air M2 with advanced home row modifiers ;; Uses tap-hold-release-keys with bilateral combinations for better accuracy (defcfg process-unmapped-keys yes macos-dev-names-include ( "Apple Internal Keyboard / Trackpad" ) macos-dev-names-exclude ( "Voyager" "YubiKey OTP+FIDO+CCID" ) ) (defsrc ;; esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f1 f2 f10 f11 f12 ;; grv 1 2 3 4 5 6 7 8 9 0 - = bspc ;; tab q w e r t y u i o p [ ] \ tab q w e r t y u i o p ;; caps a s d f g h j k l ; ' ret caps a s d f g h j k l ; ;; lsft z x c v b n m , . / rsft z x c v b n m , . / ;; fn lctl lalt lmet spc rmet ralt left down up rght lmet spc rmet ) ;; base layer with home row modifiers and proper media keys (deflayer base brdn brup mute vold volu tab q w e r t y u i o p @esc @a @s @d @f g h @j @k @l @; z x c @v b n m , . / @lmet spc ret ) ;; symbols layer (deflayer symbols brdn brup mute vold volu tab S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-[ S-] S-8 @esc ` S-- - S-= = S-` S-\ S-9 S-0 ' z x c tab b / \ [ ] S-/ lmet spc ret ) ;; numpad layer (deflayer numbers brdn brup mute vold volu tab q w e r t S-8 7 8 9 - @esc @a @s , . g / 4 5 6 S-= z x c v b = 1 2 3 ret lmet spc 0 ) ;; layer without modifiers - used temporarily when tapping home row keys (deflayer nomods brdn brup mute vold volu tab q w e r t y u i o p esc a s d f g h j k l ; z x c v b n m , . / lmet spc ret ) ;; mouse and arrow key layer (deflayer mouse brdn brup mute vold volu tab q w e r t y u i o p @esc @a @s @d @f g left down up right ; z x c v b n m , . / lmet spc ret ) (deffakekeys to-base (layer-switch base) ) (defvar ;; Timing values - adjust based on your typing speed tap-time 135 hold-time 135 ;; Define which keys are on each hand for bilateral combinations left-hand-keys (q w e r t a s d f g z x c v b) right-hand-keys (y u i o p h j k l ; n m , . /) ) (defalias spotlight (multi lmet spc) ;; Command + Space ;; Tap behavior: switch to nomods layer temporarily, then back to base tap (multi (layer-switch nomods) (on-idle-fakekey to-base tap 20) ) ;; Home row modifiers with bilateral combinations ;; Left hand keys with LEFT-side modifiers a (tap-hold-release-keys $tap-time $hold-time (multi a @tap) lmet $right-hand-keys) s (tap-hold-release-keys $tap-time $hold-time (multi s @tap) lalt $right-hand-keys) d (tap-hold-release-keys $tap-time $hold-time (multi d @tap) lctl $right-hand-keys) f (tap-hold-release-keys $tap-time $hold-time (multi f @tap) lsft $right-hand-keys) ;; Right hand keys with RIGHT-side modifiers j (tap-hold-release-keys $tap-time $hold-time (multi j @tap) rsft $left-hand-keys) k (tap-hold-release-keys $tap-time $hold-time (multi k @tap) rctl $left-hand-keys) l (tap-hold-release-keys $tap-time $hold-time (multi l @tap) ralt $left-hand-keys) ; (tap-hold-release-keys $tap-time $hold-time (multi ; @tap) rmet $left-hand-keys) v (tap-hold $tap-time $hold-time (multi v @tap) (layer-toggle numbers)) esc (tap-hold $tap-time $hold-time (multi esc @tap) (layer-toggle mouse)) lmet (layer-toggle symbols) )