             (assoc-in c [:active :state] (rest (get-in c [:active :state])))
             (assoc-in c [:active :letters] (rest (get-in c [:active :letters]))))
           ;; Enter
-          (= "Enter" key) (dispatch-enter %)
+          (= "Enter" key)
+          (do
+            (when (= :typing state)
+              (let [what (last-word (get-in % [:active :letters]))]
+                (go (>! polly-say what))))
+            (dispatch-enter %))
           ;; Ignore everything else
           :default %)))))
 

          (as-> % c
            (assoc-in c [:active :letters] (cons key (get-in c [:active :letters])))
            (if (= :typing state)
              (assoc-in c [:active :state] (cons :typing-space (get-in c [:active :state])))
              (assoc-in c [:active :state] (cons :mashing-space (get-in c [:active :state])))))
          ;; Ignore backspace on empty
          (and (= "Backspace" key) (= :empty state)) %

                                    (str/split "1234567890" ""))))

(defn last-word [letters]
  (as-> letters l
    (if (and (not (empty? letters)) (= " " (first letters)))
      (rest l) l)
    (str/join (reverse (take-while #(not= " " %) l)))))

(defn recognize? [owner word]
  (let [trie (om/observe owner (words))
