[go: up one dir, main page]

Struct Keyboard

Source
pub struct Keyboard(/* private fields */);

Implementations§

Source§

impl Keyboard

Source

pub fn version(&self) -> u32

Source

pub fn is_alive(&self) -> bool

Source§

impl Keyboard

Source

pub fn destroyed(&self, serial: u32)

This keyboard has been removed and a client should release all associated resources.

This ei_keyboard object will be destroyed by the EIS implementation immmediately after after this event is sent and as such the client must not attempt to use it after that point.

Source

pub fn keymap(&self, keymap_type: KeymapType, size: u32, keymap: BorrowedFd<'_>)

Notification that this device has a keymap. Future key events must be interpreted by the client according to this keymap. For clients of ei_handshake.context_type sender it is the client’s responsibility to send the correct ei_keyboard.key keycodes to generate the expected keysym in the EIS implementation.

The keymap is constant for the lifetime of the device.

This event provides a file descriptor to the client which can be memory-mapped in read-only mode to provide a keyboard mapping description. The fd must be mapped with MAP_PRIVATE by the recipient, as MAP_SHARED may fail.

This event is optional and only sent immediately after the ei_keyboard object is created and before the ei_device.done event. It is a protocol violation to send this event after the ei_device.done event.

Source

pub fn key(&self, key: u32, state: KeyState)

See the ei_keyboard.key request for details.

It is a protocol violation to send this request for a client of an ei_handshake.context_type other than receiver.

It is a protocol violation to send a key down event in the same frame as a key up event for the same key in the same frame.

Source

pub fn modifiers( &self, serial: u32, depressed: u32, locked: u32, latched: u32, group: u32, )

Notification that the EIS implementation has changed group or modifier states on this device, but not necessarily in response to an ei_keyboard.key event or request. Future ei_keyboard.key requests must take the new group and modifier state into account.

This event should be sent any time the modifier state or effective group has changed, whether caused by an ei_keyboard.key event in accordance with the keymap, indirectly due to further handling of an ei_keyboard.key event (e.g., because it triggered a keyboard shortcut that then changed the state), or caused by an unrelated an event (e.g., input from a different keyboard, or a group change triggered by a layout selection widget).

For receiver clients, modifiers events will always be properly ordered with received key events, so each key event should be interpreted using the most recently-received modifier state. The server should send this event immediately following the ei_device.frame event for the key press that caused the change. If the state change impacts multiple keyboards, this event should be sent for all of them.

For sender clients, the modifiers event is not inherently synchronized with key requests, but the client may send an ei_connection.sync request when synchronization is required. When the corresponding ei_callback.done event is received, all key requests sent prior to the sync request are guaranteed to have been processed, and any directly-resulting modifiers events are guaranteed to have been received. Note, however, that it is still possible for indirectly-triggered state changes, such as via a keyboard shortcut not encoded in the keymap, to be reported after the done event.

A client must assume that all modifiers are lifted when it receives an ei_device.paused event. The EIS implementation must send this event after ei_device.resumed to notify the client of any nonzero modifier state.

This event does not reqire an ei_device.frame and should be processed immediately by the client.

This event is only sent for devices with an ei_keyboard.keymap.

Note: A previous version of the documentation instead specified that this event should not be sent in response to ei_keyboard.key events that change the group or modifier state according to the keymap. However, this complicated client implementation and resulted in situations where the client state could get out of sync with the server.

Trait Implementations§

Source§

impl Clone for Keyboard

Source§

fn clone(&self) -> Keyboard

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Keyboard

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for Keyboard

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Keyboard

Source§

fn eq(&self, other: &Keyboard) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl DeviceInterface for Keyboard

Source§

impl Eq for Keyboard

Source§

impl StructuralPartialEq for Keyboard

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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.