fixed hotkey

This commit is contained in:
pandadev 2024-07-17 13:33:21 +02:00
parent 0ee166a3c0
commit ad493fb44f
No known key found for this signature in database
GPG key ID: C39629DACB8E762F
3 changed files with 21 additions and 59 deletions

18
app.vue
View file

@ -265,24 +265,6 @@ onMounted(async () => {
if (!await isEnabled()) { if (!await isEnabled()) {
await enable() await enable()
} }
if (await isRegistered("MetaLeft+V")) {
await unregister("MetaLeft+V")
}
await register('MetaLeft+V', (event) => {
if (event.state === "MetaLeft+V") {
if (isVisible.value == true) {
app.hide()
isVisible.value = false;
} else {
app.show()
isVisible.value = true;
selectedItemIndex.value = 0;
}
}
});
}); });
const hideApp = async () => { const hideApp = async () => {

View file

@ -1,48 +1,28 @@
use rdev::{listen, EventType, Key}; use rdev::{listen, EventType, Key};
use std::sync::{Arc, Mutex, mpsc};
use tauri::Manager; use tauri::Manager;
pub fn setup(app_handle: tauri::AppHandle) { pub fn setup(app_handle: tauri::AppHandle) {
let (tx, rx) = mpsc::channel();
let meta_pressed = Arc::new(Mutex::new(false));
std::thread::spawn({
let meta_pressed = Arc::clone(&meta_pressed);
move || {
listen(move |event| {
match event.event_type {
EventType::KeyPress(Key::MetaLeft) | EventType::KeyPress(Key::MetaRight) => {
let mut meta = meta_pressed.lock().unwrap();
*meta = true;
tx.send(event).unwrap();
}
EventType::KeyRelease(Key::MetaLeft) | EventType::KeyRelease(Key::MetaRight) => {
let mut meta = meta_pressed.lock().unwrap();
*meta = false;
}
_ => {
tx.send(event).unwrap();
}
}
})
.unwrap();
}
});
std::thread::spawn(move || { std::thread::spawn(move || {
while let Ok(event) = rx.recv() { let mut meta_pressed = false;
let meta = meta_pressed.lock().unwrap(); listen(move |event| {
if *meta && matches!(event.event_type, EventType::KeyPress(Key::KeyV)) { match event.event_type {
println!("Meta and Key V pressed"); EventType::KeyPress(Key::MetaLeft) | EventType::KeyPress(Key::MetaRight) => {
let window = app_handle.get_webview_window("main").unwrap(); meta_pressed = true;
let is_visible = window.is_visible().unwrap();
if is_visible {
window.hide().unwrap();
} else {
window.show().unwrap();
window.set_focus().unwrap();
} }
EventType::KeyRelease(Key::MetaLeft) | EventType::KeyRelease(Key::MetaRight) => {
meta_pressed = false;
}
EventType::KeyPress(Key::KeyV) => {
if meta_pressed {
meta_pressed = false;
let window = app_handle.get_webview_window("main").unwrap();
window.show().unwrap();
window.set_focus().unwrap();
}
}
_ => {}
} }
} })
.unwrap();
}); });
} }