diff --git a/flutter/lib/desktop/widgets/remote_toolbar.dart b/flutter/lib/desktop/widgets/remote_toolbar.dart index 98fa67614..af177f840 100644 --- a/flutter/lib/desktop/widgets/remote_toolbar.dart +++ b/flutter/lib/desktop/widgets/remote_toolbar.dart @@ -1612,7 +1612,9 @@ class _KeyboardMenu extends StatelessWidget { // If use flutter to grab keys, we can only use one mode. // Map mode and Legacy mode, at least one of them is supported. String? modeOnly; - if (isInputSourceFlutter) { + // Keep both map and legacy mode on web at the moment. + // TODO: Remove legacy mode after web supports translate mode on web. + if (isInputSourceFlutter && isDesktop) { if (bind.sessionIsKeyboardModeSupported( sessionId: ffi.sessionId, mode: kKeyMapMode)) { modeOnly = kKeyMapMode; diff --git a/flutter/lib/models/input_model.dart b/flutter/lib/models/input_model.dart index 54e7a3f4d..4cdbf88e5 100644 --- a/flutter/lib/models/input_model.dart +++ b/flutter/lib/models/input_model.dart @@ -508,7 +508,7 @@ class InputModel { } // * Currently mobile does not enable map mode - if ((isDesktop || isWebDesktop) && keyboardMode == 'map') { + if ((isDesktop || isWebDesktop) && keyboardMode == kKeyMapMode) { mapKeyboardModeRaw(e); } else { legacyKeyboardModeRaw(e); @@ -537,7 +537,7 @@ class InputModel { } // * Currently mobile does not enable map mode - if ((isDesktop || isWebDesktop)) { + if ((isDesktop || isWebDesktop) && keyboardMode == kKeyMapMode) { // FIXME: e.character is wrong for dead keys, eg: ^ in de newKeyboardMode( e.character ?? '', diff --git a/flutter/lib/web/bridge.dart b/flutter/lib/web/bridge.dart index 8327bdd0a..3aa65a5be 100644 --- a/flutter/lib/web/bridge.dart +++ b/flutter/lib/web/bridge.dart @@ -351,7 +351,7 @@ class RustdeskImpl { bool sessionIsKeyboardModeSupported( {required UuidValue sessionId, required String mode, dynamic hint}) { - return mode == kKeyLegacyMode; + return [kKeyLegacyMode, kKeyMapMode].contains(mode); } bool sessionIsMultiUiSession({required UuidValue sessionId, dynamic hint}) {