diff --git a/src/server/input_service.rs b/src/server/input_service.rs index 2093395c8..c01212184 100644 --- a/src/server/input_service.rs +++ b/src/server/input_service.rs @@ -683,6 +683,14 @@ fn legacy_keyboard_mode(evt: &KeyEvent) { let mut disable_numlock = false; #[cfg(target_os = "macos")] en.reset_flag(); + // When long-pressed the command key, then press and release + // the Tab key, there should be CGEventFlagCommand in the flag. + #[cfg(target_os = "macos")] + for ck in evt.modifiers.iter(){ + if let Some(key) = KEY_MAP.get(&ck.value()){ + en.add_flag(key); + } + } #[cfg(not(target_os = "macos"))] let mut to_release = Vec::new(); #[cfg(not(target_os = "macos"))] @@ -710,8 +718,6 @@ fn legacy_keyboard_mode(evt: &KeyEvent) { continue; } } - #[cfg(target_os = "macos")] - en.add_flag(key); #[cfg(not(target_os = "macos"))] { if key == &Key::CapsLock {