pub struct KeyData {
pub time_stamp: Duration,
pub event_type: KeyEventType,
pub device_type: KeyEventDeviceType,
pub physical: u64,
pub logical: u64,
pub character: Option<String>,
pub synthesized: bool,
}Expand description
Information about a key event.
Fields§
§time_stamp: DurationTime of event dispatch, relative to an arbitrary timeline.
For synthesized events, the time_stamp might not be
the actual time that the key press or release happens.
event_type: KeyEventTypeThe type of the event.
device_type: KeyEventDeviceTypeDescribes what type of device (keyboard, directional pad, etc.) this event originated from.
physical: u64The key code for the physical key that has changed.
logical: u64The key code for the logical key that has changed.
character: Option<String>Character input from the event.
Ignored for up events.
synthesized: boolIf synthesized is true, this event does not
correspond to a native event.
Although most of Flutter’s keyboard events are transformed from native
events, some events are not based on native events, and are synthesized
only to conform Flutter’s key event model (as documented in the
HardwareKeyboard class in the framework).
For example, some key downs or ups might be lost when the window loses focus. Some platforms provide ways to query whether a key is being held. If the embedder detects an inconsistency between its internal record and the state returned by the system, the embedder will synthesize a corresponding event to synchronize the state without breaking the event model.
As another example, macOS treats CapsLock in a special way by sending down and up events at the down of alternate presses to indicate the direction in which the lock is toggled instead of that the physical key is going. A macOS embedder should normalize the behavior by converting a native down event into a down event followed immediately by a synthesized up event, and the native up event also into a down event followed immediately by a synthesized up event.
Synthesized events do not have a trustworthy
time_stamp, and should not be processed as if the
key actually went down or up at the time of the callback.
A key repeat event is never synthesized.
Implementations§
Trait Implementations§
impl Eq for KeyData
impl StructuralPartialEq for KeyData
Auto Trait Implementations§
impl Freeze for KeyData
impl RefUnwindSafe for KeyData
impl Send for KeyData
impl Sync for KeyData
impl Unpin for KeyData
impl UnsafeUnpin for KeyData
impl UnwindSafe for KeyData
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.