#include <string.h>
#include <fcntl.h>
#include <unistd.h>
+#include <linux/input.h>
#include <xf86drm.h>
#include <xf86drmMode.h>
};
}
+static void
+switch_vt_binding(struct wl_input_device *device, uint32_t time,
+ uint32_t key, uint32_t button, uint32_t axis, int32_t state, void *data)
+{
+ struct drm_compositor *ec = data;
+
+ if (state)
+ tty_activate_vt(ec->tty, key - KEY_F1 + 1);
+}
+
static const char default_seat[] = "seat0";
static struct weston_compositor *
struct udev_device *device, *drm_device;
const char *path, *device_seat;
struct wl_event_loop *loop;
+ uint32_t key;
ec = malloc(sizeof *ec);
if (ec == NULL)
if (weston_compositor_init(&ec->base, display) < 0)
return NULL;
+ for (key = KEY_F1; key < KEY_F9; key++)
+ weston_compositor_add_binding(&ec->base, key, 0, 0,
+ MODIFIER_CTRL | MODIFIER_ALT,
+ switch_vt_binding, ec);
+
wl_list_init(&ec->sprite_list);
create_sprites(ec);
return fd;
}
+int
+tty_activate_vt(struct tty *tty, int vt)
+{
+ return ioctl(tty->fd, VT_ACTIVATE, vt);
+}
+
struct tty *
tty_create(struct weston_compositor *compositor, tty_vt_func_t vt_func,
int tty_nr)