mirror of
https://github.com/Astatin3/raylock.git
synced 2026-06-09 00:28:00 -06:00
236 lines
5.6 KiB
Rust
236 lines
5.6 KiB
Rust
|
|
use egui::Key;
|
||
|
|
use std::process::Command;
|
||
|
|
use std::thread;
|
||
|
|
|
||
|
|
pub fn sway_lock_input() {
|
||
|
|
thread::spawn(move || {
|
||
|
|
let _ = Command::new("swaymsg").args(["mode", "lock"]).spawn();
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn sway_unlock_input() {
|
||
|
|
thread::spawn(move || {
|
||
|
|
let _ = Command::new("swaymsg").args(["mode", "default"]).spawn();
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
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(),
|
||
|
|
}
|
||
|
|
}
|