[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