From 871862e6825cfb47290c34ff2ebea3b177bef3f2 Mon Sep 17 00:00:00 2001 From: Hunter Haugen Date: Fri, 29 May 2026 08:28:32 -0700 Subject: [PATCH] Add artsey --- artsey.kbd | 423 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 423 insertions(+) create mode 100644 artsey.kbd diff --git a/artsey.kbd b/artsey.kbd new file mode 100644 index 0000000..77b554f --- /dev/null +++ b/artsey.kbd @@ -0,0 +1,423 @@ +;; 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)