diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml
index 4b6d5c5e4..9fb6c49da 100644
--- a/.github/workflows/sync.yml
+++ b/.github/workflows/sync.yml
@@ -17,26 +17,32 @@ jobs:
fetch-depth: 0
token: ${{ secrets.GH_TOKEN }}
persist-credentials: false
- - name: Sync upstream changes
- id: sync
- uses: aormsby/Fork-Sync-With-Upstream-action@v3.4
- with:
- target_sync_branch: develop
- # REQUIRED 'target_repo_token' exactly like this!
- target_repo_token: ${{ secrets.GH_TOKEN }}
- upstream_sync_branch: develop
- upstream_sync_repo: YoYoGames/GameMaker-Manual
- upstream_repo_access_token: ${{ secrets.GH_TOKEN }}
- git_config_user: ksuchitra532
- git_config_email: null
- git_config_pull_rebase: true
- - name: Sync upstream changes
- id: sync-lts
- uses: aormsby/Fork-Sync-With-Upstream-action@v3.4
+ - name: Merge from upstream
+ env:
+ UPSTREAM: YoYoGames/GameMaker-Manual
+ run: |
+ git config --global user.name "github-actions"
+ git config --global user.email "github-actions@users.noreply.github.com"
+
+ git --version
+
+ # Add upstream remote and fetch
+ git remote add upstream "https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/${UPSTREAM}.git"
+ git remote -v
+ git fetch upstream
+
+ # Merge from upstream/develop with merge strategy to keep translation in case of conflicts
+ git merge -X ours upstream/main-lts
+
+ # this is dangerous but will essentially remove any files not staged in the merge
+ # this is useful since the merge strategy `-X ours` will not handle files where
+ # they have been deleted on only one branch
+ # Only use this you're sure that the failing merges fall under this category and are acceptable
+ # git diff --name-only --diff-filter=U | xargs git rm
+
+ git show-ref
+ - name: Push changes
+ uses: ad-m/github-push-action@master
with:
- target_sync_branch: main-lts
- # REQUIRED 'target_repo_token' exactly like this!
- target_repo_token: ${{ secrets.GH_TOKEN }}
- upstream_sync_branch: main-lts
- upstream_sync_repo: YoYoGames/GameMaker-Manual
- upstream_repo_access_token: ${{ secrets.GH_TOKEN }}
+ github_token: ${{ secrets.GH_TOKEN }}
+ branch: ${{ github.ref }}
\ No newline at end of file
diff --git a/.github/workflows/trigger-all-sync-upstream.yml b/.github/workflows/trigger-all-sync-upstream.yml
new file mode 100644
index 000000000..992197a46
--- /dev/null
+++ b/.github/workflows/trigger-all-sync-upstream.yml
@@ -0,0 +1,56 @@
+name: Trigger-Localisation-Upstream-Sync-Builds
+
+on:
+ workflow_dispatch:
+ inputs:
+ Language:
+ description: "Select All languages to sync"
+ required: false
+ type: choice
+ options:
+ - ALL
+ COUNTRY:
+ description: "Select individual language to sync"
+ required: false
+ type: choice
+ options:
+ - PT-BR
+ - DE
+ - ES
+ - FR
+ - IT
+ - JA
+ - KO
+ - PL
+ - RU
+ - ZH
+
+
+jobs:
+
+ Trigger-Localisation-Upstream-Sync:
+ name:
+ runs-on: ubuntu-22.04
+ strategy:
+ matrix:
+ language: [PT-BR, DE, ES, FR, IT, JA, KO, PL, RU, ZH]
+ steps:
+ - name: Invoke Localisation Syncing
+ if: ${{ github.event.inputs.Language == 'ALL' }}
+ uses: benc-uk/workflow-dispatch@v1
+ with:
+ workflow: sync.yml
+ repo: YoYoGames/GameMaker-Manual-${{ matrix.language }}
+ token: ${{ secrets.GH_TOKEN }}
+ continue-on-error: false
+ - name: Invoke Localisation Syncing
+ if: ${{ github.event.inputs.COUNTRY != ''}}
+ uses: benc-uk/workflow-dispatch@v1
+ with:
+ workflow: sync.yml
+ repo: YoYoGames/GameMaker-Manual-${{ matrix.language }}
+ token: ${{ secrets.GH_TOKEN }}
+ continue-on-error: false
+
+
+
diff --git a/Manual/GenerateKeyboardShortcutTableFromJson.py b/Manual/GenerateKeyboardShortcutTableFromJson.py
new file mode 100644
index 000000000..1e70532fb
--- /dev/null
+++ b/Manual/GenerateKeyboardShortcutTableFromJson.py
@@ -0,0 +1,241 @@
+### Python script to generate copy-pasteable HTML tables from JSON file
+###
+### Provide the full directory path to the .json file as the command line argument.
+### The output HTML file will also be placed there.
+### For example: CMD > python GenerateKeyboardShortcutTableFromJson.py "C:/Users/Dev/Documents/GitHub/GameMaker-Manual/Manual/" -name_as_desc -env beta
+###
+### You can provide a few optional arguments:
+###
+### -name_as_desc: Add this to write the hotkey's name as the description.
+### -env: Provide this, followed by the environment in which you want to look for the JSON file
+### (one of: "dev", "lts", "beta", "prod")
+### Note: only works on Windows!
+### -update_rh_vars: Add this to update the RoboHelp variables
+### A RH variable is written (or updated if exists) for every Win/Mac shortcut
+### For example: Hotkey_Create_Asset_Win, Hotkey_Create_Asset_Mac
+###
+### Important: Technically, the JSON cannot contain trailing commas, this isn't supported
+### using the built-in json module. Though it is supported through the yy_load function.
+###
+
+import sys
+import os
+import json
+import re
+from collections import OrderedDict
+
+# Write to RoboHelp variables
+import xml.etree.ElementTree as ET
+
+# Unique modifier keys
+mods = set()
+
+def yy_load(file):
+ """ Load json from a file that possibly contains trailing commas """
+ # Do some tricky regex substitution
+ # so we can use the json module
+ data_string = ''.join(file.readlines())
+ data_string = re.sub("(,)(\s*[]}])","\g<2>", data_string)
+
+ # Now we can import using the json module
+ return json.loads(data_string)
+
+# Utility functions
+def get_combo_string(combo):
+ global mods
+ if not combo:
+ combo_string = ""
+ else:
+ modifier = [key for key in combo['Modifier'].split(", ") if key != "None"]
+ mods.update(modifier)
+ if type(combo['Keys']) is list:
+ # This is a hotkey chord
+ mods = " + ".join([*modifier])
+ combo_string = " => ".join([mods + " + " + key for key in combo['Keys']])
+ else:
+ # This is a regular hotkey
+ combo_string = " + ".join([*modifier, combo['Keys']])
+ return combo_string
+
+# Default names
+fname_hotkeys = "default_hotkeys.json"
+
+install_dirs = {
+ "dev": "GameMaker-Dev",
+ "lts": "GameMaker-LTS",
+ "beta": "GameMaker-Beta",
+ "prod": "GameMaker"
+}
+
+# Handle parameters received from command line
+if len(sys.argv) == 1:
+ print("ERROR - The input/output directory should be provided. Exiting...")
+ exit()
+else:
+ out_dir = sys.argv[1]
+ in_dir = out_dir
+
+# Whether to use the shortcut's name as the description
+name_as_desc = "-name_as_desc" in sys.argv
+
+# Whether to create new and/or update existing RH hotkey variables
+write_update_rh_vars = "-update_rh_vars" in sys.argv
+
+# Use an existing GM installation to get the JSON files, if provided
+env = "out_dir"
+if "-env" in sys.argv:
+ ind = sys.argv.index("-env")
+ env = sys.argv[ind+1]
+ in_dir = os.environ['ProgramFiles'] + os.sep + install_dirs[env]
+ if not os.path.isdir(in_dir):
+ # Revert to out_dir if there's no such directory
+ in_dir = out_dir
+
+# Check if directories exist
+if not os.path.isdir(in_dir) or not os.path.isdir(out_dir):
+ print("ERROR - One or more directories don't exist. Exiting...")
+ exit()
+
+# Check if files exist
+fpath_win = in_dir + os.sep + fname_hotkeys
+if not os.path.isfile(fpath_win):
+ print("ERROR - Shortcuts file doesn't exist. Exiting...")
+ exit()
+
+# Data structures
+input = [] # input from file
+shortcuts = dict() # maps shortcut name => shortcut data
+shortcuts_per_location = OrderedDict() # stores shortcuts under locations
+
+# Read the defaults file
+with open(fpath_win, 'r', encoding="utf-8") as f:
+ # Load all the data
+ # input = json.load(f) # risk of errors if trailing commas are present
+ input = yy_load(f) # regex-replace variety that fixes things
+
+ # Add items under their respective locations (i.e. "group" per location)
+ for shortcut in input:
+ # Get unique name
+ name = shortcut['Name']
+
+ # Nothing to do for unlisted shortcuts?
+ #if 'IsUnlisted' in shortcut:
+ if 'IsListed' in shortcut and shortcut['IsListed'] == False:
+ continue
+
+ # Get this shortcut's combo(s)
+ cbo = shortcut['Combo']
+ combos = [cbo] if type(cbo) is not list else cbo
+ combo_strings = [get_combo_string(combo) for combo in combos]
+
+ # Store shortcut data (name as the key)
+ shortcuts[name] = {
+ "name": name,
+ "description": shortcut['Description'] if ('Description' in shortcut) else "",
+ "win_combo": combo_strings,
+ "mac_combo": []
+ # "Localisation": combo['Localisation']
+ }
+
+ # Store platform overrides, if there are any
+ if 'PlatformOverrides' in shortcut and shortcut['PlatformOverrides']:
+ for override in shortcut['PlatformOverrides']:
+ if override['Platform'] != 'MacOs':
+ continue
+ cbo = override['Combo']
+ combos = [cbo] if type(cbo) is not list else cbo
+ combo_strings = [get_combo_string(combo) for combo in combos]
+ shortcuts[name]['mac_combo'] = combo_strings
+
+ # Store name of shortcut under all its locations
+ loc = shortcut['Location']
+ locations = [loc] if (type(loc) == str) else loc
+
+ for location in locations:
+ # Make sure a list exists under the key before writing to it
+ if location not in shortcuts_per_location:
+ shortcuts_per_location[location] = OrderedDict()
+
+ # Add the shortcut
+ shortcuts_per_location[location][name] = name
+
+# Generate HTML
+html = ""
+for location in shortcuts_per_location:
+ html += "
{0}
".format(location)
+ html += "
\n
Windows Key Binding
macOS Key Binding
Scope
Description
"
+
+ for name in shortcuts_per_location[location].keys():
+ sc = shortcuts[name]
+ desc = name if name_as_desc else sc['description']
+ html += "
"
+ # html += "
" + name + "
"
+ html += "
" + " ".join(sc['win_combo']) + "
"
+ html += "
" + " ".join(sc['mac_combo']) + "
"
+ html += "
" + location + "
"
+ html += "
" + desc + "
"
+ html += "
"
+
+ html += "
"
+
+# Write to file
+fpath_out = out_dir + "/" + "shortcuts.htm"
+with open(fpath_out, 'w') as f:
+ f.write(html)
+
+# Output unique keys
+print("Shortcuts of environment " + str(env) + " written to file:")
+print(fpath_out)
+
+if not write_update_rh_vars:
+ print("Not writing RH variables. Exiting...")
+ exit()
+
+# Optional: write to RH variables
+fdir = os.getcwd() + os.sep + "variable"
+fpath = fdir + os.sep + "Default.var"
+tree = ET.parse(fpath)
+root = tree.getroot()
+vars = {}
+for child in root:
+ # Skip title tag to avoid parsing issues
+ if child.tag == "title":
+ continue
+
+ # Reconstruct RH vars mapping
+ key = child.attrib["keys"]
+ val = child[0][0][0].text
+ vars[key] = val
+
+# Update or append shortcuts
+for sc in shortcuts:
+ readable_name = sc.replace("-", "")
+ readable_name = readable_name.replace("+", "And")
+
+ for platform in ["win", "mac"]:
+ suffix = "_" + platform.capitalize()
+ key_name = "Hotkey_" + readable_name.replace(" ", "_") + suffix
+ v = [tag for tag in root.findall('.//keydef[@keys]') if tag.attrib['keys'] == key_name]
+ sc_key_name = platform + '_combo'
+ text = ", ".join(shortcuts[sc][sc_key_name])
+
+ if v:
+ # The shortcut already exists!
+ # Update
+ e = v[0]
+ e[0][0][0].text = text
+ else:
+ # The shortcut is a new one for the RH variables.
+ # Create
+ e = ET.SubElement(root, "keydef", attrib = {"keys": key_name})
+ ec = ET.SubElement(e, "topicmeta")
+ ec2 = ET.SubElement(ec, "keywords")
+ ec3 = ET.SubElement(ec2, "keyword")
+ ec3.text = text
+
+# Prettify XML to maintain line-by-line diffs
+ET.indent(tree, space="\t")
+
+tree.write(fpath, encoding='utf-8', xml_declaration=True)
+
+print("RoboHelp variables updated.")
\ No newline at end of file
diff --git a/Manual/ManualShortcuts.csv b/Manual/ManualShortcuts.csv
new file mode 100644
index 000000000..0417d24c9
--- /dev/null
+++ b/Manual/ManualShortcuts.csv
@@ -0,0 +1,484 @@
+Ac Delete Bksp,BackSpace,⌫,Anim Curve Editor,Delete the selected point
+Ac Path Display,CTRL+W,⌃W,Anim Curve Editor,Display path
+Ace Cancel,Escape,⎋,Anim Curve Editor,Cancel
+Add Curve,CTRL+A,⌘A,Anim Curve Editor,Add a new curve
+Set Range,CTRL+R,⌘R,Anim Curve Editor,Set the range on the y axis
+Ab Arrange Bottom,CTRL+SHIFT+Left Bracket,⌃⇧Left Bracket,Asset Browser,Move items to the bottom
+Ab Arrange Down,CTRL+Left Bracket,⌃Left Bracket,Asset Browser,Move items down
+Ab Arrange Top,CTRL+SHIFT+Right Bracket,⌃⇧Right Bracket,Asset Browser,Move items to the top
+Ab Arrange Up,CTRL+Right Bracket,⌃Right Bracket,Asset Browser,Move items up
+Block,1,1,Context Menu,Insert a code block snippet at the cursor position
+Breakpoint Menu Toggle,F9,F9,Context Menu,Toggle breakpoint on the current line
+Code Window Menu Help,F1,F1,Context Menu, Open the function/keyword page in the manual
+Do-Until Loop,7,7,Context Menu,Insert a do-until loop snippet at the cursor position
+Edit Menu Search,CTRL+SHIFT+F,⌘⇧F,Context Menu,Open project-wide Search & Replace
+Exit,,⌘Q,Context Menu,Exit (Mac)
+File Menu Preferences,,⌘⇧P,Context Menu,File Menu Preferences
+For Loop,4,4,Context Menu,Insert a for loop snippet at the cursor position
+For Loop (i..n),5,5,Context Menu,Insert a for loop with counter variable snippet at the cursor position
+GML Visual Pan To,CTRL+P,⌃P,Context Menu,Pan to selected GML Visual action
+If,2,2,Context Menu,Insert an if statement snippet at the cursor position
+If-Else,3,3,Context Menu,Insert an if-else statement snippet at the cursor position
+Insert,Insert,,Context Menu,Insert
+Line Comment,C,C,Context Menu,Insert a single line comment snippet at the cursor position
+Multi-line Comment,M,M,Context Menu,Insert a multi-line comment snippet at the cursor position
+Region,R,R,Context Menu,Insert a region snippet at the cursor position
+Repeat,8,8,Context Menu,Insert a repeat statement snippet at the cursor position
+Run Menu Clean,,⌘F7,Context Menu,Clean the compiler cache
+Run Menu Create Executable,,⌘F8,Context Menu,Create an executable package using the current target settings
+Spline Editor Delete Points,Del,Del,Context Menu,Delete Points
+Switch,9,9,Context Menu,Insert a switch statement snippet at the cursor position
+Text Editor Comment Selection,CTRL+K,⌘K,Context Menu,Comment the selected text
+Text Editor Next Region,CTRL+Alt+Down,⌘⌥Down,Context Menu,Move the cursor to the next region
+Text Editor Previous Region,CTRL+Alt+Up,⌘⌥Up,Context Menu,Move the cursor to the previous region
+Text Editor Toggle Fold,CTRL+Enter,⌘Enter,Context Menu,Fold/Unfold the current region (works when )
+Text Editor Uncomment Selection,CTRL+Shift+K,⌘⇧K,Context Menu,Uncomment selection
+While Loop,6,6,Context Menu,Insert a while loop snippet at the cursor position
+With,0,0,Context Menu,Insert a with statement snippet at the cursor position
+Compileerror Copy Win,CTRL+Insert,⌃Insert,Errors,Copy the selected compile error message in the Compile Errors window
+Compileerror Selectall,CTRL+SHIFT+A,⌃⇧A,Errors,Select all compile errors in the Compile Errors window
+Syntaxerror Copy Win,CTRL+Insert,⌃Insert,Errors,Copy the selected syntax errors in the Syntax Errors window
+Syntaxerror Selectall,CTRL+SHIFT+A,⌃⇧A,Errors,Select all syntax errors in the Syntax Errors window
+Add New Range,CTRL+A,⌘A,Font Editor,Open the Font Range window
+Deleted Selected Range,CTRL+D,⌘D,Font Editor,Delete the selected range from the font (select the range on the right first)
+Open Options,CTRL+SHIFT+O,⌘⇧O,Font Editor,Open the Font Options window
+Regenerate Font Texture,CTRL+R,⌘R,Font Editor,Regenerate the font texture
+Add To Selection,CTRL,⌘,Global,Add to selection
+Cancel,Escape,⎋,Global,Cancel
+Clean,CTRL+F7,⌘F7,Global,Clean the compiler cache
+Close Tab,CTRL+W,⌘W,Global,Close the active IDE tab
+Confirm Create Asset,CTRL+C,⌘C,Global,Confirm the creation of the asset(s) of the selected type in the Create Asset window
+Copy,CTRL+C,⌘C,Global,Copy the selected text from anywhere in the IDE
+Create Animation Curve,ALT+J,⌥J,Global,Create a new animation curve asset
+Create Asset,CTRL+A,⌘A,Global,Open the Create Asset window
+Create Executable,CTRL+F8,⌘F8,Global,Create an executable package using the current target settings
+Create Extension,ALT+E,⌥E,Global,Create a new extension asset
+Create Font,ALT+F,⌥F,Global,Create a new font asset
+Create Note,ALT+N,⌥N,Global,Create a new note asset
+Create Object,ALT+O,⌥O,Global,Create a new object asset
+Create Path,ALT+P,⌥P,Global,Create a new path asset
+Create Resource GMIncluded File,ALT+I,⌥I,Global,Open the included files window
+Create Room,ALT+R,⌥R,Global,Create a new room asset
+Create Script,ALT+C,⌥C,Global,Create a new script asset
+Create Sequence,ALT+G,⌥G,Global,Create a new sequence asset
+Create Shader,ALT+A,⌥A,Global,Create a new shader asset
+Create Sound,ALT+U,⌥U,Global,Create a new sound asset
+Create Sprite,ALT+S,⌥S,Global,Create a new sprite asset
+Create Tile Set,ALT+B,⌥B,Global,Create a new tile set asset
+Create Timeline,ALT+T,⌥T,Global,Create a new timeline asset
+Cut,CTRL+X,⌘X,Global,Cut
+Debug,F6,F6,Global,Run the current project using the Debugger
+Debugger Continue,F5,F5,Global,Continue code execution in the debugger
+Debugger Step Into,F11,⌘⇧I,Global,Step into the current statement or function in the debugger
+Debugger Step Out,SHIFT+F11,⌘⇧U,Global,Step out of the current statement or function in the debugger
+Debugger Step Over,F10,⌘⇧O,Global,Step over the current statement in the debugger
+Decrement Text Size,F7,F7,Global,Decrement the text size in all code editors
+Delete,Delete,⌫,Global,Delete
+Doc Window Next Tab,CTRL+PageUp,⌘PageUp,Global,Go to next tab
+Doc Window Prev Tab,CTRL+PageDown,⌘PageDown,Global,Go to previous tab
+Dope Sheet Panel Scroll Command,SHIFT,⇧,Global,Dope Sheet Panel Scroll Command
+Duplicate,CTRL+D,⌘D,Global,Duplicate
+Edit Image,CTRL+SHIFT+E,⌘⇧E,Global,Open the image editor when having a sprite selected in the workspace
+Edit Sprite,CTRL+SHIFT+E,⌘⇧E,Global,Open the image editor when having a sprite selected in the workspace
+Enumerate References,F3,F3,Global,Enumerate References
+Export Project,CTRL+E,⌘E,Global,Export the current project as a YYZ file
+Feather Open Quickfix Menu,CTRL+Q,⌃Q,Global,Open Feather's Quick Fixes menu
+Find All References,SHIFT+F3,⇧F3,Global,Find All References to the selected asset
+Flip,Y,Y,Global,Flip Vertically
+Flow Accept,Enter,Enter,Global,Flow Accept
+Force Dock Expansion,SHIFT+F12,⇧F12,Global,Force Dock Expansion
+Get Bookmark 0,CTRL+0,⌘0,Global,Go to bookmark 0
+Get Bookmark 1,CTRL+1,⌘1,Global,Go to bookmark 1
+Get Bookmark 2,CTRL+2,⌘2,Global,Go to bookmark 2
+Get Bookmark 3,CTRL+3,⌘3,Global,Go to bookmark 3
+Get Bookmark 4,CTRL+4,⌘4,Global,Go to bookmark 4
+Get Bookmark 5,CTRL+5,⌘5,Global,Go to bookmark 5
+Get Bookmark 6,CTRL+6,⌘6,Global,Go to bookmark 6
+Get Bookmark 7,CTRL+7,⌘7,Global,Go to bookmark 7
+Get Bookmark 8,CTRL+8,⌘8,Global,Go to bookmark 8
+Get Bookmark 9,CTRL+9,⌘9,Global,Go to bookmark 9
+Go To,CTRL+T,⌘T,Global,"Search for assets"
+Ide Toolbar Clean,CTRL+F7,⌘F7,Global,Clean the build
+Ide Toolbar Collapsedocks,F12,F12,Global,Collapse docks
+Ide Toolbar Help,F1,F1,Global,Launch the help file
+Ide Toolbar New,CTRL+N,⌘N,Global,Create new project
+Ide Toolbar Open,CTRL+O,⌘O,Global,Open project
+Ide Toolbar Package,CTRL+F8,⌘F8,Global,Create an executable package using the current target settings
+Increment Text Size,F8,F8,Global,Increment text size (in text editors)
+Jump To End,PageDown,PageDown,Global,Jump down a page (in text editors)
+Jump To Start,PageUp,PageUp,Global,Jump up a page (in text editors)
+Manage Plugins,CTRL+SHIFT+V,⌘⇧V,Global,Manage plugins
+Mirror,X,X,Global,Mirror Horizontally
+Move Flow Next,Tab,⇥,Global,Move flow next
+Move Flow Previous,SHIFT+Tab,⇧⇥,Global,Move flow previous
+Move Selection Down,Down,Down,Global,Move selection down
+Move Selection Left,Left,Left,Global,Move selection left
+Move Selection Right,Right,Right,Global,Move selection right
+Move Selection Up,Up,Up,Global,Move selection up
+Multi Select,CTRL,⌘,Global,Multi select
+New Project,CTRL+N,⌘N,Global,Open the Start Page
+New Sprite,CTRL+SHIFT+N,⌘⇧N,Global,Add a new sprite (when an object is selected in the workspace)
+Open Asset Browser,CTRL+SHIFT+B,⌃⇧B,Global,Open the asset browser
+Open Debug Info,CTRL+SHIFT+D,⌘⇧D,Global,Open the debug info
+Open In Explorer,SHIFT+O,⇧O,Global,Open in Explorer
+Open Inspector,CTRL+SHIFT+I,⌃⇧I,Global,Open a new Inspector window
+Open Prefs Tree,CTRL+SHIFT+P,⌘⇧P,Global,Open Preferences
+Open Project,CTRL+O,⌘O,Global,Open project
+Open Search In Script Find,CTRL+F,⌘F,Global,Open a code or shader editor's Find and Replace in Find mode
+Open Search In Script Replace,CTRL+H,⌘R,Global,Open a code or shader editor's Find and Replace in Replace mode
+Open Search Replace,CTRL+SHIFT+F,⌘⇧F,Global,Open project-wide Search and Replace
+Open Workspace Overview,CTRL+Tab,⌃⇥,Global,Open the Workspace Overview
+Pan,Space,Space,Global,Pan
+Paste,CTRL+V,⌘V,Global,Paste
+Perform Included File Scan,CTRL+SHIFT+Q,⌘⇧Q,Global,Perform Included File Scan
+Play,Space,Space,Global,Play
+Play Preview,CTRL+Space,⌘Space,Global,Play Preview
+Quit,ALT+F4,⌘Q,Global,Quit
+Redo,CTRL+Y,⌘Y,Global,Redo
+Remove From Selection,ALT,⌥,Global,Remove from selection (while holding CTRL)
+Rename,F2,F2,Global,Rename
+Rename Identifier,CTRL+SHIFT+R,⌃⇧R,Global,Rename the identifier that the cursor is currently at in the Code Editor
+Reverse Path,CTRL+R,⌘R,Global,Reverse path
+Run,F5,F5,Global,Run the current project using the current target settings
+Run Memory Info,CTRL+SHIFT+M,⌘⇧M,Global,Run Memory Info and output result to Output window
+Run Program,F5,F5,Global,Run the program
+Save,CTRL+S,⌘S,Global,Save the current project
+Save As,CTRL+SHIFT+S,⌘⇧S,Global,Save as
+Select All,CTRL+A,⌘A,Global,Select all
+Select Range,SHIFT,⇧,Global,Select range
+Select Sprite,CTRL+SHIFT+S,⌘⇧S,Global,Select Sprite (in Object Editor)
+Seq Smartguide Toggle Rulerlock,CTRL+ALT+SHIFT+Semicolon,⌃⌥⇧Semicolon,Global,Toggle smart guide rulerlock
+Seq Smartguide Toggle Snapping,CTRL+SHIFT+Semicolon,⌃⇧Semicolon,Global,Toggle snapping to smart guides
+Seq Smartguide Toggle Vis,CTRL+Semicolon,⌃Semicolon,Global,Toggle the smart guides
+Set Bookmark 0,CTRL+SHIFT+0,⌘⌃0,Global,Set bookmark 0
+Set Bookmark 1,CTRL+SHIFT+1,⌘⌃1,Global,Set bookmark 1
+Set Bookmark 2,CTRL+SHIFT+2,⌘⌃2,Global,Set bookmark 2
+Set Bookmark 3,CTRL+SHIFT+3,⌘⌃3,Global,Set bookmark 3
+Set Bookmark 4,CTRL+SHIFT+4,⌘⌃4,Global,Set bookmark 4
+Set Bookmark 5,CTRL+SHIFT+5,⌘⌃5,Global,Set bookmark 5
+Set Bookmark 6,CTRL+SHIFT+6,⌘⌃6,Global,Set bookmark 6
+Set Bookmark 7,CTRL+SHIFT+7,⌘⌃7,Global,Set bookmark 7
+Set Bookmark 8,CTRL+SHIFT+8,⌘⌃8,Global,Set bookmark 8
+Set Bookmark 9,CTRL+SHIFT+9,⌘⌃9,Global,Set bookmark 0
+Toggle Grid Snap,CTRL+G,⌘G,Global,Toggle snapping to grid for the current editor
+Undo,CTRL+Z,⌘Z,Global,Undo
+Workspace Chain Move Down,CTRL+ALT+Down,⌘⌥Down,Global,Workspace Chain Move Down
+Workspace Chain Move Down Left,CTRL+ALT+Down+Left,⌘⌥Down+Left,Global,Workspace Chain Move Down Left
+Workspace Chain Move Down Right,CTRL+ALT+Down+Right,⌘⌥Down+Right,Global,Workspace Chain Move Down Right
+Workspace Chain Move Left,CTRL+ALT+Left,⌘⌥Left,Global,Workspace Chain Move Left
+Workspace Chain Move Right,CTRL+ALT+Right,⌘⌥Right,Global,Workspace Chain Move Right
+Workspace Chain Move Up,CTRL+ALT+Up,⌘⌥Up,Global,Workspace Chain Move Up
+Workspace Chain Move Up Left,CTRL+ALT+Up+Left,⌘⌥Up+Left,Global,Workspace Chain Move Up Left
+Workspace Chain Move Up Right,CTRL+ALT+Up+Right,⌘⌥Up+Right,Global,Workspace Chain Move Up Right
+Zoom,CTRL,⌘,Global,Zoom in/out
+Zoom And Pan To Gadget,CTRL+ALT+Enter,⌘⌥Enter,Global,Zoom and pan to selected
+Zoom Fit,CTRL+F,⌘F,Global,Zoom fit
+Zoom In,CTRL+Equals,⌘Equals,Global,Zoom in
+Zoom Out,CTRL+Minus,⌘Minus,Global,Zoom out
+Zoom Reset,CTRL+Enter,⌘Enter,Global,Reset zoom
+Add Frame,SHIFT+A,⇧A,Image Editor,Add a new frame
+Arc Move Control Point A,CTRL,⌘,Image Editor,
+Arc Move Control Point B,ALT,⌥,Image Editor,
+Backspace Delete,BackSpace,⌫,Image Editor,Backspace
+Centre Fit,ALT+F,⌥F,Image Editor,Fit image to centre
+Centre Unit,ALT+C,⌥C,Image Editor,Show image at actual size
+Colour Replace With Alpha,ALT,⌥,Image Editor,
+Decrement Brush Size,Minus,Minus,Image Editor,Decrement current brush size
+Decrement Brush Size2,KeypadMinus,KeypadMinus,Image Editor,Decrement current brush size
+Draw Centred Shape,ALT,⌥,Image Editor,Draw centred shape
+Draw Regular Shape,SHIFT,⇧,Image Editor,Draw regular shape
+Edit Copy Win,CTRL+Insert,⌃Insert,Image Editor,Copy
+Edit Cut Win,SHIFT+Delete,⇧⌫,Image Editor,Cut
+Edit Paste Win,SHIFT+Insert,⇧Insert,Image Editor,Paste
+Fill Tool Tile With Brush,ALT,⌥,Image Editor,Tile with the current brush (using Fill Tool)
+Image Editor Add From File,CTRL+SHIFT+A,⌘⇧A,Image Editor,Add image from file
+Image Editor Centre Fit,ALT+F,⌥F,Image Editor,Centre fit the image in the editor
+Image Editor Centre Unit Scale,ALT+C,⌥C,Image Editor,Centre the image in the editor at unit scale
+Image Editor Import From Strip,CTRL+I,⌘I,Image Editor,Import from strip
+Import Files,CTRL+SHIFT+A,⌘⇧A,Image Editor,Import image files
+Import From Strip,CTRL+I,⌘I,Image Editor,Import from strip
+Increment Brush Size,Equals,Equals,Image Editor,Increment brush size
+Increment Brush Size2,KeypadPlus,KeypadPlus,Image Editor,Increment brush size
+Insert Frame,Insert,Insert,Image Editor,Insert Frame
+Invert Selection,CTRL+I,⌃I,Image Editor,Invert Selection
+Next Frame,2,2,Image Editor,Next Frame
+Open Colour Panel On Select,CTRL,⌃,Image Editor,
+Pixel Brush,Period,Period,Image Editor,Pixel Brush
+Playback Toggle,3,3,Image Editor,Toggle Playback
+Previous Frame,1,1,Image Editor,Previous Frame
+Rotate Brush,Z,Z,Image Editor,Rotate brush by 90 degrees (all tools using a brush)
+Select Arc Tool,A,A,Image Editor,Select the Arc tool
+Select Colour Picker Tool,O,O,Image Editor, Select the Colour Picker tool
+Select Colour Remover,H,H,Image Editor,Select the Colour remove tool
+Select Colour Replacer,V,V,Image Editor,Select the Colour replace tool
+Select Ellipse Tool,C,C,Image Editor,Select the Ellipse tool
+Select Erase Tool,E,E,Image Editor,Select the Erase tool
+Select Fill Tool,F,F,Image Editor,Select the Fill tool
+Select Free Rotate Tool,U,U,Image Editor,Select the Rotate brush tool
+Select Line Tool,L,L,Image Editor,Select the Line tool
+Select Magic Wand Tool,W,W,Image Editor,Select the Magic wand tool
+Select Paintbrush Tool,D,D,Image Editor,Select the Paintbrush tool
+Select Pan Tool,M,M,Image Editor,Select the Pan tool
+Select Polygon Tool,P,P,Image Editor,Select the Polygon tool
+Select Rectangle Tool,R,R,Image Editor,Select the Rectangle tool
+Select Select Rect Tool,S,S,Image Editor,Select the Rectangle select tool
+Select Selection Paint Tool,Q,Q,Image Editor,Select the Paint selection tool
+Select Text Tool,T,T,Image Editor,Select the Text tool
+Snap Tool Modifier,SHIFT,⇧,Image Editor,Snap Tool Modifier
+Toggle Ellipse Tool,SHIFT+C,⇧C,Image Editor,Toggle the Ellipse tool between outline/filled
+Toggle Hsplit,ALT+H,⌥H,Image Editor,Toggle horizontal split view
+Toggle Polygon Tool,SHIFT+P,⇧P,Image Editor,Toggle the Polygon tool between outline/filled
+Toggle Rectangle Tool,SHIFT+R,⇧R,Image Editor,Toggle the Rectangle tool between outline/filled
+Toggle Selection Brush,B,B,Image Editor,Toggle the brush
+Toggle Vsplit,ALT+V,⌥V,Image Editor,Toggle vertical split view
+Tool Commit Enter,Enter,Enter,Image Editor,Commit tool changes
+Add Child,CTRL+L,⌘L,Object Editor,Add a child object to the current object
+Add Event,CTRL+A,⌘A,Object Editor,Add an event to the current object
+Add Variable,CTRL+ALT+T,⌘⌥T,Object Editor,Add a new variable to the current object's Variable Definitions
+Edit Mask,CTRL+K,⌘K,Object Editor,Edit the mask sprite
+Edit Parent,CTRL+SHIFT+O,⌘⇧O,Object Editor,Edit the parent object
+Modify Collision Shape,CTRL+B,⌘B,Object Editor,Modify the object's physics collision shape
+Object Editor Copy Event Win,CTRL+Insert,⌃Insert,Object Editor,Copy event
+Object Editor Cut Event Win,SHIFT+Delete,⇧⌫,Object Editor,Cut event
+Object Editor Paste Event Win,SHIFT+Insert,⇧Insert,Object Editor,Paste event
+Open Events Window,CTRL+F,⌘F,Object Editor,Open Events window
+Open Parent Window,CTRL+G,⌘G,Object Editor,Open Parent window
+Open Physics Window,CTRL+H,⌘H,Object Editor,Open Physics window
+Open Variable Definitions,CTRL+J,⌘J,Object Editor,Open Variable Definitions window
+Physics Snap To Grid,CTRL+U,⌘U,Object Editor,Toggle grid snapping in the Physics Collision Shape window
+Physics Toggle Grid,CTRL+SHIFT+Y,⌘Y,Object Editor,Toggle grid on or off in the Physics Collision Shape window
+Select Mask,CTRL+SHIFT+M,⌘⇧M,Object Editor,Select a mask for the object
+Select Parent,CTRL+P,⌘P,Object Editor,Select parent
+Open Shift Path,CTRL+SHIFT+O,⌘⇧O,Path Editor,Open the Shift Path window
+Pan To Path,CTRL+P,⌘P,Path Editor,Pan to path
+Rotate Path,R,R,Path Editor,Rotate path (hold while dragging LMB)
+Scale Path,S,S,Path Editor,Scale path (hold while dragging LMB)
+Shift Down,Down,Down,Path Editor,Shift down
+Shift Left,Left,Left,Path Editor,Shift left
+Shift Right,Right,Right,Path Editor,Shift right
+Shift Up,Up,Up,Path Editor,Shift up
+Translate Path,T,T,Path Editor,Translate path (hold while dragging LMB)
+ Auto Tile Tool,A,A,Room Editor,Select auto tile tool (when working on a tile layer)
+ Tile Eraser Tool,E,E,Room Editor,Select tile eraser tool (when working on a tile layer)
+ Tile Fill Tool,F,F,Room Editor,Select tile fill tool (when working on a tile layer)
+ Tile Inheritance Tool,I,I,Room Editor,Select tile inheritance tool (when working on a tile layer)
+ Tile Line Tool,L,L,Room Editor,Select tile line tool (when working on a tile layer)
+ Tile Pen Tool,D,D,Room Editor,Select tile pen tool (when working on a tile layer)
+ Tile Rect Tool,R,R,Room Editor,Select tile rect tool (when working on a tile layer)
+ Tile Rotate Tool,Z,Z,Room Editor,Select tile rotate tool (when working on a tile layer)
+ Tile Selection Tool,S,S,Room Editor,Select tile selection tool (when working on a tile layer)
+Activate Tile Select Window,CTRL+ALT+S,⌃⌥S,Room Editor,
+Add New Asset Layer,CTRL+A,⌘A,Room Editor,Add new asset layer
+Add New Background Layer,CTRL+B,⌘B,Room Editor,Add new background layer
+Add New Folder Layer,CTRL+F,⌘F,Room Editor,Add new folder layer
+Add New Path Layer,CTRL+P,⌘P,Room Editor,Add new path layer
+Add New Tile Layer,CTRL+ALT+T,⌘⌥T,Room Editor,Add new tile layer
+Copy Selection Win,CTRL+Insert,⌃Insert,Room Editor,Copy selection
+Cut Selection Win,SHIFT+Delete,⇧⌫,Room Editor,Cut selection
+Flip As Group,Y,Y,Room Editor,Flip selection as group vertically
+Flip As Individuals,SHIFT+Y,⇧Y,Room Editor,Flip individual elements of selection vertically
+Generate Tile Map,CTRL+ALT+G,⌘⌥G,Room Editor,Generate tile map
+Mirror As Group,X,X,Room Editor,Mirror horizontally as group
+Mirror As Individuals,SHIFT+X,⇧X,Room Editor,Mirror individual elements of selection horizontally
+Open Instance Creation Order,CTRL+ALT+I,⌘⌥I,Room Editor,Open instance creation order
+Open Layer Properties,CTRL+ALT+P,⌘⌥P,Room Editor,
+Open Layer View,CTRL+ALT+L,⌘⌥L,Room Editor,Open layer view
+Open Room Properties,CTRL+ALT+R,⌘⌥R,Room Editor,
+Paint With Resource,ALT,⌥,Room Editor,Paint using the selected resource
+Paste Selection Win,SHIFT+Insert,⇧Insert,Room Editor,Paste selection
+Precise Item Placement,CTRL,⌃,Room Editor,Disable snap to grid for precise item placement
+Room Editor Paint Brush,B,B,Room Editor,Room Editor Paint Brush
+Select From Any Layer,P,P,Room Editor,Select from any layer (hold while clicking elements on the canvas)
+Tile Flip Tool,Y,Y,Room Editor,Tile flip tool
+Tile Mirror Tool,X,X,Room Editor,Tile mirror tool
+Toggle Grid,G,G,Room Editor,Toggle grid
+Toggle Macro Editing Mode,CTRL+E,⌃E,Room Editor,Toggle Macro Editing Mode
+Move Canvas Items Down,Down,Down,Sequence Editor,Move the selected items down on the canvas
+Move Canvas Items Down 10x,SHIFT+Down,⇧Down,Sequence Editor,Move the selected items down on the canvas (10x)
+Move Canvas Items Left,Left,Left,Sequence Editor,Move the selected items left on the canvas
+Move Canvas Items Left 10x,SHIFT+Left,⇧Left,Sequence Editor,Move the selected items left on the canvas (10x)
+Move Canvas Items Right,Right,Right,Sequence Editor,Move the selected items right on the canvas
+Move Canvas Items Right 10x,SHIFT+Right,⇧Right,Sequence Editor,Move the selected items right on the canvas (10x)
+Move Canvas Items Up,Up,Up,Sequence Editor,Move the selected items up on the canvas
+Move Canvas Items Up 10x,SHIFT+Up,⇧Up,Sequence Editor,Move the selected items up on the canvas (10x)
+Sequence Add Keyframe,F9,F9,Sequence Editor,"Add a keyframe at the playhead position for all selected items on the canvas"
+Sequence Center Item Origin,CTRL+SHIFT+Home,⌃⇧Home,Sequence Editor,Center the selected items around their origins
+Sequence Delete Bksp,BackSpace,⌫,Sequence Editor,Delete the selected items
+Sequence Expand Tracks All,CTRL+U,⌃U,Sequence Editor,Toggle expand/collapse for all tracks
+Sequence Expand Tracks Selection,U,U,Sequence Editor,Toggle expand/collapse for the selected tracks in the Track Panel
+Sequence Goto End,End,End,Sequence Editor,Move the playhead to the end of the sequence
+Sequence Goto End Selection,SHIFT+End,⇧End,Sequence Editor,Move the playhead to the end of the selection
+Sequence Goto Next Event,SHIFT+8,⇧8,Sequence Editor,Move the playhead to the next moment
+Sequence Goto Prev Event,SHIFT+9,⇧9,Sequence Editor,Move the playhead to the previous moment
+Sequence Goto Start,Home,Home,Sequence Editor,Move the playhead to the start of the sequence
+Sequence Goto Start Selection,SHIFT+Home,⇧Home,Sequence Editor,Move the playhead to the start of the selection
+Sequence Move Keys Left1,CTRL+Left,⌃Left,Sequence Editor,Move the selected keys left by 1 frame
+Sequence Move Keys Left10,CTRL+SHIFT+Left,⌃⇧Left,Sequence Editor,Move the selected keys left by 10 frames
+Sequence Move Keys Right1,CTRL+Right,⌃Right,Sequence Editor,Move the selected keys right by 1 frame
+Sequence Move Keys Right10,CTRL+SHIFT+Right,⌃⇧Right,Sequence Editor,Move the selected keys right by 10 frames
+Sequence Move Playhead Left1,ALT+Left,⌥Left,Sequence Editor,Move the playhead left by 1 frame
+Sequence Move Playhead Left10,ALT+SHIFT+Left,⌥⇧Left,Sequence Editor,Move the playhead left by 10 frames
+Sequence Move Playhead Right1,ALT+Right,⌥Right,Sequence Editor,Move the playhead right by 1 frame
+Sequence Move Playhead Right10,ALT+SHIFT+Right,⌥⇧Right,Sequence Editor,Move the playhead right by 10 frames
+Sequence New Broadcast Message,CTRL+8,⌃8,Sequence Editor,Add a new broadcast message at the playhead position
+Sequence New Clipping Mask,CTRL+M,⌃M,Sequence Editor,Add a new clipping mask track
+Sequence New Group,ALT+G,⌥G,Sequence Editor,Create a new group track and add the selected tracks to it
+Sequence New Moment,CTRL+9,⌃9,Sequence Editor,Add a new moment at the playhead position
+Sequence Next Keyframe,N,N,Sequence Editor,Move the playhead to the next keyframe in the selected parameter tracks
+Sequence Prev Keyframe,M,M,Sequence Editor,Move the playhead to the previous keyframe in the selected parameter tracks
+Sequence Remove Keyframe,F8,F8,Sequence Editor,Remove the keyframes at the playhead position on the currently selected tracks
+Sequence Reset Item Position,CTRL+Home,⌃Home,Sequence Editor,Reset the position on the canvas of the currently selected items
+Sequence Select Next Key,SHIFT+N,⇧N,Sequence Editor,Move the playhead to the next key
+Sequence Select Prev Key,SHIFT+M,⇧M,Sequence Editor,Move the playhead to the previous key
+Sequence Select Track Above,ALT+Up,⌥Up,Sequence Editor,Select the track above the current track in the Track Panel
+Sequence Select Track Above Additive,CTRL+ALT+Up,⌃⌥Up,Sequence Editor,Add the track above the current track to the selection in the Track Panel
+Sequence Select Track Below,ALT+Down,⌥Down,Sequence Editor,Select the track above the current track in the Track Panel
+Sequence Select Track Below Additive,CTRL+ALT+Down,⌃⌥Down,Sequence Editor,Add the track below the current track to the selection in the Track Panel
+Sequence Split Key Two Tracks,CTRL+ALT+D,⌃⌥D,Sequence Editor,Split Key Two Tracks
+Sequence Split Keyframe,F7,F7,Sequence Editor,Split Keyframe
+Sequence Stretch Keys Left,SHIFT+Left Bracket,⇧Left Bracket,Sequence Editor,Stretch the selected keys left
+Sequence Stretch Keys Right,SHIFT+Right Bracket,⇧Right Bracket,Sequence Editor,Stretch the selected keys right
+Sequence Toggle Autokey,F10,F10,Sequence Editor,"Toggle autokey"
+Sequence Toggle Multiselect Origin,Q,Q,Sequence Editor,Toggle multiselect origin
+Sequence Toggle Translation Path,CTRL+ALT+P,⌃⌥P,Sequence Editor,Toggle translation paths on the canvas
+Sequence Trim Key Left,Left Bracket,Left Bracket,Sequence Editor,Trim selected keys left
+Sequence Trim Key Right,Right Bracket,Right Bracket,Sequence Editor,Trim selected keys right
+Toggle Canvas Rulers,CTRL+R,⌃R,Sequence Editor,Toggle the canvas rulers
+Tool Origin,Y,Y,Sequence Editor,Select the Origin tool
+Tool Rotate,R,R,Sequence Editor,Select the Rotate tool
+Tool Scale,S,S,Sequence Editor,Select the Scale tool
+Tool Translate,T,T,Sequence Editor,Select the Translate tool
+Load Sound,CTRL+SHIFT+O,⌘⇧O,Sound Editor,Load sound
+Loop Sound,L,L,Sound Editor,Toggle loop sound
+Mute Sound,M,M,Sound Editor,Toggle mute sound
+Open Mixer,CTRL+SHIFT+M,⌘⇧M,Sound Editor,Open the Sound Mixer
+Play Sound,Space,Space,Sound Editor,Play/Pause/Resume sound
+Rewind,R,R,Sound Editor,Rewind and stop sound
+Loop All,L,L,Sound Mixer,Loop all
+Mute All,M,M,Sound Mixer,Mute all (all mixer columns)
+Play All,Space,Space,Sound Mixer,Play all sounds (all mixer columns)
+Rewind All,R,R,Sound Mixer,Stop and rewind all
+Add Sprite Frame,SHIFT+A,⇧A,Sprite Editor,Add sprite frame
+Copy Frames Win,CTRL+Insert,⌃Insert,Sprite Editor,Copy sprite frames
+Cut Frames Win,SHIFT+Delete,⇧⌫,Sprite Editor,Cut sprite frames
+Import Image,CTRL+I,⌘I,Sprite Editor,Import image
+Insert Sprite Frame,Insert,Insert,Sprite Editor,Insert sprite frame
+Paste Frames Win,SHIFT+Insert,⇧Insert,Sprite Editor,Paste sprite frames
+Resize Image,CTRL+R,⌘R,Sprite Editor,Open the Resize Properties window
+Sprite Add Broadcast Message,CTRL+8,⌃8,Sprite Editor,Add broadcast message to sprite
+Caret Down,Down,Down,Text Editor,Move cursor down
+Caret Down+Column Select,ALT+SHIFT+Down,⌥⇧Down,Text Editor,Move cursor down while doing column select (rectangular area)
+Caret Down+Scroll Down+Select,CTRL+SHIFT+Down,⌃⇧PageDown,Text Editor,Move cursor down while selecting lines
+Caret Down+Select,SHIFT+Down,⇧Down,Text Editor,Move cursor down while selecting lines
+Caret Left,Left,Left,Text Editor,Move cursor left
+Caret Left+Column Select,ALT+SHIFT+Left,,Text Editor,Move cursor left while doing column select (rectangular area)
+Caret Left+Select,SHIFT+Left,⇧Left,Text Editor,Move cursor left while selecting lines
+Caret Right,Right,Right,Text Editor,Move cursor right
+Caret Right+Column Select,ALT+SHIFT+Right,,Text Editor,Move cursor right while doing column select (rectangular area)
+Caret Right+Select,SHIFT+Right,⇧Right,Text Editor,Move cursor right while selecting lines
+Caret Up,Up,Up,Text Editor,Move cursor up
+Caret Up+Column Select,ALT+SHIFT+Up,⌥⇧Up,Text Editor,Move cursor up while doing column select (rectangular area)
+Caret Up+Scroll Up+Select,CTRL+SHIFT+Up,⌃⇧PageUp,Text Editor,Move cursor up while selecting lines
+Caret Up+Select,SHIFT+Up,⇧Up,Text Editor,Move cursor up while selecting lines
+Comment Line/Selection,CTRL+K,⌘K,Text Editor,Comment line or selection
+De Tab,SHIFT+Tab,⇧⇥,Text Editor,Tab backwards
+Delete Back,BackSpace,⌫,Text Editor,Backspace
+Delete End Start,CTRL+Delete,⌃⌫,Text Editor,Delete from the cursor position to the end of the word
+Delete Forward,Delete,⌫,Text Editor,Delete
+Delete Line After Cursor,,⌃K,Text Editor,Delete line after cursor
+Delete Line Before Cursor,,⌘⌫,Text Editor,Delete line before cursor
+Delete Word Start,CTRL+BackSpace,⌥⌫,Text Editor,Delete from the cursor position to the start of the word
+Document End,CTRL+End,⌃End,Text Editor,Move cursor to the end of the document
+Document End+Select,CTRL+SHIFT+End,⌃⇧End,Text Editor,Move cursor to the end of the document and select everything in between
+Document Start,CTRL+Home,⌃Home,Text Editor,Move cursor to the start of the document
+Document Start+Select,CTRL+SHIFT+Home,⌃⇧Home,Text Editor,Move cursor to the start of the document and select everything in between
+End,End,End,Text Editor,Move cursor to end of line
+End+Column Select,ALT+SHIFT+End,⌥⇧End,Text Editor,Move cursor to end of line and column select
+End+Select,SHIFT+End,⇧End,Text Editor,Move cursor to end of line and select text in between
+Expand/Collapse Region,CTRL+Enter,⌘Enter,Text Editor,Expand/Collapse region
+Fold Regions,CTRL+M,⌃M,Text Editor,Fold regions
+Home,Home,Home,Text Editor,Move cursor to start of line
+Home+Column Select,ALT+SHIFT+Home,⌥⇧Home,Text Editor,Move cursor to start of line and column select
+Home+Select,SHIFT+Home,⇧Home,Text Editor,Move cursor to start of line and select
+Line Break1,Enter,Enter,Text Editor,Line break
+Line Break2,KeypadEnter,KeypadEnter,Text Editor,Line break
+Next Region,CTRL+ALT+Down,⌘⌥Down,Text Editor,Next region
+Page Down,PageDown,PageDown,Text Editor,Page down
+Page Down+Select,SHIFT+PageDown,⇧PageDown,Text Editor,Page down + select
+Page Up,PageUp,PageUp,Text Editor,Page up
+Page Up+Select,SHIFT+PageUp,⇧PageUp,Text Editor,Page up + select
+Previous Region,CTRL+ALT+Up,⌘⌥Up,Text Editor,Previous region
+Restart Game,F6,F6,Text Editor,Restart game
+Scroll Down,CTRL+Down,⌃PageDown,Text Editor,Scroll down (move cursor down and scroll down)
+Scroll Up,CTRL+Up,⌃PageUp,Text Editor,Scroll up (move cursor up and scroll up)
+Show Code Completion,CTRL+Space,⌃Space,Text Editor,Show code completion
+Show Snippets,F4,F4,Text Editor,Show snippets
+Tab,Tab,⇥,Text Editor,Tab
+Text Editor Goto Line,CTRL+G,⌘G,Text Editor,Goto line number
+Toggle Insert/Overwrite,Insert,Insert,Text Editor,Toggle Insert/Overwrite
+Uncomment Line/Selection,CTRL+SHIFT+K,⌘⇧K,Text Editor,Uncomment line/selection
+Unfold Regions,CTRL+U,⌃U,Text Editor,Unfold regions
+Word Left,CTRL+Left,⌥Left,Text Editor,Move cursor to word on the left
+Word Left+Select,CTRL+SHIFT+Left,⌥⇧Left,Text Editor,Move cursor to word on the left and select text in between
+Word Right,CTRL+Right,⌥Right,Text Editor,Move cursor to word on the right
+Word Right+Select,CTRL+SHIFT+Right,⌥⇧Right,Text Editor,Move cursor to word on the right and select text in between
+Add Anim,Insert,Insert,Tileset Editor,Add animation (Tile Animation window)
+Autotile Add Full Set,CTRL+F,⌘F,Tileset Editor,Add full auto tile set (Auto Tiling window)
+Autotile Add Transition Set,CTRL+R,⌘R,Tileset Editor,Add auto tile transition set (Auto Tiling window)
+Autotile Delete Set,Del,Del,Tileset Editor,Delete auto tile set (Auto Tiling window)
+Autotile Show Guide,G,G,Tileset Editor,Toggle auto tile guide
+Decrease Brush Size,KeypadMinus,KeypadMinus,Tileset Editor,Decrease brush size
+Decrease Brush Size Keypad,KeypadMinus,KeypadMinus,Tileset Editor,Decrease brush size
+Delete Tile Selection,Delete,⌫,Tileset Editor,Delete selection
+Increase Brush Size,KeypadPlus,KeypadPlus,Tileset Editor,Increase brush size
+Increase Brush Size Keypad,KeypadPlus,KeypadPlus,Tileset Editor,Decrease brush size
+Invert Tile Selection,CTRL+I,⌃I,Tileset Editor,Invert tile selection
+Move Anim Down,SHIFT+Down,⇧Down,Tileset Editor,Move animation down (Tile Animation window)
+Move Anim Frame Left,SHIFT+Left,⇧Left,Tileset Editor,Move animation frame left (Tile Animation window)
+Move Anim Frame Right,SHIFT+Right,⇧Right,Tileset Editor,Move animation frame right (Tile Animation window)
+Move Anim Up,SHIFT+Up,⇧Up,Tileset Editor,Move animation up (Tile Animation window)
+Next Anim,Down,Down,Tileset Editor,Next animation (Tile Animation window)
+Next Anim Frame,Right,Right,Tileset Editor,Next animation frame (Tile Animation window)
+Open Auto Tiling,CTRL+A,⌘A,Tileset Editor,Open Auto Tiling window
+Open Brush Builder,CTRL+B,⌘B,Tileset Editor,Open Brush Builder window
+Open Tile Animation,CTRL+ALT+T,⌘⌥T,Tileset Editor,Open Tile Animation window
+Open Tileset Properties,CTRL+SHIFT+O,⌘⇧O,Tileset Editor,Open Tile Set Properties window
+Prev Anim,Up,Up,Tileset Editor,Previous animation (Tile Animation window)
+Prev Anim Frame,Left,Left,Tileset Editor,Previous animation frame (Tile Animation window)
+Rotate,Z,Z,Tileset Editor,Rotate
+Tile Autotile,A,A,Tileset Editor,Select Autotile tool (Brush Builder Tools)
+Tile Eraser,E,E,Tileset Editor,Select Eraser tool (Brush Builder Tools)
+Tile Fill,F,F,Tileset Editor,Select Fill tool (Brush Builder Tools)
+Tile Line,L,L,Tileset Editor,Select Line tool (Brush Builder Tools)
+Tile Pen,D,D,Tileset Editor,Select Pen tool (Brush Builder Tools)
+Tile Rect,R,R,Tileset Editor,Select Rectangle tool (Brush Builder Tools)
+Tile Select,S,S,Tileset Editor,Select Select Tiles tool (Brush Builder Tools)
+Add Moment,Insert,Enter,Timeline Editor,Add new moment
+Change Moment,CTRL+SHIFT+E,⌘⇧E,Timeline Editor,Change selected moment
+Copy Moments Win,CTRL+Insert,⌃Insert,Timeline Editor,Copy selected moments
+Cut Moments Win,SHIFT+Delete,⇧⌫,Timeline Editor,Cut selected moments
+Edit Moment,ALT+Enter,⌥Enter,Timeline Editor,Edit moment (jump to code editor)
+Merge Moment,CTRL+SHIFT+M,⌘⇧M,Timeline Editor,Merge selected moments
+Paste Moments Win,SHIFT+Insert,⇧Insert,Timeline Editor,Paste moments
+Unselect Moments,CTRL+U,⌘U,Timeline Editor,Unselect moments
+Ai Assistant Search Next,F3,F3,AIAssistant,
+Ai Assistant Search Previous,SHIFT+F3,⇧F3,AIAssistant,
+Open Ai Assistant,CTRL+SHIFT+A,⌃⇧A,Global,
+Feather Do Nothing Rewrite,SHIFT+F11,⇧F11,Feather,
+Start Dnd Maker,CTRL+SHIFT+Q,⌘⇧Q,Global,
+Brush From Selection,CTRL+B,⌃B,Image Editor,
+Create Particle System,ALT+K,⌥K,Global,
+Delete Selected Range,CTRL+D,⌘D,Font Editor,
+Colour Picker Subtool,CTRL,⌘,Image Editor,
+Brush Scaler Subtool,SHIFT+Z,⇧Z,Image Editor,
+Create Resource GMParticle System,ALT+K,⌥K,Global,
+Open Included File,ALT+I,⌥I,Global,
+Auto Tile Tool,A,A,Room Editor,
+Tile Eraser Tool,E,E,Room Editor,
+Tile Fill Tool,F,F,Room Editor,
+Tile Inheritance Tool,I,I,Room Editor,
+Tile Line Tool,L,L,Room Editor,
+Tile Pen Tool,D,D,Room Editor,
+Tile Rect Tool,R,R,Room Editor,
+Tile Rotate Tool,Z,Z,Room Editor,
+Tile Selection Tool,S,S,Room Editor,
diff --git a/Manual/_page_generation/Template_Code_Page.htm b/Manual/_page_generation/Template_Code_Page.htm
new file mode 100644
index 000000000..a4d5eb900
--- /dev/null
+++ b/Manual/_page_generation/Template_Code_Page.htm
@@ -0,0 +1,69 @@
+
+
+
+
+
+ INSERT_TITLE
+
+
+
+
+
+
+
+
+
+
+
INSERT_TITLE
+
Keyword Description Goes Here.
+
Additional Information Goes Here.
+
+
Syntax:
+
(arguments);
+
+
+
+
+
+
+
+
+
Argument
+
Type
+
Description
+
+
+
argument_name
+
<Type_ Variable>
+
Argument Description Goes Here
+
+
+
+
+
Returns:
+
<Type_ Variable> (Optional explanation)
+
+
Example:
+
code_example () {
+
+ }
+
Explain The Code Example Here
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Manual/_page_generation/Template_Normal_Page.htm b/Manual/_page_generation/Template_Normal_Page.htm
new file mode 100644
index 000000000..bc7ade327
--- /dev/null
+++ b/Manual/_page_generation/Template_Normal_Page.htm
@@ -0,0 +1,40 @@
+
+
+
+
+
+ INSERT_TITLE
+
+
+
+
+
+
+
+
+
+
+
+
INSERT_TITLE
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Manual/_page_generation/Template_Visual_Page.htm b/Manual/_page_generation/Template_Visual_Page.htm
new file mode 100644
index 000000000..7197a1203
--- /dev/null
+++ b/Manual/_page_generation/Template_Visual_Page.htm
@@ -0,0 +1,58 @@
+
+
+
+
+
+ INSERT_TITLE
+
+
+
+
+
+
+
+
+
+
+
INSERT_TITLE
+
Description
+
+
Action Syntax:
+
+
Arguments:
+
+
+
+
Argument
+
Description
+
+
+
+
+
+
+
+
+
Example:
+
+
The above actions
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Manual/contents/Additional_Information/Project_Format.htm b/Manual/contents/Additional_Information/Project_Format.htm
new file mode 100644
index 000000000..7f9993051
--- /dev/null
+++ b/Manual/contents/Additional_Information/Project_Format.htm
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+ Project Format
+
+
+
+
+
+
+
+
+
+
Project Format
+
This page contains details on the project format used by GameMaker.
+
Format Basics
+
The YYP Project File
+
At the root is the main project file, with a *.yyp extension. It describes the resources in the project and other meta data specific to it.
+
The .resource_order File
+
Next to it is another file with the same name, but a *.resource_order extension instead. This file stores the order of groups and assets in The Asset Browser used when the filter is set to Custom Order.
+
When using version control, you can e.g. add this file to .gitignore so each user of the project can have their own custom ordering in The Asset Browser.
+
YY Files
+
These are resource files; they store information on individual assets in a GameMaker project. They describe the data for the resource and any other files belonging to the resource (e.g. scripts, shaders, images and audio files). These data are stored in a JSON-like format.
+
YYZ Files
+
This type of file stores a compressed project export, created via the Export Project > YYZ option in The File Menu. Depending on the version of GameMaker, the compression method used may vary.
+
Local Asset Packages
+
These are created and imported from (part of) a project's contents using Create Local Package and Import Local Package respectively in The Tools Menu.
+
The following is an overview of the file formats used by different GameMaker versions:
+
+
YYMPS - Compressed Marketplace Asset 2.3+; a file containing a marketplace asset stored in a compressed manner.
+
YYMP - Compressed Marketplace Asset < 2.3; older formatted marketplace asset stored in a compressed manner. These will be upgraded on import.
+
GMEZ - Compressed Marketplace Asset 1.x; older again formatted marketplace asset. These will be upgraded on import.
+
GMX - Resource File 1.x; older formatted resource file. project.gmx are project files and will be upgraded on import. Importing GMX resources as standalone is not supported.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Manual/contents/Additional_Information/Whitespace_Characters.htm b/Manual/contents/Additional_Information/Whitespace_Characters.htm
new file mode 100644
index 000000000..1ed9d7155
--- /dev/null
+++ b/Manual/contents/Additional_Information/Whitespace_Characters.htm
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+ White-space Characters
+
+
+
+
+
+
+
+
+
White-space Characters
+
The following table lists the character codes and escape sequences that GameMaker considers to be white-space characters. An empty cell in the table indicates there is no escape sequence for that character code.
+
+
+
\ No newline at end of file
diff --git a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/Collision_Actions.htm b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/Collision_Actions.htm
index fd26f959d..be89d690a 100644
--- a/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/Collision_Actions.htm
+++ b/Manual/contents/Drag_And_Drop/Drag_And_Drop_Reference/Collisions/Collision_Actions.htm
@@ -29,7 +29,7 @@