virtual-keyboard: add wlr_virtual_keyboard_v1_from_resource()

I want to use the zwp_virtual_keyboard_v1 object in a custom river
protocol and need to be able to obtain the corresponding wlroots struct.
This commit is contained in:
Isaac Freund 2026-03-17 09:29:21 +01:00 committed by Simon Ser
parent 1fc928d528
commit ec746d3e3e
2 changed files with 16 additions and 5 deletions

View file

@ -38,7 +38,18 @@ struct wlr_virtual_keyboard_v1 {
struct wlr_virtual_keyboard_manager_v1* wlr_virtual_keyboard_manager_v1_create( struct wlr_virtual_keyboard_manager_v1* wlr_virtual_keyboard_manager_v1_create(
struct wl_display *display); struct wl_display *display);
/**
* Get the struct wlr_virtual_keyboard_v1 corresponding to a zwp_virtual_keyboard_v1 resource.
*
* Asserts that the resource is a valid zwp_virtual_keyboard_v1 resource created by wlroots.
*
* Returns NULL if the resource is inert.
*/
struct wlr_virtual_keyboard_v1 *wlr_virtual_keyboard_v1_from_resource(
struct wl_resource *resource);
struct wlr_virtual_keyboard_v1 *wlr_input_device_get_virtual_keyboard( struct wlr_virtual_keyboard_v1 *wlr_input_device_get_virtual_keyboard(
struct wlr_input_device *wlr_dev); struct wlr_input_device *wlr_dev);
#endif #endif

View file

@ -15,7 +15,7 @@ static const struct wlr_keyboard_impl keyboard_impl = {
static const struct zwp_virtual_keyboard_v1_interface virtual_keyboard_impl; static const struct zwp_virtual_keyboard_v1_interface virtual_keyboard_impl;
static struct wlr_virtual_keyboard_v1 *virtual_keyboard_from_resource( struct wlr_virtual_keyboard_v1 *wlr_virtual_keyboard_v1_from_resource(
struct wl_resource *resource) { struct wl_resource *resource) {
assert(wl_resource_instance_of(resource, assert(wl_resource_instance_of(resource,
&zwp_virtual_keyboard_v1_interface, &virtual_keyboard_impl)); &zwp_virtual_keyboard_v1_interface, &virtual_keyboard_impl));
@ -39,7 +39,7 @@ static void virtual_keyboard_keymap(struct wl_client *client,
struct wl_resource *resource, uint32_t format, int32_t fd, struct wl_resource *resource, uint32_t format, int32_t fd,
uint32_t size) { uint32_t size) {
struct wlr_virtual_keyboard_v1 *keyboard = struct wlr_virtual_keyboard_v1 *keyboard =
virtual_keyboard_from_resource(resource); wlr_virtual_keyboard_v1_from_resource(resource);
if (keyboard == NULL) { if (keyboard == NULL) {
return; return;
} }
@ -76,7 +76,7 @@ static void virtual_keyboard_key(struct wl_client *client,
struct wl_resource *resource, uint32_t time, uint32_t key, struct wl_resource *resource, uint32_t time, uint32_t key,
uint32_t state) { uint32_t state) {
struct wlr_virtual_keyboard_v1 *keyboard = struct wlr_virtual_keyboard_v1 *keyboard =
virtual_keyboard_from_resource(resource); wlr_virtual_keyboard_v1_from_resource(resource);
if (keyboard == NULL) { if (keyboard == NULL) {
return; return;
} }
@ -99,7 +99,7 @@ static void virtual_keyboard_modifiers(struct wl_client *client,
struct wl_resource *resource, uint32_t mods_depressed, struct wl_resource *resource, uint32_t mods_depressed,
uint32_t mods_latched, uint32_t mods_locked, uint32_t group) { uint32_t mods_latched, uint32_t mods_locked, uint32_t group) {
struct wlr_virtual_keyboard_v1 *keyboard = struct wlr_virtual_keyboard_v1 *keyboard =
virtual_keyboard_from_resource(resource); wlr_virtual_keyboard_v1_from_resource(resource);
if (keyboard == NULL) { if (keyboard == NULL) {
return; return;
} }
@ -115,7 +115,7 @@ static void virtual_keyboard_modifiers(struct wl_client *client,
static void virtual_keyboard_destroy_resource(struct wl_resource *resource) { static void virtual_keyboard_destroy_resource(struct wl_resource *resource) {
struct wlr_virtual_keyboard_v1 *keyboard = struct wlr_virtual_keyboard_v1 *keyboard =
virtual_keyboard_from_resource(resource); wlr_virtual_keyboard_v1_from_resource(resource);
if (keyboard == NULL) { if (keyboard == NULL) {
return; return;
} }