Index: head/x11/libinput/Makefile =================================================================== --- head/x11/libinput/Makefile (revision 488747) +++ head/x11/libinput/Makefile (revision 488748) @@ -1,32 +1,47 @@ # $FreeBSD$ PORTNAME= libinput -PORTVERSION= 1.6.0 -PORTREVISION= 3 +PORTVERSION= 1.11.3 CATEGORIES= x11 MASTER_SITES= http://freedesktop.org/software/${PORTNAME}/ MAINTAINER= x11@FreeBSD.org COMMENT= Generic input library +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 \ libepoll-shim.so:devel/libepoll-shim \ - libwacom.so:x11/libwacom \ libudev.so:devel/libudev-devd \ libmtdev.so:devel/libmtdev -USES= autoreconf gmake libtool pathfix pkgconfig tar:xz -EXTRACT_AFTER_ARGS= --exclude include # evdev-proto -USE_LDCONFIG= yes -GNU_CONFIGURE= yes +USES= localbase meson pkgconfig python:3.4+,run shebangfix tar:xz -CPPFLAGS+= -I${LOCALBASE}/include/libepoll-shim +MESON_ARGS+= -Ddocumentation=false -Dtests=false INSTALL_TARGET= install-strip -post-patch: - ${REINPLACE_CMD} -e 's|program_invocation_short_name|getprogname()|' \ - ${WRKSRC}/tools/libinput-list-devices.c \ - ${WRKSRC}/tools/ptraccel-debug.c ${WRKSRC}/tools/shared.c +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 \ + 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_USE= GNOME=gtk30,glib20,cairo +DEBUG_GUI_MESON_TRUE= debug-gui +LIBWACOM_LIB_DEPENDS= libwacom.so:x11/libwacom +LIBWACOM_MESON_TRUE= libwacom .include Index: head/x11/libinput/distinfo =================================================================== --- head/x11/libinput/distinfo (revision 488747) +++ head/x11/libinput/distinfo (revision 488748) @@ -1,3 +1,3 @@ -TIMESTAMP = 1486789508 -SHA256 (libinput-1.6.0.tar.xz) = b7534f518d735c643aedca2fb4694683dfddc8d0600cfb628c87a18e65255832 -SIZE (libinput-1.6.0.tar.xz) = 927656 +TIMESTAMP = 1532702018 +SHA256 (libinput-1.11.3.tar.xz) = f31191d96e425b4f16319842279d65946d9d983dcd3d9e466ae1206aa10ecb06 +SIZE (libinput-1.11.3.tar.xz) = 487408 Index: head/x11/libinput/files/patch-src_libinput-private.h =================================================================== --- head/x11/libinput/files/patch-src_libinput-private.h (revision 488747) +++ head/x11/libinput/files/patch-src_libinput-private.h (nonexistent) @@ -1,10 +0,0 @@ ---- src/libinput-private.h.orig 2017-01-18 04:32:06 UTC -+++ src/libinput-private.h -@@ -29,6 +29,7 @@ - - #include - #include -+#include - - #include "linux/input.h" - Property changes on: head/x11/libinput/files/patch-src_libinput-private.h ___________________________________________________________________ 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: head/x11/libinput/files/patch-src_Makefile.am =================================================================== --- head/x11/libinput/files/patch-src_Makefile.am (revision 488747) +++ head/x11/libinput/files/patch-src_Makefile.am (nonexistent) @@ -1,21 +0,0 @@ ---- src/Makefile.am.orig 2017-02-11 05:10:33 UTC -+++ src/Makefile.am -@@ -38,6 +38,7 @@ libinput_la_LIBADD = $(MTDEV_LIBS) \ - $(LIBUDEV_LIBS) \ - $(LIBEVDEV_LIBS) \ - $(LIBWACOM_LIBS) \ -+ -lepoll-shim \ - libinput-util.la - - libinput_la_CFLAGS = -I$(top_srcdir)/include \ -@@ -61,8 +62,8 @@ libfilter_la_SOURCES = \ - filter.c \ - filter.h \ - filter-private.h --libfilter_la_LIBADD = --libfilter_la_CFLAGS = -+libfilter_la_LIBADD = $(LIBUDEV_LIBS) -+libfilter_la_CFLAGS = -I$(top_srcdir)/include $(LIBUDEV_CFLAGS) - - libinput_la_LDFLAGS = -version-info $(LIBINPUT_LT_VERSION) -shared \ - -Wl,--version-script=$(srcdir)/libinput.sym Property changes on: head/x11/libinput/files/patch-src_Makefile.am ___________________________________________________________________ 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: head/x11/libinput/files/patch-src_path-seat.c =================================================================== --- head/x11/libinput/files/patch-src_path-seat.c (revision 488747) +++ head/x11/libinput/files/patch-src_path-seat.c (nonexistent) @@ -1,15 +0,0 @@ ---- src/path-seat.c.orig 2017-01-19 05:27:32 UTC -+++ src/path-seat.c -@@ -23,10 +23,11 @@ - - #include "config.h" - -+#include -+ - #include - #include - #include --#include - #include - - #include "path-seat.h" Property changes on: head/x11/libinput/files/patch-src_path-seat.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: head/x11/libinput/files/patch-src_libinput-util.c =================================================================== --- head/x11/libinput/files/patch-src_libinput-util.c (revision 488747) +++ head/x11/libinput/files/patch-src_libinput-util.c (nonexistent) @@ -1,12 +0,0 @@ ---- src/libinput-util.c.orig 2017-01-17 04:53:51 UTC -+++ src/libinput-util.c -@@ -36,6 +36,9 @@ - #include - #include - #include -+#ifdef __FreeBSD__ -+#include -+#endif - - #include "libinput-util.h" - #include "libinput-private.h" Property changes on: head/x11/libinput/files/patch-src_libinput-util.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: head/x11/libinput/files/patch-Makefile.am =================================================================== --- head/x11/libinput/files/patch-Makefile.am (revision 488747) +++ head/x11/libinput/files/patch-Makefile.am (nonexistent) @@ -1,8 +0,0 @@ ---- Makefile.am.orig 2017-02-11 05:10:33 UTC -+++ Makefile.am -@@ -1,4 +1,4 @@ --SUBDIRS = src doc test tools udev -+SUBDIRS = src doc tools udev - - ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} - Property changes on: head/x11/libinput/files/patch-Makefile.am ___________________________________________________________________ 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: head/x11/libinput/files/patch-src_libinput.h =================================================================== --- head/x11/libinput/files/patch-src_libinput.h (revision 488747) +++ head/x11/libinput/files/patch-src_libinput.h (nonexistent) @@ -1,10 +0,0 @@ ---- src/libinput.h.orig 2017-01-19 05:27:32 UTC -+++ src/libinput.h -@@ -29,6 +29,7 @@ - extern "C" { - #endif - -+#include - #include - #include - #include Property changes on: head/x11/libinput/files/patch-src_libinput.h ___________________________________________________________________ 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: head/x11/libinput/files/patch-udev_Makefile.am =================================================================== --- head/x11/libinput/files/patch-udev_Makefile.am (revision 488747) +++ head/x11/libinput/files/patch-udev_Makefile.am (nonexistent) @@ -1,10 +0,0 @@ ---- udev/Makefile.am.orig 2017-02-11 05:10:33 UTC -+++ udev/Makefile.am -@@ -19,6 +19,7 @@ endif - - libinput_model_quirks_SOURCES = libinput-model-quirks.c - libinput_model_quirks_CFLAGS = \ -+ -I$(top_srcdir)/include \ - -I$(top_srcdir)/src \ - $(LIBUDEV_CFLAGS) \ - $(GCC_CFLAGS) Property changes on: head/x11/libinput/files/patch-udev_Makefile.am ___________________________________________________________________ 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: head/x11/libinput/files/patch-tools_Makefile.am =================================================================== --- head/x11/libinput/files/patch-tools_Makefile.am (revision 488747) +++ head/x11/libinput/files/patch-tools_Makefile.am (nonexistent) @@ -1,24 +0,0 @@ ---- tools/Makefile.am.orig 2017-02-11 05:10:33 UTC -+++ tools/Makefile.am -@@ -11,8 +11,8 @@ AM_CXXFLAGS = $(GCC_CXXFLAGS) - libshared_la_SOURCES = \ - shared.c \ - shared.h --libshared_la_CFLAGS = $(AM_CFLAGS) $(LIBEVDEV_CFLAGS) --libshared_la_LIBADD = $(LIBEVDEV_LIBS) -+libshared_la_CFLAGS = $(AM_CFLAGS) $(LIBEVDEV_CFLAGS) $(LIBUDEV_CFLAGS) -+libshared_la_LIBADD = $(LIBEVDEV_LIBS) $(LIBUDEV_LIBS) - - event_debug_SOURCES = event-debug.c - event_debug_LDADD = ../src/libinput.la libshared.la $(LIBUDEV_LIBS) $(LIBEVDEV_LIBS) -@@ -20,8 +20,9 @@ event_debug_LDFLAGS = -no-install - event_debug_CFLAGS = $(AM_CFLAGS) $(LIBUDEV_CFLAGS) $(LIBEVDEV_CFLAGS) - - ptraccel_debug_SOURCES = ptraccel-debug.c --ptraccel_debug_LDADD = ../src/libfilter.la ../src/libinput.la -+ptraccel_debug_LDADD = ../src/libfilter.la ../src/libinput.la $(LIBUDEV_LIBS) - ptraccel_debug_LDFLAGS = -no-install -+ptraccel_debug_CFLAGS = $(LIBUDEV_CFLAGS) - - libinput_list_devices_SOURCES = libinput-list-devices.c - libinput_list_devices_LDADD = ../src/libinput.la libshared.la $(LIBUDEV_LIBS) Property changes on: head/x11/libinput/files/patch-tools_Makefile.am ___________________________________________________________________ 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: head/x11/libinput/files/patch-0e03784e.c =================================================================== --- head/x11/libinput/files/patch-0e03784e.c (nonexistent) +++ head/x11/libinput/files/patch-0e03784e.c (revision 488748) @@ -0,0 +1,35 @@ +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: head/x11/libinput/files/patch-0e03784e.c ___________________________________________________________________ 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: head/x11/libinput/files/patch-4e3ea4b8.c =================================================================== --- head/x11/libinput/files/patch-4e3ea4b8.c (nonexistent) +++ head/x11/libinput/files/patch-4e3ea4b8.c (revision 488748) @@ -0,0 +1,73 @@ +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: head/x11/libinput/files/patch-4e3ea4b8.c ___________________________________________________________________ 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: head/x11/libinput/files/patch-61f3e385.c =================================================================== --- head/x11/libinput/files/patch-61f3e385.c (nonexistent) +++ head/x11/libinput/files/patch-61f3e385.c (revision 488748) @@ -0,0 +1,4069 @@ +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: head/x11/libinput/files/patch-61f3e385.c ___________________________________________________________________ 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: head/x11/libinput/files/patch-ef9b7e88.c =================================================================== --- head/x11/libinput/files/patch-ef9b7e88.c (nonexistent) +++ head/x11/libinput/files/patch-ef9b7e88.c (revision 488748) @@ -0,0 +1,17 @@ +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: head/x11/libinput/files/patch-ef9b7e88.c ___________________________________________________________________ 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: head/x11/libinput/files/patch-f8b41205.c =================================================================== --- head/x11/libinput/files/patch-f8b41205.c (nonexistent) +++ head/x11/libinput/files/patch-f8b41205.c (revision 488748) @@ -0,0 +1,104 @@ +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: head/x11/libinput/files/patch-f8b41205.c ___________________________________________________________________ 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: head/x11/libinput/files/patch-src_evdev.c =================================================================== --- head/x11/libinput/files/patch-src_evdev.c (revision 488747) +++ head/x11/libinput/files/patch-src_evdev.c (revision 488748) @@ -1,11 +1,87 @@ ---- src/evdev.c.orig 2017-01-19 21:36:55 UTC +When a process without full /dev/input access enumerates devices via libudev-devd, +the udev_device structs do not get udev properties that mark them as inputs, keyboards, etc, +and get rejected as not being input devices. + +libinput reopens devices just to check path equality. +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 -@@ -25,6 +25,8 @@ +@@ -895,7 +895,7 @@ evdev_sync_device(struct evdev_device *device) + evdev_device_dispatch_one(device, &ev); + } while (rc == LIBEVDEV_READ_STATUS_SYNC); - #include "config.h" +- return rc == -EAGAIN ? 0 : rc; ++ return (rc == -EAGAIN || rc == -EINVAL)? 0 : rc; + } -+#include -+ - #include - #include - #include + static void +@@ -933,6 +933,17 @@ evdev_device_dispatch(void *data) + + if (rc != -EAGAIN && rc != -EINTR) { + libinput_remove_source(libinput, device->source); ++ /* ++ * Dirty hack to allow cuse-based evdev backends to release ++ * character device file when device has been detached ++ * but still have it descriptor opened. ++ * Issuing evdev_device_suspend() here leads to SIGSEGV ++ */ ++ int dummy_fd = open("/dev/null", O_RDONLY | O_CLOEXEC); ++ if (dummy_fd >= 0) { ++ dup2(dummy_fd, device->fd); ++ close(dummy_fd); ++ } + 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: head/x11/libinput/pkg-plist =================================================================== --- head/x11/libinput/pkg-plist (revision 488747) +++ head/x11/libinput/pkg-plist (revision 488748) @@ -1,14 +1,29 @@ -bin/libinput-debug-events -bin/libinput-list-devices +bin/libinput include/libinput.h lib/libinput.so lib/libinput.so.10 -lib/libinput.so.10.11.2 -lib/udev/hwdb.d/90-libinput-model-quirks.hwdb -lib/udev/libinput-device-group -lib/udev/libinput-model-quirks -lib/udev/rules.d/80-libinput-device-groups.rules -lib/udev/rules.d/90-libinput-model-quirks.rules +lib/libinput.so.10.13.0 libdata/pkgconfig/libinput.pc +libexec/libinput/libinput-debug-events +%%DEBUG_GUI%%libexec/libinput/libinput-debug-gui +libexec/libinput/libinput-list-devices +libexec/libinput/libinput-measure +libexec/libinput/libinput-measure-fuzz +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-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-record.1.gz +man/man1/libinput-replay.1.gz