Merge pull request #107252 from GlitchedCode922/shortcuts

Update `Shortcut` class reference
This commit is contained in:
Rémi Verschelde
2025-06-09 00:45:32 +02:00

View File

@ -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>