aboutsummaryrefslogtreecommitdiff
path: root/helix-view/src/keyboard.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-view/src/keyboard.rs')
-rw-r--r--helix-view/src/keyboard.rs306
1 files changed, 153 insertions, 153 deletions
diff --git a/helix-view/src/keyboard.rs b/helix-view/src/keyboard.rs
index f1717209..4d51f981 100644
--- a/helix-view/src/keyboard.rs
+++ b/helix-view/src/keyboard.rs
@@ -1,153 +1,153 @@
-use bitflags::bitflags;
-
-bitflags! {
- /// Represents key modifiers (shift, control, alt).
- #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
- pub struct KeyModifiers: u8 {
- const SHIFT = 0b0000_0001;
- const CONTROL = 0b0000_0010;
- const ALT = 0b0000_0100;
- const NONE = 0b0000_0000;
- }
-}
-
-#[cfg(feature = "term")]
-impl From<KeyModifiers> for crossterm::event::KeyModifiers {
- fn from(key_modifiers: KeyModifiers) -> Self {
- use crossterm::event::KeyModifiers as CKeyModifiers;
-
- let mut result = CKeyModifiers::NONE;
-
- if key_modifiers.contains(KeyModifiers::SHIFT) {
- result.insert(CKeyModifiers::SHIFT);
- }
- if key_modifiers.contains(KeyModifiers::CONTROL) {
- result.insert(CKeyModifiers::CONTROL);
- }
- if key_modifiers.contains(KeyModifiers::ALT) {
- result.insert(CKeyModifiers::ALT);
- }
-
- result
- }
-}
-
-#[cfg(feature = "term")]
-impl From<crossterm::event::KeyModifiers> for KeyModifiers {
- fn from(val: crossterm::event::KeyModifiers) -> Self {
- use crossterm::event::KeyModifiers as CKeyModifiers;
-
- let mut result = KeyModifiers::NONE;
-
- if val.contains(CKeyModifiers::SHIFT) {
- result.insert(KeyModifiers::SHIFT);
- }
- if val.contains(CKeyModifiers::CONTROL) {
- result.insert(KeyModifiers::CONTROL);
- }
- if val.contains(CKeyModifiers::ALT) {
- result.insert(KeyModifiers::ALT);
- }
-
- result
- }
-}
-
-/// Represents a key.
-#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Copy, Hash)]
-#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
-pub enum KeyCode {
- /// Backspace key.
- Backspace,
- /// Enter key.
- Enter,
- /// Left arrow key.
- Left,
- /// Right arrow key.
- Right,
- /// Up arrow key.
- Up,
- /// Down arrow key.
- Down,
- /// Home key.
- Home,
- /// End key.
- End,
- /// Page up key.
- PageUp,
- /// Page down key.
- PageDown,
- /// Tab key.
- Tab,
- /// Delete key.
- Delete,
- /// Insert key.
- Insert,
- /// F key.
- ///
- /// `KeyCode::F(1)` represents F1 key, etc.
- F(u8),
- /// A character.
- ///
- /// `KeyCode::Char('c')` represents `c` character, etc.
- Char(char),
- /// Null.
- Null,
- /// Escape key.
- Esc,
-}
-
-#[cfg(feature = "term")]
-impl From<KeyCode> for crossterm::event::KeyCode {
- fn from(key_code: KeyCode) -> Self {
- use crossterm::event::KeyCode as CKeyCode;
-
- match key_code {
- KeyCode::Backspace => CKeyCode::Backspace,
- KeyCode::Enter => CKeyCode::Enter,
- KeyCode::Left => CKeyCode::Left,
- KeyCode::Right => CKeyCode::Right,
- KeyCode::Up => CKeyCode::Up,
- KeyCode::Down => CKeyCode::Down,
- KeyCode::Home => CKeyCode::Home,
- KeyCode::End => CKeyCode::End,
- KeyCode::PageUp => CKeyCode::PageUp,
- KeyCode::PageDown => CKeyCode::PageDown,
- KeyCode::Tab => CKeyCode::Tab,
- KeyCode::Delete => CKeyCode::Delete,
- KeyCode::Insert => CKeyCode::Insert,
- KeyCode::F(f_number) => CKeyCode::F(f_number),
- KeyCode::Char(character) => CKeyCode::Char(character),
- KeyCode::Null => CKeyCode::Null,
- KeyCode::Esc => CKeyCode::Esc,
- }
- }
-}
-
-#[cfg(feature = "term")]
-impl From<crossterm::event::KeyCode> for KeyCode {
- fn from(val: crossterm::event::KeyCode) -> Self {
- use crossterm::event::KeyCode as CKeyCode;
-
- match val {
- CKeyCode::Backspace => KeyCode::Backspace,
- CKeyCode::Enter => KeyCode::Enter,
- CKeyCode::Left => KeyCode::Left,
- CKeyCode::Right => KeyCode::Right,
- CKeyCode::Up => KeyCode::Up,
- CKeyCode::Down => KeyCode::Down,
- CKeyCode::Home => KeyCode::Home,
- CKeyCode::End => KeyCode::End,
- CKeyCode::PageUp => KeyCode::PageUp,
- CKeyCode::PageDown => KeyCode::PageDown,
- CKeyCode::Tab => KeyCode::Tab,
- CKeyCode::BackTab => unreachable!("BackTab should have been handled on KeyEvent level"),
- CKeyCode::Delete => KeyCode::Delete,
- CKeyCode::Insert => KeyCode::Insert,
- CKeyCode::F(f_number) => KeyCode::F(f_number),
- CKeyCode::Char(character) => KeyCode::Char(character),
- CKeyCode::Null => KeyCode::Null,
- CKeyCode::Esc => KeyCode::Esc,
- }
- }
-}
+use bitflags::bitflags;
+
+bitflags! {
+ /// Represents key modifiers (shift, control, alt).
+ #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
+ pub struct KeyModifiers: u8 {
+ const SHIFT = 0b0000_0001;
+ const CONTROL = 0b0000_0010;
+ const ALT = 0b0000_0100;
+ const NONE = 0b0000_0000;
+ }
+}
+
+#[cfg(feature = "term")]
+impl From<KeyModifiers> for crossterm::event::KeyModifiers {
+ fn from(key_modifiers: KeyModifiers) -> Self {
+ use crossterm::event::KeyModifiers as CKeyModifiers;
+
+ let mut result = CKeyModifiers::NONE;
+
+ if key_modifiers.contains(KeyModifiers::SHIFT) {
+ result.insert(CKeyModifiers::SHIFT);
+ }
+ if key_modifiers.contains(KeyModifiers::CONTROL) {
+ result.insert(CKeyModifiers::CONTROL);
+ }
+ if key_modifiers.contains(KeyModifiers::ALT) {
+ result.insert(CKeyModifiers::ALT);
+ }
+
+ result
+ }
+}
+
+#[cfg(feature = "term")]
+impl From<crossterm::event::KeyModifiers> for KeyModifiers {
+ fn from(val: crossterm::event::KeyModifiers) -> Self {
+ use crossterm::event::KeyModifiers as CKeyModifiers;
+
+ let mut result = KeyModifiers::NONE;
+
+ if val.contains(CKeyModifiers::SHIFT) {
+ result.insert(KeyModifiers::SHIFT);
+ }
+ if val.contains(CKeyModifiers::CONTROL) {
+ result.insert(KeyModifiers::CONTROL);
+ }
+ if val.contains(CKeyModifiers::ALT) {
+ result.insert(KeyModifiers::ALT);
+ }
+
+ result
+ }
+}
+
+/// Represents a key.
+#[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Clone, Copy, Hash)]
+#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
+pub enum KeyCode {
+ /// Backspace key.
+ Backspace,
+ /// Enter key.
+ Enter,
+ /// Left arrow key.
+ Left,
+ /// Right arrow key.
+ Right,
+ /// Up arrow key.
+ Up,
+ /// Down arrow key.
+ Down,
+ /// Home key.
+ Home,
+ /// End key.
+ End,
+ /// Page up key.
+ PageUp,
+ /// Page down key.
+ PageDown,
+ /// Tab key.
+ Tab,
+ /// Delete key.
+ Delete,
+ /// Insert key.
+ Insert,
+ /// F key.
+ ///
+ /// `KeyCode::F(1)` represents F1 key, etc.
+ F(u8),
+ /// A character.
+ ///
+ /// `KeyCode::Char('c')` represents `c` character, etc.
+ Char(char),
+ /// Null.
+ Null,
+ /// Escape key.
+ Esc,
+}
+
+#[cfg(feature = "term")]
+impl From<KeyCode> for crossterm::event::KeyCode {
+ fn from(key_code: KeyCode) -> Self {
+ use crossterm::event::KeyCode as CKeyCode;
+
+ match key_code {
+ KeyCode::Backspace => CKeyCode::Backspace,
+ KeyCode::Enter => CKeyCode::Enter,
+ KeyCode::Left => CKeyCode::Left,
+ KeyCode::Right => CKeyCode::Right,
+ KeyCode::Up => CKeyCode::Up,
+ KeyCode::Down => CKeyCode::Down,
+ KeyCode::Home => CKeyCode::Home,
+ KeyCode::End => CKeyCode::End,
+ KeyCode::PageUp => CKeyCode::PageUp,
+ KeyCode::PageDown => CKeyCode::PageDown,
+ KeyCode::Tab => CKeyCode::Tab,
+ KeyCode::Delete => CKeyCode::Delete,
+ KeyCode::Insert => CKeyCode::Insert,
+ KeyCode::F(f_number) => CKeyCode::F(f_number),
+ KeyCode::Char(character) => CKeyCode::Char(character),
+ KeyCode::Null => CKeyCode::Null,
+ KeyCode::Esc => CKeyCode::Esc,
+ }
+ }
+}
+
+#[cfg(feature = "term")]
+impl From<crossterm::event::KeyCode> for KeyCode {
+ fn from(val: crossterm::event::KeyCode) -> Self {
+ use crossterm::event::KeyCode as CKeyCode;
+
+ match val {
+ CKeyCode::Backspace => KeyCode::Backspace,
+ CKeyCode::Enter => KeyCode::Enter,
+ CKeyCode::Left => KeyCode::Left,
+ CKeyCode::Right => KeyCode::Right,
+ CKeyCode::Up => KeyCode::Up,
+ CKeyCode::Down => KeyCode::Down,
+ CKeyCode::Home => KeyCode::Home,
+ CKeyCode::End => KeyCode::End,
+ CKeyCode::PageUp => KeyCode::PageUp,
+ CKeyCode::PageDown => KeyCode::PageDown,
+ CKeyCode::Tab => KeyCode::Tab,
+ CKeyCode::BackTab => unreachable!("BackTab should have been handled on KeyEvent level"),
+ CKeyCode::Delete => KeyCode::Delete,
+ CKeyCode::Insert => KeyCode::Insert,
+ CKeyCode::F(f_number) => KeyCode::F(f_number),
+ CKeyCode::Char(character) => KeyCode::Char(character),
+ CKeyCode::Null => KeyCode::Null,
+ CKeyCode::Esc => KeyCode::Esc,
+ }
+ }
+}