Hi, On 06/03/2014 07:35 AM, Peter Hutterer wrote: > --- > src/libinput-private.h | 8 ++++++++ > src/libinput.c | 33 ++++++++++++++++++++++++++++++ > src/libinput.h | 54 > ++++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 95 insertions(+) > > diff --git a/src/libinput-private.h b/src/libinput-private.h > index 22220de..28f071a 100644 > --- a/src/libinput-private.h > +++ b/src/libinput-private.h > @@ -120,6 +120,13 @@ struct libinput_device_config_pointer_mode { > void (*reset)(struct libinput_device *device); > }; > > +struct libinput_device_config_middlebutton_emulation { > + int (*available)(struct libinput_device *device); > + int (*enable)(struct libinput_device *device, int enable); > + int (*is_enabled)(struct libinput_device *device); > + void (*reset)(struct libinput_device *device); > +}; > +
Again set / get / get_default ? Other then that this looks good. Regards, Hans > struct libinput_device_config { > struct libinput_device_config_tap *tap; > struct libinput_device_config_scroll *scroll; > @@ -127,6 +134,7 @@ struct libinput_device_config { > struct libinput_device_config_accel *accel; > struct libinput_device_config_disable_while_typing *dwt; > struct libinput_device_config_pointer_mode *mode; > + struct libinput_device_config_middlebutton_emulation *mbemu; > }; > > struct libinput_device { > diff --git a/src/libinput.c b/src/libinput.c > index 5324407..bd06960 100644 > --- a/src/libinput.c > +++ b/src/libinput.c > @@ -1406,3 +1406,36 @@ libinput_device_config_pointer_mode_reset(struct > libinput_device *device) > if (device->config.mode) > device->config.mode->reset(device); > } > + > +LIBINPUT_EXPORT int > +libinput_device_config_middlebutton_emulation_is_available(struct > libinput_device *device) > +{ > + return device->config.mbemu ? > + device->config.mbemu->available(device) : 0; > +} > + > +LIBINPUT_EXPORT enum libinput_config_status > +libinput_device_config_middlebutton_emulation_enable(struct libinput_device > *device, > + int enable) > +{ > + if (!libinput_device_config_middlebutton_emulation_is_available(device)) > + return LIBINPUT_CONFIG_STATUS_UNSUPPORTED; > + > + return device->config.mbemu->enable(device, enable); > +} > + > +LIBINPUT_EXPORT int > +libinput_device_config_middlebutton_emulation_is_enabled(struct > libinput_device *device) > +{ > + if (!libinput_device_config_middlebutton_emulation_is_available(device)) > + return 0; > + > + return device->config.mbemu->is_enabled(device); > +} > + > +LIBINPUT_EXPORT void > +libinput_device_config_middlebutton_emulation_reset(struct libinput_device > *device) > +{ > + if (device->config.mbemu) > + device->config.mbemu->reset(device); > +} > diff --git a/src/libinput.h b/src/libinput.h > index 1a51b82..b78283f 100644 > --- a/src/libinput.h > +++ b/src/libinput.h > @@ -1789,6 +1789,60 @@ libinput_device_config_pointer_mode_get_mode(struct > libinput_device *device); > void > libinput_device_config_pointer_mode_reset(struct libinput_device *device); > > +/** > + * @ingroup config > + * > + * Devices without a physical middle button may provide middle-button > + * emulation by pressing the left and the right button simultaneously. > + * > + * @param device The device to configure > + * > + * @return 1 if available, 0 if not available > + */ > +int > +libinput_device_config_middlebutton_emulation_is_available(struct > libinput_device *device); > + > +/** > + * @ingroup config > + * > + * Enable or disable middle button emulation on this device. Note that > + * enabling middle button emulation causes a delay in the delivery of button > + * events. > + * > + * @param device The device to configure > + * @param enable 1 to enable, 0 to disable > + * > + * @return A config status code > + */ > +enum libinput_config_status > +libinput_device_config_middlebutton_emulation_enable(struct libinput_device > *device, > + int enable); > + > +/** > + * @ingroup config > + * > + * Check if middle button emulation is enabled on this device. If the device > + * does not support middle button emulation, this function returns 0. > + * > + * @param device The device to configure > + * > + * @return 0 if disabled, 1 if enabled > + */ > +int > +libinput_device_config_middlebutton_emulation_is_enabled(struct > libinput_device *device); > + > +/** > + * @ingroup config > + * > + * Reset to the default emulation status. If the device does not support > + * middle button emulation, this function does nothing. > + * > + * @param device The device to configure > + * > + */ > +void > +libinput_device_config_middlebutton_emulation_reset(struct libinput_device > *device); > + > > #ifdef __cplusplus > } > _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel