diff --git a/src/ui/remote.rs b/src/ui/remote.rs
index ac32726aa..b4881954b 100644
--- a/src/ui/remote.rs
+++ b/src/ui/remote.rs
@@ -1,7 +1,10 @@
 use std::{
     collections::HashMap,
     ops::Deref,
-    sync::{Arc, Mutex, RwLock},
+    sync::{
+        atomic::{AtomicBool, Ordering},
+        Arc, Mutex, RwLock,
+    },
 };
 
 use sciter::{
@@ -64,7 +67,7 @@ fn get_key_state(key: enigo::Key) -> bool {
 }
 
 static mut IS_IN: bool = false;
-static mut KEYBOARD_HOOKED: bool = false;
+static KEYBOARD_HOOKED: AtomicBool = AtomicBool::new(false);
 static mut SERVER_KEYBOARD_ENABLED: bool = true;
 static mut SERVER_FILE_TRANSFER_ENABLED: bool = true;
 static mut SERVER_CLIPBOARD_ENABLED: bool = true;
@@ -249,12 +252,9 @@ impl Handler {
         if self.is_port_forward() || self.is_file_transfer() {
             return;
         }
-        if unsafe { KEYBOARD_HOOKED } {
+        if KEYBOARD_HOOKED.swap(true, Ordering::SeqCst) {
             return;
         }
-        unsafe {
-            KEYBOARD_HOOKED = true;
-        }
         log::info!("keyboard hooked");
         let mut me = self.clone();
         let peer = self.peer_platform();