   :args (s/cat :stage spec/stage?))
 (defn show-tooltips! [^Stage stage]
   (let [scene (.getScene stage)]
-    (doseq [id (keys mappings)]
+    (doseq [id (keys id->key-char)]
       (when-let [control (.lookup scene (keyword->fx-id id))]
         (show-tooltip! stage control)))))
 

  ([nodes]
   (doseq [node nodes]
     (when-let [id (.getId node)]
       (when-let [text (get mappings (fx-id->keyword id))]
         (add-tooltip! node text)))))
  ([^Scene scene ids]
   (doseq [id ids]
     (let [control (.lookup scene (keyword->fx-id id))
           text (get mappings id)]
       (when (and control text)
         (add-tooltip! control text))))))


           [javafx.beans.value ChangeListener]
           [javafx.application Platform]))

(def id->key-char {; project pane
                   :start "p"
                   :import-project "o"
                   :rename "m"
                   :remove "g"
                   :project-tree "↑ ↓ ↲"
                   ; editor pane
                   :up "u"
                   :save "s"
                   :undo "z"
                   :redo "Z"
                   :instarepl "l"
                   :find "f"
                   :replace "R"
                   :close "w"
                   ; build pane
                   :run "r"
                   :run-repl "X"
                   :reload "S"
                   :eval "e"
                   :build "b"
                   :test "t"
                   :stop "i"
                   :build-console "A"
                   ; directory pane
                   :new-file "n"
                   :edit "M"
                   :open-in-browser "F"
                   :cancel "C"})

(def key-char->id (set/map-invert id->key-char))

(fdef keyword->fx-id
  :args (s/cat :k keyword?)
