Index: x11/libinput/Makefile =================================================================== --- x11/libinput/Makefile (revision 488799) +++ x11/libinput/Makefile (working copy) @@ -1,7 +1,7 @@ # $FreeBSD$ PORTNAME= libinput -PORTVERSION= 1.11.3 +PORTVERSION= 1.12.6 CATEGORIES= x11 MASTER_SITES= http://freedesktop.org/software/${PORTNAME}/ @@ -11,7 +11,6 @@ LICENSE= MIT LICENSE_FILE= ${WRKSRC}/COPYING -BUILD_DEPENDS= ${LOCALBASE}/include/linux/input.h:devel/evdev-proto RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}evdev>0:devel/py-evdev@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pyudev>0:devel/py-pyudev@${PY_FLAVOR} LIB_DEPENDS= libevdev.so:devel/libevdev \ @@ -20,25 +19,25 @@ libmtdev.so:devel/libmtdev USES= localbase meson pkgconfig python:3.4+,run shebangfix tar:xz +USE_LDCONFIG= yes MESON_ARGS+= -Ddocumentation=false -Dtests=false -INSTALL_TARGET= install-strip python_OLD_CMD= "/usr/bin/env python3" -SHEBANG_FILES= tools/libinput-measure-fuzz \ - tools/libinput-measure-touch-size \ - tools/libinput-measure-touchpad-pressure \ - tools/libinput-measure-touchpad-tap \ - tools/libinput-measure-trackpoint-range \ +SHEBANG_FILES= tools/libinput-measure-fuzz.py \ + tools/libinput-measure-touch-size.py \ + tools/libinput-measure-touchpad-pressure.py \ + tools/libinput-measure-touchpad-tap.py \ tools/libinput-replay OPTIONS_DEFINE= DEBUG_GUI LIBWACOM OPTIONS_DEFAULT=LIBWACOM OPTIONS_SUB= yes - + DEBUG_GUI_DESC= Build the GUI event viewer LIBWACOM_DESC= Libwacom support +DEBUG_GUI_USES= gnome DEBUG_GUI_USE= GNOME=gtk30,glib20,cairo DEBUG_GUI_MESON_TRUE= debug-gui LIBWACOM_LIB_DEPENDS= libwacom.so:x11/libwacom Index: x11/libinput/distinfo =================================================================== --- x11/libinput/distinfo (revision 488799) +++ x11/libinput/distinfo (working copy) @@ -1,3 +1,3 @@ -TIMESTAMP = 1532702018 -SHA256 (libinput-1.11.3.tar.xz) = f31191d96e425b4f16319842279d65946d9d983dcd3d9e466ae1206aa10ecb06 -SIZE (libinput-1.11.3.tar.xz) = 487408 +TIMESTAMP = 1548226824 +SHA256 (libinput-1.12.6.tar.xz) = 12b4023a3fc683d3d8127db573bdf925a2ef366615042f69c87e57c32a50f45d +SIZE (libinput-1.12.6.tar.xz) = 518784 Index: x11/libinput/files/patch-0e03784e.c =================================================================== --- x11/libinput/files/patch-0e03784e.c (revision 488799) +++ x11/libinput/files/patch-0e03784e.c (nonexistent) @@ -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 - #include - #include -+#ifdef HAVE_XLOCALE_H -+#include -+#endif - #include - #include - #include - #include - #include -+#include - #include - #include - #include Property changes on: x11/libinput/files/patch-0e03784e.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: x11/libinput/files/patch-4e3ea4b8.c =================================================================== --- x11/libinput/files/patch-4e3ea4b8.c (revision 488799) +++ x11/libinput/files/patch-4e3ea4b8.c (nonexistent) @@ -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 -+ 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, Property changes on: x11/libinput/files/patch-4e3ea4b8.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: x11/libinput/files/patch-61f3e385.c =================================================================== --- x11/libinput/files/patch-61f3e385.c (revision 488799) +++ x11/libinput/files/patch-61f3e385.c (nonexistent) @@ -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 -+ * -+ * 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 -+#include -+#include -+#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 -- * -- * 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 --#include --#include --#include -- --#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 -+ * -+ * 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 -+#include -+#include -+#include -+ -+#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 */ Property changes on: x11/libinput/files/patch-61f3e385.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: x11/libinput/files/patch-ef9b7e88.c =================================================================== --- x11/libinput/files/patch-ef9b7e88.c (revision 488799) +++ x11/libinput/files/patch-ef9b7e88.c (nonexistent) @@ -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 Property changes on: x11/libinput/files/patch-ef9b7e88.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: x11/libinput/files/patch-f8b41205.c =================================================================== --- x11/libinput/files/patch-f8b41205.c (revision 488799) +++ x11/libinput/files/patch-f8b41205.c (nonexistent) @@ -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 -+#include -+#include -+ -+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 && dpd_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 - #include - -+#include "libinput-versionsort.h" - #include "libinput-util.h" - #include "libinput-version.h" - #include "libinput-git-version.h" Property changes on: x11/libinput/files/patch-f8b41205.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: x11/libinput/files/patch-meson.build =================================================================== --- x11/libinput/files/patch-meson.build (nonexistent) +++ x11/libinput/files/patch-meson.build (working copy) @@ -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) ############ + Property changes on: x11/libinput/files/patch-meson.build ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: x11/libinput/files/patch-src_evdev.c =================================================================== --- x11/libinput/files/patch-src_evdev.c (revision 488799) +++ x11/libinput/files/patch-src_evdev.c (working copy) @@ -6,9 +6,9 @@ The udev_devices from reopening do have the right properties, so we just use them instead of the original (enumerated) ones. ---- src/evdev.c.orig 2018-06-09 12:13:43 UTC +--- src/evdev.c.orig 2018-12-18 05:06:18 UTC +++ src/evdev.c -@@ -895,7 +895,7 @@ evdev_sync_device(struct evdev_device *device) +@@ -905,7 +905,7 @@ evdev_sync_device(struct evdev_device *device) evdev_device_dispatch_one(device, &ev); } while (rc == LIBEVDEV_READ_STATUS_SYNC); @@ -17,7 +17,7 @@ } static void -@@ -933,6 +933,17 @@ evdev_device_dispatch(void *data) +@@ -943,6 +943,17 @@ evdev_device_dispatch(void *data) if (rc != -EAGAIN && rc != -EINTR) { libinput_remove_source(libinput, device->source); @@ -35,53 +35,3 @@ device->source = NULL; } } -@@ -1785,9 +1796,9 @@ evdev_notify_added_device(struct evdev_device *device) - } - - static bool --evdev_device_have_same_syspath(struct udev_device *udev_device, int fd) -+evdev_device_have_same_syspath(struct udev_device **udev_device, int fd, bool reopen) - { -- struct udev *udev = udev_device_get_udev(udev_device); -+ struct udev *udev = udev_device_get_udev(*udev_device); - struct udev_device *udev_device_new = NULL; - struct stat st; - bool rc = false; -@@ -1800,10 +1811,16 @@ evdev_device_have_same_syspath(struct udev_device *ude - goto out; - - rc = streq(udev_device_get_syspath(udev_device_new), -- udev_device_get_syspath(udev_device)); -+ udev_device_get_syspath(*udev_device)); - out: -- if (udev_device_new) -- udev_device_unref(udev_device_new); -+ if (udev_device_new) { -+ if (reopen) { -+ udev_device_unref(*udev_device); -+ *udev_device = udev_device_new; -+ } else { -+ udev_device_unref(udev_device_new); -+ } -+ } - return rc; - } - -@@ -2003,7 +2020,7 @@ evdev_device_create(struct libinput_seat *seat, - return NULL; - } - -- if (!evdev_device_have_same_syspath(udev_device, fd)) -+ if (!evdev_device_have_same_syspath(&udev_device, fd, true)) - goto err; - - device = zalloc(sizeof *device); -@@ -2559,7 +2576,7 @@ evdev_device_resume(struct evdev_device *device) - if (fd < 0) - return -errno; - -- if (!evdev_device_have_same_syspath(device->udev_device, fd)) { -+ if (!evdev_device_have_same_syspath(&device->udev_device, fd, false)) { - close_restricted(libinput, fd); - return -ENODEV; - } Index: x11/libinput/pkg-plist =================================================================== --- x11/libinput/pkg-plist (revision 488799) +++ x11/libinput/pkg-plist (working copy) @@ -12,18 +12,47 @@ libexec/libinput/libinput-measure-touch-size libexec/libinput/libinput-measure-touchpad-pressure libexec/libinput/libinput-measure-touchpad-tap -libexec/libinput/libinput-measure-trackpoint-range +libexec/libinput/libinput-quirks libexec/libinput/libinput-record libexec/libinput/libinput-replay -man/man1/libinput.1.gz man/man1/libinput-debug-events.1.gz %%DEBUG_GUI%%man/man1/libinput-debug-gui.1.gz man/man1/libinput-list-devices.1.gz -man/man1/libinput-measure.1.gz man/man1/libinput-measure-fuzz.1.gz man/man1/libinput-measure-touch-size.1.gz man/man1/libinput-measure-touchpad-pressure.1.gz man/man1/libinput-measure-touchpad-tap.1.gz -man/man1/libinput-measure-trackpoint-range.1.gz +man/man1/libinput-measure.1.gz +man/man1/libinput-quirks-list.1.gz +man/man1/libinput-quirks-validate.1.gz +man/man1/libinput-quirks.1.gz man/man1/libinput-record.1.gz man/man1/libinput-replay.1.gz +man/man1/libinput.1.gz +%%DATADIR%%/10-generic-keyboard.quirks +%%DATADIR%%/10-generic-lid.quirks +%%DATADIR%%/10-generic-trackball.quirks +%%DATADIR%%/30-vendor-aiptek.quirks +%%DATADIR%%/30-vendor-alps.quirks +%%DATADIR%%/30-vendor-contour.quirks +%%DATADIR%%/30-vendor-cyapa.quirks +%%DATADIR%%/30-vendor-elantech.quirks +%%DATADIR%%/30-vendor-huion.quirks +%%DATADIR%%/30-vendor-ibm.quirks +%%DATADIR%%/30-vendor-kensington.quirks +%%DATADIR%%/30-vendor-logitech.quirks +%%DATADIR%%/30-vendor-microsoft.quirks +%%DATADIR%%/30-vendor-razer.quirks +%%DATADIR%%/30-vendor-synaptics.quirks +%%DATADIR%%/30-vendor-vmware.quirks +%%DATADIR%%/30-vendor-wacom.quirks +%%DATADIR%%/50-system-acer.quirks +%%DATADIR%%/50-system-apple.quirks +%%DATADIR%%/50-system-asus.quirks +%%DATADIR%%/50-system-chicony.quirks +%%DATADIR%%/50-system-cyborg.quirks +%%DATADIR%%/50-system-dell.quirks +%%DATADIR%%/50-system-google.quirks +%%DATADIR%%/50-system-hp.quirks +%%DATADIR%%/50-system-lenovo.quirks +%%DATADIR%%/50-system-system76.quirks