]> git.armaanb.net Git - atreides.git/blobdiff - sim.fnl
Clean up root
[atreides.git] / sim.fnl
diff --git a/sim.fnl b/sim.fnl
deleted file mode 100644 (file)
index f27fc9b..0000000
--- a/sim.fnl
+++ /dev/null
@@ -1,159 +0,0 @@
-;; Atreus simulator
-;; Copyright © 2020 Phil Hagelberg and contributors
-;; released under the GPLv3 or later
-
-;; main.lua:
-;; dofile("../fennel/fennel.lua").dofile("sim.fnl", {correlate=true})
-
-(var scale 2.5)
-(local width 260)
-(local height 150)
-
-(local cols 6) ; per hand
-(local rows 4)
-(local angle (math.rad 10))
-(local corner-radius 8)
-(local bottom 100) ; outer bottom
-
-(local switch-height 13.72)
-(local switch-width 13.62)
-(local switch-spacing 18.6)
-
-;;;; switches
-(local offsets [8.0 5.0 0.0 6.0 11.0 15.0])
-
-(local hand-width 106.621)
-(local hand-height (+ (* switch-spacing rows) (- switch-spacing switch-height)
-                      (. offsets 1)))
-(local switch-x-offset (* 1.75 corner-radius))
-(local switch-y-offset (- bottom hand-height (-  (math.sqrt corner-radius))))
-
-(local switches-left [])
-(local switches-right [])
-(local switches-fn-left [])
-(local switches-fn-right [])
-
-(local layout-l
-       [["'" "," :. :p :y]
-        [:a :o :e :u :i]
-        [";" :q :j :k :x "`"]
-        [:esc :tab :super :lshift :backspace :ctrl]])
-(local layout-r
-       [[:f :g :c :r :l]
-        [:d :h :t :n :s]
-        ["\\" :b :m :w :v :z]
-        [:alt " " :fn :- :/ "\n"]])
-
-(local layout-fl
-       [["!" "@" :up "$" "%"]
-        ["(" :left :down :right ")"]
-        ["[" "]" "#" "{" "}" "^"]
-        [:l2 :insert :super2 :rshift :backspace2 :ctrl2]])
-
-(local layout-fr
-       [[:pgup :7 :8 :9 :backspace3]
-        [:pgdn :4 :5 :6 :blank]
-        ["&" "*" :1 :2 :3 :+]
-        [:alt2 :space2 :fn2 :.2 :0 :=]])
-
-(local keys {})
-
-(for [col 1 cols] ; switches
-  (for [row 1 rows]
-    (when (not (and (= 6 col) (<= row 2)))
-      (let [lx (+ (* switch-spacing (- col 1)))
-            rx (- (* (- cols 1) switch-spacing) lx)
-            y (+ (* switch-spacing (- row 1)) (. offsets col))
-            fn-y (+ y bottom)
-            kl (table.remove (. layout-l row) 1)
-            kr (table.remove (. layout-r row))
-            kfl (table.remove (. layout-fl row) 1)
-            kfr (table.remove (. layout-fr row))]
-        (table.insert switches-left {:x lx :y y :p [] :k kl})
-        (table.insert switches-right {:x rx :y y :p [] :k kr})
-        (table.insert switches-fn-left {:x lx :y fn-y :p [] :k kfl :fn true})
-        (table.insert switches-fn-right {:x rx :y fn-y :p [] :k kfr :fn true})
-        (tset keys kl (. switches-left (# switches-left)))
-        (tset keys kr (. switches-right (# switches-right)))
-        (tset keys kfl (. switches-fn-left (# switches-fn-left)))
-        (tset keys kfr (. switches-fn-right (# switches-fn-right)))))))
-
-(fn press [pressed]
-  (let [key (. keys (pressed:lower))]
-    (when key
-      (table.insert key.p {:ox (love.math.randomNormal 2 0)
-                           :oy (love.math.randomNormal 2 0)
-                           :r (love.math.randomNormal 2 8)})
-      (when key.fn
-        (press :fn))
-      (when (not= pressed (pressed:lower))
-        (press :lshift)))))
-
-(var text "The Atreus is a mechanical keyboard designed primarily to match the
-shape of human hands and to be as portable as possible. The case
-measures 26x12cm and lacks even a number row, relying heavily upon the
-=fn= key. There is a circuit board for this design, but it's also
-possible to [[http://wiki.geekhack.org/index.php?title=Hard-Wiring_How-To]
-[manually wire the matrix]]. ")
-
-(fn tick []
-  (when (< 0 (# text))
-    (let [key (text:sub 1 1)]
-      (press key)
-      (set text (text:sub 2)))))
-
-(var t 0)
-(fn love.update [dt]
-  (set t (+ t dt))
-  (when (< 0.2 t)
-    (tick)
-    (set t 0)))
-
-(fn draw-switch [{: x : y : k : p}]
-  (love.graphics.rectangle :line x y switch-width switch-height)
-  (when (= (# k) 1)
-    (love.graphics.print k (+ x 2) y))
-  (love.graphics.setColor 0 0.8 0.9 0.1)
-  (each [_ p (ipairs p)]
-    (love.graphics.circle :fill
-                          (+ x p.ox (/ switch-width 2))
-                          (+ y p.oy (/ switch-height 2))
-                          p.r))
-  (love.graphics.setColor 0 0 0))
-
-(fn love.draw []
-  (let [(w h) (love.graphics.getDimensions)]
-    (love.graphics.setColor 1 1 1)
-    (love.graphics.rectangle :fill 0 0 w h)
-    (love.graphics.setColor 0 0 0)
-    (love.graphics.scale scale)
-
-    (love.graphics.push)
-    (love.graphics.translate (- width hand-width switch-x-offset)
-                             switch-y-offset)
-    (love.graphics.rotate angle 0 hand-height)
-    (love.graphics.translate (- hand-width) 0)
-    (each [_ s (pairs switches-left)]
-      (draw-switch s))
-    (each [_ s (pairs switches-fn-left)]
-      (draw-switch s))
-    (love.graphics.pop)
-
-    (love.graphics.push)
-    (love.graphics.translate (- width hand-width switch-x-offset)
-                             switch-y-offset)
-    (love.graphics.rotate (- angle))
-    (each [_ s (pairs switches-right)]
-      (draw-switch s))
-    (each [_ s (pairs switches-fn-right)]
-      (draw-switch s))
-    (love.graphics.pop)))
-
-(fn love.keypressed [key]
-  (match key
-    "=" (set scale (+ scale 0.2))
-    "-" (set scale (- scale 0.2))
-    "escape" (love.event.quit)
-    "return" (let [fennel (dofile "../fennel/fennel.lua")]
-               (fennel.dofile "sim.fnl"))
-    key (press key)))