Add ModifiersState to keyboard::Event::Input
This commit is contained in:
parent
31b0b7f580
commit
65cac922b3
6 changed files with 44 additions and 3 deletions
|
|
@ -1,6 +1,8 @@
|
|||
//! Build keyboard events.
|
||||
mod event;
|
||||
mod key_code;
|
||||
mod modifiers_state;
|
||||
|
||||
pub use event::Event;
|
||||
pub use key_code::KeyCode;
|
||||
pub use modifiers_state::ModifiersState;
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
use super::KeyCode;
|
||||
use super::{KeyCode, ModifiersState};
|
||||
use crate::input::ButtonState;
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
/// A keyboard event.
|
||||
///
|
||||
/// _**Note:** This type is largely incomplete! If you need to track
|
||||
/// additional events, feel free to [open an issue] and share your use case!_
|
||||
///
|
||||
/// [open an issue]: https://github.com/hecrj/iced/issues
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
pub enum Event {
|
||||
/// A keyboard key was pressed or released.
|
||||
Input {
|
||||
|
|
@ -16,6 +16,9 @@ pub enum Event {
|
|||
|
||||
/// The key identifier
|
||||
key_code: KeyCode,
|
||||
|
||||
/// The state of the modifier keys
|
||||
modifiers: ModifiersState,
|
||||
},
|
||||
|
||||
/// A unicode character was received.
|
||||
|
|
|
|||
15
native/src/input/keyboard/modifiers_state.rs
Normal file
15
native/src/input/keyboard/modifiers_state.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
/// The current state of the keyboard modifiers.
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
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,
|
||||
}
|
||||
|
|
@ -202,6 +202,7 @@ where
|
|||
Event::Keyboard(keyboard::Event::Input {
|
||||
key_code,
|
||||
state: ButtonState::Pressed,
|
||||
modifiers,
|
||||
}) if self.state.is_focused => match key_code {
|
||||
keyboard::KeyCode::Enter => {
|
||||
if let Some(on_submit) = self.on_submit.clone() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue