[PATCH libinput 08/10] Add a config API for disable-while-typing
Peter Hutterer
peter.hutterer at who-t.net
Mon Jun 2 22:35:01 PDT 2014
---
src/libinput-private.h | 9 ++++++++
src/libinput.c | 33 +++++++++++++++++++++++++++++
src/libinput.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 98 insertions(+)
diff --git a/src/libinput-private.h b/src/libinput-private.h
index 85113bd..9a3e629 100644
--- a/src/libinput-private.h
+++ b/src/libinput-private.h
@@ -104,11 +104,20 @@ struct libinput_device_config_accel {
void (*reset)(struct libinput_device *device);
};
+struct libinput_device_config_disable_while_typing {
+ int (*available)(struct libinput_device *device);
+ enum libinput_config_status (*enable)(struct libinput_device *device,
+ int enable);
+ int (*is_enabled)(struct libinput_device *device);
+ void (*reset)(struct libinput_device *device);
+};
+
struct libinput_device_config {
struct libinput_device_config_tap *tap;
struct libinput_device_config_scroll *scroll;
struct libinput_device_config_rotation *rotation;
struct libinput_device_config_accel *accel;
+ struct libinput_device_config_disable_while_typing *dwt;
};
struct libinput_device {
diff --git a/src/libinput.c b/src/libinput.c
index 5a068f1..33a8e90 100644
--- a/src/libinput.c
+++ b/src/libinput.c
@@ -1336,3 +1336,36 @@ libinput_device_config_accel_reset(struct libinput_device *device)
if (device->config.accel)
device->config.accel->reset(device);
}
+
+LIBINPUT_EXPORT int
+libinput_device_config_disable_while_typing_is_available(struct libinput_device *device)
+{
+ return device->config.dwt ?
+ device->config.dwt->available(device) : 0;
+}
+
+LIBINPUT_EXPORT enum libinput_config_status
+libinput_device_config_disable_while_typing_enable(struct libinput_device *device,
+ int enable)
+{
+ if (!libinput_device_config_disable_while_typing_is_available(device))
+ return LIBINPUT_CONFIG_STATUS_UNSUPPORTED;
+
+ return device->config.dwt->enable(device, enable);
+}
+
+LIBINPUT_EXPORT int
+libinput_device_config_disable_while_typing_is_enabled(struct libinput_device *device)
+{
+ if (!libinput_device_config_disable_while_typing_is_available(device))
+ return 0;
+
+ return device->config.dwt->is_enabled(device);
+}
+
+LIBINPUT_EXPORT void
+libinput_device_config_disable_while_typing_reset(struct libinput_device *device)
+{
+ if (device->config.dwt)
+ device->config.dwt->reset(device);
+}
diff --git a/src/libinput.h b/src/libinput.h
index 1b6207c..62d0c0f 100644
--- a/src/libinput.h
+++ b/src/libinput.h
@@ -1657,6 +1657,62 @@ libinput_device_config_accel_get_precision(struct libinput_device *device);
void
libinput_device_config_accel_reset(struct libinput_device *device);
+/**
+ * @ingroup config
+ *
+ * Check if this device supports a disable-while-typing feature. This
+ * feature is usually available on built-in touchpads where hand placement
+ * may cause erroneous events on the touchpad while typing.
+ *
+ * This feature is available on the device that is being disabled (i.e. the
+ * touchpad), not on the device causing the device to be disabled. Which
+ * devices trigger this feature is implementation-dependent.
+ *
+ * @param device The device to configure
+ * @return non-zero if disable while typing is available for this device
+ */
+int
+libinput_device_config_disable_while_typing_is_available(struct libinput_device *device);
+
+/**
+ * @ingroup config
+ *
+ * Enable or disable the disable-while-typing feature. When enabled, the
+ * device will not send events while and shortly after another device
+ * generates events.
+ *
+ * @param device The device to configure
+ * @param enable 0 to disable, 1 to enable
+ *
+ * @return 0 on success or a negative errno on failure
+ * @retval A config status code
+ */
+enum libinput_config_status
+libinput_device_config_disable_while_typing_enable(struct libinput_device *device,
+ int enable);
+
+/**
+ * @ingroup config
+ *
+ * Check if the feature is currently enabled.
+ *
+ * @param device The device to configure
+ *
+ * @return 0 if the feature is disabled, non-zero if the feature is enabled
+ */
+int
+libinput_device_config_disable_while_typing_is_enabled(struct libinput_device *device);
+
+/**
+ * @ingroup config
+ *
+ * Reset to the default settings.
+ *
+ * @param device The device to configure
+ */
+void
+libinput_device_config_disable_while_typing_reset(struct libinput_device *device);
+
#ifdef __cplusplus
}
#endif
--
1.9.0
More information about the wayland-devel
mailing list