aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/client')
-rw-r--r--src/client/mod.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/client/mod.rs b/src/client/mod.rs
index 6a70c79c..da0e4e53 100644
--- a/src/client/mod.rs
+++ b/src/client/mod.rs
@@ -1354,6 +1354,10 @@ async fn run_client_loop(
.set_nonblocking(false)
.map_err(ClientError::ConnectionFailed)?;
+ // This (foreground) client owns the prefix ASCII input-source switch; a no-op on non-macOS.
+ use crate::platform::PrefixInputSource;
+ let mut prefix_input_source = crate::platform::RealPrefixInputSource::default();
+
// Main event loop.
while !should_quit.load(Ordering::Acquire) {
let event = tokio::select! {
@@ -1560,6 +1564,13 @@ async fn run_client_loop(
host_mouse_capture_active.store(desired, Ordering::Release);
}
}
+ ServerMessage::PrefixInputSource { active } => {
+ if active {
+ prefix_input_source.switch_to_ascii();
+ } else {
+ prefix_input_source.restore();
+ }
+ }
ServerMessage::Welcome { .. } => {
debug!("received unexpected Welcome in main loop");
}