From 3a30a1c576698363f8f6116f77ac9e70d0b59a5b Mon Sep 17 00:00:00 2001 From: GlitchedCode922 <126592994+GlitchedCode922@users.noreply.github.com> Date: Sat, 7 Jun 2025 08:32:16 +0000 Subject: [PATCH] Update `Shortcut` class reference --- doc/classes/Shortcut.xml | 58 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/doc/classes/Shortcut.xml b/doc/classes/Shortcut.xml index c0ff3ebdb5..b63fa81314 100644 --- a/doc/classes/Shortcut.xml +++ b/doc/classes/Shortcut.xml @@ -4,8 +4,62 @@ A shortcut for binding input. - 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<Godot.InputEvent> events = new Godot.Collections.Array<Godot.InputEvent> { keyEvent }; + saveShortcut.SetEvents(events); + } + + public override void _Input(Godot.InputEvent @event) + { + if (@event is Godot.InputEventKey keyEvent && + saveShortcut.MatchesEvent(@event) && + keyEvent.Pressed && !keyEvent.Echo) + { + Godot.GD.Print("Save shortcut pressed!"); + GetViewport().SetInputAsHandled(); + } + } + } + [/csharp] + [/codeblocks]