From 2446f7320f04f52bc7e0f32d97f9a930f9b468a4 Mon Sep 17 00:00:00 2001 From: pandadev <70103896+0PandaDEV@users.noreply.github.com> Date: Fri, 5 Jul 2024 18:44:14 +0200 Subject: [PATCH] better hotkey handeling --- src-tauri/src/hotkeys.rs | 53 +++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/src-tauri/src/hotkeys.rs b/src-tauri/src/hotkeys.rs index 2384bb2..c5624ee 100644 --- a/src-tauri/src/hotkeys.rs +++ b/src-tauri/src/hotkeys.rs @@ -6,24 +6,43 @@ pub fn setup(app_handle: tauri::AppHandle) { let (tx, rx) = mpsc::channel(); std::thread::spawn(move || { - listen(move |event| match event.event_type { - EventType::KeyPress(Key::MetaLeft | Key::MetaRight) => { - let _ = tx.send(true); - } - EventType::KeyRelease(Key::KeyV) => { - if rx.try_recv().is_ok() { - let window = app_handle.get_window("main").unwrap(); - let is_visible = window.is_visible().unwrap(); - if is_visible { - window.hide().unwrap(); - } else { - window.show().unwrap(); - window.set_focus().unwrap(); - } - } - } - _ => {} + listen(move |event| { + tx.send(event).unwrap(); }) .unwrap(); }); + + std::thread::spawn(move || { + let mut meta_pressed = false; + + while let Ok(event) = rx.recv() { + match event.event_type { + EventType::KeyPress(Key::MetaLeft) | EventType::KeyPress(Key::MetaRight) => { + meta_pressed = true; + println!("Meta key pressed"); + } + EventType::KeyRelease(Key::MetaLeft) | EventType::KeyRelease(Key::MetaRight) => { + meta_pressed = false; + println!("Meta key released"); + } + EventType::KeyPress(Key::KeyV) => { + println!("V key pressed"); + if meta_pressed { + println!("Meta+V detected"); + let window = app_handle.get_window("main").unwrap(); + let is_visible = window.is_visible().unwrap(); + if is_visible { + println!("Hiding window"); + window.hide().unwrap(); + } else { + println!("Showing window"); + window.show().unwrap(); + window.set_focus().unwrap(); + } + } + } + _ => {} + } + } + }); }