On Sun, 12 Nov 2017 11:33:28 +0100 [email protected] said: > Hello, > > in configure.ac we check for libinput 0.8 but this api is added in 1.6 > so we should require now 1.6 ?
indeed we should. in fact the checks are a bit messy. we still checked for 0.6.0 too... and we dealt with an api change at 0.8 ... time to just require 1.6. it came out jan 2017 .. so it's pushing on a year old. at least for wayland kind of stuff needing bleeding edge things it pretty normal. > On Wed, Nov 08, 2017 at 03:39:11AM -0800, Carsten Haitzler wrote: > > raster pushed a commit to branch master. > > > > http://git.enlightenment.org/core/efl.git/commit/?id=7a7abb043add0af083c46305824d8c341daf2374 > > > > commit 7a7abb043add0af083c46305824d8c341daf2374 > > Author: Carsten Haitzler (Rasterman) <[email protected]> > > Date: Tue Nov 7 11:04:03 2017 +0900 > > > > elput - re-enable switches (power buttons, lid etc.) > > > > this is needed for devices that no longer produce aspi events for > > these. otherwise good luck getting any event on lid open/close or on > > pressing the power button. this also stops hiding switch events from > > libinput and now you can get switch events to find lid or tablet mode > > switching changes. > > > > @fix > > --- > > src/lib/elput/Elput.h | 27 +++++++++++++++++++++++++++ > > src/lib/elput/elput.c | 3 +++ > > src/lib/elput/elput_evdev.c | 37 ++++++++++++++++++++++++------------- > > 3 files changed, 54 insertions(+), 13 deletions(-) > > > > diff --git a/src/lib/elput/Elput.h b/src/lib/elput/Elput.h > > index b05536130b..db62c52d10 100644 > > --- a/src/lib/elput/Elput.h > > +++ b/src/lib/elput/Elput.h > > @@ -38,6 +38,7 @@ typedef enum > > ELPUT_DEVICE_CAPS_TABLET_TOOL = (1 << 3), > > ELPUT_DEVICE_CAPS_TABLET_PAD = (1 << 4), > > ELPUT_DEVICE_CAPS_GESTURE = (1 << 5), > > + ELPUT_DEVICE_CAPS_SWITCH = (1 << 6), > > } Elput_Device_Caps; > > > > /* opaque structure to represent an input manager */ > > @@ -112,6 +113,29 @@ typedef struct Elput_Event_Pointer_Motion > > double dy_unaccel; > > } Elput_Event_Pointer_Motion; > > > > +/** @since 1.21 */ > > +typedef enum > > +{ > > + ELPUT_SWITCH_TYPE_LID = 1, > > + ELPUT_SWITCH_TYPE_TABLET_MODE, > > +} Elput_Switch_Type; > > + > > +/** @since 1.21 */ > > +typedef enum > > +{ > > + ELPUT_SWITCH_STATE_OFF = 0, > > + ELPUT_SWITCH_STATE_ON = 1, > > +} Elput_Switch_State; > > + > > +/** @since 1.21 */ > > +typedef struct _Elput_Event_Switch > > +{ > > + Elput_Device *device; > > + uint64_t time_usec; > > + Elput_Switch_Type type; > > + Elput_Switch_State state; > > +} Elput_Event_Switch; > > + > > > > EAPI extern int ELPUT_EVENT_SEAT_CAPS; > > EAPI extern int ELPUT_EVENT_SEAT_FRAME; > > @@ -122,6 +146,9 @@ EAPI extern int ELPUT_EVENT_SESSION_ACTIVE; > > /** @since 1.19 */ > > EAPI extern int ELPUT_EVENT_POINTER_MOTION; > > > > +/** @since 1.21 */ > > +EAPI extern int ELPUT_EVENT_SWITCH; > > + > > /** > > * @file > > * @brief Ecore functions for dealing with libinput > > diff --git a/src/lib/elput/elput.c b/src/lib/elput/elput.c > > index 9519129759..f3cda411ea 100644 > > --- a/src/lib/elput/elput.c > > +++ b/src/lib/elput/elput.c > > @@ -13,6 +13,7 @@ EAPI int ELPUT_EVENT_MODIFIERS_SEND = 0; > > EAPI int ELPUT_EVENT_DEVICE_CHANGE = 0; > > EAPI int ELPUT_EVENT_SESSION_ACTIVE = 0; > > EAPI int ELPUT_EVENT_POINTER_MOTION = 0; > > +EAPI int ELPUT_EVENT_SWITCH = 0; > > EAPI int elput_event_session_ready = 0; > > > > EAPI int > > @@ -41,6 +42,7 @@ elput_init(void) > > ELPUT_EVENT_DEVICE_CHANGE = ecore_event_type_new(); > > ELPUT_EVENT_SESSION_ACTIVE = ecore_event_type_new(); > > ELPUT_EVENT_POINTER_MOTION = ecore_event_type_new(); > > + ELPUT_EVENT_SWITCH = ecore_event_type_new(); > > elput_event_session_ready = ecore_event_type_new(); > > } > > > > @@ -71,6 +73,7 @@ elput_shutdown(void) > > ELPUT_EVENT_DEVICE_CHANGE, > > ELPUT_EVENT_SESSION_ACTIVE, > > ELPUT_EVENT_POINTER_MOTION, > > + ELPUT_EVENT_SWITCH, > > elput_event_session_ready); > > > > eina_log_domain_unregister(_elput_log_dom); > > diff --git a/src/lib/elput/elput_evdev.c b/src/lib/elput/elput_evdev.c > > index 09d75932f8..afa42df68c 100644 > > --- a/src/lib/elput/elput_evdev.c > > +++ b/src/lib/elput/elput_evdev.c > > @@ -1595,6 +1595,20 @@ _tablet_tool_tip(struct libinput_device *idev, > > struct libinput_event_tablet_tool _pointer_button_send(dev, press[state]); > > } > > > > +static void > > +_switch_toggle(struct libinput_device *idev, struct libinput_event_switch > > *event) +{ > > + Elput_Event_Switch *ev; > > + > > + ev = calloc(1, sizeof(Elput_Event_Switch)); > > + if (!ev) return; > > + ev->device = libinput_device_get_user_data(idev); > > + ev->time_usec = libinput_event_switch_get_time_usec(event); > > + ev->type = (Elput_Switch_Type)libinput_event_switch_get_switch(event); > > + ev->state = (Elput_Switch_State)libinput_event_switch_get_switch_state > > (event); > > + ecore_event_add(ELPUT_EVENT_SWITCH, ev, NULL, NULL); > > +} > > + > > int > > _evdev_event_process(struct libinput_event *event) > > { > > @@ -1642,6 +1656,9 @@ _evdev_event_process(struct libinput_event *event) > > case LIBINPUT_EVENT_TABLET_TOOL_TIP: /* is this useful? */ > > _tablet_tool_tip(idev, libinput_event_get_tablet_tool_event > > (event)); break; > > + case LIBINPUT_EVENT_SWITCH_TOGGLE: > > + _switch_toggle(idev, libinput_event_get_switch_event(event)); > > + break; > > default: > > ret = 0; > > break; > > @@ -1670,7 +1687,6 @@ _evdev_device_create(Elput_Seat *seat, struct > > libinput_device *device) edev->refs = 1; > > edev->seat = seat; > > edev->device = device; > > - edev->caps = 0; > > edev->ow = seat->manager->output_w; > > edev->oh = seat->manager->output_h; > > > > @@ -1679,13 +1695,14 @@ _evdev_device_create(Elput_Seat *seat, struct > > libinput_device *device) oname = libinput_device_get_name(device); > > eina_stringshare_replace(&edev->output_name, oname); > > > > + if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_SWITCH)) > > + edev->caps |= ELPUT_DEVICE_CAPS_SWITCH; > > if ((libinput_device_has_capability(device, > > LIBINPUT_DEVICE_CAP_KEYBOARD)) && (libinput_device_keyboard_has_key(device, > > KEY_ENTER))) > > - { > > - _keyboard_init(seat, seat->manager->cached.keymap); > > - edev->caps |= ELPUT_DEVICE_CAPS_KEYBOARD; > > - } > > - > > + edev->caps |= ELPUT_DEVICE_CAPS_KEYBOARD; > > + if (edev->caps & (ELPUT_DEVICE_CAPS_SWITCH | > > ELPUT_DEVICE_CAPS_KEYBOARD)) > > + _keyboard_init(seat, seat->manager->cached.keymap); > > + > > if ((libinput_device_has_capability(device, > > LIBINPUT_DEVICE_CAP_POINTER) && (libinput_device_pointer_has_button(device, > > BTN_LEFT)))) edev->caps |= ELPUT_DEVICE_CAPS_POINTER; > > @@ -1694,10 +1711,7 @@ _evdev_device_create(Elput_Seat *seat, struct > > libinput_device *device) if (libinput_device_has_capability(device, > > LIBINPUT_DEVICE_CAP_TABLET_PAD)) edev->caps |= ELPUT_DEVICE_CAPS_TABLET_PAD; > > if (edev->caps & ELPUT_DEVICE_CAPS_POINTER) > > - { > > - _pointer_init(seat); > > - edev->caps |= ELPUT_DEVICE_CAPS_POINTER; > > - } > > + _pointer_init(seat); > > > > if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_TOUCH)) > > edev->caps |= ELPUT_DEVICE_CAPS_TOUCH; > > @@ -1706,8 +1720,6 @@ _evdev_device_create(Elput_Seat *seat, struct > > libinput_device *device) if (edev->caps & ELPUT_DEVICE_CAPS_TOUCH) > > _touch_init(seat); > > > > - if (!edev->caps) goto err; > > - > > libinput_device_set_user_data(device, edev); > > libinput_device_ref(edev->device); > > > > @@ -1721,7 +1733,6 @@ _evdev_device_create(Elput_Seat *seat, struct > > libinput_device *device) > > return edev; > > > > -err: > > eina_stringshare_del(edev->output_name); > > free(edev); > > return NULL; > > > > -- > > > > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > enlightenment-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- Carsten Haitzler - [email protected] ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
