;; Artsey v0.8.1 for Kanata (defcfg sequence-timeout 2000 process-unmapped-keys no concurrent-tap-hold yes movemouse-inherit-accel-state yes movemouse-smooth-diagonals yes ) (defvar chord-timeout 250 tap-repress-timeout 200 hold-timeout 500 leader-timeout 1000 mouse-interval 1 mouse-accel-time 500 mouse-min 1 mouse-max 4 wheel-interval 50 wheel-distance 120 ) (defsrc q w e r u i o p a s d f j k l ; ) ;; Layers (deflayer base @s-base @t-base @r-base @a-base @base-a @base-r @base-t @base-s @o-base @i-base @y-base @e-base @base-e @base-y @base-i @base-o ) (deflayer numbers @s-num @t-num @r-num @a-num @num-a @num-r @num-t @num-s @o-num @i-num @y-num @e-num @num-e @num-y @num-i @num-o ) (deflayer parens @s-par @t-par @r-par @a-par @par-a @par-r @par-t @par-s @o-par @i-par @y-par @e-par @par-e @par-y @par-i @par-o ) (deflayer symbols @s-sym @t-sym @r-sym @a-sym @sym-a @sym-r @sym-t @sym-s @o-sym @i-sym @y-sym @e-sym @sym-e @sym-y @sym-i @sym-o ) (deflayer nav @s-nav @t-nav @r-nav @a-nav @nav-a @nav-r @nav-t @nav-s @o-nav @i-nav @y-nav @e-nav @nav-e @nav-y @nav-i @nav-o ) (deflayer mouse @s-mse @t-mse @r-mse @a-mse @mse-a @mse-r @mse-t @mse-s @o-mse @i-mse @y-mse @e-mse @mse-e @mse-y @mse-i @mse-o ) (deflayer custom @s-cus @t-cus @r-cus @a-cus @cus-a @cus-r @cus-t @cus-s @o-cus @i-cus @y-cus @e-cus @cus-e @cus-y @cus-i @cus-o ) ;; Keys (deftemplate key (layer key left-combos right-combos) (defalias (concat $key - $layer) (chord $left-combos $key) (concat $layer - $key) (chord $right-combos $key) ) ) (t! key base a left-base-combos right-base-combos) (t! key base r left-base-combos right-base-combos) (t! key base t left-base-combos right-base-combos) (t! key base s left-base-combos right-base-combos) (t! key base e left-base-combos right-base-combos) (t! key base y left-base-combos right-base-combos) (t! key base i left-base-combos right-base-combos) (t! key base o left-base-combos right-base-combos) (t! key num a left-num-combos right-num-combos) (t! key num r left-num-combos right-num-combos) (t! key num t left-num-combos right-num-combos) (t! key num s left-num-combos right-num-combos) (t! key num e left-num-combos right-num-combos) (t! key num y left-num-combos right-num-combos) (t! key num i left-num-combos right-num-combos) (t! key num o left-num-combos right-num-combos) (t! key par a left-par-combos right-par-combos) (t! key par r left-par-combos right-par-combos) (t! key par t left-par-combos right-par-combos) (t! key par s left-par-combos right-par-combos) (t! key par e left-par-combos right-par-combos) (t! key par y left-par-combos right-par-combos) (t! key par i left-par-combos right-par-combos) (t! key par o left-par-combos right-par-combos) (t! key sym a left-sym-combos right-sym-combos) (t! key sym r left-sym-combos right-sym-combos) (t! key sym t left-sym-combos right-sym-combos) (t! key sym s left-sym-combos right-sym-combos) (t! key sym e left-sym-combos right-sym-combos) (t! key sym y left-sym-combos right-sym-combos) (t! key sym i left-sym-combos right-sym-combos) (t! key sym o left-sym-combos right-sym-combos) (t! key nav a left-nav-combos right-nav-combos) (t! key nav r left-nav-combos right-nav-combos) (t! key nav t left-nav-combos right-nav-combos) (t! key nav s left-nav-combos right-nav-combos) (t! key nav e left-nav-combos right-nav-combos) (t! key nav y left-nav-combos right-nav-combos) (t! key nav i left-nav-combos right-nav-combos) (t! key nav o left-nav-combos right-nav-combos) (t! key mse a left-mse-combos right-mse-combos) (t! key mse r left-mse-combos right-mse-combos) (t! key mse t left-mse-combos right-mse-combos) (t! key mse s left-mse-combos right-mse-combos) (t! key mse e left-mse-combos right-mse-combos) (t! key mse y left-mse-combos right-mse-combos) (t! key mse i left-mse-combos right-mse-combos) (t! key mse o left-mse-combos right-mse-combos) (t! key cus a left-cus-combos right-cus-combos) (t! key cus r left-cus-combos right-cus-combos) (t! key cus t left-cus-combos right-cus-combos) (t! key cus s left-cus-combos right-cus-combos) (t! key cus e left-cus-combos right-cus-combos) (t! key cus y left-cus-combos right-cus-combos) (t! key cus i left-cus-combos right-cus-combos) (t! key cus o left-cus-combos right-cus-combos) ;; Shared aliases (defalias base-layer (layer-switch base) nav-layer (layer-switch nav) mse-layer (layer-switch mouse) ;; Layer-hold keys hold-num (tap-hold $tap-repress-timeout $hold-timeout (macro s) (layer-while-held numbers)) hold-par (tap-hold $tap-repress-timeout $hold-timeout (macro a) (layer-while-held parens)) hold-sym (tap-hold $tap-repress-timeout $hold-timeout (macro e) (layer-while-held symbols)) hold-cus (tap-hold $tap-repress-timeout $hold-timeout (macro o) (layer-while-held custom)) ;; One-shot modifiers os-sft (one-shot $leader-timeout lsft) os-ctl (one-shot $leader-timeout lctl) os-met (one-shot $leader-timeout lmet) os-alt (one-shot $leader-timeout lalt) shlock (on-press toggle-virtualkey shift-lock) ;; Symbol helpers excl S-1 ques S-/ lp S-9 rp S-0 lb [ rb ] lc S-[ rc S-] bsl \ grv ` apos ' ;; Mouse movement helpers mmu (movemouse-accel-up $mouse-interval $mouse-accel-time $mouse-min $mouse-max) mmd (movemouse-accel-down $mouse-interval $mouse-accel-time $mouse-min $mouse-max) mml (movemouse-accel-left $mouse-interval $mouse-accel-time $mouse-min $mouse-max) mmr (movemouse-accel-right $mouse-interval $mouse-accel-time $mouse-min $mouse-max) mwu (mwheel-up $wheel-interval $wheel-distance) mwd (mwheel-down $wheel-interval $wheel-distance) ) (defvirtualkeys shift-lock lsft ) ;; Chords (deftemplate base-layer-chords () (r e i) @nav-layer (a t y) @mse-layer ) (deftemplate nav-layer-chords () (r e i) @base-layer ) (deftemplate mouse-layer-chords () (a t y) @base-layer ) (deftemplate global-chords () (r t s e) @os-sft (a e) (macro ent) (e y i o) (macro spc) (a r t o) (macro tab) (r e) (macro bspc) (r i) (macro del) (a r o) (macro esc) (s e) @os-ctl (s y) @os-met (s i) @os-alt (r y) @shlock ) (deftemplate defbasechords (name) (defchords $name $chord-timeout (t! base-layer-chords) (t! global-chords) ;; Layer-hold base keys. (s) @hold-num (a) @hold-par (e) @hold-sym (o) @hold-cus ;; English alphabet. (r) (macro r) (t) (macro t) (y) (macro y) (i) (macro i) (e o) (macro b) (e y) (macro c) (a r t) (macro d) (a r) (macro f) (r t) (macro g) (e i) (macro h) (t s) (macro j) (y o) (macro k) (e y i) (macro l) (y i o) (macro m) (i o) (macro n) (e i o) (macro p) (a t s) (macro q) (y i) (macro u) (r s) (macro v) (a s) (macro w) (r t s) (macro x) (a r t s) (macro z) ;; Base punctuation. (a y i) (macro @apos) (a y) (macro .) (a i) (macro ,) (t i) (macro @excl) (a o) (macro /) (o i y a) (macro caps) ) ) (deftemplate defnumchords (name) (defchords $name $chord-timeout (t! base-layer-chords) (t! global-chords) (a) (macro Digit1) (r) (macro Digit2) (t) (macro Digit3) (e) (macro Digit4) (y) (macro Digit5) (i) (macro Digit6) (a r) (macro Digit7) (r t) (macro Digit8) (e y) (macro Digit9) (y i) (macro Digit0) ) ) ;; Parens and brackets are arranged in open/close pairs, so the left/right ;; hands aren't exact mirrors. (deftemplate defparleftchords (name) (defchords $name $chord-timeout (t! base-layer-chords) (t! global-chords) (r) (macro @rp) (t) (macro @lp) (s) (macro @lc) (y) (macro @rb) (i) (macro @lb) (o) (macro @rc) ) ) (deftemplate defparrightchords (name) (defchords $name $chord-timeout (t! base-layer-chords) (t! global-chords) (r) (macro @lp) (t) (macro @rp) (s) (macro @lc) (y) (macro @lb) (i) (macro @rb) (o) (macro @rc) ) ) (deftemplate defsymchords (name) (defchords $name $chord-timeout (t! base-layer-chords) (t! global-chords) (a) (macro @excl) (r) (macro @bsl) (t) (macro ;) (s) (macro @grv) (y) (macro @ques) (i) (macro -) (o) (macro =) ) ) ;; Navigation keys are arranged in a spatially logical layout, with up/down in ;; the center and left/right on the sides so also not an exact mirror. (deftemplate defnavleftchords (name) (defchords $name $chord-timeout (t! nav-layer-chords) (t! global-chords) (a) (macro end) (r) (macro up) (t) (macro home) (s) (macro pgup) (e) (macro rght) (y) (macro down) (i) (macro left) (o) (macro pgdn) ) ) (deftemplate defnavrightchords (name) (defchords $name $chord-timeout (t! nav-layer-chords) (t! global-chords) (a) (macro home) (r) (macro up) (t) (macro end) (s) (macro pgup) (e) (macro left) (y) (macro down) (i) (macro rght) (o) (macro pgdn) ) ) ;; Mouse movement keys are also arranged in a spatially logical layout like the ;; nav keys, s so also not an exact mirror. (deftemplate defmseleftchords (name) (defchords $name $chord-timeout (t! mouse-layer-chords) (t! global-chords) (a) mltp (r) @mmu (t) mrtp (s) @mwu (e) @mmr (y) @mmd (i) @mml (o) @mwd ) ) (deftemplate defmserightchords (name) (defchords $name $chord-timeout (t! mouse-layer-chords) (t! global-chords) (a) mltp (r) @mmu (t) mrtp (s) @mwu (e) @mml (y) @mmd (i) @mmr (o) @mwd ) ) (deftemplate defcuschords (name) (defchords $name $chord-timeout (t! base-layer-chords) (t! global-chords) (a) (macro mute) (r) (macro ins) (t) (macro volu) (e) rsft (y) (macro prnt) (i) (macro vold) ) ) (t! defbasechords left-base-combos) (t! defbasechords right-base-combos) (t! defnumchords left-num-combos) (t! defnumchords right-num-combos) (t! defparleftchords left-par-combos) (t! defparrightchords right-par-combos) (t! defsymchords left-sym-combos) (t! defsymchords right-sym-combos) (t! defnavleftchords left-nav-combos) (t! defnavrightchords right-nav-combos) (t! defmseleftchords left-mse-combos) (t! defmserightchords right-mse-combos) (t! defcuschords left-cus-combos) (t! defcuschords right-cus-combos)