Hi, it is related to my previous comment:
your post in aMAZE jam comments
There is a solution. You save pressed keys into the state and then you reduce on top of them.
You can see the implementation in this framework based on top of Quill.
https://github.com/Kimbsy/quip/blob/master/src/quip/input.clj
(defn key-pressed "Reduce applying a handler function: (f state e) accross the collection of `:key-pressed-fns` in the current scene." [{:keys [input-enabled? scenes current-scene] :as state} e] (if input-enabled? (let [default-handled-state (default-key-pressed state e) scene-handlers (get-in scenes [current-scene :key-pressed-fns])] (reduce (fn [acc-state f] (f acc-state e)) default-handled-state scene-handlers)) state)) (defn key-released "Reduce applying a handler function: (f state e) accross the collection of `:key-released-fns` in the current scene." [{:keys [input-enabled? scenes current-scene] :as state} e] (if input-enabled? (let [default-handled-state (default-key-released state e) scene-handlers (get-in scenes [current-scene :key-released-fns])] (reduce (fn [acc-state f] (f acc-state e)) default-handled-state scene-handlers)) state))