2
0
Björn Ritzl 5 жил өмнө
parent
commit
daa753e08c

+ 101 - 0
docs/en/manuals/editor.md

@@ -131,3 +131,104 @@ Type a suitable name for the new file. The full file name including the file typ
 To add asset files (images, sounds, models etc) to your project, simply drag and drop them to the correct position in the *Assets* browser. This will make _copies_ of the files at the selected location in the project file structure. Read more about [how to import assets in our manual](/manuals/importing-assets/).
 
 ![Import files](images/editor/import.png){srcset="images/editor/[email protected] 2x"}
+
+## Keyboard shortcuts
+
+| Command | Windows | macOS | Linux |
+|---------|---------|-------|-------|
+| erase tool | <kbd>Shift</kbd>+<kbd>E</kbd> | <kbd>Shift</kbd>+<kbd>E</kbd> | <kbd>Shift</kbd>+<kbd>E</kbd> |
+| close | <kbd>Ctrl</kbd>+<kbd>W</kbd> | <kbd>Cmd</kbd>+<kbd>W</kbd> | <kbd>Ctrl</kbd>+<kbd>W</kbd> |
+| select page down | <kbd>Shift</kbd>+<kbd>Page Down</kbd> | <kbd>Shift</kbd>+<kbd>Page Down</kbd> | <kbd>Shift</kbd>+<kbd>Page Down</kbd> |
+| documentation | <kbd>F1</kbd> | <kbd>F1</kbd> | <kbd>F1</kbd> |
+| cut | <kbd>Ctrl</kbd>+<kbd>X</kbd> | <kbd>Cmd</kbd>+<kbd>X</kbd> | <kbd>Ctrl</kbd>+<kbd>X</kbd> |
+| copy | <kbd>Ctrl</kbd>+<kbd>C</kbd> | <kbd>Cmd</kbd>+<kbd>C</kbd> | <kbd>Ctrl</kbd>+<kbd>C</kbd> |
+| find prev | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>G</kbd> | <kbd>Shift</kbd>+<kbd>Cmd</kbd>+<kbd>G</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>G</kbd> |
+| show palette | <kbd>Space</kbd> | <kbd>Space</kbd> | <kbd>Space</kbd> |
+| goto line | <kbd>Ctrl</kbd>+<kbd>L</kbd> | <kbd>Cmd</kbd>+<kbd>L</kbd> | <kbd>Ctrl</kbd>+<kbd>L</kbd> |
+| select page up | <kbd>Shift</kbd>+<kbd>Page Up</kbd> | <kbd>Shift</kbd>+<kbd>Page Up</kbd> | <kbd>Shift</kbd>+<kbd>Page Up</kbd> |
+| delete next word | <kbd>Ctrl</kbd>+<kbd>Delete</kbd> | <kbd>Alt</kbd>+<kbd>Delete</kbd> | <kbd>Ctrl</kbd>+<kbd>Delete</kbd> |
+| scene stop | <kbd>Ctrl</kbd>+<kbd>T</kbd> | <kbd>Cmd</kbd>+<kbd>T</kbd> | <kbd>Ctrl</kbd>+<kbd>T</kbd> |
+| select left | <kbd>Shift</kbd>+<kbd>Left</kbd> | <kbd>Shift</kbd>+<kbd>Left</kbd> | <kbd>Shift</kbd>+<kbd>Left</kbd> |
+| select all | <kbd>Ctrl</kbd>+<kbd>A</kbd> | <kbd>Cmd</kbd>+<kbd>A</kbd> | <kbd>Ctrl</kbd>+<kbd>A</kbd> |
+| close all | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>W</kbd> | <kbd>Shift</kbd>+<kbd>Cmd</kbd>+<kbd>W</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>W</kbd> |
+| left | <kbd>Left</kbd> | <kbd>Left</kbd> | <kbd>Left</kbd> |
+| delete backward | <kbd>Backspace</kbd> | <kbd>Backspace</kbd> | <kbd>Backspace</kbd> |
+| continue | <kbd>F5</kbd> | <kbd>F5</kbd> | <kbd>F5</kbd> |
+| move down | <kbd>Alt</kbd>+<kbd>Down</kbd> | <kbd>Alt</kbd>+<kbd>Down</kbd> | <kbd>Alt</kbd>+<kbd>Down</kbd> |
+| proposals | <kbd>Ctrl</kbd>+<kbd>Space</kbd> | <kbd>Ctrl</kbd>+<kbd>Space</kbd> | <kbd>Ctrl</kbd>+<kbd>Space</kbd> |
+| end of line | <kbd>End</kbd> | <kbd>Ctrl</kbd>+<kbd>E</kbd> | <kbd>End</kbd> |
+| find text | <kbd>Ctrl</kbd>+<kbd>F</kbd> | <kbd>Cmd</kbd>+<kbd>F</kbd> | <kbd>Ctrl</kbd>+<kbd>F</kbd> |
+| rebundle | <kbd>Ctrl</kbd>+<kbd>U</kbd> | <kbd>Cmd</kbd>+<kbd>U</kbd> | <kbd>Ctrl</kbd>+<kbd>U</kbd> |
+| page down | <kbd>Page Down</kbd> | <kbd>Page Down</kbd> | <kbd>Page Down</kbd> |
+| page up | <kbd>Page Up</kbd> | <kbd>Page Up</kbd> | <kbd>Page Up</kbd> |
+| split selection into lines | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>L</kbd> | <kbd>Shift</kbd>+<kbd>Cmd</kbd>+<kbd>L</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>L</kbd> |
+| open asset | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>R</kbd> | <kbd>Cmd</kbd>+<kbd>P</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>R</kbd> |
+| delete line |  | <kbd>Ctrl</kbd>+<kbd>D</kbd> |  |
+| step over | <kbd>F10</kbd> | <kbd>F10</kbd> | <kbd>F10</kbd> |
+| delete to end of line | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Delete</kbd> | <kbd>Cmd</kbd>+<kbd>Delete</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Delete</kbd> |
+| rename | <kbd>F2</kbd> | <kbd>F2</kbd> | <kbd>F2</kbd> |
+| replace next | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>H</kbd> | <kbd>Alt</kbd>+<kbd>Cmd</kbd>+<kbd>G</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>H</kbd> |
+| beginning of line |  | <kbd>Ctrl</kbd>+<kbd>A</kbd> |  |
+| select beginning of line |  | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>A</kbd> |  |
+| replace text |  | <kbd>Alt</kbd>+<kbd>Cmd</kbd>+<kbd>F</kbd> |  |
+| move tool | <kbd>W</kbd> | <kbd>W</kbd> | <kbd>W</kbd> |
+| select end of file | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>End</kbd> | <kbd>Shift</kbd>+<kbd>Cmd</kbd>+<kbd>Down</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>End</kbd> |
+| realign camera | <kbd>Period</kbd> | <kbd>Period</kbd> | <kbd>Period</kbd> |
+| toggle component guides | <kbd>Ctrl</kbd>+<kbd>H</kbd> | <kbd>Ctrl</kbd>+<kbd>Cmd</kbd>+<kbd>H</kbd> | <kbd>Ctrl</kbd>+<kbd>H</kbd> |
+| next word | <kbd>Ctrl</kbd>+<kbd>Right</kbd> | <kbd>Alt</kbd>+<kbd>Right</kbd> | <kbd>Ctrl</kbd>+<kbd>Right</kbd> |
+| reload stylesheet |  | <kbd>Ctrl</kbd>+<kbd>R</kbd> |  |
+| select next occurrence | <kbd>Ctrl</kbd>+<kbd>D</kbd> | <kbd>Cmd</kbd>+<kbd>D</kbd> | <kbd>Ctrl</kbd>+<kbd>D</kbd> |
+| frame selection | <kbd>F</kbd> | <kbd>F</kbd> | <kbd>F</kbd> |
+| select right | <kbd>Shift</kbd>+<kbd>Right</kbd> | <kbd>Shift</kbd>+<kbd>Right</kbd> | <kbd>Shift</kbd>+<kbd>Right</kbd> |
+| redo | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Z</kbd> | <kbd>Shift</kbd>+<kbd>Cmd</kbd>+<kbd>Z</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Z</kbd> |
+| rotate tool | <kbd>E</kbd> | <kbd>E</kbd> | <kbd>E</kbd> |
+| toggle breakpoint | <kbd>F9</kbd> | <kbd>F9</kbd> | <kbd>F9</kbd> |
+| zoom in | <kbd>Ctrl</kbd>+<kbd>'</kbd>+<kbd>'</kbd> | <kbd>Cmd</kbd>+<kbd>'</kbd>+<kbd>'</kbd> | <kbd>Ctrl</kbd>+<kbd>'</kbd>+<kbd>'</kbd> |
+| reindent | <kbd>Ctrl</kbd>+<kbd>I</kbd> | <kbd>Ctrl</kbd>+<kbd>I</kbd> | <kbd>Ctrl</kbd>+<kbd>I</kbd> |
+| prev word | <kbd>Ctrl</kbd>+<kbd>Left</kbd> | <kbd>Alt</kbd>+<kbd>Left</kbd> | <kbd>Ctrl</kbd>+<kbd>Left</kbd> |
+| new file | <kbd>Ctrl</kbd>+<kbd>N</kbd> | <kbd>Cmd</kbd>+<kbd>N</kbd> | <kbd>Ctrl</kbd>+<kbd>N</kbd> |
+| up | <kbd>Up</kbd> | <kbd>Up</kbd> | <kbd>Up</kbd> |
+| quit | <kbd>Ctrl</kbd>+<kbd>Q</kbd> | <kbd>Cmd</kbd>+<kbd>Q</kbd> | <kbd>Ctrl</kbd>+<kbd>Q</kbd> |
+| backwards tab trigger | <kbd>Shift</kbd>+<kbd>Tab</kbd> | <kbd>Shift</kbd>+<kbd>Tab</kbd> | <kbd>Shift</kbd>+<kbd>Tab</kbd> |
+| up major | <kbd>Shift</kbd>+<kbd>Up</kbd> | <kbd>Shift</kbd>+<kbd>Up</kbd> | <kbd>Shift</kbd>+<kbd>Up</kbd> |
+| hot reload | <kbd>Ctrl</kbd>+<kbd>R</kbd> | <kbd>Cmd</kbd>+<kbd>R</kbd> | <kbd>Ctrl</kbd>+<kbd>R</kbd> |
+| toggle comment | <kbd>Ctrl</kbd>+<kbd>Slash</kbd> | <kbd>Cmd</kbd>+<kbd>Slash</kbd> | <kbd>Ctrl</kbd>+<kbd>Slash</kbd> |
+| scale tool | <kbd>R</kbd> | <kbd>R</kbd> | <kbd>R</kbd> |
+| undo | <kbd>Ctrl</kbd>+<kbd>Z</kbd> | <kbd>Cmd</kbd>+<kbd>Z</kbd> | <kbd>Ctrl</kbd>+<kbd>Z</kbd> |
+| select prev word | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Left</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Left</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Left</kbd> |
+| escape | <kbd>Esc</kbd> | <kbd>Esc</kbd> | <kbd>Esc</kbd> |
+| toggle pane bottom | <kbd>F7</kbd> | <kbd>F7</kbd> | <kbd>F7</kbd> |
+| toggle pane left | <kbd>F6</kbd> | <kbd>F6</kbd> | <kbd>F6</kbd> |
+| toggle pane right | <kbd>F8</kbd> | <kbd>F8</kbd> | <kbd>F8</kbd> |
+| tab | <kbd>Tab</kbd> | <kbd>Tab</kbd> | <kbd>Tab</kbd> |
+| select beginning of line text | <kbd>Shift</kbd>+<kbd>Home</kbd> | <kbd>Shift</kbd>+<kbd>Home</kbd> | <kbd>Shift</kbd>+<kbd>Home</kbd> |
+| save all | <kbd>Ctrl</kbd>+<kbd>S</kbd> | <kbd>Cmd</kbd>+<kbd>S</kbd> | <kbd>Ctrl</kbd>+<kbd>S</kbd> |
+| step out | <kbd>Shift</kbd>+<kbd>F11</kbd> | <kbd>Shift</kbd>+<kbd>F11</kbd> | <kbd>Shift</kbd>+<kbd>F11</kbd> |
+| delete | <kbd>Delete</kbd> | <kbd>Delete</kbd> | <kbd>Delete</kbd> |
+| right | <kbd>Right</kbd> | <kbd>Right</kbd> | <kbd>Right</kbd> |
+| zoom out | <kbd>Ctrl</kbd>+<kbd>'-'</kbd> | <kbd>Cmd</kbd>+<kbd>'-'</kbd> | <kbd>Ctrl</kbd>+<kbd>'-'</kbd> |
+| step into | <kbd>F11</kbd> | <kbd>F11</kbd> | <kbd>F11</kbd> |
+| beginning of file | <kbd>Ctrl</kbd>+<kbd>Home</kbd> | <kbd>Cmd</kbd>+<kbd>Up</kbd> | <kbd>Ctrl</kbd>+<kbd>Home</kbd> |
+| select down | <kbd>Shift</kbd>+<kbd>Down</kbd> | <kbd>Shift</kbd>+<kbd>Down</kbd> | <kbd>Shift</kbd>+<kbd>Down</kbd> |
+| rebuild | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>B</kbd> | <kbd>Shift</kbd>+<kbd>Cmd</kbd>+<kbd>B</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>B</kbd> |
+| search in files | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>F</kbd> | <kbd>Shift</kbd>+<kbd>Cmd</kbd>+<kbd>F</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>F</kbd> |
+| end of file | <kbd>Ctrl</kbd>+<kbd>End</kbd> | <kbd>Cmd</kbd>+<kbd>Down</kbd> | <kbd>Ctrl</kbd>+<kbd>End</kbd> |
+| move up | <kbd>Alt</kbd>+<kbd>Up</kbd> | <kbd>Alt</kbd>+<kbd>Up</kbd> | <kbd>Alt</kbd>+<kbd>Up</kbd> |
+| show last hidden | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>E</kbd> | <kbd>Shift</kbd>+<kbd>Cmd</kbd>+<kbd>E</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>E</kbd> |
+| build | <kbd>Ctrl</kbd>+<kbd>B</kbd> | <kbd>Cmd</kbd>+<kbd>B</kbd> | <kbd>Ctrl</kbd>+<kbd>B</kbd> |
+| add | <kbd>A</kbd> | <kbd>A</kbd> | <kbd>A</kbd> |
+| find next | <kbd>Ctrl</kbd>+<kbd>G</kbd> | <kbd>Cmd</kbd>+<kbd>G</kbd> | <kbd>Ctrl</kbd>+<kbd>G</kbd> |
+| select next word | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Right</kbd> | <kbd>Shift</kbd>+<kbd>Alt</kbd>+<kbd>Right</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Right</kbd> |
+| down | <kbd>Down</kbd> | <kbd>Down</kbd> | <kbd>Down</kbd> |
+| select beginning of file | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Home</kbd> | <kbd>Shift</kbd>+<kbd>Cmd</kbd>+<kbd>Up</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Home</kbd> |
+| paste | <kbd>Ctrl</kbd>+<kbd>V</kbd> | <kbd>Cmd</kbd>+<kbd>V</kbd> | <kbd>Ctrl</kbd>+<kbd>V</kbd> |
+| open | <kbd>Ctrl</kbd>+<kbd>O</kbd> | <kbd>Cmd</kbd>+<kbd>O</kbd> | <kbd>Ctrl</kbd>+<kbd>O</kbd> |
+| add secondary | <kbd>Shift</kbd>+<kbd>A</kbd> | <kbd>Shift</kbd>+<kbd>A</kbd> | <kbd>Shift</kbd>+<kbd>A</kbd> |
+| enter | <kbd>Enter</kbd> | <kbd>Enter</kbd> | <kbd>Enter</kbd> |
+| toggle visibility filters | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>I</kbd> | <kbd>Shift</kbd>+<kbd>Cmd</kbd>+<kbd>I</kbd> | <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>I</kbd> |
+| preferences | <kbd>Ctrl</kbd>+<kbd>Comma</kbd> | <kbd>Cmd</kbd>+<kbd>Comma</kbd> | <kbd>Ctrl</kbd>+<kbd>Comma</kbd> |
+| hide selected | <kbd>Ctrl</kbd>+<kbd>E</kbd> | <kbd>Cmd</kbd>+<kbd>E</kbd> | <kbd>Ctrl</kbd>+<kbd>E</kbd> |
+| select end of line | <kbd>Shift</kbd>+<kbd>End</kbd> | <kbd>Shift</kbd>+<kbd>Alt</kbd>+<kbd>Down</kbd> | <kbd>Shift</kbd>+<kbd>End</kbd> |
+| delete prev word | <kbd>Ctrl</kbd>+<kbd>Backspace</kbd> | <kbd>Alt</kbd>+<kbd>Backspace</kbd> | <kbd>Ctrl</kbd>+<kbd>Backspace</kbd> |
+| beginning of line text | <kbd>Home</kbd> | <kbd>Home</kbd> | <kbd>Home</kbd> |
+| stop debugger | <kbd>Shift</kbd>+<kbd>F5</kbd> |  | <kbd>Shift</kbd>+<kbd>F5</kbd> |

+ 356 - 0
tools/parse_keymap.lua

@@ -0,0 +1,356 @@
+-- parse Lua modified keymap.clj into Markdown table
+
+local keymaps = {
+	darwin = {
+		["A"] = "add",
+		["Alt+Backspace"] = "delete-prev-word",
+		["Alt+Delete"] = "delete-next-word",
+		["Alt+Down"] = "end-of-line",
+		["Alt+Down"] = "move-down",
+		["Alt+Left"] = "prev-word",
+		["Alt+Meta+E"] = "select-next-occurrence",
+		["Alt+Meta+F"] = "replace-text",
+		["Alt+Meta+G"] = "replace-next",
+		["Alt+Right"] = "next-word",
+		["Alt+Up"] = "beginning-of-line",
+		["Alt+Up"] = "move-up",
+		["Backspace"] = "delete-backward",
+		["Ctrl+A"] = "beginning-of-line",
+		["Ctrl+D"] = "delete-line",
+		["Ctrl+E"] = "end-of-line",
+		["Ctrl+I"] = "reindent",
+		["Ctrl+K"] = "delete-to-end-of-line",
+		["Ctrl+Meta+H"] = "toggle-component-guides",
+		["Ctrl+R"] = "reload-stylesheet",
+		["Ctrl+Space"] = "proposals",
+		["Delete"] = "delete",
+		["Down"] = "down",
+		["E"] = "rotate-tool",
+		["End"] = "end-of-line",
+		["Enter"] = "enter",
+		["Esc"] = "escape",
+		["F"] = "frame-selection",
+		["F1"] = "documentation",
+		["F10"] = "step-over",
+		["F11"] = "step-into",
+		["F2"] = "rename",
+		["F5"] = "start-debugger",
+		["F5"] = "continue",
+		["F6"] = "toggle-pane-left",
+		["F7"] = "toggle-pane-bottom",
+		["F8"] = "toggle-pane-right",
+		["F9"] = "toggle-breakpoint",
+		["Home"] = "beginning-of-line-text",
+		["Left"] = "left",
+		["Meta+'+'"] = "zoom-in",
+		["Meta+'-'"] = "zoom-out",
+		["Meta+A"] = "select-all",
+		["Meta+B"] = "build",
+		["Meta+C"] = "copy",
+		["Meta+Comma"] = "preferences",
+		["Meta+D"] = "select-next-occurrence",
+		["Meta+Delete"] = "delete-to-end-of-line",
+		["Meta+Down"] = "end-of-file",
+		["Meta+E"] = "hide-selected",
+		["Meta+F"] = "filter-form",
+		["Meta+F"] = "find-text",
+		["Meta+G"] = "find-next",
+		["Meta+L"] = "goto-line",
+		["Meta+Left"] = "beginning-of-line-text",
+		["Meta+N"] = "new-file",
+		["Meta+O"] = "open",
+		["Meta+P"] = "open-asset",
+		["Meta+Q"] = "quit",
+		["Meta+R"] = "hot-reload",
+		["Meta+Right"] = "end-of-line",
+		["Meta+S"] = "save-all",
+		["Meta+Slash"] = "toggle-comment",
+		["Meta+T"] = "scene-stop",
+		["Meta+U"] = "rebundle",
+		["Meta+Up"] = "beginning-of-file",
+		["Meta+V"] = "paste",
+		["Meta+W"] = "close",
+		["Meta+X"] = "cut",
+		["Meta+Z"] = "undo",
+		["Page Down"] = "page-down",
+		["Page Up"] = "page-up",
+		["Period"] = "realign-camera",
+		["R"] = "scale-tool",
+		["Right"] = "right",
+		["Shift+A"] = "add-secondary",
+		["Shift+Alt+Down"] = "select-end-of-line",
+		["Shift+Alt+Left"] = "select-prev-word",
+		["Shift+Alt+Right"] = "select-next-word",
+		["Shift+Alt+Up"] = "select-beginning-of-line",
+		["Shift+Ctrl+A"] = "select-beginning-of-line",
+		["Shift+Ctrl+E"] = "select-end-of-line",
+		["Shift+Ctrl+Left"] = "select-prev-word",
+		["Shift+Ctrl+Right"] = "select-next-word",
+		["Shift+Down"] = "down-major",
+		["Shift+Down"] = "select-down",
+		["Shift+E"] = "erase-tool",
+		["Shift+End"] = "select-end-of-line",
+		["Shift+F11"] = "step-out",
+		["Shift+Home"] = "select-beginning-of-line-text",
+		["Shift+Left"] = "left-major",
+		["Shift+Left"] = "select-left",
+		["Shift+Meta+B"] = "rebuild",
+		["Shift+Meta+Delete"] = "delete-to-end-of-line",
+		["Shift+Meta+Down"] = "select-end-of-file",
+		["Shift+Meta+E"] = "show-last-hidden",
+		["Shift+Meta+F"] = "search-in-files",
+		["Shift+Meta+G"] = "find-prev",
+		["Shift+Meta+I"] = "toggle-visibility-filters",
+		["Shift+Meta+L"] = "split-selection-into-lines",
+		["Shift+Meta+Left"] = "select-beginning-of-line-text",
+		["Shift+Meta+R"] = "open-asset",
+		["Shift+Meta+Right"] = "select-end-of-line",
+		["Shift+Meta+Up"] = "select-beginning-of-file",
+		["Shift+Meta+W"] = "close-all",
+		["Shift+Meta+Z"] = "redo",
+		["Shift+Page Down"] = "select-page-down",
+		["Shift+Page Up"] = "select-page-up",
+		["Shift+Right"] = "right-major",
+		["Shift+Right"] = "select-right",
+		["Shift+Tab"] = "backwards-tab-trigger",
+		["Shift+Up"] = "select-up",
+		["Shift+Up"] = "up-major",
+		["Space"] = "scene-play",
+		["Space"] = "show-palette",
+		["Tab"] = "tab",
+		["Up"] = "up",
+		["W"] = "move-tool",
+	},
+	win32 = {
+		["A"] = "add",
+		["Alt+Down"] = "move-down",
+		["Alt+Up"] = "move-up",
+		["Backspace"] = "delete-backward",
+		["Ctrl+'+'"] = "zoom-in",
+		["Ctrl+'-'"] = "zoom-out",
+		["Ctrl+A"] = "select-all",
+		["Ctrl+B"] = "build",
+		["Ctrl+Backspace"] = "delete-prev-word",
+		["Ctrl+C"] = "copy",
+		["Ctrl+Comma"] = "preferences",
+		["Ctrl+D"] = "select-next-occurrence",
+		["Ctrl+Delete"] = "delete-next-word",
+		["Ctrl+E"] = "hide-selected",
+		["Ctrl+End"] = "end-of-file",
+		["Ctrl+F"] = "filter-form",
+		["Ctrl+F"] = "find-text",
+		["Ctrl+G"] = "find-next",
+		["Ctrl+H"] = "replace-text",
+		["Ctrl+H"] = "toggle-component-guides",
+		["Ctrl+Home"] = "beginning-of-file",
+		["Ctrl+I"] = "reindent",
+		["Ctrl+K"] = "delete-to-end-of-line",
+		["Ctrl+L"] = "goto-line",
+		["Ctrl+Left"] = "prev-word",
+		["Ctrl+N"] = "new-file",
+		["Ctrl+O"] = "open",
+		["Ctrl+P"] = "open-asset",
+		["Ctrl+Q"] = "quit",
+		["Ctrl+R"] = "hot-reload",
+		["Ctrl+Right"] = "next-word",
+		["Ctrl+S"] = "save-all",
+		["Ctrl+Slash"] = "toggle-comment",
+		["Ctrl+Space"] = "proposals",
+		["Ctrl+T"] = "scene-stop",
+		["Ctrl+U"] = "rebundle",
+		["Ctrl+V"] = "paste",
+		["Ctrl+W"] = "close",
+		["Ctrl+X"] = "cut",
+		["Ctrl+Z"] = "undo",
+		["Delete"] = "delete",
+		["Down"] = "down",
+		["E"] = "rotate-tool",
+		["End"] = "end-of-line",
+		["Enter"] = "enter",
+		["Esc"] = "escape",
+		["F"] = "frame-selection",
+		["F1"] = "documentation",
+		["F10"] = "step-over",
+		["F11"] = "step-into",
+		["F2"] = "rename",
+		["F5"] = "start-debugger",
+		["F5"] = "continue",
+		["F6"] = "toggle-pane-left",
+		["F7"] = "toggle-pane-bottom",
+		["F8"] = "toggle-pane-right",
+		["F9"] = "toggle-breakpoint",
+		["Home"] = "beginning-of-line-text",
+		["Left"] = "left",
+		["Page Down"] = "page-down",
+		["Page Up"] = "page-up",
+		["Period"] = "realign-camera",
+		["R"] = "scale-tool",
+		["Right"] = "right",
+		["Shift+A"] = "add-secondary",
+		["Shift+Ctrl+B"] = "rebuild",
+		["Shift+Ctrl+Delete"] = "delete-to-end-of-line",
+		["Shift+Ctrl+E"] = "show-last-hidden",
+		["Shift+Ctrl+End"] = "select-end-of-file",
+		["Shift+Ctrl+F"] = "search-in-files",
+		["Shift+Ctrl+G"] = "find-prev",
+		["Shift+Ctrl+H"] = "replace-next",
+		["Shift+Ctrl+Home"] = "select-beginning-of-file",
+		["Shift+Ctrl+I"] = "toggle-visibility-filters",
+		["Shift+Ctrl+L"] = "split-selection-into-lines",
+		["Shift+Ctrl+Left"] = "select-prev-word",
+		["Shift+Ctrl+R"] = "open-asset",
+		["Shift+Ctrl+Right"] = "select-next-word",
+		["Shift+Ctrl+W"] = "close-all",
+		["Shift+Ctrl+Z"] = "redo",
+		["Shift+Down"] = "down-major",
+		["Shift+Down"] = "select-down",
+		["Shift+E"] = "erase-tool",
+		["Shift+End"] = "select-end-of-line",
+		["Shift+F11"] = "step-out",
+		["Shift+F5"] = "stop-debugger",
+		["Shift+Home"] = "select-beginning-of-line-text",
+		["Shift+Left"] = "left-major",
+		["Shift+Left"] = "select-left",
+		["Shift+Page Down"] = "select-page-down",
+		["Shift+Page Up"] = "select-page-up",
+		["Shift+Right"] = "right-major",
+		["Shift+Right"] = "select-right",
+		["Shift+Tab"] = "backwards-tab-trigger",
+		["Shift+Up"] = "select-up",
+		["Shift+Up"] = "up-major",
+		["Space"] = "scene-play",
+		["Space"] = "show-palette",
+		["Tab"] = "tab",
+		["Up"] = "up",
+		["W"] = "move-tool",
+	},
+	linux = {
+		["A"] = "add",
+		["Alt+Down"] = "move-down",
+		["Alt+Up"] = "move-up",
+		["Backspace"] = "delete-backward",
+		["Ctrl+'+'"] = "zoom-in",
+		["Ctrl+'-'"] = "zoom-out",
+		["Ctrl+A"] = "select-all",
+		["Ctrl+B"] = "build",
+		["Ctrl+Backspace"] = "delete-prev-word",
+		["Ctrl+C"] = "copy",
+		["Ctrl+Comma"] = "preferences",
+		["Ctrl+D"] = "select-next-occurrence",
+		["Ctrl+Delete"] = "delete-next-word",
+		["Ctrl+E"] = "hide-selected",
+		["Ctrl+End"] = "end-of-file",
+		["Ctrl+F"] = "filter-form",
+		["Ctrl+F"] = "find-text",
+		["Ctrl+G"] = "find-next",
+		["Ctrl+H"] = "replace-text",
+		["Ctrl+H"] = "toggle-component-guides",
+		["Ctrl+Home"] = "beginning-of-file",
+		["Ctrl+I"] = "reindent",
+		["Ctrl+K"] = "delete-to-end-of-line",
+		["Ctrl+L"] = "goto-line",
+		["Ctrl+Left"] = "prev-word",
+		["Ctrl+N"] = "new-file",
+		["Ctrl+O"] = "open",
+		["Ctrl+P"] = "open-asset",
+		["Ctrl+Q"] = "quit",
+		["Ctrl+R"] = "hot-reload",
+		["Ctrl+Right"] = "next-word",
+		["Ctrl+S"] = "save-all",
+		["Ctrl+Slash"] = "toggle-comment",
+		["Ctrl+Space"] = "proposals",
+		["Ctrl+T"] = "scene-stop",
+		["Ctrl+U"] = "rebundle",
+		["Ctrl+V"] = "paste",
+		["Ctrl+W"] = "close",
+		["Ctrl+X"] = "cut",
+		["Ctrl+Z"] = "undo",
+		["Delete"] = "delete",
+		["Down"] = "down",
+		["E"] = "rotate-tool",
+		["End"] = "end-of-line",
+		["Enter"] = "enter",
+		["Esc"] = "escape",
+		["F"] = "frame-selection",
+		["F1"] = "documentation",
+		["F10"] = "step-over",
+		["F11"] = "step-into",
+		["F2"] = "rename",
+		["F5"] = "start-debugger",
+		["F5"] = "continue",
+		["F6"] = "toggle-pane-left",
+		["F7"] = "toggle-pane-bottom",
+		["F8"] = "toggle-pane-right",
+		["F9"] = "toggle-breakpoint",
+		["Home"] = "beginning-of-line-text",
+		["Left"] = "left",
+		["Page Down"] = "page-down",
+		["Page Up"] = "page-up",
+		["Period"] = "realign-camera",
+		["R"] = "scale-tool",
+		["Right"] = "right",
+		["Shift+A"] = "add-secondary",
+		["Shift+Ctrl+B"] = "rebuild",
+		["Shift+Ctrl+Delete"] = "delete-to-end-of-line",
+		["Shift+Ctrl+E"] = "show-last-hidden",
+		["Shift+Ctrl+End"] = "select-end-of-file",
+		["Shift+Ctrl+F"] = "search-in-files",
+		["Shift+Ctrl+G"] = "find-prev",
+		["Shift+Ctrl+H"] = "replace-next",
+		["Shift+Ctrl+Home"] = "select-beginning-of-file",
+		["Shift+Ctrl+I"] = "toggle-visibility-filters",
+		["Shift+Ctrl+L"] = "split-selection-into-lines",
+		["Shift+Ctrl+Left"] = "select-prev-word",
+		["Shift+Ctrl+R"] = "open-asset",
+		["Shift+Ctrl+Right"] = "select-next-word",
+		["Shift+Ctrl+W"] = "close-all",
+		["Shift+Ctrl+Z"] = "redo",
+		["Shift+Down"] = "down-major",
+		["Shift+Down"] = "select-down",
+		["Shift+E"] = "erase-tool",
+		["Shift+End"] = "select-end-of-line",
+		["Shift+F11"] = "step-out",
+		["Shift+F5"] = "stop-debugger",
+		["Shift+Home"] = "select-beginning-of-line-text",
+		["Shift+Left"] = "left-major",
+		["Shift+Left"] = "select-left",
+		["Shift+Page Down"] = "select-page-down",
+		["Shift+Page Up"] = "select-page-up",
+		["Shift+Right"] = "right-major",
+		["Shift+Right"] = "select-right",
+		["Shift+Tab"] = "backwards-tab-trigger",
+		["Shift+Up"] = "select-up",
+		["Shift+Up"] = "up-major",
+		["Space"] = "scene-play",
+		["Space"] = "show-palette",
+		["Tab"] = "tab",
+		["Up"] = "up",
+		["W"] = "move-tool",
+	}
+}
+
+local function fix_binding(binding)
+	if not binding then return "" end
+	binding = binding:gsub("Meta", "Cmd")
+	binding = "<kbd>" .. binding .. "</kbd>"
+	binding = binding:gsub("+", "</kbd>+<kbd>")
+	return binding
+end
+
+local commands = {}
+for os,keymap in pairs(keymaps) do
+	for keybinding,command in pairs(keymap) do
+		commands[command] = commands[command] or {}
+		commands[command][os] = keybinding
+	end
+end
+
+print("| Command | Windows | macOS | Linux |")
+print("|---------|---------|-------|-------|")
+for command,bindings in pairs(commands) do
+	command = command:gsub("-", " ")
+	local win32 = fix_binding(bindings.win32)
+	local darwin = fix_binding(bindings.darwin)
+	local linux = fix_binding(bindings.linux)
+	print(("| %s | %s | %s | %s |"):format(command, win32, darwin, linux))
+end