include: update to v4.5 linux/uinput.h
authorPeter Hutterer <peter.hutterer@who-t.net>
Wed, 6 Apr 2016 05:55:10 +0000 (15:55 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 7 Apr 2016 00:43:11 +0000 (10:43 +1000)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
include/linux/uinput.h

index 5eaad8a116a7bf9aaa7875af21a97a2faf218893..434f02db66bb69ddeb6e0bcbcaa70c56cc6b7b19 100644 (file)
  * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org>
  *
  * Changes/Revisions:
+ *     0.5     08/13/2015 (David Herrmann <dh.herrmann@gmail.com> &
+ *                         Benjamin Tissoires <benjamin.tissoires@redhat.com>)
+ *             - add UI_DEV_SETUP ioctl
+ *             - add UI_ABS_SETUP ioctl
+ *             - add UI_GET_VERSION ioctl
  *     0.4     01/09/2014 (Benjamin Tissoires <benjamin.tissoires@redhat.com>)
  *             - add UI_GET_SYSNAME ioctl
  *     0.3     24/05/2006 (Anssi Hannula <anssi.hannulagmail.com>)
@@ -37,8 +42,8 @@
 #include <linux/types.h>
 #include <linux/input.h>
 
-#define UINPUT_VERSION         4
-
+#define UINPUT_VERSION         5
+#define UINPUT_MAX_NAME_SIZE   80
 
 struct uinput_ff_upload {
        __u32                   request_id;
@@ -58,6 +63,76 @@ struct uinput_ff_erase {
 #define UI_DEV_CREATE          _IO(UINPUT_IOCTL_BASE, 1)
 #define UI_DEV_DESTROY         _IO(UINPUT_IOCTL_BASE, 2)
 
+struct uinput_setup {
+       struct input_id id;
+       char name[UINPUT_MAX_NAME_SIZE];
+       __u32 ff_effects_max;
+};
+
+/**
+ * UI_DEV_SETUP - Set device parameters for setup
+ *
+ * This ioctl sets parameters for the input device to be created.  It
+ * supersedes the old "struct uinput_user_dev" method, which wrote this data
+ * via write(). To actually set the absolute axes UI_ABS_SETUP should be
+ * used.
+ *
+ * The ioctl takes a "struct uinput_setup" object as argument. The fields of
+ * this object are as follows:
+ *              id: See the description of "struct input_id". This field is
+ *                  copied unchanged into the new device.
+ *            name: This is used unchanged as name for the new device.
+ *  ff_effects_max: This limits the maximum numbers of force-feedback effects.
+ *                  See below for a description of FF with uinput.
+ *
+ * This ioctl can be called multiple times and will overwrite previous values.
+ * If this ioctl fails with -EINVAL, it is recommended to use the old
+ * "uinput_user_dev" method via write() as a fallback, in case you run on an
+ * old kernel that does not support this ioctl.
+ *
+ * This ioctl may fail with -EINVAL if it is not supported or if you passed
+ * incorrect values, -ENOMEM if the kernel runs out of memory or -EFAULT if the
+ * passed uinput_setup object cannot be read/written.
+ * If this call fails, partial data may have already been applied to the
+ * internal device.
+ */
+#define UI_DEV_SETUP _IOW(UINPUT_IOCTL_BASE, 3, struct uinput_setup)
+
+struct uinput_abs_setup {
+       __u16  code; /* axis code */
+       /* __u16 filler; */
+       struct input_absinfo absinfo;
+};
+
+/**
+ * UI_ABS_SETUP - Set absolute axis information for the device to setup
+ *
+ * This ioctl sets one absolute axis information for the input device to be
+ * created. It supersedes the old "struct uinput_user_dev" method, which wrote
+ * part of this data and the content of UI_DEV_SETUP via write().
+ *
+ * The ioctl takes a "struct uinput_abs_setup" object as argument. The fields
+ * of this object are as follows:
+ *            code: The corresponding input code associated with this axis
+ *                  (ABS_X, ABS_Y, etc...)
+ *         absinfo: See "struct input_absinfo" for a description of this field.
+ *                  This field is copied unchanged into the kernel for the
+ *                  specified axis. If the axis is not enabled via
+ *                  UI_SET_ABSBIT, this ioctl will enable it.
+ *
+ * This ioctl can be called multiple times and will overwrite previous values.
+ * If this ioctl fails with -EINVAL, it is recommended to use the old
+ * "uinput_user_dev" method via write() as a fallback, in case you run on an
+ * old kernel that does not support this ioctl.
+ *
+ * This ioctl may fail with -EINVAL if it is not supported or if you passed
+ * incorrect values, -ENOMEM if the kernel runs out of memory or -EFAULT if the
+ * passed uinput_setup object cannot be read/written.
+ * If this call fails, partial data may have already been applied to the
+ * internal device.
+ */
+#define UI_ABS_SETUP _IOW(UINPUT_IOCTL_BASE, 4, struct uinput_abs_setup)
+
 #define UI_SET_EVBIT           _IOW(UINPUT_IOCTL_BASE, 100, int)
 #define UI_SET_KEYBIT          _IOW(UINPUT_IOCTL_BASE, 101, int)
 #define UI_SET_RELBIT          _IOW(UINPUT_IOCTL_BASE, 102, int)
@@ -144,7 +219,6 @@ struct uinput_ff_erase {
 #define UI_FF_UPLOAD           1
 #define UI_FF_ERASE            2
 
-#define UINPUT_MAX_NAME_SIZE   80
 struct uinput_user_dev {
        char name[UINPUT_MAX_NAME_SIZE];
        struct input_id id;