virtual-keyboard: add support for the virtual-keyboard-v1 protocol

This commit is contained in:
Dorota Czaplejewicz 2018-05-24 19:46:54 +02:00
parent a94c56a828
commit 5334ee8bfd
10 changed files with 427 additions and 0 deletions

View file

@ -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;
}

View file

@ -9,6 +9,7 @@ sources = [
'main.c',
'output.c',
'seat.c',
'virtual_keyboard.c',
'wl_shell.c',
'xdg_shell_v6.c',
'xdg_shell.c',

View 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);
}