2024-10-30 19:49:27 -06:00
|
|
|
use egui::Key;
|
2024-10-31 19:55:02 -06:00
|
|
|
use std::fs::File;
|
2024-10-31 10:42:53 -06:00
|
|
|
use std::path::Path;
|
2024-10-30 19:49:27 -06:00
|
|
|
use std::process::Command;
|
|
|
|
|
use std::thread;
|
|
|
|
|
|
2024-10-31 10:42:53 -06:00
|
|
|
const LOCK_FILEPATH: &str = "/tmp/.raylock.lock";
|
|
|
|
|
|
2024-10-30 19:49:27 -06:00
|
|
|
pub fn sway_lock_input() {
|
|
|
|
|
thread::spawn(move || {
|
|
|
|
|
let _ = Command::new("swaymsg").args(["mode", "lock"]).spawn();
|
2024-10-31 19:55:02 -06:00
|
|
|
// let _ = Command::new("swaymsg")
|
|
|
|
|
// .args(["input", "type:touchpad", "events", "disabled"])
|
|
|
|
|
// .spawn();
|
2024-10-30 19:49:27 -06:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn sway_unlock_input() {
|
|
|
|
|
thread::spawn(move || {
|
|
|
|
|
let _ = Command::new("swaymsg").args(["mode", "default"]).spawn();
|
2024-10-31 19:55:02 -06:00
|
|
|
// let _ = Command::new("swaymsg")
|
|
|
|
|
// .args(["input", "type:touchpad", "events", "enabled"])
|
|
|
|
|
// .spawn();
|
2024-10-30 19:49:27 -06:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2024-10-31 10:42:53 -06:00
|
|
|
pub fn create_lock() {
|
|
|
|
|
let _ = File::create(LOCK_FILEPATH).unwrap();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn is_locked() -> bool {
|
|
|
|
|
Path::exists(Path::new(LOCK_FILEPATH))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub fn remove_lock() {
|
|
|
|
|
if !is_locked() {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::fs::remove_file(Path::new(LOCK_FILEPATH));
|
|
|
|
|
}
|
|
|
|
|
|
2024-10-30 19:49:27 -06:00
|
|
|
pub fn format_key(key: Key, shift_pressed: bool) -> String {
|
|
|
|
|
match key {
|
|
|
|
|
// Letters
|
|
|
|
|
Key::A
|
|
|
|
|
| Key::B
|
|
|
|
|
| Key::C
|
|
|
|
|
| Key::D
|
|
|
|
|
| Key::E
|
|
|
|
|
| Key::F
|
|
|
|
|
| Key::G
|
|
|
|
|
| Key::H
|
|
|
|
|
| Key::I
|
|
|
|
|
| Key::J
|
|
|
|
|
| Key::K
|
|
|
|
|
| Key::L
|
|
|
|
|
| Key::M
|
|
|
|
|
| Key::N
|
|
|
|
|
| Key::O
|
|
|
|
|
| Key::P
|
|
|
|
|
| Key::Q
|
|
|
|
|
| Key::R
|
|
|
|
|
| Key::S
|
|
|
|
|
| Key::T
|
|
|
|
|
| Key::U
|
|
|
|
|
| Key::V
|
|
|
|
|
| Key::W
|
|
|
|
|
| Key::X
|
|
|
|
|
| Key::Y
|
|
|
|
|
| Key::Z => {
|
|
|
|
|
let base_char = (key as u8 - Key::A as u8 + b'a') as char;
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
base_char.to_uppercase().to_string()
|
|
|
|
|
} else {
|
|
|
|
|
base_char.to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Numbers and their shift symbols
|
|
|
|
|
Key::Num0 => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
")".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"0".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Num1 => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"!".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"1".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Num2 => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"@".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"2".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Num3 => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"#".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"3".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Num4 => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"$".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"4".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Num5 => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"%".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"5".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Num6 => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"^".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"6".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Num7 => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"&".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"7".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Num8 => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"*".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"8".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Num9 => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"(".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"9".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Special characters
|
|
|
|
|
Key::Space => " ".to_string(),
|
|
|
|
|
// Key::Tab => "Tab".to_string(),
|
|
|
|
|
// Key::Enter => "Enter".to_string(),
|
|
|
|
|
// Key::Backspace => "Backspace".to_string(),
|
|
|
|
|
// Key::Escape => "Esc".to_string(),
|
|
|
|
|
// Key::Delete => "Del".to_string(),
|
|
|
|
|
|
|
|
|
|
// Arrow keys
|
|
|
|
|
// Key::ArrowLeft => "←".to_string(),
|
|
|
|
|
// Key::ArrowRight => "→".to_string(),
|
|
|
|
|
// Key::ArrowUp => "↑".to_string(),
|
|
|
|
|
// Key::ArrowDown => "↓".to_string(),
|
|
|
|
|
|
|
|
|
|
// Punctuation and symbols
|
|
|
|
|
Key::Minus => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"_".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"-".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Equals => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"+".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"=".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::OpenBracket => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"{".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"[".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::CloseBracket => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"}".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"]".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Backslash => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"|".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"\\".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Semicolon => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
":".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
";".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Quote => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"\"".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"'".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Comma => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"<".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
",".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Period => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
">".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
".".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Slash => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"?".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"/".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Key::Backtick => {
|
|
|
|
|
if shift_pressed {
|
|
|
|
|
"~".to_string()
|
|
|
|
|
} else {
|
|
|
|
|
"`".to_string()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Function keys
|
|
|
|
|
// Key::F1..=Key::F12 => format!("F{}", (key as u8 - Key::F1 as u8 + 1)),
|
|
|
|
|
|
|
|
|
|
// Modifier keys
|
|
|
|
|
// Key::Control => "Ctrl".to_string(),
|
|
|
|
|
// Key::Alt => "Alt".to_string(),
|
|
|
|
|
// Key::Shift => "Shift".to_string(),
|
|
|
|
|
// Key::Insert => "Insert".to_string(),
|
|
|
|
|
// Key::Home => "Home".to_string(),
|
|
|
|
|
// Key::End => "End".to_string(),
|
|
|
|
|
// Key::PageUp => "PgUp".to_string(),
|
|
|
|
|
// Key::PageDown => "PgDn".to_string(),
|
|
|
|
|
|
|
|
|
|
// Catch any other keys
|
|
|
|
|
_ => "".to_string(),
|
|
|
|
|
}
|
|
|
|
|
}
|