diff --git a/.DS_Store b/.DS_Store
index 76e20cb639d341135597b349b245513d12470a1c..f2b4ad9acc52a2fd2ab9bc29fcbef9318ee5cbe2 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/app/src/components/NodesLayer.vue b/app/src/components/NodesLayer.vue
index 3054bc0c03109d857e2f62767ff6ecb037835cd3..f2aae147b43f27cee4be1d4c428eee2819e77335 100644
--- a/app/src/components/NodesLayer.vue
+++ b/app/src/components/NodesLayer.vue
@@ -49,9 +49,9 @@
 
             <p class="info">*markdown supported &amp; autosaves</p>
             <div class="btn-row">
-              <BaseButton buttonClass="danger" @click="deleteFlag()"
+              <!-- <BaseButton buttonClass="danger" @click="deleteFlag()"
                 >Delete</BaseButton
-              >
+              > -->
               <div v-if="value.read_mode == true">
                 <BaseButton
                   class="read"
@@ -122,7 +122,7 @@
             <p class="info">*markdown supported &amp; autosaves</p>
             <div class="btn-row">
               <BaseButton buttonClass="danger" @click="deleteFlag()"
-                >Delete</BaseButton
+                >Hide</BaseButton
               >
               <BaseButton
                 buttonClass="new-link"
@@ -206,7 +206,7 @@
             <p class="info">*markdown supported &amp; autosaves</p>
             <div class="btn-row">
               <BaseButton buttonClass="danger" @click="deleteFlag()"
-                >Delete</BaseButton
+                >Hide</BaseButton
               >
               <div v-if="value.read_mode == true">
                 <BaseButton
diff --git a/app/src/components/mixins/shortcutsMixin.js b/app/src/components/mixins/shortcutsMixin.js
index e6d1c14f404abeb69daf543afe5e9fa32c8c1059..64634d063b72d039ca0cbb7b029050a8eaf5fcd9 100644
--- a/app/src/components/mixins/shortcutsMixin.js
+++ b/app/src/components/mixins/shortcutsMixin.js
@@ -7,9 +7,29 @@ export const shortcutsMixin = {
       if (this.shortcutstate == false) {
         if (e.keyCode == 78) {
           // n for new
-
           this.addNode()
         }
+        if (e.keyCode == 83) {
+          // s for selection
+          this.selectMode('select')
+        }
+        if (e.keyCode == 65) {
+          // a as alternative for selection
+          this.selectMode('select')
+        }
+        if (e.keyCode == 67) {
+          // c for connect
+          this.selectMode('connect')
+        }
+        if (e.keyCode == 77) {
+          // m for selection
+          this.selectMode('move')
+        }
+        // FIXME: doesn't trigger upload file dialog yet but does swap modes
+        if (e.keyCode == 85) {
+          // u for upload
+          this.selectMode('upload')
+        }
       }
     },
   },
diff --git a/app/src/views/Home.vue b/app/src/views/Home.vue
index ec87b79c71cd310490be19d7d9478ab7754b1607..fb5a99b57eb570136285fe871f6eb1c8b934888a 100644
--- a/app/src/views/Home.vue
+++ b/app/src/views/Home.vue
@@ -137,6 +137,7 @@ export default {
       myNodes: (state) => state.myNodes,
       otherNodes: (state) => state.otherNodes,
       shortcutstate: (state) => state.shortcutstate,
+      toolmode: (state) => state.ui.mode,
       connections: (state) => state.configConnections,
     }),
     ...mapGetters({
@@ -200,6 +201,9 @@ export default {
     addNode() {
       this.$store.dispatch('addNode')
     },
+    selectMode(mode) {
+      this.$store.commit('ui/setMode', mode)
+    },
 
     offlineTriggered() {
       this.offline = true