kbd: Fix Kdb to support display - key. (#1109)
This commit is contained in:
parent
efa2c7c9ef
commit
6c7a28c818
2 changed files with 65 additions and 67 deletions
|
|
@ -49,6 +49,8 @@ impl Render for KbdStory {
|
|||
.gap_2()
|
||||
.child(Kbd::new(Keystroke::parse("cmd-shift-p").unwrap()))
|
||||
.child(Kbd::new(Keystroke::parse("cmd-ctrl-t").unwrap()))
|
||||
.child(Kbd::new(Keystroke::parse("cmd--").unwrap()))
|
||||
.child(Kbd::new(Keystroke::parse("cmd-+").unwrap()))
|
||||
.child(Kbd::new(Keystroke::parse("escape").unwrap()))
|
||||
.child(Kbd::new(Keystroke::parse("backspace").unwrap()))
|
||||
.child(Kbd::new(Keystroke::parse("/").unwrap()))
|
||||
|
|
|
|||
|
|
@ -107,74 +107,68 @@ impl Kbd {
|
|||
}
|
||||
|
||||
let mut keys = String::new();
|
||||
|
||||
for key in key.key.split("-") {
|
||||
if parts.len() > 0 && keys.len() > 0 {
|
||||
keys.push_str(DIVIDER);
|
||||
}
|
||||
|
||||
match key {
|
||||
#[cfg(target_os = "macos")]
|
||||
"ctrl" => keys.push('⌃'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"ctrl" => keys.push_str("Ctrl"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"alt" => keys.push('⌥'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"alt" => keys.push_str("Alt"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"shift" => keys.push('⇧'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"shift" => keys.push_str("Shift"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"cmd" => keys.push('⌘'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"cmd" => keys.push_str("Win"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"space" => keys.push_str("Space"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"backspace" => keys.push('⌫'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"backspace" => keys.push_str("Backspace"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"delete" => keys.push('⌫'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"delete" => keys.push_str("Delete"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"escape" => keys.push('⎋'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"escape" => keys.push_str("Esc"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"enter" => keys.push('⏎'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"enter" => keys.push_str("Enter"),
|
||||
"pagedown" => keys.push_str("Page Down"),
|
||||
"pageup" => keys.push_str("Page Up"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"left" => keys.push('←'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"left" => keys.push_str("Left"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"right" => keys.push('→'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"right" => keys.push_str("Right"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"up" => keys.push('↑'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"up" => keys.push_str("Up"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"down" => keys.push('↓'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"down" => keys.push_str("Down"),
|
||||
_ => {
|
||||
if key.len() == 1 {
|
||||
keys.push_str(&key.to_uppercase());
|
||||
let key_str = key.key.as_str();
|
||||
match key_str {
|
||||
#[cfg(target_os = "macos")]
|
||||
"ctrl" => keys.push('⌃'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"ctrl" => keys.push_str("Ctrl"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"alt" => keys.push('⌥'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"alt" => keys.push_str("Alt"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"shift" => keys.push('⇧'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"shift" => keys.push_str("Shift"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"cmd" => keys.push('⌘'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"cmd" => keys.push_str("Win"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"space" => keys.push_str("Space"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"backspace" => keys.push('⌫'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"backspace" => keys.push_str("Backspace"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"delete" => keys.push('⌫'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"delete" => keys.push_str("Delete"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"escape" => keys.push('⎋'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"escape" => keys.push_str("Esc"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"enter" => keys.push('⏎'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"enter" => keys.push_str("Enter"),
|
||||
"pagedown" => keys.push_str("Page Down"),
|
||||
"pageup" => keys.push_str("Page Up"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"left" => keys.push('←'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"left" => keys.push_str("Left"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"right" => keys.push('→'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"right" => keys.push_str("Right"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"up" => keys.push('↑'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"up" => keys.push_str("Up"),
|
||||
#[cfg(target_os = "macos")]
|
||||
"down" => keys.push('↓'),
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
"down" => keys.push_str("Down"),
|
||||
_ => {
|
||||
if key_str.len() == 1 {
|
||||
keys.push_str(&key_str.to_uppercase());
|
||||
} else {
|
||||
if let Some(first_char) = key_str.chars().next() {
|
||||
keys.push_str(&format!("{}{}", first_char.to_uppercase(), &key_str[1..]));
|
||||
} else {
|
||||
if let Some(first_char) = key.chars().next() {
|
||||
keys.push_str(&format!("{}{}", first_char.to_uppercase(), &key[1..]));
|
||||
} else {
|
||||
keys.push_str(&key);
|
||||
}
|
||||
keys.push_str(&key_str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -224,6 +218,8 @@ mod tests {
|
|||
|
||||
if cfg!(target_os = "macos") {
|
||||
assert_eq!(Kbd::format(&Keystroke::parse("cmd-a").unwrap()), "⌘A");
|
||||
assert_eq!(Kbd::format(&Keystroke::parse("cmd--").unwrap()), "⌘-");
|
||||
assert_eq!(Kbd::format(&Keystroke::parse("cmd-+").unwrap()), "⌘+");
|
||||
assert_eq!(Kbd::format(&Keystroke::parse("cmd-enter").unwrap()), "⌘⏎");
|
||||
assert_eq!(
|
||||
Kbd::format(&Keystroke::parse("secondary-f12").unwrap()),
|
||||
|
|
|
|||
Loading…
Reference in a new issue