Merge pull request #999 from dcz-purism/virtual-keyboard

Support virtual keyboard protocol
This commit is contained in:
emersion 2018-05-29 18:22:44 +01:00 committed by GitHub
commit e1f56538a8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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);
}