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;
}
}