Skip to content

Commit

Permalink
Merge pull request #35012 from Xrayez/press-any-key
Browse files Browse the repository at this point in the history
  • Loading branch information
akien-mga authored Jan 20, 2022
2 parents cfb986c + 5d17fe7 commit 73d0013
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 0 deletions.
14 changes: 14 additions & 0 deletions core/input/input.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ Input::MouseMode Input::get_mouse_mode() const {
}

void Input::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_anything_pressed"), &Input::is_anything_pressed);
ClassDB::bind_method(D_METHOD("is_key_pressed", "keycode"), &Input::is_key_pressed);
ClassDB::bind_method(D_METHOD("is_physical_key_pressed", "keycode"), &Input::is_physical_key_pressed);
ClassDB::bind_method(D_METHOD("is_mouse_button_pressed", "button"), &Input::is_mouse_button_pressed);
Expand Down Expand Up @@ -218,6 +219,19 @@ Input::VelocityTrack::VelocityTrack() {
reset();
}

bool Input::is_anything_pressed() const {
_THREAD_SAFE_METHOD_

for (Map<StringName, Input::Action>::Element *E = action_state.front(); E; E = E->next()) {
if (E->get().pressed) {
return true;
}
}
return !keys_pressed.is_empty() ||
!joy_buttons_pressed.is_empty() ||
mouse_button_mask > MouseButton::NONE;
}

bool Input::is_key_pressed(Key p_keycode) const {
_THREAD_SAFE_METHOD_
return keys_pressed.has(p_keycode);
Expand Down
1 change: 1 addition & 0 deletions core/input/input.h
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ class Input : public Object {

static Input *get_singleton();

bool is_anything_pressed() const;
bool is_key_pressed(Key p_keycode) const;
bool is_physical_key_pressed(Key p_keycode) const;
bool is_mouse_button_pressed(MouseButton p_button) const;
Expand Down
6 changes: 6 additions & 0 deletions doc/classes/Input.xml
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,12 @@
[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return [code]false[/code] even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples[/url] in the documentation for more information.
</description>
</method>
<method name="is_anything_pressed" qualifiers="const">
<return type="bool" />
<description>
Returns [code]true[/code] if any action, key, joypad button, or mouse button is being pressed. This will also return [code]true[/code] if any action is simulated via code by calling [method action_press].
</description>
</method>
<method name="is_joy_button_pressed" qualifiers="const">
<return type="bool" />
<argument index="0" name="device" type="int" />
Expand Down

0 comments on commit 73d0013

Please sign in to comment.