--- layout: developer-doc title: Shortcuts category: product tags: [product,ui] --- ## General Assumptions #### The meta key. The meta key was introduced to make the shortcuts consistent across platforms. It is defined as command on macOS, and as ctrl on Windows and Linux. #### Keyboard-only Workflow The GUI and all shortcuts were designed in a way to allow both efficient mouse-only as well as keyboard-only workflows. In most cases, there is a relation between mouse and keyboard shortcuts, namely, the `left-mouse-button` corresponds to `enter`. For example, stepping into a node is done by either double clicking the node, or just pressing the enter key. #### Missing / not working shortcuts Some of the shortcuts presented below are marked with the :warning: icon, which means, that they are planned, but not yet implemented. Feel free to contribute and help us implement them! Shortcuts marked with the :bangbang: icon should work, but are reported to be broken and require further investigation. ## Graph Editor #### General Shortcuts | Shortcut | Action | | -------- | ------ | | ctrl+shift+s | Toggle light/dark application style. Currently doesn't work properly, as the Theme Switcher is not created yet. (https://github.com/enso-org/ide/issues/795)| | ctrl+` | Show Code Editor | | meta+s | Save module | #### Navigation | Shortcut | Action | | -------- | ------ | | Drag gesture (two fingers) | Pan the scene. | Pinch gesture (two fingers) | Zoom the scene. | MMB drag | Pan the scene. | RMB drag | Zoom the scene. | LMB double press node name | Step into the node. | :warning: LMB double press background | Step out of the current node. | enter | Step in the last selected node. | alt+enter | Step out of the current node. #### Node Layout | Shortcut | Action | | -------- | ------ | | LMB drag non-selected node name | Move the node to new position (dragging do not modify selection). | | LMB drag selected node name | Move all selected nodes the node to new positions. | #### Node Selection | Shortcut | Action | | --- | --- | | LMB click node name | Deselect all nodes. Select the target node. | | LMB click background | Deselect all nodes. | | :warning: LMB drag background | Select nodes using selection-box. | | shift + LMB click node name | Add / remove node to the selection group. | | :warning: shift + LMB drag background | Add / remove nodes to the selection group. | | :warning: *-arrow | Select node on the right side of the newest selected node. | | :warning: cmd + a | Select all nodes. | | :warning: escape | Deselect all nodes (if not in a mode, like edit mode). | | shift + ctrl + LMB click node name | Add node to the selection group. | | :warning: shift + ctrl + LMB drag background | Add nodes to the selection group. | | shift + alt + LMB click node name | Remove node to the selection group. | | :warning: shift + alt + LMB drag background | Remove nodes to the selection group. | | shift + ctrl + alt + LMB click node name | Inverse node selection. | | :warning: shift + ctrl + alt + LMB drag background | Inverse nodes selection. | #### Node Editing | Shortcut | Action | | -------- | ------ | | tab | Show / hide node searcher. | | backspace | Remove selected nodes. | | cmd+g | Collapse (group) selected nodes. | | meta+LMB | Start editing node expression. | | meta+enter | Start editing node expression. | | enter or LMB on suggestion | Pick selected suggestion and commit editing. | #### Visualization | Shortcut | Action | | -------- | ------ | | space | Toggle visualization visibility of the selected node. | | space hold | Preview visualization of the selected node (hide on release). | | space double press | Toggle visualization fullscreen mode (with improper depth sorting now). | | ctrl + space | Cycle visualizations of the selected node. | | :bangbang: cmd + \ | Toggle documentation view visibility | #### Debug | Shortcut | Action | | -------- | ------ | | ctrl + d | Send test data to the selected node. | | ctrl + shift + enter | Push a hardcoded breadcrumb without navigating. | | ctrl + shift + arrow up | Pop a breadcrumb without navigating. |