wayland::server::keyboard_t(3)

πŸ’… wayland::server::keyboard_t

okay so bestie, this is a page from the Wayland++ manual β€” yes, that Wayland++ β€” and it's all about wayland::server::keyboard_t, the keyboard input device wrapper. Pull up a chair, we're doing this 🌸

✨ NAME ✨

wayland::server::keyboard_t β€” keyboard input device. that's it, that's the whole vibe 🎹

✨ SYNOPSIS ✨

#include <wayland-server-protocol.hpp>

πŸŽ€ Public Member Functions

  • std::function< void()> & on_release () β€” release the keyboard object
  • void keymap (keyboard_keymap_format const &format, int fd, uint32_t size, bool post=true) β€” keyboard mapping
  • void enter (uint32_t serial, surface_t const &surface, array_t const &keys, bool post=true) β€” enter event
  • void leave (uint32_t serial, surface_t const &surface, bool post=true) β€” leave event
  • void key (uint32_t serial, uint32_t time, uint32_t key, keyboard_key_state const &state, bool post=true) β€” key event
  • void modifiers (uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, uint32_t mods_locked, uint32_t group, bool post=true) β€” modifier and group state
  • void repeat_info (int32_t rate, int32_t delay, bool post=true) β€” repeat rate and delay
  • bool can_repeat_info () const β€” Check whether the repeat_info function is available with the currently bound version of the protocol.
  • bool proxy_has_object () const β€” Check whether this wrapper actually wraps an object.
  • void post_no_memory () const
  • uint32_t get_id () const
  • client_t get_client () const
  • unsigned int get_version () const
  • std::string get_class ()

πŸ¦‹ Static Public Attributes

  • static constexpr std::uint32_t keymap_since_version = 1 β€” Minimum protocol version required for the keymap function.
  • static constexpr std::uint32_t enter_since_version = 1 β€” Minimum protocol version required for the enter function.
  • static constexpr std::uint32_t leave_since_version = 1 β€” Minimum protocol version required for the leave function.
  • static constexpr std::uint32_t key_since_version = 1 β€” Minimum protocol version required for the key function.
  • static constexpr std::uint32_t modifiers_since_version = 1 β€” Minimum protocol version required for the modifiers function.
  • static constexpr std::uint32_t repeat_info_since_version = 4 β€” Minimum protocol version required for the repeat_info function.

πŸ‘‘ Detailed Description πŸ‘‘

keyboard input device πŸ’œ

The wl_keyboard interface represents one or more keyboards associated with a seat. (yes, one or more, a whole squad of keyboards, main character energy fr fr ⌨️✨)

Definition at line 3291 of file wayland-server-protocol.hpp.

πŸ’– Member Function Documentation πŸ’–

🌟 bool keyboard_t::can_repeat_info () const

Check whether the repeat_info function is available with the currently bound version of the protocol. lowkey the bestie you call before you even think about calling repeat_info πŸ™ˆ

Definition at line 2822 of file wayland-server-protocol.cpp.

🌟 void keyboard_t::enter (uint32_t serial, surface_t const & surface, array_t const & keys, bool post = true)

enter event ✨

Parameters

  • serial β€” serial number of the enter event
  • surface β€” surface gaining keyboard focus
  • keys β€” the currently pressed keys

Notification that this seat's keyboard focus is on a certain surface. 🎯

The compositor must send the wl_keyboard.modifiers event after this event. not optional, not a suggestion, it's the law periodt πŸ’…

Definition at line 2797 of file wayland-server-protocol.cpp.

🌟 std::string wayland::server::resource_t::get_class () [inherited]

Retrieve the interface name (class) of a resource object.

Returns

  • Interface name of the resource object.

🌟 client_t wayland::server::resource_t::get_client () const [inherited]

Get the associated client

Returns

  • the client that owns the resource.

🌟 uint32_t wayland::server::resource_t::get_id () const [inherited]

Get the internal ID of the resource

Returns

  • the internal ID of the resource

🌟 unsigned int wayland::server::resource_t::get_version () const [inherited]

Get interface version

Returns

  • Interface version this resource has been constructed with.

🌟 void keyboard_t::key (uint32_t serial, uint32_t time, uint32_t key, keyboard_key_state const & state, bool post = true)

key event ⌨️

Parameters

  • serial β€” serial number of the key event
  • time β€” timestamp with millisecond granularity
  • key β€” key that produced the event
  • state β€” physical state of the key

A key was pressed or released. The time argument is a timestamp with millisecond granularity, with an undefined base. (undefined base gang, we simply do not know where the clock started πŸ•°οΈπŸ˜­)

The key is a platform-specific key code that can be interpreted by feeding it to the keyboard mapping (see the keymap event).

If this event produces a change in modifiers, then the resulting wl_keyboard.modifiers event must be sent after this event.

Definition at line 2807 of file wayland-server-protocol.cpp.

🌟 void keyboard_t::keymap (keyboard_keymap_format const & format, int fd, uint32_t size, bool post = true)

keyboard mapping πŸ—ΊοΈ

Parameters

  • format β€” keymap format
  • fd β€” keymap file descriptor
  • size β€” keymap size, in bytes

This event provides a file descriptor to the client which can be memory-mapped in read-only mode to provide a keyboard mapping description.

From version 7 onwards, the fd must be mapped with MAP_PRIVATE by the recipient, as MAP_SHARED may fail. like, it will genuinely not work bestie, don't do it to yourself πŸ’€
Definition at line 2792 of file wayland-server-protocol.cpp.

🌟 void keyboard_t::leave (uint32_t serial, surface_t const & surface, bool post = true)

leave event πŸ‘‹

Parameters

  • serial β€” serial number of the leave event
  • surface β€” surface that lost keyboard focus

Notification that this seat's keyboard focus is no longer on a certain surface.

The leave notification is sent before the enter notification for the new focus. (order matters, always has, always will 🫢)

After this event client must assume that all keys, including modifiers, are lifted and also it must stop key repeating if there's some going on. no sticky keys, no ghost typing, we move on 🧚

Definition at line 2802 of file wayland-server-protocol.cpp.

🌟 void keyboard_t::modifiers (uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, uint32_t mods_locked, uint32_t group, bool post = true)

modifier and group state πŸŽ›οΈ

Parameters

  • serial β€” serial number of the modifiers event
  • mods_depressed β€” depressed modifiers
  • mods_latched β€” latched modifiers
  • mods_locked β€” locked modifiers
  • group β€” keyboard layout

Notifies clients that the modifier and/or group state has changed, and it should update its local state. self-care is updating your local state πŸ’…

Definition at line 2812 of file wayland-server-protocol.cpp.

🌟 std::function< void()> & keyboard_t::on_release ()

release the keyboard object

Definition at line 2786 of file wayland-server-protocol.cpp.

🌟 void wayland::server::resource_t::post_no_memory () const [inherited]

Post "not enough memory" error to the client

If the compositor has not enough memory to fulfill a certail request of the client, this function can be called to notify the client of this circumstance.

(yes it says "certail" in the original and we are respectfully not touching it 😭 it's iconic, it stays)

🌟 bool wayland::server::resource_t::proxy_has_object () const [inherited]

Check whether this wrapper actually wraps an object.

Returns

  • true if there is an underlying object, false if this wrapper is empty

🌟 void keyboard_t::repeat_info (int32_t rate, int32_t delay, bool post = true)

repeat rate and delay πŸ”

Parameters

  • rate β€” the rate of repeating keys in characters per second
  • delay β€” delay in milliseconds since key down until repeating starts

Informs the client about the keyboard's repeat rate and delay.

This event is sent as soon as the wl_keyboard object has been created, and is guaranteed to be received by the client before any key press event. guaranteed fr fr 🀞

Negative values for either rate or delay are illegal. ⚠️ A rate of zero will disable any repeating (regardless of the value of delay).

This event can be sent later on as well with a new value if necessary, so clients should continue listening for the event past the creation of wl_keyboard. don't ghost the event after the first message bestie πŸ‘€

Definition at line 2817 of file wayland-server-protocol.cpp.

🌈 Member Data Documentation 🌈

⭐ std::uint32_t wayland::server::keyboard_t::enter_since_version = 1 [static], [constexpr]

Minimum protocol version required for the enter function.

Definition at line 3357 of file wayland-server-protocol.hpp.

⭐ std::uint32_t wayland::server::keyboard_t::key_since_version = 1 [static], [constexpr]

Minimum protocol version required for the key function.

Definition at line 3400 of file wayland-server-protocol.hpp.

⭐ std::uint32_t wayland::server::keyboard_t::keymap_since_version = 1 [static], [constexpr]

Minimum protocol version required for the keymap function.

Definition at line 3339 of file wayland-server-protocol.hpp.

⭐ std::uint32_t wayland::server::keyboard_t::leave_since_version = 1 [static], [constexpr]

Minimum protocol version required for the leave function.

Definition at line 3377 of file wayland-server-protocol.hpp.

⭐ std::uint32_t wayland::server::keyboard_t::modifiers_since_version = 1 [static], [constexpr]

Minimum protocol version required for the modifiers function.

Definition at line 3417 of file wayland-server-protocol.hpp.

⭐ std::uint32_t wayland::server::keyboard_t::repeat_info_since_version = 4 [static], [constexpr]

Minimum protocol version required for the repeat_info function.

Definition at line 3441 of file wayland-server-protocol.hpp.

🌸 Author 🌸

Generated automatically by Doxygen for Wayland++ from the source code. (Doxygen did the homework, we just did the glow-up ✨)


okay that's the whole page bestie, you ate that 🫢 Version 1.0.1, dated Fri Mar 27 2026 13:15 β€” go forth and handle those keyboards, iykyk πŸ’–πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from