// Prevents additional console window on Windows in release, DO NOT REMOVE!! #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] use enigo::{Enigo, Key, KeyboardControllable, MouseControllable}; use std::thread; use std::time::Duration; use arboard::Clipboard; #[tauri::command] fn get_mouse_pos() -> String { let enigo = Enigo::new(); let (x, y) = enigo.mouse_location(); format!("{{ \"x\": {}, \"y\": {} }}", x, y).into() } #[tauri::command] fn type_str(input: String) { #[cfg(dev)] println!(">: {}", input); let mut enigo = Enigo::new(); let mut clipboard = Clipboard::new().unwrap(); // Load input into clipboard clipboard.set_text(input).unwrap(); // TODO: Set the Command/Alt key configured by user #[cfg(target_os = "macos")] { enigo.key_down(Key::Command); enigo.key_click(Key::Tab); enigo.key_up(Key::Command); } #[cfg(target_os = "windows")] { enigo.key_down(Key::Alt); enigo.key_click(Key::Tab); enigo.key_up(Key::Alt); } #[cfg(target_os = "linux")] { enigo.key_down(Key::Alt); enigo.key_click(Key::Tab); enigo.key_up(Key::Alt); } thread::sleep(Duration::from_millis(200)); #[cfg(target_os = "windows")]{ enigo.key_down(Key::Control); enigo.key_click(Key::Layout('v')); enigo.key_up(Key::Control); } #[cfg(target_os = "macos")]{ enigo.key_down(Key::Command); enigo.key_click(Key::Layout('v')); enigo.key_up(Key::Command); } #[cfg(target_os = "linux")]{ enigo.key_down(Key::Control); enigo.key_click(Key::Layout('v')); enigo.key_up(Key::Control); } thread::sleep(Duration::from_millis(20)); // Close program #[cfg(not(dev))] std::process::exit(0); } fn main() { tauri::Builder::default() .plugin(tauri_plugin_positioner::init()) .invoke_handler(tauri::generate_handler![type_str, get_mouse_pos]) .run(tauri::generate_context!()) .expect("error while running tauri application"); }