pub struct KeyPress {
pub code: KeyCode,
pub mods: KeyModifiers,
}Expand description
Represents a specific key press, combining a KeyCode and KeyModifiers.
This provides a structured, type-safe way to define key combinations that can be used throughout the application for consistent key handling.
§Examples
use bubbletea_widgets::key::KeyPress;
use crossterm::event::{KeyCode, KeyModifiers};
// Create a Ctrl+C key press
let ctrl_c = KeyPress {
code: KeyCode::Char('c'),
mods: KeyModifiers::CONTROL,
};
// Create from tuple
let alt_f4: KeyPress = (KeyCode::F(4), KeyModifiers::ALT).into();
// Create from string
let escape: KeyPress = "esc".into();Fields§
§code: KeyCodeThe key code representing the physical key pressed.
mods: KeyModifiersThe modifier keys (Ctrl, Alt, Shift) held during the key press.
Trait Implementations§
Source§impl From<&str> for KeyPress
Creates a KeyPress from a string representation.
impl From<&str> for KeyPress
Creates a KeyPress from a string representation.
This provides a human-readable way to define key combinations using string names. Supports both simple keys and modifier combinations.
§Supported Formats
- Simple keys: “enter”, “tab”, “esc”, “space”, “up”, “down”, etc.
- Function keys: “f1”, “f2”, …, “f12”
- Single characters: “a”, “1”, “?”, “/”
- Modifier combinations: “ctrl+c”, “alt+f4”, “shift+tab”
- Complex combinations: “ctrl+alt+a”
§Examples
use bubbletea_widgets::key::KeyPress;
let enter: KeyPress = "enter".into();
let ctrl_c: KeyPress = "ctrl+c".into();
let alt_f4: KeyPress = "alt+f4".into();
let page_up: KeyPress = "pgup".into();§Panics
This function does not panic. Unknown key combinations will result in
a KeyPress with KeyCode::Null.
Source§impl From<(KeyCode, KeyModifiers)> for KeyPress
Creates a KeyPress from a tuple of (KeyCode, KeyModifiers).
impl From<(KeyCode, KeyModifiers)> for KeyPress
Creates a KeyPress from a tuple of (KeyCode, KeyModifiers).
This provides a convenient way to create key press instances from tuples, making it easy to define key combinations inline.
§Examples
use bubbletea_widgets::key::KeyPress;
use crossterm::event::{KeyCode, KeyModifiers};
let save_key: KeyPress = (KeyCode::Char('s'), KeyModifiers::CONTROL).into();
let quit_key: KeyPress = (KeyCode::Char('q'), KeyModifiers::CONTROL).into();Source§fn from((code, mods): (KeyCode, KeyModifiers)) -> Self
fn from((code, mods): (KeyCode, KeyModifiers)) -> Self
Source§impl From<KeyCode> for KeyPress
Creates a KeyPress from just a KeyCode with no modifiers.
impl From<KeyCode> for KeyPress
Creates a KeyPress from just a KeyCode with no modifiers.
This is useful for simple keys that don’t require modifier combinations, such as arrow keys, function keys, or single character keys.
§Examples
use bubbletea_widgets::key::KeyPress;
use crossterm::event::KeyCode;
let enter_key: KeyPress = KeyCode::Enter.into();
let up_arrow: KeyPress = KeyCode::Up.into();
let letter_a: KeyPress = KeyCode::Char('a').into();impl Eq for KeyPress
impl StructuralPartialEq for KeyPress
Auto Trait Implementations§
impl Freeze for KeyPress
impl RefUnwindSafe for KeyPress
impl Send for KeyPress
impl Sync for KeyPress
impl Unpin for KeyPress
impl UnwindSafe for KeyPress
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more