summaryrefslogtreecommitdiffstats
path: root/src/input/keyboard
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-07-20 19:12:31 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-07-20 19:12:31 +0200
commit2b7ad3d50eae48b1963aa8e866e184c41133ca3d (patch)
treeae5b0c851aebb2dd8c01c08620d1cea7aa9d2466 /src/input/keyboard
parenteefdcbe06cce97b452ee71ccb6fcd1a423d29075 (diff)
downloadiced-2b7ad3d50eae48b1963aa8e866e184c41133ca3d.tar.gz
iced-2b7ad3d50eae48b1963aa8e866e184c41133ca3d.tar.bz2
iced-2b7ad3d50eae48b1963aa8e866e184c41133ca3d.zip
Decouple `iced` from `coffee`
Diffstat (limited to 'src/input/keyboard')
-rw-r--r--src/input/keyboard/event.rs21
-rw-r--r--src/input/keyboard/key_code.rs197
2 files changed, 218 insertions, 0 deletions
diff --git a/src/input/keyboard/event.rs b/src/input/keyboard/event.rs
new file mode 100644
index 00000000..3804c42d
--- /dev/null
+++ b/src/input/keyboard/event.rs
@@ -0,0 +1,21 @@
+use super::KeyCode;
+use crate::input::ButtonState;
+
+#[derive(Debug, Clone, Copy, PartialEq)]
+/// A keyboard event.
+pub enum Event {
+ /// A keyboard key was pressed or released.
+ Input {
+ /// The state of the key
+ state: ButtonState,
+
+ /// The key identifier
+ key_code: KeyCode,
+ },
+
+ /// Text was entered.
+ TextEntered {
+ /// The character entered
+ character: char,
+ },
+}
diff --git a/src/input/keyboard/key_code.rs b/src/input/keyboard/key_code.rs
new file mode 100644
index 00000000..5cf9301f
--- /dev/null
+++ b/src/input/keyboard/key_code.rs
@@ -0,0 +1,197 @@
+/// The symbolic name of a keyboard key
+#[derive(Debug, Hash, Ord, PartialOrd, PartialEq, Eq, Clone, Copy)]
+#[repr(u32)]
+pub enum KeyCode {
+ /// The '1' key over the letters.
+ Key1,
+ /// The '2' key over the letters.
+ Key2,
+ /// The '3' key over the letters.
+ Key3,
+ /// The '4' key over the letters.
+ Key4,
+ /// The '5' key over the letters.
+ Key5,
+ /// The '6' key over the letters.
+ Key6,
+ /// The '7' key over the letters.
+ Key7,
+ /// The '8' key over the letters.
+ Key8,
+ /// The '9' key over the letters.
+ Key9,
+ /// The '0' key over the 'O' and 'P' keys.
+ Key0,
+
+ A,
+ B,
+ C,
+ D,
+ E,
+ F,
+ G,
+ H,
+ I,
+ J,
+ K,
+ L,
+ M,
+ N,
+ O,
+ P,
+ Q,
+ R,
+ S,
+ T,
+ U,
+ V,
+ W,
+ X,
+ Y,
+ Z,
+
+ /// The Escape key, next to F1.
+ Escape,
+
+ F1,
+ F2,
+ F3,
+ F4,
+ F5,
+ F6,
+ F7,
+ F8,
+ F9,
+ F10,
+ F11,
+ F12,
+ F13,
+ F14,
+ F15,
+ F16,
+ F17,
+ F18,
+ F19,
+ F20,
+ F21,
+ F22,
+ F23,
+ F24,
+
+ /// Print Screen/SysRq.
+ Snapshot,
+ /// Scroll Lock.
+ Scroll,
+ /// Pause/Break key, next to Scroll lock.
+ Pause,
+
+ /// `Insert`, next to Backspace.
+ Insert,
+ Home,
+ Delete,
+ End,
+ PageDown,
+ PageUp,
+
+ Left,
+ Up,
+ Right,
+ Down,
+
+ /// The Backspace key, right over Enter.
+ // TODO: rename
+ Back,
+ /// The Enter key.
+ Return,
+ /// The space bar.
+ Space,
+
+ /// The "Compose" key on Linux.
+ Compose,
+
+ Caret,
+
+ Numlock,
+ Numpad0,
+ Numpad1,
+ Numpad2,
+ Numpad3,
+ Numpad4,
+ Numpad5,
+ Numpad6,
+ Numpad7,
+ Numpad8,
+ Numpad9,
+
+ AbntC1,
+ AbntC2,
+ Add,
+ Apostrophe,
+ Apps,
+ At,
+ Ax,
+ Backslash,
+ Calculator,
+ Capital,
+ Colon,
+ Comma,
+ Convert,
+ Decimal,
+ Divide,
+ Equals,
+ Grave,
+ Kana,
+ Kanji,
+ LAlt,
+ LBracket,
+ LControl,
+ LShift,
+ LWin,
+ Mail,
+ MediaSelect,
+ MediaStop,
+ Minus,
+ Multiply,
+ Mute,
+ MyComputer,
+ NavigateForward, // also called "Prior"
+ NavigateBackward, // also called "Next"
+ NextTrack,
+ NoConvert,
+ NumpadComma,
+ NumpadEnter,
+ NumpadEquals,
+ OEM102,
+ Period,
+ PlayPause,
+ Power,
+ PrevTrack,
+ RAlt,
+ RBracket,
+ RControl,
+ RShift,
+ RWin,
+ Semicolon,
+ Slash,
+ Sleep,
+ Stop,
+ Subtract,
+ Sysrq,
+ Tab,
+ Underline,
+ Unlabeled,
+ VolumeDown,
+ VolumeUp,
+ Wake,
+ WebBack,
+ WebFavorites,
+ WebForward,
+ WebHome,
+ WebRefresh,
+ WebSearch,
+ WebStop,
+ Yen,
+ Copy,
+ Paste,
+ Cut,
+}