pub struct PfVirtualKeyboard { /* private fields */ }Expand description
In-house zwp_virtual_keyboard_v1 implementation. Smithay’s manager swaps the
client-visible seat keymap to the virtual keyboard’s keymap on every VK event and never
restores it, leaving every client holding a foreign keymap (and killing the compositor’s
overlay keycodes) after any VK use. Here VK key events are TRANSLATED instead: each keycode
resolves to its level-0 keysym under the VK client’s own uploaded keymap, maps onto the seat
keymap (overlay-binding on demand, batched at keymap upload), and injects through the seat’s
regular input path — the seat keymap identity never changes and modifier/pressed-key state
stays coherent with server-side injection. VK modifiers requests are ignored: applying a
foreign modifier mask would corrupt the seat’s own tracked state, and the supported VK
client (selkies’ wayland_typer) binds every keysym at level 0 and never sends them.
Trait Implementations§
Source§impl Dispatch<ZwpVirtualKeyboardV1, PfVirtualKeyboard> for AppState
impl Dispatch<ZwpVirtualKeyboardV1, PfVirtualKeyboard> for AppState
Source§fn destroyed(
state: &mut Self,
_client: ClientId,
_resource: &ZwpVirtualKeyboardV1,
data: &PfVirtualKeyboard,
)
fn destroyed( state: &mut Self, _client: ClientId, _resource: &ZwpVirtualKeyboardV1, data: &PfVirtualKeyboard, )
Release every seat key this virtual keyboard still holds, so a VK client that disconnects mid-press cannot leave keys logically stuck.
Source§fn request(
state: &mut Self,
_client: &Client,
resource: &ZwpVirtualKeyboardV1,
request: Request,
data: &PfVirtualKeyboard,
_dh: &DisplayHandle,
_data_init: &mut DataInit<'_, Self>,
)
fn request( state: &mut Self, _client: &Client, resource: &ZwpVirtualKeyboardV1, request: Request, data: &PfVirtualKeyboard, _dh: &DisplayHandle, _data_init: &mut DataInit<'_, Self>, )
Auto Trait Implementations§
impl !Freeze for PfVirtualKeyboard
impl RefUnwindSafe for PfVirtualKeyboard
impl Send for PfVirtualKeyboard
impl Sync for PfVirtualKeyboard
impl Unpin for PfVirtualKeyboard
impl UnsafeUnpin for PfVirtualKeyboard
impl UnwindSafe for PfVirtualKeyboard
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
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more