summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiclas Zeising <zeising@FreeBSD.org>2019-01-31 07:55:55 +0000
committerNiclas Zeising <zeising@FreeBSD.org>2019-01-31 07:55:55 +0000
commit037c497674e2c3896f3d479ce00574c937003d0f (patch)
treef4f78604653fb597d38b66fa42e8559f16ad7dff
parent6ecb72b5d23ffebed3edbeb9c92e4f53e1469e9b (diff)
downloadfreebsd-ports-037c497674e2c3896f3d479ce00574c937003d0f.zip
x11/libinput: update to 1.12.6, fixup
Fix previous commit, r491694, by actually removing old patches and adding new ones. This was missed in the transition from git to svn. PR: 222905 Reported by: Greg V (original version) Obtained from: FreeBSDDesktop development repo https://github.com/FreeBSDDesktop/freebsd-ports/tree/feature/input-ports Tested by: tcberner (kde@), andrnils@gmail.com Sponsored by: B3 Init (zeising)
-rw-r--r--x11/libinput/files/patch-0e03784e.c35
-rw-r--r--x11/libinput/files/patch-4e3ea4b8.c73
-rw-r--r--x11/libinput/files/patch-61f3e385.c4069
-rw-r--r--x11/libinput/files/patch-ef9b7e88.c17
-rw-r--r--x11/libinput/files/patch-f8b41205.c104
-rw-r--r--x11/libinput/files/patch-meson.build20
6 files changed, 20 insertions, 4298 deletions
diff --git a/x11/libinput/files/patch-0e03784e.c b/x11/libinput/files/patch-0e03784e.c
deleted file mode 100644
index c25269541a89..000000000000
--- a/x11/libinput/files/patch-0e03784e.c
+++ /dev/null
@@ -1,35 +0,0 @@
-diff --git a/meson.build b/meson.build
-index 9ff17117a9f6c79bb50362d6db6507ba56c20136..e3d81daeead3dd0c04fd67df5354d82a832d396e 100644
---- meson.build
-+++ meson.build
-@@ -87,6 +87,10 @@ if cc.has_header_symbol('dirent.h', 'versionsort', prefix : prefix)
- config_h.set('HAVE_VERSIONSORT', '1')
- endif
-
-+if cc.has_header('xlocale.h')
-+ config_h.set('HAVE_XLOCALE_H', '1')
-+endif
-+
- # Dependencies
- pkgconfig = import('pkgconfig')
- dep_udev = dependency('libudev')
-diff --git a/src/libinput-util.h b/src/libinput-util.h
-index c68b888ad7385d159a1bc35c3b2bf7d324cde44c..85166ca568dd1813f78c98798dbe090cd7486236 100644
---- src/libinput-util.h
-+++ src/libinput-util.h
-@@ -31,11 +31,15 @@
- #include <errno.h>
- #include <limits.h>
- #include <locale.h>
-+#ifdef HAVE_XLOCALE_H
-+#include <xlocale.h>
-+#endif
- #include <math.h>
- #include <stdarg.h>
- #include <stdbool.h>
- #include <stddef.h>
- #include <stdio.h>
-+#include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include <unistd.h>
diff --git a/x11/libinput/files/patch-4e3ea4b8.c b/x11/libinput/files/patch-4e3ea4b8.c
deleted file mode 100644
index 595187786b16..000000000000
--- a/x11/libinput/files/patch-4e3ea4b8.c
+++ /dev/null
@@ -1,73 +0,0 @@
-diff --git a/meson.build b/meson.build
-index b9de1119fae84730288d5766e4be1056adb6817f..fc5371bb7e73363b3a11bc5992d6846b93a3b3d5 100644
---- meson.build
-+++ meson.build
-@@ -96,6 +98,8 @@ endif
-
- ############ udev bits ############
-
-+if false
-+
- udev_dir = get_option('udev-dir')
- if udev_dir == ''
- udev_dir = join_paths(get_option('prefix'), 'lib', 'udev')
-@@ -173,6 +173,36 @@ litest_groups_rules_file = configure_file(input : 'udev/80-libinput-device-group
- install : false,
- configuration : litest_udev_rules_config)
-
-+endif
-+
-+############ libepoll-shim (BSD) ############
-+
-+if cc.has_header_symbol('sys/epoll.h', 'epoll_create1', prefix : prefix)
-+ # epoll is built-in (Linux, illumos)
-+ dep_libepoll = declare_dependency()
-+else
-+ # epoll is implemented in userspace by libepoll-shim (FreeBSD)
-+ dir_libepoll = get_option('epoll-dir')
-+ if dir_libepoll == ''
-+ dir_libepoll = get_option('prefix')
-+ endif
-+ includes_epoll = include_directories(join_paths(dir_libepoll, 'include/libepoll-shim'))
-+ dep_libepoll = cc.find_library('epoll-shim', dirs : join_paths(dir_libepoll, 'lib'))
-+ code = '''
-+ #include <sys/epoll.h>
-+ int main(void) { epoll_create1(0); }
-+ '''
-+ if not cc.links(code,
-+ name : 'libepoll-shim check',
-+ dependencies : [dep_libepoll, dep_rt],
-+ include_directories : includes_epoll) # note: wants an include_directories object
-+ error('No built-in epoll or libepoll-shim found.')
-+ endif
-+ dep_libepoll = declare_dependency(
-+ include_directories : includes_epoll,
-+ dependencies : [dep_libepoll, dep_rt])
-+endif
-+
- ############ libinput-util.a ############
- src_libinput_util = [
- 'src/libinput-util.c',
-@@ -286,6 +314,7 @@ deps_libinput = [
- dep_mtdev,
- dep_udev,
- dep_libevdev,
-+ dep_libepoll,
- dep_lm,
- dep_rt,
- dep_libwacom,
-diff --git a/meson_options.txt b/meson_options.txt
-index 280cf49f18710211c32c98580f7b2ecaa4b00a88..fd0149657e3635f768195485d38413a31d20e956 100644
---- meson_options.txt
-+++ meson_options.txt
-@@ -2,6 +2,10 @@ option('udev-dir',
- type: 'string',
- value: '',
- description: 'udev base directory [default=$prefix/lib/udev]')
-+option('epoll-dir',
-+ type: 'string',
-+ value: '',
-+ description: 'libepoll-shim base directory (for non-Linux OS) [default=$prefix]')
- option('libwacom',
- type: 'boolean',
- value: true,
diff --git a/x11/libinput/files/patch-61f3e385.c b/x11/libinput/files/patch-61f3e385.c
deleted file mode 100644
index 55f2c408eb92..000000000000
--- a/x11/libinput/files/patch-61f3e385.c
+++ /dev/null
@@ -1,4069 +0,0 @@
-diff --git a/include/linux/freebsd/input-event-codes.h b/include/linux/freebsd/input-event-codes.h
-new file mode 100644
-index 00000000..9771e4f8
---- /dev/null
-+++ include/linux/freebsd/input-event-codes.h
-@@ -0,0 +1,837 @@
-+/*
-+ * Input event codes
-+ *
-+ * *** IMPORTANT ***
-+ * This file is not only included from C-code but also from devicetree source
-+ * files. As such this file MUST only contain comments and defines.
-+ *
-+ * Copyright (c) 1999-2002 Vojtech Pavlik
-+ * Copyright (c) 2015 Hans de Goede <hdegoede@redhat.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ */
-+#ifndef _UAPI_INPUT_EVENT_CODES_H
-+#define _UAPI_INPUT_EVENT_CODES_H
-+
-+/*
-+ * Device properties and quirks
-+ */
-+
-+#define INPUT_PROP_POINTER 0x00 /* needs a pointer */
-+#define INPUT_PROP_DIRECT 0x01 /* direct input devices */
-+#define INPUT_PROP_BUTTONPAD 0x02 /* has button(s) under pad */
-+#define INPUT_PROP_SEMI_MT 0x03 /* touch rectangle only */
-+#define INPUT_PROP_TOPBUTTONPAD 0x04 /* softbuttons at top of pad */
-+#define INPUT_PROP_POINTING_STICK 0x05 /* is a pointing stick */
-+#define INPUT_PROP_ACCELEROMETER 0x06 /* has accelerometer */
-+
-+#define INPUT_PROP_MAX 0x1f
-+#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1)
-+
-+/*
-+ * Event types
-+ */
-+
-+#define EV_SYN 0x00
-+#define EV_KEY 0x01
-+#define EV_REL 0x02
-+#define EV_ABS 0x03
-+#define EV_MSC 0x04
-+#define EV_SW 0x05
-+#define EV_LED 0x11
-+#define EV_SND 0x12
-+#define EV_REP 0x14
-+#define EV_FF 0x15
-+#define EV_PWR 0x16
-+#define EV_FF_STATUS 0x17
-+#define EV_MAX 0x1f
-+#define EV_CNT (EV_MAX+1)
-+
-+/*
-+ * Synchronization events.
-+ */
-+
-+#define SYN_REPORT 0
-+#define SYN_CONFIG 1
-+#define SYN_MT_REPORT 2
-+#define SYN_DROPPED 3
-+#define SYN_MAX 0xf
-+#define SYN_CNT (SYN_MAX+1)
-+
-+/*
-+ * Keys and buttons
-+ *
-+ * Most of the keys/buttons are modeled after USB HUT 1.12
-+ * (see http://www.usb.org/developers/hidpage).
-+ * Abbreviations in the comments:
-+ * AC - Application Control
-+ * AL - Application Launch Button
-+ * SC - System Control
-+ */
-+
-+#define KEY_RESERVED 0
-+#define KEY_ESC 1
-+#define KEY_1 2
-+#define KEY_2 3
-+#define KEY_3 4
-+#define KEY_4 5
-+#define KEY_5 6
-+#define KEY_6 7
-+#define KEY_7 8
-+#define KEY_8 9
-+#define KEY_9 10
-+#define KEY_0 11
-+#define KEY_MINUS 12
-+#define KEY_EQUAL 13
-+#define KEY_BACKSPACE 14
-+#define KEY_TAB 15
-+#define KEY_Q 16
-+#define KEY_W 17
-+#define KEY_E 18
-+#define KEY_R 19
-+#define KEY_T 20
-+#define KEY_Y 21
-+#define KEY_U 22
-+#define KEY_I 23
-+#define KEY_O 24
-+#define KEY_P 25
-+#define KEY_LEFTBRACE 26
-+#define KEY_RIGHTBRACE 27
-+#define KEY_ENTER 28
-+#define KEY_LEFTCTRL 29
-+#define KEY_A 30
-+#define KEY_S 31
-+#define KEY_D 32
-+#define KEY_F 33
-+#define KEY_G 34
-+#define KEY_H 35
-+#define KEY_J 36
-+#define KEY_K 37
-+#define KEY_L 38
-+#define KEY_SEMICOLON 39
-+#define KEY_APOSTROPHE 40
-+#define KEY_GRAVE 41
-+#define KEY_LEFTSHIFT 42
-+#define KEY_BACKSLASH 43
-+#define KEY_Z 44
-+#define KEY_X 45
-+#define KEY_C 46
-+#define KEY_V 47
-+#define KEY_B 48
-+#define KEY_N 49
-+#define KEY_M 50
-+#define KEY_COMMA 51
-+#define KEY_DOT 52
-+#define KEY_SLASH 53
-+#define KEY_RIGHTSHIFT 54
-+#define KEY_KPASTERISK 55
-+#define KEY_LEFTALT 56
-+#define KEY_SPACE 57
-+#define KEY_CAPSLOCK 58
-+#define KEY_F1 59
-+#define KEY_F2 60
-+#define KEY_F3 61
-+#define KEY_F4 62
-+#define KEY_F5 63
-+#define KEY_F6 64
-+#define KEY_F7 65
-+#define KEY_F8 66
-+#define KEY_F9 67
-+#define KEY_F10 68
-+#define KEY_NUMLOCK 69
-+#define KEY_SCROLLLOCK 70
-+#define KEY_KP7 71
-+#define KEY_KP8 72
-+#define KEY_KP9 73
-+#define KEY_KPMINUS 74
-+#define KEY_KP4 75
-+#define KEY_KP5 76
-+#define KEY_KP6 77
-+#define KEY_KPPLUS 78
-+#define KEY_KP1 79
-+#define KEY_KP2 80
-+#define KEY_KP3 81
-+#define KEY_KP0 82
-+#define KEY_KPDOT 83
-+
-+#define KEY_ZENKAKUHANKAKU 85
-+#define KEY_102ND 86
-+#define KEY_F11 87
-+#define KEY_F12 88
-+#define KEY_RO 89
-+#define KEY_KATAKANA 90
-+#define KEY_HIRAGANA 91
-+#define KEY_HENKAN 92
-+#define KEY_KATAKANAHIRAGANA 93
-+#define KEY_MUHENKAN 94
-+#define KEY_KPJPCOMMA 95
-+#define KEY_KPENTER 96
-+#define KEY_RIGHTCTRL 97
-+#define KEY_KPSLASH 98
-+#define KEY_SYSRQ 99
-+#define KEY_RIGHTALT 100
-+#define KEY_LINEFEED 101
-+#define KEY_HOME 102
-+#define KEY_UP 103
-+#define KEY_PAGEUP 104
-+#define KEY_LEFT 105
-+#define KEY_RIGHT 106
-+#define KEY_END 107
-+#define KEY_DOWN 108
-+#define KEY_PAGEDOWN 109
-+#define KEY_INSERT 110
-+#define KEY_DELETE 111
-+#define KEY_MACRO 112
-+#define KEY_MUTE 113
-+#define KEY_VOLUMEDOWN 114
-+#define KEY_VOLUMEUP 115
-+#define KEY_POWER 116 /* SC System Power Down */
-+#define KEY_KPEQUAL 117
-+#define KEY_KPPLUSMINUS 118
-+#define KEY_PAUSE 119
-+#define KEY_SCALE 120 /* AL Compiz Scale (Expose) */
-+
-+#define KEY_KPCOMMA 121
-+#define KEY_HANGEUL 122
-+#define KEY_HANGUEL KEY_HANGEUL
-+#define KEY_HANJA 123
-+#define KEY_YEN 124
-+#define KEY_LEFTMETA 125
-+#define KEY_RIGHTMETA 126
-+#define KEY_COMPOSE 127
-+
-+#define KEY_STOP 128 /* AC Stop */
-+#define KEY_AGAIN 129
-+#define KEY_PROPS 130 /* AC Properties */
-+#define KEY_UNDO 131 /* AC Undo */
-+#define KEY_FRONT 132
-+#define KEY_COPY 133 /* AC Copy */
-+#define KEY_OPEN 134 /* AC Open */
-+#define KEY_PASTE 135 /* AC Paste */
-+#define KEY_FIND 136 /* AC Search */
-+#define KEY_CUT 137 /* AC Cut */
-+#define KEY_HELP 138 /* AL Integrated Help Center */
-+#define KEY_MENU 139 /* Menu (show menu) */
-+#define KEY_CALC 140 /* AL Calculator */
-+#define KEY_SETUP 141
-+#define KEY_SLEEP 142 /* SC System Sleep */
-+#define KEY_WAKEUP 143 /* System Wake Up */
-+#define KEY_FILE 144 /* AL Local Machine Browser */
-+#define KEY_SENDFILE 145
-+#define KEY_DELETEFILE 146
-+#define KEY_XFER 147
-+#define KEY_PROG1 148
-+#define KEY_PROG2 149
-+#define KEY_WWW 150 /* AL Internet Browser */
-+#define KEY_MSDOS 151
-+#define KEY_COFFEE 152 /* AL Terminal Lock/Screensaver */
-+#define KEY_SCREENLOCK KEY_COFFEE
-+#define KEY_ROTATE_DISPLAY 153 /* Display orientation for e.g. tablets */
-+#define KEY_DIRECTION KEY_ROTATE_DISPLAY
-+#define KEY_CYCLEWINDOWS 154
-+#define KEY_MAIL 155
-+#define KEY_BOOKMARKS 156 /* AC Bookmarks */
-+#define KEY_COMPUTER 157
-+#define KEY_BACK 158 /* AC Back */
-+#define KEY_FORWARD 159 /* AC Forward */
-+#define KEY_CLOSECD 160
-+#define KEY_EJECTCD 161
-+#define KEY_EJECTCLOSECD 162
-+#define KEY_NEXTSONG 163
-+#define KEY_PLAYPAUSE 164
-+#define KEY_PREVIOUSSONG 165
-+#define KEY_STOPCD 166
-+#define KEY_RECORD 167
-+#define KEY_REWIND 168
-+#define KEY_PHONE 169 /* Media Select Telephone */
-+#define KEY_ISO 170
-+#define KEY_CONFIG 171 /* AL Consumer Control Configuration */
-+#define KEY_HOMEPAGE 172 /* AC Home */
-+#define KEY_REFRESH 173 /* AC Refresh */
-+#define KEY_EXIT 174 /* AC Exit */
-+#define KEY_MOVE 175
-+#define KEY_EDIT 176
-+#define KEY_SCROLLUP 177
-+#define KEY_SCROLLDOWN 178
-+#define KEY_KPLEFTPAREN 179
-+#define KEY_KPRIGHTPAREN 180
-+#define KEY_NEW 181 /* AC New */
-+#define KEY_REDO 182 /* AC Redo/Repeat */
-+
-+#define KEY_F13 183
-+#define KEY_F14 184
-+#define KEY_F15 185
-+#define KEY_F16 186
-+#define KEY_F17 187
-+#define KEY_F18 188
-+#define KEY_F19 189
-+#define KEY_F20 190
-+#define KEY_F21 191
-+#define KEY_F22 192
-+#define KEY_F23 193
-+#define KEY_F24 194
-+
-+#define KEY_PLAYCD 200
-+#define KEY_PAUSECD 201
-+#define KEY_PROG3 202
-+#define KEY_PROG4 203
-+#define KEY_DASHBOARD 204 /* AL Dashboard */
-+#define KEY_SUSPEND 205
-+#define KEY_CLOSE 206 /* AC Close */
-+#define KEY_PLAY 207
-+#define KEY_FASTFORWARD 208
-+#define KEY_BASSBOOST 209
-+#define KEY_PRINT 210 /* AC Print */
-+#define KEY_HP 211
-+#define KEY_CAMERA 212
-+#define KEY_SOUND 213
-+#define KEY_QUESTION 214
-+#define KEY_EMAIL 215
-+#define KEY_CHAT 216
-+#define KEY_SEARCH 217
-+#define KEY_CONNECT 218
-+#define KEY_FINANCE 219 /* AL Checkbook/Finance */
-+#define KEY_SPORT 220
-+#define KEY_SHOP 221
-+#define KEY_ALTERASE 222
-+#define KEY_CANCEL 223 /* AC Cancel */
-+#define KEY_BRIGHTNESSDOWN 224
-+#define KEY_BRIGHTNESSUP 225
-+#define KEY_MEDIA 226
-+
-+#define KEY_SWITCHVIDEOMODE 227 /* Cycle between available video
-+ outputs (Monitor/LCD/TV-out/etc) */
-+#define KEY_KBDILLUMTOGGLE 228
-+#define KEY_KBDILLUMDOWN 229
-+#define KEY_KBDILLUMUP 230
-+
-+#define KEY_SEND 231 /* AC Send */
-+#define KEY_REPLY 232 /* AC Reply */
-+#define KEY_FORWARDMAIL 233 /* AC Forward Msg */
-+#define KEY_SAVE 234 /* AC Save */
-+#define KEY_DOCUMENTS 235
-+
-+#define KEY_BATTERY 236
-+
-+#define KEY_BLUETOOTH 237
-+#define KEY_WLAN 238
-+#define KEY_UWB 239
-+
-+#define KEY_UNKNOWN 240
-+
-+#define KEY_VIDEO_NEXT 241 /* drive next video source */
-+#define KEY_VIDEO_PREV 242 /* drive previous video source */
-+#define KEY_BRIGHTNESS_CYCLE 243 /* brightness up, after max is min */
-+#define KEY_BRIGHTNESS_AUTO 244 /* Set Auto Brightness: manual
-+ brightness control is off,
-+ rely on ambient */
-+#define KEY_BRIGHTNESS_ZERO KEY_BRIGHTNESS_AUTO
-+#define KEY_DISPLAY_OFF 245 /* display device to off state */
-+
-+#define KEY_WWAN 246 /* Wireless WAN (LTE, UMTS, GSM, etc.) */
-+#define KEY_WIMAX KEY_WWAN
-+#define KEY_RFKILL 247 /* Key that controls all radios */
-+
-+#define KEY_MICMUTE 248 /* Mute / unmute the microphone */
-+
-+/* Code 255 is reserved for special needs of AT keyboard driver */
-+
-+#define BTN_MISC 0x100
-+#define BTN_0 0x100
-+#define BTN_1 0x101
-+#define BTN_2 0x102
-+#define BTN_3 0x103
-+#define BTN_4 0x104
-+#define BTN_5 0x105
-+#define BTN_6 0x106
-+#define BTN_7 0x107
-+#define BTN_8 0x108
-+#define BTN_9 0x109
-+
-+#define BTN_MOUSE 0x110
-+#define BTN_LEFT 0x110
-+#define BTN_RIGHT 0x111
-+#define BTN_MIDDLE 0x112
-+#define BTN_SIDE 0x113
-+#define BTN_EXTRA 0x114
-+#define BTN_FORWARD 0x115
-+#define BTN_BACK 0x116
-+#define BTN_TASK 0x117
-+
-+#define BTN_JOYSTICK 0x120
-+#define BTN_TRIGGER 0x120
-+#define BTN_THUMB 0x121
-+#define BTN_THUMB2 0x122
-+#define BTN_TOP 0x123
-+#define BTN_TOP2 0x124
-+#define BTN_PINKIE 0x125
-+#define BTN_BASE 0x126
-+#define BTN_BASE2 0x127
-+#define BTN_BASE3 0x128
-+#define BTN_BASE4 0x129
-+#define BTN_BASE5 0x12a
-+#define BTN_BASE6 0x12b
-+#define BTN_DEAD 0x12f
-+
-+#define BTN_GAMEPAD 0x130
-+#define BTN_SOUTH 0x130
-+#define BTN_A BTN_SOUTH
-+#define BTN_EAST 0x131
-+#define BTN_B BTN_EAST
-+#define BTN_C 0x132
-+#define BTN_NORTH 0x133
-+#define BTN_X BTN_NORTH
-+#define BTN_WEST 0x134
-+#define BTN_Y BTN_WEST
-+#define BTN_Z 0x135
-+#define BTN_TL 0x136
-+#define BTN_TR 0x137
-+#define BTN_TL2 0x138
-+#define BTN_TR2 0x139
-+#define BTN_SELECT 0x13a
-+#define BTN_START 0x13b
-+#define BTN_MODE 0x13c
-+#define BTN_THUMBL 0x13d
-+#define BTN_THUMBR 0x13e
-+
-+#define BTN_DIGI 0x140
-+#define BTN_TOOL_PEN 0x140
-+#define BTN_TOOL_RUBBER 0x141
-+#define BTN_TOOL_BRUSH 0x142
-+#define BTN_TOOL_PENCIL 0x143
-+#define BTN_TOOL_AIRBRUSH 0x144
-+#define BTN_TOOL_FINGER 0x145
-+#define BTN_TOOL_MOUSE 0x146
-+#define BTN_TOOL_LENS 0x147
-+#define BTN_TOOL_QUINTTAP 0x148 /* Five fingers on trackpad */
-+#define BTN_TOUCH 0x14a
-+#define BTN_STYLUS 0x14b
-+#define BTN_STYLUS2 0x14c
-+#define BTN_TOOL_DOUBLETAP 0x14d
-+#define BTN_TOOL_TRIPLETAP 0x14e
-+#define BTN_TOOL_QUADTAP 0x14f /* Four fingers on trackpad */
-+
-+#define BTN_WHEEL 0x150
-+#define BTN_GEAR_DOWN 0x150
-+#define BTN_GEAR_UP 0x151
-+
-+#define KEY_OK 0x160
-+#define KEY_SELECT 0x161
-+#define KEY_GOTO 0x162
-+#define KEY_CLEAR 0x163
-+#define KEY_POWER2 0x164
-+#define KEY_OPTION 0x165
-+#define KEY_INFO 0x166 /* AL OEM Features/Tips/Tutorial */
-+#define KEY_TIME 0x167
-+#define KEY_VENDOR 0x168
-+#define KEY_ARCHIVE 0x169
-+#define KEY_PROGRAM 0x16a /* Media Select Program Guide */
-+#define KEY_CHANNEL 0x16b
-+#define KEY_FAVORITES 0x16c
-+#define KEY_EPG 0x16d
-+#define KEY_PVR 0x16e /* Media Select Home */
-+#define KEY_MHP 0x16f
-+#define KEY_LANGUAGE 0x170
-+#define KEY_TITLE 0x171
-+#define KEY_SUBTITLE 0x172
-+#define KEY_ANGLE 0x173
-+#define KEY_ZOOM 0x174
-+#define KEY_MODE 0x175
-+#define KEY_KEYBOARD 0x176
-+#define KEY_SCREEN 0x177
-+#define KEY_PC 0x178 /* Media Select Computer */
-+#define KEY_TV 0x179 /* Media Select TV */
-+#define KEY_TV2 0x17a /* Media Select Cable */
-+#define KEY_VCR 0x17b /* Media Select VCR */
-+#define KEY_VCR2 0x17c /* VCR Plus */
-+#define KEY_SAT 0x17d /* Media Select Satellite */
-+#define KEY_SAT2 0x17e
-+#define KEY_CD 0x17f /* Media Select CD */
-+#define KEY_TAPE 0x180 /* Media Select Tape */
-+#define KEY_RADIO 0x181
-+#define KEY_TUNER 0x182 /* Media Select Tuner */
-+#define KEY_PLAYER 0x183
-+#define KEY_TEXT 0x184
-+#define KEY_DVD 0x185 /* Media Select DVD */
-+#define KEY_AUX 0x186
-+#define KEY_MP3 0x187
-+#define KEY_AUDIO 0x188 /* AL Audio Browser */
-+#define KEY_VIDEO 0x189 /* AL Movie Browser */
-+#define KEY_DIRECTORY 0x18a
-+#define KEY_LIST 0x18b
-+#define KEY_MEMO 0x18c /* Media Select Messages */
-+#define KEY_CALENDAR 0x18d
-+#define KEY_RED 0x18e
-+#define KEY_GREEN 0x18f
-+#define KEY_YELLOW 0x190
-+#define KEY_BLUE 0x191
-+#define KEY_CHANNELUP 0x192 /* Channel Increment */
-+#define KEY_CHANNELDOWN 0x193 /* Channel Decrement */
-+#define KEY_FIRST 0x194
-+#define KEY_LAST 0x195 /* Recall Last */
-+#define KEY_AB 0x196
-+#define KEY_NEXT 0x197
-+#define KEY_RESTART 0x198
-+#define KEY_SLOW 0x199
-+#define KEY_SHUFFLE 0x19a
-+#define KEY_BREAK 0x19b
-+#define KEY_PREVIOUS 0x19c
-+#define KEY_DIGITS 0x19d
-+#define KEY_TEEN 0x19e
-+#define KEY_TWEN 0x19f
-+#define KEY_VIDEOPHONE 0x1a0 /* Media Select Video Phone */
-+#define KEY_GAMES 0x1a1 /* Media Select Games */
-+#define KEY_ZOOMIN 0x1a2 /* AC Zoom In */
-+#define KEY_ZOOMOUT 0x1a3 /* AC Zoom Out */
-+#define KEY_ZOOMRESET 0x1a4 /* AC Zoom */
-+#define KEY_WORDPROCESSOR 0x1a5 /* AL Word Processor */
-+#define KEY_EDITOR 0x1a6 /* AL Text Editor */
-+#define KEY_SPREADSHEET 0x1a7 /* AL Spreadsheet */
-+#define KEY_GRAPHICSEDITOR 0x1a8 /* AL Graphics Editor */
-+#define KEY_PRESENTATION 0x1a9 /* AL Presentation App */
-+#define KEY_DATABASE 0x1aa /* AL Database App */
-+#define KEY_NEWS 0x1ab /* AL Newsreader */
-+#define KEY_VOICEMAIL 0x1ac /* AL Voicemail */
-+#define KEY_ADDRESSBOOK 0x1ad /* AL Contacts/Address Book */
-+#define KEY_MESSENGER 0x1ae /* AL Instant Messaging */
-+#define KEY_DISPLAYTOGGLE 0x1af /* Turn display (LCD) on and off */
-+#define KEY_BRIGHTNESS_TOGGLE KEY_DISPLAYTOGGLE
-+#define KEY_SPELLCHECK 0x1b0 /* AL Spell Check */
-+#define KEY_LOGOFF 0x1b1 /* AL Logoff */
-+
-+#define KEY_DOLLAR 0x1b2
-+#define KEY_EURO 0x1b3
-+
-+#define KEY_FRAMEBACK 0x1b4 /* Consumer - transport controls */
-+#define KEY_FRAMEFORWARD 0x1b5
-+#define KEY_CONTEXT_MENU 0x1b6 /* GenDesc - system context menu */
-+#define KEY_MEDIA_REPEAT 0x1b7 /* Consumer - transport control */
-+#define KEY_10CHANNELSUP 0x1b8 /* 10 channels up (10+) */
-+#define KEY_10CHANNELSDOWN 0x1b9 /* 10 channels down (10-) */
-+#define KEY_IMAGES 0x1ba /* AL Image Browser */
-+
-+#define KEY_DEL_EOL 0x1c0
-+#define KEY_DEL_EOS 0x1c1
-+#define KEY_INS_LINE 0x1c2
-+#define KEY_DEL_LINE 0x1c3
-+
-+#define KEY_FN 0x1d0
-+#define KEY_FN_ESC 0x1d1
-+#define KEY_FN_F1 0x1d2
-+#define KEY_FN_F2 0x1d3
-+#define KEY_FN_F3 0x1d4
-+#define KEY_FN_F4 0x1d5
-+#define KEY_FN_F5 0x1d6
-+#define KEY_FN_F6 0x1d7
-+#define KEY_FN_F7 0x1d8
-+#define KEY_FN_F8 0x1d9
-+#define KEY_FN_F9 0x1da
-+#define KEY_FN_F10 0x1db
-+#define KEY_FN_F11 0x1dc
-+#define KEY_FN_F12 0x1dd
-+#define KEY_FN_1 0x1de
-+#define KEY_FN_2 0x1df
-+#define KEY_FN_D 0x1e0
-+#define KEY_FN_E 0x1e1
-+#define KEY_FN_F 0x1e2
-+#define KEY_FN_S 0x1e3
-+#define KEY_FN_B 0x1e4
-+
-+#define KEY_BRL_DOT1 0x1f1
-+#define KEY_BRL_DOT2 0x1f2
-+#define KEY_BRL_DOT3 0x1f3
-+#define KEY_BRL_DOT4 0x1f4
-+#define KEY_BRL_DOT5 0x1f5
-+#define KEY_BRL_DOT6 0x1f6
-+#define KEY_BRL_DOT7 0x1f7
-+#define KEY_BRL_DOT8 0x1f8
-+#define KEY_BRL_DOT9 0x1f9
-+#define KEY_BRL_DOT10 0x1fa
-+
-+#define KEY_NUMERIC_0 0x200 /* used by phones, remote controls, */
-+#define KEY_NUMERIC_1 0x201 /* and other keypads */
-+#define KEY_NUMERIC_2 0x202
-+#define KEY_NUMERIC_3 0x203
-+#define KEY_NUMERIC_4 0x204
-+#define KEY_NUMERIC_5 0x205
-+#define KEY_NUMERIC_6 0x206
-+#define KEY_NUMERIC_7 0x207
-+#define KEY_NUMERIC_8 0x208
-+#define KEY_NUMERIC_9 0x209
-+#define KEY_NUMERIC_STAR 0x20a
-+#define KEY_NUMERIC_POUND 0x20b
-+#define KEY_NUMERIC_A 0x20c /* Phone key A - HUT Telephony 0xb9 */
-+#define KEY_NUMERIC_B 0x20d
-+#define KEY_NUMERIC_C 0x20e
-+#define KEY_NUMERIC_D 0x20f
-+
-+#define KEY_CAMERA_FOCUS 0x210
-+#define KEY_WPS_BUTTON 0x211 /* WiFi Protected Setup key */
-+
-+#define KEY_TOUCHPAD_TOGGLE 0x212 /* Request switch touchpad on or off */
-+#define KEY_TOUCHPAD_ON 0x213
-+#define KEY_TOUCHPAD_OFF 0x214
-+
-+#define KEY_CAMERA_ZOOMIN 0x215
-+#define KEY_CAMERA_ZOOMOUT 0x216
-+#define KEY_CAMERA_UP 0x217
-+#define KEY_CAMERA_DOWN 0x218
-+#define KEY_CAMERA_LEFT 0x219
-+#define KEY_CAMERA_RIGHT 0x21a
-+
-+#define KEY_ATTENDANT_ON 0x21b
-+#define KEY_ATTENDANT_OFF 0x21c
-+#define KEY_ATTENDANT_TOGGLE 0x21d /* Attendant call on or off */
-+#define KEY_LIGHTS_TOGGLE 0x21e /* Reading light on or off */
-+
-+#define BTN_DPAD_UP 0x220
-+#define BTN_DPAD_DOWN 0x221
-+#define BTN_DPAD_LEFT 0x222
-+#define BTN_DPAD_RIGHT 0x223
-+
-+#define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */
-+
-+#define KEY_BUTTONCONFIG 0x240 /* AL Button Configuration */
-+#define KEY_TASKMANAGER 0x241 /* AL Task/Project Manager */
-+#define KEY_JOURNAL 0x242 /* AL Log/Journal/Timecard */
-+#define KEY_CONTROLPANEL 0x243 /* AL Control Panel */
-+#define KEY_APPSELECT 0x244 /* AL Select Task/Application */
-+#define KEY_SCREENSAVER 0x245 /* AL Screen Saver */
-+#define KEY_VOICECOMMAND 0x246 /* Listening Voice Command */
-+
-+#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
-+#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
-+
-+#define KEY_KBDINPUTASSIST_PREV 0x260
-+#define KEY_KBDINPUTASSIST_NEXT 0x261
-+#define KEY_KBDINPUTASSIST_PREVGROUP 0x262
-+#define KEY_KBDINPUTASSIST_NEXTGROUP 0x263
-+#define KEY_KBDINPUTASSIST_ACCEPT 0x264
-+#define KEY_KBDINPUTASSIST_CANCEL 0x265
-+
-+/* Diagonal movement keys */
-+#define KEY_RIGHT_UP 0x266
-+#define KEY_RIGHT_DOWN 0x267
-+#define KEY_LEFT_UP 0x268
-+#define KEY_LEFT_DOWN 0x269
-+
-+#define KEY_ROOT_MENU 0x26a /* Show Device's Root Menu */
-+/* Show Top Menu of the Media (e.g. DVD) */
-+#define KEY_MEDIA_TOP_MENU 0x26b
-+#define KEY_NUMERIC_11 0x26c
-+#define KEY_NUMERIC_12 0x26d
-+/*
-+ * Toggle Audio Description: refers to an audio service that helps blind and
-+ * visually impaired consumers understand the action in a program. Note: in
-+ * some countries this is referred to as "Video Description".
-+ */
-+#define KEY_AUDIO_DESC 0x26e
-+#define KEY_3D_MODE 0x26f
-+#define KEY_NEXT_FAVORITE 0x270
-+#define KEY_STOP_RECORD 0x271
-+#define KEY_PAUSE_RECORD 0x272
-+#define KEY_VOD 0x273 /* Video on Demand */
-+#define KEY_UNMUTE 0x274
-+#define KEY_FASTREVERSE 0x275
-+#define KEY_SLOWREVERSE 0x276
-+/*
-+ * Control a data application associated with the currently viewed channel,
-+ * e.g. teletext or data broadcast application (MHEG, MHP, HbbTV, etc.)
-+ */
-+#define KEY_DATA 0x277
-+#define KEY_ONSCREEN_KEYBOARD 0x278
-+
-+#define BTN_TRIGGER_HAPPY 0x2c0
-+#define BTN_TRIGGER_HAPPY1 0x2c0
-+#define BTN_TRIGGER_HAPPY2 0x2c1
-+#define BTN_TRIGGER_HAPPY3 0x2c2
-+#define BTN_TRIGGER_HAPPY4 0x2c3
-+#define BTN_TRIGGER_HAPPY5 0x2c4
-+#define BTN_TRIGGER_HAPPY6 0x2c5
-+#define BTN_TRIGGER_HAPPY7 0x2c6
-+#define BTN_TRIGGER_HAPPY8 0x2c7
-+#define BTN_TRIGGER_HAPPY9 0x2c8
-+#define BTN_TRIGGER_HAPPY10 0x2c9
-+#define BTN_TRIGGER_HAPPY11 0x2ca
-+#define BTN_TRIGGER_HAPPY12 0x2cb
-+#define BTN_TRIGGER_HAPPY13 0x2cc
-+#define BTN_TRIGGER_HAPPY14 0x2cd
-+#define BTN_TRIGGER_HAPPY15 0x2ce
-+#define BTN_TRIGGER_HAPPY16 0x2cf
-+#define BTN_TRIGGER_HAPPY17 0x2d0
-+#define BTN_TRIGGER_HAPPY18 0x2d1
-+#define BTN_TRIGGER_HAPPY19 0x2d2
-+#define BTN_TRIGGER_HAPPY20 0x2d3
-+#define BTN_TRIGGER_HAPPY21 0x2d4
-+#define BTN_TRIGGER_HAPPY22 0x2d5
-+#define BTN_TRIGGER_HAPPY23 0x2d6
-+#define BTN_TRIGGER_HAPPY24 0x2d7
-+#define BTN_TRIGGER_HAPPY25 0x2d8
-+#define BTN_TRIGGER_HAPPY26 0x2d9
-+#define BTN_TRIGGER_HAPPY27 0x2da
-+#define BTN_TRIGGER_HAPPY28 0x2db
-+#define BTN_TRIGGER_HAPPY29 0x2dc
-+#define BTN_TRIGGER_HAPPY30 0x2dd
-+#define BTN_TRIGGER_HAPPY31 0x2de
-+#define BTN_TRIGGER_HAPPY32 0x2df
-+#define BTN_TRIGGER_HAPPY33 0x2e0
-+#define BTN_TRIGGER_HAPPY34 0x2e1
-+#define BTN_TRIGGER_HAPPY35 0x2e2
-+#define BTN_TRIGGER_HAPPY36 0x2e3
-+#define BTN_TRIGGER_HAPPY37 0x2e4
-+#define BTN_TRIGGER_HAPPY38 0x2e5
-+#define BTN_TRIGGER_HAPPY39 0x2e6
-+#define BTN_TRIGGER_HAPPY40 0x2e7
-+
-+/* We avoid low common keys in module aliases so they don't get huge. */
-+#define KEY_MIN_INTERESTING KEY_MUTE
-+#define KEY_MAX 0x2ff
-+#define KEY_CNT (KEY_MAX+1)
-+
-+/*
-+ * Relative axes
-+ */
-+
-+#define REL_X 0x00
-+#define REL_Y 0x01
-+#define REL_Z 0x02
-+#define REL_RX 0x03
-+#define REL_RY 0x04
-+#define REL_RZ 0x05
-+#define REL_HWHEEL 0x06
-+#define REL_DIAL 0x07
-+#define REL_WHEEL 0x08
-+#define REL_MISC 0x09
-+#define REL_MAX 0x0f
-+#define REL_CNT (REL_MAX+1)
-+
-+/*
-+ * Absolute axes
-+ */
-+
-+#define ABS_X 0x00
-+#define ABS_Y 0x01
-+#define ABS_Z 0x02
-+#define ABS_RX 0x03
-+#define ABS_RY 0x04
-+#define ABS_RZ 0x05
-+#define ABS_THROTTLE 0x06
-+#define ABS_RUDDER 0x07
-+#define ABS_WHEEL 0x08
-+#define ABS_GAS 0x09
-+#define ABS_BRAKE 0x0a
-+#define ABS_HAT0X 0x10
-+#define ABS_HAT0Y 0x11
-+#define ABS_HAT1X 0x12
-+#define ABS_HAT1Y 0x13
-+#define ABS_HAT2X 0x14
-+#define ABS_HAT2Y 0x15
-+#define ABS_HAT3X 0x16
-+#define ABS_HAT3Y 0x17
-+#define ABS_PRESSURE 0x18
-+#define ABS_DISTANCE 0x19
-+#define ABS_TILT_X 0x1a
-+#define ABS_TILT_Y 0x1b
-+#define ABS_TOOL_WIDTH 0x1c
-+
-+#define ABS_VOLUME 0x20
-+
-+#define ABS_MISC 0x28
-+
-+#define ABS_MT_SLOT 0x2f /* MT slot being modified */
-+#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */
-+#define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */
-+#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */
-+#define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */
-+#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */
-+#define ABS_MT_POSITION_X 0x35 /* Center X touch position */
-+#define ABS_MT_POSITION_Y 0x36 /* Center Y touch position */
-+#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */
-+#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
-+#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */
-+#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */
-+#define ABS_MT_DISTANCE 0x3b /* Contact hover distance */
-+#define ABS_MT_TOOL_X 0x3c /* Center X tool position */
-+#define ABS_MT_TOOL_Y 0x3d /* Center Y tool position */
-+
-+#define ABS_MAX 0x3f
-+#define ABS_CNT (ABS_MAX+1)
-+
-+/*
-+ * Switch events
-+ */
-+
-+#define SW_LID 0x00 /* set = lid shut */
-+#define SW_TABLET_MODE 0x01 /* set = tablet mode */
-+#define SW_HEADPHONE_INSERT 0x02 /* set = inserted */
-+#define SW_RFKILL_ALL 0x03 /* rfkill master switch, type "any"
-+ set = radio enabled */
-+#define SW_RADIO SW_RFKILL_ALL /* deprecated */
-+#define SW_MICROPHONE_INSERT 0x04 /* set = inserted */
-+#define SW_DOCK 0x05 /* set = plugged into dock */
-+#define SW_LINEOUT_INSERT 0x06 /* set = inserted */
-+#define SW_JACK_PHYSICAL_INSERT 0x07 /* set = mechanical switch set */
-+#define SW_VIDEOOUT_INSERT 0x08 /* set = inserted */
-+#define SW_CAMERA_LENS_COVER 0x09 /* set = lens covered */
-+#define SW_KEYPAD_SLIDE 0x0a /* set = keypad slide out */
-+#define SW_FRONT_PROXIMITY 0x0b /* set = front proximity sensor active */
-+#define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */
-+#define SW_LINEIN_INSERT 0x0d /* set = inserted */
-+#define SW_MUTE_DEVICE 0x0e /* set = device disabled */
-+#define SW_PEN_INSERTED 0x0f /* set = pen inserted */
-+#define SW_MAX 0x0f
-+#define SW_CNT (SW_MAX+1)
-+
-+/*
-+ * Misc events
-+ */
-+
-+#define MSC_SERIAL 0x00
-+#define MSC_PULSELED 0x01
-+#define MSC_GESTURE 0x02
-+#define MSC_RAW 0x03
-+#define MSC_SCAN 0x04
-+#define MSC_TIMESTAMP 0x05
-+#define MSC_MAX 0x07
-+#define MSC_CNT (MSC_MAX+1)
-+
-+/*
-+ * LEDs
-+ */
-+
-+#define LED_NUML 0x00
-+#define LED_CAPSL 0x01
-+#define LED_SCROLLL 0x02
-+#define LED_COMPOSE 0x03
-+#define LED_KANA 0x04
-+#define LED_SLEEP 0x05
-+#define LED_SUSPEND 0x06
-+#define LED_MUTE 0x07
-+#define LED_MISC 0x08
-+#define LED_MAIL 0x09
-+#define LED_CHARGING 0x0a
-+#define LED_MAX 0x0f
-+#define LED_CNT (LED_MAX+1)
-+
-+/*
-+ * Autorepeat values
-+ */
-+
-+#define REP_DELAY 0x00
-+#define REP_PERIOD 0x01
-+#define REP_MAX 0x01
-+#define REP_CNT (REP_MAX+1)
-+
-+/*
-+ * Sounds
-+ */
-+
-+#define SND_CLICK 0x00
-+#define SND_BELL 0x01
-+#define SND_TONE 0x02
-+#define SND_MAX 0x07
-+#define SND_CNT (SND_MAX+1)
-+
-+#endif
-diff --git a/include/linux/freebsd/input.h b/include/linux/freebsd/input.h
-new file mode 100644
-index 00000000..72733f21
---- /dev/null
-+++ include/linux/freebsd/input.h
-@@ -0,0 +1,507 @@
-+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-+/*
-+ * Copyright (c) 1999-2002 Vojtech Pavlik
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ */
-+#ifndef _UAPI_INPUT_H
-+#define _UAPI_INPUT_H
-+
-+
-+#ifndef __KERNEL__
-+#include <sys/time.h>
-+#include <sys/ioccom.h>
-+#include <sys/types.h>
-+#endif
-+
-+#include "input-event-codes.h"
-+
-+/*
-+ * The event structure itself
-+ * Note that __USE_TIME_BITS64 is defined by libc based on
-+ * application's request to use 64 bit time_t.
-+ */
-+
-+struct input_event {
-+#if 1 /* (__BITS_PER_LONG != 32 || !defined(__USE_TIME_BITS64)) && !defined(__KERNEL) */
-+ struct timeval time;
-+#define input_event_sec time.tv_sec
-+#define input_event_usec time.tv_usec
-+#else
-+ __kernel_ulong_t __sec;
-+ __kernel_ulong_t __usec;
-+#define input_event_sec __sec
-+#define input_event_usec __usec
-+#endif
-+ uint16_t type;
-+ uint16_t code;
-+ int32_t value;
-+};
-+
-+/*
-+ * Protocol version.
-+ */
-+
-+#define EV_VERSION 0x010001
-+
-+/*
-+ * IOCTLs (0x00 - 0x7f)
-+ */
-+
-+struct input_id {
-+ uint16_t bustype;
-+ uint16_t vendor;
-+ uint16_t product;
-+ uint16_t version;
-+};
-+
-+/**
-+ * struct input_absinfo - used by EVIOCGABS/EVIOCSABS ioctls
-+ * @value: latest reported value for the axis.
-+ * @minimum: specifies minimum value for the axis.
-+ * @maximum: specifies maximum value for the axis.
-+ * @fuzz: specifies fuzz value that is used to filter noise from
-+ * the event stream.
-+ * @flat: values that are within this value will be discarded by
-+ * joydev interface and reported as 0 instead.
-+ * @resolution: specifies resolution for the values reported for
-+ * the axis.
-+ *
-+ * Note that input core does not clamp reported values to the
-+ * [minimum, maximum] limits, such task is left to userspace.
-+ *
-+ * The default resolution for main axes (ABS_X, ABS_Y, ABS_Z)
-+ * is reported in units per millimeter (units/mm), resolution
-+ * for rotational axes (ABS_RX, ABS_RY, ABS_RZ) is reported
-+ * in units per radian.
-+ * When INPUT_PROP_ACCELEROMETER is set the resolution changes.
-+ * The main axes (ABS_X, ABS_Y, ABS_Z) are then reported in
-+ * in units per g (units/g) and in units per degree per second
-+ * (units/deg/s) for rotational axes (ABS_RX, ABS_RY, ABS_RZ).
-+ */
-+struct input_absinfo {
-+ int32_t value;
-+ int32_t minimum;
-+ int32_t maximum;
-+ int32_t fuzz;
-+ int32_t flat;
-+ int32_t resolution;
-+};
-+
-+/**
-+ * struct input_keymap_entry - used by EVIOCGKEYCODE/EVIOCSKEYCODE ioctls
-+ * @scancode: scancode represented in machine-endian form.
-+ * @len: length of the scancode that resides in @scancode buffer.
-+ * @index: index in the keymap, may be used instead of scancode
-+ * @flags: allows to specify how kernel should handle the request. For
-+ * example, setting INPUT_KEYMAP_BY_INDEX flag indicates that kernel
-+ * should perform lookup in keymap by @index instead of @scancode
-+ * @keycode: key code assigned to this scancode
-+ *
-+ * The structure is used to retrieve and modify keymap data. Users have
-+ * option of performing lookup either by @scancode itself or by @index
-+ * in keymap entry. EVIOCGKEYCODE will also return scancode or index
-+ * (depending on which element was used to perform lookup).
-+ */
-+struct input_keymap_entry {
-+#define INPUT_KEYMAP_BY_INDEX (1 << 0)
-+ uint8_t flags;
-+ uint8_t len;
-+ uint16_t index;
-+ uint32_t keycode;
-+ uint8_t scancode[32];
-+};
-+
-+struct input_mask {
-+ uint32_t type;
-+ uint32_t codes_size;
-+ uint64_t codes_ptr;
-+};
-+
-+#define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */
-+#define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */
-+#define EVIOCGREP _IOR('E', 0x03, unsigned int[2]) /* get repeat settings */
-+#define EVIOCSREP _IOW('E', 0x03, unsigned int[2]) /* set repeat settings */
-+
-+#define EVIOCGKEYCODE _IOWR('E', 0x04, unsigned int[2]) /* get keycode */
-+#define EVIOCGKEYCODE_V2 _IOWR('E', 0x04, struct input_keymap_entry)
-+#define EVIOCSKEYCODE _IOW('E', 0x04, unsigned int[2]) /* set keycode */
-+#define EVIOCSKEYCODE_V2 _IOW('E', 0x04, struct input_keymap_entry)
-+
-+#define EVIOCGNAME(len) _IOC(IOC_OUT, 'E', 0x06, len) /* get device name */
-+#define EVIOCGPHYS(len) _IOC(IOC_OUT, 'E', 0x07, len) /* get physical location */
-+#define EVIOCGUNIQ(len) _IOC(IOC_OUT, 'E', 0x08, len) /* get unique identifier */
-+#define EVIOCGPROP(len) _IOC(IOC_OUT, 'E', 0x09, len) /* get device properties */
-+
-+/**
-+ * EVIOCGMTSLOTS(len) - get MT slot values
-+ * @len: size of the data buffer in bytes
-+ *
-+ * The ioctl buffer argument should be binary equivalent to
-+ *
-+ * struct input_mt_request_layout {
-+ * uint32_t code;
-+ * int32_t values[num_slots];
-+ * };
-+ *
-+ * where num_slots is the (arbitrary) number of MT slots to extract.
-+ *
-+ * The ioctl size argument (len) is the size of the buffer, which
-+ * should satisfy len = (num_slots + 1) * sizeof(int32_t). If len is
-+ * too small to fit all available slots, the first num_slots are
-+ * returned.
-+ *
-+ * Before the call, code is set to the wanted ABS_MT event type. On
-+ * return, values[] is filled with the slot values for the specified
-+ * ABS_MT code.
-+ *
-+ * If the request code is not an ABS_MT value, -EINVAL is returned.
-+ */
-+#define EVIOCGMTSLOTS(len) _IOC(IOC_INOUT, 'E', 0x0a, len)
-+
-+#define EVIOCGKEY(len) _IOC(IOC_OUT, 'E', 0x18, len) /* get global key state */
-+#define EVIOCGLED(len) _IOC(IOC_OUT, 'E', 0x19, len) /* get all LEDs */
-+#define EVIOCGSND(len) _IOC(IOC_OUT, 'E', 0x1a, len) /* get all sounds status */
-+#define EVIOCGSW(len) _IOC(IOC_OUT, 'E', 0x1b, len) /* get all switch states */
-+
-+#define EVIOCGBIT(ev,len) _IOC(IOC_OUT, 'E', 0x20 + (ev), len) /* get event bits */
-+#define EVIOCGABS(abs) _IOR('E', 0x40 + (abs), struct input_absinfo) /* get abs value/limits */
-+#define EVIOCSABS(abs) _IOW('E', 0xc0 + (abs), struct input_absinfo) /* set abs value/limits */
-+
-+#define EVIOCSFF _IOW('E', 0x80, struct ff_effect) /* send a force effect to a force feedback device */
-+#define EVIOCRMFF _IOWINT('E', 0x81) /* Erase a force effect */
-+#define EVIOCGEFFECTS _IOR('E', 0x84, int) /* Report number of effects playable at the same time */
-+
-+#define EVIOCGRAB _IOWINT('E', 0x90) /* Grab/Release device */
-+#define EVIOCREVOKE _IOWINT('E', 0x91) /* Revoke device access */
-+
-+/**
-+ * EVIOCGMASK - Retrieve current event mask
-+ *
-+ * This ioctl allows user to retrieve the current event mask for specific
-+ * event type. The argument must be of type "struct input_mask" and
-+ * specifies the event type to query, the address of the receive buffer and
-+ * the size of the receive buffer.
-+ *
-+ * The event mask is a per-client mask that specifies which events are
-+ * forwarded to the client. Each event code is represented by a single bit
-+ * in the event mask. If the bit is set, the event is passed to the client
-+ * normally. Otherwise, the event is filtered and will never be queued on
-+ * the client's receive buffer.
-+ *
-+ * Event masks do not affect global state of the input device. They only
-+ * affect the file descriptor they are applied to.
-+ *
-+ * The default event mask for a client has all bits set, i.e. all events
-+ * are forwarded to the client. If the kernel is queried for an unknown
-+ * event type or if the receive buffer is larger than the number of
-+ * event codes known to the kernel, the kernel returns all zeroes for those
-+ * codes.
-+ *
-+ * At maximum, codes_size bytes are copied.
-+ *
-+ * This ioctl may fail with ENODEV in case the file is revoked, EFAULT
-+ * if the receive-buffer points to invalid memory, or EINVAL if the kernel
-+ * does not implement the ioctl.
-+ */
-+#define EVIOCGMASK _IOW('E', 0x92, struct input_mask) /* Get event-masks */
-+
-+/**
-+ * EVIOCSMASK - Set event mask
-+ *
-+ * This ioctl is the counterpart to EVIOCGMASK. Instead of receiving the
-+ * current event mask, this changes the client's event mask for a specific
-+ * type. See EVIOCGMASK for a description of event-masks and the
-+ * argument-type.
-+ *
-+ * This ioctl provides full forward compatibility. If the passed event type
-+ * is unknown to the kernel, or if the number of event codes specified in
-+ * the mask is bigger than what is known to the kernel, the ioctl is still
-+ * accepted and applied. However, any unknown codes are left untouched and
-+ * stay cleared. That means, the kernel always filters unknown codes
-+ * regardless of what the client requests. If the new mask doesn't cover
-+ * all known event-codes, all remaining codes are automatically cleared and
-+ * thus filtered.
-+ *
-+ * This ioctl may fail with ENODEV in case the file is revoked. EFAULT is
-+ * returned if the receive-buffer points to invalid memory. EINVAL is returned
-+ * if the kernel does not implement the ioctl.
-+ */
-+#define EVIOCSMASK _IOW('E', 0x93, struct input_mask) /* Set event-masks */
-+
-+#define EVIOCSCLOCKID _IOW('E', 0xa0, int) /* Set clockid to be used for timestamps */
-+
-+/*
-+ * IDs.
-+ */
-+
-+#define ID_BUS 0
-+#define ID_VENDOR 1
-+#define ID_PRODUCT 2
-+#define ID_VERSION 3
-+
-+#define BUS_PCI 0x01
-+#define BUS_ISAPNP 0x02
-+#define BUS_USB 0x03
-+#define BUS_HIL 0x04
-+#define BUS_BLUETOOTH 0x05
-+#define BUS_VIRTUAL 0x06
-+
-+#define BUS_ISA 0x10
-+#define BUS_I8042 0x11
-+#define BUS_XTKBD 0x12
-+#define BUS_RS232 0x13
-+#define BUS_GAMEPORT 0x14
-+#define BUS_PARPORT 0x15
-+#define BUS_AMIGA 0x16
-+#define BUS_ADB 0x17
-+#define BUS_I2C 0x18
-+#define BUS_HOST 0x19
-+#define BUS_GSC 0x1A
-+#define BUS_ATARI 0x1B
-+#define BUS_SPI 0x1C
-+#define BUS_RMI 0x1D
-+#define BUS_CEC 0x1E
-+#define BUS_INTEL_ISHTP 0x1F
-+
-+/*
-+ * MT_TOOL types
-+ */
-+#define MT_TOOL_FINGER 0
-+#define MT_TOOL_PEN 1
-+#define MT_TOOL_PALM 2
-+#define MT_TOOL_MAX 2
-+
-+/*
-+ * Values describing the status of a force-feedback effect
-+ */
-+#define FF_STATUS_STOPPED 0x00
-+#define FF_STATUS_PLAYING 0x01
-+#define FF_STATUS_MAX 0x01
-+
-+/*
-+ * Structures used in ioctls to upload effects to a device
-+ * They are pieces of a bigger structure (called ff_effect)
-+ */
-+
-+/*
-+ * All duration values are expressed in ms. Values above 32767 ms (0x7fff)
-+ * should not be used and have unspecified results.
-+ */
-+
-+/**
-+ * struct ff_replay - defines scheduling of the force-feedback effect
-+ * @length: duration of the effect
-+ * @delay: delay before effect should start playing
-+ */
-+struct ff_replay {
-+ uint16_t length;
-+ uint16_t delay;
-+};
-+
-+/**
-+ * struct ff_trigger - defines what triggers the force-feedback effect
-+ * @button: number of the button triggering the effect
-+ * @interval: controls how soon the effect can be re-triggered
-+ */
-+struct ff_trigger {
-+ uint16_t button;
-+ uint16_t interval;
-+};
-+
-+/**
-+ * struct ff_envelope - generic force-feedback effect envelope
-+ * @attack_length: duration of the attack (ms)
-+ * @attack_level: level at the beginning of the attack
-+ * @fade_length: duration of fade (ms)
-+ * @fade_level: level at the end of fade
-+ *
-+ * The @attack_level and @fade_level are absolute values; when applying
-+ * envelope force-feedback core will convert to positive/negative
-+ * value based on polarity of the default level of the effect.
-+ * Valid range for the attack and fade levels is 0x0000 - 0x7fff
-+ */
-+struct ff_envelope {
-+ uint16_t attack_length;
-+ uint16_t attack_level;
-+ uint16_t fade_length;
-+ uint16_t fade_level;
-+};
-+
-+/**
-+ * struct ff_constant_effect - defines parameters of a constant force-feedback effect
-+ * @level: strength of the effect; may be negative
-+ * @envelope: envelope data
-+ */
-+struct ff_constant_effect {
-+ int16_t level;
-+ struct ff_envelope envelope;
-+};
-+
-+/**
-+ * struct ff_ramp_effect - defines parameters of a ramp force-feedback effect
-+ * @start_level: beginning strength of the effect; may be negative
-+ * @end_level: final strength of the effect; may be negative
-+ * @envelope: envelope data
-+ */
-+struct ff_ramp_effect {
-+ int16_t start_level;
-+ int16_t end_level;
-+ struct ff_envelope envelope;
-+};
-+
-+/**
-+ * struct ff_condition_effect - defines a spring or friction force-feedback effect
-+ * @right_saturation: maximum level when joystick moved all way to the right
-+ * @left_saturation: same for the left side
-+ * @right_coeff: controls how fast the force grows when the joystick moves
-+ * to the right
-+ * @left_coeff: same for the left side
-+ * @deadband: size of the dead zone, where no force is produced
-+ * @center: position of the dead zone
-+ */
-+struct ff_condition_effect {
-+ uint16_t right_saturation;
-+ uint16_t left_saturation;
-+
-+ int16_t right_coeff;
-+ int16_t left_coeff;
-+
-+ uint16_t deadband;
-+ int16_t center;
-+};
-+
-+/**
-+ * struct ff_periodic_effect - defines parameters of a periodic force-feedback effect
-+ * @waveform: kind of the effect (wave)
-+ * @period: period of the wave (ms)
-+ * @magnitude: peak value
-+ * @offset: mean value of the wave (roughly)
-+ * @phase: 'horizontal' shift
-+ * @envelope: envelope data
-+ * @custom_len: number of samples (FF_CUSTOM only)
-+ * @custom_data: buffer of samples (FF_CUSTOM only)
-+ *
-+ * Known waveforms - FF_SQUARE, FF_TRIANGLE, FF_SINE, FF_SAW_UP,
-+ * FF_SAW_DOWN, FF_CUSTOM. The exact syntax FF_CUSTOM is undefined
-+ * for the time being as no driver supports it yet.
-+ *
-+ * Note: the data pointed by custom_data is copied by the driver.
-+ * You can therefore dispose of the memory after the upload/update.
-+ */
-+struct ff_periodic_effect {
-+ uint16_t waveform;
-+ uint16_t period;
-+ int16_t magnitude;
-+ int16_t offset;
-+ uint16_t phase;
-+
-+ struct ff_envelope envelope;
-+
-+ uint32_t custom_len;
-+ int16_t *custom_data;
-+};
-+
-+/**
-+ * struct ff_rumble_effect - defines parameters of a periodic force-feedback effect
-+ * @strong_magnitude: magnitude of the heavy motor
-+ * @weak_magnitude: magnitude of the light one
-+ *
-+ * Some rumble pads have two motors of different weight. Strong_magnitude
-+ * represents the magnitude of the vibration generated by the heavy one.
-+ */
-+struct ff_rumble_effect {
-+ uint16_t strong_magnitude;
-+ uint16_t weak_magnitude;
-+};
-+
-+/**
-+ * struct ff_effect - defines force feedback effect
-+ * @type: type of the effect (FF_CONSTANT, FF_PERIODIC, FF_RAMP, FF_SPRING,
-+ * FF_FRICTION, FF_DAMPER, FF_RUMBLE, FF_INERTIA, or FF_CUSTOM)
-+ * @id: an unique id assigned to an effect
-+ * @direction: direction of the effect
-+ * @trigger: trigger conditions (struct ff_trigger)
-+ * @replay: scheduling of the effect (struct ff_replay)
-+ * @u: effect-specific structure (one of ff_constant_effect, ff_ramp_effect,
-+ * ff_periodic_effect, ff_condition_effect, ff_rumble_effect) further
-+ * defining effect parameters
-+ *
-+ * This structure is sent through ioctl from the application to the driver.
-+ * To create a new effect application should set its @id to -1; the kernel
-+ * will return assigned @id which can later be used to update or delete
-+ * this effect.
-+ *
-+ * Direction of the effect is encoded as follows:
-+ * 0 deg -> 0x0000 (down)
-+ * 90 deg -> 0x4000 (left)
-+ * 180 deg -> 0x8000 (up)
-+ * 270 deg -> 0xC000 (right)
-+ */
-+struct ff_effect {
-+ uint16_t type;
-+ int16_t id;
-+ uint16_t direction;
-+ struct ff_trigger trigger;
-+ struct ff_replay replay;
-+
-+ union {
-+ struct ff_constant_effect constant;
-+ struct ff_ramp_effect ramp;
-+ struct ff_periodic_effect periodic;
-+ struct ff_condition_effect condition[2]; /* One for each axis */
-+ struct ff_rumble_effect rumble;
-+ } u;
-+};
-+
-+/*
-+ * Force feedback effect types
-+ */
-+
-+#define FF_RUMBLE 0x50
-+#define FF_PERIODIC 0x51
-+#define FF_CONSTANT 0x52
-+#define FF_SPRING 0x53
-+#define FF_FRICTION 0x54
-+#define FF_DAMPER 0x55
-+#define FF_INERTIA 0x56
-+#define FF_RAMP 0x57
-+
-+#define FF_EFFECT_MIN FF_RUMBLE
-+#define FF_EFFECT_MAX FF_RAMP
-+
-+/*
-+ * Force feedback periodic effect types
-+ */
-+
-+#define FF_SQUARE 0x58
-+#define FF_TRIANGLE 0x59
-+#define FF_SINE 0x5a
-+#define FF_SAW_UP 0x5b
-+#define FF_SAW_DOWN 0x5c
-+#define FF_CUSTOM 0x5d
-+
-+#define FF_WAVEFORM_MIN FF_SQUARE
-+#define FF_WAVEFORM_MAX FF_CUSTOM
-+
-+/*
-+ * Set ff device properties
-+ */
-+
-+#define FF_GAIN 0x60
-+#define FF_AUTOCENTER 0x61
-+
-+/*
-+ * ff->playback(effect_id = FF_GAIN) is the first effect_id to
-+ * cause a collision with another ff method, in this case ff->set_gain().
-+ * Therefore the greatest safe value for effect_id is FF_GAIN - 1,
-+ * and thus the total number of effects should never exceed FF_GAIN.
-+ */
-+#define FF_MAX_EFFECTS FF_GAIN
-+
-+#define FF_MAX 0x7f
-+#define FF_CNT (FF_MAX+1)
-+
-+#endif /* _UAPI_INPUT_H */
-diff --git a/include/linux/input-event-codes.h b/include/linux/input-event-codes.h
-deleted file mode 100644
-index 9771e4f8..00000000
---- include/linux/input-event-codes.h
-+++ /dev/null
-@@ -1,837 +0,0 @@
--/*
-- * Input event codes
-- *
-- * *** IMPORTANT ***
-- * This file is not only included from C-code but also from devicetree source
-- * files. As such this file MUST only contain comments and defines.
-- *
-- * Copyright (c) 1999-2002 Vojtech Pavlik
-- * Copyright (c) 2015 Hans de Goede <hdegoede@redhat.com>
-- *
-- * This program is free software; you can redistribute it and/or modify it
-- * under the terms of the GNU General Public License version 2 as published by
-- * the Free Software Foundation.
-- */
--#ifndef _UAPI_INPUT_EVENT_CODES_H
--#define _UAPI_INPUT_EVENT_CODES_H
--
--/*
-- * Device properties and quirks
-- */
--
--#define INPUT_PROP_POINTER 0x00 /* needs a pointer */
--#define INPUT_PROP_DIRECT 0x01 /* direct input devices */
--#define INPUT_PROP_BUTTONPAD 0x02 /* has button(s) under pad */
--#define INPUT_PROP_SEMI_MT 0x03 /* touch rectangle only */
--#define INPUT_PROP_TOPBUTTONPAD 0x04 /* softbuttons at top of pad */
--#define INPUT_PROP_POINTING_STICK 0x05 /* is a pointing stick */
--#define INPUT_PROP_ACCELEROMETER 0x06 /* has accelerometer */
--
--#define INPUT_PROP_MAX 0x1f
--#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1)
--
--/*
-- * Event types
-- */
--
--#define EV_SYN 0x00
--#define EV_KEY 0x01
--#define EV_REL 0x02
--#define EV_ABS 0x03
--#define EV_MSC 0x04
--#define EV_SW 0x05
--#define EV_LED 0x11
--#define EV_SND 0x12
--#define EV_REP 0x14
--#define EV_FF 0x15
--#define EV_PWR 0x16
--#define EV_FF_STATUS 0x17
--#define EV_MAX 0x1f
--#define EV_CNT (EV_MAX+1)
--
--/*
-- * Synchronization events.
-- */
--
--#define SYN_REPORT 0
--#define SYN_CONFIG 1
--#define SYN_MT_REPORT 2
--#define SYN_DROPPED 3
--#define SYN_MAX 0xf
--#define SYN_CNT (SYN_MAX+1)
--
--/*
-- * Keys and buttons
-- *
-- * Most of the keys/buttons are modeled after USB HUT 1.12
-- * (see http://www.usb.org/developers/hidpage).
-- * Abbreviations in the comments:
-- * AC - Application Control
-- * AL - Application Launch Button
-- * SC - System Control
-- */
--
--#define KEY_RESERVED 0
--#define KEY_ESC 1
--#define KEY_1 2
--#define KEY_2 3
--#define KEY_3 4
--#define KEY_4 5
--#define KEY_5 6
--#define KEY_6 7
--#define KEY_7 8
--#define KEY_8 9
--#define KEY_9 10
--#define KEY_0 11
--#define KEY_MINUS 12
--#define KEY_EQUAL 13
--#define KEY_BACKSPACE 14
--#define KEY_TAB 15
--#define KEY_Q 16
--#define KEY_W 17
--#define KEY_E 18
--#define KEY_R 19
--#define KEY_T 20
--#define KEY_Y 21
--#define KEY_U 22
--#define KEY_I 23
--#define KEY_O 24
--#define KEY_P 25
--#define KEY_LEFTBRACE 26
--#define KEY_RIGHTBRACE 27
--#define KEY_ENTER 28
--#define KEY_LEFTCTRL 29
--#define KEY_A 30
--#define KEY_S 31
--#define KEY_D 32
--#define KEY_F 33
--#define KEY_G 34
--#define KEY_H 35
--#define KEY_J 36
--#define KEY_K 37
--#define KEY_L 38
--#define KEY_SEMICOLON 39
--#define KEY_APOSTROPHE 40
--#define KEY_GRAVE 41
--#define KEY_LEFTSHIFT 42
--#define KEY_BACKSLASH 43
--#define KEY_Z 44
--#define KEY_X 45
--#define KEY_C 46
--#define KEY_V 47
--#define KEY_B 48
--#define KEY_N 49
--#define KEY_M 50
--#define KEY_COMMA 51
--#define KEY_DOT 52
--#define KEY_SLASH 53
--#define KEY_RIGHTSHIFT 54
--#define KEY_KPASTERISK 55
--#define KEY_LEFTALT 56
--#define KEY_SPACE 57
--#define KEY_CAPSLOCK 58
--#define KEY_F1 59
--#define KEY_F2 60
--#define KEY_F3 61
--#define KEY_F4 62
--#define KEY_F5 63
--#define KEY_F6 64
--#define KEY_F7 65
--#define KEY_F8 66
--#define KEY_F9 67
--#define KEY_F10 68
--#define KEY_NUMLOCK 69
--#define KEY_SCROLLLOCK 70
--#define KEY_KP7 71
--#define KEY_KP8 72
--#define KEY_KP9 73
--#define KEY_KPMINUS 74
--#define KEY_KP4 75
--#define KEY_KP5 76
--#define KEY_KP6 77
--#define KEY_KPPLUS 78
--#define KEY_KP1 79
--#define KEY_KP2 80
--#define KEY_KP3 81
--#define KEY_KP0 82
--#define KEY_KPDOT 83
--
--#define KEY_ZENKAKUHANKAKU 85
--#define KEY_102ND 86
--#define KEY_F11 87
--#define KEY_F12 88
--#define KEY_RO 89
--#define KEY_KATAKANA 90
--#define KEY_HIRAGANA 91
--#define KEY_HENKAN 92
--#define KEY_KATAKANAHIRAGANA 93
--#define KEY_MUHENKAN 94
--#define KEY_KPJPCOMMA 95
--#define KEY_KPENTER 96
--#define KEY_RIGHTCTRL 97
--#define KEY_KPSLASH 98
--#define KEY_SYSRQ 99
--#define KEY_RIGHTALT 100
--#define KEY_LINEFEED 101
--#define KEY_HOME 102
--#define KEY_UP 103
--#define KEY_PAGEUP 104
--#define KEY_LEFT 105
--#define KEY_RIGHT 106
--#define KEY_END 107
--#define KEY_DOWN 108
--#define KEY_PAGEDOWN 109
--#define KEY_INSERT 110
--#define KEY_DELETE 111
--#define KEY_MACRO 112
--#define KEY_MUTE 113
--#define KEY_VOLUMEDOWN 114
--#define KEY_VOLUMEUP 115
--#define KEY_POWER 116 /* SC System Power Down */
--#define KEY_KPEQUAL 117
--#define KEY_KPPLUSMINUS 118
--#define KEY_PAUSE 119
--#define KEY_SCALE 120 /* AL Compiz Scale (Expose) */
--
--#define KEY_KPCOMMA 121
--#define KEY_HANGEUL 122
--#define KEY_HANGUEL KEY_HANGEUL
--#define KEY_HANJA 123
--#define KEY_YEN 124
--#define KEY_LEFTMETA 125
--#define KEY_RIGHTMETA 126
--#define KEY_COMPOSE 127
--
--#define KEY_STOP 128 /* AC Stop */
--#define KEY_AGAIN 129
--#define KEY_PROPS 130 /* AC Properties */
--#define KEY_UNDO 131 /* AC Undo */
--#define KEY_FRONT 132
--#define KEY_COPY 133 /* AC Copy */
--#define KEY_OPEN 134 /* AC Open */
--#define KEY_PASTE 135 /* AC Paste */
--#define KEY_FIND 136 /* AC Search */
--#define KEY_CUT 137 /* AC Cut */
--#define KEY_HELP 138 /* AL Integrated Help Center */
--#define KEY_MENU 139 /* Menu (show menu) */
--#define KEY_CALC 140 /* AL Calculator */
--#define KEY_SETUP 141
--#define KEY_SLEEP 142 /* SC System Sleep */
--#define KEY_WAKEUP 143 /* System Wake Up */
--#define KEY_FILE 144 /* AL Local Machine Browser */
--#define KEY_SENDFILE 145
--#define KEY_DELETEFILE 146
--#define KEY_XFER 147
--#define KEY_PROG1 148
--#define KEY_PROG2 149
--#define KEY_WWW 150 /* AL Internet Browser */
--#define KEY_MSDOS 151
--#define KEY_COFFEE 152 /* AL Terminal Lock/Screensaver */
--#define KEY_SCREENLOCK KEY_COFFEE
--#define KEY_ROTATE_DISPLAY 153 /* Display orientation for e.g. tablets */
--#define KEY_DIRECTION KEY_ROTATE_DISPLAY
--#define KEY_CYCLEWINDOWS 154
--#define KEY_MAIL 155
--#define KEY_BOOKMARKS 156 /* AC Bookmarks */
--#define KEY_COMPUTER 157
--#define KEY_BACK 158 /* AC Back */
--#define KEY_FORWARD 159 /* AC Forward */
--#define KEY_CLOSECD 160
--#define KEY_EJECTCD 161
--#define KEY_EJECTCLOSECD 162
--#define KEY_NEXTSONG 163
--#define KEY_PLAYPAUSE 164
--#define KEY_PREVIOUSSONG 165
--#define KEY_STOPCD 166
--#define KEY_RECORD 167
--#define KEY_REWIND 168
--#define KEY_PHONE 169 /* Media Select Telephone */
--#define KEY_ISO 170
--#define KEY_CONFIG 171 /* AL Consumer Control Configuration */
--#define KEY_HOMEPAGE 172 /* AC Home */
--#define KEY_REFRESH 173 /* AC Refresh */
--#define KEY_EXIT 174 /* AC Exit */
--#define KEY_MOVE 175
--#define KEY_EDIT 176
--#define KEY_SCROLLUP 177
--#define KEY_SCROLLDOWN 178
--#define KEY_KPLEFTPAREN 179
--#define KEY_KPRIGHTPAREN 180
--#define KEY_NEW 181 /* AC New */
--#define KEY_REDO 182 /* AC Redo/Repeat */
--
--#define KEY_F13 183
--#define KEY_F14 184
--#define KEY_F15 185
--#define KEY_F16 186
--#define KEY_F17 187
--#define KEY_F18 188
--#define KEY_F19 189
--#define KEY_F20 190
--#define KEY_F21 191
--#define KEY_F22 192
--#define KEY_F23 193
--#define KEY_F24 194
--
--#define KEY_PLAYCD 200
--#define KEY_PAUSECD 201
--#define KEY_PROG3 202
--#define KEY_PROG4 203
--#define KEY_DASHBOARD 204 /* AL Dashboard */
--#define KEY_SUSPEND 205
--#define KEY_CLOSE 206 /* AC Close */
--#define KEY_PLAY 207
--#define KEY_FASTFORWARD 208
--#define KEY_BASSBOOST 209
--#define KEY_PRINT 210 /* AC Print */
--#define KEY_HP 211
--#define KEY_CAMERA 212
--#define KEY_SOUND 213
--#define KEY_QUESTION 214
--#define KEY_EMAIL 215
--#define KEY_CHAT 216
--#define KEY_SEARCH 217
--#define KEY_CONNECT 218
--#define KEY_FINANCE 219 /* AL Checkbook/Finance */
--#define KEY_SPORT 220
--#define KEY_SHOP 221
--#define KEY_ALTERASE 222
--#define KEY_CANCEL 223 /* AC Cancel */
--#define KEY_BRIGHTNESSDOWN 224
--#define KEY_BRIGHTNESSUP 225
--#define KEY_MEDIA 226
--
--#define KEY_SWITCHVIDEOMODE 227 /* Cycle between available video
-- outputs (Monitor/LCD/TV-out/etc) */
--#define KEY_KBDILLUMTOGGLE 228
--#define KEY_KBDILLUMDOWN 229
--#define KEY_KBDILLUMUP 230
--
--#define KEY_SEND 231 /* AC Send */
--#define KEY_REPLY 232 /* AC Reply */
--#define KEY_FORWARDMAIL 233 /* AC Forward Msg */
--#define KEY_SAVE 234 /* AC Save */
--#define KEY_DOCUMENTS 235
--
--#define KEY_BATTERY 236
--
--#define KEY_BLUETOOTH 237
--#define KEY_WLAN 238
--#define KEY_UWB 239
--
--#define KEY_UNKNOWN 240
--
--#define KEY_VIDEO_NEXT 241 /* drive next video source */
--#define KEY_VIDEO_PREV 242 /* drive previous video source */
--#define KEY_BRIGHTNESS_CYCLE 243 /* brightness up, after max is min */
--#define KEY_BRIGHTNESS_AUTO 244 /* Set Auto Brightness: manual
-- brightness control is off,
-- rely on ambient */
--#define KEY_BRIGHTNESS_ZERO KEY_BRIGHTNESS_AUTO
--#define KEY_DISPLAY_OFF 245 /* display device to off state */
--
--#define KEY_WWAN 246 /* Wireless WAN (LTE, UMTS, GSM, etc.) */
--#define KEY_WIMAX KEY_WWAN
--#define KEY_RFKILL 247 /* Key that controls all radios */
--
--#define KEY_MICMUTE 248 /* Mute / unmute the microphone */
--
--/* Code 255 is reserved for special needs of AT keyboard driver */
--
--#define BTN_MISC 0x100
--#define BTN_0 0x100
--#define BTN_1 0x101
--#define BTN_2 0x102
--#define BTN_3 0x103
--#define BTN_4 0x104
--#define BTN_5 0x105
--#define BTN_6 0x106
--#define BTN_7 0x107
--#define BTN_8 0x108
--#define BTN_9 0x109
--
--#define BTN_MOUSE 0x110
--#define BTN_LEFT 0x110
--#define BTN_RIGHT 0x111
--#define BTN_MIDDLE 0x112
--#define BTN_SIDE 0x113
--#define BTN_EXTRA 0x114
--#define BTN_FORWARD 0x115
--#define BTN_BACK 0x116
--#define BTN_TASK 0x117
--
--#define BTN_JOYSTICK 0x120
--#define BTN_TRIGGER 0x120
--#define BTN_THUMB 0x121
--#define BTN_THUMB2 0x122
--#define BTN_TOP 0x123
--#define BTN_TOP2 0x124
--#define BTN_PINKIE 0x125
--#define BTN_BASE 0x126
--#define BTN_BASE2 0x127
--#define BTN_BASE3 0x128
--#define BTN_BASE4 0x129
--#define BTN_BASE5 0x12a
--#define BTN_BASE6 0x12b
--#define BTN_DEAD 0x12f
--
--#define BTN_GAMEPAD 0x130
--#define BTN_SOUTH 0x130
--#define BTN_A BTN_SOUTH
--#define BTN_EAST 0x131
--#define BTN_B BTN_EAST
--#define BTN_C 0x132
--#define BTN_NORTH 0x133
--#define BTN_X BTN_NORTH
--#define BTN_WEST 0x134
--#define BTN_Y BTN_WEST
--#define BTN_Z 0x135
--#define BTN_TL 0x136
--#define BTN_TR 0x137
--#define BTN_TL2 0x138
--#define BTN_TR2 0x139
--#define BTN_SELECT 0x13a
--#define BTN_START 0x13b
--#define BTN_MODE 0x13c
--#define BTN_THUMBL 0x13d
--#define BTN_THUMBR 0x13e
--
--#define BTN_DIGI 0x140
--#define BTN_TOOL_PEN 0x140
--#define BTN_TOOL_RUBBER 0x141
--#define BTN_TOOL_BRUSH 0x142
--#define BTN_TOOL_PENCIL 0x143
--#define BTN_TOOL_AIRBRUSH 0x144
--#define BTN_TOOL_FINGER 0x145
--#define BTN_TOOL_MOUSE 0x146
--#define BTN_TOOL_LENS 0x147
--#define BTN_TOOL_QUINTTAP 0x148 /* Five fingers on trackpad */
--#define BTN_TOUCH 0x14a
--#define BTN_STYLUS 0x14b
--#define BTN_STYLUS2 0x14c
--#define BTN_TOOL_DOUBLETAP 0x14d
--#define BTN_TOOL_TRIPLETAP 0x14e
--#define BTN_TOOL_QUADTAP 0x14f /* Four fingers on trackpad */
--
--#define BTN_WHEEL 0x150
--#define BTN_GEAR_DOWN 0x150
--#define BTN_GEAR_UP 0x151
--
--#define KEY_OK 0x160
--#define KEY_SELECT 0x161
--#define KEY_GOTO 0x162
--#define KEY_CLEAR 0x163
--#define KEY_POWER2 0x164
--#define KEY_OPTION 0x165
--#define KEY_INFO 0x166 /* AL OEM Features/Tips/Tutorial */
--#define KEY_TIME 0x167
--#define KEY_VENDOR 0x168
--#define KEY_ARCHIVE 0x169
--#define KEY_PROGRAM 0x16a /* Media Select Program Guide */
--#define KEY_CHANNEL 0x16b
--#define KEY_FAVORITES 0x16c
--#define KEY_EPG 0x16d
--#define KEY_PVR 0x16e /* Media Select Home */
--#define KEY_MHP 0x16f
--#define KEY_LANGUAGE 0x170
--#define KEY_TITLE 0x171
--#define KEY_SUBTITLE 0x172
--#define KEY_ANGLE 0x173
--#define KEY_ZOOM 0x174
--#define KEY_MODE 0x175
--#define KEY_KEYBOARD 0x176
--#define KEY_SCREEN 0x177
--#define KEY_PC 0x178 /* Media Select Computer */
--#define KEY_TV 0x179 /* Media Select TV */
--#define KEY_TV2 0x17a /* Media Select Cable */
--#define KEY_VCR 0x17b /* Media Select VCR */
--#define KEY_VCR2 0x17c /* VCR Plus */
--#define KEY_SAT 0x17d /* Media Select Satellite */
--#define KEY_SAT2 0x17e
--#define KEY_CD 0x17f /* Media Select CD */
--#define KEY_TAPE 0x180 /* Media Select Tape */
--#define KEY_RADIO 0x181
--#define KEY_TUNER 0x182 /* Media Select Tuner */
--#define KEY_PLAYER 0x183
--#define KEY_TEXT 0x184
--#define KEY_DVD 0x185 /* Media Select DVD */
--#define KEY_AUX 0x186
--#define KEY_MP3 0x187
--#define KEY_AUDIO 0x188 /* AL Audio Browser */
--#define KEY_VIDEO 0x189 /* AL Movie Browser */
--#define KEY_DIRECTORY 0x18a
--#define KEY_LIST 0x18b
--#define KEY_MEMO 0x18c /* Media Select Messages */
--#define KEY_CALENDAR 0x18d
--#define KEY_RED 0x18e
--#define KEY_GREEN 0x18f
--#define KEY_YELLOW 0x190
--#define KEY_BLUE 0x191
--#define KEY_CHANNELUP 0x192 /* Channel Increment */
--#define KEY_CHANNELDOWN 0x193 /* Channel Decrement */
--#define KEY_FIRST 0x194
--#define KEY_LAST 0x195 /* Recall Last */
--#define KEY_AB 0x196
--#define KEY_NEXT 0x197
--#define KEY_RESTART 0x198
--#define KEY_SLOW 0x199
--#define KEY_SHUFFLE 0x19a
--#define KEY_BREAK 0x19b
--#define KEY_PREVIOUS 0x19c
--#define KEY_DIGITS 0x19d
--#define KEY_TEEN 0x19e
--#define KEY_TWEN 0x19f
--#define KEY_VIDEOPHONE 0x1a0 /* Media Select Video Phone */
--#define KEY_GAMES 0x1a1 /* Media Select Games */
--#define KEY_ZOOMIN 0x1a2 /* AC Zoom In */
--#define KEY_ZOOMOUT 0x1a3 /* AC Zoom Out */
--#define KEY_ZOOMRESET 0x1a4 /* AC Zoom */
--#define KEY_WORDPROCESSOR 0x1a5 /* AL Word Processor */
--#define KEY_EDITOR 0x1a6 /* AL Text Editor */
--#define KEY_SPREADSHEET 0x1a7 /* AL Spreadsheet */
--#define KEY_GRAPHICSEDITOR 0x1a8 /* AL Graphics Editor */
--#define KEY_PRESENTATION 0x1a9 /* AL Presentation App */
--#define KEY_DATABASE 0x1aa /* AL Database App */
--#define KEY_NEWS 0x1ab /* AL Newsreader */
--#define KEY_VOICEMAIL 0x1ac /* AL Voicemail */
--#define KEY_ADDRESSBOOK 0x1ad /* AL Contacts/Address Book */
--#define KEY_MESSENGER 0x1ae /* AL Instant Messaging */
--#define KEY_DISPLAYTOGGLE 0x1af /* Turn display (LCD) on and off */
--#define KEY_BRIGHTNESS_TOGGLE KEY_DISPLAYTOGGLE
--#define KEY_SPELLCHECK 0x1b0 /* AL Spell Check */
--#define KEY_LOGOFF 0x1b1 /* AL Logoff */
--
--#define KEY_DOLLAR 0x1b2
--#define KEY_EURO 0x1b3
--
--#define KEY_FRAMEBACK 0x1b4 /* Consumer - transport controls */
--#define KEY_FRAMEFORWARD 0x1b5
--#define KEY_CONTEXT_MENU 0x1b6 /* GenDesc - system context menu */
--#define KEY_MEDIA_REPEAT 0x1b7 /* Consumer - transport control */
--#define KEY_10CHANNELSUP 0x1b8 /* 10 channels up (10+) */
--#define KEY_10CHANNELSDOWN 0x1b9 /* 10 channels down (10-) */
--#define KEY_IMAGES 0x1ba /* AL Image Browser */
--
--#define KEY_DEL_EOL 0x1c0
--#define KEY_DEL_EOS 0x1c1
--#define KEY_INS_LINE 0x1c2
--#define KEY_DEL_LINE 0x1c3
--
--#define KEY_FN 0x1d0
--#define KEY_FN_ESC 0x1d1
--#define KEY_FN_F1 0x1d2
--#define KEY_FN_F2 0x1d3
--#define KEY_FN_F3 0x1d4
--#define KEY_FN_F4 0x1d5
--#define KEY_FN_F5 0x1d6
--#define KEY_FN_F6 0x1d7
--#define KEY_FN_F7 0x1d8
--#define KEY_FN_F8 0x1d9
--#define KEY_FN_F9 0x1da
--#define KEY_FN_F10 0x1db
--#define KEY_FN_F11 0x1dc
--#define KEY_FN_F12 0x1dd
--#define KEY_FN_1 0x1de
--#define KEY_FN_2 0x1df
--#define KEY_FN_D 0x1e0
--#define KEY_FN_E 0x1e1
--#define KEY_FN_F 0x1e2
--#define KEY_FN_S 0x1e3
--#define KEY_FN_B 0x1e4
--
--#define KEY_BRL_DOT1 0x1f1
--#define KEY_BRL_DOT2 0x1f2
--#define KEY_BRL_DOT3 0x1f3
--#define KEY_BRL_DOT4 0x1f4
--#define KEY_BRL_DOT5 0x1f5
--#define KEY_BRL_DOT6 0x1f6
--#define KEY_BRL_DOT7 0x1f7
--#define KEY_BRL_DOT8 0x1f8
--#define KEY_BRL_DOT9 0x1f9
--#define KEY_BRL_DOT10 0x1fa
--
--#define KEY_NUMERIC_0 0x200 /* used by phones, remote controls, */
--#define KEY_NUMERIC_1 0x201 /* and other keypads */
--#define KEY_NUMERIC_2 0x202
--#define KEY_NUMERIC_3 0x203
--#define KEY_NUMERIC_4 0x204
--#define KEY_NUMERIC_5 0x205
--#define KEY_NUMERIC_6 0x206
--#define KEY_NUMERIC_7 0x207
--#define KEY_NUMERIC_8 0x208
--#define KEY_NUMERIC_9 0x209
--#define KEY_NUMERIC_STAR 0x20a
--#define KEY_NUMERIC_POUND 0x20b
--#define KEY_NUMERIC_A 0x20c /* Phone key A - HUT Telephony 0xb9 */
--#define KEY_NUMERIC_B 0x20d
--#define KEY_NUMERIC_C 0x20e
--#define KEY_NUMERIC_D 0x20f
--
--#define KEY_CAMERA_FOCUS 0x210
--#define KEY_WPS_BUTTON 0x211 /* WiFi Protected Setup key */
--
--#define KEY_TOUCHPAD_TOGGLE 0x212 /* Request switch touchpad on or off */
--#define KEY_TOUCHPAD_ON 0x213
--#define KEY_TOUCHPAD_OFF 0x214
--
--#define KEY_CAMERA_ZOOMIN 0x215
--#define KEY_CAMERA_ZOOMOUT 0x216
--#define KEY_CAMERA_UP 0x217
--#define KEY_CAMERA_DOWN 0x218
--#define KEY_CAMERA_LEFT 0x219
--#define KEY_CAMERA_RIGHT 0x21a
--
--#define KEY_ATTENDANT_ON 0x21b
--#define KEY_ATTENDANT_OFF 0x21c
--#define KEY_ATTENDANT_TOGGLE 0x21d /* Attendant call on or off */
--#define KEY_LIGHTS_TOGGLE 0x21e /* Reading light on or off */
--
--#define BTN_DPAD_UP 0x220
--#define BTN_DPAD_DOWN 0x221
--#define BTN_DPAD_LEFT 0x222
--#define BTN_DPAD_RIGHT 0x223
--
--#define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */
--
--#define KEY_BUTTONCONFIG 0x240 /* AL Button Configuration */
--#define KEY_TASKMANAGER 0x241 /* AL Task/Project Manager */
--#define KEY_JOURNAL 0x242 /* AL Log/Journal/Timecard */
--#define KEY_CONTROLPANEL 0x243 /* AL Control Panel */
--#define KEY_APPSELECT 0x244 /* AL Select Task/Application */
--#define KEY_SCREENSAVER 0x245 /* AL Screen Saver */
--#define KEY_VOICECOMMAND 0x246 /* Listening Voice Command */
--
--#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
--#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
--
--#define KEY_KBDINPUTASSIST_PREV 0x260
--#define KEY_KBDINPUTASSIST_NEXT 0x261
--#define KEY_KBDINPUTASSIST_PREVGROUP 0x262
--#define KEY_KBDINPUTASSIST_NEXTGROUP 0x263
--#define KEY_KBDINPUTASSIST_ACCEPT 0x264
--#define KEY_KBDINPUTASSIST_CANCEL 0x265
--
--/* Diagonal movement keys */
--#define KEY_RIGHT_UP 0x266
--#define KEY_RIGHT_DOWN 0x267
--#define KEY_LEFT_UP 0x268
--#define KEY_LEFT_DOWN 0x269
--
--#define KEY_ROOT_MENU 0x26a /* Show Device's Root Menu */
--/* Show Top Menu of the Media (e.g. DVD) */
--#define KEY_MEDIA_TOP_MENU 0x26b
--#define KEY_NUMERIC_11 0x26c
--#define KEY_NUMERIC_12 0x26d
--/*
-- * Toggle Audio Description: refers to an audio service that helps blind and
-- * visually impaired consumers understand the action in a program. Note: in
-- * some countries this is referred to as "Video Description".
-- */
--#define KEY_AUDIO_DESC 0x26e
--#define KEY_3D_MODE 0x26f
--#define KEY_NEXT_FAVORITE 0x270
--#define KEY_STOP_RECORD 0x271
--#define KEY_PAUSE_RECORD 0x272
--#define KEY_VOD 0x273 /* Video on Demand */
--#define KEY_UNMUTE 0x274
--#define KEY_FASTREVERSE 0x275
--#define KEY_SLOWREVERSE 0x276
--/*
-- * Control a data application associated with the currently viewed channel,
-- * e.g. teletext or data broadcast application (MHEG, MHP, HbbTV, etc.)
-- */
--#define KEY_DATA 0x277
--#define KEY_ONSCREEN_KEYBOARD 0x278
--
--#define BTN_TRIGGER_HAPPY 0x2c0
--#define BTN_TRIGGER_HAPPY1 0x2c0
--#define BTN_TRIGGER_HAPPY2 0x2c1
--#define BTN_TRIGGER_HAPPY3 0x2c2
--#define BTN_TRIGGER_HAPPY4 0x2c3
--#define BTN_TRIGGER_HAPPY5 0x2c4
--#define BTN_TRIGGER_HAPPY6 0x2c5
--#define BTN_TRIGGER_HAPPY7 0x2c6
--#define BTN_TRIGGER_HAPPY8 0x2c7
--#define BTN_TRIGGER_HAPPY9 0x2c8
--#define BTN_TRIGGER_HAPPY10 0x2c9
--#define BTN_TRIGGER_HAPPY11 0x2ca
--#define BTN_TRIGGER_HAPPY12 0x2cb
--#define BTN_TRIGGER_HAPPY13 0x2cc
--#define BTN_TRIGGER_HAPPY14 0x2cd
--#define BTN_TRIGGER_HAPPY15 0x2ce
--#define BTN_TRIGGER_HAPPY16 0x2cf
--#define BTN_TRIGGER_HAPPY17 0x2d0
--#define BTN_TRIGGER_HAPPY18 0x2d1
--#define BTN_TRIGGER_HAPPY19 0x2d2
--#define BTN_TRIGGER_HAPPY20 0x2d3
--#define BTN_TRIGGER_HAPPY21 0x2d4
--#define BTN_TRIGGER_HAPPY22 0x2d5
--#define BTN_TRIGGER_HAPPY23 0x2d6
--#define BTN_TRIGGER_HAPPY24 0x2d7
--#define BTN_TRIGGER_HAPPY25 0x2d8
--#define BTN_TRIGGER_HAPPY26 0x2d9
--#define BTN_TRIGGER_HAPPY27 0x2da
--#define BTN_TRIGGER_HAPPY28 0x2db
--#define BTN_TRIGGER_HAPPY29 0x2dc
--#define BTN_TRIGGER_HAPPY30 0x2dd
--#define BTN_TRIGGER_HAPPY31 0x2de
--#define BTN_TRIGGER_HAPPY32 0x2df
--#define BTN_TRIGGER_HAPPY33 0x2e0
--#define BTN_TRIGGER_HAPPY34 0x2e1
--#define BTN_TRIGGER_HAPPY35 0x2e2
--#define BTN_TRIGGER_HAPPY36 0x2e3
--#define BTN_TRIGGER_HAPPY37 0x2e4
--#define BTN_TRIGGER_HAPPY38 0x2e5
--#define BTN_TRIGGER_HAPPY39 0x2e6
--#define BTN_TRIGGER_HAPPY40 0x2e7
--
--/* We avoid low common keys in module aliases so they don't get huge. */
--#define KEY_MIN_INTERESTING KEY_MUTE
--#define KEY_MAX 0x2ff
--#define KEY_CNT (KEY_MAX+1)
--
--/*
-- * Relative axes
-- */
--
--#define REL_X 0x00
--#define REL_Y 0x01
--#define REL_Z 0x02
--#define REL_RX 0x03
--#define REL_RY 0x04
--#define REL_RZ 0x05
--#define REL_HWHEEL 0x06
--#define REL_DIAL 0x07
--#define REL_WHEEL 0x08
--#define REL_MISC 0x09
--#define REL_MAX 0x0f
--#define REL_CNT (REL_MAX+1)
--
--/*
-- * Absolute axes
-- */
--
--#define ABS_X 0x00
--#define ABS_Y 0x01
--#define ABS_Z 0x02
--#define ABS_RX 0x03
--#define ABS_RY 0x04
--#define ABS_RZ 0x05
--#define ABS_THROTTLE 0x06
--#define ABS_RUDDER 0x07
--#define ABS_WHEEL 0x08
--#define ABS_GAS 0x09
--#define ABS_BRAKE 0x0a
--#define ABS_HAT0X 0x10
--#define ABS_HAT0Y 0x11
--#define ABS_HAT1X 0x12
--#define ABS_HAT1Y 0x13
--#define ABS_HAT2X 0x14
--#define ABS_HAT2Y 0x15
--#define ABS_HAT3X 0x16
--#define ABS_HAT3Y 0x17
--#define ABS_PRESSURE 0x18
--#define ABS_DISTANCE 0x19
--#define ABS_TILT_X 0x1a
--#define ABS_TILT_Y 0x1b
--#define ABS_TOOL_WIDTH 0x1c
--
--#define ABS_VOLUME 0x20
--
--#define ABS_MISC 0x28
--
--#define ABS_MT_SLOT 0x2f /* MT slot being modified */
--#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */
--#define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */
--#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */
--#define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */
--#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */
--#define ABS_MT_POSITION_X 0x35 /* Center X touch position */
--#define ABS_MT_POSITION_Y 0x36 /* Center Y touch position */
--#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */
--#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
--#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */
--#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */
--#define ABS_MT_DISTANCE 0x3b /* Contact hover distance */
--#define ABS_MT_TOOL_X 0x3c /* Center X tool position */
--#define ABS_MT_TOOL_Y 0x3d /* Center Y tool position */
--
--#define ABS_MAX 0x3f
--#define ABS_CNT (ABS_MAX+1)
--
--/*
-- * Switch events
-- */
--
--#define SW_LID 0x00 /* set = lid shut */
--#define SW_TABLET_MODE 0x01 /* set = tablet mode */
--#define SW_HEADPHONE_INSERT 0x02 /* set = inserted */
--#define SW_RFKILL_ALL 0x03 /* rfkill master switch, type "any"
-- set = radio enabled */
--#define SW_RADIO SW_RFKILL_ALL /* deprecated */
--#define SW_MICROPHONE_INSERT 0x04 /* set = inserted */
--#define SW_DOCK 0x05 /* set = plugged into dock */
--#define SW_LINEOUT_INSERT 0x06 /* set = inserted */
--#define SW_JACK_PHYSICAL_INSERT 0x07 /* set = mechanical switch set */
--#define SW_VIDEOOUT_INSERT 0x08 /* set = inserted */
--#define SW_CAMERA_LENS_COVER 0x09 /* set = lens covered */
--#define SW_KEYPAD_SLIDE 0x0a /* set = keypad slide out */
--#define SW_FRONT_PROXIMITY 0x0b /* set = front proximity sensor active */
--#define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */
--#define SW_LINEIN_INSERT 0x0d /* set = inserted */
--#define SW_MUTE_DEVICE 0x0e /* set = device disabled */
--#define SW_PEN_INSERTED 0x0f /* set = pen inserted */
--#define SW_MAX 0x0f
--#define SW_CNT (SW_MAX+1)
--
--/*
-- * Misc events
-- */
--
--#define MSC_SERIAL 0x00
--#define MSC_PULSELED 0x01
--#define MSC_GESTURE 0x02
--#define MSC_RAW 0x03
--#define MSC_SCAN 0x04
--#define MSC_TIMESTAMP 0x05
--#define MSC_MAX 0x07
--#define MSC_CNT (MSC_MAX+1)
--
--/*
-- * LEDs
-- */
--
--#define LED_NUML 0x00
--#define LED_CAPSL 0x01
--#define LED_SCROLLL 0x02
--#define LED_COMPOSE 0x03
--#define LED_KANA 0x04
--#define LED_SLEEP 0x05
--#define LED_SUSPEND 0x06
--#define LED_MUTE 0x07
--#define LED_MISC 0x08
--#define LED_MAIL 0x09
--#define LED_CHARGING 0x0a
--#define LED_MAX 0x0f
--#define LED_CNT (LED_MAX+1)
--
--/*
-- * Autorepeat values
-- */
--
--#define REP_DELAY 0x00
--#define REP_PERIOD 0x01
--#define REP_MAX 0x01
--#define REP_CNT (REP_MAX+1)
--
--/*
-- * Sounds
-- */
--
--#define SND_CLICK 0x00
--#define SND_BELL 0x01
--#define SND_TONE 0x02
--#define SND_MAX 0x07
--#define SND_CNT (SND_MAX+1)
--
--#endif
-diff --git a/include/linux/input.h b/include/linux/input.h
-index b3044aec..03c512ef 100644
---- include/linux/input.h
-+++ include/linux/input.h
-@@ -1,506 +1,5 @@
--/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
--/*
-- * Copyright (c) 1999-2002 Vojtech Pavlik
-- *
-- * This program is free software; you can redistribute it and/or modify it
-- * under the terms of the GNU General Public License version 2 as published by
-- * the Free Software Foundation.
-- */
--#ifndef _INPUT_H
--#define _INPUT_H
--
--
--#include <sys/time.h>
--#include <sys/ioctl.h>
--#include <sys/types.h>
--#include <linux/types.h>
--
--#include "input-event-codes.h"
--
--/*
-- * The event structure itself
-- * Note that __USE_TIME_BITS64 is defined by libc based on
-- * application's request to use 64 bit time_t.
-- */
--
--struct input_event {
--#if (__BITS_PER_LONG != 32 || !defined(__USE_TIME_BITS64)) && !defined(__KERNEL)
-- struct timeval time;
--#define input_event_sec time.tv_sec
--#define input_event_usec time.tv_usec
--#else
-- __kernel_ulong_t __sec;
-- __kernel_ulong_t __usec;
--#define input_event_sec __sec
--#define input_event_usec __usec
-+#ifdef __linux__
-+#include "linux/input.h"
-+#elif __FreeBSD__
-+#include "freebsd/input.h"
- #endif
-- __u16 type;
-- __u16 code;
-- __s32 value;
--};
--
--/*
-- * Protocol version.
-- */
--
--#define EV_VERSION 0x010001
--
--/*
-- * IOCTLs (0x00 - 0x7f)
-- */
--
--struct input_id {
-- __u16 bustype;
-- __u16 vendor;
-- __u16 product;
-- __u16 version;
--};
--
--/**
-- * struct input_absinfo - used by EVIOCGABS/EVIOCSABS ioctls
-- * @value: latest reported value for the axis.
-- * @minimum: specifies minimum value for the axis.
-- * @maximum: specifies maximum value for the axis.
-- * @fuzz: specifies fuzz value that is used to filter noise from
-- * the event stream.
-- * @flat: values that are within this value will be discarded by
-- * joydev interface and reported as 0 instead.
-- * @resolution: specifies resolution for the values reported for
-- * the axis.
-- *
-- * Note that input core does not clamp reported values to the
-- * [minimum, maximum] limits, such task is left to userspace.
-- *
-- * The default resolution for main axes (ABS_X, ABS_Y, ABS_Z)
-- * is reported in units per millimeter (units/mm), resolution
-- * for rotational axes (ABS_RX, ABS_RY, ABS_RZ) is reported
-- * in units per radian.
-- * When INPUT_PROP_ACCELEROMETER is set the resolution changes.
-- * The main axes (ABS_X, ABS_Y, ABS_Z) are then reported in
-- * in units per g (units/g) and in units per degree per second
-- * (units/deg/s) for rotational axes (ABS_RX, ABS_RY, ABS_RZ).
-- */
--struct input_absinfo {
-- __s32 value;
-- __s32 minimum;
-- __s32 maximum;
-- __s32 fuzz;
-- __s32 flat;
-- __s32 resolution;
--};
--
--/**
-- * struct input_keymap_entry - used by EVIOCGKEYCODE/EVIOCSKEYCODE ioctls
-- * @scancode: scancode represented in machine-endian form.
-- * @len: length of the scancode that resides in @scancode buffer.
-- * @index: index in the keymap, may be used instead of scancode
-- * @flags: allows to specify how kernel should handle the request. For
-- * example, setting INPUT_KEYMAP_BY_INDEX flag indicates that kernel
-- * should perform lookup in keymap by @index instead of @scancode
-- * @keycode: key code assigned to this scancode
-- *
-- * The structure is used to retrieve and modify keymap data. Users have
-- * option of performing lookup either by @scancode itself or by @index
-- * in keymap entry. EVIOCGKEYCODE will also return scancode or index
-- * (depending on which element was used to perform lookup).
-- */
--struct input_keymap_entry {
--#define INPUT_KEYMAP_BY_INDEX (1 << 0)
-- __u8 flags;
-- __u8 len;
-- __u16 index;
-- __u32 keycode;
-- __u8 scancode[32];
--};
--
--struct input_mask {
-- __u32 type;
-- __u32 codes_size;
-- __u64 codes_ptr;
--};
--
--#define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */
--#define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */
--#define EVIOCGREP _IOR('E', 0x03, unsigned int[2]) /* get repeat settings */
--#define EVIOCSREP _IOW('E', 0x03, unsigned int[2]) /* set repeat settings */
--
--#define EVIOCGKEYCODE _IOR('E', 0x04, unsigned int[2]) /* get keycode */
--#define EVIOCGKEYCODE_V2 _IOR('E', 0x04, struct input_keymap_entry)
--#define EVIOCSKEYCODE _IOW('E', 0x04, unsigned int[2]) /* set keycode */
--#define EVIOCSKEYCODE_V2 _IOW('E', 0x04, struct input_keymap_entry)
--
--#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len) /* get device name */
--#define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len) /* get physical location */
--#define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len) /* get unique identifier */
--#define EVIOCGPROP(len) _IOC(_IOC_READ, 'E', 0x09, len) /* get device properties */
--
--/**
-- * EVIOCGMTSLOTS(len) - get MT slot values
-- * @len: size of the data buffer in bytes
-- *
-- * The ioctl buffer argument should be binary equivalent to
-- *
-- * struct input_mt_request_layout {
-- * __u32 code;
-- * __s32 values[num_slots];
-- * };
-- *
-- * where num_slots is the (arbitrary) number of MT slots to extract.
-- *
-- * The ioctl size argument (len) is the size of the buffer, which
-- * should satisfy len = (num_slots + 1) * sizeof(__s32). If len is
-- * too small to fit all available slots, the first num_slots are
-- * returned.
-- *
-- * Before the call, code is set to the wanted ABS_MT event type. On
-- * return, values[] is filled with the slot values for the specified
-- * ABS_MT code.
-- *
-- * If the request code is not an ABS_MT value, -EINVAL is returned.
-- */
--#define EVIOCGMTSLOTS(len) _IOC(_IOC_READ, 'E', 0x0a, len)
--
--#define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len) /* get global key state */
--#define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len) /* get all LEDs */
--#define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len) /* get all sounds status */
--#define EVIOCGSW(len) _IOC(_IOC_READ, 'E', 0x1b, len) /* get all switch states */
--
--#define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + (ev), len) /* get event bits */
--#define EVIOCGABS(abs) _IOR('E', 0x40 + (abs), struct input_absinfo) /* get abs value/limits */
--#define EVIOCSABS(abs) _IOW('E', 0xc0 + (abs), struct input_absinfo) /* set abs value/limits */
--
--#define EVIOCSFF _IOW('E', 0x80, struct ff_effect) /* send a force effect to a force feedback device */
--#define EVIOCRMFF _IOW('E', 0x81, int) /* Erase a force effect */
--#define EVIOCGEFFECTS _IOR('E', 0x84, int) /* Report number of effects playable at the same time */
--
--#define EVIOCGRAB _IOW('E', 0x90, int) /* Grab/Release device */
--#define EVIOCREVOKE _IOW('E', 0x91, int) /* Revoke device access */
--
--/**
-- * EVIOCGMASK - Retrieve current event mask
-- *
-- * This ioctl allows user to retrieve the current event mask for specific
-- * event type. The argument must be of type "struct input_mask" and
-- * specifies the event type to query, the address of the receive buffer and
-- * the size of the receive buffer.
-- *
-- * The event mask is a per-client mask that specifies which events are
-- * forwarded to the client. Each event code is represented by a single bit
-- * in the event mask. If the bit is set, the event is passed to the client
-- * normally. Otherwise, the event is filtered and will never be queued on
-- * the client's receive buffer.
-- *
-- * Event masks do not affect global state of the input device. They only
-- * affect the file descriptor they are applied to.
-- *
-- * The default event mask for a client has all bits set, i.e. all events
-- * are forwarded to the client. If the kernel is queried for an unknown
-- * event type or if the receive buffer is larger than the number of
-- * event codes known to the kernel, the kernel returns all zeroes for those
-- * codes.
-- *
-- * At maximum, codes_size bytes are copied.
-- *
-- * This ioctl may fail with ENODEV in case the file is revoked, EFAULT
-- * if the receive-buffer points to invalid memory, or EINVAL if the kernel
-- * does not implement the ioctl.
-- */
--#define EVIOCGMASK _IOR('E', 0x92, struct input_mask) /* Get event-masks */
--
--/**
-- * EVIOCSMASK - Set event mask
-- *
-- * This ioctl is the counterpart to EVIOCGMASK. Instead of receiving the
-- * current event mask, this changes the client's event mask for a specific
-- * type. See EVIOCGMASK for a description of event-masks and the
-- * argument-type.
-- *
-- * This ioctl provides full forward compatibility. If the passed event type
-- * is unknown to the kernel, or if the number of event codes specified in
-- * the mask is bigger than what is known to the kernel, the ioctl is still
-- * accepted and applied. However, any unknown codes are left untouched and
-- * stay cleared. That means, the kernel always filters unknown codes
-- * regardless of what the client requests. If the new mask doesn't cover
-- * all known event-codes, all remaining codes are automatically cleared and
-- * thus filtered.
-- *
-- * This ioctl may fail with ENODEV in case the file is revoked. EFAULT is
-- * returned if the receive-buffer points to invalid memory. EINVAL is returned
-- * if the kernel does not implement the ioctl.
-- */
--#define EVIOCSMASK _IOW('E', 0x93, struct input_mask) /* Set event-masks */
--
--#define EVIOCSCLOCKID _IOW('E', 0xa0, int) /* Set clockid to be used for timestamps */
--
--/*
-- * IDs.
-- */
--
--#define ID_BUS 0
--#define ID_VENDOR 1
--#define ID_PRODUCT 2
--#define ID_VERSION 3
--
--#define BUS_PCI 0x01
--#define BUS_ISAPNP 0x02
--#define BUS_USB 0x03
--#define BUS_HIL 0x04
--#define BUS_BLUETOOTH 0x05
--#define BUS_VIRTUAL 0x06
--
--#define BUS_ISA 0x10
--#define BUS_I8042 0x11
--#define BUS_XTKBD 0x12
--#define BUS_RS232 0x13
--#define BUS_GAMEPORT 0x14
--#define BUS_PARPORT 0x15
--#define BUS_AMIGA 0x16
--#define BUS_ADB 0x17
--#define BUS_I2C 0x18
--#define BUS_HOST 0x19
--#define BUS_GSC 0x1A
--#define BUS_ATARI 0x1B
--#define BUS_SPI 0x1C
--#define BUS_RMI 0x1D
--#define BUS_CEC 0x1E
--#define BUS_INTEL_ISHTP 0x1F
--
--/*
-- * MT_TOOL types
-- */
--#define MT_TOOL_FINGER 0
--#define MT_TOOL_PEN 1
--#define MT_TOOL_PALM 2
--#define MT_TOOL_MAX 2
--
--/*
-- * Values describing the status of a force-feedback effect
-- */
--#define FF_STATUS_STOPPED 0x00
--#define FF_STATUS_PLAYING 0x01
--#define FF_STATUS_MAX 0x01
--
--/*
-- * Structures used in ioctls to upload effects to a device
-- * They are pieces of a bigger structure (called ff_effect)
-- */
--
--/*
-- * All duration values are expressed in ms. Values above 32767 ms (0x7fff)
-- * should not be used and have unspecified results.
-- */
--
--/**
-- * struct ff_replay - defines scheduling of the force-feedback effect
-- * @length: duration of the effect
-- * @delay: delay before effect should start playing
-- */
--struct ff_replay {
-- __u16 length;
-- __u16 delay;
--};
--
--/**
-- * struct ff_trigger - defines what triggers the force-feedback effect
-- * @button: number of the button triggering the effect
-- * @interval: controls how soon the effect can be re-triggered
-- */
--struct ff_trigger {
-- __u16 button;
-- __u16 interval;
--};
--
--/**
-- * struct ff_envelope - generic force-feedback effect envelope
-- * @attack_length: duration of the attack (ms)
-- * @attack_level: level at the beginning of the attack
-- * @fade_length: duration of fade (ms)
-- * @fade_level: level at the end of fade
-- *
-- * The @attack_level and @fade_level are absolute values; when applying
-- * envelope force-feedback core will convert to positive/negative
-- * value based on polarity of the default level of the effect.
-- * Valid range for the attack and fade levels is 0x0000 - 0x7fff
-- */
--struct ff_envelope {
-- __u16 attack_length;
-- __u16 attack_level;
-- __u16 fade_length;
-- __u16 fade_level;
--};
--
--/**
-- * struct ff_constant_effect - defines parameters of a constant force-feedback effect
-- * @level: strength of the effect; may be negative
-- * @envelope: envelope data
-- */
--struct ff_constant_effect {
-- __s16 level;
-- struct ff_envelope envelope;
--};
--
--/**
-- * struct ff_ramp_effect - defines parameters of a ramp force-feedback effect
-- * @start_level: beginning strength of the effect; may be negative
-- * @end_level: final strength of the effect; may be negative
-- * @envelope: envelope data
-- */
--struct ff_ramp_effect {
-- __s16 start_level;
-- __s16 end_level;
-- struct ff_envelope envelope;
--};
--
--/**
-- * struct ff_condition_effect - defines a spring or friction force-feedback effect
-- * @right_saturation: maximum level when joystick moved all way to the right
-- * @left_saturation: same for the left side
-- * @right_coeff: controls how fast the force grows when the joystick moves
-- * to the right
-- * @left_coeff: same for the left side
-- * @deadband: size of the dead zone, where no force is produced
-- * @center: position of the dead zone
-- */
--struct ff_condition_effect {
-- __u16 right_saturation;
-- __u16 left_saturation;
--
-- __s16 right_coeff;
-- __s16 left_coeff;
--
-- __u16 deadband;
-- __s16 center;
--};
--
--/**
-- * struct ff_periodic_effect - defines parameters of a periodic force-feedback effect
-- * @waveform: kind of the effect (wave)
-- * @period: period of the wave (ms)
-- * @magnitude: peak value
-- * @offset: mean value of the wave (roughly)
-- * @phase: 'horizontal' shift
-- * @envelope: envelope data
-- * @custom_len: number of samples (FF_CUSTOM only)
-- * @custom_data: buffer of samples (FF_CUSTOM only)
-- *
-- * Known waveforms - FF_SQUARE, FF_TRIANGLE, FF_SINE, FF_SAW_UP,
-- * FF_SAW_DOWN, FF_CUSTOM. The exact syntax FF_CUSTOM is undefined
-- * for the time being as no driver supports it yet.
-- *
-- * Note: the data pointed by custom_data is copied by the driver.
-- * You can therefore dispose of the memory after the upload/update.
-- */
--struct ff_periodic_effect {
-- __u16 waveform;
-- __u16 period;
-- __s16 magnitude;
-- __s16 offset;
-- __u16 phase;
--
-- struct ff_envelope envelope;
--
-- __u32 custom_len;
-- __s16 *custom_data;
--};
--
--/**
-- * struct ff_rumble_effect - defines parameters of a periodic force-feedback effect
-- * @strong_magnitude: magnitude of the heavy motor
-- * @weak_magnitude: magnitude of the light one
-- *
-- * Some rumble pads have two motors of different weight. Strong_magnitude
-- * represents the magnitude of the vibration generated by the heavy one.
-- */
--struct ff_rumble_effect {
-- __u16 strong_magnitude;
-- __u16 weak_magnitude;
--};
--
--/**
-- * struct ff_effect - defines force feedback effect
-- * @type: type of the effect (FF_CONSTANT, FF_PERIODIC, FF_RAMP, FF_SPRING,
-- * FF_FRICTION, FF_DAMPER, FF_RUMBLE, FF_INERTIA, or FF_CUSTOM)
-- * @id: an unique id assigned to an effect
-- * @direction: direction of the effect
-- * @trigger: trigger conditions (struct ff_trigger)
-- * @replay: scheduling of the effect (struct ff_replay)
-- * @u: effect-specific structure (one of ff_constant_effect, ff_ramp_effect,
-- * ff_periodic_effect, ff_condition_effect, ff_rumble_effect) further
-- * defining effect parameters
-- *
-- * This structure is sent through ioctl from the application to the driver.
-- * To create a new effect application should set its @id to -1; the kernel
-- * will return assigned @id which can later be used to update or delete
-- * this effect.
-- *
-- * Direction of the effect is encoded as follows:
-- * 0 deg -> 0x0000 (down)
-- * 90 deg -> 0x4000 (left)
-- * 180 deg -> 0x8000 (up)
-- * 270 deg -> 0xC000 (right)
-- */
--struct ff_effect {
-- __u16 type;
-- __s16 id;
-- __u16 direction;
-- struct ff_trigger trigger;
-- struct ff_replay replay;
--
-- union {
-- struct ff_constant_effect constant;
-- struct ff_ramp_effect ramp;
-- struct ff_periodic_effect periodic;
-- struct ff_condition_effect condition[2]; /* One for each axis */
-- struct ff_rumble_effect rumble;
-- } u;
--};
--
--/*
-- * Force feedback effect types
-- */
--
--#define FF_RUMBLE 0x50
--#define FF_PERIODIC 0x51
--#define FF_CONSTANT 0x52
--#define FF_SPRING 0x53
--#define FF_FRICTION 0x54
--#define FF_DAMPER 0x55
--#define FF_INERTIA 0x56
--#define FF_RAMP 0x57
--
--#define FF_EFFECT_MIN FF_RUMBLE
--#define FF_EFFECT_MAX FF_RAMP
--
--/*
-- * Force feedback periodic effect types
-- */
--
--#define FF_SQUARE 0x58
--#define FF_TRIANGLE 0x59
--#define FF_SINE 0x5a
--#define FF_SAW_UP 0x5b
--#define FF_SAW_DOWN 0x5c
--#define FF_CUSTOM 0x5d
--
--#define FF_WAVEFORM_MIN FF_SQUARE
--#define FF_WAVEFORM_MAX FF_CUSTOM
--
--/*
-- * Set ff device properties
-- */
--
--#define FF_GAIN 0x60
--#define FF_AUTOCENTER 0x61
--
--/*
-- * ff->playback(effect_id = FF_GAIN) is the first effect_id to
-- * cause a collision with another ff method, in this case ff->set_gain().
-- * Therefore the greatest safe value for effect_id is FF_GAIN - 1,
-- * and thus the total number of effects should never exceed FF_GAIN.
-- */
--#define FF_MAX_EFFECTS FF_GAIN
--
--#define FF_MAX 0x7f
--#define FF_CNT (FF_MAX+1)
--
--#endif /* _INPUT_H */
-diff --git a/include/linux/linux/input-event-codes.h b/include/linux/linux/input-event-codes.h
-new file mode 100644
-index 00000000..9771e4f8
---- /dev/null
-+++ include/linux/linux/input-event-codes.h
-@@ -0,0 +1,837 @@
-+/*
-+ * Input event codes
-+ *
-+ * *** IMPORTANT ***
-+ * This file is not only included from C-code but also from devicetree source
-+ * files. As such this file MUST only contain comments and defines.
-+ *
-+ * Copyright (c) 1999-2002 Vojtech Pavlik
-+ * Copyright (c) 2015 Hans de Goede <hdegoede@redhat.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ */
-+#ifndef _UAPI_INPUT_EVENT_CODES_H
-+#define _UAPI_INPUT_EVENT_CODES_H
-+
-+/*
-+ * Device properties and quirks
-+ */
-+
-+#define INPUT_PROP_POINTER 0x00 /* needs a pointer */
-+#define INPUT_PROP_DIRECT 0x01 /* direct input devices */
-+#define INPUT_PROP_BUTTONPAD 0x02 /* has button(s) under pad */
-+#define INPUT_PROP_SEMI_MT 0x03 /* touch rectangle only */
-+#define INPUT_PROP_TOPBUTTONPAD 0x04 /* softbuttons at top of pad */
-+#define INPUT_PROP_POINTING_STICK 0x05 /* is a pointing stick */
-+#define INPUT_PROP_ACCELEROMETER 0x06 /* has accelerometer */
-+
-+#define INPUT_PROP_MAX 0x1f
-+#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1)
-+
-+/*
-+ * Event types
-+ */
-+
-+#define EV_SYN 0x00
-+#define EV_KEY 0x01
-+#define EV_REL 0x02
-+#define EV_ABS 0x03
-+#define EV_MSC 0x04
-+#define EV_SW 0x05
-+#define EV_LED 0x11
-+#define EV_SND 0x12
-+#define EV_REP 0x14
-+#define EV_FF 0x15
-+#define EV_PWR 0x16
-+#define EV_FF_STATUS 0x17
-+#define EV_MAX 0x1f
-+#define EV_CNT (EV_MAX+1)
-+
-+/*
-+ * Synchronization events.
-+ */
-+
-+#define SYN_REPORT 0
-+#define SYN_CONFIG 1
-+#define SYN_MT_REPORT 2
-+#define SYN_DROPPED 3
-+#define SYN_MAX 0xf
-+#define SYN_CNT (SYN_MAX+1)
-+
-+/*
-+ * Keys and buttons
-+ *
-+ * Most of the keys/buttons are modeled after USB HUT 1.12
-+ * (see http://www.usb.org/developers/hidpage).
-+ * Abbreviations in the comments:
-+ * AC - Application Control
-+ * AL - Application Launch Button
-+ * SC - System Control
-+ */
-+
-+#define KEY_RESERVED 0
-+#define KEY_ESC 1
-+#define KEY_1 2
-+#define KEY_2 3
-+#define KEY_3 4
-+#define KEY_4 5
-+#define KEY_5 6
-+#define KEY_6 7
-+#define KEY_7 8
-+#define KEY_8 9
-+#define KEY_9 10
-+#define KEY_0 11
-+#define KEY_MINUS 12
-+#define KEY_EQUAL 13
-+#define KEY_BACKSPACE 14
-+#define KEY_TAB 15
-+#define KEY_Q 16
-+#define KEY_W 17
-+#define KEY_E 18
-+#define KEY_R 19
-+#define KEY_T 20
-+#define KEY_Y 21
-+#define KEY_U 22
-+#define KEY_I 23
-+#define KEY_O 24
-+#define KEY_P 25
-+#define KEY_LEFTBRACE 26
-+#define KEY_RIGHTBRACE 27
-+#define KEY_ENTER 28
-+#define KEY_LEFTCTRL 29
-+#define KEY_A 30
-+#define KEY_S 31
-+#define KEY_D 32
-+#define KEY_F 33
-+#define KEY_G 34
-+#define KEY_H 35
-+#define KEY_J 36
-+#define KEY_K 37
-+#define KEY_L 38
-+#define KEY_SEMICOLON 39
-+#define KEY_APOSTROPHE 40
-+#define KEY_GRAVE 41
-+#define KEY_LEFTSHIFT 42
-+#define KEY_BACKSLASH 43
-+#define KEY_Z 44
-+#define KEY_X 45
-+#define KEY_C 46
-+#define KEY_V 47
-+#define KEY_B 48
-+#define KEY_N 49
-+#define KEY_M 50
-+#define KEY_COMMA 51
-+#define KEY_DOT 52
-+#define KEY_SLASH 53
-+#define KEY_RIGHTSHIFT 54
-+#define KEY_KPASTERISK 55
-+#define KEY_LEFTALT 56
-+#define KEY_SPACE 57
-+#define KEY_CAPSLOCK 58
-+#define KEY_F1 59
-+#define KEY_F2 60
-+#define KEY_F3 61
-+#define KEY_F4 62
-+#define KEY_F5 63
-+#define KEY_F6 64
-+#define KEY_F7 65
-+#define KEY_F8 66
-+#define KEY_F9 67
-+#define KEY_F10 68
-+#define KEY_NUMLOCK 69
-+#define KEY_SCROLLLOCK 70
-+#define KEY_KP7 71
-+#define KEY_KP8 72
-+#define KEY_KP9 73
-+#define KEY_KPMINUS 74
-+#define KEY_KP4 75
-+#define KEY_KP5 76
-+#define KEY_KP6 77
-+#define KEY_KPPLUS 78
-+#define KEY_KP1 79
-+#define KEY_KP2 80
-+#define KEY_KP3 81
-+#define KEY_KP0 82
-+#define KEY_KPDOT 83
-+
-+#define KEY_ZENKAKUHANKAKU 85
-+#define KEY_102ND 86
-+#define KEY_F11 87
-+#define KEY_F12 88
-+#define KEY_RO 89
-+#define KEY_KATAKANA 90
-+#define KEY_HIRAGANA 91
-+#define KEY_HENKAN 92
-+#define KEY_KATAKANAHIRAGANA 93
-+#define KEY_MUHENKAN 94
-+#define KEY_KPJPCOMMA 95
-+#define KEY_KPENTER 96
-+#define KEY_RIGHTCTRL 97
-+#define KEY_KPSLASH 98
-+#define KEY_SYSRQ 99
-+#define KEY_RIGHTALT 100
-+#define KEY_LINEFEED 101
-+#define KEY_HOME 102
-+#define KEY_UP 103
-+#define KEY_PAGEUP 104
-+#define KEY_LEFT 105
-+#define KEY_RIGHT 106
-+#define KEY_END 107
-+#define KEY_DOWN 108
-+#define KEY_PAGEDOWN 109
-+#define KEY_INSERT 110
-+#define KEY_DELETE 111
-+#define KEY_MACRO 112
-+#define KEY_MUTE 113
-+#define KEY_VOLUMEDOWN 114
-+#define KEY_VOLUMEUP 115
-+#define KEY_POWER 116 /* SC System Power Down */
-+#define KEY_KPEQUAL 117
-+#define KEY_KPPLUSMINUS 118
-+#define KEY_PAUSE 119
-+#define KEY_SCALE 120 /* AL Compiz Scale (Expose) */
-+
-+#define KEY_KPCOMMA 121
-+#define KEY_HANGEUL 122
-+#define KEY_HANGUEL KEY_HANGEUL
-+#define KEY_HANJA 123
-+#define KEY_YEN 124
-+#define KEY_LEFTMETA 125
-+#define KEY_RIGHTMETA 126
-+#define KEY_COMPOSE 127
-+
-+#define KEY_STOP 128 /* AC Stop */
-+#define KEY_AGAIN 129
-+#define KEY_PROPS 130 /* AC Properties */
-+#define KEY_UNDO 131 /* AC Undo */
-+#define KEY_FRONT 132
-+#define KEY_COPY 133 /* AC Copy */
-+#define KEY_OPEN 134 /* AC Open */
-+#define KEY_PASTE 135 /* AC Paste */
-+#define KEY_FIND 136 /* AC Search */
-+#define KEY_CUT 137 /* AC Cut */
-+#define KEY_HELP 138 /* AL Integrated Help Center */
-+#define KEY_MENU 139 /* Menu (show menu) */
-+#define KEY_CALC 140 /* AL Calculator */
-+#define KEY_SETUP 141
-+#define KEY_SLEEP 142 /* SC System Sleep */
-+#define KEY_WAKEUP 143 /* System Wake Up */
-+#define KEY_FILE 144 /* AL Local Machine Browser */
-+#define KEY_SENDFILE 145
-+#define KEY_DELETEFILE 146
-+#define KEY_XFER 147
-+#define KEY_PROG1 148
-+#define KEY_PROG2 149
-+#define KEY_WWW 150 /* AL Internet Browser */
-+#define KEY_MSDOS 151
-+#define KEY_COFFEE 152 /* AL Terminal Lock/Screensaver */
-+#define KEY_SCREENLOCK KEY_COFFEE
-+#define KEY_ROTATE_DISPLAY 153 /* Display orientation for e.g. tablets */
-+#define KEY_DIRECTION KEY_ROTATE_DISPLAY
-+#define KEY_CYCLEWINDOWS 154
-+#define KEY_MAIL 155
-+#define KEY_BOOKMARKS 156 /* AC Bookmarks */
-+#define KEY_COMPUTER 157
-+#define KEY_BACK 158 /* AC Back */
-+#define KEY_FORWARD 159 /* AC Forward */
-+#define KEY_CLOSECD 160
-+#define KEY_EJECTCD 161
-+#define KEY_EJECTCLOSECD 162
-+#define KEY_NEXTSONG 163
-+#define KEY_PLAYPAUSE 164
-+#define KEY_PREVIOUSSONG 165
-+#define KEY_STOPCD 166
-+#define KEY_RECORD 167
-+#define KEY_REWIND 168
-+#define KEY_PHONE 169 /* Media Select Telephone */
-+#define KEY_ISO 170
-+#define KEY_CONFIG 171 /* AL Consumer Control Configuration */
-+#define KEY_HOMEPAGE 172 /* AC Home */
-+#define KEY_REFRESH 173 /* AC Refresh */
-+#define KEY_EXIT 174 /* AC Exit */
-+#define KEY_MOVE 175
-+#define KEY_EDIT 176
-+#define KEY_SCROLLUP 177
-+#define KEY_SCROLLDOWN 178
-+#define KEY_KPLEFTPAREN 179
-+#define KEY_KPRIGHTPAREN 180
-+#define KEY_NEW 181 /* AC New */
-+#define KEY_REDO 182 /* AC Redo/Repeat */
-+
-+#define KEY_F13 183
-+#define KEY_F14 184
-+#define KEY_F15 185
-+#define KEY_F16 186
-+#define KEY_F17 187
-+#define KEY_F18 188
-+#define KEY_F19 189
-+#define KEY_F20 190
-+#define KEY_F21 191
-+#define KEY_F22 192
-+#define KEY_F23 193
-+#define KEY_F24 194
-+
-+#define KEY_PLAYCD 200
-+#define KEY_PAUSECD 201
-+#define KEY_PROG3 202
-+#define KEY_PROG4 203
-+#define KEY_DASHBOARD 204 /* AL Dashboard */
-+#define KEY_SUSPEND 205
-+#define KEY_CLOSE 206 /* AC Close */
-+#define KEY_PLAY 207
-+#define KEY_FASTFORWARD 208
-+#define KEY_BASSBOOST 209
-+#define KEY_PRINT 210 /* AC Print */
-+#define KEY_HP 211
-+#define KEY_CAMERA 212
-+#define KEY_SOUND 213
-+#define KEY_QUESTION 214
-+#define KEY_EMAIL 215
-+#define KEY_CHAT 216
-+#define KEY_SEARCH 217
-+#define KEY_CONNECT 218
-+#define KEY_FINANCE 219 /* AL Checkbook/Finance */
-+#define KEY_SPORT 220
-+#define KEY_SHOP 221
-+#define KEY_ALTERASE 222
-+#define KEY_CANCEL 223 /* AC Cancel */
-+#define KEY_BRIGHTNESSDOWN 224
-+#define KEY_BRIGHTNESSUP 225
-+#define KEY_MEDIA 226
-+
-+#define KEY_SWITCHVIDEOMODE 227 /* Cycle between available video
-+ outputs (Monitor/LCD/TV-out/etc) */
-+#define KEY_KBDILLUMTOGGLE 228
-+#define KEY_KBDILLUMDOWN 229
-+#define KEY_KBDILLUMUP 230
-+
-+#define KEY_SEND 231 /* AC Send */
-+#define KEY_REPLY 232 /* AC Reply */
-+#define KEY_FORWARDMAIL 233 /* AC Forward Msg */
-+#define KEY_SAVE 234 /* AC Save */
-+#define KEY_DOCUMENTS 235
-+
-+#define KEY_BATTERY 236
-+
-+#define KEY_BLUETOOTH 237
-+#define KEY_WLAN 238
-+#define KEY_UWB 239
-+
-+#define KEY_UNKNOWN 240
-+
-+#define KEY_VIDEO_NEXT 241 /* drive next video source */
-+#define KEY_VIDEO_PREV 242 /* drive previous video source */
-+#define KEY_BRIGHTNESS_CYCLE 243 /* brightness up, after max is min */
-+#define KEY_BRIGHTNESS_AUTO 244 /* Set Auto Brightness: manual
-+ brightness control is off,
-+ rely on ambient */
-+#define KEY_BRIGHTNESS_ZERO KEY_BRIGHTNESS_AUTO
-+#define KEY_DISPLAY_OFF 245 /* display device to off state */
-+
-+#define KEY_WWAN 246 /* Wireless WAN (LTE, UMTS, GSM, etc.) */
-+#define KEY_WIMAX KEY_WWAN
-+#define KEY_RFKILL 247 /* Key that controls all radios */
-+
-+#define KEY_MICMUTE 248 /* Mute / unmute the microphone */
-+
-+/* Code 255 is reserved for special needs of AT keyboard driver */
-+
-+#define BTN_MISC 0x100
-+#define BTN_0 0x100
-+#define BTN_1 0x101
-+#define BTN_2 0x102
-+#define BTN_3 0x103
-+#define BTN_4 0x104
-+#define BTN_5 0x105
-+#define BTN_6 0x106
-+#define BTN_7 0x107
-+#define BTN_8 0x108
-+#define BTN_9 0x109
-+
-+#define BTN_MOUSE 0x110
-+#define BTN_LEFT 0x110
-+#define BTN_RIGHT 0x111
-+#define BTN_MIDDLE 0x112
-+#define BTN_SIDE 0x113
-+#define BTN_EXTRA 0x114
-+#define BTN_FORWARD 0x115
-+#define BTN_BACK 0x116
-+#define BTN_TASK 0x117
-+
-+#define BTN_JOYSTICK 0x120
-+#define BTN_TRIGGER 0x120
-+#define BTN_THUMB 0x121
-+#define BTN_THUMB2 0x122
-+#define BTN_TOP 0x123
-+#define BTN_TOP2 0x124
-+#define BTN_PINKIE 0x125
-+#define BTN_BASE 0x126
-+#define BTN_BASE2 0x127
-+#define BTN_BASE3 0x128
-+#define BTN_BASE4 0x129
-+#define BTN_BASE5 0x12a
-+#define BTN_BASE6 0x12b
-+#define BTN_DEAD 0x12f
-+
-+#define BTN_GAMEPAD 0x130
-+#define BTN_SOUTH 0x130
-+#define BTN_A BTN_SOUTH
-+#define BTN_EAST 0x131
-+#define BTN_B BTN_EAST
-+#define BTN_C 0x132
-+#define BTN_NORTH 0x133
-+#define BTN_X BTN_NORTH
-+#define BTN_WEST 0x134
-+#define BTN_Y BTN_WEST
-+#define BTN_Z 0x135
-+#define BTN_TL 0x136
-+#define BTN_TR 0x137
-+#define BTN_TL2 0x138
-+#define BTN_TR2 0x139
-+#define BTN_SELECT 0x13a
-+#define BTN_START 0x13b
-+#define BTN_MODE 0x13c
-+#define BTN_THUMBL 0x13d
-+#define BTN_THUMBR 0x13e
-+
-+#define BTN_DIGI 0x140
-+#define BTN_TOOL_PEN 0x140
-+#define BTN_TOOL_RUBBER 0x141
-+#define BTN_TOOL_BRUSH 0x142
-+#define BTN_TOOL_PENCIL 0x143
-+#define BTN_TOOL_AIRBRUSH 0x144
-+#define BTN_TOOL_FINGER 0x145
-+#define BTN_TOOL_MOUSE 0x146
-+#define BTN_TOOL_LENS 0x147
-+#define BTN_TOOL_QUINTTAP 0x148 /* Five fingers on trackpad */
-+#define BTN_TOUCH 0x14a
-+#define BTN_STYLUS 0x14b
-+#define BTN_STYLUS2 0x14c
-+#define BTN_TOOL_DOUBLETAP 0x14d
-+#define BTN_TOOL_TRIPLETAP 0x14e
-+#define BTN_TOOL_QUADTAP 0x14f /* Four fingers on trackpad */
-+
-+#define BTN_WHEEL 0x150
-+#define BTN_GEAR_DOWN 0x150
-+#define BTN_GEAR_UP 0x151
-+
-+#define KEY_OK 0x160
-+#define KEY_SELECT 0x161
-+#define KEY_GOTO 0x162
-+#define KEY_CLEAR 0x163
-+#define KEY_POWER2 0x164
-+#define KEY_OPTION 0x165
-+#define KEY_INFO 0x166 /* AL OEM Features/Tips/Tutorial */
-+#define KEY_TIME 0x167
-+#define KEY_VENDOR 0x168
-+#define KEY_ARCHIVE 0x169
-+#define KEY_PROGRAM 0x16a /* Media Select Program Guide */
-+#define KEY_CHANNEL 0x16b
-+#define KEY_FAVORITES 0x16c
-+#define KEY_EPG 0x16d
-+#define KEY_PVR 0x16e /* Media Select Home */
-+#define KEY_MHP 0x16f
-+#define KEY_LANGUAGE 0x170
-+#define KEY_TITLE 0x171
-+#define KEY_SUBTITLE 0x172
-+#define KEY_ANGLE 0x173
-+#define KEY_ZOOM 0x174
-+#define KEY_MODE 0x175
-+#define KEY_KEYBOARD 0x176
-+#define KEY_SCREEN 0x177
-+#define KEY_PC 0x178 /* Media Select Computer */
-+#define KEY_TV 0x179 /* Media Select TV */
-+#define KEY_TV2 0x17a /* Media Select Cable */
-+#define KEY_VCR 0x17b /* Media Select VCR */
-+#define KEY_VCR2 0x17c /* VCR Plus */
-+#define KEY_SAT 0x17d /* Media Select Satellite */
-+#define KEY_SAT2 0x17e
-+#define KEY_CD 0x17f /* Media Select CD */
-+#define KEY_TAPE 0x180 /* Media Select Tape */
-+#define KEY_RADIO 0x181
-+#define KEY_TUNER 0x182 /* Media Select Tuner */
-+#define KEY_PLAYER 0x183
-+#define KEY_TEXT 0x184
-+#define KEY_DVD 0x185 /* Media Select DVD */
-+#define KEY_AUX 0x186
-+#define KEY_MP3 0x187
-+#define KEY_AUDIO 0x188 /* AL Audio Browser */
-+#define KEY_VIDEO 0x189 /* AL Movie Browser */
-+#define KEY_DIRECTORY 0x18a
-+#define KEY_LIST 0x18b
-+#define KEY_MEMO 0x18c /* Media Select Messages */
-+#define KEY_CALENDAR 0x18d
-+#define KEY_RED 0x18e
-+#define KEY_GREEN 0x18f
-+#define KEY_YELLOW 0x190
-+#define KEY_BLUE 0x191
-+#define KEY_CHANNELUP 0x192 /* Channel Increment */
-+#define KEY_CHANNELDOWN 0x193 /* Channel Decrement */
-+#define KEY_FIRST 0x194
-+#define KEY_LAST 0x195 /* Recall Last */
-+#define KEY_AB 0x196
-+#define KEY_NEXT 0x197
-+#define KEY_RESTART 0x198
-+#define KEY_SLOW 0x199
-+#define KEY_SHUFFLE 0x19a
-+#define KEY_BREAK 0x19b
-+#define KEY_PREVIOUS 0x19c
-+#define KEY_DIGITS 0x19d
-+#define KEY_TEEN 0x19e
-+#define KEY_TWEN 0x19f
-+#define KEY_VIDEOPHONE 0x1a0 /* Media Select Video Phone */
-+#define KEY_GAMES 0x1a1 /* Media Select Games */
-+#define KEY_ZOOMIN 0x1a2 /* AC Zoom In */
-+#define KEY_ZOOMOUT 0x1a3 /* AC Zoom Out */
-+#define KEY_ZOOMRESET 0x1a4 /* AC Zoom */
-+#define KEY_WORDPROCESSOR 0x1a5 /* AL Word Processor */
-+#define KEY_EDITOR 0x1a6 /* AL Text Editor */
-+#define KEY_SPREADSHEET 0x1a7 /* AL Spreadsheet */
-+#define KEY_GRAPHICSEDITOR 0x1a8 /* AL Graphics Editor */
-+#define KEY_PRESENTATION 0x1a9 /* AL Presentation App */
-+#define KEY_DATABASE 0x1aa /* AL Database App */
-+#define KEY_NEWS 0x1ab /* AL Newsreader */
-+#define KEY_VOICEMAIL 0x1ac /* AL Voicemail */
-+#define KEY_ADDRESSBOOK 0x1ad /* AL Contacts/Address Book */
-+#define KEY_MESSENGER 0x1ae /* AL Instant Messaging */
-+#define KEY_DISPLAYTOGGLE 0x1af /* Turn display (LCD) on and off */
-+#define KEY_BRIGHTNESS_TOGGLE KEY_DISPLAYTOGGLE
-+#define KEY_SPELLCHECK 0x1b0 /* AL Spell Check */
-+#define KEY_LOGOFF 0x1b1 /* AL Logoff */
-+
-+#define KEY_DOLLAR 0x1b2
-+#define KEY_EURO 0x1b3
-+
-+#define KEY_FRAMEBACK 0x1b4 /* Consumer - transport controls */
-+#define KEY_FRAMEFORWARD 0x1b5
-+#define KEY_CONTEXT_MENU 0x1b6 /* GenDesc - system context menu */
-+#define KEY_MEDIA_REPEAT 0x1b7 /* Consumer - transport control */
-+#define KEY_10CHANNELSUP 0x1b8 /* 10 channels up (10+) */
-+#define KEY_10CHANNELSDOWN 0x1b9 /* 10 channels down (10-) */
-+#define KEY_IMAGES 0x1ba /* AL Image Browser */
-+
-+#define KEY_DEL_EOL 0x1c0
-+#define KEY_DEL_EOS 0x1c1
-+#define KEY_INS_LINE 0x1c2
-+#define KEY_DEL_LINE 0x1c3
-+
-+#define KEY_FN 0x1d0
-+#define KEY_FN_ESC 0x1d1
-+#define KEY_FN_F1 0x1d2
-+#define KEY_FN_F2 0x1d3
-+#define KEY_FN_F3 0x1d4
-+#define KEY_FN_F4 0x1d5
-+#define KEY_FN_F5 0x1d6
-+#define KEY_FN_F6 0x1d7
-+#define KEY_FN_F7 0x1d8
-+#define KEY_FN_F8 0x1d9
-+#define KEY_FN_F9 0x1da
-+#define KEY_FN_F10 0x1db
-+#define KEY_FN_F11 0x1dc
-+#define KEY_FN_F12 0x1dd
-+#define KEY_FN_1 0x1de
-+#define KEY_FN_2 0x1df
-+#define KEY_FN_D 0x1e0
-+#define KEY_FN_E 0x1e1
-+#define KEY_FN_F 0x1e2
-+#define KEY_FN_S 0x1e3
-+#define KEY_FN_B 0x1e4
-+
-+#define KEY_BRL_DOT1 0x1f1
-+#define KEY_BRL_DOT2 0x1f2
-+#define KEY_BRL_DOT3 0x1f3
-+#define KEY_BRL_DOT4 0x1f4
-+#define KEY_BRL_DOT5 0x1f5
-+#define KEY_BRL_DOT6 0x1f6
-+#define KEY_BRL_DOT7 0x1f7
-+#define KEY_BRL_DOT8 0x1f8
-+#define KEY_BRL_DOT9 0x1f9
-+#define KEY_BRL_DOT10 0x1fa
-+
-+#define KEY_NUMERIC_0 0x200 /* used by phones, remote controls, */
-+#define KEY_NUMERIC_1 0x201 /* and other keypads */
-+#define KEY_NUMERIC_2 0x202
-+#define KEY_NUMERIC_3 0x203
-+#define KEY_NUMERIC_4 0x204
-+#define KEY_NUMERIC_5 0x205
-+#define KEY_NUMERIC_6 0x206
-+#define KEY_NUMERIC_7 0x207
-+#define KEY_NUMERIC_8 0x208
-+#define KEY_NUMERIC_9 0x209
-+#define KEY_NUMERIC_STAR 0x20a
-+#define KEY_NUMERIC_POUND 0x20b
-+#define KEY_NUMERIC_A 0x20c /* Phone key A - HUT Telephony 0xb9 */
-+#define KEY_NUMERIC_B 0x20d
-+#define KEY_NUMERIC_C 0x20e
-+#define KEY_NUMERIC_D 0x20f
-+
-+#define KEY_CAMERA_FOCUS 0x210
-+#define KEY_WPS_BUTTON 0x211 /* WiFi Protected Setup key */
-+
-+#define KEY_TOUCHPAD_TOGGLE 0x212 /* Request switch touchpad on or off */
-+#define KEY_TOUCHPAD_ON 0x213
-+#define KEY_TOUCHPAD_OFF 0x214
-+
-+#define KEY_CAMERA_ZOOMIN 0x215
-+#define KEY_CAMERA_ZOOMOUT 0x216
-+#define KEY_CAMERA_UP 0x217
-+#define KEY_CAMERA_DOWN 0x218
-+#define KEY_CAMERA_LEFT 0x219
-+#define KEY_CAMERA_RIGHT 0x21a
-+
-+#define KEY_ATTENDANT_ON 0x21b
-+#define KEY_ATTENDANT_OFF 0x21c
-+#define KEY_ATTENDANT_TOGGLE 0x21d /* Attendant call on or off */
-+#define KEY_LIGHTS_TOGGLE 0x21e /* Reading light on or off */
-+
-+#define BTN_DPAD_UP 0x220
-+#define BTN_DPAD_DOWN 0x221
-+#define BTN_DPAD_LEFT 0x222
-+#define BTN_DPAD_RIGHT 0x223
-+
-+#define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */
-+
-+#define KEY_BUTTONCONFIG 0x240 /* AL Button Configuration */
-+#define KEY_TASKMANAGER 0x241 /* AL Task/Project Manager */
-+#define KEY_JOURNAL 0x242 /* AL Log/Journal/Timecard */
-+#define KEY_CONTROLPANEL 0x243 /* AL Control Panel */
-+#define KEY_APPSELECT 0x244 /* AL Select Task/Application */
-+#define KEY_SCREENSAVER 0x245 /* AL Screen Saver */
-+#define KEY_VOICECOMMAND 0x246 /* Listening Voice Command */
-+
-+#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
-+#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
-+
-+#define KEY_KBDINPUTASSIST_PREV 0x260
-+#define KEY_KBDINPUTASSIST_NEXT 0x261
-+#define KEY_KBDINPUTASSIST_PREVGROUP 0x262
-+#define KEY_KBDINPUTASSIST_NEXTGROUP 0x263
-+#define KEY_KBDINPUTASSIST_ACCEPT 0x264
-+#define KEY_KBDINPUTASSIST_CANCEL 0x265
-+
-+/* Diagonal movement keys */
-+#define KEY_RIGHT_UP 0x266
-+#define KEY_RIGHT_DOWN 0x267
-+#define KEY_LEFT_UP 0x268
-+#define KEY_LEFT_DOWN 0x269
-+
-+#define KEY_ROOT_MENU 0x26a /* Show Device's Root Menu */
-+/* Show Top Menu of the Media (e.g. DVD) */
-+#define KEY_MEDIA_TOP_MENU 0x26b
-+#define KEY_NUMERIC_11 0x26c
-+#define KEY_NUMERIC_12 0x26d
-+/*
-+ * Toggle Audio Description: refers to an audio service that helps blind and
-+ * visually impaired consumers understand the action in a program. Note: in
-+ * some countries this is referred to as "Video Description".
-+ */
-+#define KEY_AUDIO_DESC 0x26e
-+#define KEY_3D_MODE 0x26f
-+#define KEY_NEXT_FAVORITE 0x270
-+#define KEY_STOP_RECORD 0x271
-+#define KEY_PAUSE_RECORD 0x272
-+#define KEY_VOD 0x273 /* Video on Demand */
-+#define KEY_UNMUTE 0x274
-+#define KEY_FASTREVERSE 0x275
-+#define KEY_SLOWREVERSE 0x276
-+/*
-+ * Control a data application associated with the currently viewed channel,
-+ * e.g. teletext or data broadcast application (MHEG, MHP, HbbTV, etc.)
-+ */
-+#define KEY_DATA 0x277
-+#define KEY_ONSCREEN_KEYBOARD 0x278
-+
-+#define BTN_TRIGGER_HAPPY 0x2c0
-+#define BTN_TRIGGER_HAPPY1 0x2c0
-+#define BTN_TRIGGER_HAPPY2 0x2c1
-+#define BTN_TRIGGER_HAPPY3 0x2c2
-+#define BTN_TRIGGER_HAPPY4 0x2c3
-+#define BTN_TRIGGER_HAPPY5 0x2c4
-+#define BTN_TRIGGER_HAPPY6 0x2c5
-+#define BTN_TRIGGER_HAPPY7 0x2c6
-+#define BTN_TRIGGER_HAPPY8 0x2c7
-+#define BTN_TRIGGER_HAPPY9 0x2c8
-+#define BTN_TRIGGER_HAPPY10 0x2c9
-+#define BTN_TRIGGER_HAPPY11 0x2ca
-+#define BTN_TRIGGER_HAPPY12 0x2cb
-+#define BTN_TRIGGER_HAPPY13 0x2cc
-+#define BTN_TRIGGER_HAPPY14 0x2cd
-+#define BTN_TRIGGER_HAPPY15 0x2ce
-+#define BTN_TRIGGER_HAPPY16 0x2cf
-+#define BTN_TRIGGER_HAPPY17 0x2d0
-+#define BTN_TRIGGER_HAPPY18 0x2d1
-+#define BTN_TRIGGER_HAPPY19 0x2d2
-+#define BTN_TRIGGER_HAPPY20 0x2d3
-+#define BTN_TRIGGER_HAPPY21 0x2d4
-+#define BTN_TRIGGER_HAPPY22 0x2d5
-+#define BTN_TRIGGER_HAPPY23 0x2d6
-+#define BTN_TRIGGER_HAPPY24 0x2d7
-+#define BTN_TRIGGER_HAPPY25 0x2d8
-+#define BTN_TRIGGER_HAPPY26 0x2d9
-+#define BTN_TRIGGER_HAPPY27 0x2da
-+#define BTN_TRIGGER_HAPPY28 0x2db
-+#define BTN_TRIGGER_HAPPY29 0x2dc
-+#define BTN_TRIGGER_HAPPY30 0x2dd
-+#define BTN_TRIGGER_HAPPY31 0x2de
-+#define BTN_TRIGGER_HAPPY32 0x2df
-+#define BTN_TRIGGER_HAPPY33 0x2e0
-+#define BTN_TRIGGER_HAPPY34 0x2e1
-+#define BTN_TRIGGER_HAPPY35 0x2e2
-+#define BTN_TRIGGER_HAPPY36 0x2e3
-+#define BTN_TRIGGER_HAPPY37 0x2e4
-+#define BTN_TRIGGER_HAPPY38 0x2e5
-+#define BTN_TRIGGER_HAPPY39 0x2e6
-+#define BTN_TRIGGER_HAPPY40 0x2e7
-+
-+/* We avoid low common keys in module aliases so they don't get huge. */
-+#define KEY_MIN_INTERESTING KEY_MUTE
-+#define KEY_MAX 0x2ff
-+#define KEY_CNT (KEY_MAX+1)
-+
-+/*
-+ * Relative axes
-+ */
-+
-+#define REL_X 0x00
-+#define REL_Y 0x01
-+#define REL_Z 0x02
-+#define REL_RX 0x03
-+#define REL_RY 0x04
-+#define REL_RZ 0x05
-+#define REL_HWHEEL 0x06
-+#define REL_DIAL 0x07
-+#define REL_WHEEL 0x08
-+#define REL_MISC 0x09
-+#define REL_MAX 0x0f
-+#define REL_CNT (REL_MAX+1)
-+
-+/*
-+ * Absolute axes
-+ */
-+
-+#define ABS_X 0x00
-+#define ABS_Y 0x01
-+#define ABS_Z 0x02
-+#define ABS_RX 0x03
-+#define ABS_RY 0x04
-+#define ABS_RZ 0x05
-+#define ABS_THROTTLE 0x06
-+#define ABS_RUDDER 0x07
-+#define ABS_WHEEL 0x08
-+#define ABS_GAS 0x09
-+#define ABS_BRAKE 0x0a
-+#define ABS_HAT0X 0x10
-+#define ABS_HAT0Y 0x11
-+#define ABS_HAT1X 0x12
-+#define ABS_HAT1Y 0x13
-+#define ABS_HAT2X 0x14
-+#define ABS_HAT2Y 0x15
-+#define ABS_HAT3X 0x16
-+#define ABS_HAT3Y 0x17
-+#define ABS_PRESSURE 0x18
-+#define ABS_DISTANCE 0x19
-+#define ABS_TILT_X 0x1a
-+#define ABS_TILT_Y 0x1b
-+#define ABS_TOOL_WIDTH 0x1c
-+
-+#define ABS_VOLUME 0x20
-+
-+#define ABS_MISC 0x28
-+
-+#define ABS_MT_SLOT 0x2f /* MT slot being modified */
-+#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */
-+#define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */
-+#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */
-+#define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */
-+#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */
-+#define ABS_MT_POSITION_X 0x35 /* Center X touch position */
-+#define ABS_MT_POSITION_Y 0x36 /* Center Y touch position */
-+#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */
-+#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
-+#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */
-+#define ABS_MT_PRESSURE 0x3a /* Pressure on contact area */
-+#define ABS_MT_DISTANCE 0x3b /* Contact hover distance */
-+#define ABS_MT_TOOL_X 0x3c /* Center X tool position */
-+#define ABS_MT_TOOL_Y 0x3d /* Center Y tool position */
-+
-+#define ABS_MAX 0x3f
-+#define ABS_CNT (ABS_MAX+1)
-+
-+/*
-+ * Switch events
-+ */
-+
-+#define SW_LID 0x00 /* set = lid shut */
-+#define SW_TABLET_MODE 0x01 /* set = tablet mode */
-+#define SW_HEADPHONE_INSERT 0x02 /* set = inserted */
-+#define SW_RFKILL_ALL 0x03 /* rfkill master switch, type "any"
-+ set = radio enabled */
-+#define SW_RADIO SW_RFKILL_ALL /* deprecated */
-+#define SW_MICROPHONE_INSERT 0x04 /* set = inserted */
-+#define SW_DOCK 0x05 /* set = plugged into dock */
-+#define SW_LINEOUT_INSERT 0x06 /* set = inserted */
-+#define SW_JACK_PHYSICAL_INSERT 0x07 /* set = mechanical switch set */
-+#define SW_VIDEOOUT_INSERT 0x08 /* set = inserted */
-+#define SW_CAMERA_LENS_COVER 0x09 /* set = lens covered */
-+#define SW_KEYPAD_SLIDE 0x0a /* set = keypad slide out */
-+#define SW_FRONT_PROXIMITY 0x0b /* set = front proximity sensor active */
-+#define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */
-+#define SW_LINEIN_INSERT 0x0d /* set = inserted */
-+#define SW_MUTE_DEVICE 0x0e /* set = device disabled */
-+#define SW_PEN_INSERTED 0x0f /* set = pen inserted */
-+#define SW_MAX 0x0f
-+#define SW_CNT (SW_MAX+1)
-+
-+/*
-+ * Misc events
-+ */
-+
-+#define MSC_SERIAL 0x00
-+#define MSC_PULSELED 0x01
-+#define MSC_GESTURE 0x02
-+#define MSC_RAW 0x03
-+#define MSC_SCAN 0x04
-+#define MSC_TIMESTAMP 0x05
-+#define MSC_MAX 0x07
-+#define MSC_CNT (MSC_MAX+1)
-+
-+/*
-+ * LEDs
-+ */
-+
-+#define LED_NUML 0x00
-+#define LED_CAPSL 0x01
-+#define LED_SCROLLL 0x02
-+#define LED_COMPOSE 0x03
-+#define LED_KANA 0x04
-+#define LED_SLEEP 0x05
-+#define LED_SUSPEND 0x06
-+#define LED_MUTE 0x07
-+#define LED_MISC 0x08
-+#define LED_MAIL 0x09
-+#define LED_CHARGING 0x0a
-+#define LED_MAX 0x0f
-+#define LED_CNT (LED_MAX+1)
-+
-+/*
-+ * Autorepeat values
-+ */
-+
-+#define REP_DELAY 0x00
-+#define REP_PERIOD 0x01
-+#define REP_MAX 0x01
-+#define REP_CNT (REP_MAX+1)
-+
-+/*
-+ * Sounds
-+ */
-+
-+#define SND_CLICK 0x00
-+#define SND_BELL 0x01
-+#define SND_TONE 0x02
-+#define SND_MAX 0x07
-+#define SND_CNT (SND_MAX+1)
-+
-+#endif
-diff --git a/include/linux/linux/input.h b/include/linux/linux/input.h
-new file mode 100644
-index 00000000..b3044aec
---- /dev/null
-+++ include/linux/linux/input.h
-@@ -0,0 +1,506 @@
-+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-+/*
-+ * Copyright (c) 1999-2002 Vojtech Pavlik
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ */
-+#ifndef _INPUT_H
-+#define _INPUT_H
-+
-+
-+#include <sys/time.h>
-+#include <sys/ioctl.h>
-+#include <sys/types.h>
-+#include <linux/types.h>
-+
-+#include "input-event-codes.h"
-+
-+/*
-+ * The event structure itself
-+ * Note that __USE_TIME_BITS64 is defined by libc based on
-+ * application's request to use 64 bit time_t.
-+ */
-+
-+struct input_event {
-+#if (__BITS_PER_LONG != 32 || !defined(__USE_TIME_BITS64)) && !defined(__KERNEL)
-+ struct timeval time;
-+#define input_event_sec time.tv_sec
-+#define input_event_usec time.tv_usec
-+#else
-+ __kernel_ulong_t __sec;
-+ __kernel_ulong_t __usec;
-+#define input_event_sec __sec
-+#define input_event_usec __usec
-+#endif
-+ __u16 type;
-+ __u16 code;
-+ __s32 value;
-+};
-+
-+/*
-+ * Protocol version.
-+ */
-+
-+#define EV_VERSION 0x010001
-+
-+/*
-+ * IOCTLs (0x00 - 0x7f)
-+ */
-+
-+struct input_id {
-+ __u16 bustype;
-+ __u16 vendor;
-+ __u16 product;
-+ __u16 version;
-+};
-+
-+/**
-+ * struct input_absinfo - used by EVIOCGABS/EVIOCSABS ioctls
-+ * @value: latest reported value for the axis.
-+ * @minimum: specifies minimum value for the axis.
-+ * @maximum: specifies maximum value for the axis.
-+ * @fuzz: specifies fuzz value that is used to filter noise from
-+ * the event stream.
-+ * @flat: values that are within this value will be discarded by
-+ * joydev interface and reported as 0 instead.
-+ * @resolution: specifies resolution for the values reported for
-+ * the axis.
-+ *
-+ * Note that input core does not clamp reported values to the
-+ * [minimum, maximum] limits, such task is left to userspace.
-+ *
-+ * The default resolution for main axes (ABS_X, ABS_Y, ABS_Z)
-+ * is reported in units per millimeter (units/mm), resolution
-+ * for rotational axes (ABS_RX, ABS_RY, ABS_RZ) is reported
-+ * in units per radian.
-+ * When INPUT_PROP_ACCELEROMETER is set the resolution changes.
-+ * The main axes (ABS_X, ABS_Y, ABS_Z) are then reported in
-+ * in units per g (units/g) and in units per degree per second
-+ * (units/deg/s) for rotational axes (ABS_RX, ABS_RY, ABS_RZ).
-+ */
-+struct input_absinfo {
-+ __s32 value;
-+ __s32 minimum;
-+ __s32 maximum;
-+ __s32 fuzz;
-+ __s32 flat;
-+ __s32 resolution;
-+};
-+
-+/**
-+ * struct input_keymap_entry - used by EVIOCGKEYCODE/EVIOCSKEYCODE ioctls
-+ * @scancode: scancode represented in machine-endian form.
-+ * @len: length of the scancode that resides in @scancode buffer.
-+ * @index: index in the keymap, may be used instead of scancode
-+ * @flags: allows to specify how kernel should handle the request. For
-+ * example, setting INPUT_KEYMAP_BY_INDEX flag indicates that kernel
-+ * should perform lookup in keymap by @index instead of @scancode
-+ * @keycode: key code assigned to this scancode
-+ *
-+ * The structure is used to retrieve and modify keymap data. Users have
-+ * option of performing lookup either by @scancode itself or by @index
-+ * in keymap entry. EVIOCGKEYCODE will also return scancode or index
-+ * (depending on which element was used to perform lookup).
-+ */
-+struct input_keymap_entry {
-+#define INPUT_KEYMAP_BY_INDEX (1 << 0)
-+ __u8 flags;
-+ __u8 len;
-+ __u16 index;
-+ __u32 keycode;
-+ __u8 scancode[32];
-+};
-+
-+struct input_mask {
-+ __u32 type;
-+ __u32 codes_size;
-+ __u64 codes_ptr;
-+};
-+
-+#define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */
-+#define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */
-+#define EVIOCGREP _IOR('E', 0x03, unsigned int[2]) /* get repeat settings */
-+#define EVIOCSREP _IOW('E', 0x03, unsigned int[2]) /* set repeat settings */
-+
-+#define EVIOCGKEYCODE _IOR('E', 0x04, unsigned int[2]) /* get keycode */
-+#define EVIOCGKEYCODE_V2 _IOR('E', 0x04, struct input_keymap_entry)
-+#define EVIOCSKEYCODE _IOW('E', 0x04, unsigned int[2]) /* set keycode */
-+#define EVIOCSKEYCODE_V2 _IOW('E', 0x04, struct input_keymap_entry)
-+
-+#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len) /* get device name */
-+#define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len) /* get physical location */
-+#define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len) /* get unique identifier */
-+#define EVIOCGPROP(len) _IOC(_IOC_READ, 'E', 0x09, len) /* get device properties */
-+
-+/**
-+ * EVIOCGMTSLOTS(len) - get MT slot values
-+ * @len: size of the data buffer in bytes
-+ *
-+ * The ioctl buffer argument should be binary equivalent to
-+ *
-+ * struct input_mt_request_layout {
-+ * __u32 code;
-+ * __s32 values[num_slots];
-+ * };
-+ *
-+ * where num_slots is the (arbitrary) number of MT slots to extract.
-+ *
-+ * The ioctl size argument (len) is the size of the buffer, which
-+ * should satisfy len = (num_slots + 1) * sizeof(__s32). If len is
-+ * too small to fit all available slots, the first num_slots are
-+ * returned.
-+ *
-+ * Before the call, code is set to the wanted ABS_MT event type. On
-+ * return, values[] is filled with the slot values for the specified
-+ * ABS_MT code.
-+ *
-+ * If the request code is not an ABS_MT value, -EINVAL is returned.
-+ */
-+#define EVIOCGMTSLOTS(len) _IOC(_IOC_READ, 'E', 0x0a, len)
-+
-+#define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len) /* get global key state */
-+#define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len) /* get all LEDs */
-+#define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len) /* get all sounds status */
-+#define EVIOCGSW(len) _IOC(_IOC_READ, 'E', 0x1b, len) /* get all switch states */
-+
-+#define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + (ev), len) /* get event bits */
-+#define EVIOCGABS(abs) _IOR('E', 0x40 + (abs), struct input_absinfo) /* get abs value/limits */
-+#define EVIOCSABS(abs) _IOW('E', 0xc0 + (abs), struct input_absinfo) /* set abs value/limits */
-+
-+#define EVIOCSFF _IOW('E', 0x80, struct ff_effect) /* send a force effect to a force feedback device */
-+#define EVIOCRMFF _IOW('E', 0x81, int) /* Erase a force effect */
-+#define EVIOCGEFFECTS _IOR('E', 0x84, int) /* Report number of effects playable at the same time */
-+
-+#define EVIOCGRAB _IOW('E', 0x90, int) /* Grab/Release device */
-+#define EVIOCREVOKE _IOW('E', 0x91, int) /* Revoke device access */
-+
-+/**
-+ * EVIOCGMASK - Retrieve current event mask
-+ *
-+ * This ioctl allows user to retrieve the current event mask for specific
-+ * event type. The argument must be of type "struct input_mask" and
-+ * specifies the event type to query, the address of the receive buffer and
-+ * the size of the receive buffer.
-+ *
-+ * The event mask is a per-client mask that specifies which events are
-+ * forwarded to the client. Each event code is represented by a single bit
-+ * in the event mask. If the bit is set, the event is passed to the client
-+ * normally. Otherwise, the event is filtered and will never be queued on
-+ * the client's receive buffer.
-+ *
-+ * Event masks do not affect global state of the input device. They only
-+ * affect the file descriptor they are applied to.
-+ *
-+ * The default event mask for a client has all bits set, i.e. all events
-+ * are forwarded to the client. If the kernel is queried for an unknown
-+ * event type or if the receive buffer is larger than the number of
-+ * event codes known to the kernel, the kernel returns all zeroes for those
-+ * codes.
-+ *
-+ * At maximum, codes_size bytes are copied.
-+ *
-+ * This ioctl may fail with ENODEV in case the file is revoked, EFAULT
-+ * if the receive-buffer points to invalid memory, or EINVAL if the kernel
-+ * does not implement the ioctl.
-+ */
-+#define EVIOCGMASK _IOR('E', 0x92, struct input_mask) /* Get event-masks */
-+
-+/**
-+ * EVIOCSMASK - Set event mask
-+ *
-+ * This ioctl is the counterpart to EVIOCGMASK. Instead of receiving the
-+ * current event mask, this changes the client's event mask for a specific
-+ * type. See EVIOCGMASK for a description of event-masks and the
-+ * argument-type.
-+ *
-+ * This ioctl provides full forward compatibility. If the passed event type
-+ * is unknown to the kernel, or if the number of event codes specified in
-+ * the mask is bigger than what is known to the kernel, the ioctl is still
-+ * accepted and applied. However, any unknown codes are left untouched and
-+ * stay cleared. That means, the kernel always filters unknown codes
-+ * regardless of what the client requests. If the new mask doesn't cover
-+ * all known event-codes, all remaining codes are automatically cleared and
-+ * thus filtered.
-+ *
-+ * This ioctl may fail with ENODEV in case the file is revoked. EFAULT is
-+ * returned if the receive-buffer points to invalid memory. EINVAL is returned
-+ * if the kernel does not implement the ioctl.
-+ */
-+#define EVIOCSMASK _IOW('E', 0x93, struct input_mask) /* Set event-masks */
-+
-+#define EVIOCSCLOCKID _IOW('E', 0xa0, int) /* Set clockid to be used for timestamps */
-+
-+/*
-+ * IDs.
-+ */
-+
-+#define ID_BUS 0
-+#define ID_VENDOR 1
-+#define ID_PRODUCT 2
-+#define ID_VERSION 3
-+
-+#define BUS_PCI 0x01
-+#define BUS_ISAPNP 0x02
-+#define BUS_USB 0x03
-+#define BUS_HIL 0x04
-+#define BUS_BLUETOOTH 0x05
-+#define BUS_VIRTUAL 0x06
-+
-+#define BUS_ISA 0x10
-+#define BUS_I8042 0x11
-+#define BUS_XTKBD 0x12
-+#define BUS_RS232 0x13
-+#define BUS_GAMEPORT 0x14
-+#define BUS_PARPORT 0x15
-+#define BUS_AMIGA 0x16
-+#define BUS_ADB 0x17
-+#define BUS_I2C 0x18
-+#define BUS_HOST 0x19
-+#define BUS_GSC 0x1A
-+#define BUS_ATARI 0x1B
-+#define BUS_SPI 0x1C
-+#define BUS_RMI 0x1D
-+#define BUS_CEC 0x1E
-+#define BUS_INTEL_ISHTP 0x1F
-+
-+/*
-+ * MT_TOOL types
-+ */
-+#define MT_TOOL_FINGER 0
-+#define MT_TOOL_PEN 1
-+#define MT_TOOL_PALM 2
-+#define MT_TOOL_MAX 2
-+
-+/*
-+ * Values describing the status of a force-feedback effect
-+ */
-+#define FF_STATUS_STOPPED 0x00
-+#define FF_STATUS_PLAYING 0x01
-+#define FF_STATUS_MAX 0x01
-+
-+/*
-+ * Structures used in ioctls to upload effects to a device
-+ * They are pieces of a bigger structure (called ff_effect)
-+ */
-+
-+/*
-+ * All duration values are expressed in ms. Values above 32767 ms (0x7fff)
-+ * should not be used and have unspecified results.
-+ */
-+
-+/**
-+ * struct ff_replay - defines scheduling of the force-feedback effect
-+ * @length: duration of the effect
-+ * @delay: delay before effect should start playing
-+ */
-+struct ff_replay {
-+ __u16 length;
-+ __u16 delay;
-+};
-+
-+/**
-+ * struct ff_trigger - defines what triggers the force-feedback effect
-+ * @button: number of the button triggering the effect
-+ * @interval: controls how soon the effect can be re-triggered
-+ */
-+struct ff_trigger {
-+ __u16 button;
-+ __u16 interval;
-+};
-+
-+/**
-+ * struct ff_envelope - generic force-feedback effect envelope
-+ * @attack_length: duration of the attack (ms)
-+ * @attack_level: level at the beginning of the attack
-+ * @fade_length: duration of fade (ms)
-+ * @fade_level: level at the end of fade
-+ *
-+ * The @attack_level and @fade_level are absolute values; when applying
-+ * envelope force-feedback core will convert to positive/negative
-+ * value based on polarity of the default level of the effect.
-+ * Valid range for the attack and fade levels is 0x0000 - 0x7fff
-+ */
-+struct ff_envelope {
-+ __u16 attack_length;
-+ __u16 attack_level;
-+ __u16 fade_length;
-+ __u16 fade_level;
-+};
-+
-+/**
-+ * struct ff_constant_effect - defines parameters of a constant force-feedback effect
-+ * @level: strength of the effect; may be negative
-+ * @envelope: envelope data
-+ */
-+struct ff_constant_effect {
-+ __s16 level;
-+ struct ff_envelope envelope;
-+};
-+
-+/**
-+ * struct ff_ramp_effect - defines parameters of a ramp force-feedback effect
-+ * @start_level: beginning strength of the effect; may be negative
-+ * @end_level: final strength of the effect; may be negative
-+ * @envelope: envelope data
-+ */
-+struct ff_ramp_effect {
-+ __s16 start_level;
-+ __s16 end_level;
-+ struct ff_envelope envelope;
-+};
-+
-+/**
-+ * struct ff_condition_effect - defines a spring or friction force-feedback effect
-+ * @right_saturation: maximum level when joystick moved all way to the right
-+ * @left_saturation: same for the left side
-+ * @right_coeff: controls how fast the force grows when the joystick moves
-+ * to the right
-+ * @left_coeff: same for the left side
-+ * @deadband: size of the dead zone, where no force is produced
-+ * @center: position of the dead zone
-+ */
-+struct ff_condition_effect {
-+ __u16 right_saturation;
-+ __u16 left_saturation;
-+
-+ __s16 right_coeff;
-+ __s16 left_coeff;
-+
-+ __u16 deadband;
-+ __s16 center;
-+};
-+
-+/**
-+ * struct ff_periodic_effect - defines parameters of a periodic force-feedback effect
-+ * @waveform: kind of the effect (wave)
-+ * @period: period of the wave (ms)
-+ * @magnitude: peak value
-+ * @offset: mean value of the wave (roughly)
-+ * @phase: 'horizontal' shift
-+ * @envelope: envelope data
-+ * @custom_len: number of samples (FF_CUSTOM only)
-+ * @custom_data: buffer of samples (FF_CUSTOM only)
-+ *
-+ * Known waveforms - FF_SQUARE, FF_TRIANGLE, FF_SINE, FF_SAW_UP,
-+ * FF_SAW_DOWN, FF_CUSTOM. The exact syntax FF_CUSTOM is undefined
-+ * for the time being as no driver supports it yet.
-+ *
-+ * Note: the data pointed by custom_data is copied by the driver.
-+ * You can therefore dispose of the memory after the upload/update.
-+ */
-+struct ff_periodic_effect {
-+ __u16 waveform;
-+ __u16 period;
-+ __s16 magnitude;
-+ __s16 offset;
-+ __u16 phase;
-+
-+ struct ff_envelope envelope;
-+
-+ __u32 custom_len;
-+ __s16 *custom_data;
-+};
-+
-+/**
-+ * struct ff_rumble_effect - defines parameters of a periodic force-feedback effect
-+ * @strong_magnitude: magnitude of the heavy motor
-+ * @weak_magnitude: magnitude of the light one
-+ *
-+ * Some rumble pads have two motors of different weight. Strong_magnitude
-+ * represents the magnitude of the vibration generated by the heavy one.
-+ */
-+struct ff_rumble_effect {
-+ __u16 strong_magnitude;
-+ __u16 weak_magnitude;
-+};
-+
-+/**
-+ * struct ff_effect - defines force feedback effect
-+ * @type: type of the effect (FF_CONSTANT, FF_PERIODIC, FF_RAMP, FF_SPRING,
-+ * FF_FRICTION, FF_DAMPER, FF_RUMBLE, FF_INERTIA, or FF_CUSTOM)
-+ * @id: an unique id assigned to an effect
-+ * @direction: direction of the effect
-+ * @trigger: trigger conditions (struct ff_trigger)
-+ * @replay: scheduling of the effect (struct ff_replay)
-+ * @u: effect-specific structure (one of ff_constant_effect, ff_ramp_effect,
-+ * ff_periodic_effect, ff_condition_effect, ff_rumble_effect) further
-+ * defining effect parameters
-+ *
-+ * This structure is sent through ioctl from the application to the driver.
-+ * To create a new effect application should set its @id to -1; the kernel
-+ * will return assigned @id which can later be used to update or delete
-+ * this effect.
-+ *
-+ * Direction of the effect is encoded as follows:
-+ * 0 deg -> 0x0000 (down)
-+ * 90 deg -> 0x4000 (left)
-+ * 180 deg -> 0x8000 (up)
-+ * 270 deg -> 0xC000 (right)
-+ */
-+struct ff_effect {
-+ __u16 type;
-+ __s16 id;
-+ __u16 direction;
-+ struct ff_trigger trigger;
-+ struct ff_replay replay;
-+
-+ union {
-+ struct ff_constant_effect constant;
-+ struct ff_ramp_effect ramp;
-+ struct ff_periodic_effect periodic;
-+ struct ff_condition_effect condition[2]; /* One for each axis */
-+ struct ff_rumble_effect rumble;
-+ } u;
-+};
-+
-+/*
-+ * Force feedback effect types
-+ */
-+
-+#define FF_RUMBLE 0x50
-+#define FF_PERIODIC 0x51
-+#define FF_CONSTANT 0x52
-+#define FF_SPRING 0x53
-+#define FF_FRICTION 0x54
-+#define FF_DAMPER 0x55
-+#define FF_INERTIA 0x56
-+#define FF_RAMP 0x57
-+
-+#define FF_EFFECT_MIN FF_RUMBLE
-+#define FF_EFFECT_MAX FF_RAMP
-+
-+/*
-+ * Force feedback periodic effect types
-+ */
-+
-+#define FF_SQUARE 0x58
-+#define FF_TRIANGLE 0x59
-+#define FF_SINE 0x5a
-+#define FF_SAW_UP 0x5b
-+#define FF_SAW_DOWN 0x5c
-+#define FF_CUSTOM 0x5d
-+
-+#define FF_WAVEFORM_MIN FF_SQUARE
-+#define FF_WAVEFORM_MAX FF_CUSTOM
-+
-+/*
-+ * Set ff device properties
-+ */
-+
-+#define FF_GAIN 0x60
-+#define FF_AUTOCENTER 0x61
-+
-+/*
-+ * ff->playback(effect_id = FF_GAIN) is the first effect_id to
-+ * cause a collision with another ff method, in this case ff->set_gain().
-+ * Therefore the greatest safe value for effect_id is FF_GAIN - 1,
-+ * and thus the total number of effects should never exceed FF_GAIN.
-+ */
-+#define FF_MAX_EFFECTS FF_GAIN
-+
-+#define FF_MAX 0x7f
-+#define FF_CNT (FF_MAX+1)
-+
-+#endif /* _INPUT_H */
diff --git a/x11/libinput/files/patch-ef9b7e88.c b/x11/libinput/files/patch-ef9b7e88.c
deleted file mode 100644
index 8079f9e4ca45..000000000000
--- a/x11/libinput/files/patch-ef9b7e88.c
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/meson.build b/meson.build
-index e3d81daeead3dd0c04fd67df5354d82a832d396e..931681a943bb58da6ac6cf99e5947ac7816d818b 100644
---- meson.build
-+++ meson.build
-@@ -87,6 +87,12 @@ if cc.has_header_symbol('dirent.h', 'versionsort', prefix : prefix)
- config_h.set('HAVE_VERSIONSORT', '1')
- endif
-
-+if not cc.has_header_symbol('errno.h', 'program_invocation_short_name', prefix : prefix)
-+ if cc.has_header_symbol('stdlib.h', 'getprogname')
-+ config_h.set('program_invocation_short_name', 'getprogname()')
-+ endif
-+endif
-+
- if cc.has_header('xlocale.h')
- config_h.set('HAVE_XLOCALE_H', '1')
- endif
diff --git a/x11/libinput/files/patch-f8b41205.c b/x11/libinput/files/patch-f8b41205.c
deleted file mode 100644
index 0f6722a9c461..000000000000
--- a/x11/libinput/files/patch-f8b41205.c
+++ /dev/null
@@ -1,104 +0,0 @@
-diff --git a/meson.build b/meson.build
-index 94973255d7af4020b049c1e533b2438409514f03..9ff17117a9f6c79bb50362d6db6507ba56c20136 100644
---- meson.build
-+++ meson.build
-@@ -83,6 +83,10 @@ if get_option('coverity')
- config_h.set('_Float64x', 'long')
- endif
-
-+if cc.has_header_symbol('dirent.h', 'versionsort', prefix : prefix)
-+ config_h.set('HAVE_VERSIONSORT', '1')
-+endif
-+
- # Dependencies
- pkgconfig = import('pkgconfig')
- dep_udev = dependency('libudev')
-diff --git a/src/libinput-versionsort.h b/src/libinput-versionsort.h
-new file mode 100644
-index 0000000000000000000000000000000000000000..356ec8da2f56ccedefb4f30cbeb353a1140e175a
---- /dev/null
-+++ src/libinput-versionsort.h
-@@ -0,0 +1,71 @@
-+#pragma once
-+
-+#include "config.h"
-+
-+#ifndef HAVE_VERSIONSORT
-+
-+/* Copyright © 2005-2014 Rich Felker, et al.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining
-+ * a copy of this software and associated documentation files (the
-+ * "Software"), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sublicense, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+#include <ctype.h>
-+#include <string.h>
-+#include <dirent.h>
-+
-+static int
-+strverscmp(const char *l0, const char *r0)
-+{
-+ const unsigned char *l = (const void *)l0;
-+ const unsigned char *r = (const void *)r0;
-+ size_t i, dp, j;
-+ int z = 1;
-+
-+ /* Find maximal matching prefix and track its maximal digit
-+ * suffix and whether those digits are all zeros. */
-+ for (dp=i=0; l[i]==r[i]; i++) {
-+ int c = l[i];
-+ if (!c) return 0;
-+ if (!isdigit(c)) dp=i+1, z=1;
-+ else if (c!='0') z=0;
-+ }
-+
-+ if (l[dp]!='0' && r[dp]!='0') {
-+ /* If we're not looking at a digit sequence that began
-+ * with a zero, longest digit string is greater. */
-+ for (j=i; isdigit(l[j]); j++)
-+ if (!isdigit(r[j])) return 1;
-+ if (isdigit(r[j])) return -1;
-+ } else if (z && dp<i && (isdigit(l[i]) || isdigit(r[i]))) {
-+ /* Otherwise, if common prefix of digit sequence is
-+ * all zeros, digits order less than non-digits. */
-+ return (unsigned char)(l[i]-'0') - (unsigned char)(r[i]-'0');
-+ }
-+
-+ return l[i] - r[i];
-+}
-+
-+static int
-+versionsort(const struct dirent **a, const struct dirent **b)
-+{
-+ return strverscmp((*a)->d_name, (*b)->d_name);
-+}
-+
-+#endif
-diff --git a/tools/libinput-record.c b/tools/libinput-record.c
-index 50b6ee8512af6dff4badd95ce8546a346e4701c0..169947df0160f862a8a4c7bffe255909be572d20 100644
---- tools/libinput-record.c
-+++ tools/libinput-record.c
-@@ -40,6 +40,7 @@
- #include <signal.h>
- #include <stdbool.h>
-
-+#include "libinput-versionsort.h"
- #include "libinput-util.h"
- #include "libinput-version.h"
- #include "libinput-git-version.h"
diff --git a/x11/libinput/files/patch-meson.build b/x11/libinput/files/patch-meson.build
new file mode 100644
index 000000000000..9f925e3b2b55
--- /dev/null
+++ b/x11/libinput/files/patch-meson.build
@@ -0,0 +1,20 @@
+--- meson.build.orig 2018-12-31 16:13:39 UTC
++++ meson.build
+@@ -145,6 +145,8 @@ endif
+
+ ############ udev bits ############
+
++if false
++
+ executable('libinput-device-group',
+ 'udev/libinput-device-group.c',
+ dependencies : [dep_udev, dep_libwacom],
+@@ -181,6 +183,8 @@ litest_model_quirks_file = configure_file(input : 'ude
+ output : '90-libinput-model-quirks-litest.rules',
+ install : false,
+ configuration : litest_udev_rules_config)
++
++endif
+
+ ############ libepoll-shim (BSD) ############
+