Skip to main content

CuX11Backend

Struct CuX11Backend 

Source
pub struct CuX11Backend { /* private fields */ }

Implementations§

Source§

impl CuX11Backend

Source

pub fn connect() -> Result<Self, String>

Connect to the X server named by DISPLAY and negotiate XTEST (required for any injection). XFixes is optional and only gates cursor compositing in screenshots.

Trait Implementations§

Source§

impl CuBackend for CuX11Backend

Source§

fn name(&self) -> &'static str

Source§

fn fb_size(&self) -> Result<(i32, i32), String>

Source§

fn key(&self, scancode: u32, pressed: bool)

Source§

fn mouse_move(&self, x: f64, y: f64)

Source§

fn button(&self, btn: CuButton, pressed: bool)

Source§

fn scroll(&self, dx: f64, dy: f64)

Source§

fn screenshot_png(&self, display: u32) -> Result<Vec<u8>, String>

PNG of one display’s framebuffer; 0 = the primary. Unknown ids are an error.
Source§

fn cursor_pos(&self) -> Result<(f64, f64), String>

Source§

fn resolve_keysyms(&self, keysyms: &[u32]) -> Vec<(u32, u32)>

Resolve keysyms against the backend’s ACTIVE keymap: one (keycode, shift level) per input keysym, (0, 0) where the keymap cannot produce it. Level bit 0 = Shift, bit 1 = AltGr — the order xkb two/four-level key types use. Wayland resolves through the compositor’s keymap policy (overlay-binding what the base lacks); X11 through the server’s own GetKeyboardMapping.
Source§

fn altgr_keycode(&self) -> u32

Keycode synthesized around AltGr-level hits (level bit 1). The default is the pc105 right-Alt position the compositor’s seat keymap binds to ISO_Level3_Shift; the X11 backend overrides it with the level-3 modifier key found in the server’s keymap (0 = none, in which case resolve_keysyms reports no AltGr levels).
Source§

fn with_transient_keysyms( &self, keysyms: &[u32], seq: &mut dyn FnMut(&HashMap<u32, u32>), )

Run seq with every keysym in keysyms (which resolve_keysyms could not place) made temporarily typeable, when the backend can arrange that; seq receives keysym -> keycode for the transient bindings (empty when none could be arranged, in which case those keysyms simply stay untypeable). Wayland’s resolve_keysyms already overlay-binds anything the base keymap lacks, so the default runs seq with no bindings; the X11 backend overrides this with a grab-atomic spare-keycode remap.
Source§

fn display_fb_size(&self, display: u32) -> Result<(i32, i32), String>

One display’s framebuffer size; 0 = the primary. Unknown ids are an error. The X11 backend serves only the root (display 0); Wayland resolves any live output id.
Source§

impl Drop for CuX11Backend

Source§

fn drop(&mut self)

Closing the connection can race the server’s client teardown against still-buffered fake-input requests (observed as lost button releases); one round trip forces the server to consume everything sent on this connection before it goes away.

Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. 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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

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

Convert 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)

Convert &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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
§

impl<T> Ungil for T
where T: Send,

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more