diff --git a/sources/Google.Solutions.IapDesktop.Application/Views/DocumentWindow.cs b/sources/Google.Solutions.IapDesktop.Application/Views/DocumentWindow.cs
index 305080366..0037ac1bf 100644
--- a/sources/Google.Solutions.IapDesktop.Application/Views/DocumentWindow.cs
+++ b/sources/Google.Solutions.IapDesktop.Application/Views/DocumentWindow.cs
@@ -40,6 +40,17 @@ public class DocumentWindow : ToolWindow
/// back to main window.
///
public const Keys ToggleFocusHotKey = Keys.Control | Keys.Alt | Keys.Home;
+
+ ///
+ /// Hotkey to enter full-screen.
+ ///
+ public const Keys EnterFullScreenHotKey = Keys.F11;
+
+ ///
+ /// Hotkey to leave full-screen.
+ ///
+ public const Keys LeaveFullScreenHotKey = Keys.Control | Keys.Alt | Keys.F11;
+
//
// Full screen form -- created lazily. There can only be one window
diff --git a/sources/Google.Solutions.IapDesktop.Extensions.Shell/Services/ShellExtension.cs b/sources/Google.Solutions.IapDesktop.Extensions.Shell/Services/ShellExtension.cs
index 695f15462..ed8307396 100644
--- a/sources/Google.Solutions.IapDesktop.Extensions.Shell/Services/ShellExtension.cs
+++ b/sources/Google.Solutions.IapDesktop.Extensions.Shell/Services/ShellExtension.cs
@@ -371,7 +371,7 @@ public ShellExtension(IServiceProvider serviceProvider)
_ => DoWithActiveRemoteDesktopSession(session => session.TrySetFullscreen(FullScreenMode.SingleScreen)))
{
Image = Resources.Fullscreen_16,
- ShortcutKeys = Keys.F11
+ ShortcutKeys = DocumentWindow.EnterFullScreenHotKey
});
desktopMenu.AddCommand(
new Command(
diff --git a/sources/Google.Solutions.IapDesktop.Extensions.Shell/Views/RemoteDesktop/RemoteDesktopPane.cs b/sources/Google.Solutions.IapDesktop.Extensions.Shell/Views/RemoteDesktop/RemoteDesktopPane.cs
index a00941bca..7f64810cb 100644
--- a/sources/Google.Solutions.IapDesktop.Extensions.Shell/Views/RemoteDesktop/RemoteDesktopPane.cs
+++ b/sources/Google.Solutions.IapDesktop.Extensions.Shell/Views/RemoteDesktop/RemoteDesktopPane.cs
@@ -366,7 +366,7 @@ InstanceConnectionSettings settings
// the same as the main window uses to move the focus to the
// control.
//
- // NB. The Ctrl+Alt are implied by the HotKeyFocusRelease properties.
+ // NB. The Ctrl+Alt modifiers are implied by the HotKeyFocusRelease properties.
//
Debug.Assert(ToggleFocusHotKey.HasFlag(Keys.Control));
Debug.Assert(ToggleFocusHotKey.HasFlag(Keys.Alt));
@@ -375,6 +375,15 @@ InstanceConnectionSettings settings
advancedSettings.HotKeyFocusReleaseLeft = focusReleaseVirtualKey;
advancedSettings.HotKeyFocusReleaseRight = focusReleaseVirtualKey;
+ //
+ // NB. The Ctrl+Alt modifiers are implied by the HotKeyFullScreen properties.
+ //
+ Debug.Assert(LeaveFullScreenHotKey.HasFlag(Keys.Control));
+ Debug.Assert(LeaveFullScreenHotKey.HasFlag(Keys.Alt));
+ var leaveFullScreenVirtualKey = (int)(LeaveFullScreenHotKey & ~(Keys.Control | Keys.Alt));
+
+ advancedSettings.HotKeyFullScreen = (int)leaveFullScreenVirtualKey;
+
this.connecting = true;
this.rdpClient.Connect();
}