From c68ce7dd84db405b93b5fa411a5e033b71ef75d2 Mon Sep 17 00:00:00 2001 From: fufesou <13586388+fufesou@users.noreply.github.com> Date: Tue, 27 Aug 2024 00:00:33 +0800 Subject: [PATCH] fix: web v2, keyboard mode (#9180) Signed-off-by: fufesou --- flutter/lib/desktop/widgets/remote_toolbar.dart | 4 +++- flutter/lib/models/input_model.dart | 4 ++-- flutter/lib/web/bridge.dart | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) 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}) {