From 194e1206b4e212a1a5ae736d47d26919f8e2fc55 Mon Sep 17 00:00:00 2001 From: fufesou Date: Mon, 12 Dec 2022 21:45:46 +0800 Subject: [PATCH 1/2] fix macos mmatch Signed-off-by: fufesou --- src/keyboard.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/keyboard.rs b/src/keyboard.rs index b2e19ac73..5159eae80 100644 --- a/src/keyboard.rs +++ b/src/keyboard.rs @@ -7,7 +7,9 @@ use crate::flutter::FlutterHandler; use crate::ui::remote::SciterHandler; use crate::ui_session_interface::Session; use hbb_common::{log, message_proto::*}; -use rdev::{Event, EventType, Key, GrabError}; +#[cfg(target_os = "linux")] +use rdev::GrabError; +use rdev::{Event, EventType, Key}; use std::{ collections::{HashMap, HashSet}, sync::{ @@ -594,7 +596,8 @@ pub fn legacy_keyboard_mode(event: &Event, key_event: &mut KeyEvent) { } pub fn map_keyboard_mode(event: &Event, key_event: &mut KeyEvent) { - let peer = get_peer_platform(); + let mut peer = get_peer_platform().to_lowercase(); + peer.retain(|c| !c.is_whitespace()); let key = match event.event_type { EventType::KeyPress(key) => { @@ -608,8 +611,8 @@ pub fn map_keyboard_mode(event: &Event, key_event: &mut KeyEvent) { _ => return, }; let keycode: u32 = match peer.as_str() { - "Windows" => rdev::win_keycode_from_key(key).unwrap_or_default().into(), - "MacOS" => rdev::macos_keycode_from_key(key).unwrap_or_default().into(), + "windows" => rdev::win_keycode_from_key(key).unwrap_or_default().into(), + "macos" => rdev::macos_keycode_from_key(key).unwrap_or_default().into(), _ => rdev::linux_keycode_from_key(key).unwrap_or_default().into(), }; key_event.set_chr(keycode); From 98e085419c5d9d693958029454890a33b10102e7 Mon Sep 17 00:00:00 2001 From: fufesou Date: Mon, 12 Dec 2022 21:46:58 +0800 Subject: [PATCH 2/2] move rdev grab from main page to remote page Signed-off-by: fufesou --- flutter/lib/desktop/pages/desktop_home_page.dart | 1 - flutter/lib/desktop/screen/desktop_remote_screen.dart | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/flutter/lib/desktop/pages/desktop_home_page.dart b/flutter/lib/desktop/pages/desktop_home_page.dart index e0cb5a676..1e8512b2e 100644 --- a/flutter/lib/desktop/pages/desktop_home_page.dart +++ b/flutter/lib/desktop/pages/desktop_home_page.dart @@ -438,7 +438,6 @@ class _DesktopHomePageState extends State @override void initState() { super.initState(); - bind.mainStartGrabKeyboard(); _updateTimer = periodic_immediate(const Duration(seconds: 1), () async { await gFFI.serverModel.fetchID(); final url = await bind.mainGetSoftwareUpdateUrl(); diff --git a/flutter/lib/desktop/screen/desktop_remote_screen.dart b/flutter/lib/desktop/screen/desktop_remote_screen.dart index 57886b2f2..e8361a652 100644 --- a/flutter/lib/desktop/screen/desktop_remote_screen.dart +++ b/flutter/lib/desktop/screen/desktop_remote_screen.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_hbb/common.dart'; import 'package:flutter_hbb/desktop/pages/remote_tab_page.dart'; +import 'package:flutter_hbb/models/platform_model.dart'; import 'package:flutter_hbb/desktop/widgets/refresh_wrapper.dart'; import 'package:provider/provider.dart'; @@ -8,7 +9,9 @@ import 'package:provider/provider.dart'; class DesktopRemoteScreen extends StatelessWidget { final Map params; - const DesktopRemoteScreen({Key? key, required this.params}) : super(key: key); + DesktopRemoteScreen({Key? key, required this.params}) : super(key: key) { + bind.mainStartGrabKeyboard(); + } @override Widget build(BuildContext context) {