Skip to content

Commit

Permalink
Implement macOS-specific key shortcuts for text input
Browse files Browse the repository at this point in the history
  • Loading branch information
rhysd committed Feb 12, 2025
1 parent 4bbb5cb commit f08fdba
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions widget/src/text_input.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1016,6 +1016,9 @@ where
}
}

#[cfg(target_os = "macos")]
let key = convert_macos_shortcut(key, modifiers);

match key.as_ref() {
keyboard::Key::Named(key::Named::Enter) => {
if let Some(on_submit) = self.on_submit.clone() {
Expand Down Expand Up @@ -1853,3 +1856,33 @@ fn alignment_offset(
}
}
}

#[cfg(target_os = "macos")]
fn convert_macos_shortcut(
key: &keyboard::Key,
modifiers: keyboard::Modifiers,
) -> &keyboard::Key {
let control =
modifiers.control() && !modifiers.alt() && !modifiers.command();
match key.as_ref() {
keyboard::Key::Character("b") if control => {
&keyboard::Key::Named(key::Named::ArrowLeft)
}
keyboard::Key::Character("f") if control => {
&keyboard::Key::Named(key::Named::ArrowRight)
}
keyboard::Key::Character("a") if control => {
&keyboard::Key::Named(key::Named::Home)
}
keyboard::Key::Character("e") if control => {
&keyboard::Key::Named(key::Named::End)
}
keyboard::Key::Character("h") if control => {
&keyboard::Key::Named(key::Named::Backspace)
}
keyboard::Key::Character("d") if control => {
&keyboard::Key::Named(key::Named::Delete)
}
_ => key,
}
}

0 comments on commit f08fdba

Please sign in to comment.