add first implementation of circle keyboard and better switching of keyboards
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
use enigo::{Direction::Click, Enigo, Key, Keyboard, Settings};
|
||||
use enigo::{Direction, Enigo, Key, Keyboard, Settings};
|
||||
#[cfg(target_os = "linux")]
|
||||
use std::ptr;
|
||||
use tauri::Manager;
|
||||
@@ -6,8 +6,8 @@ use tauri::Manager;
|
||||
// Learn more about Tauri commands at https://tauri.app/develop/calling-rust/
|
||||
#[tauri::command]
|
||||
fn greet(name: &str) -> String {
|
||||
let mut enigo = Enigo::new(&Settings::default()).unwrap();
|
||||
enigo.key(Key::Unicode('a'), Click);
|
||||
// let mut enigo = Enigo::new(&Settings::default()).unwrap();
|
||||
// enigo.key(Key::Unicode('a'), Click);
|
||||
format!("Hello, {}! You've been greeted from Rust!", name)
|
||||
}
|
||||
|
||||
@@ -16,17 +16,30 @@ fn send_key(key: String) -> Result<(), String> {
|
||||
let mut enigo = Enigo::new(&Settings::default()).map_err(|e| format!("Enigo error: {}", e))?;
|
||||
|
||||
if key.len() == 1 {
|
||||
// Single letter (a-z, A-Z)
|
||||
enigo.key(Key::Unicode(key.chars().next().unwrap()), Click)
|
||||
.map_err(|e| format!("Key error: {}", e))?;
|
||||
let ch = key.chars().next().unwrap();
|
||||
|
||||
// Check if uppercase letter
|
||||
if ch.is_uppercase() && ch.is_alphabetic() {
|
||||
// Send Shift + lowercase letter
|
||||
enigo.key(Key::Shift, Direction::Press)
|
||||
.map_err(|e| format!("Shift press error: {}", e))?;
|
||||
enigo.key(Key::Unicode(ch.to_lowercase().next().unwrap()), Direction::Click)
|
||||
.map_err(|e| format!("Key error: {}", e))?;
|
||||
enigo.key(Key::Shift, Direction::Release)
|
||||
.map_err(|e| format!("Shift release error: {}", e))?;
|
||||
} else {
|
||||
// Send character as-is (lowercase or non-letter)
|
||||
enigo.key(Key::Unicode(ch), Direction::Click)
|
||||
.map_err(|e| format!("Key error: {}", e))?;
|
||||
}
|
||||
} else {
|
||||
// Special keys
|
||||
match key.as_str() {
|
||||
"Enter" => enigo.key(Key::Return, Click)
|
||||
"Enter" => enigo.key(Key::Return, Direction::Click)
|
||||
.map_err(|e| format!("Key error: {}", e))?,
|
||||
"Space" => enigo.key(Key::Space, Click)
|
||||
"Space" => enigo.key(Key::Space, Direction::Click)
|
||||
.map_err(|e| format!("Key error: {}", e))?,
|
||||
"Backspace" => enigo.key(Key::Backspace, Click)
|
||||
"Backspace" => enigo.key(Key::Backspace, Direction::Click)
|
||||
.map_err(|e| format!("Key error: {}", e))?,
|
||||
_ => return Err("Unknown key".to_string()),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user