keyboard.rs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. use std::{fmt, slice::Iter, str::FromStr};
  2. use crate::protos::message::KeyboardMode;
  3. impl fmt::Display for KeyboardMode {
  4. fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
  5. match self {
  6. KeyboardMode::Legacy => write!(f, "legacy"),
  7. KeyboardMode::Map => write!(f, "map"),
  8. KeyboardMode::Translate => write!(f, "translate"),
  9. KeyboardMode::Auto => write!(f, "auto"),
  10. }
  11. }
  12. }
  13. impl FromStr for KeyboardMode {
  14. type Err = ();
  15. fn from_str(s: &str) -> Result<Self, Self::Err> {
  16. match s {
  17. "legacy" => Ok(KeyboardMode::Legacy),
  18. "map" => Ok(KeyboardMode::Map),
  19. "translate" => Ok(KeyboardMode::Translate),
  20. "auto" => Ok(KeyboardMode::Auto),
  21. _ => Err(()),
  22. }
  23. }
  24. }
  25. impl KeyboardMode {
  26. pub fn iter() -> Iter<'static, KeyboardMode> {
  27. static KEYBOARD_MODES: [KeyboardMode; 4] = [
  28. KeyboardMode::Legacy,
  29. KeyboardMode::Map,
  30. KeyboardMode::Translate,
  31. KeyboardMode::Auto,
  32. ];
  33. KEYBOARD_MODES.iter()
  34. }
  35. }