Browse Source

Merge pull request #107252 from GlitchedCode922/shortcuts

Update `Shortcut` class reference
Rémi Verschelde 3 months ago
parent
commit
77f2623c54
1 changed files with 56 additions and 2 deletions
  1. 56 2
      doc/classes/Shortcut.xml

+ 56 - 2
doc/classes/Shortcut.xml

@@ -4,8 +4,62 @@
 		A shortcut for binding input.
 	</brief_description>
 	<description>
-		Shortcuts are commonly used for interacting with a [Control] element from an [InputEvent] (also known as hotkeys).
-		One shortcut can contain multiple [InputEvent]s, allowing the possibility of triggering one action with multiple different inputs.
+		Shortcuts (also known as hotkeys) are containers of [InputEvent] resources. They are commonly used to interact with a [Control] element from an [InputEvent].
+		One shortcut can contain multiple [InputEvent] resources, making it possible to trigger one action with multiple different inputs.
+		[b]Example:[/b] Capture the [kbd]Ctrl + S[/kbd] shortcut using a [Shortcut] resource:
+		[codeblocks]
+		[gdscript]
+		extends Node
+
+		var save_shortcut = Shortcut.new()
+		func _ready():
+			var key_event = InputEventKey.new()
+			key_event.keycode = KEY_S
+			key_event.ctrl_pressed = true
+			key_event.command_or_control_autoremap = true # Swaps ctrl for Command on Mac.
+			save_shortcut.set_events([key_event])
+
+		func _input(event):
+			if save_shortcut.matches_event(event) and event.is_pressed() and not event.is_echo():
+				print("Save shortcut pressed!")
+				get_viewport().set_input_as_handled()
+		[/gdscript]
+		[csharp]
+		public partial class YourScriptName : Godot.Node
+			{
+				private Godot.Shortcut saveShortcut;
+
+				public override void _Ready()
+				{
+					// Enable input processing explicitly (optional for Node, but included for clarity)
+					SetProcessInput(true);
+
+					saveShortcut = new Godot.Shortcut();
+
+					Godot.InputEventKey keyEvent = new Godot.InputEventKey
+					{
+						Keycode = Godot.Key.S,
+						CtrlPressed = true,
+						CommandOrControlAutoremap = true
+					};
+
+					Godot.Collections.Array&lt;Godot.InputEvent&gt; events = new Godot.Collections.Array&lt;Godot.InputEvent&gt; { keyEvent };
+					saveShortcut.SetEvents(events);
+				}
+
+				public override void _Input(Godot.InputEvent @event)
+				{
+					if (@event is Godot.InputEventKey keyEvent &amp;&amp;
+						saveShortcut.MatchesEvent(@event) &amp;&amp;
+						keyEvent.Pressed &amp;&amp; !keyEvent.Echo)
+					{
+						Godot.GD.Print("Save shortcut pressed!");
+						GetViewport().SetInputAsHandled();
+					}
+				}
+			}
+		[/csharp]
+		[/codeblocks]
 	</description>
 	<tutorials>
 	</tutorials>