---
name: "wayland_keyboard_t"
section: "3"
platform: "linux"
package: "waylandpp-dev"
version: "1.0.0-6+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/wayland_keyboard_t"
---

# wayland\_keyboard\_t(3)

keyboard input device

## NAME

wayland::keyboard\_t - keyboard input device

## SYNOPSIS

`#include <wayland-client-protocol.hpp>`

Inherits **wayland::proxy\_t**.

### Public Types

enum class **wrapper\_type** { **standard**, **display**, **foreign**, **proxy\_wrapper** }\

### Public Member Functions

void **release** ()\
 release the keyboard object  bool **can\_release** () const\
 Check whether the **release** function is available with the currently bound version of the protocol.  std::function\< void(keyboard\_keymap\_format, int, uint32\_t)\> & **on\_keymap** ()\
 keyboard mapping  std::function\< void(uint32\_t, **surface\_t**, array\_t)\> & **on\_enter** ()\
 enter event  std::function\< void(uint32\_t, **surface\_t**)\> & **on\_leave** ()\
 leave event  std::function\< void(uint32\_t, uint32\_t, uint32\_t, keyboard\_key\_state)\> & **on\_key** ()\
 key event  std::function\< void(uint32\_t, uint32\_t, uint32\_t, uint32\_t, uint32\_t)\> & **on\_modifiers** ()\
 modifier and group state  std::function\< void(int32\_t, int32\_t)\> & **on\_repeat\_info** ()\
 repeat rate and delay  uint32\_t **get\_id** () const\
 Get the id of a proxy object.  std::string **get\_class** () const\
 Get the interface name (class) of a proxy object.  uint32\_t **get\_version** () const\
 Get the protocol object version of a proxy object.  **wrapper\_type** **get\_wrapper\_type** () const\
 Get the type of a proxy object.  void **set\_queue** (**event\_queue\_t** queue)\
 Assign a proxy to an event queue.  wl\_proxy \* **c\_ptr** () const\
 Get a pointer to the underlying C struct.  bool **proxy\_has\_object** () const\
 Check whether this wrapper actually wraps an object.  **operator bool** () const\
 Check whether this wrapper actually wraps an object.  bool **operator==** (const **proxy\_t** &right) const\
 Check whether two wrappers refer to the same object.  bool **operator!=** (const **proxy\_t** &right) const\
 Check whether two wrappers refer to different objects.  void **proxy\_release** ()\
 Release the wrapped object (if any), making this an empty wrapper.

### Static Public Attributes

static constexpr std::uint32\_t **release\_since\_version** = 3\
 Minimum protocol version required for the **release** function.

## Detailed Description

keyboard input device

The wl\_keyboard interface represents one or more keyboards associated with a seat.

**Examples** **egl.cpp**, **proxy\_wrapper.cpp**, and **shm.cpp**.

Definition at line **3116** of file **wayland-client-protocol.hpp**.

## Member Enumeration Documentation

### enum class wayland::proxy\_t::wrapper\_type` [strong]`, ` [inherited]`

Underlying wl\_proxy type and properties of a **proxy\_t** that affect construction, destruction, and event handling

**Enumerator**

- *standard*

  *C pointer is a standard type compatible with wl\_proxy\*. Events are dispatched and it is destructed when the* **proxy\_t** *is destructed. User data is set.*

- *display*

  *C pointer is a wl\_display\*. No events are dispatched, wl\_display\_disconnect is called when the* **proxy\_t** *is destructed. User data is set.*

- *foreign*

  *C pointer is a standard type compatible with wl\_proxy\*, but another library owns it and it should not be touched in a way that could affect the operation of the other library. No events are dispatched, wl\_proxy\_destroy is not called when the* **proxy\_t** *is destructed, user data is not touched. Consequently, there is no reference counting for the* **proxy\_t***. Lifetime of such wrappers should preferably be short to minimize the chance that the owning library decides to destroy the wl\_proxy.*

- *proxy\_wrapper*

  *C pointer is a wl\_proxy\* that was constructed with wl\_proxy\_create\_wrapper. No events are dispatched, wl\_proxy\_wrapper\_destroy is called when the* **proxy\_t** *is destroyed. Reference counting is active. A reference to the* **proxy\_t** *creating this proxy wrapper is held to extend its lifetime until after the proxy wrapper is destroyed.*

*Definition at line* **116** *of file* **wayland-client.hpp***.*

## Member Function Documentation

### wl\_proxy \* wayland::proxy\_t::c\_ptr () const` [inherited]`

*Get a pointer to the underlying C struct.*

**Returns**

*The underlying wl\_proxy wrapped by this* **proxy\_t** *if it exists, otherwise an exception is thrown*

### bool keyboard\_t::can\_release () const

*Check whether the* **release** *function is available with the currently bound version of the protocol.*

*Definition at line* **3124** *of file* **wayland-client-protocol.cpp***.*

### std::string wayland::proxy\_t::get\_class () const` [inherited]`

*Get the interface name (class) of a proxy object.*

**Returns**

*The interface name of the object associated with the proxy*

### uint32\_t wayland::proxy\_t::get\_id () const` [inherited]`

*Get the id of a proxy object.*

**Returns**

*The id the object associated with the proxy*

### uint32\_t wayland::proxy\_t::get\_version () const` [inherited]`

*Get the protocol object version of a proxy object. Gets the protocol object version of a proxy object, or 0 if the proxy was created with unversioned API.*

*A returned value of 0 means that no version information is available, so the caller must make safe assumptions about the object's real version.*

**display\_t** *will always return version 0.*

**Returns**

*The protocol object version of the proxy or 0*

### wrapper\_type wayland::proxy\_t::get\_wrapper\_type () const` [inline]`, ` [inherited]`

*Get the type of a proxy object.*

*Definition at line* **302** *of file* **wayland-client.hpp***.*

### std::function\< void(uint32\_t, surface\_t, array\_t)\> & keyboard\_t::on\_enter ()

*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.*

*Definition at line* **3135** *of file* **wayland-client-protocol.cpp***.*

### std::function\< void(uint32\_t, uint32\_t, uint32\_t, keyboard\_key\_state)\> & keyboard\_t::on\_key ()

*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.*

*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.*

**Examples** **egl.cpp***, and* **shm.cpp***.*

*Definition at line* **3145** *of file* **wayland-client-protocol.cpp***.*

### std::function\< void(keyboard\_keymap\_format, int, uint32\_t)\> & keyboard\_t::on\_keymap ()

*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.*

**Examples** **proxy\_wrapper.cpp***.*

*Definition at line* **3130** *of file* **wayland-client-protocol.cpp***.*

### std::function\< void(uint32\_t, surface\_t)\> & keyboard\_t::on\_leave ()

*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.*

*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.*

*Definition at line* **3140** *of file* **wayland-client-protocol.cpp***.*

### std::function\< void(uint32\_t, uint32\_t, uint32\_t, uint32\_t, uint32\_t)\> & keyboard\_t::on\_modifiers ()

*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.*

*Definition at line* **3150** *of file* **wayland-client-protocol.cpp***.*

### std::function\< void(int32\_t, int32\_t)\> & keyboard\_t::on\_repeat\_info ()

*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.*

*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.*

*Definition at line* **3155** *of file* **wayland-client-protocol.cpp***.*

### wayland::proxy\_t::operator bool () const` [inherited]`

*Check whether this wrapper actually wraps an object.*

**Returns**

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

### bool wayland::proxy\_t::operator!= (const proxy\_t & right) const` [inherited]`

*Check whether two wrappers refer to different objects.*

### bool wayland::proxy\_t::operator== (const proxy\_t & right) const` [inherited]`

*Check whether two wrappers refer to the same object.*

### bool wayland::proxy\_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 wayland::proxy\_t::proxy\_release ()` [inherited]`

*Release the wrapped object (if any), making this an empty wrapper. Note that* **display\_t** *instances cannot be released this way. Attempts to do so are ignored.*

**Examples** **foreign\_display.cpp***.*

### void keyboard\_t::release ()

*release the keyboard object*

*Definition at line* **3119** *of file* **wayland-client-protocol.cpp***.*

### void wayland::proxy\_t::set\_queue (event\_queue\_t queue)` [inherited]`

*Assign a proxy to an event queue.*

**Parameters**

*queue The event queue that will handle this proxy*

*Assign proxy to event queue. Events coming from proxy will be queued in queue instead of the display's main queue.*

*See also:* **display\_t::dispatch\_queue()***.*

**Examples** **proxy\_wrapper.cpp***.*

## Member Data Documentation

### constexpr std::uint32\_t wayland::keyboard\_t::release\_since\_version = 3` [static]`, ` [constexpr]`

*Minimum protocol version required for the* **release** *function.*

*Definition at line* **3151** *of file* **wayland-client-protocol.hpp***.*

## Author

*Generated automatically by Doxygen for Wayland++ from the source code.*
