mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-10-31 22:25:21 -04:00
Merge pull request #999 from dcz-purism/virtual-keyboard
Support virtual keyboard protocol
This commit is contained in:
commit
e1f56538a8
10 changed files with 427 additions and 0 deletions
|
|
@ -26,6 +26,7 @@
|
|||
#include "rootston/seat.h"
|
||||
#include "rootston/server.h"
|
||||
#include "rootston/view.h"
|
||||
#include "rootston/virtual_keyboard.h"
|
||||
#include "rootston/xcursor.h"
|
||||
#include "wlr-layer-shell-unstable-v1-protocol.h"
|
||||
|
||||
|
|
@ -865,6 +866,12 @@ struct roots_desktop *desktop_create(struct roots_server *server,
|
|||
|
||||
desktop->linux_dmabuf = wlr_linux_dmabuf_create(server->wl_display,
|
||||
server->renderer);
|
||||
|
||||
desktop->virtual_keyboard = wlr_virtual_keyboard_manager_v1_create(
|
||||
server->wl_display);
|
||||
wl_signal_add(&desktop->virtual_keyboard->events.new_virtual_keyboard,
|
||||
&desktop->virtual_keyboard_new);
|
||||
desktop->virtual_keyboard_new.notify = handle_virtual_keyboard;
|
||||
return desktop;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ sources = [
|
|||
'main.c',
|
||||
'output.c',
|
||||
'seat.c',
|
||||
'virtual_keyboard.c',
|
||||
'wl_shell.c',
|
||||
'xdg_shell_v6.c',
|
||||
'xdg_shell.c',
|
||||
|
|
|
|||
21
rootston/virtual_keyboard.c
Normal file
21
rootston/virtual_keyboard.c
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#define _POSIX_C_SOURCE 199309L
|
||||
|
||||
#include <wlr/util/log.h>
|
||||
#include <wlr/types/wlr_virtual_keyboard_v1.h>
|
||||
#include "rootston/virtual_keyboard.h"
|
||||
#include "rootston/seat.h"
|
||||
|
||||
void handle_virtual_keyboard(struct wl_listener *listener, void *data) {
|
||||
struct roots_desktop *desktop =
|
||||
wl_container_of(listener, desktop, virtual_keyboard_new);
|
||||
struct wlr_virtual_keyboard_v1 *keyboard = data;
|
||||
|
||||
struct roots_seat *seat = input_seat_from_wlr_seat(desktop->server->input,
|
||||
keyboard->seat);
|
||||
if (!seat) {
|
||||
wlr_log(L_ERROR, "could not find roots seat");
|
||||
return;
|
||||
}
|
||||
|
||||
roots_seat_add_device(seat, &keyboard->input_device);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue