diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml index 389d65e05a0..33ec98ca0a5 100644 --- a/doc/classes/EditorSettings.xml +++ b/doc/classes/EditorSettings.xml @@ -344,7 +344,7 @@ If [code]true[/code], enables 3-button mouse emulation mode. This is useful on laptops when using a trackpad. - When 3-button mouse emulation mode is enabled, the pan, zoom and orbit modifiers can always be used in the 3D editor viewport, even when not holding down any mouse button. + When 3-button mouse emulation mode is enabled, the pan, zoom and orbit modifiers can be used in the 3D editor viewport when holding [kbd]Alt[/kbd], even when not holding down any mouse button. If [code]true[/code], allows using the top row [kbd]0[/kbd]-[kbd]9[/kbd] keys to function as their equivalent numpad keys for 3D editor navigation. This should be enabled on keyboards that have no numeric keypad available. diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp index 55649a31dc8..d8eb2656252 100644 --- a/editor/plugins/node_3d_editor_plugin.cpp +++ b/editor/plugins/node_3d_editor_plugin.cpp @@ -2124,9 +2124,16 @@ void Node3DEditorViewport::_sinput(const Ref &p_event) { } else if (EDITOR_GET("editors/3d/navigation/emulate_3_button_mouse")) { // Handle trackpad (no external mouse) use case - NavigationMode change_nav_from_shortcut = _get_nav_mode_from_shortcut_check(NAVIGATION_LEFT_MOUSE, shortcut_check_sets, true); - if (change_nav_from_shortcut != NAVIGATION_NONE) { - nav_mode = change_nav_from_shortcut; + // Check if the Alt key is pressed. + if (Input::get_singleton()->is_key_pressed(Key::ALT)) { + // Emulate the middle mouse button (Mouse3) with Alt for orbiting. + NavigationMode change_nav_from_shortcut = _get_nav_mode_from_shortcut_check(NAVIGATION_LEFT_MOUSE, shortcut_check_sets, true); + if (change_nav_from_shortcut != NAVIGATION_NONE) { + nav_mode = change_nav_from_shortcut; + } + } else { + // Regular behavior when Alt is not pressed, fallback to no navigation (NAVIGATION_NONE). + nav_mode = NAVIGATION_NONE; } }