Implement macOS-specific key shortcuts for text input
This commit implements some key shortcuts listed in the following list: https://support.apple.com/en-us/102650#:~:text=and%20iCloud%20Drive.-,Text%2Dediting%20shortcuts,-The%20behavior%20of
This commit is contained in:
parent
c12d59db4b
commit
587cd7c94f
1 changed files with 33 additions and 0 deletions
|
|
@ -1009,6 +1009,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() {
|
||||
|
|
@ -1783,3 +1786,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,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue