mirror of
https://github.com/Astatin3/raylock.git
synced 2026-06-09 00:28:00 -06:00
Code
This commit is contained in:
+235
@@ -0,0 +1,235 @@
|
||||
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(),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user