|
|
@ -36,7 +36,6 @@ pub(crate) mod keys {
|
|
|
|
pub(crate) const PAGEUP: &str = "pageup";
|
|
|
|
pub(crate) const PAGEUP: &str = "pageup";
|
|
|
|
pub(crate) const PAGEDOWN: &str = "pagedown";
|
|
|
|
pub(crate) const PAGEDOWN: &str = "pagedown";
|
|
|
|
pub(crate) const TAB: &str = "tab";
|
|
|
|
pub(crate) const TAB: &str = "tab";
|
|
|
|
pub(crate) const BACKTAB: &str = "backtab";
|
|
|
|
|
|
|
|
pub(crate) const DELETE: &str = "del";
|
|
|
|
pub(crate) const DELETE: &str = "del";
|
|
|
|
pub(crate) const INSERT: &str = "ins";
|
|
|
|
pub(crate) const INSERT: &str = "ins";
|
|
|
|
pub(crate) const NULL: &str = "null";
|
|
|
|
pub(crate) const NULL: &str = "null";
|
|
|
@ -82,7 +81,6 @@ impl fmt::Display for KeyEvent {
|
|
|
|
KeyCode::PageUp => f.write_str(keys::PAGEUP)?,
|
|
|
|
KeyCode::PageUp => f.write_str(keys::PAGEUP)?,
|
|
|
|
KeyCode::PageDown => f.write_str(keys::PAGEDOWN)?,
|
|
|
|
KeyCode::PageDown => f.write_str(keys::PAGEDOWN)?,
|
|
|
|
KeyCode::Tab => f.write_str(keys::TAB)?,
|
|
|
|
KeyCode::Tab => f.write_str(keys::TAB)?,
|
|
|
|
KeyCode::BackTab => f.write_str(keys::BACKTAB)?,
|
|
|
|
|
|
|
|
KeyCode::Delete => f.write_str(keys::DELETE)?,
|
|
|
|
KeyCode::Delete => f.write_str(keys::DELETE)?,
|
|
|
|
KeyCode::Insert => f.write_str(keys::INSERT)?,
|
|
|
|
KeyCode::Insert => f.write_str(keys::INSERT)?,
|
|
|
|
KeyCode::Null => f.write_str(keys::NULL)?,
|
|
|
|
KeyCode::Null => f.write_str(keys::NULL)?,
|
|
|
@ -116,7 +114,6 @@ impl UnicodeWidthStr for KeyEvent {
|
|
|
|
KeyCode::PageUp => keys::PAGEUP.len(),
|
|
|
|
KeyCode::PageUp => keys::PAGEUP.len(),
|
|
|
|
KeyCode::PageDown => keys::PAGEDOWN.len(),
|
|
|
|
KeyCode::PageDown => keys::PAGEDOWN.len(),
|
|
|
|
KeyCode::Tab => keys::TAB.len(),
|
|
|
|
KeyCode::Tab => keys::TAB.len(),
|
|
|
|
KeyCode::BackTab => keys::BACKTAB.len(),
|
|
|
|
|
|
|
|
KeyCode::Delete => keys::DELETE.len(),
|
|
|
|
KeyCode::Delete => keys::DELETE.len(),
|
|
|
|
KeyCode::Insert => keys::INSERT.len(),
|
|
|
|
KeyCode::Insert => keys::INSERT.len(),
|
|
|
|
KeyCode::Null => keys::NULL.len(),
|
|
|
|
KeyCode::Null => keys::NULL.len(),
|
|
|
@ -166,7 +163,6 @@ impl std::str::FromStr for KeyEvent {
|
|
|
|
keys::PAGEUP => KeyCode::PageUp,
|
|
|
|
keys::PAGEUP => KeyCode::PageUp,
|
|
|
|
keys::PAGEDOWN => KeyCode::PageDown,
|
|
|
|
keys::PAGEDOWN => KeyCode::PageDown,
|
|
|
|
keys::TAB => KeyCode::Tab,
|
|
|
|
keys::TAB => KeyCode::Tab,
|
|
|
|
keys::BACKTAB => KeyCode::BackTab,
|
|
|
|
|
|
|
|
keys::DELETE => KeyCode::Delete,
|
|
|
|
keys::DELETE => KeyCode::Delete,
|
|
|
|
keys::INSERT => KeyCode::Insert,
|
|
|
|
keys::INSERT => KeyCode::Insert,
|
|
|
|
keys::NULL => KeyCode::Null,
|
|
|
|
keys::NULL => KeyCode::Null,
|
|
|
@ -220,14 +216,22 @@ impl<'de> Deserialize<'de> for KeyEvent {
|
|
|
|
|
|
|
|
|
|
|
|
#[cfg(feature = "term")]
|
|
|
|
#[cfg(feature = "term")]
|
|
|
|
impl From<crossterm::event::KeyEvent> for KeyEvent {
|
|
|
|
impl From<crossterm::event::KeyEvent> for KeyEvent {
|
|
|
|
fn from(
|
|
|
|
fn from(crossterm::event::KeyEvent { code, modifiers }: crossterm::event::KeyEvent) -> Self {
|
|
|
|
crossterm::event::KeyEvent { code, modifiers }: crossterm::event::KeyEvent,
|
|
|
|
if code == crossterm::event::KeyCode::BackTab {
|
|
|
|
) -> KeyEvent {
|
|
|
|
// special case for BackTab -> Shift-Tab
|
|
|
|
KeyEvent {
|
|
|
|
let mut modifiers: KeyModifiers = modifiers.into();
|
|
|
|
|
|
|
|
modifiers.insert(KeyModifiers::SHIFT);
|
|
|
|
|
|
|
|
Self {
|
|
|
|
|
|
|
|
code: KeyCode::Tab,
|
|
|
|
|
|
|
|
modifiers,
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
Self {
|
|
|
|
code: code.into(),
|
|
|
|
code: code.into(),
|
|
|
|
modifiers: modifiers.into(),
|
|
|
|
modifiers: modifiers.into(),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
#[cfg(test)]
|
|
|
|