summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-03-17 07:28:28 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-03-17 07:30:05 +0100
commit05beb878527b4d4e3141ca5ba09337d6ada858be (patch)
treed95ab2be4be002618eb054c61007b2ab661cd164 /core
parent1cd1582506810255394d2f9019597e9252bd8daa (diff)
downloadiced-05beb878527b4d4e3141ca5ba09337d6ada858be.tar.gz
iced-05beb878527b4d4e3141ca5ba09337d6ada858be.tar.bz2
iced-05beb878527b4d4e3141ca5ba09337d6ada858be.zip
Move common keyboard types to `iced_core`
Also expose them in `iced` through `iced_native` and `iced_web`.
Diffstat (limited to 'core')
-rw-r--r--core/src/keyboard.rs6
-rw-r--r--core/src/keyboard/key_code.rs198
-rw-r--r--core/src/keyboard/modifiers_state.rs15
-rw-r--r--core/src/lib.rs1
4 files changed, 220 insertions, 0 deletions
diff --git a/core/src/keyboard.rs b/core/src/keyboard.rs
new file mode 100644
index 00000000..d98b2989
--- /dev/null
+++ b/core/src/keyboard.rs
@@ -0,0 +1,6 @@
+//! Reuse basic keyboard types.
+mod key_code;
+mod modifiers_state;
+
+pub use key_code::KeyCode;
+pub use modifiers_state::ModifiersState;
diff --git a/core/src/keyboard/key_code.rs b/core/src/keyboard/key_code.rs
new file mode 100644
index 00000000..26020a57
--- /dev/null
+++ b/core/src/keyboard/key_code.rs
@@ -0,0 +1,198 @@
+/// The symbolic name of a keyboard key.
+///
+/// This is mostly the `KeyCode` type found in [`winit`].
+///
+/// [`winit`]: https://docs.rs/winit/0.20.0-alpha3/winit/
+#[derive(Debug, Hash, Ord, PartialOrd, PartialEq, Eq, Clone, Copy)]
+#[repr(u32)]
+#[allow(missing_docs)]
+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,
+
+ Backspace,
+ Enter,
+ 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,
+}
diff --git a/core/src/keyboard/modifiers_state.rs b/core/src/keyboard/modifiers_state.rs
new file mode 100644
index 00000000..3058c065
--- /dev/null
+++ b/core/src/keyboard/modifiers_state.rs
@@ -0,0 +1,15 @@
+/// The current state of the keyboard modifiers.
+#[derive(Debug, Clone, Copy, PartialEq, Default)]
+pub struct ModifiersState {
+ /// Whether a shift key is pressed
+ pub shift: bool,
+
+ /// Whether a control key is pressed
+ pub control: bool,
+
+ /// Whether an alt key is pressed
+ pub alt: bool,
+
+ /// Whether a logo key is pressed (e.g. windows key, command key...)
+ pub logo: bool,
+}
diff --git a/core/src/lib.rs b/core/src/lib.rs
index ea5e8b43..c2887a0b 100644
--- a/core/src/lib.rs
+++ b/core/src/lib.rs
@@ -14,6 +14,7 @@
#![deny(unused_results)]
#![forbid(unsafe_code)]
#![forbid(rust_2018_idioms)]
+pub mod keyboard;
mod align;
mod background;