Struct termimad::EventSource

source ·
pub struct EventSource { /* private fields */ }
Expand description

a thread backed event listener emmiting events on a channel.

The event source enables the terminal’s raw mode and restores it on drop

Additionnally to emmitting events, this source updates a sharable event count, protected by an Arc. This makes it easy for background computation to stop (or check if they should) when a user event is produced.

The event source isn’t tick based. It makes it possible to built TUI with no CPU consumption while idle.

Implementations§

source§

impl EventSource

source

pub fn new() -> Result<Self, Error>

create a new source with default options

If desired, mouse support must be enabled and disabled in crossterm.

source

pub fn supports_multi_key_combinations(&self) -> bool

return true if the source is configured to combine standard keys and the terminal supports it (it requires the ‘kitty keyboard protocol’).

If true, you may receive events with multiple non-modifier keys, eg ctrl-a-b. If not, the same sequence of keys will be received as two successive combinations: ctrl-a and ctrl-b.

Combining is not delay-based: you receive the combination as soon as the keys are released (or as soon as the key is pressed in most cases when mandate_modifier_for_multiple_keys is true).

source

pub fn with_options(options: EventSourceOptions) -> Result<Self, Error>

create a new source

If desired, mouse support must be enabled and disabled in crossterm.

source

pub fn unblock(&self, quit: bool)

either start listening again, or quit, depending on the passed bool. It’s mandatory to call this with quit=true at end for a proper ending of the thread (and its resources)

source

pub fn shared_event_count(&self) -> Arc<AtomicUsize>

return a shared reference to the event count. Other threads can use it to check whether something happened (when there’s no parallel computation, the event channel is usually enough).

source

pub fn receiver(&self) -> Receiver<TimedEvent>

return a new receiver for the channel emmiting events

source

pub fn escape_sequence_receiver(&self) -> Receiver<EscapeSequence>

return a new receiver for the channel emmiting escape sequences

It’s a bounded channel and any escape sequence will be dropped when it’s full

Trait Implementations§

source§

impl Drop for EventSource

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.