diff --git a/frontend/src/app/main/data/workspace/path/helpers.cljs b/frontend/src/app/main/data/workspace/path/helpers.cljs index 79c120d4a1..9f5fb0621b 100644 --- a/frontend/src/app/main/data/workspace/path/helpers.cljs +++ b/frontend/src/app/main/data/workspace/path/helpers.cljs @@ -18,9 +18,6 @@ [app.util.path.subpaths :as ups] [potok.core :as ptk])) -;; CONSTANTS -(defonce enter-keycode 13) - (defn end-path-event? [{:keys [type shift] :as event}] (or (= (ptk/type event) ::common/finish-path) (= (ptk/type event) :esc-pressed) diff --git a/frontend/src/app/main/streams.cljs b/frontend/src/app/main/streams.cljs index c3b41c6b62..e71667fd6a 100644 --- a/frontend/src/app/main/streams.cljs +++ b/frontend/src/app/main/streams.cljs @@ -11,8 +11,8 @@ [app.main.store :as st] [app.main.refs :as refs] [app.common.geom.point :as gpt] - [app.util.globals :as globals]) - (:import goog.events.KeyCodes)) + [app.util.globals :as globals] + [app.util.keyboard :as kbd])) ;; --- User Events @@ -113,8 +113,7 @@ ob (->> (rx/merge (->> st/stream (rx/filter keyboard-event?) - (rx/filter #(let [key (:key %)] - (= key KeyCodes.ALT))) + (rx/filter kbd/altKey?) (rx/map #(= :down (:type %)))) ;; Fix a situation caused by using `ctrl+alt` kind of shortcuts, ;; that makes keyboard-alt stream registring the key pressed but @@ -130,10 +129,7 @@ ob (->> (rx/merge (->> st/stream (rx/filter keyboard-event?) - (rx/filter #(let [key (:key %)] - (or - (= key KeyCodes.CTRL) - (= key KeyCodes.META)))) + (rx/filter kbd/ctrlKey?) (rx/map #(= :down (:type %)))) ;; Fix a situation caused by using `ctrl+alt` kind of shortcuts, ;; that makes keyboard-alt stream registring the key pressed but diff --git a/frontend/src/app/main/ui/components/dropdown.cljs b/frontend/src/app/main/ui/components/dropdown.cljs index b1efae1310..82738e985f 100644 --- a/frontend/src/app/main/ui/components/dropdown.cljs +++ b/frontend/src/app/main/ui/components/dropdown.cljs @@ -3,10 +3,10 @@ [rumext.alpha :as mf] [app.common.uuid :as uuid] [app.util.dom :as dom] + [app.util.keyboard :as kbd] [goog.events :as events] [goog.object :as gobj]) - (:import goog.events.EventType - goog.events.KeyCodes)) + (:import goog.events.EventType)) (mf/defc dropdown' {::mf/wrap-props false} @@ -27,7 +27,7 @@ on-keyup (fn [event] - (when (= (.-keyCode event) 27) ; ESC + (when (kbd/esc? event) (on-close))) on-mount diff --git a/frontend/src/app/main/ui/viewer/thumbnails.cljs b/frontend/src/app/main/ui/viewer/thumbnails.cljs index 5079c99768..f2942eae81 100644 --- a/frontend/src/app/main/ui/viewer/thumbnails.cljs +++ b/frontend/src/app/main/ui/viewer/thumbnails.cljs @@ -24,8 +24,7 @@ [app.common.math :as mth] [app.util.router :as rt] [app.main.data.viewer :as vd]) - (:import goog.events.EventType - goog.events.KeyCodes)) + (:import goog.events.EventType)) (mf/defc thumbnails-content [{:keys [children expanded? total] :as props}] diff --git a/frontend/src/app/main/ui/workspace/shapes/text/editor.cljs b/frontend/src/app/main/ui/workspace/shapes/text/editor.cljs index edfd630e7b..036e07a92d 100644 --- a/frontend/src/app/main/ui/workspace/shapes/text/editor.cljs +++ b/frontend/src/app/main/ui/workspace/shapes/text/editor.cljs @@ -18,6 +18,7 @@ [app.main.ui.cursors :as cur] [app.main.ui.shapes.text.styles :as sts] [app.util.dom :as dom] + [app.util.keyboard :as kbd] [app.util.object :as obj] [app.util.text-editor :as ted] [cuerdas.core :as str] @@ -25,8 +26,7 @@ [okulary.core :as l] [rumext.alpha :as mf]) (:import - goog.events.EventType - goog.events.KeyCodes)) + goog.events.EventType)) ;; --- Text Editor Rendering @@ -84,7 +84,7 @@ on-key-up (fn [event] (dom/stop-propagation event) - (when (= (.-keyCode event) 27) ; ESC + (when (kbd/esc? event) (do (st/emit! :interrupt) (st/emit! dw/clear-edition-mode)))) diff --git a/frontend/src/app/main/ui/workspace/viewport/actions.cljs b/frontend/src/app/main/ui/workspace/viewport/actions.cljs index 6b886dbe99..a4ba68711e 100644 --- a/frontend/src/app/main/ui/workspace/viewport/actions.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/actions.cljs @@ -24,8 +24,7 @@ [beicon.core :as rx] [cuerdas.core :as str] [rumext.alpha :as mf]) - (:import goog.events.WheelEvent - goog.events.KeyCodes)) + (:import goog.events.WheelEvent)) (defn on-mouse-down [{:keys [id blocked hidden type]} drawing-tool text-editing? edition edit-path selected] @@ -263,8 +262,7 @@ (mf/use-callback (fn [event] (let [bevent (.getBrowserEvent ^js event) - key (.-keyCode ^js event) - key (.normalizeKeyCode KeyCodes key) + key (.-key ^js event) ctrl? (kbd/ctrl? event) shift? (kbd/shift? event) alt? (kbd/alt? event) @@ -284,8 +282,7 @@ (defn on-key-up [] (mf/use-callback (fn [event] - (let [key (.-keyCode event) - key (.normalizeKeyCode KeyCodes key) + (let [key (.-key event) ctrl? (kbd/ctrl? event) shift? (kbd/shift? event) alt? (kbd/alt? event) diff --git a/frontend/src/app/util/keyboard.cljs b/frontend/src/app/util/keyboard.cljs index 35007bda01..2ab1e286fc 100644 --- a/frontend/src/app/util/keyboard.cljs +++ b/frontend/src/app/util/keyboard.cljs @@ -6,10 +6,10 @@ (ns app.util.keyboard) -(defn is-keycode? - [keycode] +(defn is-key? + [key] (fn [e] - (= (.-keyCode e) keycode))) + (= (.-key e) key))) (defn ^boolean alt? [event] @@ -27,8 +27,11 @@ [event] (.-shiftKey event)) -(def esc? (is-keycode? 27)) -(def enter? (is-keycode? 13)) -(def space? (is-keycode? 32)) -(def up-arrow? (is-keycode? 38)) -(def down-arrow? (is-keycode? 40)) +(def esc? (is-key? "Escape")) +(def enter? (is-key? "Enter")) +(def space? (is-key? " ")) +(def up-arrow? (is-key? "ArrowUp")) +(def down-arrow? (is-key? "ArrowDown")) +(def altKey? (is-key? "Alt")) +(def ctrlKey? (or (is-key? "Control") + (is-key? "Meta")))