From 983a5de257daeffa011fda0ef3e811d8f38ed67a Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 27 Mar 2013 21:19:55 +0000 Subject: make mouse buttons work --- src/surface/wld.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/surface/wld.c b/src/surface/wld.c index 198c15f..7843639 100644 --- a/src/surface/wld.c +++ b/src/surface/wld.c @@ -20,6 +20,7 @@ #include #include +#include #include #include "libnsfb.h" @@ -968,6 +969,39 @@ static void pointer_handle_button(void *data, struct wl_pointer *pointer, uint32_t serial, uint32_t time, uint32_t button, uint32_t state_w) { + struct wld_input *input = data; + struct wld_event *event; + enum wl_pointer_button_state state = state_w; + + event = calloc(1, sizeof(struct wld_event)); + + if (state == WL_POINTER_BUTTON_STATE_PRESSED) { + event->event.type = NSFB_EVENT_KEY_DOWN; + } else { + event->event.type = NSFB_EVENT_KEY_UP; + } + + switch (button) { + case BTN_LEFT: + event->event.value.keycode = NSFB_KEY_MOUSE_1; + break; + case BTN_MIDDLE: + event->event.value.keycode = NSFB_KEY_MOUSE_2; + break; + case BTN_RIGHT: + event->event.value.keycode = NSFB_KEY_MOUSE_3; + break; + case BTN_FORWARD: + event->event.value.keycode = NSFB_KEY_MOUSE_4; + break; + case BTN_BACK: + event->event.value.keycode = NSFB_KEY_MOUSE_5; + break; + } + + enqueue_wld_event(input->connection, event); + + #if 0 struct input *input = data; struct widget *widget; -- cgit v1.2.3