Merge pull request #65241 from bruvzg/no_keymap_ambiguity
Fix key mapping changes when moving from macOS to other platform.
This commit is contained in:
commit
69233093d7
|
@ -433,11 +433,11 @@ void register_global_constants() {
|
|||
|
||||
BIND_CORE_ENUM_CLASS_CONSTANT_CUSTOM(KeyModifierMask, KEY_CODE_MASK, CODE_MASK);
|
||||
BIND_CORE_ENUM_CLASS_CONSTANT_CUSTOM(KeyModifierMask, KEY_MODIFIER_MASK, MODIFIER_MASK);
|
||||
BIND_CORE_ENUM_CLASS_CONSTANT(KeyModifierMask, KEY_MASK, CMD_OR_CTRL);
|
||||
BIND_CORE_ENUM_CLASS_CONSTANT(KeyModifierMask, KEY_MASK, SHIFT);
|
||||
BIND_CORE_ENUM_CLASS_CONSTANT(KeyModifierMask, KEY_MASK, ALT);
|
||||
BIND_CORE_ENUM_CLASS_CONSTANT(KeyModifierMask, KEY_MASK, META);
|
||||
BIND_CORE_ENUM_CLASS_CONSTANT(KeyModifierMask, KEY_MASK, CTRL);
|
||||
BIND_CORE_ENUM_CLASS_CONSTANT_NO_VAL(KeyModifierMask, KEY_MASK, CMD);
|
||||
BIND_CORE_ENUM_CLASS_CONSTANT(KeyModifierMask, KEY_MASK, KPAD);
|
||||
BIND_CORE_ENUM_CLASS_CONSTANT(KeyModifierMask, KEY_MASK, GROUP_SWITCH);
|
||||
|
||||
|
|
|
@ -142,13 +142,33 @@ int64_t InputEventFromWindow::get_window_id() const {
|
|||
|
||||
///////////////////////////////////
|
||||
|
||||
void InputEventWithModifiers::set_store_command(bool p_enabled) {
|
||||
store_command = p_enabled;
|
||||
void InputEventWithModifiers::set_command_or_control_autoremap(bool p_enabled) {
|
||||
command_or_control_autoremap = p_enabled;
|
||||
if (command_or_control_autoremap) {
|
||||
#ifdef MACOS_ENABLED
|
||||
ctrl_pressed = false;
|
||||
meta_pressed = true;
|
||||
#else
|
||||
ctrl_pressed = true;
|
||||
meta_pressed = false;
|
||||
#endif
|
||||
} else {
|
||||
ctrl_pressed = false;
|
||||
meta_pressed = false;
|
||||
}
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
bool InputEventWithModifiers::is_storing_command() const {
|
||||
return store_command;
|
||||
bool InputEventWithModifiers::is_command_or_control_autoremap() const {
|
||||
return command_or_control_autoremap;
|
||||
}
|
||||
|
||||
bool InputEventWithModifiers::is_command_or_control_pressed() const {
|
||||
#ifdef MACOS_ENABLED
|
||||
return meta_pressed;
|
||||
#else
|
||||
return ctrl_pressed;
|
||||
#endif
|
||||
}
|
||||
|
||||
void InputEventWithModifiers::set_shift_pressed(bool p_enabled) {
|
||||
|
@ -170,6 +190,7 @@ bool InputEventWithModifiers::is_alt_pressed() const {
|
|||
}
|
||||
|
||||
void InputEventWithModifiers::set_ctrl_pressed(bool p_enabled) {
|
||||
ERR_FAIL_COND_MSG(command_or_control_autoremap, "Command/Control autoremaping is enabled, cannot set Control directly!");
|
||||
ctrl_pressed = p_enabled;
|
||||
emit_changed();
|
||||
}
|
||||
|
@ -179,6 +200,7 @@ bool InputEventWithModifiers::is_ctrl_pressed() const {
|
|||
}
|
||||
|
||||
void InputEventWithModifiers::set_meta_pressed(bool p_enabled) {
|
||||
ERR_FAIL_COND_MSG(command_or_control_autoremap, "Command/Control autoremaping is enabled, cannot set Meta directly!");
|
||||
meta_pressed = p_enabled;
|
||||
emit_changed();
|
||||
}
|
||||
|
@ -187,15 +209,6 @@ bool InputEventWithModifiers::is_meta_pressed() const {
|
|||
return meta_pressed;
|
||||
}
|
||||
|
||||
void InputEventWithModifiers::set_command_pressed(bool p_enabled) {
|
||||
command_pressed = p_enabled;
|
||||
emit_changed();
|
||||
}
|
||||
|
||||
bool InputEventWithModifiers::is_command_pressed() const {
|
||||
return command_pressed;
|
||||
}
|
||||
|
||||
void InputEventWithModifiers::set_modifiers_from_event(const InputEventWithModifiers *event) {
|
||||
set_alt_pressed(event->is_alt_pressed());
|
||||
set_shift_pressed(event->is_shift_pressed());
|
||||
|
@ -217,6 +230,13 @@ Key InputEventWithModifiers::get_modifiers_mask() const {
|
|||
if (is_meta_pressed()) {
|
||||
mask |= KeyModifierMask::META;
|
||||
}
|
||||
if (is_command_or_control_autoremap()) {
|
||||
#ifdef MACOS_ENABLED
|
||||
mask |= KeyModifierMask::META;
|
||||
#else
|
||||
mask |= KeyModifierMask::CTRL;
|
||||
#endif
|
||||
}
|
||||
return mask;
|
||||
}
|
||||
|
||||
|
@ -248,8 +268,10 @@ String InputEventWithModifiers::to_string() {
|
|||
}
|
||||
|
||||
void InputEventWithModifiers::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_store_command", "enable"), &InputEventWithModifiers::set_store_command);
|
||||
ClassDB::bind_method(D_METHOD("is_storing_command"), &InputEventWithModifiers::is_storing_command);
|
||||
ClassDB::bind_method(D_METHOD("set_command_or_control_autoremap", "enable"), &InputEventWithModifiers::set_command_or_control_autoremap);
|
||||
ClassDB::bind_method(D_METHOD("is_command_or_control_autoremap"), &InputEventWithModifiers::is_command_or_control_autoremap);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("is_command_or_control_pressed"), &InputEventWithModifiers::is_command_or_control_pressed);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_alt_pressed", "pressed"), &InputEventWithModifiers::set_alt_pressed);
|
||||
ClassDB::bind_method(D_METHOD("is_alt_pressed"), &InputEventWithModifiers::is_alt_pressed);
|
||||
|
@ -263,34 +285,24 @@ void InputEventWithModifiers::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("set_meta_pressed", "pressed"), &InputEventWithModifiers::set_meta_pressed);
|
||||
ClassDB::bind_method(D_METHOD("is_meta_pressed"), &InputEventWithModifiers::is_meta_pressed);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_command_pressed", "pressed"), &InputEventWithModifiers::set_command_pressed);
|
||||
ClassDB::bind_method(D_METHOD("is_command_pressed"), &InputEventWithModifiers::is_command_pressed);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "store_command"), "set_store_command", "is_storing_command");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "command_or_control_autoremap"), "set_command_or_control_autoremap", "is_command_or_control_autoremap");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "alt_pressed"), "set_alt_pressed", "is_alt_pressed");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shift_pressed"), "set_shift_pressed", "is_shift_pressed");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ctrl_pressed"), "set_ctrl_pressed", "is_ctrl_pressed");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "meta_pressed"), "set_meta_pressed", "is_meta_pressed");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "command_pressed"), "set_command_pressed", "is_command_pressed");
|
||||
}
|
||||
|
||||
void InputEventWithModifiers::_validate_property(PropertyInfo &p_property) const {
|
||||
if (store_command) {
|
||||
// If we only want to Store "Command".
|
||||
#ifdef APPLE_STYLE_KEYS
|
||||
// Don't store "Meta" on Mac.
|
||||
if (command_or_control_autoremap) {
|
||||
// Cannot be used with Meta/Command or Control!
|
||||
if (p_property.name == "meta_pressed") {
|
||||
p_property.usage ^= PROPERTY_USAGE_STORAGE;
|
||||
}
|
||||
#else
|
||||
// Don't store "Ctrl".
|
||||
if (p_property.name == "ctrl_pressed") {
|
||||
p_property.usage ^= PROPERTY_USAGE_STORAGE;
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
// We don't want to store command, only ctrl or meta (on mac).
|
||||
if (p_property.name == "command_pressed") {
|
||||
if (p_property.name == "command_or_control_autoremap") {
|
||||
p_property.usage ^= PROPERTY_USAGE_STORAGE;
|
||||
}
|
||||
}
|
||||
|
@ -399,14 +411,18 @@ Ref<InputEventKey> InputEventKey::create_reference(Key p_keycode) {
|
|||
if ((p_keycode & KeyModifierMask::ALT) != Key::NONE) {
|
||||
ie->set_alt_pressed(true);
|
||||
}
|
||||
if ((p_keycode & KeyModifierMask::CTRL) != Key::NONE) {
|
||||
ie->set_ctrl_pressed(true);
|
||||
}
|
||||
if ((p_keycode & KeyModifierMask::CMD) != Key::NONE) {
|
||||
ie->set_command_pressed(true);
|
||||
}
|
||||
if ((p_keycode & KeyModifierMask::META) != Key::NONE) {
|
||||
ie->set_meta_pressed(true);
|
||||
if ((p_keycode & KeyModifierMask::CMD_OR_CTRL) != Key::NONE) {
|
||||
ie->set_command_or_control_autoremap(true);
|
||||
if ((p_keycode & KeyModifierMask::CTRL) != Key::NONE || (p_keycode & KeyModifierMask::META) != Key::NONE) {
|
||||
WARN_PRINT("Invalid Key Modifiers: Command or Control autoremapping is enabled, Meta and Control values are ignored!");
|
||||
}
|
||||
} else {
|
||||
if ((p_keycode & KeyModifierMask::CTRL) != Key::NONE) {
|
||||
ie->set_ctrl_pressed(true);
|
||||
}
|
||||
if ((p_keycode & KeyModifierMask::META) != Key::NONE) {
|
||||
ie->set_meta_pressed(true);
|
||||
}
|
||||
}
|
||||
|
||||
return ie;
|
||||
|
|
|
@ -107,32 +107,22 @@ public:
|
|||
class InputEventWithModifiers : public InputEventFromWindow {
|
||||
GDCLASS(InputEventWithModifiers, InputEventFromWindow);
|
||||
|
||||
bool store_command = true;
|
||||
bool command_or_control_autoremap = false;
|
||||
|
||||
bool shift_pressed = false;
|
||||
bool alt_pressed = false;
|
||||
#ifdef APPLE_STYLE_KEYS
|
||||
union {
|
||||
bool command_pressed;
|
||||
bool meta_pressed = false; //< windows/mac key
|
||||
};
|
||||
|
||||
bool meta_pressed = false; // "Command" on macOS, "Meta/Win" key on other platforms.
|
||||
bool ctrl_pressed = false;
|
||||
#else
|
||||
union {
|
||||
bool command_pressed; //< windows/mac key
|
||||
bool ctrl_pressed = false;
|
||||
};
|
||||
bool meta_pressed = false; //< windows/mac key
|
||||
#endif
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
void _validate_property(PropertyInfo &p_property) const;
|
||||
|
||||
public:
|
||||
void set_store_command(bool p_enabled);
|
||||
bool is_storing_command() const;
|
||||
void set_command_or_control_autoremap(bool p_enabled);
|
||||
bool is_command_or_control_autoremap() const;
|
||||
|
||||
bool is_command_or_control_pressed() const;
|
||||
|
||||
void set_shift_pressed(bool p_pressed);
|
||||
bool is_shift_pressed() const;
|
||||
|
@ -146,9 +136,6 @@ public:
|
|||
void set_meta_pressed(bool p_pressed);
|
||||
bool is_meta_pressed() const;
|
||||
|
||||
void set_command_pressed(bool p_pressed);
|
||||
bool is_command_pressed() const;
|
||||
|
||||
void set_modifiers_from_event(const InputEventWithModifiers *event);
|
||||
|
||||
Key get_modifiers_mask() const;
|
||||
|
|
|
@ -429,27 +429,27 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
// ///// UI basic Shortcuts /////
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::X | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::X | KeyModifierMask::CMD_OR_CTRL));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::KEY_DELETE | KeyModifierMask::SHIFT));
|
||||
default_builtin_cache.insert("ui_cut", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::C | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::INSERT | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::C | KeyModifierMask::CMD_OR_CTRL));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::INSERT | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_copy", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::V | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::V | KeyModifierMask::CMD_OR_CTRL));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::INSERT | KeyModifierMask::SHIFT));
|
||||
default_builtin_cache.insert("ui_paste", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::Z | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::Z | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_undo", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::Z | KeyModifierMask::CMD | KeyModifierMask::SHIFT));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::Y | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::Z | KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::Y | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_redo", inputs);
|
||||
|
||||
// ///// UI Text Input Shortcuts /////
|
||||
|
@ -474,13 +474,13 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
|
||||
inputs.push_back(InputEventKey::create_reference(Key::ENTER | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::KP_ENTER | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::ENTER | KeyModifierMask::CMD_OR_CTRL));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::KP_ENTER | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_newline_blank", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::ENTER | KeyModifierMask::SHIFT | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::KP_ENTER | KeyModifierMask::SHIFT | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::ENTER | KeyModifierMask::SHIFT | KeyModifierMask::CMD_OR_CTRL));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::KP_ENTER | KeyModifierMask::SHIFT | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_newline_above", inputs);
|
||||
|
||||
// Indentation
|
||||
|
@ -499,7 +499,7 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
default_builtin_cache.insert("ui_text_backspace", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::BACKSPACE | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::BACKSPACE | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_backspace_word", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
|
@ -510,7 +510,7 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
default_builtin_cache.insert("ui_text_backspace_all_to_left", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::BACKSPACE | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::BACKSPACE | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_backspace_all_to_left.macos", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
|
@ -518,7 +518,7 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
default_builtin_cache.insert("ui_text_delete", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::KEY_DELETE | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::KEY_DELETE | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_delete_word", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
|
@ -529,7 +529,7 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
default_builtin_cache.insert("ui_text_delete_all_to_right", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::KEY_DELETE | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::KEY_DELETE | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_delete_all_to_right.macos", inputs);
|
||||
|
||||
// Text Caret Movement Left/Right
|
||||
|
@ -539,7 +539,7 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
default_builtin_cache.insert("ui_text_caret_left", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::LEFT | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::LEFT | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_caret_word_left", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
|
@ -551,7 +551,7 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
default_builtin_cache.insert("ui_text_caret_right", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::RIGHT | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::RIGHT | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_caret_word_right", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
|
@ -576,7 +576,7 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::A | KeyModifierMask::CTRL));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::LEFT | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::LEFT | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_caret_line_start.macos", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
|
@ -585,7 +585,7 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::E | KeyModifierMask::CTRL));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::RIGHT | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::RIGHT | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_caret_line_end.macos", inputs);
|
||||
|
||||
// Text Caret Movement Page Up/Down
|
||||
|
@ -601,47 +601,47 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
// Text Caret Movement Document Start/End
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::HOME | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::HOME | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_caret_document_start", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::UP | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::UP | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_caret_document_start.macos", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::END | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::END | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_caret_document_end", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::DOWN | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::DOWN | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_caret_document_end.macos", inputs);
|
||||
|
||||
// Text Scrolling
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::UP | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::UP | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_scroll_up", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::UP | KeyModifierMask::CMD | KeyModifierMask::ALT));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::UP | KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::ALT));
|
||||
default_builtin_cache.insert("ui_text_scroll_up.macos", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::DOWN | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::DOWN | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_scroll_down", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::DOWN | KeyModifierMask::CMD | KeyModifierMask::ALT));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::DOWN | KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::ALT));
|
||||
default_builtin_cache.insert("ui_text_scroll_down.macos", inputs);
|
||||
|
||||
// Text Misc
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::A | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::A | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_select_all", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::D | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::D | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_text_select_word_under_caret", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
|
@ -660,7 +660,7 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
// ///// UI Graph Shortcuts /////
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::D | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::D | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_graph_duplicate", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
|
@ -681,7 +681,7 @@ const HashMap<String, List<Ref<InputEvent>>> &InputMap::get_builtins() {
|
|||
default_builtin_cache.insert("ui_filedialog_show_hidden", inputs);
|
||||
|
||||
inputs = List<Ref<InputEvent>>();
|
||||
inputs.push_back(InputEventKey::create_reference(Key::QUOTELEFT | KeyModifierMask::CMD));
|
||||
inputs.push_back(InputEventKey::create_reference(Key::QUOTELEFT | KeyModifierMask::CMD_OR_CTRL));
|
||||
default_builtin_cache.insert("ui_swap_input_direction", inputs);
|
||||
|
||||
return default_builtin_cache;
|
||||
|
|
|
@ -61,12 +61,16 @@ static const _KeyCodeText _keycodes[] = {
|
|||
{Key::PAGEDOWN ,"PageDown"},
|
||||
{Key::SHIFT ,"Shift"},
|
||||
{Key::CTRL ,"Ctrl"},
|
||||
#ifdef MACOS_ENABLED
|
||||
#if defined(MACOS_ENABLED)
|
||||
{Key::META ,"Command"},
|
||||
{Key::ALT ,"Option"},
|
||||
#elif defined(WINDOWS_ENABLED)
|
||||
{Key::META ,"Windows"},
|
||||
{Key::ALT ,"Alt"},
|
||||
#else
|
||||
{Key::META ,"Meta"},
|
||||
#endif
|
||||
{Key::ALT ,"Alt"},
|
||||
#endif
|
||||
{Key::CAPSLOCK ,"CapsLock"},
|
||||
{Key::NUMLOCK ,"NumLock"},
|
||||
{Key::SCROLLLOCK ,"ScrollLock"},
|
||||
|
@ -437,6 +441,14 @@ String keycode_get_string(Key p_code) {
|
|||
codestr += find_keycode_name(Key::ALT);
|
||||
codestr += "+";
|
||||
}
|
||||
if ((p_code & KeyModifierMask::CMD_OR_CTRL) != Key::NONE) {
|
||||
#ifdef MACOS_ENABLED
|
||||
codestr += find_keycode_name(Key::META);
|
||||
#else
|
||||
codestr += find_keycode_name(Key::CTRL);
|
||||
#endif
|
||||
codestr += "+";
|
||||
}
|
||||
if ((p_code & KeyModifierMask::CTRL) != Key::NONE) {
|
||||
codestr += find_keycode_name(Key::CTRL);
|
||||
codestr += "+";
|
||||
|
|
|
@ -36,11 +36,11 @@
|
|||
enum class Key {
|
||||
NONE = 0,
|
||||
// Special key: The strategy here is similar to the one used by toolkits,
|
||||
// which consists in leaving the 24 bits unicode range for printable
|
||||
// characters, and use the upper 8 bits for special keys and modifiers.
|
||||
// which consists in leaving the 21 bits unicode range for printable
|
||||
// characters, and use the upper 11 bits for special keys and modifiers.
|
||||
// This way everything (char/keycode) can fit nicely in one 32-bit
|
||||
// integer (the enum's underlying type is `int` by default).
|
||||
SPECIAL = (1 << 24),
|
||||
SPECIAL = (1 << 22),
|
||||
/* CURSOR/FUNCTION/BROWSER/MULTIMEDIA/MISC KEYS */
|
||||
ESCAPE = SPECIAL | 0x01,
|
||||
TAB = SPECIAL | 0x02,
|
||||
|
@ -312,17 +312,14 @@ enum class Key {
|
|||
};
|
||||
|
||||
enum class KeyModifierMask {
|
||||
CODE_MASK = ((1 << 25) - 1), ///< Apply this mask to any keycode to remove modifiers.
|
||||
MODIFIER_MASK = (0x7F << 24), ///< Apply this mask to isolate modifiers.
|
||||
CODE_MASK = ((1 << 23) - 1), ///< Apply this mask to any keycode to remove modifiers.
|
||||
MODIFIER_MASK = (0x7F << 22), ///< Apply this mask to isolate modifiers.
|
||||
//RESERVED = (1 << 23),
|
||||
CMD_OR_CTRL = (1 << 24),
|
||||
SHIFT = (1 << 25),
|
||||
ALT = (1 << 26),
|
||||
META = (1 << 27),
|
||||
CTRL = (1 << 28),
|
||||
#ifdef APPLE_STYLE_KEYS
|
||||
CMD = META,
|
||||
#else
|
||||
CMD = CTRL,
|
||||
#endif
|
||||
KPAD = (1 << 29),
|
||||
GROUP_SWITCH = (1 << 30)
|
||||
};
|
||||
|
|
|
@ -1443,385 +1443,385 @@
|
|||
<constant name="KEY_NONE" value="0" enum="Key">
|
||||
Enum value which doesn't correspond to any key. This is used to initialize [enum Key] properties with a generic state.
|
||||
</constant>
|
||||
<constant name="KEY_SPECIAL" value="16777216" enum="Key">
|
||||
<constant name="KEY_SPECIAL" value="4194304" enum="Key">
|
||||
Keycodes with this bit applied are non-printable.
|
||||
</constant>
|
||||
<constant name="KEY_ESCAPE" value="16777217" enum="Key">
|
||||
<constant name="KEY_ESCAPE" value="4194305" enum="Key">
|
||||
Escape key.
|
||||
</constant>
|
||||
<constant name="KEY_TAB" value="16777218" enum="Key">
|
||||
<constant name="KEY_TAB" value="4194306" enum="Key">
|
||||
Tab key.
|
||||
</constant>
|
||||
<constant name="KEY_BACKTAB" value="16777219" enum="Key">
|
||||
<constant name="KEY_BACKTAB" value="4194307" enum="Key">
|
||||
Shift + Tab key.
|
||||
</constant>
|
||||
<constant name="KEY_BACKSPACE" value="16777220" enum="Key">
|
||||
<constant name="KEY_BACKSPACE" value="4194308" enum="Key">
|
||||
Backspace key.
|
||||
</constant>
|
||||
<constant name="KEY_ENTER" value="16777221" enum="Key">
|
||||
<constant name="KEY_ENTER" value="4194309" enum="Key">
|
||||
Return key (on the main keyboard).
|
||||
</constant>
|
||||
<constant name="KEY_KP_ENTER" value="16777222" enum="Key">
|
||||
<constant name="KEY_KP_ENTER" value="4194310" enum="Key">
|
||||
Enter key on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_INSERT" value="16777223" enum="Key">
|
||||
<constant name="KEY_INSERT" value="4194311" enum="Key">
|
||||
Insert key.
|
||||
</constant>
|
||||
<constant name="KEY_DELETE" value="16777224" enum="Key">
|
||||
<constant name="KEY_DELETE" value="4194312" enum="Key">
|
||||
Delete key.
|
||||
</constant>
|
||||
<constant name="KEY_PAUSE" value="16777225" enum="Key">
|
||||
<constant name="KEY_PAUSE" value="4194313" enum="Key">
|
||||
Pause key.
|
||||
</constant>
|
||||
<constant name="KEY_PRINT" value="16777226" enum="Key">
|
||||
<constant name="KEY_PRINT" value="4194314" enum="Key">
|
||||
Print Screen key.
|
||||
</constant>
|
||||
<constant name="KEY_SYSREQ" value="16777227" enum="Key">
|
||||
<constant name="KEY_SYSREQ" value="4194315" enum="Key">
|
||||
System Request key.
|
||||
</constant>
|
||||
<constant name="KEY_CLEAR" value="16777228" enum="Key">
|
||||
<constant name="KEY_CLEAR" value="4194316" enum="Key">
|
||||
Clear key.
|
||||
</constant>
|
||||
<constant name="KEY_HOME" value="16777229" enum="Key">
|
||||
<constant name="KEY_HOME" value="4194317" enum="Key">
|
||||
Home key.
|
||||
</constant>
|
||||
<constant name="KEY_END" value="16777230" enum="Key">
|
||||
<constant name="KEY_END" value="4194318" enum="Key">
|
||||
End key.
|
||||
</constant>
|
||||
<constant name="KEY_LEFT" value="16777231" enum="Key">
|
||||
<constant name="KEY_LEFT" value="4194319" enum="Key">
|
||||
Left arrow key.
|
||||
</constant>
|
||||
<constant name="KEY_UP" value="16777232" enum="Key">
|
||||
<constant name="KEY_UP" value="4194320" enum="Key">
|
||||
Up arrow key.
|
||||
</constant>
|
||||
<constant name="KEY_RIGHT" value="16777233" enum="Key">
|
||||
<constant name="KEY_RIGHT" value="4194321" enum="Key">
|
||||
Right arrow key.
|
||||
</constant>
|
||||
<constant name="KEY_DOWN" value="16777234" enum="Key">
|
||||
<constant name="KEY_DOWN" value="4194322" enum="Key">
|
||||
Down arrow key.
|
||||
</constant>
|
||||
<constant name="KEY_PAGEUP" value="16777235" enum="Key">
|
||||
<constant name="KEY_PAGEUP" value="4194323" enum="Key">
|
||||
Page Up key.
|
||||
</constant>
|
||||
<constant name="KEY_PAGEDOWN" value="16777236" enum="Key">
|
||||
<constant name="KEY_PAGEDOWN" value="4194324" enum="Key">
|
||||
Page Down key.
|
||||
</constant>
|
||||
<constant name="KEY_SHIFT" value="16777237" enum="Key">
|
||||
<constant name="KEY_SHIFT" value="4194325" enum="Key">
|
||||
Shift key.
|
||||
</constant>
|
||||
<constant name="KEY_CTRL" value="16777238" enum="Key">
|
||||
<constant name="KEY_CTRL" value="4194326" enum="Key">
|
||||
Control key.
|
||||
</constant>
|
||||
<constant name="KEY_META" value="16777239" enum="Key">
|
||||
<constant name="KEY_META" value="4194327" enum="Key">
|
||||
Meta key.
|
||||
</constant>
|
||||
<constant name="KEY_ALT" value="16777240" enum="Key">
|
||||
<constant name="KEY_ALT" value="4194328" enum="Key">
|
||||
Alt key.
|
||||
</constant>
|
||||
<constant name="KEY_CAPSLOCK" value="16777241" enum="Key">
|
||||
<constant name="KEY_CAPSLOCK" value="4194329" enum="Key">
|
||||
Caps Lock key.
|
||||
</constant>
|
||||
<constant name="KEY_NUMLOCK" value="16777242" enum="Key">
|
||||
<constant name="KEY_NUMLOCK" value="4194330" enum="Key">
|
||||
Num Lock key.
|
||||
</constant>
|
||||
<constant name="KEY_SCROLLLOCK" value="16777243" enum="Key">
|
||||
<constant name="KEY_SCROLLLOCK" value="4194331" enum="Key">
|
||||
Scroll Lock key.
|
||||
</constant>
|
||||
<constant name="KEY_F1" value="16777244" enum="Key">
|
||||
<constant name="KEY_F1" value="4194332" enum="Key">
|
||||
F1 key.
|
||||
</constant>
|
||||
<constant name="KEY_F2" value="16777245" enum="Key">
|
||||
<constant name="KEY_F2" value="4194333" enum="Key">
|
||||
F2 key.
|
||||
</constant>
|
||||
<constant name="KEY_F3" value="16777246" enum="Key">
|
||||
<constant name="KEY_F3" value="4194334" enum="Key">
|
||||
F3 key.
|
||||
</constant>
|
||||
<constant name="KEY_F4" value="16777247" enum="Key">
|
||||
<constant name="KEY_F4" value="4194335" enum="Key">
|
||||
F4 key.
|
||||
</constant>
|
||||
<constant name="KEY_F5" value="16777248" enum="Key">
|
||||
<constant name="KEY_F5" value="4194336" enum="Key">
|
||||
F5 key.
|
||||
</constant>
|
||||
<constant name="KEY_F6" value="16777249" enum="Key">
|
||||
<constant name="KEY_F6" value="4194337" enum="Key">
|
||||
F6 key.
|
||||
</constant>
|
||||
<constant name="KEY_F7" value="16777250" enum="Key">
|
||||
<constant name="KEY_F7" value="4194338" enum="Key">
|
||||
F7 key.
|
||||
</constant>
|
||||
<constant name="KEY_F8" value="16777251" enum="Key">
|
||||
<constant name="KEY_F8" value="4194339" enum="Key">
|
||||
F8 key.
|
||||
</constant>
|
||||
<constant name="KEY_F9" value="16777252" enum="Key">
|
||||
<constant name="KEY_F9" value="4194340" enum="Key">
|
||||
F9 key.
|
||||
</constant>
|
||||
<constant name="KEY_F10" value="16777253" enum="Key">
|
||||
<constant name="KEY_F10" value="4194341" enum="Key">
|
||||
F10 key.
|
||||
</constant>
|
||||
<constant name="KEY_F11" value="16777254" enum="Key">
|
||||
<constant name="KEY_F11" value="4194342" enum="Key">
|
||||
F11 key.
|
||||
</constant>
|
||||
<constant name="KEY_F12" value="16777255" enum="Key">
|
||||
<constant name="KEY_F12" value="4194343" enum="Key">
|
||||
F12 key.
|
||||
</constant>
|
||||
<constant name="KEY_F13" value="16777256" enum="Key">
|
||||
<constant name="KEY_F13" value="4194344" enum="Key">
|
||||
F13 key.
|
||||
</constant>
|
||||
<constant name="KEY_F14" value="16777257" enum="Key">
|
||||
<constant name="KEY_F14" value="4194345" enum="Key">
|
||||
F14 key.
|
||||
</constant>
|
||||
<constant name="KEY_F15" value="16777258" enum="Key">
|
||||
<constant name="KEY_F15" value="4194346" enum="Key">
|
||||
F15 key.
|
||||
</constant>
|
||||
<constant name="KEY_F16" value="16777259" enum="Key">
|
||||
<constant name="KEY_F16" value="4194347" enum="Key">
|
||||
F16 key.
|
||||
</constant>
|
||||
<constant name="KEY_F17" value="16777260" enum="Key">
|
||||
<constant name="KEY_F17" value="4194348" enum="Key">
|
||||
F17 key.
|
||||
</constant>
|
||||
<constant name="KEY_F18" value="16777261" enum="Key">
|
||||
<constant name="KEY_F18" value="4194349" enum="Key">
|
||||
F18 key.
|
||||
</constant>
|
||||
<constant name="KEY_F19" value="16777262" enum="Key">
|
||||
<constant name="KEY_F19" value="4194350" enum="Key">
|
||||
F19 key.
|
||||
</constant>
|
||||
<constant name="KEY_F20" value="16777263" enum="Key">
|
||||
<constant name="KEY_F20" value="4194351" enum="Key">
|
||||
F20 key.
|
||||
</constant>
|
||||
<constant name="KEY_F21" value="16777264" enum="Key">
|
||||
<constant name="KEY_F21" value="4194352" enum="Key">
|
||||
F21 key.
|
||||
</constant>
|
||||
<constant name="KEY_F22" value="16777265" enum="Key">
|
||||
<constant name="KEY_F22" value="4194353" enum="Key">
|
||||
F22 key.
|
||||
</constant>
|
||||
<constant name="KEY_F23" value="16777266" enum="Key">
|
||||
<constant name="KEY_F23" value="4194354" enum="Key">
|
||||
F23 key.
|
||||
</constant>
|
||||
<constant name="KEY_F24" value="16777267" enum="Key">
|
||||
<constant name="KEY_F24" value="4194355" enum="Key">
|
||||
F24 key.
|
||||
</constant>
|
||||
<constant name="KEY_F25" value="16777268" enum="Key">
|
||||
<constant name="KEY_F25" value="4194356" enum="Key">
|
||||
F25 key. Only supported on macOS and Linux due to a Windows limitation.
|
||||
</constant>
|
||||
<constant name="KEY_F26" value="16777269" enum="Key">
|
||||
<constant name="KEY_F26" value="4194357" enum="Key">
|
||||
F26 key. Only supported on macOS and Linux due to a Windows limitation.
|
||||
</constant>
|
||||
<constant name="KEY_F27" value="16777270" enum="Key">
|
||||
<constant name="KEY_F27" value="4194358" enum="Key">
|
||||
F27 key. Only supported on macOS and Linux due to a Windows limitation.
|
||||
</constant>
|
||||
<constant name="KEY_F28" value="16777271" enum="Key">
|
||||
<constant name="KEY_F28" value="4194359" enum="Key">
|
||||
F28 key. Only supported on macOS and Linux due to a Windows limitation.
|
||||
</constant>
|
||||
<constant name="KEY_F29" value="16777272" enum="Key">
|
||||
<constant name="KEY_F29" value="4194360" enum="Key">
|
||||
F29 key. Only supported on macOS and Linux due to a Windows limitation.
|
||||
</constant>
|
||||
<constant name="KEY_F30" value="16777273" enum="Key">
|
||||
<constant name="KEY_F30" value="4194361" enum="Key">
|
||||
F30 key. Only supported on macOS and Linux due to a Windows limitation.
|
||||
</constant>
|
||||
<constant name="KEY_F31" value="16777274" enum="Key">
|
||||
<constant name="KEY_F31" value="4194362" enum="Key">
|
||||
F31 key. Only supported on macOS and Linux due to a Windows limitation.
|
||||
</constant>
|
||||
<constant name="KEY_F32" value="16777275" enum="Key">
|
||||
<constant name="KEY_F32" value="4194363" enum="Key">
|
||||
F32 key. Only supported on macOS and Linux due to a Windows limitation.
|
||||
</constant>
|
||||
<constant name="KEY_F33" value="16777276" enum="Key">
|
||||
<constant name="KEY_F33" value="4194364" enum="Key">
|
||||
F33 key. Only supported on macOS and Linux due to a Windows limitation.
|
||||
</constant>
|
||||
<constant name="KEY_F34" value="16777277" enum="Key">
|
||||
<constant name="KEY_F34" value="4194365" enum="Key">
|
||||
F34 key. Only supported on macOS and Linux due to a Windows limitation.
|
||||
</constant>
|
||||
<constant name="KEY_F35" value="16777278" enum="Key">
|
||||
<constant name="KEY_F35" value="4194366" enum="Key">
|
||||
F35 key. Only supported on macOS and Linux due to a Windows limitation.
|
||||
</constant>
|
||||
<constant name="KEY_KP_MULTIPLY" value="16777345" enum="Key">
|
||||
<constant name="KEY_KP_MULTIPLY" value="4194433" enum="Key">
|
||||
Multiply (*) key on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_DIVIDE" value="16777346" enum="Key">
|
||||
<constant name="KEY_KP_DIVIDE" value="4194434" enum="Key">
|
||||
Divide (/) key on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_SUBTRACT" value="16777347" enum="Key">
|
||||
<constant name="KEY_KP_SUBTRACT" value="4194435" enum="Key">
|
||||
Subtract (-) key on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_PERIOD" value="16777348" enum="Key">
|
||||
<constant name="KEY_KP_PERIOD" value="4194436" enum="Key">
|
||||
Period (.) key on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_ADD" value="16777349" enum="Key">
|
||||
<constant name="KEY_KP_ADD" value="4194437" enum="Key">
|
||||
Add (+) key on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_0" value="16777350" enum="Key">
|
||||
<constant name="KEY_KP_0" value="4194438" enum="Key">
|
||||
Number 0 on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_1" value="16777351" enum="Key">
|
||||
<constant name="KEY_KP_1" value="4194439" enum="Key">
|
||||
Number 1 on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_2" value="16777352" enum="Key">
|
||||
<constant name="KEY_KP_2" value="4194440" enum="Key">
|
||||
Number 2 on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_3" value="16777353" enum="Key">
|
||||
<constant name="KEY_KP_3" value="4194441" enum="Key">
|
||||
Number 3 on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_4" value="16777354" enum="Key">
|
||||
<constant name="KEY_KP_4" value="4194442" enum="Key">
|
||||
Number 4 on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_5" value="16777355" enum="Key">
|
||||
<constant name="KEY_KP_5" value="4194443" enum="Key">
|
||||
Number 5 on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_6" value="16777356" enum="Key">
|
||||
<constant name="KEY_KP_6" value="4194444" enum="Key">
|
||||
Number 6 on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_7" value="16777357" enum="Key">
|
||||
<constant name="KEY_KP_7" value="4194445" enum="Key">
|
||||
Number 7 on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_8" value="16777358" enum="Key">
|
||||
<constant name="KEY_KP_8" value="4194446" enum="Key">
|
||||
Number 8 on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_KP_9" value="16777359" enum="Key">
|
||||
<constant name="KEY_KP_9" value="4194447" enum="Key">
|
||||
Number 9 on the numeric keypad.
|
||||
</constant>
|
||||
<constant name="KEY_SUPER_L" value="16777280" enum="Key">
|
||||
<constant name="KEY_SUPER_L" value="4194368" enum="Key">
|
||||
Left Super key (Windows key).
|
||||
</constant>
|
||||
<constant name="KEY_SUPER_R" value="16777281" enum="Key">
|
||||
<constant name="KEY_SUPER_R" value="4194369" enum="Key">
|
||||
Right Super key (Windows key).
|
||||
</constant>
|
||||
<constant name="KEY_MENU" value="16777282" enum="Key">
|
||||
<constant name="KEY_MENU" value="4194370" enum="Key">
|
||||
Context menu key.
|
||||
</constant>
|
||||
<constant name="KEY_HYPER_L" value="16777283" enum="Key">
|
||||
<constant name="KEY_HYPER_L" value="4194371" enum="Key">
|
||||
Left Hyper key.
|
||||
</constant>
|
||||
<constant name="KEY_HYPER_R" value="16777284" enum="Key">
|
||||
<constant name="KEY_HYPER_R" value="4194372" enum="Key">
|
||||
Right Hyper key.
|
||||
</constant>
|
||||
<constant name="KEY_HELP" value="16777285" enum="Key">
|
||||
<constant name="KEY_HELP" value="4194373" enum="Key">
|
||||
Help key.
|
||||
</constant>
|
||||
<constant name="KEY_DIRECTION_L" value="16777286" enum="Key">
|
||||
<constant name="KEY_DIRECTION_L" value="4194374" enum="Key">
|
||||
Left Direction key.
|
||||
</constant>
|
||||
<constant name="KEY_DIRECTION_R" value="16777287" enum="Key">
|
||||
<constant name="KEY_DIRECTION_R" value="4194375" enum="Key">
|
||||
Right Direction key.
|
||||
</constant>
|
||||
<constant name="KEY_BACK" value="16777288" enum="Key">
|
||||
<constant name="KEY_BACK" value="4194376" enum="Key">
|
||||
Media back key. Not to be confused with the Back button on an Android device.
|
||||
</constant>
|
||||
<constant name="KEY_FORWARD" value="16777289" enum="Key">
|
||||
<constant name="KEY_FORWARD" value="4194377" enum="Key">
|
||||
Media forward key.
|
||||
</constant>
|
||||
<constant name="KEY_STOP" value="16777290" enum="Key">
|
||||
<constant name="KEY_STOP" value="4194378" enum="Key">
|
||||
Media stop key.
|
||||
</constant>
|
||||
<constant name="KEY_REFRESH" value="16777291" enum="Key">
|
||||
<constant name="KEY_REFRESH" value="4194379" enum="Key">
|
||||
Media refresh key.
|
||||
</constant>
|
||||
<constant name="KEY_VOLUMEDOWN" value="16777292" enum="Key">
|
||||
<constant name="KEY_VOLUMEDOWN" value="4194380" enum="Key">
|
||||
Volume down key.
|
||||
</constant>
|
||||
<constant name="KEY_VOLUMEMUTE" value="16777293" enum="Key">
|
||||
<constant name="KEY_VOLUMEMUTE" value="4194381" enum="Key">
|
||||
Mute volume key.
|
||||
</constant>
|
||||
<constant name="KEY_VOLUMEUP" value="16777294" enum="Key">
|
||||
<constant name="KEY_VOLUMEUP" value="4194382" enum="Key">
|
||||
Volume up key.
|
||||
</constant>
|
||||
<constant name="KEY_BASSBOOST" value="16777295" enum="Key">
|
||||
<constant name="KEY_BASSBOOST" value="4194383" enum="Key">
|
||||
Bass Boost key.
|
||||
</constant>
|
||||
<constant name="KEY_BASSUP" value="16777296" enum="Key">
|
||||
<constant name="KEY_BASSUP" value="4194384" enum="Key">
|
||||
Bass up key.
|
||||
</constant>
|
||||
<constant name="KEY_BASSDOWN" value="16777297" enum="Key">
|
||||
<constant name="KEY_BASSDOWN" value="4194385" enum="Key">
|
||||
Bass down key.
|
||||
</constant>
|
||||
<constant name="KEY_TREBLEUP" value="16777298" enum="Key">
|
||||
<constant name="KEY_TREBLEUP" value="4194386" enum="Key">
|
||||
Treble up key.
|
||||
</constant>
|
||||
<constant name="KEY_TREBLEDOWN" value="16777299" enum="Key">
|
||||
<constant name="KEY_TREBLEDOWN" value="4194387" enum="Key">
|
||||
Treble down key.
|
||||
</constant>
|
||||
<constant name="KEY_MEDIAPLAY" value="16777300" enum="Key">
|
||||
<constant name="KEY_MEDIAPLAY" value="4194388" enum="Key">
|
||||
Media play key.
|
||||
</constant>
|
||||
<constant name="KEY_MEDIASTOP" value="16777301" enum="Key">
|
||||
<constant name="KEY_MEDIASTOP" value="4194389" enum="Key">
|
||||
Media stop key.
|
||||
</constant>
|
||||
<constant name="KEY_MEDIAPREVIOUS" value="16777302" enum="Key">
|
||||
<constant name="KEY_MEDIAPREVIOUS" value="4194390" enum="Key">
|
||||
Previous song key.
|
||||
</constant>
|
||||
<constant name="KEY_MEDIANEXT" value="16777303" enum="Key">
|
||||
<constant name="KEY_MEDIANEXT" value="4194391" enum="Key">
|
||||
Next song key.
|
||||
</constant>
|
||||
<constant name="KEY_MEDIARECORD" value="16777304" enum="Key">
|
||||
<constant name="KEY_MEDIARECORD" value="4194392" enum="Key">
|
||||
Media record key.
|
||||
</constant>
|
||||
<constant name="KEY_HOMEPAGE" value="16777305" enum="Key">
|
||||
<constant name="KEY_HOMEPAGE" value="4194393" enum="Key">
|
||||
Home page key.
|
||||
</constant>
|
||||
<constant name="KEY_FAVORITES" value="16777306" enum="Key">
|
||||
<constant name="KEY_FAVORITES" value="4194394" enum="Key">
|
||||
Favorites key.
|
||||
</constant>
|
||||
<constant name="KEY_SEARCH" value="16777307" enum="Key">
|
||||
<constant name="KEY_SEARCH" value="4194395" enum="Key">
|
||||
Search key.
|
||||
</constant>
|
||||
<constant name="KEY_STANDBY" value="16777308" enum="Key">
|
||||
<constant name="KEY_STANDBY" value="4194396" enum="Key">
|
||||
Standby key.
|
||||
</constant>
|
||||
<constant name="KEY_OPENURL" value="16777309" enum="Key">
|
||||
<constant name="KEY_OPENURL" value="4194397" enum="Key">
|
||||
Open URL / Launch Browser key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCHMAIL" value="16777310" enum="Key">
|
||||
<constant name="KEY_LAUNCHMAIL" value="4194398" enum="Key">
|
||||
Launch Mail key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCHMEDIA" value="16777311" enum="Key">
|
||||
<constant name="KEY_LAUNCHMEDIA" value="4194399" enum="Key">
|
||||
Launch Media key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCH0" value="16777312" enum="Key">
|
||||
<constant name="KEY_LAUNCH0" value="4194400" enum="Key">
|
||||
Launch Shortcut 0 key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCH1" value="16777313" enum="Key">
|
||||
<constant name="KEY_LAUNCH1" value="4194401" enum="Key">
|
||||
Launch Shortcut 1 key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCH2" value="16777314" enum="Key">
|
||||
<constant name="KEY_LAUNCH2" value="4194402" enum="Key">
|
||||
Launch Shortcut 2 key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCH3" value="16777315" enum="Key">
|
||||
<constant name="KEY_LAUNCH3" value="4194403" enum="Key">
|
||||
Launch Shortcut 3 key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCH4" value="16777316" enum="Key">
|
||||
<constant name="KEY_LAUNCH4" value="4194404" enum="Key">
|
||||
Launch Shortcut 4 key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCH5" value="16777317" enum="Key">
|
||||
<constant name="KEY_LAUNCH5" value="4194405" enum="Key">
|
||||
Launch Shortcut 5 key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCH6" value="16777318" enum="Key">
|
||||
<constant name="KEY_LAUNCH6" value="4194406" enum="Key">
|
||||
Launch Shortcut 6 key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCH7" value="16777319" enum="Key">
|
||||
<constant name="KEY_LAUNCH7" value="4194407" enum="Key">
|
||||
Launch Shortcut 7 key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCH8" value="16777320" enum="Key">
|
||||
<constant name="KEY_LAUNCH8" value="4194408" enum="Key">
|
||||
Launch Shortcut 8 key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCH9" value="16777321" enum="Key">
|
||||
<constant name="KEY_LAUNCH9" value="4194409" enum="Key">
|
||||
Launch Shortcut 9 key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCHA" value="16777322" enum="Key">
|
||||
<constant name="KEY_LAUNCHA" value="4194410" enum="Key">
|
||||
Launch Shortcut A key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCHB" value="16777323" enum="Key">
|
||||
<constant name="KEY_LAUNCHB" value="4194411" enum="Key">
|
||||
Launch Shortcut B key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCHC" value="16777324" enum="Key">
|
||||
<constant name="KEY_LAUNCHC" value="4194412" enum="Key">
|
||||
Launch Shortcut C key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCHD" value="16777325" enum="Key">
|
||||
<constant name="KEY_LAUNCHD" value="4194413" enum="Key">
|
||||
Launch Shortcut D key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCHE" value="16777326" enum="Key">
|
||||
<constant name="KEY_LAUNCHE" value="4194414" enum="Key">
|
||||
Launch Shortcut E key.
|
||||
</constant>
|
||||
<constant name="KEY_LAUNCHF" value="16777327" enum="Key">
|
||||
<constant name="KEY_LAUNCHF" value="4194415" enum="Key">
|
||||
Launch Shortcut F key.
|
||||
</constant>
|
||||
<constant name="KEY_UNKNOWN" value="33554431" enum="Key">
|
||||
<constant name="KEY_UNKNOWN" value="16777215" enum="Key">
|
||||
Unknown key.
|
||||
</constant>
|
||||
<constant name="KEY_SPACE" value="32" enum="Key">
|
||||
|
@ -2229,27 +2229,27 @@
|
|||
<constant name="KEY_YDIAERESIS" value="255" enum="Key">
|
||||
ÿ key.
|
||||
</constant>
|
||||
<constant name="KEY_CODE_MASK" value="33554431" enum="KeyModifierMask">
|
||||
<constant name="KEY_CODE_MASK" value="8388607" enum="KeyModifierMask">
|
||||
Key Code mask.
|
||||
</constant>
|
||||
<constant name="KEY_MODIFIER_MASK" value="2130706432" enum="KeyModifierMask">
|
||||
<constant name="KEY_MODIFIER_MASK" value="532676608" enum="KeyModifierMask">
|
||||
Modifier key mask.
|
||||
</constant>
|
||||
<constant name="KEY_MASK_CMD_OR_CTRL" value="16777216" enum="KeyModifierMask">
|
||||
Automatically remapped to [constant KEY_META] on macOS and [constant KEY_CTRL] on other platforms, this mask is never set in the actual events, and should be used for key mapping only.
|
||||
</constant>
|
||||
<constant name="KEY_MASK_SHIFT" value="33554432" enum="KeyModifierMask">
|
||||
Shift key mask.
|
||||
</constant>
|
||||
<constant name="KEY_MASK_ALT" value="67108864" enum="KeyModifierMask">
|
||||
Alt key mask.
|
||||
Alt or Option (on macOS) key mask.
|
||||
</constant>
|
||||
<constant name="KEY_MASK_META" value="134217728" enum="KeyModifierMask">
|
||||
Meta key mask.
|
||||
Command (on macOS) or Meta/Windows key mask.
|
||||
</constant>
|
||||
<constant name="KEY_MASK_CTRL" value="268435456" enum="KeyModifierMask">
|
||||
Ctrl key mask.
|
||||
</constant>
|
||||
<constant name="KEY_MASK_CMD" value="platform-dependent" enum="KeyModifierMask">
|
||||
Command key mask. On macOS, this is equivalent to [constant KEY_MASK_META]. On other platforms, this is equivalent to [constant KEY_MASK_CTRL]. This mask should be preferred to [constant KEY_MASK_META] or [constant KEY_MASK_CTRL] for system shortcuts as it handles all platforms correctly.
|
||||
</constant>
|
||||
<constant name="KEY_MASK_KPAD" value="536870912" enum="KeyModifierMask">
|
||||
Keypad key mask.
|
||||
</constant>
|
||||
|
|
|
@ -9,27 +9,30 @@
|
|||
<tutorials>
|
||||
<link title="InputEvent">$DOCS_URL/tutorials/inputs/inputevent.html</link>
|
||||
</tutorials>
|
||||
<methods>
|
||||
<method name="is_command_or_control_pressed" qualifiers="const">
|
||||
<return type="bool" />
|
||||
<description>
|
||||
On macOS, returns [code]true[/code] if [kbd]Meta[/kbd] ([kbd]Command[/kbd]) is pressed.
|
||||
On other platforms, returns [code]true[/code] if [kbd]Ctrl[/kbd] is pressed.
|
||||
</description>
|
||||
</method>
|
||||
</methods>
|
||||
<members>
|
||||
<member name="alt_pressed" type="bool" setter="set_alt_pressed" getter="is_alt_pressed" default="false">
|
||||
State of the [kbd]Alt[/kbd] modifier.
|
||||
</member>
|
||||
<member name="command_pressed" type="bool" setter="set_command_pressed" getter="is_command_pressed" default="false">
|
||||
State of the [kbd]Cmd[/kbd] modifier. On macOS, this is equivalent to [member meta_pressed]. On other platforms, this is equivalent to [member ctrl_pressed].
|
||||
This modifier should be preferred to [member ctrl_pressed] or [member meta_pressed] for system shortcuts, as it maintains better cross-platform compatibility.
|
||||
<member name="command_or_control_autoremap" type="bool" setter="set_command_or_control_autoremap" getter="is_command_or_control_autoremap" default="false">
|
||||
Automaticaly use [kbd]Meta[/kbd] ([kbd]Command[/kbd]) on macOS and [kbd]Ctrl[/kbd] on other platforms. If [code]true[/code], [member ctrl_pressed] and [member meta_pressed] cannot be set.
|
||||
</member>
|
||||
<member name="ctrl_pressed" type="bool" setter="set_ctrl_pressed" getter="is_ctrl_pressed" default="false">
|
||||
State of the [kbd]Ctrl[/kbd] modifier.
|
||||
</member>
|
||||
<member name="meta_pressed" type="bool" setter="set_meta_pressed" getter="is_meta_pressed" default="false">
|
||||
State of the [kbd]Meta[/kbd] modifier. On Windows and Linux, this represents the Windows key (sometimes called "meta" or "super" on Linux). On macOS, this represents the Command key, and is equivalent to [member command_pressed].
|
||||
For better cross-system compatibility, use [member command_pressed] instead.
|
||||
State of the [kbd]Meta[/kbd] modifier. On Windows and Linux, this represents the Windows key (sometimes called "meta" or "super" on Linux). On macOS, this represents the Command key.
|
||||
</member>
|
||||
<member name="shift_pressed" type="bool" setter="set_shift_pressed" getter="is_shift_pressed" default="false">
|
||||
State of the [kbd]Shift[/kbd] modifier.
|
||||
</member>
|
||||
<member name="store_command" type="bool" setter="set_store_command" getter="is_storing_command" default="true">
|
||||
If [code]true[/code], pressing [kbd]Cmd[/kbd] on macOS or [kbd]Ctrl[/kbd] on all other platforms will both be serialized as [member command_pressed]. If [code]false[/code], those same keys will be serialized as [member meta_pressed] on macOS and [member ctrl_pressed] on all other platforms.
|
||||
This aids with cross-platform compatibility when developing e.g. on Windows for macOS, or vice-versa.
|
||||
</member>
|
||||
</members>
|
||||
</class>
|
||||
|
|
|
@ -66,6 +66,14 @@ String InputEventConfigurationDialog::get_event_text(const Ref<InputEvent> &p_ev
|
|||
|
||||
String text = p_event->as_text();
|
||||
|
||||
Ref<InputEventKey> key = p_event;
|
||||
if (key.is_valid() && key->is_command_or_control_autoremap()) {
|
||||
#ifdef MACOS_ENABLED
|
||||
text = text.replace("Command", "Command/Ctrl");
|
||||
#else
|
||||
text = text.replace("Ctrl", "Command/Ctrl");
|
||||
#endif
|
||||
}
|
||||
Ref<InputEventMouse> mouse = p_event;
|
||||
Ref<InputEventJoypadMotion> jp_motion = p_event;
|
||||
Ref<InputEventJoypadButton> jp_button = p_event;
|
||||
|
@ -108,11 +116,10 @@ void InputEventConfigurationDialog::_set_event(const Ref<InputEvent> &p_event, b
|
|||
show_mods = true;
|
||||
mod_checkboxes[MOD_ALT]->set_pressed(mod->is_alt_pressed());
|
||||
mod_checkboxes[MOD_SHIFT]->set_pressed(mod->is_shift_pressed());
|
||||
mod_checkboxes[MOD_COMMAND]->set_pressed(mod->is_command_pressed());
|
||||
mod_checkboxes[MOD_CTRL]->set_pressed(mod->is_ctrl_pressed());
|
||||
mod_checkboxes[MOD_META]->set_pressed(mod->is_meta_pressed());
|
||||
|
||||
store_command_checkbox->set_pressed(mod->is_storing_command());
|
||||
autoremap_command_or_control_checkbox->set_pressed(mod->is_command_or_control_autoremap());
|
||||
}
|
||||
|
||||
if (k.is_valid()) {
|
||||
|
@ -287,8 +294,6 @@ void InputEventConfigurationDialog::_listen_window_input(const Ref<InputEvent> &
|
|||
|
||||
Ref<InputEventWithModifiers> mod = received_event;
|
||||
if (mod.is_valid()) {
|
||||
// Maintain store command option state
|
||||
mod->set_store_command(store_command_checkbox->is_pressed());
|
||||
mod->set_window_id(0);
|
||||
}
|
||||
|
||||
|
@ -419,41 +424,31 @@ void InputEventConfigurationDialog::_mod_toggled(bool p_checked, int p_index) {
|
|||
} else if (p_index == 1) {
|
||||
ie->set_shift_pressed(p_checked);
|
||||
} else if (p_index == 2) {
|
||||
ie->set_command_pressed(p_checked);
|
||||
if (!autoremap_command_or_control_checkbox->is_pressed()) {
|
||||
ie->set_ctrl_pressed(p_checked);
|
||||
}
|
||||
} else if (p_index == 3) {
|
||||
ie->set_ctrl_pressed(p_checked);
|
||||
} else if (p_index == 4) {
|
||||
ie->set_meta_pressed(p_checked);
|
||||
if (!autoremap_command_or_control_checkbox->is_pressed()) {
|
||||
ie->set_meta_pressed(p_checked);
|
||||
}
|
||||
}
|
||||
|
||||
_set_event(ie);
|
||||
}
|
||||
|
||||
void InputEventConfigurationDialog::_store_command_toggled(bool p_checked) {
|
||||
void InputEventConfigurationDialog::_autoremap_command_or_control_toggled(bool p_checked) {
|
||||
Ref<InputEventWithModifiers> ie = event;
|
||||
if (ie.is_valid()) {
|
||||
ie->set_store_command(p_checked);
|
||||
ie->set_command_or_control_autoremap(p_checked);
|
||||
_set_event(ie);
|
||||
}
|
||||
|
||||
if (p_checked) {
|
||||
// If storing Command, show it's checkbox and hide Control (Win/Lin) or Meta (Mac)
|
||||
#ifdef APPLE_STYLE_KEYS
|
||||
mod_checkboxes[MOD_META]->hide();
|
||||
|
||||
mod_checkboxes[MOD_COMMAND]->show();
|
||||
mod_checkboxes[MOD_COMMAND]->set_text("Meta (Command)");
|
||||
#else
|
||||
mod_checkboxes[MOD_CTRL]->hide();
|
||||
|
||||
mod_checkboxes[MOD_COMMAND]->show();
|
||||
mod_checkboxes[MOD_COMMAND]->set_text("Control (Command)");
|
||||
#endif
|
||||
} else {
|
||||
// If not, hide Command, show Control and Meta.
|
||||
mod_checkboxes[MOD_COMMAND]->hide();
|
||||
mod_checkboxes[MOD_CTRL]->show();
|
||||
mod_checkboxes[MOD_META]->show();
|
||||
mod_checkboxes[MOD_CTRL]->show();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -502,10 +497,12 @@ void InputEventConfigurationDialog::_input_list_item_selected() {
|
|||
// Maintain modifier state from checkboxes
|
||||
k->set_alt_pressed(mod_checkboxes[MOD_ALT]->is_pressed());
|
||||
k->set_shift_pressed(mod_checkboxes[MOD_SHIFT]->is_pressed());
|
||||
k->set_command_pressed(mod_checkboxes[MOD_COMMAND]->is_pressed());
|
||||
k->set_ctrl_pressed(mod_checkboxes[MOD_CTRL]->is_pressed());
|
||||
k->set_meta_pressed(mod_checkboxes[MOD_META]->is_pressed());
|
||||
k->set_store_command(store_command_checkbox->is_pressed());
|
||||
if (autoremap_command_or_control_checkbox->is_pressed()) {
|
||||
k->set_command_or_control_autoremap(true);
|
||||
} else {
|
||||
k->set_ctrl_pressed(mod_checkboxes[MOD_CTRL]->is_pressed());
|
||||
k->set_meta_pressed(mod_checkboxes[MOD_META]->is_pressed());
|
||||
}
|
||||
|
||||
_set_event(k, false);
|
||||
} break;
|
||||
|
@ -517,10 +514,12 @@ void InputEventConfigurationDialog::_input_list_item_selected() {
|
|||
// Maintain modifier state from checkboxes
|
||||
mb->set_alt_pressed(mod_checkboxes[MOD_ALT]->is_pressed());
|
||||
mb->set_shift_pressed(mod_checkboxes[MOD_SHIFT]->is_pressed());
|
||||
mb->set_command_pressed(mod_checkboxes[MOD_COMMAND]->is_pressed());
|
||||
mb->set_ctrl_pressed(mod_checkboxes[MOD_CTRL]->is_pressed());
|
||||
mb->set_meta_pressed(mod_checkboxes[MOD_META]->is_pressed());
|
||||
mb->set_store_command(store_command_checkbox->is_pressed());
|
||||
if (autoremap_command_or_control_checkbox->is_pressed()) {
|
||||
mb->set_command_or_control_autoremap(true);
|
||||
} else {
|
||||
mb->set_ctrl_pressed(mod_checkboxes[MOD_CTRL]->is_pressed());
|
||||
mb->set_meta_pressed(mod_checkboxes[MOD_META]->is_pressed());
|
||||
}
|
||||
|
||||
// Maintain selected device
|
||||
mb->set_device(_get_current_device());
|
||||
|
@ -611,7 +610,7 @@ void InputEventConfigurationDialog::popup_and_configure(const Ref<InputEvent> &p
|
|||
// This is especially important for WASD movement layouts.
|
||||
physical_key_checkbox->set_pressed(true);
|
||||
|
||||
store_command_checkbox->set_pressed(true);
|
||||
autoremap_command_or_control_checkbox->set_pressed(false);
|
||||
_set_current_device(0);
|
||||
|
||||
// Switch to "Listen" tab
|
||||
|
@ -722,21 +721,18 @@ InputEventConfigurationDialog::InputEventConfigurationDialog() {
|
|||
mod_checkboxes[i] = memnew(CheckBox);
|
||||
mod_checkboxes[i]->connect("toggled", callable_mp(this, &InputEventConfigurationDialog::_mod_toggled).bind(i));
|
||||
mod_checkboxes[i]->set_text(name);
|
||||
mod_checkboxes[i]->set_tooltip_text(TTR(mods_tip[i]));
|
||||
mod_container->add_child(mod_checkboxes[i]);
|
||||
}
|
||||
|
||||
mod_container->add_child(memnew(VSeparator));
|
||||
|
||||
store_command_checkbox = memnew(CheckBox);
|
||||
store_command_checkbox->connect("toggled", callable_mp(this, &InputEventConfigurationDialog::_store_command_toggled));
|
||||
store_command_checkbox->set_pressed(true);
|
||||
store_command_checkbox->set_text(TTR("Store Command"));
|
||||
#ifdef APPLE_STYLE_KEYS
|
||||
store_command_checkbox->set_tooltip_text(TTR("Toggles between serializing 'command' and 'meta'. Used for compatibility with Windows/Linux style keyboard."));
|
||||
#else
|
||||
store_command_checkbox->set_tooltip_text(TTR("Toggles between serializing 'command' and 'control'. Used for compatibility with Apple Style keyboards."));
|
||||
#endif
|
||||
mod_container->add_child(store_command_checkbox);
|
||||
autoremap_command_or_control_checkbox = memnew(CheckBox);
|
||||
autoremap_command_or_control_checkbox->connect("toggled", callable_mp(this, &InputEventConfigurationDialog::_autoremap_command_or_control_toggled));
|
||||
autoremap_command_or_control_checkbox->set_pressed(false);
|
||||
autoremap_command_or_control_checkbox->set_text(TTR("Command / Control (auto)"));
|
||||
autoremap_command_or_control_checkbox->set_tooltip_text(TTR("Automatically remaps between 'Meta' ('Command') and 'Control' depending on current platform."));
|
||||
mod_container->add_child(autoremap_command_or_control_checkbox);
|
||||
|
||||
mod_container->hide();
|
||||
additional_options_container->add_child(mod_container);
|
||||
|
|
|
@ -85,15 +85,21 @@ private:
|
|||
enum ModCheckbox {
|
||||
MOD_ALT,
|
||||
MOD_SHIFT,
|
||||
MOD_COMMAND,
|
||||
MOD_CTRL,
|
||||
MOD_META,
|
||||
MOD_MAX
|
||||
};
|
||||
String mods[MOD_MAX] = { "Alt", "Shift", "Command", "Ctrl", "Metakey" };
|
||||
#if defined(MACOS_ENABLED)
|
||||
String mods[MOD_MAX] = { "Option", "Shift", "Ctrl", "Command" };
|
||||
#elif defined(WINDOWS_ENABLED)
|
||||
String mods[MOD_MAX] = { "Alt", "Shift", "Ctrl", "Windows" };
|
||||
#else
|
||||
String mods[MOD_MAX] = { "Alt", "Shift", "Ctrl", "Meta" };
|
||||
#endif
|
||||
String mods_tip[MOD_MAX] = { "Alt or Option key", "Shift key", "Control key", "Meta/Windows or Command key" };
|
||||
|
||||
CheckBox *mod_checkboxes[MOD_MAX];
|
||||
CheckBox *store_command_checkbox = nullptr;
|
||||
CheckBox *autoremap_command_or_control_checkbox = nullptr;
|
||||
|
||||
CheckBox *physical_key_checkbox = nullptr;
|
||||
|
||||
|
@ -107,7 +113,7 @@ private:
|
|||
void _input_list_item_selected();
|
||||
|
||||
void _mod_toggled(bool p_checked, int p_index);
|
||||
void _store_command_toggled(bool p_checked);
|
||||
void _autoremap_command_or_control_toggled(bool p_checked);
|
||||
void _physical_keycode_toggled(bool p_checked);
|
||||
|
||||
void _device_selection_changed(int p_option_button_index);
|
||||
|
|
|
@ -1088,7 +1088,7 @@ void AnimationBezierTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
|
|||
//first check point
|
||||
//command makes it ignore the main point, so control point editors can be force-edited
|
||||
//path 2D editing in the 3D and 2D editors works the same way
|
||||
if (!mb->is_command_pressed()) {
|
||||
if (!mb->is_command_or_control_pressed()) {
|
||||
if (edit_points[i].point_rect.has_point(mb->get_position())) {
|
||||
IntPair pair = IntPair(edit_points[i].track, edit_points[i].key);
|
||||
if (mb->is_shift_pressed()) {
|
||||
|
@ -1152,7 +1152,7 @@ void AnimationBezierTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
|
||||
//insert new point
|
||||
if (mb->get_position().x >= limit && mb->get_position().x < get_size().width && mb->is_command_pressed()) {
|
||||
if (mb->get_position().x >= limit && mb->get_position().x < get_size().width && mb->is_command_or_control_pressed()) {
|
||||
Array new_point;
|
||||
new_point.resize(5);
|
||||
|
||||
|
@ -1684,8 +1684,8 @@ AnimationBezierTrackEdit::AnimationBezierTrackEdit() {
|
|||
set_clip_contents(true);
|
||||
|
||||
ED_SHORTCUT("animation_bezier_editor/focus", TTR("Focus"), Key::F);
|
||||
ED_SHORTCUT("animation_bezier_editor/select_all_keys", TTR("Select All Keys"), KeyModifierMask::CMD | Key::A);
|
||||
ED_SHORTCUT("animation_bezier_editor/deselect_all_keys", TTR("Deselect All Keys"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::A);
|
||||
ED_SHORTCUT("animation_bezier_editor/select_all_keys", TTR("Select All Keys"), KeyModifierMask::CMD_OR_CTRL | Key::A);
|
||||
ED_SHORTCUT("animation_bezier_editor/deselect_all_keys", TTR("Deselect All Keys"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::A);
|
||||
|
||||
menu = memnew(PopupMenu);
|
||||
add_child(menu);
|
||||
|
|
|
@ -2930,7 +2930,7 @@ void AnimationTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
|
||||
if (key_idx != -1) {
|
||||
if (mb->is_command_pressed() || mb->is_shift_pressed()) {
|
||||
if (mb->is_command_or_control_pressed() || mb->is_shift_pressed()) {
|
||||
if (editor->is_key_selected(track, key_idx)) {
|
||||
emit_signal(SNAME("deselect_key"), key_idx);
|
||||
} else {
|
||||
|
@ -5468,7 +5468,7 @@ void AnimationTrackEditor::_scroll_input(const Ref<InputEvent> &p_event) {
|
|||
for (int i = 0; i < track_edits.size(); i++) {
|
||||
Rect2 local_rect = box_select_rect;
|
||||
local_rect.position -= track_edits[i]->get_global_position();
|
||||
track_edits[i]->append_to_selection(local_rect, mb->is_command_pressed());
|
||||
track_edits[i]->append_to_selection(local_rect, mb->is_command_or_control_pressed());
|
||||
}
|
||||
|
||||
if (_get_track_selected() == -1 && track_edits.size() > 0) { // Minimal hack to make shortcuts work.
|
||||
|
@ -5494,7 +5494,7 @@ void AnimationTrackEditor::_scroll_input(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
|
||||
if (!box_selection->is_visible_in_tree()) {
|
||||
if (!mm->is_command_pressed() && !mm->is_shift_pressed()) {
|
||||
if (!mm->is_command_or_control_pressed() && !mm->is_shift_pressed()) {
|
||||
_clear_selection(true);
|
||||
}
|
||||
box_selection->show();
|
||||
|
@ -6708,15 +6708,15 @@ AnimationTrackEditor::AnimationTrackEditor() {
|
|||
edit->get_popup()->add_separator();
|
||||
edit->get_popup()->add_item(TTR("Make Easing Selection"), EDIT_EASE_SELECTION);
|
||||
edit->get_popup()->add_separator();
|
||||
edit->get_popup()->add_shortcut(ED_SHORTCUT("animation_editor/duplicate_selection", TTR("Duplicate Selection"), KeyModifierMask::CMD | Key::D), EDIT_DUPLICATE_SELECTION);
|
||||
edit->get_popup()->add_shortcut(ED_SHORTCUT("animation_editor/duplicate_selection_transposed", TTR("Duplicate Transposed"), KeyModifierMask::SHIFT | KeyModifierMask::CMD | Key::D), EDIT_DUPLICATE_TRANSPOSED);
|
||||
edit->get_popup()->add_shortcut(ED_SHORTCUT("animation_editor/duplicate_selection", TTR("Duplicate Selection"), KeyModifierMask::CMD_OR_CTRL | Key::D), EDIT_DUPLICATE_SELECTION);
|
||||
edit->get_popup()->add_shortcut(ED_SHORTCUT("animation_editor/duplicate_selection_transposed", TTR("Duplicate Transposed"), KeyModifierMask::SHIFT | KeyModifierMask::CMD_OR_CTRL | Key::D), EDIT_DUPLICATE_TRANSPOSED);
|
||||
edit->get_popup()->add_shortcut(ED_SHORTCUT("animation_editor/add_reset_value", TTR("Add RESET Value(s)")));
|
||||
edit->get_popup()->add_separator();
|
||||
edit->get_popup()->add_shortcut(ED_SHORTCUT("animation_editor/delete_selection", TTR("Delete Selection"), Key::KEY_DELETE), EDIT_DELETE_SELECTION);
|
||||
|
||||
edit->get_popup()->add_separator();
|
||||
edit->get_popup()->add_shortcut(ED_SHORTCUT("animation_editor/goto_next_step", TTR("Go to Next Step"), KeyModifierMask::CMD | Key::RIGHT), EDIT_GOTO_NEXT_STEP);
|
||||
edit->get_popup()->add_shortcut(ED_SHORTCUT("animation_editor/goto_prev_step", TTR("Go to Previous Step"), KeyModifierMask::CMD | Key::LEFT), EDIT_GOTO_PREV_STEP);
|
||||
edit->get_popup()->add_shortcut(ED_SHORTCUT("animation_editor/goto_next_step", TTR("Go to Next Step"), KeyModifierMask::CMD_OR_CTRL | Key::RIGHT), EDIT_GOTO_NEXT_STEP);
|
||||
edit->get_popup()->add_shortcut(ED_SHORTCUT("animation_editor/goto_prev_step", TTR("Go to Previous Step"), KeyModifierMask::CMD_OR_CTRL | Key::LEFT), EDIT_GOTO_PREV_STEP);
|
||||
edit->get_popup()->add_separator();
|
||||
edit->get_popup()->add_shortcut(ED_SHORTCUT("animation_editor/apply_reset", TTR("Apply Reset")), EDIT_APPLY_RESET);
|
||||
edit->get_popup()->add_separator();
|
||||
|
|
|
@ -800,7 +800,7 @@ void CodeTextEditor::_text_editor_gui_input(const Ref<InputEvent> &p_event) {
|
|||
Ref<InputEventMouseButton> mb = p_event;
|
||||
|
||||
if (mb.is_valid()) {
|
||||
if (mb->is_pressed() && mb->is_command_pressed()) {
|
||||
if (mb->is_pressed() && mb->is_command_or_control_pressed()) {
|
||||
if (mb->get_button_index() == MouseButton::WHEEL_UP) {
|
||||
_zoom_in();
|
||||
} else if (mb->get_button_index() == MouseButton::WHEEL_DOWN) {
|
||||
|
@ -1867,10 +1867,10 @@ void CodeTextEditor::update_toggle_scripts_button() {
|
|||
|
||||
CodeTextEditor::CodeTextEditor() {
|
||||
code_complete_func = nullptr;
|
||||
ED_SHORTCUT("script_editor/zoom_in", TTR("Zoom In"), KeyModifierMask::CMD | Key::EQUAL);
|
||||
ED_SHORTCUT("script_editor/zoom_out", TTR("Zoom Out"), KeyModifierMask::CMD | Key::MINUS);
|
||||
ED_SHORTCUT("script_editor/zoom_in", TTR("Zoom In"), KeyModifierMask::CMD_OR_CTRL | Key::EQUAL);
|
||||
ED_SHORTCUT("script_editor/zoom_out", TTR("Zoom Out"), KeyModifierMask::CMD_OR_CTRL | Key::MINUS);
|
||||
ED_SHORTCUT_ARRAY("script_editor/reset_zoom", TTR("Reset Zoom"),
|
||||
{ int32_t(KeyModifierMask::CMD | Key::KEY_0), int32_t(KeyModifierMask::CMD | Key::KP_0) });
|
||||
{ int32_t(KeyModifierMask::CMD_OR_CTRL | Key::KEY_0), int32_t(KeyModifierMask::CMD_OR_CTRL | Key::KP_0) });
|
||||
|
||||
text_editor = memnew(CodeEdit);
|
||||
add_child(text_editor);
|
||||
|
|
|
@ -940,7 +940,7 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) {
|
|||
hbc->add_child(bus_options);
|
||||
|
||||
bus_popup = bus_options->get_popup();
|
||||
bus_popup->add_shortcut(ED_SHORTCUT("audio_bus_editor/duplicate_selected_bus", TTR("Duplicate Bus"), KeyModifierMask::CMD | Key::D));
|
||||
bus_popup->add_shortcut(ED_SHORTCUT("audio_bus_editor/duplicate_selected_bus", TTR("Duplicate Bus"), KeyModifierMask::CMD_OR_CTRL | Key::D));
|
||||
bus_popup->add_shortcut(ED_SHORTCUT("audio_bus_editor/delete_selected_bus", TTR("Delete Bus"), Key::KEY_DELETE));
|
||||
bus_popup->set_item_disabled(1, is_master);
|
||||
bus_popup->add_item(TTR("Reset Volume"));
|
||||
|
|
|
@ -649,7 +649,7 @@ void EditorFileDialog::_item_list_empty_clicked(const Vector2 &p_pos, MouseButto
|
|||
item_menu->reset_size();
|
||||
|
||||
if (can_create_dir) {
|
||||
item_menu->add_icon_item(theme_cache.folder, TTR("New Folder..."), ITEM_MENU_NEW_FOLDER, KeyModifierMask::CMD | Key::N);
|
||||
item_menu->add_icon_item(theme_cache.folder, TTR("New Folder..."), ITEM_MENU_NEW_FOLDER, KeyModifierMask::CMD_OR_CTRL | Key::N);
|
||||
}
|
||||
item_menu->add_icon_item(theme_cache.reload, TTR("Refresh"), ITEM_MENU_REFRESH, Key::F5);
|
||||
item_menu->add_separator();
|
||||
|
@ -1664,14 +1664,14 @@ EditorFileDialog::EditorFileDialog() {
|
|||
ED_SHORTCUT("file_dialog/go_forward", TTR("Go Forward"), KeyModifierMask::ALT | Key::RIGHT);
|
||||
ED_SHORTCUT("file_dialog/go_up", TTR("Go Up"), KeyModifierMask::ALT | Key::UP);
|
||||
ED_SHORTCUT("file_dialog/refresh", TTR("Refresh"), Key::F5);
|
||||
ED_SHORTCUT("file_dialog/toggle_hidden_files", TTR("Toggle Hidden Files"), KeyModifierMask::CMD | Key::H);
|
||||
ED_SHORTCUT("file_dialog/toggle_hidden_files", TTR("Toggle Hidden Files"), KeyModifierMask::CMD_OR_CTRL | Key::H);
|
||||
ED_SHORTCUT("file_dialog/toggle_favorite", TTR("Toggle Favorite"), KeyModifierMask::ALT | Key::F);
|
||||
ED_SHORTCUT("file_dialog/toggle_mode", TTR("Toggle Mode"), KeyModifierMask::ALT | Key::V);
|
||||
ED_SHORTCUT("file_dialog/create_folder", TTR("Create Folder"), KeyModifierMask::CMD | Key::N);
|
||||
ED_SHORTCUT("file_dialog/create_folder", TTR("Create Folder"), KeyModifierMask::CMD_OR_CTRL | Key::N);
|
||||
ED_SHORTCUT("file_dialog/delete", TTR("Delete"), Key::KEY_DELETE);
|
||||
ED_SHORTCUT("file_dialog/focus_path", TTR("Focus Path"), KeyModifierMask::CMD | Key::D);
|
||||
ED_SHORTCUT("file_dialog/move_favorite_up", TTR("Move Favorite Up"), KeyModifierMask::CMD | Key::UP);
|
||||
ED_SHORTCUT("file_dialog/move_favorite_down", TTR("Move Favorite Down"), KeyModifierMask::CMD | Key::DOWN);
|
||||
ED_SHORTCUT("file_dialog/focus_path", TTR("Focus Path"), KeyModifierMask::CMD_OR_CTRL | Key::D);
|
||||
ED_SHORTCUT("file_dialog/move_favorite_up", TTR("Move Favorite Up"), KeyModifierMask::CMD_OR_CTRL | Key::UP);
|
||||
ED_SHORTCUT("file_dialog/move_favorite_down", TTR("Move Favorite Down"), KeyModifierMask::CMD_OR_CTRL | Key::DOWN);
|
||||
|
||||
HBoxContainer *pathhb = memnew(HBoxContainer);
|
||||
|
||||
|
|
|
@ -4082,7 +4082,7 @@ EditorInspector::EditorInspector() {
|
|||
refresh_countdown = 0.33;
|
||||
}
|
||||
|
||||
ED_SHORTCUT("property_editor/copy_property", TTR("Copy Property"), KeyModifierMask::CMD | Key::C);
|
||||
ED_SHORTCUT("property_editor/paste_property", TTR("Paste Property"), KeyModifierMask::CMD | Key::V);
|
||||
ED_SHORTCUT("property_editor/copy_property_path", TTR("Copy Property Path"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::C);
|
||||
ED_SHORTCUT("property_editor/copy_property", TTR("Copy Property"), KeyModifierMask::CMD_OR_CTRL | Key::C);
|
||||
ED_SHORTCUT("property_editor/paste_property", TTR("Paste Property"), KeyModifierMask::CMD_OR_CTRL | Key::V);
|
||||
ED_SHORTCUT("property_editor/copy_property_path", TTR("Copy Property Path"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::C);
|
||||
}
|
||||
|
|
|
@ -396,7 +396,7 @@ EditorLog::EditorLog() {
|
|||
clear_button = memnew(Button);
|
||||
clear_button->set_flat(true);
|
||||
clear_button->set_focus_mode(FOCUS_NONE);
|
||||
clear_button->set_shortcut(ED_SHORTCUT("editor/clear_output", TTR("Clear Output"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::K));
|
||||
clear_button->set_shortcut(ED_SHORTCUT("editor/clear_output", TTR("Clear Output"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::K));
|
||||
clear_button->set_shortcut_context(this);
|
||||
clear_button->connect("pressed", callable_mp(this, &EditorLog::_clear_request));
|
||||
hb_tools->add_child(clear_button);
|
||||
|
@ -405,7 +405,7 @@ EditorLog::EditorLog() {
|
|||
copy_button = memnew(Button);
|
||||
copy_button->set_flat(true);
|
||||
copy_button->set_focus_mode(FOCUS_NONE);
|
||||
copy_button->set_shortcut(ED_SHORTCUT("editor/copy_output", TTR("Copy Selection"), KeyModifierMask::CMD | Key::C));
|
||||
copy_button->set_shortcut(ED_SHORTCUT("editor/copy_output", TTR("Copy Selection"), KeyModifierMask::CMD_OR_CTRL | Key::C));
|
||||
copy_button->set_shortcut_context(this);
|
||||
copy_button->connect("pressed", callable_mp(this, &EditorLog::_copy_request));
|
||||
hb_tools->add_child(copy_button);
|
||||
|
@ -431,7 +431,7 @@ EditorLog::EditorLog() {
|
|||
show_search_button->set_focus_mode(FOCUS_NONE);
|
||||
show_search_button->set_toggle_mode(true);
|
||||
show_search_button->set_pressed(true);
|
||||
show_search_button->set_shortcut(ED_SHORTCUT("editor/open_search", TTR("Focus Search/Filter Bar"), KeyModifierMask::CMD | Key::F));
|
||||
show_search_button->set_shortcut(ED_SHORTCUT("editor/open_search", TTR("Focus Search/Filter Bar"), KeyModifierMask::CMD_OR_CTRL | Key::F));
|
||||
show_search_button->set_shortcut_context(this);
|
||||
show_search_button->connect("toggled", callable_mp(this, &EditorLog::_set_search_visible));
|
||||
hb_tools2->add_child(show_search_button);
|
||||
|
|
|
@ -6554,8 +6554,8 @@ EditorNode::EditorNode() {
|
|||
|
||||
distraction_free = memnew(Button);
|
||||
distraction_free->set_flat(true);
|
||||
ED_SHORTCUT_AND_COMMAND("editor/distraction_free_mode", TTR("Distraction Free Mode"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::F11);
|
||||
ED_SHORTCUT_OVERRIDE("editor/distraction_free_mode", "macos", KeyModifierMask::CMD | KeyModifierMask::CTRL | Key::D);
|
||||
ED_SHORTCUT_AND_COMMAND("editor/distraction_free_mode", TTR("Distraction Free Mode"), KeyModifierMask::CTRL | KeyModifierMask::SHIFT | Key::F11);
|
||||
ED_SHORTCUT_OVERRIDE("editor/distraction_free_mode", "macos", KeyModifierMask::META | KeyModifierMask::CTRL | Key::D);
|
||||
distraction_free->set_shortcut(ED_GET_SHORTCUT("editor/distraction_free_mode"));
|
||||
distraction_free->set_tooltip_text(TTR("Toggle distraction-free mode."));
|
||||
distraction_free->connect("pressed", callable_mp(this, &EditorNode::_toggle_distraction_free_mode));
|
||||
|
@ -6667,30 +6667,30 @@ EditorNode::EditorNode() {
|
|||
gui_base->add_child(warning);
|
||||
warning->connect("custom_action", callable_mp(this, &EditorNode::_copy_warning));
|
||||
|
||||
ED_SHORTCUT("editor/next_tab", TTR("Next Scene Tab"), KeyModifierMask::CMD + Key::TAB);
|
||||
ED_SHORTCUT("editor/prev_tab", TTR("Previous Scene Tab"), KeyModifierMask::CMD + KeyModifierMask::SHIFT + Key::TAB);
|
||||
ED_SHORTCUT("editor/filter_files", TTR("Focus FileSystem Filter"), KeyModifierMask::CMD + KeyModifierMask::ALT + Key::P);
|
||||
ED_SHORTCUT("editor/next_tab", TTR("Next Scene Tab"), KeyModifierMask::CMD_OR_CTRL + Key::TAB);
|
||||
ED_SHORTCUT("editor/prev_tab", TTR("Previous Scene Tab"), KeyModifierMask::CMD_OR_CTRL + KeyModifierMask::SHIFT + Key::TAB);
|
||||
ED_SHORTCUT("editor/filter_files", TTR("Focus FileSystem Filter"), KeyModifierMask::CMD_OR_CTRL + KeyModifierMask::ALT + Key::P);
|
||||
|
||||
command_palette = EditorCommandPalette::get_singleton();
|
||||
command_palette->set_title(TTR("Command Palette"));
|
||||
gui_base->add_child(command_palette);
|
||||
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/new_scene", TTR("New Scene"), KeyModifierMask::CMD + Key::N), FILE_NEW_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/new_inherited_scene", TTR("New Inherited Scene..."), KeyModifierMask::CMD + KeyModifierMask::SHIFT + Key::N), FILE_NEW_INHERITED_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/open_scene", TTR("Open Scene..."), KeyModifierMask::CMD + Key::O), FILE_OPEN_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/reopen_closed_scene", TTR("Reopen Closed Scene"), KeyModifierMask::CMD + KeyModifierMask::SHIFT + Key::T), FILE_OPEN_PREV);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/new_scene", TTR("New Scene"), KeyModifierMask::CMD_OR_CTRL + Key::N), FILE_NEW_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/new_inherited_scene", TTR("New Inherited Scene..."), KeyModifierMask::CMD_OR_CTRL + KeyModifierMask::SHIFT + Key::N), FILE_NEW_INHERITED_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/open_scene", TTR("Open Scene..."), KeyModifierMask::CMD_OR_CTRL + Key::O), FILE_OPEN_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/reopen_closed_scene", TTR("Reopen Closed Scene"), KeyModifierMask::CMD_OR_CTRL + KeyModifierMask::SHIFT + Key::T), FILE_OPEN_PREV);
|
||||
file_menu->add_submenu_item(TTR("Open Recent"), "RecentScenes", FILE_OPEN_RECENT);
|
||||
|
||||
file_menu->add_separator();
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/save_scene", TTR("Save Scene"), KeyModifierMask::CMD + Key::S), FILE_SAVE_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/save_scene_as", TTR("Save Scene As..."), KeyModifierMask::CMD + KeyModifierMask::SHIFT + Key::S), FILE_SAVE_AS_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/save_all_scenes", TTR("Save All Scenes"), KeyModifierMask::CMD + KeyModifierMask::SHIFT + KeyModifierMask::ALT + Key::S), FILE_SAVE_ALL_SCENES);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/save_scene", TTR("Save Scene"), KeyModifierMask::CMD_OR_CTRL + Key::S), FILE_SAVE_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/save_scene_as", TTR("Save Scene As..."), KeyModifierMask::CMD_OR_CTRL + KeyModifierMask::SHIFT + Key::S), FILE_SAVE_AS_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/save_all_scenes", TTR("Save All Scenes"), KeyModifierMask::CMD_OR_CTRL + KeyModifierMask::SHIFT + KeyModifierMask::ALT + Key::S), FILE_SAVE_ALL_SCENES);
|
||||
|
||||
file_menu->add_separator();
|
||||
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/quick_open", TTR("Quick Open..."), KeyModifierMask::SHIFT + KeyModifierMask::ALT + Key::O), FILE_QUICK_OPEN);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/quick_open_scene", TTR("Quick Open Scene..."), KeyModifierMask::CMD + KeyModifierMask::SHIFT + Key::O), FILE_QUICK_OPEN_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/quick_open_script", TTR("Quick Open Script..."), KeyModifierMask::CMD + KeyModifierMask::ALT + Key::O), FILE_QUICK_OPEN_SCRIPT);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/quick_open_scene", TTR("Quick Open Scene..."), KeyModifierMask::CMD_OR_CTRL + KeyModifierMask::SHIFT + Key::O), FILE_QUICK_OPEN_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/quick_open_script", TTR("Quick Open Script..."), KeyModifierMask::CMD_OR_CTRL + KeyModifierMask::ALT + Key::O), FILE_QUICK_OPEN_SCRIPT);
|
||||
|
||||
file_menu->add_separator();
|
||||
export_as_menu = memnew(PopupMenu);
|
||||
|
@ -6706,7 +6706,7 @@ EditorNode::EditorNode() {
|
|||
|
||||
file_menu->add_separator();
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/reload_saved_scene", TTR("Reload Saved Scene")), EDIT_RELOAD_SAVED_SCENE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/close_scene", TTR("Close Scene"), KeyModifierMask::CMD + KeyModifierMask::SHIFT + Key::W), FILE_CLOSE);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/close_scene", TTR("Close Scene"), KeyModifierMask::CMD_OR_CTRL + KeyModifierMask::SHIFT + Key::W), FILE_CLOSE);
|
||||
|
||||
recent_scenes = memnew(PopupMenu);
|
||||
recent_scenes->set_name("RecentScenes");
|
||||
|
@ -6716,7 +6716,7 @@ EditorNode::EditorNode() {
|
|||
if (!global_menu || !OS::get_singleton()->has_feature("macos")) {
|
||||
// On macOS "Quit" and "About" options are in the "app" menu.
|
||||
file_menu->add_separator();
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/file_quit", TTR("Quit"), KeyModifierMask::CMD + Key::Q), FILE_QUIT, true);
|
||||
file_menu->add_shortcut(ED_SHORTCUT_AND_COMMAND("editor/file_quit", TTR("Quit"), KeyModifierMask::CMD_OR_CTRL + Key::Q), FILE_QUIT, true);
|
||||
}
|
||||
|
||||
project_menu = memnew(PopupMenu);
|
||||
|
@ -6757,7 +6757,7 @@ EditorNode::EditorNode() {
|
|||
|
||||
project_menu->add_separator();
|
||||
project_menu->add_shortcut(ED_SHORTCUT("editor/reload_current_project", TTR("Reload Current Project")), RELOAD_CURRENT_PROJECT);
|
||||
ED_SHORTCUT_AND_COMMAND("editor/quit_to_project_list", TTR("Quit to Project List"), KeyModifierMask::CMD + KeyModifierMask::SHIFT + Key::Q);
|
||||
ED_SHORTCUT_AND_COMMAND("editor/quit_to_project_list", TTR("Quit to Project List"), KeyModifierMask::CTRL + KeyModifierMask::SHIFT + Key::Q);
|
||||
ED_SHORTCUT_OVERRIDE("editor/quit_to_project_list", "macos", KeyModifierMask::SHIFT + KeyModifierMask::ALT + Key::Q);
|
||||
project_menu->add_shortcut(ED_GET_SHORTCUT("editor/quit_to_project_list"), RUN_PROJECT_MANAGER, true);
|
||||
|
||||
|
@ -6783,9 +6783,9 @@ EditorNode::EditorNode() {
|
|||
main_menu->add_child(settings_menu);
|
||||
|
||||
ED_SHORTCUT_AND_COMMAND("editor/editor_settings", TTR("Editor Settings..."));
|
||||
ED_SHORTCUT_OVERRIDE("editor/editor_settings", "macos", KeyModifierMask::CMD + Key::COMMA);
|
||||
ED_SHORTCUT_OVERRIDE("editor/editor_settings", "macos", KeyModifierMask::META + Key::COMMA);
|
||||
settings_menu->add_shortcut(ED_GET_SHORTCUT("editor/editor_settings"), SETTINGS_PREFERENCES);
|
||||
settings_menu->add_shortcut(ED_SHORTCUT("editor/command_palette", TTR("Command Palette..."), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::P), HELP_COMMAND_PALETTE);
|
||||
settings_menu->add_shortcut(ED_SHORTCUT("editor/command_palette", TTR("Command Palette..."), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::P), HELP_COMMAND_PALETTE);
|
||||
settings_menu->add_separator();
|
||||
|
||||
editor_layouts = memnew(PopupMenu);
|
||||
|
@ -6796,13 +6796,13 @@ EditorNode::EditorNode() {
|
|||
settings_menu->add_separator();
|
||||
|
||||
ED_SHORTCUT_AND_COMMAND("editor/take_screenshot", TTR("Take Screenshot"), KeyModifierMask::CTRL | Key::F12);
|
||||
ED_SHORTCUT_OVERRIDE("editor/take_screenshot", "macos", KeyModifierMask::CMD | Key::F12);
|
||||
ED_SHORTCUT_OVERRIDE("editor/take_screenshot", "macos", KeyModifierMask::META | Key::F12);
|
||||
settings_menu->add_shortcut(ED_GET_SHORTCUT("editor/take_screenshot"), EDITOR_SCREENSHOT);
|
||||
|
||||
settings_menu->set_item_tooltip(-1, TTR("Screenshots are stored in the Editor Data/Settings Folder."));
|
||||
|
||||
ED_SHORTCUT_AND_COMMAND("editor/fullscreen_mode", TTR("Toggle Fullscreen"), KeyModifierMask::SHIFT | Key::F11);
|
||||
ED_SHORTCUT_OVERRIDE("editor/fullscreen_mode", "macos", KeyModifierMask::CMD | KeyModifierMask::CTRL | Key::F);
|
||||
ED_SHORTCUT_OVERRIDE("editor/fullscreen_mode", "macos", KeyModifierMask::META | KeyModifierMask::CTRL | Key::F);
|
||||
settings_menu->add_shortcut(ED_GET_SHORTCUT("editor/fullscreen_mode"), SETTINGS_TOGGLE_FULLSCREEN);
|
||||
|
||||
settings_menu->add_separator();
|
||||
|
@ -6863,7 +6863,7 @@ EditorNode::EditorNode() {
|
|||
play_button->connect("pressed", callable_mp(this, &EditorNode::_menu_option).bind(RUN_PLAY));
|
||||
|
||||
ED_SHORTCUT_AND_COMMAND("editor/play", TTR("Play"), Key::F5);
|
||||
ED_SHORTCUT_OVERRIDE("editor/play", "macos", KeyModifierMask::CMD | Key::B);
|
||||
ED_SHORTCUT_OVERRIDE("editor/play", "macos", KeyModifierMask::META | Key::B);
|
||||
play_button->set_shortcut(ED_GET_SHORTCUT("editor/play"));
|
||||
|
||||
pause_button = memnew(Button);
|
||||
|
@ -6876,7 +6876,7 @@ EditorNode::EditorNode() {
|
|||
launch_pad_hb->add_child(pause_button);
|
||||
|
||||
ED_SHORTCUT("editor/pause_scene", TTR("Pause Scene"), Key::F7);
|
||||
ED_SHORTCUT_OVERRIDE("editor/pause_scene", "macos", KeyModifierMask::CMD | KeyModifierMask::CTRL | Key::Y);
|
||||
ED_SHORTCUT_OVERRIDE("editor/pause_scene", "macos", KeyModifierMask::META | KeyModifierMask::CTRL | Key::Y);
|
||||
pause_button->set_shortcut(ED_GET_SHORTCUT("editor/pause_scene"));
|
||||
|
||||
stop_button = memnew(Button);
|
||||
|
@ -6889,7 +6889,7 @@ EditorNode::EditorNode() {
|
|||
stop_button->set_disabled(true);
|
||||
|
||||
ED_SHORTCUT("editor/stop", TTR("Stop"), Key::F8);
|
||||
ED_SHORTCUT_OVERRIDE("editor/stop", "macos", KeyModifierMask::CMD | Key::PERIOD);
|
||||
ED_SHORTCUT_OVERRIDE("editor/stop", "macos", KeyModifierMask::META | Key::PERIOD);
|
||||
stop_button->set_shortcut(ED_GET_SHORTCUT("editor/stop"));
|
||||
|
||||
run_native = memnew(EditorRunNative);
|
||||
|
@ -6904,7 +6904,7 @@ EditorNode::EditorNode() {
|
|||
play_scene_button->connect("pressed", callable_mp(this, &EditorNode::_menu_option).bind(RUN_PLAY_SCENE));
|
||||
|
||||
ED_SHORTCUT_AND_COMMAND("editor/play_scene", TTR("Play Scene"), Key::F6);
|
||||
ED_SHORTCUT_OVERRIDE("editor/play_scene", "macos", KeyModifierMask::CMD | Key::R);
|
||||
ED_SHORTCUT_OVERRIDE("editor/play_scene", "macos", KeyModifierMask::META | Key::R);
|
||||
play_scene_button->set_shortcut(ED_GET_SHORTCUT("editor/play_scene"));
|
||||
|
||||
play_custom_scene_button = memnew(Button);
|
||||
|
@ -6916,8 +6916,8 @@ EditorNode::EditorNode() {
|
|||
|
||||
_reset_play_buttons();
|
||||
|
||||
ED_SHORTCUT_AND_COMMAND("editor/play_custom_scene", TTR("Play Custom Scene"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::F5);
|
||||
ED_SHORTCUT_OVERRIDE("editor/play_custom_scene", "macos", KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::R);
|
||||
ED_SHORTCUT_AND_COMMAND("editor/play_custom_scene", TTR("Play Custom Scene"), KeyModifierMask::CTRL | KeyModifierMask::SHIFT | Key::F5);
|
||||
ED_SHORTCUT_OVERRIDE("editor/play_custom_scene", "macos", KeyModifierMask::META | KeyModifierMask::SHIFT | Key::R);
|
||||
play_custom_scene_button->set_shortcut(ED_GET_SHORTCUT("editor/play_custom_scene"));
|
||||
|
||||
write_movie_panel = memnew(PanelContainer);
|
||||
|
|
|
@ -1467,9 +1467,10 @@ void ED_SHORTCUT_OVERRIDE_ARRAY(const String &p_path, const String &p_feature, c
|
|||
#ifdef MACOS_ENABLED
|
||||
// Use Cmd+Backspace as a general replacement for Delete shortcuts on macOS
|
||||
if (keycode == Key::KEY_DELETE) {
|
||||
keycode = KeyModifierMask::CMD | Key::BACKSPACE;
|
||||
keycode = KeyModifierMask::META | Key::BACKSPACE;
|
||||
}
|
||||
#endif
|
||||
|
||||
Ref<InputEventKey> ie;
|
||||
if (keycode != Key::NONE) {
|
||||
ie = InputEventKey::create_reference(keycode);
|
||||
|
@ -1500,7 +1501,7 @@ Ref<Shortcut> ED_SHORTCUT_ARRAY(const String &p_path, const String &p_name, cons
|
|||
#ifdef MACOS_ENABLED
|
||||
// Use Cmd+Backspace as a general replacement for Delete shortcuts on macOS
|
||||
if (keycode == Key::KEY_DELETE) {
|
||||
keycode = KeyModifierMask::CMD | Key::BACKSPACE;
|
||||
keycode = KeyModifierMask::META | Key::BACKSPACE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -175,7 +175,7 @@ void EditorSettingsDialog::shortcut_input(const Ref<InputEvent> &p_event) {
|
|||
handled = true;
|
||||
}
|
||||
|
||||
if (k->get_keycode_with_modifiers() == (KeyModifierMask::CMD | Key::F)) {
|
||||
if (k->is_match(InputEventKey::create_reference(KeyModifierMask::CMD_OR_CTRL | Key::F))) {
|
||||
_focus_current_search_box();
|
||||
handled = true;
|
||||
}
|
||||
|
|
|
@ -121,7 +121,7 @@ void EditorSpinSlider::gui_input(const Ref<InputEvent> &p_event) {
|
|||
pre_grab_value = get_max();
|
||||
}
|
||||
|
||||
if (mm->is_command_pressed()) {
|
||||
if (mm->is_command_or_control_pressed()) {
|
||||
// If control was just pressed, don't make the value do a huge jump in magnitude.
|
||||
if (grabbing_spinner_dist_cache != 0) {
|
||||
pre_grab_value += grabbing_spinner_dist_cache * get_step();
|
||||
|
|
|
@ -167,7 +167,7 @@ EditorZoomWidget::EditorZoomWidget() {
|
|||
zoom_minus->set_flat(true);
|
||||
add_child(zoom_minus);
|
||||
zoom_minus->connect("pressed", callable_mp(this, &EditorZoomWidget::_button_zoom_minus));
|
||||
zoom_minus->set_shortcut(ED_SHORTCUT("canvas_item_editor/zoom_minus", TTR("Zoom Out"), KeyModifierMask::CMD | Key::MINUS));
|
||||
zoom_minus->set_shortcut(ED_SHORTCUT("canvas_item_editor/zoom_minus", TTR("Zoom Out"), KeyModifierMask::CMD_OR_CTRL | Key::MINUS));
|
||||
zoom_minus->set_shortcut_context(this);
|
||||
zoom_minus->set_focus_mode(FOCUS_NONE);
|
||||
|
||||
|
@ -189,7 +189,7 @@ EditorZoomWidget::EditorZoomWidget() {
|
|||
zoom_plus->set_flat(true);
|
||||
add_child(zoom_plus);
|
||||
zoom_plus->connect("pressed", callable_mp(this, &EditorZoomWidget::_button_zoom_plus));
|
||||
zoom_plus->set_shortcut(ED_SHORTCUT("canvas_item_editor/zoom_plus", TTR("Zoom In"), KeyModifierMask::CMD | Key::EQUAL)); // Usually direct access key for PLUS
|
||||
zoom_plus->set_shortcut(ED_SHORTCUT("canvas_item_editor/zoom_plus", TTR("Zoom In"), KeyModifierMask::CMD_OR_CTRL | Key::EQUAL)); // Usually direct access key for PLUS
|
||||
zoom_plus->set_shortcut_context(this);
|
||||
zoom_plus->set_focus_mode(FOCUS_NONE);
|
||||
|
||||
|
|
|
@ -3021,10 +3021,10 @@ FileSystemDock::FileSystemDock() {
|
|||
set_name("FileSystem");
|
||||
path = "res://";
|
||||
|
||||
// `KeyModifierMask::CMD | Key::C` conflicts with other editor shortcuts.
|
||||
ED_SHORTCUT("filesystem_dock/copy_path", TTR("Copy Path"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::C);
|
||||
// `KeyModifierMask::CMD_OR_CTRL | Key::C` conflicts with other editor shortcuts.
|
||||
ED_SHORTCUT("filesystem_dock/copy_path", TTR("Copy Path"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::C);
|
||||
ED_SHORTCUT("filesystem_dock/copy_uid", TTR("Copy UID"));
|
||||
ED_SHORTCUT("filesystem_dock/duplicate", TTR("Duplicate..."), KeyModifierMask::CMD | Key::D);
|
||||
ED_SHORTCUT("filesystem_dock/duplicate", TTR("Duplicate..."), KeyModifierMask::CMD_OR_CTRL | Key::D);
|
||||
ED_SHORTCUT("filesystem_dock/delete", TTR("Delete"), Key::KEY_DELETE);
|
||||
ED_SHORTCUT("filesystem_dock/rename", TTR("Rename..."), Key::F2);
|
||||
ED_SHORTCUT_OVERRIDE("filesystem_dock/rename", "macos", Key::ENTER);
|
||||
|
|
|
@ -648,7 +648,7 @@ void EditorAssetLibrary::shortcut_input(const Ref<InputEvent> &p_event) {
|
|||
const Ref<InputEventKey> key = p_event;
|
||||
|
||||
if (key.is_valid() && key->is_pressed()) {
|
||||
if (key->get_keycode_with_modifiers() == (KeyModifierMask::CMD | Key::F) && is_visible_in_tree()) {
|
||||
if (key->is_match(InputEventKey::create_reference(KeyModifierMask::CMD_OR_CTRL | Key::F))) {
|
||||
filter->grab_focus();
|
||||
filter->select_all();
|
||||
accept_event();
|
||||
|
|
|
@ -1394,7 +1394,7 @@ bool CanvasItemEditor::_gui_input_rotate(const Ref<InputEvent> &p_event) {
|
|||
// Start rotation
|
||||
if (drag_type == DRAG_NONE) {
|
||||
if (b.is_valid() && b->get_button_index() == MouseButton::LEFT && b->is_pressed()) {
|
||||
if ((b->is_command_pressed() && !b->is_alt_pressed() && tool == TOOL_SELECT) || tool == TOOL_ROTATE) {
|
||||
if ((b->is_command_or_control_pressed() && !b->is_alt_pressed() && tool == TOOL_SELECT) || tool == TOOL_ROTATE) {
|
||||
List<CanvasItem *> selection = _get_edited_canvas_items();
|
||||
|
||||
// Remove not movable nodes
|
||||
|
@ -5043,7 +5043,7 @@ CanvasItemEditor::CanvasItemEditor() {
|
|||
{ int32_t(KeyModifierMask::SHIFT | Key::KEY_1), int32_t(KeyModifierMask::SHIFT | Key::KP_1) });
|
||||
|
||||
ED_SHORTCUT_ARRAY("canvas_item_editor/zoom_100_percent", TTR("Zoom to 100%"),
|
||||
{ int32_t(Key::KEY_1), int32_t(KeyModifierMask::CMD | Key::KEY_0), int32_t(Key::KP_1), int32_t(KeyModifierMask::CMD | Key::KP_0) });
|
||||
{ int32_t(Key::KEY_1), int32_t(KeyModifierMask::CMD_OR_CTRL | Key::KEY_0), int32_t(Key::KP_1), int32_t(KeyModifierMask::CMD_OR_CTRL | Key::KP_0) });
|
||||
|
||||
ED_SHORTCUT_ARRAY("canvas_item_editor/zoom_200_percent", TTR("Zoom to 200%"),
|
||||
{ int32_t(Key::KEY_2), int32_t(Key::KP_2) });
|
||||
|
@ -5102,7 +5102,7 @@ CanvasItemEditor::CanvasItemEditor() {
|
|||
select_button->set_pressed(true);
|
||||
select_button->set_shortcut(ED_SHORTCUT("canvas_item_editor/select_mode", TTR("Select Mode"), Key::Q));
|
||||
select_button->set_shortcut_context(this);
|
||||
select_button->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD) + TTR("Drag: Rotate selected node around pivot.") + "\n" + TTR("Alt+Drag: Move selected node.") + "\n" + keycode_get_string((Key)KeyModifierMask::CMD) + TTR("Alt+Drag: Scale selected node.") + "\n" + TTR("V: Set selected node's pivot position.") + "\n" + TTR("Alt+RMB: Show list of all nodes at position clicked, including locked.") + "\n" + keycode_get_string((Key)KeyModifierMask::CMD) + TTR("RMB: Add node at position clicked."));
|
||||
select_button->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL) + TTR("Drag: Rotate selected node around pivot.") + "\n" + TTR("Alt+Drag: Move selected node.") + "\n" + keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL) + TTR("Alt+Drag: Scale selected node.") + "\n" + TTR("V: Set selected node's pivot position.") + "\n" + TTR("Alt+RMB: Show list of all nodes at position clicked, including locked.") + "\n" + keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL) + TTR("RMB: Add node at position clicked."));
|
||||
|
||||
main_menu_hbox->add_child(memnew(VSeparator));
|
||||
|
||||
|
@ -5227,7 +5227,7 @@ CanvasItemEditor::CanvasItemEditor() {
|
|||
lock_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback).bind(LOCK_SELECTED));
|
||||
lock_button->set_tooltip_text(TTR("Lock selected node, preventing selection and movement."));
|
||||
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||
lock_button->set_shortcut(ED_SHORTCUT("editor/lock_selected_nodes", TTR("Lock Selected Node(s)"), KeyModifierMask::CMD | Key::L));
|
||||
lock_button->set_shortcut(ED_SHORTCUT("editor/lock_selected_nodes", TTR("Lock Selected Node(s)"), KeyModifierMask::CMD_OR_CTRL | Key::L));
|
||||
|
||||
unlock_button = memnew(Button);
|
||||
unlock_button->set_flat(true);
|
||||
|
@ -5235,7 +5235,7 @@ CanvasItemEditor::CanvasItemEditor() {
|
|||
unlock_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback).bind(UNLOCK_SELECTED));
|
||||
unlock_button->set_tooltip_text(TTR("Unlock selected node, allowing selection and movement."));
|
||||
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||
unlock_button->set_shortcut(ED_SHORTCUT("editor/unlock_selected_nodes", TTR("Unlock Selected Node(s)"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::L));
|
||||
unlock_button->set_shortcut(ED_SHORTCUT("editor/unlock_selected_nodes", TTR("Unlock Selected Node(s)"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::L));
|
||||
|
||||
group_button = memnew(Button);
|
||||
group_button->set_flat(true);
|
||||
|
@ -5243,7 +5243,7 @@ CanvasItemEditor::CanvasItemEditor() {
|
|||
group_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback).bind(GROUP_SELECTED));
|
||||
group_button->set_tooltip_text(TTR("Make selected node's children not selectable."));
|
||||
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||
group_button->set_shortcut(ED_SHORTCUT("editor/group_selected_nodes", TTR("Group Selected Node(s)"), KeyModifierMask::CMD | Key::G));
|
||||
group_button->set_shortcut(ED_SHORTCUT("editor/group_selected_nodes", TTR("Group Selected Node(s)"), KeyModifierMask::CMD_OR_CTRL | Key::G));
|
||||
|
||||
ungroup_button = memnew(Button);
|
||||
ungroup_button->set_flat(true);
|
||||
|
@ -5251,7 +5251,7 @@ CanvasItemEditor::CanvasItemEditor() {
|
|||
ungroup_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback).bind(UNGROUP_SELECTED));
|
||||
ungroup_button->set_tooltip_text(TTR("Make selected node's children selectable."));
|
||||
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||
ungroup_button->set_shortcut(ED_SHORTCUT("editor/ungroup_selected_nodes", TTR("Ungroup Selected Node(s)"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::G));
|
||||
ungroup_button->set_shortcut(ED_SHORTCUT("editor/ungroup_selected_nodes", TTR("Ungroup Selected Node(s)"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::G));
|
||||
|
||||
main_menu_hbox->add_child(memnew(VSeparator));
|
||||
|
||||
|
@ -5265,7 +5265,7 @@ CanvasItemEditor::CanvasItemEditor() {
|
|||
p->set_hide_on_checkable_item_selection(false);
|
||||
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/skeleton_show_bones", TTR("Show Bones")), SKELETON_SHOW_BONES);
|
||||
p->add_separator();
|
||||
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/skeleton_make_bones", TTR("Make Bone2D Node(s) from Node(s)"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::B), SKELETON_MAKE_BONES);
|
||||
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/skeleton_make_bones", TTR("Make Bone2D Node(s) from Node(s)"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::B), SKELETON_MAKE_BONES);
|
||||
p->connect("id_pressed", callable_mp(this, &CanvasItemEditor::_popup_callback));
|
||||
|
||||
main_menu_hbox->add_child(memnew(VSeparator));
|
||||
|
@ -5299,7 +5299,7 @@ CanvasItemEditor::CanvasItemEditor() {
|
|||
grid_menu->add_radio_check_item(TTR("Show When Snapping"), GRID_VISIBILITY_SHOW_WHEN_SNAPPING);
|
||||
grid_menu->add_radio_check_item(TTR("Hide"), GRID_VISIBILITY_HIDE);
|
||||
grid_menu->add_separator();
|
||||
grid_menu->add_shortcut(ED_SHORTCUT("canvas_item_editor/toggle_grid", TTR("Toggle Grid"), KeyModifierMask::CMD | Key::APOSTROPHE));
|
||||
grid_menu->add_shortcut(ED_SHORTCUT("canvas_item_editor/toggle_grid", TTR("Toggle Grid"), KeyModifierMask::CMD_OR_CTRL | Key::APOSTROPHE));
|
||||
p->add_child(grid_menu);
|
||||
p->add_submenu_item(TTR("Grid"), "GridMenu");
|
||||
|
||||
|
@ -5316,7 +5316,7 @@ CanvasItemEditor::CanvasItemEditor() {
|
|||
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/frame_selection", TTR("Frame Selection"), KeyModifierMask::SHIFT | Key::F), VIEW_FRAME_TO_SELECTION);
|
||||
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/clear_guides", TTR("Clear Guides")), CLEAR_GUIDES);
|
||||
p->add_separator();
|
||||
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/preview_canvas_scale", TTR("Preview Canvas Scale"), KeyModifierMask::SHIFT | KeyModifierMask::CMD | Key::P), PREVIEW_CANVAS_SCALE);
|
||||
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/preview_canvas_scale", TTR("Preview Canvas Scale"), KeyModifierMask::SHIFT | KeyModifierMask::CMD_OR_CTRL | Key::P), PREVIEW_CANVAS_SCALE);
|
||||
|
||||
main_menu_hbox->add_child(memnew(VSeparator));
|
||||
|
||||
|
@ -5386,7 +5386,7 @@ CanvasItemEditor::CanvasItemEditor() {
|
|||
p = animation_menu->get_popup();
|
||||
|
||||
p->add_shortcut(ED_GET_SHORTCUT("canvas_item_editor/anim_insert_key"), ANIM_INSERT_KEY);
|
||||
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/anim_insert_key_existing_tracks", TTR("Insert Key (Existing Tracks)"), KeyModifierMask::CMD + Key::INSERT), ANIM_INSERT_KEY_EXISTING);
|
||||
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/anim_insert_key_existing_tracks", TTR("Insert Key (Existing Tracks)"), KeyModifierMask::CMD_OR_CTRL + Key::INSERT), ANIM_INSERT_KEY_EXISTING);
|
||||
p->add_separator();
|
||||
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/anim_copy_pose", TTR("Copy Pose")), ANIM_COPY_POSE);
|
||||
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/anim_paste_pose", TTR("Paste Pose")), ANIM_PASTE_POSE);
|
||||
|
|
|
@ -1586,7 +1586,7 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
|
|||
|
||||
clicked = ObjectID();
|
||||
|
||||
if ((spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT && b->is_command_pressed()) || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE) {
|
||||
if ((spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT && b->is_command_or_control_pressed()) || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE) {
|
||||
begin_transform(TRANSFORM_ROTATE, false);
|
||||
break;
|
||||
}
|
||||
|
@ -4817,7 +4817,7 @@ Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, int p
|
|||
|
||||
preview_camera = memnew(CheckBox);
|
||||
preview_camera->set_text(TTR("Preview"));
|
||||
preview_camera->set_shortcut(ED_SHORTCUT("spatial_editor/toggle_camera_preview", TTR("Toggle Camera Preview"), KeyModifierMask::CMD | Key::P));
|
||||
preview_camera->set_shortcut(ED_SHORTCUT("spatial_editor/toggle_camera_preview", TTR("Toggle Camera Preview"), KeyModifierMask::CMD_OR_CTRL | Key::P));
|
||||
vbox->add_child(preview_camera);
|
||||
preview_camera->set_h_size_flags(0);
|
||||
preview_camera->hide();
|
||||
|
@ -7751,7 +7751,7 @@ Node3DEditor::Node3DEditor() {
|
|||
tool_button[TOOL_MODE_SELECT]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed).bind(MENU_TOOL_SELECT));
|
||||
tool_button[TOOL_MODE_SELECT]->set_shortcut(ED_SHORTCUT("spatial_editor/tool_select", TTR("Select Mode"), Key::Q));
|
||||
tool_button[TOOL_MODE_SELECT]->set_shortcut_context(this);
|
||||
tool_button[TOOL_MODE_SELECT]->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD) + TTR("Drag: Rotate selected node around pivot.") + "\n" + TTR("Alt+RMB: Show list of all nodes at position clicked, including locked."));
|
||||
tool_button[TOOL_MODE_SELECT]->set_tooltip_text(keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL) + TTR("Drag: Rotate selected node around pivot.") + "\n" + TTR("Alt+RMB: Show list of all nodes at position clicked, including locked."));
|
||||
main_menu_hbox->add_child(memnew(VSeparator));
|
||||
|
||||
tool_button[TOOL_MODE_MOVE] = memnew(Button);
|
||||
|
@ -7794,7 +7794,7 @@ Node3DEditor::Node3DEditor() {
|
|||
tool_button[TOOL_LOCK_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed).bind(MENU_LOCK_SELECTED));
|
||||
tool_button[TOOL_LOCK_SELECTED]->set_tooltip_text(TTR("Lock selected node, preventing selection and movement."));
|
||||
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||
tool_button[TOOL_LOCK_SELECTED]->set_shortcut(ED_SHORTCUT("editor/lock_selected_nodes", TTR("Lock Selected Node(s)"), KeyModifierMask::CMD | Key::L));
|
||||
tool_button[TOOL_LOCK_SELECTED]->set_shortcut(ED_SHORTCUT("editor/lock_selected_nodes", TTR("Lock Selected Node(s)"), KeyModifierMask::CMD_OR_CTRL | Key::L));
|
||||
|
||||
tool_button[TOOL_UNLOCK_SELECTED] = memnew(Button);
|
||||
main_menu_hbox->add_child(tool_button[TOOL_UNLOCK_SELECTED]);
|
||||
|
@ -7802,7 +7802,7 @@ Node3DEditor::Node3DEditor() {
|
|||
tool_button[TOOL_UNLOCK_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed).bind(MENU_UNLOCK_SELECTED));
|
||||
tool_button[TOOL_UNLOCK_SELECTED]->set_tooltip_text(TTR("Unlock selected node, allowing selection and movement."));
|
||||
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||
tool_button[TOOL_UNLOCK_SELECTED]->set_shortcut(ED_SHORTCUT("editor/unlock_selected_nodes", TTR("Unlock Selected Node(s)"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::L));
|
||||
tool_button[TOOL_UNLOCK_SELECTED]->set_shortcut(ED_SHORTCUT("editor/unlock_selected_nodes", TTR("Unlock Selected Node(s)"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::L));
|
||||
|
||||
tool_button[TOOL_GROUP_SELECTED] = memnew(Button);
|
||||
main_menu_hbox->add_child(tool_button[TOOL_GROUP_SELECTED]);
|
||||
|
@ -7810,7 +7810,7 @@ Node3DEditor::Node3DEditor() {
|
|||
tool_button[TOOL_GROUP_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed).bind(MENU_GROUP_SELECTED));
|
||||
tool_button[TOOL_GROUP_SELECTED]->set_tooltip_text(TTR("Make selected node's children not selectable."));
|
||||
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||
tool_button[TOOL_GROUP_SELECTED]->set_shortcut(ED_SHORTCUT("editor/group_selected_nodes", TTR("Group Selected Node(s)"), KeyModifierMask::CMD | Key::G));
|
||||
tool_button[TOOL_GROUP_SELECTED]->set_shortcut(ED_SHORTCUT("editor/group_selected_nodes", TTR("Group Selected Node(s)"), KeyModifierMask::CMD_OR_CTRL | Key::G));
|
||||
|
||||
tool_button[TOOL_UNGROUP_SELECTED] = memnew(Button);
|
||||
main_menu_hbox->add_child(tool_button[TOOL_UNGROUP_SELECTED]);
|
||||
|
@ -7818,7 +7818,7 @@ Node3DEditor::Node3DEditor() {
|
|||
tool_button[TOOL_UNGROUP_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed).bind(MENU_UNGROUP_SELECTED));
|
||||
tool_button[TOOL_UNGROUP_SELECTED]->set_tooltip_text(TTR("Make selected node's children selectable."));
|
||||
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||
tool_button[TOOL_UNGROUP_SELECTED]->set_shortcut(ED_SHORTCUT("editor/ungroup_selected_nodes", TTR("Ungroup Selected Node(s)"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::G));
|
||||
tool_button[TOOL_UNGROUP_SELECTED]->set_shortcut(ED_SHORTCUT("editor/ungroup_selected_nodes", TTR("Ungroup Selected Node(s)"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::G));
|
||||
|
||||
main_menu_hbox->add_child(memnew(VSeparator));
|
||||
|
||||
|
@ -7895,12 +7895,12 @@ Node3DEditor::Node3DEditor() {
|
|||
ED_SHORTCUT("spatial_editor/insert_anim_key", TTR("Insert Animation Key"), Key::K);
|
||||
ED_SHORTCUT("spatial_editor/focus_origin", TTR("Focus Origin"), Key::O);
|
||||
ED_SHORTCUT("spatial_editor/focus_selection", TTR("Focus Selection"), Key::F);
|
||||
ED_SHORTCUT("spatial_editor/align_transform_with_view", TTR("Align Transform with View"), KeyModifierMask::ALT + KeyModifierMask::CMD + Key::M);
|
||||
ED_SHORTCUT("spatial_editor/align_rotation_with_view", TTR("Align Rotation with View"), KeyModifierMask::ALT + KeyModifierMask::CMD + Key::F);
|
||||
ED_SHORTCUT("spatial_editor/align_transform_with_view", TTR("Align Transform with View"), KeyModifierMask::ALT + KeyModifierMask::CMD_OR_CTRL + Key::M);
|
||||
ED_SHORTCUT("spatial_editor/align_rotation_with_view", TTR("Align Rotation with View"), KeyModifierMask::ALT + KeyModifierMask::CMD_OR_CTRL + Key::F);
|
||||
ED_SHORTCUT("spatial_editor/freelook_toggle", TTR("Toggle Freelook"), KeyModifierMask::SHIFT + Key::F);
|
||||
ED_SHORTCUT("spatial_editor/decrease_fov", TTR("Decrease Field of View"), KeyModifierMask::CMD + Key::EQUAL); // Usually direct access key for `KEY_PLUS`.
|
||||
ED_SHORTCUT("spatial_editor/increase_fov", TTR("Increase Field of View"), KeyModifierMask::CMD + Key::MINUS);
|
||||
ED_SHORTCUT("spatial_editor/reset_fov", TTR("Reset Field of View to Default"), KeyModifierMask::CMD + Key::KEY_0);
|
||||
ED_SHORTCUT("spatial_editor/decrease_fov", TTR("Decrease Field of View"), KeyModifierMask::CMD_OR_CTRL + Key::EQUAL); // Usually direct access key for `KEY_PLUS`.
|
||||
ED_SHORTCUT("spatial_editor/increase_fov", TTR("Increase Field of View"), KeyModifierMask::CMD_OR_CTRL + Key::MINUS);
|
||||
ED_SHORTCUT("spatial_editor/reset_fov", TTR("Reset Field of View to Default"), KeyModifierMask::CMD_OR_CTRL + Key::KEY_0);
|
||||
|
||||
PopupMenu *p;
|
||||
|
||||
|
@ -7940,12 +7940,12 @@ Node3DEditor::Node3DEditor() {
|
|||
accept = memnew(AcceptDialog);
|
||||
EditorNode::get_singleton()->get_gui_base()->add_child(accept);
|
||||
|
||||
p->add_radio_check_shortcut(ED_SHORTCUT("spatial_editor/1_viewport", TTR("1 Viewport"), KeyModifierMask::CMD + Key::KEY_1), MENU_VIEW_USE_1_VIEWPORT);
|
||||
p->add_radio_check_shortcut(ED_SHORTCUT("spatial_editor/2_viewports", TTR("2 Viewports"), KeyModifierMask::CMD + Key::KEY_2), MENU_VIEW_USE_2_VIEWPORTS);
|
||||
p->add_radio_check_shortcut(ED_SHORTCUT("spatial_editor/2_viewports_alt", TTR("2 Viewports (Alt)"), KeyModifierMask::ALT + KeyModifierMask::CMD + Key::KEY_2), MENU_VIEW_USE_2_VIEWPORTS_ALT);
|
||||
p->add_radio_check_shortcut(ED_SHORTCUT("spatial_editor/3_viewports", TTR("3 Viewports"), KeyModifierMask::CMD + Key::KEY_3), MENU_VIEW_USE_3_VIEWPORTS);
|
||||
p->add_radio_check_shortcut(ED_SHORTCUT("spatial_editor/3_viewports_alt", TTR("3 Viewports (Alt)"), KeyModifierMask::ALT + KeyModifierMask::CMD + Key::KEY_3), MENU_VIEW_USE_3_VIEWPORTS_ALT);
|
||||
p->add_radio_check_shortcut(ED_SHORTCUT("spatial_editor/4_viewports", TTR("4 Viewports"), KeyModifierMask::CMD + Key::KEY_4), MENU_VIEW_USE_4_VIEWPORTS);
|
||||
p->add_radio_check_shortcut(ED_SHORTCUT("spatial_editor/1_viewport", TTR("1 Viewport"), KeyModifierMask::CMD_OR_CTRL + Key::KEY_1), MENU_VIEW_USE_1_VIEWPORT);
|
||||
p->add_radio_check_shortcut(ED_SHORTCUT("spatial_editor/2_viewports", TTR("2 Viewports"), KeyModifierMask::CMD_OR_CTRL + Key::KEY_2), MENU_VIEW_USE_2_VIEWPORTS);
|
||||
p->add_radio_check_shortcut(ED_SHORTCUT("spatial_editor/2_viewports_alt", TTR("2 Viewports (Alt)"), KeyModifierMask::ALT + KeyModifierMask::CMD_OR_CTRL + Key::KEY_2), MENU_VIEW_USE_2_VIEWPORTS_ALT);
|
||||
p->add_radio_check_shortcut(ED_SHORTCUT("spatial_editor/3_viewports", TTR("3 Viewports"), KeyModifierMask::CMD_OR_CTRL + Key::KEY_3), MENU_VIEW_USE_3_VIEWPORTS);
|
||||
p->add_radio_check_shortcut(ED_SHORTCUT("spatial_editor/3_viewports_alt", TTR("3 Viewports (Alt)"), KeyModifierMask::ALT + KeyModifierMask::CMD_OR_CTRL + Key::KEY_3), MENU_VIEW_USE_3_VIEWPORTS_ALT);
|
||||
p->add_radio_check_shortcut(ED_SHORTCUT("spatial_editor/4_viewports", TTR("4 Viewports"), KeyModifierMask::CMD_OR_CTRL + Key::KEY_4), MENU_VIEW_USE_4_VIEWPORTS);
|
||||
p->add_separator();
|
||||
|
||||
p->add_submenu_item(TTR("Gizmos"), "GizmosMenu");
|
||||
|
|
|
@ -150,7 +150,7 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
|
||||
// Check for point creation.
|
||||
if (mb->is_pressed() && mb->get_button_index() == MouseButton::LEFT && ((mb->is_command_pressed() && mode == MODE_EDIT) || mode == MODE_CREATE)) {
|
||||
if (mb->is_pressed() && mb->get_button_index() == MouseButton::LEFT && ((mb->is_command_or_control_pressed() && mode == MODE_EDIT) || mode == MODE_CREATE)) {
|
||||
Ref<Curve2D> curve = node->get_curve();
|
||||
|
||||
undo_redo->create_action(TTR("Add Point to Curve"));
|
||||
|
@ -537,7 +537,7 @@ Path2DEditor::Path2DEditor() {
|
|||
curve_edit->set_flat(true);
|
||||
curve_edit->set_toggle_mode(true);
|
||||
curve_edit->set_focus_mode(Control::FOCUS_NONE);
|
||||
curve_edit->set_tooltip_text(TTR("Select Points") + "\n" + TTR("Shift+Drag: Select Control Points") + "\n" + keycode_get_string((Key)KeyModifierMask::CMD) + TTR("Click: Add Point") + "\n" + TTR("Left Click: Split Segment (in curve)") + "\n" + TTR("Right Click: Delete Point"));
|
||||
curve_edit->set_tooltip_text(TTR("Select Points") + "\n" + TTR("Shift+Drag: Select Control Points") + "\n" + keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL) + TTR("Click: Add Point") + "\n" + TTR("Left Click: Split Segment (in curve)") + "\n" + TTR("Right Click: Delete Point"));
|
||||
curve_edit->connect("pressed", callable_mp(this, &Path2DEditor::_mode_selected).bind(MODE_EDIT));
|
||||
base_hb->add_child(curve_edit);
|
||||
|
||||
|
|
|
@ -597,7 +597,7 @@ Path3DEditorPlugin::Path3DEditorPlugin() {
|
|||
curve_edit->set_toggle_mode(true);
|
||||
curve_edit->hide();
|
||||
curve_edit->set_focus_mode(Control::FOCUS_NONE);
|
||||
curve_edit->set_tooltip_text(TTR("Select Points") + "\n" + TTR("Shift+Drag: Select Control Points") + "\n" + keycode_get_string((Key)KeyModifierMask::CMD) + TTR("Click: Add Point") + "\n" + TTR("Right Click: Delete Point"));
|
||||
curve_edit->set_tooltip_text(TTR("Select Points") + "\n" + TTR("Shift+Drag: Select Control Points") + "\n" + keycode_get_string((Key)KeyModifierMask::CMD_OR_CTRL) + TTR("Click: Add Point") + "\n" + TTR("Right Click: Delete Point"));
|
||||
Node3DEditor::get_singleton()->add_control_to_menu_panel(curve_edit);
|
||||
|
||||
curve_create = memnew(Button);
|
||||
|
|
|
@ -627,11 +627,11 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
|
|||
}
|
||||
|
||||
if (uv_move_current == UV_MODE_EDIT_POINT) {
|
||||
if (mb->is_shift_pressed() && mb->is_command_pressed()) {
|
||||
if (mb->is_shift_pressed() && mb->is_command_or_control_pressed()) {
|
||||
uv_move_current = UV_MODE_SCALE;
|
||||
} else if (mb->is_shift_pressed()) {
|
||||
uv_move_current = UV_MODE_MOVE;
|
||||
} else if (mb->is_command_pressed()) {
|
||||
} else if (mb->is_command_or_control_pressed()) {
|
||||
uv_move_current = UV_MODE_ROTATE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3363,15 +3363,15 @@ void ScriptEditor::_update_selected_editor_menu() {
|
|||
EditorHelp *eh = Object::cast_to<EditorHelp>(tab_container->get_current_tab_control());
|
||||
script_search_menu->get_popup()->clear();
|
||||
if (eh) {
|
||||
script_search_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/find", TTR("Find..."), KeyModifierMask::CMD | Key::F), HELP_SEARCH_FIND);
|
||||
script_search_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/find", TTR("Find..."), KeyModifierMask::CMD_OR_CTRL | Key::F), HELP_SEARCH_FIND);
|
||||
script_search_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/find_next", TTR("Find Next"), Key::F3), HELP_SEARCH_FIND_NEXT);
|
||||
script_search_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/find_previous", TTR("Find Previous"), KeyModifierMask::SHIFT | Key::F3), HELP_SEARCH_FIND_PREVIOUS);
|
||||
script_search_menu->get_popup()->add_separator();
|
||||
script_search_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/find_in_files", TTR("Find in Files"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::F), SEARCH_IN_FILES);
|
||||
script_search_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/find_in_files", TTR("Find in Files"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::F), SEARCH_IN_FILES);
|
||||
script_search_menu->show();
|
||||
} else {
|
||||
if (tab_container->get_tab_count() == 0) {
|
||||
script_search_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/find_in_files", TTR("Find in Files"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::F), SEARCH_IN_FILES);
|
||||
script_search_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/find_in_files", TTR("Find in Files"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::F), SEARCH_IN_FILES);
|
||||
script_search_menu->show();
|
||||
} else {
|
||||
script_search_menu->hide();
|
||||
|
@ -3757,8 +3757,8 @@ ScriptEditor::ScriptEditor() {
|
|||
ED_SHORTCUT("script_editor/window_move_up", TTR("Move Up"), KeyModifierMask::SHIFT | KeyModifierMask::ALT | Key::UP);
|
||||
ED_SHORTCUT("script_editor/window_move_down", TTR("Move Down"), KeyModifierMask::SHIFT | KeyModifierMask::ALT | Key::DOWN);
|
||||
// FIXME: These should be `Key::GREATER` and `Key::LESS` but those don't work.
|
||||
ED_SHORTCUT("script_editor/next_script", TTR("Next Script"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::PERIOD);
|
||||
ED_SHORTCUT("script_editor/prev_script", TTR("Previous Script"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::COMMA);
|
||||
ED_SHORTCUT("script_editor/next_script", TTR("Next Script"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::PERIOD);
|
||||
ED_SHORTCUT("script_editor/prev_script", TTR("Previous Script"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::COMMA);
|
||||
set_process_input(true);
|
||||
set_process_shortcut_input(true);
|
||||
|
||||
|
@ -3768,10 +3768,10 @@ ScriptEditor::ScriptEditor() {
|
|||
file_menu->set_shortcut_context(this);
|
||||
menu_hb->add_child(file_menu);
|
||||
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/new", TTR("New Script..."), KeyModifierMask::CMD | Key::N), FILE_NEW);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/new_textfile", TTR("New Text File..."), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::N), FILE_NEW_TEXTFILE);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/new", TTR("New Script..."), KeyModifierMask::CMD_OR_CTRL | Key::N), FILE_NEW);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/new_textfile", TTR("New Text File..."), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::N), FILE_NEW_TEXTFILE);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/open", TTR("Open...")), FILE_OPEN);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/reopen_closed_script", TTR("Reopen Closed Script"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::T), FILE_REOPEN_CLOSED);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/reopen_closed_script", TTR("Reopen Closed Script"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::T), FILE_REOPEN_CLOSED);
|
||||
file_menu->get_popup()->add_submenu_item(TTR("Open Recent"), "RecentScripts", FILE_OPEN_RECENT);
|
||||
|
||||
recent_scripts = memnew(PopupMenu);
|
||||
|
@ -3781,11 +3781,11 @@ ScriptEditor::ScriptEditor() {
|
|||
_update_recent_scripts();
|
||||
|
||||
file_menu->get_popup()->add_separator();
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save", TTR("Save"), KeyModifierMask::ALT | KeyModifierMask::CMD | Key::S), FILE_SAVE);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save", TTR("Save"), KeyModifierMask::ALT | KeyModifierMask::CMD_OR_CTRL | Key::S), FILE_SAVE);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save_as", TTR("Save As...")), FILE_SAVE_AS);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save_all", TTR("Save All"), KeyModifierMask::SHIFT | KeyModifierMask::ALT | Key::S), FILE_SAVE_ALL);
|
||||
file_menu->get_popup()->add_separator();
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/reload_script_soft", TTR("Soft Reload Tool Script"), KeyModifierMask::CMD | KeyModifierMask::ALT | Key::R), FILE_TOOL_RELOAD_SOFT);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/reload_script_soft", TTR("Soft Reload Tool Script"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::ALT | Key::R), FILE_TOOL_RELOAD_SOFT);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/copy_path", TTR("Copy Script Path")), FILE_COPY_PATH);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/show_in_file_system", TTR("Show in FileSystem")), SHOW_IN_FILE_SYSTEM);
|
||||
file_menu->get_popup()->add_separator();
|
||||
|
@ -3808,16 +3808,16 @@ ScriptEditor::ScriptEditor() {
|
|||
theme_submenu->add_shortcut(ED_SHORTCUT("script_editor/save_theme_as", TTR("Save Theme As...")), THEME_SAVE_AS);
|
||||
|
||||
file_menu->get_popup()->add_separator();
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_file", TTR("Close"), KeyModifierMask::CMD | Key::W), FILE_CLOSE);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_file", TTR("Close"), KeyModifierMask::CMD_OR_CTRL | Key::W), FILE_CLOSE);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_all", TTR("Close All")), CLOSE_ALL);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_other_tabs", TTR("Close Other Tabs")), CLOSE_OTHER_TABS);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/close_docs", TTR("Close Docs")), CLOSE_DOCS);
|
||||
|
||||
file_menu->get_popup()->add_separator();
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/run_file", TTR("Run"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::X), FILE_RUN);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/run_file", TTR("Run"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::X), FILE_RUN);
|
||||
|
||||
file_menu->get_popup()->add_separator();
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/toggle_scripts_panel", TTR("Toggle Scripts Panel"), KeyModifierMask::CMD | Key::BACKSLASH), TOGGLE_SCRIPTS_PANEL);
|
||||
file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/toggle_scripts_panel", TTR("Toggle Scripts Panel"), KeyModifierMask::CMD_OR_CTRL | Key::BACKSLASH), TOGGLE_SCRIPTS_PANEL);
|
||||
file_menu->get_popup()->connect("id_pressed", callable_mp(this, &ScriptEditor::_menu_option));
|
||||
file_menu->get_popup()->connect("about_to_popup", callable_mp(this, &ScriptEditor::_prepare_file_menu));
|
||||
|
||||
|
@ -4070,7 +4070,7 @@ ScriptEditorPlugin::ScriptEditorPlugin() {
|
|||
EDITOR_DEF("text_editor/external/exec_flags", "{file}");
|
||||
EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING, "text_editor/external/exec_flags", PROPERTY_HINT_PLACEHOLDER_TEXT, "Call flags with placeholders: {project}, {file}, {col}, {line}."));
|
||||
|
||||
ED_SHORTCUT("script_editor/reopen_closed_script", TTR("Reopen Closed Script"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::T);
|
||||
ED_SHORTCUT("script_editor/reopen_closed_script", TTR("Reopen Closed Script"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::T);
|
||||
ED_SHORTCUT("script_editor/clear_recent", TTR("Clear Recent Scripts"));
|
||||
}
|
||||
|
||||
|
|
|
@ -2072,58 +2072,58 @@ static ScriptEditorBase *create_editor(const Ref<Resource> &p_resource) {
|
|||
void ScriptTextEditor::register_editor() {
|
||||
ED_SHORTCUT("script_text_editor/move_up", TTR("Move Up"), KeyModifierMask::ALT | Key::UP);
|
||||
ED_SHORTCUT("script_text_editor/move_down", TTR("Move Down"), KeyModifierMask::ALT | Key::DOWN);
|
||||
ED_SHORTCUT("script_text_editor/delete_line", TTR("Delete Line"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::K);
|
||||
ED_SHORTCUT("script_text_editor/delete_line", TTR("Delete Line"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::K);
|
||||
|
||||
// Leave these at zero, same can be accomplished with tab/shift-tab, including selection.
|
||||
// The next/previous in history shortcut in this case makes a lot more sense.
|
||||
|
||||
ED_SHORTCUT("script_text_editor/indent_left", TTR("Indent Left"), Key::NONE);
|
||||
ED_SHORTCUT("script_text_editor/indent_right", TTR("Indent Right"), Key::NONE);
|
||||
ED_SHORTCUT("script_text_editor/toggle_comment", TTR("Toggle Comment"), KeyModifierMask::CMD | Key::K);
|
||||
ED_SHORTCUT("script_text_editor/toggle_comment", TTR("Toggle Comment"), KeyModifierMask::CMD_OR_CTRL | Key::K);
|
||||
ED_SHORTCUT("script_text_editor/toggle_fold_line", TTR("Fold/Unfold Line"), KeyModifierMask::ALT | Key::F);
|
||||
ED_SHORTCUT("script_text_editor/fold_all_lines", TTR("Fold All Lines"), Key::NONE);
|
||||
ED_SHORTCUT("script_text_editor/unfold_all_lines", TTR("Unfold All Lines"), Key::NONE);
|
||||
ED_SHORTCUT("script_text_editor/duplicate_selection", TTR("Duplicate Selection"), KeyModifierMask::SHIFT | KeyModifierMask::CMD | Key::D);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/duplicate_selection", "macos", KeyModifierMask::SHIFT | KeyModifierMask::CMD | Key::C);
|
||||
ED_SHORTCUT("script_text_editor/evaluate_selection", TTR("Evaluate Selection"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::E);
|
||||
ED_SHORTCUT("script_text_editor/trim_trailing_whitespace", TTR("Trim Trailing Whitespace"), KeyModifierMask::CMD | KeyModifierMask::ALT | Key::T);
|
||||
ED_SHORTCUT("script_text_editor/convert_indent_to_spaces", TTR("Convert Indent to Spaces"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::Y);
|
||||
ED_SHORTCUT("script_text_editor/convert_indent_to_tabs", TTR("Convert Indent to Tabs"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::I);
|
||||
ED_SHORTCUT("script_text_editor/auto_indent", TTR("Auto Indent"), KeyModifierMask::CMD | Key::I);
|
||||
ED_SHORTCUT("script_text_editor/duplicate_selection", TTR("Duplicate Selection"), KeyModifierMask::SHIFT | KeyModifierMask::CTRL | Key::D);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/duplicate_selection", "macos", KeyModifierMask::SHIFT | KeyModifierMask::META | Key::C);
|
||||
ED_SHORTCUT("script_text_editor/evaluate_selection", TTR("Evaluate Selection"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::E);
|
||||
ED_SHORTCUT("script_text_editor/trim_trailing_whitespace", TTR("Trim Trailing Whitespace"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::ALT | Key::T);
|
||||
ED_SHORTCUT("script_text_editor/convert_indent_to_spaces", TTR("Convert Indent to Spaces"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::Y);
|
||||
ED_SHORTCUT("script_text_editor/convert_indent_to_tabs", TTR("Convert Indent to Tabs"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::I);
|
||||
ED_SHORTCUT("script_text_editor/auto_indent", TTR("Auto Indent"), KeyModifierMask::CMD_OR_CTRL | Key::I);
|
||||
|
||||
ED_SHORTCUT_AND_COMMAND("script_text_editor/find", TTR("Find..."), KeyModifierMask::CMD | Key::F);
|
||||
ED_SHORTCUT_AND_COMMAND("script_text_editor/find", TTR("Find..."), KeyModifierMask::CMD_OR_CTRL | Key::F);
|
||||
|
||||
ED_SHORTCUT("script_text_editor/find_next", TTR("Find Next"), Key::F3);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/find_next", "macos", KeyModifierMask::CMD | Key::G);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/find_next", "macos", KeyModifierMask::META | Key::G);
|
||||
|
||||
ED_SHORTCUT("script_text_editor/find_previous", TTR("Find Previous"), KeyModifierMask::SHIFT | Key::F3);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/find_previous", "macos", KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::G);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/find_previous", "macos", KeyModifierMask::META | KeyModifierMask::SHIFT | Key::G);
|
||||
|
||||
ED_SHORTCUT_AND_COMMAND("script_text_editor/replace", TTR("Replace..."), KeyModifierMask::CMD | Key::R);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/replace", "macos", KeyModifierMask::ALT | KeyModifierMask::CMD | Key::F);
|
||||
ED_SHORTCUT_AND_COMMAND("script_text_editor/replace", TTR("Replace..."), KeyModifierMask::CTRL | Key::R);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/replace", "macos", KeyModifierMask::ALT | KeyModifierMask::META | Key::F);
|
||||
|
||||
ED_SHORTCUT("script_text_editor/find_in_files", TTR("Find in Files..."), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::F);
|
||||
ED_SHORTCUT("script_text_editor/replace_in_files", TTR("Replace in Files..."), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::R);
|
||||
ED_SHORTCUT("script_text_editor/find_in_files", TTR("Find in Files..."), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::F);
|
||||
ED_SHORTCUT("script_text_editor/replace_in_files", TTR("Replace in Files..."), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::R);
|
||||
|
||||
ED_SHORTCUT("script_text_editor/contextual_help", TTR("Contextual Help"), KeyModifierMask::ALT | Key::F1);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/contextual_help", "macos", KeyModifierMask::ALT | KeyModifierMask::SHIFT | Key::SPACE);
|
||||
|
||||
ED_SHORTCUT("script_text_editor/toggle_bookmark", TTR("Toggle Bookmark"), KeyModifierMask::CMD | KeyModifierMask::ALT | Key::B);
|
||||
ED_SHORTCUT("script_text_editor/goto_next_bookmark", TTR("Go to Next Bookmark"), KeyModifierMask::CMD | Key::B);
|
||||
ED_SHORTCUT("script_text_editor/goto_previous_bookmark", TTR("Go to Previous Bookmark"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::B);
|
||||
ED_SHORTCUT("script_text_editor/toggle_bookmark", TTR("Toggle Bookmark"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::ALT | Key::B);
|
||||
ED_SHORTCUT("script_text_editor/goto_next_bookmark", TTR("Go to Next Bookmark"), KeyModifierMask::CMD_OR_CTRL | Key::B);
|
||||
ED_SHORTCUT("script_text_editor/goto_previous_bookmark", TTR("Go to Previous Bookmark"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::B);
|
||||
ED_SHORTCUT("script_text_editor/remove_all_bookmarks", TTR("Remove All Bookmarks"), Key::NONE);
|
||||
|
||||
ED_SHORTCUT("script_text_editor/goto_function", TTR("Go to Function..."), KeyModifierMask::ALT | KeyModifierMask::CMD | Key::F);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/goto_function", "macos", KeyModifierMask::CTRL | KeyModifierMask::CMD | Key::J);
|
||||
ED_SHORTCUT("script_text_editor/goto_function", TTR("Go to Function..."), KeyModifierMask::ALT | KeyModifierMask::CTRL | Key::F);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/goto_function", "macos", KeyModifierMask::CTRL | KeyModifierMask::META | Key::J);
|
||||
|
||||
ED_SHORTCUT("script_text_editor/goto_line", TTR("Go to Line..."), KeyModifierMask::CMD | Key::L);
|
||||
ED_SHORTCUT("script_text_editor/goto_line", TTR("Go to Line..."), KeyModifierMask::CMD_OR_CTRL | Key::L);
|
||||
|
||||
ED_SHORTCUT("script_text_editor/toggle_breakpoint", TTR("Toggle Breakpoint"), Key::F9);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/toggle_breakpoint", "macos", KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::B);
|
||||
ED_SHORTCUT_OVERRIDE("script_text_editor/toggle_breakpoint", "macos", KeyModifierMask::META | KeyModifierMask::SHIFT | Key::B);
|
||||
|
||||
ED_SHORTCUT("script_text_editor/remove_all_breakpoints", TTR("Remove All Breakpoints"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::F9);
|
||||
ED_SHORTCUT("script_text_editor/goto_next_breakpoint", TTR("Go to Next Breakpoint"), KeyModifierMask::CMD | Key::PERIOD);
|
||||
ED_SHORTCUT("script_text_editor/goto_previous_breakpoint", TTR("Go to Previous Breakpoint"), KeyModifierMask::CMD | Key::COMMA);
|
||||
ED_SHORTCUT("script_text_editor/remove_all_breakpoints", TTR("Remove All Breakpoints"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::F9);
|
||||
ED_SHORTCUT("script_text_editor/goto_next_breakpoint", TTR("Go to Next Breakpoint"), KeyModifierMask::CMD_OR_CTRL | Key::PERIOD);
|
||||
ED_SHORTCUT("script_text_editor/goto_previous_breakpoint", TTR("Go to Previous Breakpoint"), KeyModifierMask::CMD_OR_CTRL | Key::COMMA);
|
||||
|
||||
ScriptEditor::register_create_script_editor_function(create_editor);
|
||||
}
|
||||
|
|
|
@ -785,7 +785,7 @@ void Skeleton3DEditor::create_editors() {
|
|||
key_insert_all_button->set_focus_mode(FOCUS_NONE);
|
||||
key_insert_all_button->connect("pressed", callable_mp(this, &Skeleton3DEditor::insert_keys).bind(true));
|
||||
key_insert_all_button->set_tooltip_text(TTR("Insert key of all bone poses."));
|
||||
key_insert_all_button->set_shortcut(ED_SHORTCUT("skeleton_3d_editor/insert_key_of_all_bones", TTR("Insert Key (All Bones)"), KeyModifierMask::CMD + Key::INSERT));
|
||||
key_insert_all_button->set_shortcut(ED_SHORTCUT("skeleton_3d_editor/insert_key_of_all_bones", TTR("Insert Key (All Bones)"), KeyModifierMask::CMD_OR_CTRL + Key::INSERT));
|
||||
animation_hb->add_child(key_insert_all_button);
|
||||
|
||||
// Bone tree.
|
||||
|
|
|
@ -2020,9 +2020,9 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
|
|||
->connect("mouse_exited", callable_mp(this, &TileMapEditorTilesPlugin::_mouse_exited_viewport));
|
||||
|
||||
// --- Shortcuts ---
|
||||
ED_SHORTCUT("tiles_editor/cut", TTR("Cut"), KeyModifierMask::CMD | Key::X);
|
||||
ED_SHORTCUT("tiles_editor/copy", TTR("Copy"), KeyModifierMask::CMD | Key::C);
|
||||
ED_SHORTCUT("tiles_editor/paste", TTR("Paste"), KeyModifierMask::CMD | Key::V);
|
||||
ED_SHORTCUT("tiles_editor/cut", TTR("Cut"), KeyModifierMask::CMD_OR_CTRL | Key::X);
|
||||
ED_SHORTCUT("tiles_editor/copy", TTR("Copy"), KeyModifierMask::CMD_OR_CTRL | Key::C);
|
||||
ED_SHORTCUT("tiles_editor/paste", TTR("Paste"), KeyModifierMask::CMD_OR_CTRL | Key::V);
|
||||
ED_SHORTCUT("tiles_editor/cancel", TTR("Cancel"), Key::ESCAPE);
|
||||
ED_SHORTCUT("tiles_editor/delete", TTR("Delete"), Key::KEY_DELETE);
|
||||
|
||||
|
|
|
@ -1319,7 +1319,7 @@ VersionControlEditorPlugin::VersionControlEditorPlugin() {
|
|||
commit_message->connect(SNAME("gui_input"), callable_mp(this, &VersionControlEditorPlugin::_commit_message_gui_input));
|
||||
commit_area->add_child(commit_message);
|
||||
|
||||
ED_SHORTCUT("version_control/commit", TTR("Commit"), KeyModifierMask::CMD | Key::ENTER);
|
||||
ED_SHORTCUT("version_control/commit", TTR("Commit"), KeyModifierMask::CMD_OR_CTRL | Key::ENTER);
|
||||
|
||||
commit_button = memnew(Button);
|
||||
commit_button->set_text(TTR("Commit Changes"));
|
||||
|
|
|
@ -292,7 +292,7 @@ static const char *gdscript_function_renames[][2] = {
|
|||
{ "get_collision_layer_bit", "get_collision_layer_value" }, // CSGShape3D and a lot of others like GridMap
|
||||
{ "get_collision_mask_bit", "get_collision_mask_value" }, // CSGShape3D and a lot of others like GridMap
|
||||
{ "get_color_types", "get_color_type_list" }, // Theme
|
||||
{ "get_command", "is_command_pressed" }, // InputEventWithModifiers
|
||||
{ "get_command", "is_command_or_control_pressed" }, // InputEventWithModifiers
|
||||
{ "get_constant_types", "get_constant_type_list" }, // Theme
|
||||
{ "get_control", "is_ctrl_pressed" }, // InputEventWithModifiers
|
||||
{ "get_cull_mask_bit", "get_cull_mask_value" }, // Camera3D
|
||||
|
@ -480,7 +480,7 @@ static const char *gdscript_function_renames[][2] = {
|
|||
{ "set_collision_layer_bit", "set_collision_layer_value" }, // CSGShape3D and a lot of others like GridMap
|
||||
{ "set_collision_mask_bit", "set_collision_mask_value" }, // CSGShape3D and a lot of others like GridMap
|
||||
{ "set_column_min_width", "set_column_custom_minimum_width" }, // Tree
|
||||
{ "set_command", "set_command_pressed" }, // InputEventWithModifiers
|
||||
{ "set_command", "set_meta_pressed" }, // InputEventWithModifiers
|
||||
{ "set_control", "set_ctrl_pressed" }, // InputEventWithModifiers
|
||||
{ "set_create_options", "_set_create_options" }, // EditorResourcePicker
|
||||
{ "set_cull_mask_bit", "set_cull_mask_value" }, // Camera3D
|
||||
|
|
|
@ -1993,7 +1993,7 @@ void ProjectManager::shortcut_input(const Ref<InputEvent> &p_ev) {
|
|||
// This is handled by the platform implementation on macOS,
|
||||
// so only define the shortcut on other platforms
|
||||
#ifndef MACOS_ENABLED
|
||||
if (k->get_keycode_with_modifiers() == (KeyModifierMask::CMD | Key::Q)) {
|
||||
if (k->get_keycode_with_modifiers() == (KeyModifierMask::META | Key::Q)) {
|
||||
_dim_window();
|
||||
get_tree()->quit();
|
||||
}
|
||||
|
@ -2051,7 +2051,7 @@ void ProjectManager::shortcut_input(const Ref<InputEvent> &p_ev) {
|
|||
|
||||
} break;
|
||||
case Key::F: {
|
||||
if (k->is_command_pressed()) {
|
||||
if (k->is_command_or_control_pressed()) {
|
||||
this->search_box->grab_focus();
|
||||
} else {
|
||||
keycode_handled = false;
|
||||
|
@ -2628,21 +2628,21 @@ ProjectManager::ProjectManager() {
|
|||
create_btn = memnew(Button);
|
||||
create_btn->set_text(TTR("New Project"));
|
||||
create_btn->add_theme_constant_override("h_separation", btn_h_separation);
|
||||
create_btn->set_shortcut(ED_SHORTCUT("project_manager/new_project", TTR("New Project"), KeyModifierMask::CMD | Key::N));
|
||||
create_btn->set_shortcut(ED_SHORTCUT("project_manager/new_project", TTR("New Project"), KeyModifierMask::CMD_OR_CTRL | Key::N));
|
||||
create_btn->connect("pressed", callable_mp(this, &ProjectManager::_new_project));
|
||||
tree_vb->add_child(create_btn);
|
||||
|
||||
import_btn = memnew(Button);
|
||||
import_btn->set_text(TTR("Import"));
|
||||
import_btn->add_theme_constant_override("h_separation", btn_h_separation);
|
||||
import_btn->set_shortcut(ED_SHORTCUT("project_manager/import_project", TTR("Import Project"), KeyModifierMask::CMD | Key::I));
|
||||
import_btn->set_shortcut(ED_SHORTCUT("project_manager/import_project", TTR("Import Project"), KeyModifierMask::CMD_OR_CTRL | Key::I));
|
||||
import_btn->connect("pressed", callable_mp(this, &ProjectManager::_import_project));
|
||||
tree_vb->add_child(import_btn);
|
||||
|
||||
scan_btn = memnew(Button);
|
||||
scan_btn->set_text(TTR("Scan"));
|
||||
scan_btn->add_theme_constant_override("h_separation", btn_h_separation);
|
||||
scan_btn->set_shortcut(ED_SHORTCUT("project_manager/scan_projects", TTR("Scan Projects"), KeyModifierMask::CMD | Key::S));
|
||||
scan_btn->set_shortcut(ED_SHORTCUT("project_manager/scan_projects", TTR("Scan Projects"), KeyModifierMask::CMD_OR_CTRL | Key::S));
|
||||
scan_btn->connect("pressed", callable_mp(this, &ProjectManager::_scan_projects));
|
||||
tree_vb->add_child(scan_btn);
|
||||
|
||||
|
@ -2651,14 +2651,14 @@ ProjectManager::ProjectManager() {
|
|||
open_btn = memnew(Button);
|
||||
open_btn->set_text(TTR("Edit"));
|
||||
open_btn->add_theme_constant_override("h_separation", btn_h_separation);
|
||||
open_btn->set_shortcut(ED_SHORTCUT("project_manager/edit_project", TTR("Edit Project"), KeyModifierMask::CMD | Key::E));
|
||||
open_btn->set_shortcut(ED_SHORTCUT("project_manager/edit_project", TTR("Edit Project"), KeyModifierMask::CMD_OR_CTRL | Key::E));
|
||||
open_btn->connect("pressed", callable_mp(this, &ProjectManager::_open_selected_projects_ask));
|
||||
tree_vb->add_child(open_btn);
|
||||
|
||||
run_btn = memnew(Button);
|
||||
run_btn->set_text(TTR("Run"));
|
||||
run_btn->add_theme_constant_override("h_separation", btn_h_separation);
|
||||
run_btn->set_shortcut(ED_SHORTCUT("project_manager/run_project", TTR("Run Project"), KeyModifierMask::CMD | Key::R));
|
||||
run_btn->set_shortcut(ED_SHORTCUT("project_manager/run_project", TTR("Run Project"), KeyModifierMask::CMD_OR_CTRL | Key::R));
|
||||
run_btn->connect("pressed", callable_mp(this, &ProjectManager::_run_project));
|
||||
tree_vb->add_child(run_btn);
|
||||
|
||||
|
|
|
@ -239,7 +239,7 @@ void ProjectSettingsEditor::shortcut_input(const Ref<InputEvent> &p_event) {
|
|||
handled = true;
|
||||
}
|
||||
|
||||
if (k->get_keycode_with_modifiers() == (KeyModifierMask::CMD | Key::F)) {
|
||||
if (k->is_match(InputEventKey::create_reference(KeyModifierMask::CMD_OR_CTRL | Key::F))) {
|
||||
search_box->grab_focus();
|
||||
search_box->select_all();
|
||||
handled = true;
|
||||
|
|
|
@ -3402,24 +3402,24 @@ SceneTreeDock::SceneTreeDock(Node *p_scene_root, EditorSelection *p_editor_selec
|
|||
ED_SHORTCUT("scene_tree/batch_rename", TTR("Batch Rename"), KeyModifierMask::SHIFT | Key::F2);
|
||||
ED_SHORTCUT_OVERRIDE("scene_tree/batch_rename", "macos", KeyModifierMask::SHIFT | Key::ENTER);
|
||||
|
||||
ED_SHORTCUT("scene_tree/add_child_node", TTR("Add Child Node"), KeyModifierMask::CMD | Key::A);
|
||||
ED_SHORTCUT("scene_tree/instance_scene", TTR("Instantiate Child Scene"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::A);
|
||||
ED_SHORTCUT("scene_tree/add_child_node", TTR("Add Child Node"), KeyModifierMask::CMD_OR_CTRL | Key::A);
|
||||
ED_SHORTCUT("scene_tree/instance_scene", TTR("Instantiate Child Scene"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::A);
|
||||
ED_SHORTCUT("scene_tree/expand_collapse_all", TTR("Expand/Collapse Branch"));
|
||||
ED_SHORTCUT("scene_tree/cut_node", TTR("Cut"), KeyModifierMask::CMD | Key::X);
|
||||
ED_SHORTCUT("scene_tree/copy_node", TTR("Copy"), KeyModifierMask::CMD | Key::C);
|
||||
ED_SHORTCUT("scene_tree/paste_node", TTR("Paste"), KeyModifierMask::CMD | Key::V);
|
||||
ED_SHORTCUT("scene_tree/cut_node", TTR("Cut"), KeyModifierMask::CMD_OR_CTRL | Key::X);
|
||||
ED_SHORTCUT("scene_tree/copy_node", TTR("Copy"), KeyModifierMask::CMD_OR_CTRL | Key::C);
|
||||
ED_SHORTCUT("scene_tree/paste_node", TTR("Paste"), KeyModifierMask::CMD_OR_CTRL | Key::V);
|
||||
ED_SHORTCUT("scene_tree/change_node_type", TTR("Change Type"));
|
||||
ED_SHORTCUT("scene_tree/attach_script", TTR("Attach Script"));
|
||||
ED_SHORTCUT("scene_tree/extend_script", TTR("Extend Script"));
|
||||
ED_SHORTCUT("scene_tree/detach_script", TTR("Detach Script"));
|
||||
ED_SHORTCUT("scene_tree/move_up", TTR("Move Up"), KeyModifierMask::CMD | Key::UP);
|
||||
ED_SHORTCUT("scene_tree/move_down", TTR("Move Down"), KeyModifierMask::CMD | Key::DOWN);
|
||||
ED_SHORTCUT("scene_tree/duplicate", TTR("Duplicate"), KeyModifierMask::CMD | Key::D);
|
||||
ED_SHORTCUT("scene_tree/move_up", TTR("Move Up"), KeyModifierMask::CMD_OR_CTRL | Key::UP);
|
||||
ED_SHORTCUT("scene_tree/move_down", TTR("Move Down"), KeyModifierMask::CMD_OR_CTRL | Key::DOWN);
|
||||
ED_SHORTCUT("scene_tree/duplicate", TTR("Duplicate"), KeyModifierMask::CMD_OR_CTRL | Key::D);
|
||||
ED_SHORTCUT("scene_tree/reparent", TTR("Reparent"));
|
||||
ED_SHORTCUT("scene_tree/reparent_to_new_node", TTR("Reparent to New Node"));
|
||||
ED_SHORTCUT("scene_tree/make_root", TTR("Make Scene Root"));
|
||||
ED_SHORTCUT("scene_tree/save_branch_as_scene", TTR("Save Branch as Scene"));
|
||||
ED_SHORTCUT("scene_tree/copy_node_path", TTR("Copy Node Path"), KeyModifierMask::CMD | KeyModifierMask::SHIFT | Key::C);
|
||||
ED_SHORTCUT("scene_tree/copy_node_path", TTR("Copy Node Path"), KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT | Key::C);
|
||||
ED_SHORTCUT("scene_tree/delete_no_confirm", TTR("Delete (No Confirm)"), KeyModifierMask::SHIFT | Key::KEY_DELETE);
|
||||
ED_SHORTCUT("scene_tree/delete", TTR("Delete"), Key::KEY_DELETE);
|
||||
|
||||
|
|
|
@ -603,13 +603,13 @@ EditorPlugin::AfterGUIInput GridMapEditor::forward_spatial_input_event(Camera3D
|
|||
Ref<InputEventMouseButton> mb = p_event;
|
||||
|
||||
if (mb.is_valid()) {
|
||||
if (mb->get_button_index() == MouseButton::WHEEL_UP && (mb->is_command_pressed() || mb->is_shift_pressed())) {
|
||||
if (mb->get_button_index() == MouseButton::WHEEL_UP && (mb->is_command_or_control_pressed() || mb->is_shift_pressed())) {
|
||||
if (mb->is_pressed()) {
|
||||
floor->set_value(floor->get_value() + mb->get_factor());
|
||||
}
|
||||
|
||||
return EditorPlugin::AFTER_GUI_INPUT_STOP; // Eaten.
|
||||
} else if (mb->get_button_index() == MouseButton::WHEEL_DOWN && (mb->is_command_pressed() || mb->is_shift_pressed())) {
|
||||
} else if (mb->get_button_index() == MouseButton::WHEEL_DOWN && (mb->is_command_or_control_pressed() || mb->is_shift_pressed())) {
|
||||
if (mb->is_pressed()) {
|
||||
floor->set_value(floor->get_value() - mb->get_factor());
|
||||
}
|
||||
|
@ -629,7 +629,7 @@ EditorPlugin::AfterGUIInput GridMapEditor::forward_spatial_input_event(Camera3D
|
|||
} else if (mb->is_shift_pressed() && can_edit) {
|
||||
input_action = INPUT_SELECT;
|
||||
last_selection = selection;
|
||||
} else if (mb->is_command_pressed() && can_edit) {
|
||||
} else if (mb->is_command_or_control_pressed() && can_edit) {
|
||||
input_action = INPUT_PICK;
|
||||
} else {
|
||||
input_action = INPUT_PAINT;
|
||||
|
@ -746,7 +746,7 @@ EditorPlugin::AfterGUIInput GridMapEditor::forward_spatial_input_event(Camera3D
|
|||
|
||||
Ref<InputEventPanGesture> pan_gesture = p_event;
|
||||
if (pan_gesture.is_valid()) {
|
||||
if (pan_gesture->is_alt_pressed() && (pan_gesture->is_command_pressed() || pan_gesture->is_shift_pressed())) {
|
||||
if (pan_gesture->is_alt_pressed() && (pan_gesture->is_command_or_control_pressed() || pan_gesture->is_shift_pressed())) {
|
||||
const real_t delta = pan_gesture->get_delta().y * 0.5;
|
||||
accumulated_floor_delta += delta;
|
||||
int step = 0;
|
||||
|
@ -807,7 +807,7 @@ void GridMapEditor::_mesh_library_palette_input(const Ref<InputEvent> &p_ie) {
|
|||
const Ref<InputEventMouseButton> mb = p_ie;
|
||||
|
||||
// Zoom in/out using Ctrl + mouse wheel
|
||||
if (mb.is_valid() && mb->is_pressed() && mb->is_command_pressed()) {
|
||||
if (mb.is_valid() && mb->is_pressed() && mb->is_command_or_control_pressed()) {
|
||||
if (mb->is_pressed() && mb->get_button_index() == MouseButton::WHEEL_UP) {
|
||||
size_slider->set_value(size_slider->get_value() + 0.2);
|
||||
}
|
||||
|
|
|
@ -199,9 +199,7 @@ def configure(env):
|
|||
## Flags
|
||||
|
||||
env.Prepend(CPPPATH=["#platform/macos"])
|
||||
env.Append(
|
||||
CPPDEFINES=["MACOS_ENABLED", "UNIX_ENABLED", "APPLE_STYLE_KEYS", "COREAUDIO_ENABLED", "COREMIDI_ENABLED"]
|
||||
)
|
||||
env.Append(CPPDEFINES=["MACOS_ENABLED", "UNIX_ENABLED", "COREAUDIO_ENABLED", "COREMIDI_ENABLED"])
|
||||
env.Append(
|
||||
LINKFLAGS=[
|
||||
"-framework",
|
||||
|
|
|
@ -344,7 +344,7 @@ void CodeEdit::gui_input(const Ref<InputEvent> &p_gui_input) {
|
|||
}
|
||||
} else {
|
||||
if (mb->get_button_index() == MouseButton::LEFT) {
|
||||
if (mb->is_command_pressed() && !symbol_lookup_word.is_empty()) {
|
||||
if (mb->is_command_or_control_pressed() && !symbol_lookup_word.is_empty()) {
|
||||
Vector2i mpos = mb->get_position();
|
||||
if (is_layout_rtl()) {
|
||||
mpos.x = get_size().x - mpos.x;
|
||||
|
@ -371,7 +371,7 @@ void CodeEdit::gui_input(const Ref<InputEvent> &p_gui_input) {
|
|||
}
|
||||
|
||||
if (symbol_lookup_on_click_enabled) {
|
||||
if (mm->is_command_pressed() && mm->get_button_mask() == MouseButton::NONE && !is_dragging_cursor()) {
|
||||
if (mm->is_command_or_control_pressed() && mm->get_button_mask() == MouseButton::NONE && !is_dragging_cursor()) {
|
||||
symbol_lookup_new_word = get_word_at_pos(mpos);
|
||||
if (symbol_lookup_new_word != symbol_lookup_word) {
|
||||
emit_signal(SNAME("symbol_validate"), symbol_lookup_new_word);
|
||||
|
@ -432,7 +432,7 @@ void CodeEdit::gui_input(const Ref<InputEvent> &p_gui_input) {
|
|||
|
||||
/* Allow unicode handling if: */
|
||||
/* No Modifiers are pressed (except shift) */
|
||||
bool allow_unicode_handling = !(k->is_command_pressed() || k->is_ctrl_pressed() || k->is_alt_pressed() || k->is_meta_pressed());
|
||||
bool allow_unicode_handling = !(k->is_command_or_control_pressed() || k->is_ctrl_pressed() || k->is_alt_pressed() || k->is_meta_pressed());
|
||||
|
||||
/* AUTO-COMPLETE */
|
||||
if (code_completion_enabled && k->is_action("ui_text_completion_query", true)) {
|
||||
|
|
|
@ -145,7 +145,7 @@ void FileDialog::shortcut_input(const Ref<InputEvent> &p_event) {
|
|||
|
||||
switch (k->get_keycode()) {
|
||||
case Key::H: {
|
||||
if (k->is_command_pressed()) {
|
||||
if (k->is_command_or_control_pressed()) {
|
||||
set_show_hidden_files(!show_hidden_files);
|
||||
} else {
|
||||
handled = false;
|
||||
|
|
|
@ -679,7 +679,7 @@ void ItemList::gui_input(const Ref<InputEvent> &p_event) {
|
|||
if (closest != -1 && (mb->get_button_index() == MouseButton::LEFT || (allow_rmb_select && mb->get_button_index() == MouseButton::RIGHT))) {
|
||||
int i = closest;
|
||||
|
||||
if (select_mode == SELECT_MULTI && items[i].selected && mb->is_command_pressed()) {
|
||||
if (select_mode == SELECT_MULTI && items[i].selected && mb->is_command_or_control_pressed()) {
|
||||
deselect(i);
|
||||
emit_signal(SNAME("multi_selected"), i, false);
|
||||
|
||||
|
@ -702,13 +702,13 @@ void ItemList::gui_input(const Ref<InputEvent> &p_event) {
|
|||
emit_signal(SNAME("item_clicked"), i, get_local_mouse_position(), mb->get_button_index());
|
||||
|
||||
} else {
|
||||
if (!mb->is_double_click() && !mb->is_command_pressed() && select_mode == SELECT_MULTI && items[i].selectable && !items[i].disabled && items[i].selected && mb->get_button_index() == MouseButton::LEFT) {
|
||||
if (!mb->is_double_click() && !mb->is_command_or_control_pressed() && select_mode == SELECT_MULTI && items[i].selectable && !items[i].disabled && items[i].selected && mb->get_button_index() == MouseButton::LEFT) {
|
||||
defer_select_single = i;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!items[i].selected || allow_reselect) {
|
||||
select(i, select_mode == SELECT_SINGLE || !mb->is_command_pressed());
|
||||
select(i, select_mode == SELECT_SINGLE || !mb->is_command_or_control_pressed());
|
||||
|
||||
if (select_mode == SELECT_SINGLE) {
|
||||
emit_signal(SNAME("item_selected"), i);
|
||||
|
|
|
@ -589,7 +589,7 @@ void LineEdit::gui_input(const Ref<InputEvent> &p_event) {
|
|||
|
||||
// Allow unicode handling if:
|
||||
// * No Modifiers are pressed (except shift)
|
||||
bool allow_unicode_handling = !(k->is_command_pressed() || k->is_ctrl_pressed() || k->is_alt_pressed() || k->is_meta_pressed());
|
||||
bool allow_unicode_handling = !(k->is_command_or_control_pressed() || k->is_ctrl_pressed() || k->is_alt_pressed() || k->is_meta_pressed());
|
||||
|
||||
if (allow_unicode_handling && editable && k->get_unicode() >= 32) {
|
||||
// Handle Unicode (if no modifiers active)
|
||||
|
|
|
@ -162,7 +162,7 @@ void TabBar::gui_input(const Ref<InputEvent> &p_event) {
|
|||
Ref<InputEventMouseButton> mb = p_event;
|
||||
|
||||
if (mb.is_valid()) {
|
||||
if (mb->is_pressed() && mb->get_button_index() == MouseButton::WHEEL_UP && !mb->is_command_pressed()) {
|
||||
if (mb->is_pressed() && mb->get_button_index() == MouseButton::WHEEL_UP && !mb->is_command_or_control_pressed()) {
|
||||
if (scrolling_enabled && buttons_visible) {
|
||||
if (offset > 0) {
|
||||
offset--;
|
||||
|
@ -172,7 +172,7 @@ void TabBar::gui_input(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
}
|
||||
|
||||
if (mb->is_pressed() && mb->get_button_index() == MouseButton::WHEEL_DOWN && !mb->is_command_pressed()) {
|
||||
if (mb->is_pressed() && mb->get_button_index() == MouseButton::WHEEL_DOWN && !mb->is_command_or_control_pressed()) {
|
||||
if (scrolling_enabled && buttons_visible) {
|
||||
if (missing_right && offset < tabs.size()) {
|
||||
offset++;
|
||||
|
|
|
@ -1614,7 +1614,7 @@ void TextEdit::gui_input(const Ref<InputEvent> &p_gui_input) {
|
|||
}
|
||||
|
||||
if (mb->is_pressed()) {
|
||||
if (mb->get_button_index() == MouseButton::WHEEL_UP && !mb->is_command_pressed()) {
|
||||
if (mb->get_button_index() == MouseButton::WHEEL_UP && !mb->is_command_or_control_pressed()) {
|
||||
if (mb->is_shift_pressed()) {
|
||||
h_scroll->set_value(h_scroll->get_value() - (100 * mb->get_factor()));
|
||||
} else if (mb->is_alt_pressed()) {
|
||||
|
@ -1625,7 +1625,7 @@ void TextEdit::gui_input(const Ref<InputEvent> &p_gui_input) {
|
|||
_scroll_up(3 * mb->get_factor());
|
||||
}
|
||||
}
|
||||
if (mb->get_button_index() == MouseButton::WHEEL_DOWN && !mb->is_command_pressed()) {
|
||||
if (mb->get_button_index() == MouseButton::WHEEL_DOWN && !mb->is_command_or_control_pressed()) {
|
||||
if (mb->is_shift_pressed()) {
|
||||
h_scroll->set_value(h_scroll->get_value() + (100 * mb->get_factor()));
|
||||
} else if (mb->is_alt_pressed()) {
|
||||
|
@ -1920,7 +1920,7 @@ void TextEdit::gui_input(const Ref<InputEvent> &p_gui_input) {
|
|||
|
||||
// Allow unicode handling if:
|
||||
// * No Modifiers are pressed (except shift)
|
||||
bool allow_unicode_handling = !(k->is_command_pressed() || k->is_ctrl_pressed() || k->is_alt_pressed() || k->is_meta_pressed());
|
||||
bool allow_unicode_handling = !(k->is_command_or_control_pressed() || k->is_ctrl_pressed() || k->is_alt_pressed() || k->is_meta_pressed());
|
||||
|
||||
selection.selecting_text = false;
|
||||
|
||||
|
|
|
@ -2686,7 +2686,7 @@ int Tree::propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, int
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (select_mode == SELECT_MULTI && p_mod->is_command_pressed() && c.selectable) {
|
||||
if (select_mode == SELECT_MULTI && p_mod->is_command_or_control_pressed() && c.selectable) {
|
||||
if (!c.selected || p_button == MouseButton::RIGHT) {
|
||||
p_item->select(col);
|
||||
emit_signal(SNAME("multi_selected"), p_item, col, true);
|
||||
|
@ -3127,7 +3127,7 @@ void Tree::gui_input(const Ref<InputEvent> &p_event) {
|
|||
|
||||
Ref<InputEventKey> k = p_event;
|
||||
|
||||
bool is_command = k.is_valid() && k->is_command_pressed();
|
||||
bool is_command = k.is_valid() && k->is_command_or_control_pressed();
|
||||
if (p_event->is_action("ui_right") && p_event->is_pressed()) {
|
||||
if (!cursor_can_exit_tree) {
|
||||
accept_event();
|
||||
|
@ -3285,7 +3285,7 @@ void Tree::gui_input(const Ref<InputEvent> &p_event) {
|
|||
if (!k->is_pressed()) {
|
||||
return;
|
||||
}
|
||||
if (k->is_command_pressed() || (k->is_shift_pressed() && k->get_unicode() == 0) || k->is_meta_pressed()) {
|
||||
if (k->is_command_or_control_pressed() || (k->is_shift_pressed() && k->get_unicode() == 0) || k->is_meta_pressed()) {
|
||||
return;
|
||||
}
|
||||
if (!root) {
|
||||
|
@ -3615,7 +3615,7 @@ void Tree::gui_input(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
|
||||
if (mb->get_button_index() == MouseButton::LEFT) {
|
||||
if (get_item_at_position(mb->get_position()) == nullptr && !mb->is_shift_pressed() && !mb->is_ctrl_pressed() && !mb->is_command_pressed()) {
|
||||
if (get_item_at_position(mb->get_position()) == nullptr && !mb->is_shift_pressed() && !mb->is_ctrl_pressed() && !mb->is_command_or_control_pressed()) {
|
||||
emit_signal(SNAME("nothing_selected"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -148,7 +148,7 @@ TEST_CASE("[InputEventKey] Key correctly converts its state to a string represen
|
|||
CHECK(none_key.to_string() == "InputEventKey: keycode=0 (), mods=none, physical=true, pressed=false, echo=false");
|
||||
// Set physical key to Escape.
|
||||
none_key.set_physical_keycode(Key::ESCAPE);
|
||||
CHECK(none_key.to_string() == "InputEventKey: keycode=16777217 (Escape), mods=none, physical=true, pressed=false, echo=false");
|
||||
CHECK(none_key.to_string() == "InputEventKey: keycode=4194305 (Escape), mods=none, physical=true, pressed=false, echo=false");
|
||||
|
||||
InputEventKey key;
|
||||
|
||||
|
@ -167,7 +167,11 @@ TEST_CASE("[InputEventKey] Key correctly converts its state to a string represen
|
|||
// Press Ctrl and Alt.
|
||||
key.set_ctrl_pressed(true);
|
||||
key.set_alt_pressed(true);
|
||||
#ifdef MACOS_ENABLED
|
||||
CHECK(key.to_string() == "InputEventKey: keycode=32 (Space), mods=Ctrl+Option, physical=false, pressed=true, echo=true");
|
||||
#else
|
||||
CHECK(key.to_string() == "InputEventKey: keycode=32 (Space), mods=Ctrl+Alt, physical=false, pressed=true, echo=true");
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST_CASE("[InputEventKey] Key is correctly converted to reference") {
|
||||
|
|
|
@ -727,7 +727,7 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
|||
#ifdef MACOS_ENABLED
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::RIGHT | KeyModifierMask::SHIFT | KeyModifierMask::ALT)
|
||||
#else
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::RIGHT | KeyModifierMask::SHIFT | KeyModifierMask::CMD)
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::RIGHT | KeyModifierMask::SHIFT | KeyModifierMask::CMD_OR_CTRL)
|
||||
#endif
|
||||
CHECK(text_edit->has_selection());
|
||||
CHECK(text_edit->get_selected_text() == "test");
|
||||
|
@ -739,7 +739,7 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
|||
#ifdef MACOS_ENABLED
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::LEFT | KeyModifierMask::SHIFT | KeyModifierMask::ALT)
|
||||
#else
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::LEFT | KeyModifierMask::SHIFT | KeyModifierMask::CMD)
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::LEFT | KeyModifierMask::SHIFT | KeyModifierMask::CMD_OR_CTRL)
|
||||
#endif
|
||||
CHECK_FALSE(text_edit->has_selection());
|
||||
CHECK(text_edit->get_selected_text() == "");
|
||||
|
@ -1387,7 +1387,7 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
|||
text_edit->set_caret_column(4);
|
||||
MessageQueue::get_singleton()->flush();
|
||||
|
||||
Ref<InputEvent> tmpevent = InputEventKey::create_reference(Key::BACKSPACE | KeyModifierMask::ALT | KeyModifierMask::CMD);
|
||||
Ref<InputEvent> tmpevent = InputEventKey::create_reference(Key::BACKSPACE | KeyModifierMask::ALT | KeyModifierMask::CMD_OR_CTRL);
|
||||
InputMap::get_singleton()->action_add_event("ui_text_backspace_all_to_left", tmpevent);
|
||||
|
||||
SIGNAL_DISCARD("text_set");
|
||||
|
@ -1624,7 +1624,7 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
|||
}
|
||||
|
||||
SUBCASE("[TextEdit] ui_text_delete_all_to_right") {
|
||||
Ref<InputEvent> tmpevent = InputEventKey::create_reference(Key::BACKSPACE | KeyModifierMask::ALT | KeyModifierMask::CMD);
|
||||
Ref<InputEvent> tmpevent = InputEventKey::create_reference(Key::BACKSPACE | KeyModifierMask::ALT | KeyModifierMask::CMD_OR_CTRL);
|
||||
InputMap::get_singleton()->action_add_event("ui_text_delete_all_to_right", tmpevent);
|
||||
|
||||
text_edit->set_text("this is some test text.\n");
|
||||
|
@ -1905,7 +1905,7 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
|||
#ifdef MACOS_ENABLED
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::LEFT | KeyModifierMask::ALT | KeyModifierMask::SHIFT);
|
||||
#else
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::LEFT | KeyModifierMask::CMD | KeyModifierMask::SHIFT);
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::LEFT | KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT);
|
||||
#endif
|
||||
CHECK(text_edit->get_viewport()->is_input_handled());
|
||||
CHECK(text_edit->get_text() == "\nthis is some test text.");
|
||||
|
@ -2016,7 +2016,7 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
|||
#ifdef MACOS_ENABLED
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::RIGHT | KeyModifierMask::ALT | KeyModifierMask::SHIFT);
|
||||
#else
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::RIGHT | KeyModifierMask::CMD | KeyModifierMask::SHIFT);
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::RIGHT | KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT);
|
||||
#endif
|
||||
CHECK(text_edit->get_viewport()->is_input_handled());
|
||||
CHECK(text_edit->get_text() == "this is some test text\n");
|
||||
|
@ -2245,9 +2245,9 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
|||
SIGNAL_DISCARD("caret_changed");
|
||||
|
||||
#ifdef MACOS_ENABLED
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::UP | KeyModifierMask::CMD | KeyModifierMask::SHIFT);
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::UP | KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT);
|
||||
#else
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::HOME | KeyModifierMask::CMD | KeyModifierMask::SHIFT);
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::HOME | KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT);
|
||||
#endif
|
||||
CHECK(text_edit->get_viewport()->is_input_handled());
|
||||
CHECK(text_edit->get_text() == "this is some\nother test\nlines\ngo here");
|
||||
|
@ -2286,9 +2286,9 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
|||
SIGNAL_DISCARD("caret_changed");
|
||||
|
||||
#ifdef MACOS_ENABLED
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::DOWN | KeyModifierMask::CMD | KeyModifierMask::SHIFT);
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::DOWN | KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT);
|
||||
#else
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::END | KeyModifierMask::CMD | KeyModifierMask::SHIFT);
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::END | KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT);
|
||||
#endif
|
||||
CHECK(text_edit->get_viewport()->is_input_handled());
|
||||
CHECK(text_edit->get_text() == "go here\nlines\nother test\nthis is some");
|
||||
|
@ -2327,7 +2327,7 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
|||
SIGNAL_DISCARD("caret_changed");
|
||||
|
||||
#ifdef MACOS_ENABLED
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::LEFT | KeyModifierMask::CMD | KeyModifierMask::SHIFT);
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::LEFT | KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT);
|
||||
#else
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::HOME | KeyModifierMask::SHIFT);
|
||||
#endif
|
||||
|
@ -2384,7 +2384,7 @@ TEST_CASE("[SceneTree][TextEdit] text entry") {
|
|||
SIGNAL_DISCARD("caret_changed");
|
||||
|
||||
#ifdef MACOS_ENABLED
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::RIGHT | KeyModifierMask::CMD | KeyModifierMask::SHIFT);
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::RIGHT | KeyModifierMask::CMD_OR_CTRL | KeyModifierMask::SHIFT);
|
||||
#else
|
||||
SEND_GUI_KEY_EVENT(text_edit, Key::END | KeyModifierMask::SHIFT);
|
||||
#endif
|
||||
|
|
|
@ -133,11 +133,11 @@ int register_test_command(String p_command, TestFunc p_function);
|
|||
// Utility macros to send an event actions to a given object
|
||||
// Requires Message Queue and InputMap to be setup.
|
||||
// SEND_GUI_ACTION - takes an object and a input map key. e.g SEND_GUI_ACTION(code_edit, "ui_text_newline").
|
||||
// SEND_GUI_KEY_EVENT - takes an object and a keycode set. e.g SEND_GUI_KEY_EVENT(code_edit, Key::A | KeyModifierMask::CMD).
|
||||
// SEND_GUI_KEY_EVENT - takes an object and a keycode set. e.g SEND_GUI_KEY_EVENT(code_edit, Key::A | KeyModifierMask::META).
|
||||
// SEND_GUI_MOUSE_BUTTON_EVENT - takes an object, position, mouse button, mouse mask and modifiers e.g SEND_GUI_MOUSE_BUTTON_EVENT(code_edit, Vector2(50, 50), MOUSE_BUTTON_NONE, MOUSE_BUTTON_NONE, Key::None);
|
||||
// SEND_GUI_MOUSE_BUTTON_RELEASED_EVENT - takes an object, position, mouse button, mouse mask and modifiers e.g SEND_GUI_MOUSE_BUTTON_RELEASED_EVENT(code_edit, Vector2(50, 50), MOUSE_BUTTON_NONE, MOUSE_BUTTON_NONE, Key::None);
|
||||
// SEND_GUI_MOUSE_MOTION_EVENT - takes an object, position, mouse mask and modifiers e.g SEND_GUI_MOUSE_MOTION_EVENT(code_edit, Vector2(50, 50), MouseButton::MASK_LEFT, KeyModifierMask::CMD);
|
||||
// SEND_GUI_DOUBLE_CLICK - takes an object, position and modifiers. e.g SEND_GUI_DOUBLE_CLICK(code_edit, Vector2(50, 50), KeyModifierMask::CMD);
|
||||
// SEND_GUI_MOUSE_MOTION_EVENT - takes an object, position, mouse mask and modifiers e.g SEND_GUI_MOUSE_MOTION_EVENT(code_edit, Vector2(50, 50), MouseButton::MASK_LEFT, KeyModifierMask::META);
|
||||
// SEND_GUI_DOUBLE_CLICK - takes an object, position and modifiers. e.g SEND_GUI_DOUBLE_CLICK(code_edit, Vector2(50, 50), KeyModifierMask::META);
|
||||
|
||||
#define SEND_GUI_ACTION(m_object, m_action) \
|
||||
{ \
|
||||
|
@ -161,7 +161,6 @@ int register_test_command(String p_command, TestFunc p_function);
|
|||
m_event->set_shift_pressed(((m_modifers)&KeyModifierMask::SHIFT) != Key::NONE); \
|
||||
m_event->set_alt_pressed(((m_modifers)&KeyModifierMask::ALT) != Key::NONE); \
|
||||
m_event->set_ctrl_pressed(((m_modifers)&KeyModifierMask::CTRL) != Key::NONE); \
|
||||
m_event->set_command_pressed(((m_modifers)&KeyModifierMask::CMD) != Key::NONE); \
|
||||
m_event->set_meta_pressed(((m_modifers)&KeyModifierMask::META) != Key::NONE);
|
||||
|
||||
#define _CREATE_GUI_MOUSE_EVENT(m_object, m_local_pos, m_input, m_mask, m_modifers) \
|
||||
|
|
Loading…
Reference in New Issue