kanata-layouts/artsey.kbd
2026-05-29 08:38:10 -07:00

423 lines
10 KiB
Text

;; 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)