diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index 225e2a10a97f94d6e8a9b09277dbb0d4511a24b7..0000000000000000000000000000000000000000 --- a/Makefile.in +++ /dev/null @@ -1,910 +0,0 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2020 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/attributes.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(am__DIST_COMMON) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = libevdev.pc -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(pkgconfigdir)" -DATA = $(pkgconfig_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - cscope distdir distdir-am dist dist-all distcheck -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ - config.h.in -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -CSCOPE = cscope -DIST_SUBDIRS = $(SUBDIRS) -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(srcdir)/libevdev.pc.in $(top_srcdir)/build-aux/compile \ - $(top_srcdir)/build-aux/config.guess \ - $(top_srcdir)/build-aux/config.sub \ - $(top_srcdir)/build-aux/install-sh \ - $(top_srcdir)/build-aux/ltmain.sh \ - $(top_srcdir)/build-aux/missing COPYING build-aux/compile \ - build-aux/config.guess build-aux/config.sub \ - build-aux/install-sh build-aux/ltmain.sh build-aux/missing -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__post_remove_distdir = $(am__remove_distdir) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -GZIP_ENV = --best -DIST_ARCHIVES = $(distdir).tar.xz -DIST_TARGETS = dist-xz -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CHECK_CFLAGS = @CHECK_CFLAGS@ -CHECK_LIBS = @CHECK_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GCC_CFLAGS = @GCC_CFLAGS@ -GCOV_CFLAGS = @GCOV_CFLAGS@ -GCOV_LDFLAGS = @GCOV_LDFLAGS@ -GNU_LD_FLAGS = @GNU_LD_FLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBEVDEV_LT_VERSION = @LIBEVDEV_LT_VERSION@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OS = @OS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} -PRINT_DIRECTORY_FLAGS_1 = -PRINT_DIRECTORY_FLAGS_0 = --no-print-directory -PRINT_DIRECTORY_FLAGS_ = $(PRINT_DIRECTORY_FLAGS_$(AM_DEFAULT_VERBOSITY)) -AM_MAKEFLAGS = $(PRINT_DIRECTORY_FLAGS_$(V)) -SUBDIRS = doc libevdev tools test -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libevdev.pc -EXTRA_DIST = libevdev.pc.in meson.build meson_options.txt -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @test -f $@ || rm -f stamp-h1 - @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -libevdev.pc: $(top_builddir)/config.status $(srcdir)/libevdev.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run 'make' without going through this Makefile. -# To change the values of 'make' variables: instead of editing Makefiles, -# (1) if the variable is set in 'config.status', edit 'config.status' -# (which will cause the Makefiles to be regenerated when you run 'make'); -# (2) otherwise, pass the desired values on the 'make' command line. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscope: cscope.files - test ! -s cscope.files \ - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) -clean-cscope: - -rm -f cscope.files -cscope.files: clean-cscope cscopelist -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz - $(am__post_remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__post_remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__post_remove_distdir) -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__post_remove_distdir) - -dist-zstd: distdir - tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst - $(am__post_remove_distdir) - -dist-tarZ: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__post_remove_distdir) - -dist-shar: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz - $(am__post_remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__post_remove_distdir) - -dist dist-all: - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' - $(am__post_remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - *.tar.zst*) \ - zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ - esac - chmod -R a-w $(distdir) - chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build/sub \ - && ../../configure \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=../.. --prefix="$$dc_install_base" \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__post_remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile $(DATA) config.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-pkgconfigDATA - -.MAKE: $(am__recursive_targets) all install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ - am--refresh check check-am clean clean-cscope clean-generic \ - clean-libtool cscope cscopelist-am ctags ctags-am dist \ - dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ - dist-xz dist-zip dist-zstd distcheck distclean \ - distclean-generic distclean-hdr distclean-libtool \ - distclean-tags distcleancheck distdir distuninstallcheck dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ - ps ps-am tags tags-am uninstall uninstall-am \ - uninstall-pkgconfigDATA - -.PRECIOUS: Makefile - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/OAT.xml b/OAT.xml index c4cde1b5dff3bd6617346d1d129eb7fd692c8c89..bc5dc381330d80fe00a6d95432f897af3f9e40f5 100644 --- a/OAT.xml +++ b/OAT.xml @@ -69,6 +69,16 @@ Note:If the text contains special characters, please escape them according to th + + + + + + + + + + diff --git a/doc/Makefile.in b/doc/Makefile.in deleted file mode 100644 index 511ac9700a6e1f08be7028d9254749105d4a1684..0000000000000000000000000000000000000000 --- a/doc/Makefile.in +++ /dev/null @@ -1,584 +0,0 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2020 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = doc -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/attributes.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = libevdev.doxygen libevdev.man -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -man3dir = $(mandir)/man3 -am__installdirs = "$(DESTDIR)$(man3dir)" -NROFF = nroff -MANS = $(man3_MANS) -DATA = $(noinst_DATA) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/libevdev.doxygen.in \ - $(srcdir)/libevdev.man.in -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CHECK_CFLAGS = @CHECK_CFLAGS@ -CHECK_LIBS = @CHECK_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GCC_CFLAGS = @GCC_CFLAGS@ -GCOV_CFLAGS = @GCOV_CFLAGS@ -GCOV_LDFLAGS = @GCOV_LDFLAGS@ -GNU_LD_FLAGS = @GNU_LD_FLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBEVDEV_LT_VERSION = @LIBEVDEV_LT_VERSION@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OS = @OS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -man3_MANS = libevdev.man -@HAVE_DOXYGEN_TRUE@noinst_DATA = html/index.html -@HAVE_DOXYGEN_TRUE@header_files = \ -@HAVE_DOXYGEN_TRUE@ $(top_srcdir)/libevdev/libevdev.h \ -@HAVE_DOXYGEN_TRUE@ $(top_srcdir)/libevdev/libevdev-uinput.h - -@HAVE_DOXYGEN_TRUE@doc_src = $(shell find html -type f -printf "html/%P\n" 2>/dev/null) -@HAVE_DOXYGEN_TRUE@style_src = \ -@HAVE_DOXYGEN_TRUE@ style/bootstrap.css \ -@HAVE_DOXYGEN_TRUE@ style/customdoxygen.css \ -@HAVE_DOXYGEN_TRUE@ style/doxy-boot.js \ -@HAVE_DOXYGEN_TRUE@ style/dynsections.js \ -@HAVE_DOXYGEN_TRUE@ style/footer.html \ -@HAVE_DOXYGEN_TRUE@ style/header.html \ -@HAVE_DOXYGEN_TRUE@ style/layout.xml \ -@HAVE_DOXYGEN_TRUE@ style/libevdevdoxygen.css \ -@HAVE_DOXYGEN_TRUE@ style/LICENSE \ -@HAVE_DOXYGEN_TRUE@ style/README.md \ -@HAVE_DOXYGEN_TRUE@ style/style.css - -@HAVE_DOXYGEN_TRUE@EXTRA_DIST = html/index.html $(doc_src) $(style_src) -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign doc/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -libevdev.doxygen: $(top_builddir)/config.status $(srcdir)/libevdev.doxygen.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ -libevdev.man: $(top_builddir)/config.status $(srcdir)/libevdev.man.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-man3: $(man3_MANS) - @$(NORMAL_INSTALL) - @list1='$(man3_MANS)'; \ - list2=''; \ - test -n "$(man3dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.3[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ - done; } - -uninstall-man3: - @$(NORMAL_UNINSTALL) - @list='$(man3_MANS)'; test -n "$(man3dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-hook -check-am: all-am -check: check-am -all-am: Makefile $(MANS) $(DATA) -installdirs: - for dir in "$(DESTDIR)$(man3dir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -@HAVE_DOXYGEN_FALSE@clean-local: -clean: clean-am - -clean-am: clean-generic clean-libtool clean-local mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-man - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: install-man3 - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-man - -uninstall-man: uninstall-man3 - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - clean-local cscopelist-am ctags-am dist-hook distclean \ - distclean-generic distclean-libtool distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-man3 install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ - uninstall-am uninstall-man uninstall-man3 - -.PRECIOUS: Makefile - - -@HAVE_DOXYGEN_TRUE@html/index.html: libevdev.doxygen style/libevdevdoxygen.css $(header_files) -@HAVE_DOXYGEN_TRUE@ $(AM_V_GEN)$(DOXYGEN) $< - -@HAVE_DOXYGEN_TRUE@clean-local: -@HAVE_DOXYGEN_TRUE@ $(AM_V_at)rm -rf html - -# make sure doc was built before running dist -dist-hook: - @test -f $(distdir)/html/index.html || (\ - echo "******************************************************" && \ - echo "Couldn't find documentation files, refusing make dist." && \ - echo "Install doxygen to build documentation for tarball." && \ - echo "******************************************************" && \ - test ) - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libevdev/Makefile.in b/libevdev/Makefile.in deleted file mode 100644 index 4ace2372298bead8a50044cde3a311b53bd1ba99..0000000000000000000000000000000000000000 --- a/libevdev/Makefile.in +++ /dev/null @@ -1,749 +0,0 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2020 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@GCOV_ENABLED_TRUE@am__append_1 = *.gcno -subdir = libevdev -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/attributes.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(libevdevinclude_HEADERS) \ - $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" \ - "$(DESTDIR)$(libevdevincludedir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -libevdev_la_LIBADD = -am_libevdev_la_OBJECTS = libevdev-uinput.lo libevdev.lo \ - libevdev-names.lo -libevdev_la_OBJECTS = $(am_libevdev_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -libevdev_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libevdev_la_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/libevdev-names.Plo \ - ./$(DEPDIR)/libevdev-uinput.Plo ./$(DEPDIR)/libevdev.Plo -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libevdev_la_SOURCES) -DIST_SOURCES = $(libevdev_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -HEADERS = $(libevdevinclude_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(srcdir)/Makefile.in \ - $(top_srcdir)/build-aux/depcomp -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CHECK_CFLAGS = @CHECK_CFLAGS@ -CHECK_LIBS = @CHECK_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GCC_CFLAGS = @GCC_CFLAGS@ -GCOV_CFLAGS = @GCOV_CFLAGS@ -GCOV_LDFLAGS = @GCOV_LDFLAGS@ -GNU_LD_FLAGS = @GNU_LD_FLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBEVDEV_LT_VERSION = @LIBEVDEV_LT_VERSION@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OS = @OS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -lib_LTLIBRARIES = libevdev.la -AM_CPPFLAGS = $(GCC_CFLAGS) $(GCOV_CFLAGS) -I$(top_srcdir)/include -I$(top_srcdir) -AM_LDFLAGS = $(GCOV_LDFLAGS) -libevdev_la_SOURCES = \ - libevdev.h \ - libevdev-int.h \ - libevdev-util.h \ - libevdev-uinput.c \ - libevdev-uinput.h \ - libevdev-uinput-int.h \ - libevdev.c \ - libevdev-names.c \ - ../include/linux/input.h \ - ../include/linux/uinput.h \ - ../include/linux/@OS@/input-event-codes.h \ - ../include/linux/@OS@/input.h \ - ../include/linux/@OS@/uinput.h - -libevdev_la_LDFLAGS = \ - $(AM_LDFLAGS) \ - -version-info $(LIBEVDEV_LT_VERSION) \ - -Wl,--version-script="$(srcdir)/libevdev.sym" \ - $(GNU_LD_FLAGS) - -EXTRA_libevdev_la_DEPENDENCIES = $(srcdir)/libevdev.sym -libevdevincludedir = $(includedir)/libevdev-1.0/libevdev -libevdevinclude_HEADERS = libevdev.h libevdev-uinput.h -EXTRA_DIST = make-event-names.py libevdev.sym -CLEANFILES = event-names.h $(am__append_1) -BUILT_SOURCES = event-names.h -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libevdev/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign libevdev/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libevdev.la: $(libevdev_la_OBJECTS) $(libevdev_la_DEPENDENCIES) $(EXTRA_libevdev_la_DEPENDENCIES) - $(AM_V_CCLD)$(libevdev_la_LINK) -rpath $(libdir) $(libevdev_la_OBJECTS) $(libevdev_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libevdev-names.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libevdev-uinput.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libevdev.Plo@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-libevdevincludeHEADERS: $(libevdevinclude_HEADERS) - @$(NORMAL_INSTALL) - @list='$(libevdevinclude_HEADERS)'; test -n "$(libevdevincludedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(libevdevincludedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libevdevincludedir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libevdevincludedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(libevdevincludedir)" || exit $$?; \ - done - -uninstall-libevdevincludeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(libevdevinclude_HEADERS)'; test -n "$(libevdevincludedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(libevdevincludedir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -all-am: Makefile $(LTLIBRARIES) $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libevdevincludedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -clean: clean-am - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/libevdev-names.Plo - -rm -f ./$(DEPDIR)/libevdev-uinput.Plo - -rm -f ./$(DEPDIR)/libevdev.Plo - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-libevdevincludeHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/libevdev-names.Plo - -rm -f ./$(DEPDIR)/libevdev-uinput.Plo - -rm -f ./$(DEPDIR)/libevdev.Plo - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-libLTLIBRARIES \ - uninstall-libevdevincludeHEADERS - -.MAKE: all check install install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ - clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ - ctags ctags-am distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libLTLIBRARIES \ - install-libevdevincludeHEADERS install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES \ - uninstall-libevdevincludeHEADERS - -.PRECIOUS: Makefile - - -event-names.h: Makefile make-event-names.py - $(PYTHON) $(srcdir)/make-event-names.py $(top_srcdir)/include/linux/@OS@/input.h $(top_srcdir)/include/linux/@OS@/input-event-codes.h > $@ - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/test/Makefile.am b/test/Makefile.am deleted file mode 100644 index 5f0c008d9b899ae7a2806437838e8bf163095078..0000000000000000000000000000000000000000 --- a/test/Makefile.am +++ /dev/null @@ -1,143 +0,0 @@ -build_tests = test-compile-pedantic test-link - -if ENABLE_STATIC_LINK_TEST -build_tests += test-static-link -endif - -noinst_PROGRAMS = $(build_tests) - -AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_builddir)/libevdev -AM_LDFLAGS = - -test_compile_pedantic_SOURCES = test-compile-pedantic.c -test_compile_pedantic_CFLAGS = $(AM_CPPFLAGS) -pedantic -Werror -std=c89 - -test_link_SOURCES = test-link.c -test_link_CFLAGS = -I$(top_srcdir) -test_link_LDADD = $(top_builddir)/libevdev/libevdev.la - -test_static_link_SOURCES = test-link.c -test_static_link_CFLAGS = -I$(top_srcdir) -test_static_link_LDADD = $(top_builddir)/libevdev/libevdev.la -test_static_link_LDFLAGS = $(AM_LDFLAGS) -static - -check_local_deps = - -if ENABLE_RUNTIME_TESTS -run_tests = \ - test-libevdev \ - test-kernel \ - test-uinput \ - test-event-codes \ - test-libevdev-internals \ - $(NULL) - -.NOTPARALLEL: - -noinst_PROGRAMS += $(run_tests) - -TESTS = $(run_tests) - -common_sources = \ - test-common-uinput.c \ - test-common-uinput.h \ - test-common.c \ - test-common.h - -# include builddir for event-names.h -AM_CPPFLAGS += $(CHECK_CFLAGS) $(GCOV_CFLAGS) -AM_LDFLAGS += $(GCOV_LDFLAGS) - -test_event_codes_SOURCES = \ - test-main.c \ - test-event-codes.c \ - test-event-names.c \ - test-context.c \ - $(common_sources) -test_event_codes_LDADD = $(CHECK_LIBS) $(top_builddir)/libevdev/libevdev.la -test_event_codes_LDFLAGS = -no-install - -test_libevdev_internals_SOURCES = \ - test-main.c \ - test-int-queue.c \ - $(common_sources) -test_libevdev_internals_LDADD = $(CHECK_LIBS) $(top_builddir)/libevdev/libevdev.la -test_libevdev_internals_LDFLAGS = -no-install - -test_uinput_SOURCES = \ - test-main.c \ - test-uinput.c \ - $(common_sources) -test_uinput_LDADD = $(CHECK_LIBS) $(top_builddir)/libevdev/libevdev.la -test_uinput_LDFLAGS = -no-install - -test_libevdev_SOURCES = \ - test-main.c \ - test-libevdev-init.c \ - test-libevdev-has-event.c \ - test-libevdev-events.c \ - $(common_sources) - -test_libevdev_LDADD = $(CHECK_LIBS) $(top_builddir)/libevdev/libevdev.la -test_libevdev_LDFLAGS = -no-install - -test_kernel_SOURCES = \ - test-main.c \ - test-kernel.c \ - $(common_sources) - -test_kernel_CFLAGS = -I$(top_srcdir) -test_kernel_LDADD = $(CHECK_LIBS) $(top_builddir)/libevdev/libevdev.la - -if HAVE_VALGRIND -VALGRIND_FLAGS=--leak-check=full \ - --quiet \ - --error-exitcode=3 \ - --suppressions=$(srcdir)/valgrind.suppressions - -valgrind: - $(MAKE) check-TESTS CK_TIMEOUT_MULTIPLIER=10 LOG_COMPILER="$(VALGRIND)" LOG_FLAGS="$(VALGRIND_FLAGS)" - -check_local_deps += valgrind - -endif - -if GCOV_ENABLED - -CLEANFILES = gcov-reports/*.gcov gcov-reports/summary.txt *.gcno *.gcda - -gcov-report: generate-gcov-report.sh check-TESTS - $(AM_V_GEN)$(srcdir)/generate-gcov-report.sh gcov-reports $(top_builddir)/libevdev $(builddir) - -gcov: gcov-report - @cat gcov-reports/summary.txt - -check_local_deps += gcov - -else - -gcov-report.txt: - @true - -gcov: - @true - - -endif # GCOV_ENABLED - -.PHONY: gcov gcov-clean gcov-report - -endif # ENABLE_RUNTIME_TESTS - -if ENABLE_STATIC_SYMBOL_LEAKS_TEST -static-symbol-leaks: test-static-link test-static-symbols-leak.sh - $(AM_V_GEN) $(srcdir)/test-static-symbols-leak.sh $(builddir) - -check_local_deps += static-symbol-leaks - -endif # HAVE_NM - -EXTRA_DIST = valgrind.suppressions generate-gcov-report.sh test-static-symbols-leak.sh - -check-local: $(check_local_deps) - diff --git a/test/Makefile.in b/test/Makefile.in deleted file mode 100644 index e59d09a50ea8a68e8a97c48611472423466ff794..0000000000000000000000000000000000000000 --- a/test/Makefile.in +++ /dev/null @@ -1,1438 +0,0 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2020 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@ENABLE_STATIC_LINK_TEST_TRUE@am__append_1 = test-static-link -noinst_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_4) -@ENABLE_RUNTIME_TESTS_TRUE@am__append_2 = $(run_tests) -@ENABLE_RUNTIME_TESTS_TRUE@TESTS = $(am__EXEEXT_3) - -# include builddir for event-names.h -@ENABLE_RUNTIME_TESTS_TRUE@am__append_3 = $(CHECK_CFLAGS) $(GCOV_CFLAGS) -@ENABLE_RUNTIME_TESTS_TRUE@am__append_4 = $(GCOV_LDFLAGS) -@ENABLE_RUNTIME_TESTS_TRUE@@HAVE_VALGRIND_TRUE@am__append_5 = valgrind -@ENABLE_RUNTIME_TESTS_TRUE@@GCOV_ENABLED_TRUE@am__append_6 = gcov -@ENABLE_STATIC_SYMBOL_LEAKS_TEST_TRUE@am__append_7 = static-symbol-leaks -subdir = test -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/attributes.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -@ENABLE_STATIC_LINK_TEST_TRUE@am__EXEEXT_1 = \ -@ENABLE_STATIC_LINK_TEST_TRUE@ test-static-link$(EXEEXT) -am__EXEEXT_2 = test-compile-pedantic$(EXEEXT) test-link$(EXEEXT) \ - $(am__EXEEXT_1) -@ENABLE_RUNTIME_TESTS_TRUE@am__EXEEXT_3 = test-libevdev$(EXEEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-kernel$(EXEEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-uinput$(EXEEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-event-codes$(EXEEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-libevdev-internals$(EXEEXT) -@ENABLE_RUNTIME_TESTS_TRUE@am__EXEEXT_4 = $(am__EXEEXT_3) -PROGRAMS = $(noinst_PROGRAMS) -am_test_compile_pedantic_OBJECTS = \ - test_compile_pedantic-test-compile-pedantic.$(OBJEXT) -test_compile_pedantic_OBJECTS = $(am_test_compile_pedantic_OBJECTS) -test_compile_pedantic_LDADD = $(LDADD) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -test_compile_pedantic_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(test_compile_pedantic_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -am__test_event_codes_SOURCES_DIST = test-main.c test-event-codes.c \ - test-event-names.c test-context.c test-common-uinput.c \ - test-common-uinput.h test-common.c test-common.h -@ENABLE_RUNTIME_TESTS_TRUE@am__objects_1 = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-common-uinput.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-common.$(OBJEXT) -@ENABLE_RUNTIME_TESTS_TRUE@am_test_event_codes_OBJECTS = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-main.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-event-codes.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-event-names.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-context.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(am__objects_1) -test_event_codes_OBJECTS = $(am_test_event_codes_OBJECTS) -am__DEPENDENCIES_1 = -@ENABLE_RUNTIME_TESTS_TRUE@test_event_codes_DEPENDENCIES = \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(top_builddir)/libevdev/libevdev.la -test_event_codes_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(test_event_codes_LDFLAGS) $(LDFLAGS) \ - -o $@ -am__test_kernel_SOURCES_DIST = test-main.c test-kernel.c \ - test-common-uinput.c test-common-uinput.h test-common.c \ - test-common.h -@ENABLE_RUNTIME_TESTS_TRUE@am__objects_2 = test_kernel-test-common-uinput.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test_kernel-test-common.$(OBJEXT) -@ENABLE_RUNTIME_TESTS_TRUE@am_test_kernel_OBJECTS = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test_kernel-test-main.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test_kernel-test-kernel.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(am__objects_2) -test_kernel_OBJECTS = $(am_test_kernel_OBJECTS) -@ENABLE_RUNTIME_TESTS_TRUE@test_kernel_DEPENDENCIES = \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(top_builddir)/libevdev/libevdev.la -test_kernel_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_kernel_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am__test_libevdev_SOURCES_DIST = test-main.c test-libevdev-init.c \ - test-libevdev-has-event.c test-libevdev-events.c \ - test-common-uinput.c test-common-uinput.h test-common.c \ - test-common.h -@ENABLE_RUNTIME_TESTS_TRUE@am_test_libevdev_OBJECTS = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-main.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-libevdev-init.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-libevdev-has-event.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-libevdev-events.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(am__objects_1) -test_libevdev_OBJECTS = $(am_test_libevdev_OBJECTS) -@ENABLE_RUNTIME_TESTS_TRUE@test_libevdev_DEPENDENCIES = \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(top_builddir)/libevdev/libevdev.la -test_libevdev_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(test_libevdev_LDFLAGS) $(LDFLAGS) -o $@ -am__test_libevdev_internals_SOURCES_DIST = test-main.c \ - test-int-queue.c test-common-uinput.c test-common-uinput.h \ - test-common.c test-common.h -@ENABLE_RUNTIME_TESTS_TRUE@am_test_libevdev_internals_OBJECTS = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-main.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-int-queue.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(am__objects_1) -test_libevdev_internals_OBJECTS = \ - $(am_test_libevdev_internals_OBJECTS) -@ENABLE_RUNTIME_TESTS_TRUE@test_libevdev_internals_DEPENDENCIES = \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(top_builddir)/libevdev/libevdev.la -test_libevdev_internals_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(AM_CFLAGS) $(CFLAGS) $(test_libevdev_internals_LDFLAGS) \ - $(LDFLAGS) -o $@ -am_test_link_OBJECTS = test_link-test-link.$(OBJEXT) -test_link_OBJECTS = $(am_test_link_OBJECTS) -test_link_DEPENDENCIES = $(top_builddir)/libevdev/libevdev.la -test_link_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_link_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -am_test_static_link_OBJECTS = test_static_link-test-link.$(OBJEXT) -test_static_link_OBJECTS = $(am_test_static_link_OBJECTS) -test_static_link_DEPENDENCIES = $(top_builddir)/libevdev/libevdev.la -test_static_link_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(test_static_link_CFLAGS) $(CFLAGS) \ - $(test_static_link_LDFLAGS) $(LDFLAGS) -o $@ -am__test_uinput_SOURCES_DIST = test-main.c test-uinput.c \ - test-common-uinput.c test-common-uinput.h test-common.c \ - test-common.h -@ENABLE_RUNTIME_TESTS_TRUE@am_test_uinput_OBJECTS = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-main.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-uinput.$(OBJEXT) \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(am__objects_1) -test_uinput_OBJECTS = $(am_test_uinput_OBJECTS) -@ENABLE_RUNTIME_TESTS_TRUE@test_uinput_DEPENDENCIES = \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(am__DEPENDENCIES_1) \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(top_builddir)/libevdev/libevdev.la -test_uinput_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(test_uinput_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/test-common-uinput.Po \ - ./$(DEPDIR)/test-common.Po ./$(DEPDIR)/test-context.Po \ - ./$(DEPDIR)/test-event-codes.Po \ - ./$(DEPDIR)/test-event-names.Po ./$(DEPDIR)/test-int-queue.Po \ - ./$(DEPDIR)/test-libevdev-events.Po \ - ./$(DEPDIR)/test-libevdev-has-event.Po \ - ./$(DEPDIR)/test-libevdev-init.Po ./$(DEPDIR)/test-main.Po \ - ./$(DEPDIR)/test-uinput.Po \ - ./$(DEPDIR)/test_compile_pedantic-test-compile-pedantic.Po \ - ./$(DEPDIR)/test_kernel-test-common-uinput.Po \ - ./$(DEPDIR)/test_kernel-test-common.Po \ - ./$(DEPDIR)/test_kernel-test-kernel.Po \ - ./$(DEPDIR)/test_kernel-test-main.Po \ - ./$(DEPDIR)/test_link-test-link.Po \ - ./$(DEPDIR)/test_static_link-test-link.Po -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(test_compile_pedantic_SOURCES) $(test_event_codes_SOURCES) \ - $(test_kernel_SOURCES) $(test_libevdev_SOURCES) \ - $(test_libevdev_internals_SOURCES) $(test_link_SOURCES) \ - $(test_static_link_SOURCES) $(test_uinput_SOURCES) -DIST_SOURCES = $(test_compile_pedantic_SOURCES) \ - $(am__test_event_codes_SOURCES_DIST) \ - $(am__test_kernel_SOURCES_DIST) \ - $(am__test_libevdev_SOURCES_DIST) \ - $(am__test_libevdev_internals_SOURCES_DIST) \ - $(test_link_SOURCES) $(test_static_link_SOURCES) \ - $(am__test_uinput_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__recheck_rx = ^[ ]*:recheck:[ ]* -am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* -am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* -# A command that, given a newline-separated list of test names on the -# standard input, print the name of the tests that are to be re-run -# upon "make recheck". -am__list_recheck_tests = $(AWK) '{ \ - recheck = 1; \ - while ((rc = (getline line < ($$0 ".trs"))) != 0) \ - { \ - if (rc < 0) \ - { \ - if ((getline line2 < ($$0 ".log")) < 0) \ - recheck = 0; \ - break; \ - } \ - else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ - { \ - recheck = 0; \ - break; \ - } \ - else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ - { \ - break; \ - } \ - }; \ - if (recheck) \ - print $$0; \ - close ($$0 ".trs"); \ - close ($$0 ".log"); \ -}' -# A command that, given a newline-separated list of test names on the -# standard input, create the global log from their .trs and .log files. -am__create_global_log = $(AWK) ' \ -function fatal(msg) \ -{ \ - print "fatal: making $@: " msg | "cat >&2"; \ - exit 1; \ -} \ -function rst_section(header) \ -{ \ - print header; \ - len = length(header); \ - for (i = 1; i <= len; i = i + 1) \ - printf "="; \ - printf "\n\n"; \ -} \ -{ \ - copy_in_global_log = 1; \ - global_test_result = "RUN"; \ - while ((rc = (getline line < ($$0 ".trs"))) != 0) \ - { \ - if (rc < 0) \ - fatal("failed to read from " $$0 ".trs"); \ - if (line ~ /$(am__global_test_result_rx)/) \ - { \ - sub("$(am__global_test_result_rx)", "", line); \ - sub("[ ]*$$", "", line); \ - global_test_result = line; \ - } \ - else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ - copy_in_global_log = 0; \ - }; \ - if (copy_in_global_log) \ - { \ - rst_section(global_test_result ": " $$0); \ - while ((rc = (getline line < ($$0 ".log"))) != 0) \ - { \ - if (rc < 0) \ - fatal("failed to read from " $$0 ".log"); \ - print line; \ - }; \ - printf "\n"; \ - }; \ - close ($$0 ".trs"); \ - close ($$0 ".log"); \ -}' -# Restructured Text title. -am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } -# Solaris 10 'make', and several other traditional 'make' implementations, -# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it -# by disabling -e (using the XSI extension "set +e") if it's set. -am__sh_e_setup = case $$- in *e*) set +e;; esac -# Default flags passed to test drivers. -am__common_driver_flags = \ - --color-tests "$$am__color_tests" \ - --enable-hard-errors "$$am__enable_hard_errors" \ - --expect-failure "$$am__expect_failure" -# To be inserted before the command running the test. Creates the -# directory for the log if needed. Stores in $dir the directory -# containing $f, in $tst the test, in $log the log. Executes the -# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and -# passes TESTS_ENVIRONMENT. Set up options for the wrapper that -# will run the test scripts (or their associated LOG_COMPILER, if -# thy have one). -am__check_pre = \ -$(am__sh_e_setup); \ -$(am__vpath_adj_setup) $(am__vpath_adj) \ -$(am__tty_colors); \ -srcdir=$(srcdir); export srcdir; \ -case "$@" in \ - */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ - *) am__odir=.;; \ -esac; \ -test "x$$am__odir" = x"." || test -d "$$am__odir" \ - || $(MKDIR_P) "$$am__odir" || exit $$?; \ -if test -f "./$$f"; then dir=./; \ -elif test -f "$$f"; then dir=; \ -else dir="$(srcdir)/"; fi; \ -tst=$$dir$$f; log='$@'; \ -if test -n '$(DISABLE_HARD_ERRORS)'; then \ - am__enable_hard_errors=no; \ -else \ - am__enable_hard_errors=yes; \ -fi; \ -case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ - am__expect_failure=yes;; \ - *) \ - am__expect_failure=no;; \ -esac; \ -$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) -# A shell command to get the names of the tests scripts with any registered -# extension removed (i.e., equivalently, the names of the test logs, with -# the '.log' extension removed). The result is saved in the shell variable -# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, -# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", -# since that might cause problem with VPATH rewrites for suffix-less tests. -# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. -am__set_TESTS_bases = \ - bases='$(TEST_LOGS)'; \ - bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ - bases=`echo $$bases` -RECHECK_LOGS = $(TEST_LOGS) -AM_RECURSIVE_TARGETS = check recheck -TEST_SUITE_LOG = test-suite.log -TEST_EXTENSIONS = @EXEEXT@ .test -LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver -LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) -am__set_b = \ - case '$@' in \ - */*) \ - case '$*' in \ - */*) b='$*';; \ - *) b=`echo '$@' | sed 's/\.log$$//'`; \ - esac;; \ - *) \ - b='$*';; \ - esac -am__test_logs1 = $(TESTS:=.log) -am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) -TEST_LOGS = $(am__test_logs2:.test.log=.log) -TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver -TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ - $(TEST_LOG_FLAGS) -am__DIST_COMMON = $(srcdir)/Makefile.in \ - $(top_srcdir)/build-aux/depcomp \ - $(top_srcdir)/build-aux/test-driver -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CHECK_CFLAGS = @CHECK_CFLAGS@ -CHECK_LIBS = @CHECK_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GCC_CFLAGS = @GCC_CFLAGS@ -GCOV_CFLAGS = @GCOV_CFLAGS@ -GCOV_LDFLAGS = @GCOV_LDFLAGS@ -GNU_LD_FLAGS = @GNU_LD_FLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBEVDEV_LT_VERSION = @LIBEVDEV_LT_VERSION@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OS = @OS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -build_tests = test-compile-pedantic test-link $(am__append_1) -AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \ - -I$(top_builddir)/libevdev $(am__append_3) -AM_LDFLAGS = $(am__append_4) -test_compile_pedantic_SOURCES = test-compile-pedantic.c -test_compile_pedantic_CFLAGS = $(AM_CPPFLAGS) -pedantic -Werror -std=c89 -test_link_SOURCES = test-link.c -test_link_CFLAGS = -I$(top_srcdir) -test_link_LDADD = $(top_builddir)/libevdev/libevdev.la -test_static_link_SOURCES = test-link.c -test_static_link_CFLAGS = -I$(top_srcdir) -test_static_link_LDADD = $(top_builddir)/libevdev/libevdev.la -test_static_link_LDFLAGS = $(AM_LDFLAGS) -static -check_local_deps = $(am__append_5) $(am__append_6) $(am__append_7) -@ENABLE_RUNTIME_TESTS_TRUE@run_tests = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-libevdev \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-kernel \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-uinput \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-event-codes \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-libevdev-internals \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(NULL) - -@ENABLE_RUNTIME_TESTS_TRUE@common_sources = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-common-uinput.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-common-uinput.h \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-common.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-common.h - -@ENABLE_RUNTIME_TESTS_TRUE@test_event_codes_SOURCES = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-main.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-event-codes.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-event-names.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-context.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(common_sources) - -@ENABLE_RUNTIME_TESTS_TRUE@test_event_codes_LDADD = $(CHECK_LIBS) $(top_builddir)/libevdev/libevdev.la -@ENABLE_RUNTIME_TESTS_TRUE@test_event_codes_LDFLAGS = -no-install -@ENABLE_RUNTIME_TESTS_TRUE@test_libevdev_internals_SOURCES = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-main.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-int-queue.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(common_sources) - -@ENABLE_RUNTIME_TESTS_TRUE@test_libevdev_internals_LDADD = $(CHECK_LIBS) $(top_builddir)/libevdev/libevdev.la -@ENABLE_RUNTIME_TESTS_TRUE@test_libevdev_internals_LDFLAGS = -no-install -@ENABLE_RUNTIME_TESTS_TRUE@test_uinput_SOURCES = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-main.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-uinput.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(common_sources) - -@ENABLE_RUNTIME_TESTS_TRUE@test_uinput_LDADD = $(CHECK_LIBS) $(top_builddir)/libevdev/libevdev.la -@ENABLE_RUNTIME_TESTS_TRUE@test_uinput_LDFLAGS = -no-install -@ENABLE_RUNTIME_TESTS_TRUE@test_libevdev_SOURCES = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-main.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-libevdev-init.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-libevdev-has-event.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-libevdev-events.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(common_sources) - -@ENABLE_RUNTIME_TESTS_TRUE@test_libevdev_LDADD = $(CHECK_LIBS) $(top_builddir)/libevdev/libevdev.la -@ENABLE_RUNTIME_TESTS_TRUE@test_libevdev_LDFLAGS = -no-install -@ENABLE_RUNTIME_TESTS_TRUE@test_kernel_SOURCES = \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-main.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ test-kernel.c \ -@ENABLE_RUNTIME_TESTS_TRUE@ $(common_sources) - -@ENABLE_RUNTIME_TESTS_TRUE@test_kernel_CFLAGS = -I$(top_srcdir) -@ENABLE_RUNTIME_TESTS_TRUE@test_kernel_LDADD = $(CHECK_LIBS) $(top_builddir)/libevdev/libevdev.la -@ENABLE_RUNTIME_TESTS_TRUE@@HAVE_VALGRIND_TRUE@VALGRIND_FLAGS = --leak-check=full \ -@ENABLE_RUNTIME_TESTS_TRUE@@HAVE_VALGRIND_TRUE@ --quiet \ -@ENABLE_RUNTIME_TESTS_TRUE@@HAVE_VALGRIND_TRUE@ --error-exitcode=3 \ -@ENABLE_RUNTIME_TESTS_TRUE@@HAVE_VALGRIND_TRUE@ --suppressions=$(srcdir)/valgrind.suppressions - -@ENABLE_RUNTIME_TESTS_TRUE@@GCOV_ENABLED_TRUE@CLEANFILES = gcov-reports/*.gcov gcov-reports/summary.txt *.gcno *.gcda -EXTRA_DIST = valgrind.suppressions generate-gcov-report.sh test-static-symbols-leak.sh -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign test/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -test-compile-pedantic$(EXEEXT): $(test_compile_pedantic_OBJECTS) $(test_compile_pedantic_DEPENDENCIES) $(EXTRA_test_compile_pedantic_DEPENDENCIES) - @rm -f test-compile-pedantic$(EXEEXT) - $(AM_V_CCLD)$(test_compile_pedantic_LINK) $(test_compile_pedantic_OBJECTS) $(test_compile_pedantic_LDADD) $(LIBS) - -test-event-codes$(EXEEXT): $(test_event_codes_OBJECTS) $(test_event_codes_DEPENDENCIES) $(EXTRA_test_event_codes_DEPENDENCIES) - @rm -f test-event-codes$(EXEEXT) - $(AM_V_CCLD)$(test_event_codes_LINK) $(test_event_codes_OBJECTS) $(test_event_codes_LDADD) $(LIBS) - -test-kernel$(EXEEXT): $(test_kernel_OBJECTS) $(test_kernel_DEPENDENCIES) $(EXTRA_test_kernel_DEPENDENCIES) - @rm -f test-kernel$(EXEEXT) - $(AM_V_CCLD)$(test_kernel_LINK) $(test_kernel_OBJECTS) $(test_kernel_LDADD) $(LIBS) - -test-libevdev$(EXEEXT): $(test_libevdev_OBJECTS) $(test_libevdev_DEPENDENCIES) $(EXTRA_test_libevdev_DEPENDENCIES) - @rm -f test-libevdev$(EXEEXT) - $(AM_V_CCLD)$(test_libevdev_LINK) $(test_libevdev_OBJECTS) $(test_libevdev_LDADD) $(LIBS) - -test-libevdev-internals$(EXEEXT): $(test_libevdev_internals_OBJECTS) $(test_libevdev_internals_DEPENDENCIES) $(EXTRA_test_libevdev_internals_DEPENDENCIES) - @rm -f test-libevdev-internals$(EXEEXT) - $(AM_V_CCLD)$(test_libevdev_internals_LINK) $(test_libevdev_internals_OBJECTS) $(test_libevdev_internals_LDADD) $(LIBS) - -test-link$(EXEEXT): $(test_link_OBJECTS) $(test_link_DEPENDENCIES) $(EXTRA_test_link_DEPENDENCIES) - @rm -f test-link$(EXEEXT) - $(AM_V_CCLD)$(test_link_LINK) $(test_link_OBJECTS) $(test_link_LDADD) $(LIBS) - -test-static-link$(EXEEXT): $(test_static_link_OBJECTS) $(test_static_link_DEPENDENCIES) $(EXTRA_test_static_link_DEPENDENCIES) - @rm -f test-static-link$(EXEEXT) - $(AM_V_CCLD)$(test_static_link_LINK) $(test_static_link_OBJECTS) $(test_static_link_LDADD) $(LIBS) - -test-uinput$(EXEEXT): $(test_uinput_OBJECTS) $(test_uinput_DEPENDENCIES) $(EXTRA_test_uinput_DEPENDENCIES) - @rm -f test-uinput$(EXEEXT) - $(AM_V_CCLD)$(test_uinput_LINK) $(test_uinput_OBJECTS) $(test_uinput_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-common-uinput.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-common.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-context.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-event-codes.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-event-names.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-int-queue.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-libevdev-events.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-libevdev-has-event.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-libevdev-init.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-main.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-uinput.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_compile_pedantic-test-compile-pedantic.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_kernel-test-common-uinput.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_kernel-test-common.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_kernel-test-kernel.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_kernel-test-main.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_link-test-link.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_static_link-test-link.Po@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -test_compile_pedantic-test-compile-pedantic.o: test-compile-pedantic.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_compile_pedantic_CFLAGS) $(CFLAGS) -MT test_compile_pedantic-test-compile-pedantic.o -MD -MP -MF $(DEPDIR)/test_compile_pedantic-test-compile-pedantic.Tpo -c -o test_compile_pedantic-test-compile-pedantic.o `test -f 'test-compile-pedantic.c' || echo '$(srcdir)/'`test-compile-pedantic.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_compile_pedantic-test-compile-pedantic.Tpo $(DEPDIR)/test_compile_pedantic-test-compile-pedantic.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-compile-pedantic.c' object='test_compile_pedantic-test-compile-pedantic.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_compile_pedantic_CFLAGS) $(CFLAGS) -c -o test_compile_pedantic-test-compile-pedantic.o `test -f 'test-compile-pedantic.c' || echo '$(srcdir)/'`test-compile-pedantic.c - -test_compile_pedantic-test-compile-pedantic.obj: test-compile-pedantic.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_compile_pedantic_CFLAGS) $(CFLAGS) -MT test_compile_pedantic-test-compile-pedantic.obj -MD -MP -MF $(DEPDIR)/test_compile_pedantic-test-compile-pedantic.Tpo -c -o test_compile_pedantic-test-compile-pedantic.obj `if test -f 'test-compile-pedantic.c'; then $(CYGPATH_W) 'test-compile-pedantic.c'; else $(CYGPATH_W) '$(srcdir)/test-compile-pedantic.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_compile_pedantic-test-compile-pedantic.Tpo $(DEPDIR)/test_compile_pedantic-test-compile-pedantic.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-compile-pedantic.c' object='test_compile_pedantic-test-compile-pedantic.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_compile_pedantic_CFLAGS) $(CFLAGS) -c -o test_compile_pedantic-test-compile-pedantic.obj `if test -f 'test-compile-pedantic.c'; then $(CYGPATH_W) 'test-compile-pedantic.c'; else $(CYGPATH_W) '$(srcdir)/test-compile-pedantic.c'; fi` - -test_kernel-test-main.o: test-main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -MT test_kernel-test-main.o -MD -MP -MF $(DEPDIR)/test_kernel-test-main.Tpo -c -o test_kernel-test-main.o `test -f 'test-main.c' || echo '$(srcdir)/'`test-main.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_kernel-test-main.Tpo $(DEPDIR)/test_kernel-test-main.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-main.c' object='test_kernel-test-main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -c -o test_kernel-test-main.o `test -f 'test-main.c' || echo '$(srcdir)/'`test-main.c - -test_kernel-test-main.obj: test-main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -MT test_kernel-test-main.obj -MD -MP -MF $(DEPDIR)/test_kernel-test-main.Tpo -c -o test_kernel-test-main.obj `if test -f 'test-main.c'; then $(CYGPATH_W) 'test-main.c'; else $(CYGPATH_W) '$(srcdir)/test-main.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_kernel-test-main.Tpo $(DEPDIR)/test_kernel-test-main.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-main.c' object='test_kernel-test-main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -c -o test_kernel-test-main.obj `if test -f 'test-main.c'; then $(CYGPATH_W) 'test-main.c'; else $(CYGPATH_W) '$(srcdir)/test-main.c'; fi` - -test_kernel-test-kernel.o: test-kernel.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -MT test_kernel-test-kernel.o -MD -MP -MF $(DEPDIR)/test_kernel-test-kernel.Tpo -c -o test_kernel-test-kernel.o `test -f 'test-kernel.c' || echo '$(srcdir)/'`test-kernel.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_kernel-test-kernel.Tpo $(DEPDIR)/test_kernel-test-kernel.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-kernel.c' object='test_kernel-test-kernel.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -c -o test_kernel-test-kernel.o `test -f 'test-kernel.c' || echo '$(srcdir)/'`test-kernel.c - -test_kernel-test-kernel.obj: test-kernel.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -MT test_kernel-test-kernel.obj -MD -MP -MF $(DEPDIR)/test_kernel-test-kernel.Tpo -c -o test_kernel-test-kernel.obj `if test -f 'test-kernel.c'; then $(CYGPATH_W) 'test-kernel.c'; else $(CYGPATH_W) '$(srcdir)/test-kernel.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_kernel-test-kernel.Tpo $(DEPDIR)/test_kernel-test-kernel.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-kernel.c' object='test_kernel-test-kernel.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -c -o test_kernel-test-kernel.obj `if test -f 'test-kernel.c'; then $(CYGPATH_W) 'test-kernel.c'; else $(CYGPATH_W) '$(srcdir)/test-kernel.c'; fi` - -test_kernel-test-common-uinput.o: test-common-uinput.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -MT test_kernel-test-common-uinput.o -MD -MP -MF $(DEPDIR)/test_kernel-test-common-uinput.Tpo -c -o test_kernel-test-common-uinput.o `test -f 'test-common-uinput.c' || echo '$(srcdir)/'`test-common-uinput.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_kernel-test-common-uinput.Tpo $(DEPDIR)/test_kernel-test-common-uinput.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common-uinput.c' object='test_kernel-test-common-uinput.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -c -o test_kernel-test-common-uinput.o `test -f 'test-common-uinput.c' || echo '$(srcdir)/'`test-common-uinput.c - -test_kernel-test-common-uinput.obj: test-common-uinput.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -MT test_kernel-test-common-uinput.obj -MD -MP -MF $(DEPDIR)/test_kernel-test-common-uinput.Tpo -c -o test_kernel-test-common-uinput.obj `if test -f 'test-common-uinput.c'; then $(CYGPATH_W) 'test-common-uinput.c'; else $(CYGPATH_W) '$(srcdir)/test-common-uinput.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_kernel-test-common-uinput.Tpo $(DEPDIR)/test_kernel-test-common-uinput.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common-uinput.c' object='test_kernel-test-common-uinput.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -c -o test_kernel-test-common-uinput.obj `if test -f 'test-common-uinput.c'; then $(CYGPATH_W) 'test-common-uinput.c'; else $(CYGPATH_W) '$(srcdir)/test-common-uinput.c'; fi` - -test_kernel-test-common.o: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -MT test_kernel-test-common.o -MD -MP -MF $(DEPDIR)/test_kernel-test-common.Tpo -c -o test_kernel-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_kernel-test-common.Tpo $(DEPDIR)/test_kernel-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_kernel-test-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -c -o test_kernel-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c - -test_kernel-test-common.obj: test-common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -MT test_kernel-test-common.obj -MD -MP -MF $(DEPDIR)/test_kernel-test-common.Tpo -c -o test_kernel-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_kernel-test-common.Tpo $(DEPDIR)/test_kernel-test-common.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-common.c' object='test_kernel-test-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_kernel_CFLAGS) $(CFLAGS) -c -o test_kernel-test-common.obj `if test -f 'test-common.c'; then $(CYGPATH_W) 'test-common.c'; else $(CYGPATH_W) '$(srcdir)/test-common.c'; fi` - -test_link-test-link.o: test-link.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_link_CFLAGS) $(CFLAGS) -MT test_link-test-link.o -MD -MP -MF $(DEPDIR)/test_link-test-link.Tpo -c -o test_link-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link-test-link.Tpo $(DEPDIR)/test_link-test-link.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-link.c' object='test_link-test-link.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_link_CFLAGS) $(CFLAGS) -c -o test_link-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c - -test_link-test-link.obj: test-link.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_link_CFLAGS) $(CFLAGS) -MT test_link-test-link.obj -MD -MP -MF $(DEPDIR)/test_link-test-link.Tpo -c -o test_link-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_link-test-link.Tpo $(DEPDIR)/test_link-test-link.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-link.c' object='test_link-test-link.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_link_CFLAGS) $(CFLAGS) -c -o test_link-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` - -test_static_link-test-link.o: test-link.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_static_link_CFLAGS) $(CFLAGS) -MT test_static_link-test-link.o -MD -MP -MF $(DEPDIR)/test_static_link-test-link.Tpo -c -o test_static_link-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_static_link-test-link.Tpo $(DEPDIR)/test_static_link-test-link.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-link.c' object='test_static_link-test-link.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_static_link_CFLAGS) $(CFLAGS) -c -o test_static_link-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c - -test_static_link-test-link.obj: test-link.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_static_link_CFLAGS) $(CFLAGS) -MT test_static_link-test-link.obj -MD -MP -MF $(DEPDIR)/test_static_link-test-link.Tpo -c -o test_static_link-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_static_link-test-link.Tpo $(DEPDIR)/test_static_link-test-link.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-link.c' object='test_static_link-test-link.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_static_link_CFLAGS) $(CFLAGS) -c -o test_static_link-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -# Recover from deleted '.trs' file; this should ensure that -# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create -# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells -# to avoid problems with "make -n". -.log.trs: - rm -f $< $@ - $(MAKE) $(AM_MAKEFLAGS) $< - -# Leading 'am--fnord' is there to ensure the list of targets does not -# expand to empty, as could happen e.g. with make check TESTS=''. -am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) -am--force-recheck: - @: - -$(TEST_SUITE_LOG): $(TEST_LOGS) - @$(am__set_TESTS_bases); \ - am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ - redo_bases=`for i in $$bases; do \ - am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ - done`; \ - if test -n "$$redo_bases"; then \ - redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ - redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ - if $(am__make_dryrun); then :; else \ - rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ - fi; \ - fi; \ - if test -n "$$am__remaking_logs"; then \ - echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ - "recursion detected" >&2; \ - elif test -n "$$redo_logs"; then \ - am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ - fi; \ - if $(am__make_dryrun); then :; else \ - st=0; \ - errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ - for i in $$redo_bases; do \ - test -f $$i.trs && test -r $$i.trs \ - || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ - test -f $$i.log && test -r $$i.log \ - || { echo "$$errmsg $$i.log" >&2; st=1; }; \ - done; \ - test $$st -eq 0 || exit 1; \ - fi - @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ - ws='[ ]'; \ - results=`for b in $$bases; do echo $$b.trs; done`; \ - test -n "$$results" || results=/dev/null; \ - all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ - pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ - fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ - skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ - xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ - xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ - error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ - if test `expr $$fail + $$xpass + $$error` -eq 0; then \ - success=true; \ - else \ - success=false; \ - fi; \ - br='==================='; br=$$br$$br$$br$$br; \ - result_count () \ - { \ - if test x"$$1" = x"--maybe-color"; then \ - maybe_colorize=yes; \ - elif test x"$$1" = x"--no-color"; then \ - maybe_colorize=no; \ - else \ - echo "$@: invalid 'result_count' usage" >&2; exit 4; \ - fi; \ - shift; \ - desc=$$1 count=$$2; \ - if test $$maybe_colorize = yes && test $$count -gt 0; then \ - color_start=$$3 color_end=$$std; \ - else \ - color_start= color_end=; \ - fi; \ - echo "$${color_start}# $$desc $$count$${color_end}"; \ - }; \ - create_testsuite_report () \ - { \ - result_count $$1 "TOTAL:" $$all "$$brg"; \ - result_count $$1 "PASS: " $$pass "$$grn"; \ - result_count $$1 "SKIP: " $$skip "$$blu"; \ - result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ - result_count $$1 "FAIL: " $$fail "$$red"; \ - result_count $$1 "XPASS:" $$xpass "$$red"; \ - result_count $$1 "ERROR:" $$error "$$mgn"; \ - }; \ - { \ - echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ - $(am__rst_title); \ - create_testsuite_report --no-color; \ - echo; \ - echo ".. contents:: :depth: 2"; \ - echo; \ - for b in $$bases; do echo $$b; done \ - | $(am__create_global_log); \ - } >$(TEST_SUITE_LOG).tmp || exit 1; \ - mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ - if $$success; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ - fi; \ - echo "$${col}$$br$${std}"; \ - echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ - echo "$${col}$$br$${std}"; \ - create_testsuite_report --maybe-color; \ - echo "$$col$$br$$std"; \ - if $$success; then :; else \ - echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ - if test -n "$(PACKAGE_BUGREPORT)"; then \ - echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ - fi; \ - echo "$$col$$br$$std"; \ - fi; \ - $$success || exit 1 - -check-TESTS: - @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list - @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list - @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) - @set +e; $(am__set_TESTS_bases); \ - log_list=`for i in $$bases; do echo $$i.log; done`; \ - trs_list=`for i in $$bases; do echo $$i.trs; done`; \ - log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ - $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ - exit $$?; -recheck: all - @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) - @set +e; $(am__set_TESTS_bases); \ - bases=`for i in $$bases; do echo $$i; done \ - | $(am__list_recheck_tests)` || exit 1; \ - log_list=`for i in $$bases; do echo $$i.log; done`; \ - log_list=`echo $$log_list`; \ - $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ - am__force_recheck=am--force-recheck \ - TEST_LOGS="$$log_list"; \ - exit $$? -test-libevdev.log: test-libevdev$(EXEEXT) - @p='test-libevdev$(EXEEXT)'; \ - b='test-libevdev'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -test-kernel.log: test-kernel$(EXEEXT) - @p='test-kernel$(EXEEXT)'; \ - b='test-kernel'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -test-uinput.log: test-uinput$(EXEEXT) - @p='test-uinput$(EXEEXT)'; \ - b='test-uinput'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -test-event-codes.log: test-event-codes$(EXEEXT) - @p='test-event-codes$(EXEEXT)'; \ - b='test-event-codes'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -test-libevdev-internals.log: test-libevdev-internals$(EXEEXT) - @p='test-libevdev-internals$(EXEEXT)'; \ - b='test-libevdev-internals'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -.test.log: - @p='$<'; \ - $(am__set_b); \ - $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -@am__EXEEXT_TRUE@.test$(EXEEXT).log: -@am__EXEEXT_TRUE@ @p='$<'; \ -@am__EXEEXT_TRUE@ $(am__set_b); \ -@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ -@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ -@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ -@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) - -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) - -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/test-common-uinput.Po - -rm -f ./$(DEPDIR)/test-common.Po - -rm -f ./$(DEPDIR)/test-context.Po - -rm -f ./$(DEPDIR)/test-event-codes.Po - -rm -f ./$(DEPDIR)/test-event-names.Po - -rm -f ./$(DEPDIR)/test-int-queue.Po - -rm -f ./$(DEPDIR)/test-libevdev-events.Po - -rm -f ./$(DEPDIR)/test-libevdev-has-event.Po - -rm -f ./$(DEPDIR)/test-libevdev-init.Po - -rm -f ./$(DEPDIR)/test-main.Po - -rm -f ./$(DEPDIR)/test-uinput.Po - -rm -f ./$(DEPDIR)/test_compile_pedantic-test-compile-pedantic.Po - -rm -f ./$(DEPDIR)/test_kernel-test-common-uinput.Po - -rm -f ./$(DEPDIR)/test_kernel-test-common.Po - -rm -f ./$(DEPDIR)/test_kernel-test-kernel.Po - -rm -f ./$(DEPDIR)/test_kernel-test-main.Po - -rm -f ./$(DEPDIR)/test_link-test-link.Po - -rm -f ./$(DEPDIR)/test_static_link-test-link.Po - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/test-common-uinput.Po - -rm -f ./$(DEPDIR)/test-common.Po - -rm -f ./$(DEPDIR)/test-context.Po - -rm -f ./$(DEPDIR)/test-event-codes.Po - -rm -f ./$(DEPDIR)/test-event-names.Po - -rm -f ./$(DEPDIR)/test-int-queue.Po - -rm -f ./$(DEPDIR)/test-libevdev-events.Po - -rm -f ./$(DEPDIR)/test-libevdev-has-event.Po - -rm -f ./$(DEPDIR)/test-libevdev-init.Po - -rm -f ./$(DEPDIR)/test-main.Po - -rm -f ./$(DEPDIR)/test-uinput.Po - -rm -f ./$(DEPDIR)/test_compile_pedantic-test-compile-pedantic.Po - -rm -f ./$(DEPDIR)/test_kernel-test-common-uinput.Po - -rm -f ./$(DEPDIR)/test_kernel-test-common.Po - -rm -f ./$(DEPDIR)/test_kernel-test-kernel.Po - -rm -f ./$(DEPDIR)/test_kernel-test-main.Po - -rm -f ./$(DEPDIR)/test_link-test-link.Po - -rm -f ./$(DEPDIR)/test_static_link-test-link.Po - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \ - check-am check-local clean clean-generic clean-libtool \ - clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am recheck tags tags-am uninstall \ - uninstall-am - -.PRECIOUS: Makefile - - -@ENABLE_RUNTIME_TESTS_TRUE@.NOTPARALLEL: - -@ENABLE_RUNTIME_TESTS_TRUE@@HAVE_VALGRIND_TRUE@valgrind: -@ENABLE_RUNTIME_TESTS_TRUE@@HAVE_VALGRIND_TRUE@ $(MAKE) check-TESTS CK_TIMEOUT_MULTIPLIER=10 LOG_COMPILER="$(VALGRIND)" LOG_FLAGS="$(VALGRIND_FLAGS)" - -@ENABLE_RUNTIME_TESTS_TRUE@@GCOV_ENABLED_TRUE@gcov-report: generate-gcov-report.sh check-TESTS -@ENABLE_RUNTIME_TESTS_TRUE@@GCOV_ENABLED_TRUE@ $(AM_V_GEN)$(srcdir)/generate-gcov-report.sh gcov-reports $(top_builddir)/libevdev $(builddir) - -@ENABLE_RUNTIME_TESTS_TRUE@@GCOV_ENABLED_TRUE@gcov: gcov-report -@ENABLE_RUNTIME_TESTS_TRUE@@GCOV_ENABLED_TRUE@ @cat gcov-reports/summary.txt - -@ENABLE_RUNTIME_TESTS_TRUE@@GCOV_ENABLED_FALSE@gcov-report.txt: -@ENABLE_RUNTIME_TESTS_TRUE@@GCOV_ENABLED_FALSE@ @true - -@ENABLE_RUNTIME_TESTS_TRUE@@GCOV_ENABLED_FALSE@gcov: -@ENABLE_RUNTIME_TESTS_TRUE@@GCOV_ENABLED_FALSE@ @true - -@ENABLE_RUNTIME_TESTS_TRUE@.PHONY: gcov gcov-clean gcov-report - -@ENABLE_STATIC_SYMBOL_LEAKS_TEST_TRUE@static-symbol-leaks: test-static-link test-static-symbols-leak.sh -@ENABLE_STATIC_SYMBOL_LEAKS_TEST_TRUE@ $(AM_V_GEN) $(srcdir)/test-static-symbols-leak.sh $(builddir) - -check-local: $(check_local_deps) - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/test/generate-gcov-report.sh b/test/generate-gcov-report.sh deleted file mode 100755 index ff27845fbdb3c1b12b326fddf8b2137a19334a9e..0000000000000000000000000000000000000000 --- a/test/generate-gcov-report.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash - -set -e - -if [[ $# -lt 2 ]]; then - echo "Usage: ./generate-gcov-report.sh [ ... ]" - exit 1 -fi - -target_dir=$1 -shift -source_dirs=$* - -if [[ "${target_dir:0:1}" != '/' ]]; then - target_dir="$PWD/$target_dir" -fi -summary_file="$target_dir/summary.txt" - -mkdir -p "$target_dir" -rm -f "$target_dir"/*.gcov - -for dir in $source_dirs; do - pushd "$dir" > /dev/null - for file in *.c; do - find ./ -name "*${file/\.c/.gcda}" -exec gcov {} \; > /dev/null - done - find ./ -name "*.gcov" \! -path "*/`basename "$target_dir"`/*" -exec mv {} "$target_dir" \; - popd > /dev/null -done - -echo "========== coverage report ========" > "$summary_file" -for file in "$target_dir"/*.gcov; do - total=`grep -v " -:" "$file" | wc -l` - missing=`grep "#####" "$file" | wc -l` - hit=$((total - missing)); - percent=$((($hit * 100)/$total)) - fname=`basename "$file"` - printf "%-32s total lines: %4s not tested: %4s (%3s%%)\n" "$fname" "$total" "$missing" "$percent">> "$summary_file" -done -echo "========== =============== ========" >> "$summary_file" diff --git a/test/test-common-uinput.c b/test/test-common-uinput.c deleted file mode 100644 index 886b23b90929e2a828e9ce066d87cacb906fdc3e..0000000000000000000000000000000000000000 --- a/test/test-common-uinput.c +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Copyright © 2013 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "test-common-uinput.h" - -#define SYS_INPUT_DIR "/sys/class/input" -#define DEV_INPUT_DIR "/dev/input/" - -struct uinput_device -{ - struct libevdev *d; /* lazy, it has all the accessors */ - struct libevdev_uinput *uidev; - int dev_fd; /* open fd to the devnode */ - int uinput_fd; -}; - -struct uinput_device* -uinput_device_new(const char *name) -{ - struct uinput_device *dev; - - dev = calloc(1, sizeof(*dev)); - if (!dev) - return NULL; - - dev->d = libevdev_new(); - dev->dev_fd = -1; - dev->uinput_fd = -1; - - if (name) - libevdev_set_name(dev->d, name); - - return dev; -} - -int -uinput_device_new_with_events_v(struct uinput_device **d, const char *name, const struct input_id *id, va_list args) -{ - int rc; - struct uinput_device *dev; - - dev = uinput_device_new(name); - if (!dev) - return -ENOMEM; - if (id != DEFAULT_IDS) - uinput_device_set_ids(dev, id); - - rc = uinput_device_set_event_bits_v(dev, args); - - if (rc == 0) - rc = uinput_device_create(dev); - - if (rc != 0) { - uinput_device_free(dev); - dev = NULL; - } else - *d = dev; - - return rc; -} - -int -uinput_device_new_with_events(struct uinput_device **d, const char *name, const struct input_id *id, ...) -{ - int rc; - va_list args; - - va_start(args, id); - rc = uinput_device_new_with_events_v(d, name, id, args); - va_end(args); - - return rc; -} - -void -uinput_device_free(struct uinput_device *dev) -{ - if (!dev) - return; - - if (dev->uinput_fd != -1) { - (void)ioctl(dev->uinput_fd, UI_DEV_DESTROY, NULL); - close(dev->uinput_fd); - } - if (dev->dev_fd != -1) - close(dev->dev_fd); - libevdev_free(dev->d); - libevdev_uinput_destroy(dev->uidev); - free(dev); -} - -int -uinput_device_get_fd(const struct uinput_device *dev) -{ - return dev->dev_fd; -} - -const char* -uinput_device_get_devnode(const struct uinput_device *dev) -{ - return libevdev_uinput_get_devnode(dev->uidev); -} - -int -uinput_device_create(struct uinput_device* d) -{ - int rc; - int fd; - const char *devnode; - - fd = open("/dev/uinput", O_RDWR); - if (fd < 0) - goto error; - - d->uinput_fd = fd; - - rc = libevdev_uinput_create_from_device(d->d, fd, &d->uidev); - if (rc != 0) - goto error; - - devnode = libevdev_uinput_get_devnode(d->uidev); - if (devnode == NULL) - goto error; - - d->dev_fd = open(devnode, O_RDWR); - if (d->dev_fd == -1) - goto error; - - /* write abs resolution now */ - if (libevdev_has_event_type(d->d, EV_ABS)) { - int code; - for (code = 0; code < ABS_CNT; code++) { - const struct input_absinfo *abs; - - /* can't change slots */ - if (code == ABS_MT_SLOT) - continue; - - abs = libevdev_get_abs_info(d->d, code); - if (!abs) - continue; - - rc = ioctl(d->dev_fd, EVIOCSABS(code), abs); - if (rc < 0) { - printf("error %s for code %d\n", strerror(-rc), code); - goto error; - } - } - } - - return 0; - -error: - if (d->dev_fd != -1) - close(d->dev_fd); - if (d->uinput_fd != -1) - close(d->uinput_fd); - return -errno; - -} - -int uinput_device_set_name(struct uinput_device *dev, const char *name) -{ - libevdev_set_name(dev->d, name); - return 0; -} - -int uinput_device_set_ids(struct uinput_device *dev, const struct input_id *ids) -{ - libevdev_set_id_product(dev->d, ids->product); - libevdev_set_id_vendor(dev->d, ids->vendor); - libevdev_set_id_bustype(dev->d, ids->bustype); - libevdev_set_id_version(dev->d, ids->version); - return 0; -} - -int -uinput_device_set_bit(struct uinput_device* dev, unsigned int bit) -{ - return libevdev_enable_event_type(dev->d, bit); -} - -int -uinput_device_set_prop(struct uinput_device *dev, unsigned int prop) -{ - return libevdev_enable_property(dev->d, prop); -} - -int -uinput_device_set_event_bit(struct uinput_device* dev, unsigned int type, unsigned int code) -{ - return libevdev_enable_event_code(dev->d, type, code, NULL); -} - -int -uinput_device_set_event_bits_v(struct uinput_device *dev, va_list args) -{ - int type, code; - int rc = 0; - - do { - type = va_arg(args, int); - if (type == -1) - break; - code = va_arg(args, int); - if (code == -1) - break; - rc = libevdev_enable_event_code(dev->d, type, code, NULL); - } while (rc == 0); - - return rc; -} - -int -uinput_device_set_event_bits(struct uinput_device *dev, ...) -{ - int rc; - va_list args; - va_start(args, dev); - rc = uinput_device_set_event_bits_v(dev, args); - va_end(args); - - return rc; -} - -int -uinput_device_set_abs_bit(struct uinput_device* dev, unsigned int code, const struct input_absinfo *absinfo) -{ - return libevdev_enable_event_code(dev->d, EV_ABS, code, absinfo); -} - -int -uinput_device_event(const struct uinput_device *dev, unsigned int type, unsigned int code, int value) -{ - return libevdev_uinput_write_event(dev->uidev, type, code, value); -} - -int uinput_device_event_multiple_v(const struct uinput_device* dev, va_list args) -{ - int type, code, value; - int rc = 0; - - do { - type = va_arg(args, int); - if (type == -1) - break; - code = va_arg(args, int); - if (code == -1) - break; - value = va_arg(args, int); - rc = uinput_device_event(dev, type, code, value); - } while (rc == 0); - - return rc; -} - -int uinput_device_event_multiple(const struct uinput_device* dev, ...) -{ - int rc; - va_list args; - va_start(args, dev); - rc = uinput_device_event_multiple_v(dev, args); - va_end(args); - return rc; -} diff --git a/test/test-common-uinput.h b/test/test-common-uinput.h deleted file mode 100644 index 084af6ce1389d20fbd0fb8f40543a2fb5cc14731..0000000000000000000000000000000000000000 --- a/test/test-common-uinput.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright © 2013 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include - -#define DEFAULT_IDS NULL - -struct uinput_device* uinput_device_new(const char *name); -int uinput_device_new_with_events(struct uinput_device **dev, const char *name, const struct input_id *ids, ...); -int uinput_device_new_with_events_v(struct uinput_device **dev, const char *name, const struct input_id *ids, va_list args); -void uinput_device_free(struct uinput_device *dev); - -int uinput_device_create(struct uinput_device* dev); -int uinput_device_set_name(struct uinput_device* dev, const char *name); -int uinput_device_set_ids(struct uinput_device* dev, const struct input_id *ids); -int uinput_device_set_bit(struct uinput_device* dev, unsigned int bit); -int uinput_device_set_prop(struct uinput_device *dev, unsigned int prop); -int uinput_device_set_event_bit(struct uinput_device* dev, unsigned int type, unsigned int code); -int uinput_device_set_event_bits(struct uinput_device* dev, ...); -int uinput_device_set_event_bits_v(struct uinput_device* dev, va_list args); -int uinput_device_set_abs_bit(struct uinput_device* dev, unsigned int code, const struct input_absinfo *absinfo); -int uinput_device_event(const struct uinput_device* dev, unsigned int type, unsigned int code, int value); -int uinput_device_event_multiple(const struct uinput_device* dev, ...); -int uinput_device_event_multiple_v(const struct uinput_device* dev, va_list args); -int uinput_device_get_fd(const struct uinput_device *dev); -const char* uinput_device_get_devnode(const struct uinput_device *dev); - -char *uinput_devnode_from_syspath(const char *syspath); diff --git a/test/test-common.c b/test/test-common.c deleted file mode 100644 index 54d5767e75c23d458eec5d98e21dd6f9b4b467ba..0000000000000000000000000000000000000000 --- a/test/test-common.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright © 2013 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include -#include -#include -#include - -#include "test-common.h" - -void test_logfunc_abort_on_error(enum libevdev_log_priority priority, - void *data, - const char *file, int line, - const char *func, - const char *format, va_list args) -{ - vprintf(format, args); - ck_abort(); -} - -void test_logfunc_ignore_error(enum libevdev_log_priority priority, - void *data, - const char *file, int line, - const char *func, - const char *format, va_list args) -{ -} - -void test_create_device(struct uinput_device **uidev_return, - struct libevdev **dev_return, - ...) -{ - int rc, fd; - struct uinput_device *uidev; - struct libevdev *dev; - va_list args; - - va_start(args, dev_return); - - rc = uinput_device_new_with_events_v(&uidev, TEST_DEVICE_NAME, DEFAULT_IDS, args); - va_end(args); - - ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc)); - - fd = uinput_device_get_fd(uidev); - - rc = libevdev_new_from_fd(fd, &dev); - ck_assert_msg(rc == 0, "Failed to init device device: %s", strerror(-rc)); - rc = fcntl(fd, F_SETFL, O_NONBLOCK); - ck_assert_msg(rc == 0, "fcntl failed: %s", strerror(errno)); - - *uidev_return = uidev; - *dev_return = dev; -} - -void test_create_abs_device(struct uinput_device **uidev_return, - struct libevdev **dev_return, - int nabs, - const struct input_absinfo *abs, - ...) -{ - int rc, fd; - struct uinput_device *uidev; - struct libevdev *dev; - va_list args; - - uidev = uinput_device_new(TEST_DEVICE_NAME); - ck_assert(uidev != NULL); - - va_start(args, abs); - rc = uinput_device_set_event_bits_v(uidev, args); - ck_assert_msg(rc == 0, "Failed to set uinput bits"); - va_end(args); - - while (--nabs >= 0) { - int code; - struct input_absinfo a; - - code = abs[nabs].value; - a = abs[nabs]; - a.value = 0; - - rc = uinput_device_set_abs_bit(uidev, code, &a); - ck_assert_msg(rc == 0, "for abs field %d\n", nabs); - } - - rc = uinput_device_create(uidev); - ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc)); - - fd = uinput_device_get_fd(uidev); - - rc = libevdev_new_from_fd(fd, &dev); - ck_assert_msg(rc == 0, "Failed to init device device: %s", strerror(-rc)); - rc = fcntl(fd, F_SETFL, O_NONBLOCK); - ck_assert_msg(rc == 0, "fcntl failed: %s", strerror(errno)); - - *uidev_return = uidev; - *dev_return = dev; -} diff --git a/test/test-common.h b/test/test-common.h deleted file mode 100644 index 0b5c52404274092629c0611e0a25c324580e4133..0000000000000000000000000000000000000000 --- a/test/test-common.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright © 2013 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include -#include -#include - -#include - -#ifndef _TEST_COMMON_H_ -#define _TEST_COMMON_H_ - -struct libevdev_test { - const char *name; - Suite* (*setup)(void); - bool needs_root_privileges; -} __attribute__((aligned(16))); - -#define _TEST_SUITE(name, root_privs) \ - static Suite* (name##_setup)(void); \ - static const struct libevdev_test _test \ - __attribute__((used)) \ - __attribute__((section ("test_section"))) = { \ - #name, name##_setup, root_privs \ - }; \ - static Suite* (name##_setup)(void) - -#define TEST_SUITE(name) \ - _TEST_SUITE(name, false) - -#define TEST_SUITE_ROOT_PRIVILEGES(name) \ - _TEST_SUITE(name, true) - -#define TEST_DEVICE_NAME "libevdev test device" - -#define add_test(suite, func) do { \ - TCase *tc = tcase_create(#func); \ - tcase_add_test(tc, func); \ - suite_add_tcase(suite, tc); \ -} while(0) - -#include "test-common-uinput.h" - -#define assert_event(e_, t, c, v) \ -do { \ - const struct input_event *e = (e_); \ - ck_assert_int_eq(e->type, (t)); \ - ck_assert_int_eq(e->code, (c)); \ - ck_assert_int_eq(e->value, (v)); \ -} while(0) - -void test_create_device(struct uinput_device **uidev, - struct libevdev **dev, - ...); -void test_create_abs_device(struct uinput_device **uidev, - struct libevdev **dev, - int nabs, - const struct input_absinfo *abs, - ...); - -void test_logfunc_abort_on_error(enum libevdev_log_priority priority, - void *data, - const char *file, int line, - const char *func, - const char *format, va_list args); -void test_logfunc_ignore_error(enum libevdev_log_priority priority, - void *data, - const char *file, int line, - const char *func, - const char *format, va_list args); - -static inline void -print_event(const struct input_event *ev) -{ - if (ev->type == EV_SYN) - printf("Event: time %ld.%06ld, ++++++++++++++++++++ %s +++++++++++++++\n", - ev->input_event_sec, - ev->input_event_usec, - libevdev_event_type_get_name(ev->type)); - else - printf("Event: time %ld.%06ld, type %d (%s), code %d (%s), value %d\n", - ev->input_event_sec, - ev->input_event_usec, - ev->type, - libevdev_event_type_get_name(ev->type), - ev->code, - libevdev_event_code_get_name(ev->type, ev->code), - ev->value); -} -#endif /* _TEST_COMMON_H_ */ diff --git a/test/test-compile-pedantic.c b/test/test-compile-pedantic.c deleted file mode 100644 index 6faea86b0cc798f20d5844a2e61cc3fff63382eb..0000000000000000000000000000000000000000 --- a/test/test-compile-pedantic.c +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include - -int main(void) { - return 0; -} diff --git a/test/test-context.c b/test/test-context.c deleted file mode 100644 index 7c45a0d88b3fe06cb47911f00a098ffe13af3d10..0000000000000000000000000000000000000000 --- a/test/test-context.c +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright © 2019 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include "test-common.h" - -START_TEST(test_info) -{ - struct libevdev *d = libevdev_new(); - - libevdev_set_name(d, "some name"); - ck_assert_str_eq(libevdev_get_name(d), "some name"); - libevdev_set_phys(d, "physical"); - ck_assert_str_eq(libevdev_get_phys(d), "physical"); - libevdev_set_uniq(d, "very unique"); - ck_assert_str_eq(libevdev_get_uniq(d), "very unique"); - - libevdev_set_id_bustype(d, 1); - libevdev_set_id_vendor(d, 2); - libevdev_set_id_product(d, 3); - libevdev_set_id_version(d, 4); - ck_assert_int_eq(libevdev_get_id_bustype(d), 1); - ck_assert_int_eq(libevdev_get_id_vendor(d), 2); - ck_assert_int_eq(libevdev_get_id_product(d), 3); - ck_assert_int_eq(libevdev_get_id_version(d), 4); - - libevdev_free(d); -} -END_TEST - -START_TEST(test_properties) -{ - for (unsigned prop = 0; prop < INPUT_PROP_CNT; prop++) { - struct libevdev *d = libevdev_new(); - - ck_assert(!libevdev_has_property(d, prop)); - libevdev_enable_property(d, prop); - ck_assert(libevdev_has_property(d, prop)); - libevdev_free(d); - } -} -END_TEST - -START_TEST(test_bits) -{ - for (unsigned type = 1; type < EV_CNT; type++) { - unsigned max = libevdev_event_type_get_max(type); - - if((int)max == -1) - continue; - - for (unsigned code = 0; code <= max; code++) { - struct libevdev *d = libevdev_new(); - const struct input_absinfo abs = { - .minimum = 10, - .maximum = 20, - .fuzz = 30, - .flat = 40, - .resolution = 50, - }; - const void *data = NULL; - - if (type == EV_ABS || type == EV_REP) - data = &abs; - - ck_assert(!libevdev_has_event_code(d, type, code)); - libevdev_enable_event_code(d, type, code, data); - ck_assert(libevdev_has_event_code(d, type, code)); - libevdev_free(d); - } - } -} -END_TEST - -START_TEST(test_mt_slots_enable_disable) -{ - struct libevdev *d = libevdev_new(); - struct input_absinfo abs = {0}; - - abs.maximum = 5; - libevdev_enable_event_code(d, EV_ABS, ABS_MT_SLOT, &abs); - ck_assert(libevdev_has_event_code(d, EV_ABS, ABS_MT_SLOT)); - ck_assert_int_eq(libevdev_get_num_slots(d), 6); - - libevdev_disable_event_code(d, EV_ABS, ABS_MT_SLOT); - ck_assert(!libevdev_has_event_code(d, EV_ABS, ABS_MT_SLOT)); - ck_assert_int_eq(libevdev_get_num_slots(d), -1); - - abs.maximum = 2; - libevdev_enable_event_code(d, EV_ABS, ABS_MT_SLOT, &abs); - ck_assert(libevdev_has_event_code(d, EV_ABS, ABS_MT_SLOT)); - ck_assert_int_eq(libevdev_get_num_slots(d), 3); - - libevdev_free(d); -} -END_TEST - -START_TEST(test_mt_slots_increase_decrease) -{ - struct libevdev *d = libevdev_new(); - struct input_absinfo abs = {0}; - - abs.maximum = 5; - libevdev_enable_event_code(d, EV_ABS, ABS_MT_SLOT, &abs); - ck_assert(libevdev_has_event_code(d, EV_ABS, ABS_MT_SLOT)); - ck_assert_int_eq(libevdev_get_num_slots(d), 6); - - abs.maximum = 2; - libevdev_enable_event_code(d, EV_ABS, ABS_MT_SLOT, &abs); - ck_assert(libevdev_has_event_code(d, EV_ABS, ABS_MT_SLOT)); - ck_assert_int_eq(libevdev_get_num_slots(d), 3); - - abs.maximum = 6; - libevdev_enable_event_code(d, EV_ABS, ABS_MT_SLOT, &abs); - ck_assert(libevdev_has_event_code(d, EV_ABS, ABS_MT_SLOT)); - ck_assert_int_eq(libevdev_get_num_slots(d), 7); - - abs.maximum = 10; - libevdev_enable_event_code(d, EV_ABS, ABS_MT_SLOT, &abs); - ck_assert(libevdev_has_event_code(d, EV_ABS, ABS_MT_SLOT)); - ck_assert_int_eq(libevdev_get_num_slots(d), 11); - - libevdev_free(d); -} -END_TEST - -START_TEST(test_mt_tracking_id) -{ - struct libevdev *d = libevdev_new(); - struct input_absinfo abs = { .maximum = 5 }; - - libevdev_enable_event_code(d, EV_ABS, ABS_MT_SLOT, &abs); - - /* Not yet enabled, so 0. This is technically undefined */ - for (int slot = 0; slot < 5; slot++) - ck_assert_int_eq(libevdev_get_slot_value(d, 0, ABS_MT_TRACKING_ID), 0); - - libevdev_enable_event_code(d, EV_ABS, ABS_MT_TRACKING_ID, &abs); - - for (int slot = 0; slot < 5; slot++) - ck_assert_int_eq(libevdev_get_slot_value(d, 0, ABS_MT_TRACKING_ID), -1); - - libevdev_free(d); -} -END_TEST - -TEST_SUITE(event_name_suite) -{ - Suite *s = suite_create("Context manipulation"); - - add_test(s, test_info); - add_test(s, test_properties); - add_test(s, test_bits); - add_test(s, test_mt_slots_enable_disable); - add_test(s, test_mt_slots_increase_decrease); - add_test(s, test_mt_tracking_id); - - return s; -} diff --git a/test/test-event-codes.c b/test/test-event-codes.c deleted file mode 100644 index 485f406de2be57188331bcf74a71cab2a5f80a8f..0000000000000000000000000000000000000000 --- a/test/test-event-codes.c +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Copyright © 2013 David Herrmann - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include "test-common.h" - -START_TEST(test_type_names) -{ - ck_assert_int_eq(libevdev_event_type_from_name("EV_SYN"), EV_SYN); - ck_assert_int_eq(libevdev_event_type_from_name("EV_KEY"), EV_KEY); - ck_assert_int_eq(libevdev_event_type_from_name("EV_REL"), EV_REL); - ck_assert_int_eq(libevdev_event_type_from_name("EV_ABS"), EV_ABS); - ck_assert_int_eq(libevdev_event_type_from_name("EV_MSC"), EV_MSC); - ck_assert_int_eq(libevdev_event_type_from_name("EV_SND"), EV_SND); - ck_assert_int_eq(libevdev_event_type_from_name("EV_SW"), EV_SW); - ck_assert_int_eq(libevdev_event_type_from_name("EV_LED"), EV_LED); - ck_assert_int_eq(libevdev_event_type_from_name("EV_REP"), EV_REP); - ck_assert_int_eq(libevdev_event_type_from_name("EV_FF"), EV_FF); - ck_assert_int_eq(libevdev_event_type_from_name("EV_FF_STATUS"), EV_FF_STATUS); - ck_assert_int_eq(libevdev_event_type_from_name("EV_MAX"), EV_MAX); - - ck_assert_int_eq(libevdev_event_type_from_name_n("EV_SYNTAX", 6), EV_SYN); - ck_assert_int_eq(libevdev_event_type_from_name_n("EV_REPTILE", 6), EV_REP); -} -END_TEST - -START_TEST(test_type_names_invalid) -{ - ck_assert_int_eq(libevdev_event_type_from_name("EV_Syn"), -1); - ck_assert_int_eq(libevdev_event_type_from_name("ev_SYN"), -1); - ck_assert_int_eq(libevdev_event_type_from_name("SYN"), -1); - ck_assert_int_eq(libevdev_event_type_from_name("EV_SYNTAX"), -1); - - ck_assert_int_eq(libevdev_event_type_from_name_n("EV_SYN", 5), -1); - ck_assert_int_eq(libevdev_event_type_from_name_n("EV_REPTILE", 7), -1); -} -END_TEST - -START_TEST(test_type_name_lookup) -{ - ck_assert_int_eq(libevdev_event_type_from_code_name("SYN_REPORT"), EV_SYN); - ck_assert_int_eq(libevdev_event_type_from_code_name("KEY_A"), EV_KEY); - ck_assert_int_eq(libevdev_event_type_from_code_name("REL_Z"), EV_REL); - ck_assert_int_eq(libevdev_event_type_from_code_name("ABS_Z"), EV_ABS); - ck_assert_int_eq(libevdev_event_type_from_code_name("MSC_SERIAL"), EV_MSC); - ck_assert_int_eq(libevdev_event_type_from_code_name("SND_TONE"), EV_SND); - ck_assert_int_eq(libevdev_event_type_from_code_name("SW_TABLET_MODE"), EV_SW); - ck_assert_int_eq(libevdev_event_type_from_code_name("LED_CHARGING"), EV_LED); - ck_assert_int_eq(libevdev_event_type_from_code_name("REP_PERIOD"), EV_REP); - ck_assert_int_eq(libevdev_event_type_from_code_name("FF_SPRING"), EV_FF); - ck_assert_int_eq(libevdev_event_type_from_code_name("FF_STATUS_STOPPED"), EV_FF_STATUS); - - ck_assert_int_eq(libevdev_event_type_from_code_name_n("KEY_1zzzzz", 5), EV_KEY); - ck_assert_int_eq(libevdev_event_type_from_code_name_n("ABS_Zooom", 5), EV_ABS); - - ck_assert_int_eq(libevdev_event_type_from_code_name("KEY_MAX"), EV_KEY); - ck_assert_int_eq(libevdev_event_type_from_code_name("REL_MAX"), EV_REL); - ck_assert_int_eq(libevdev_event_type_from_code_name("ABS_MAX"), EV_ABS); -} -END_TEST - -START_TEST(test_type_name_lookup_invalid) -{ - ck_assert_int_eq(libevdev_event_type_from_name("SYN_REPORTED"), -1); - ck_assert_int_eq(libevdev_event_type_from_name("syn_blah"), -1); - ck_assert_int_eq(libevdev_event_type_from_name("SYN_"), -1); - ck_assert_int_eq(libevdev_event_type_from_name("KEY_BANANA"), -1); - - ck_assert_int_eq(libevdev_event_type_from_name_n("KEY_BA", 6), -1); - ck_assert_int_eq(libevdev_event_type_from_name_n("KEY_BLAH", 8), -1); -} -END_TEST - -START_TEST(test_code_names) -{ - ck_assert_int_eq(libevdev_event_code_from_name(EV_SYN, "SYN_REPORT"), SYN_REPORT); - ck_assert_int_eq(libevdev_event_code_from_name(EV_ABS, "ABS_X"), ABS_X); - ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "BTN_A"), BTN_A); - ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "KEY_A"), KEY_A); - ck_assert_int_eq(libevdev_event_code_from_name(EV_REL, "REL_X"), REL_X); - ck_assert_int_eq(libevdev_event_code_from_name(EV_MSC, "MSC_RAW"), MSC_RAW); - ck_assert_int_eq(libevdev_event_code_from_name(EV_LED, "LED_KANA"), LED_KANA); - ck_assert_int_eq(libevdev_event_code_from_name(EV_SND, "SND_BELL"), SND_BELL); - ck_assert_int_eq(libevdev_event_code_from_name(EV_REP, "REP_DELAY"), REP_DELAY); - ck_assert_int_eq(libevdev_event_code_from_name(EV_SYN, "SYN_DROPPED"), SYN_DROPPED); - ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "KEY_RESERVED"), KEY_RESERVED); - ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "BTN_0"), BTN_0); - ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "KEY_0"), KEY_0); - ck_assert_int_eq(libevdev_event_code_from_name(EV_FF, "FF_GAIN"), FF_GAIN); - ck_assert_int_eq(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS_MAX"), FF_STATUS_MAX); - ck_assert_int_eq(libevdev_event_code_from_name(EV_SW, "SW_PEN_INSERTED"), SW_PEN_INSERTED); - - ck_assert_int_eq(libevdev_event_code_from_name_n(EV_ABS, "ABS_YXZ", 5), ABS_Y); -} -END_TEST - -START_TEST(test_code_name_lookup) -{ - /* Same as test_code_names() but without the type */ - ck_assert_int_eq(libevdev_event_code_from_code_name("SYN_REPORT"), SYN_REPORT); - ck_assert_int_eq(libevdev_event_code_from_code_name("ABS_X"), ABS_X); - ck_assert_int_eq(libevdev_event_code_from_code_name("BTN_A"), BTN_A); - ck_assert_int_eq(libevdev_event_code_from_code_name("KEY_A"), KEY_A); - ck_assert_int_eq(libevdev_event_code_from_code_name("REL_X"), REL_X); - ck_assert_int_eq(libevdev_event_code_from_code_name("MSC_RAW"), MSC_RAW); - ck_assert_int_eq(libevdev_event_code_from_code_name("LED_KANA"), LED_KANA); - ck_assert_int_eq(libevdev_event_code_from_code_name("SND_BELL"), SND_BELL); - ck_assert_int_eq(libevdev_event_code_from_code_name("REP_DELAY"), REP_DELAY); - ck_assert_int_eq(libevdev_event_code_from_code_name("SYN_DROPPED"), SYN_DROPPED); - ck_assert_int_eq(libevdev_event_code_from_code_name("KEY_RESERVED"), KEY_RESERVED); - ck_assert_int_eq(libevdev_event_code_from_code_name("BTN_0"), BTN_0); - ck_assert_int_eq(libevdev_event_code_from_code_name("KEY_0"), KEY_0); - ck_assert_int_eq(libevdev_event_code_from_code_name("FF_GAIN"), FF_GAIN); - ck_assert_int_eq(libevdev_event_code_from_code_name("FF_STATUS_MAX"), FF_STATUS_MAX); - ck_assert_int_eq(libevdev_event_code_from_code_name("SW_PEN_INSERTED"), SW_PEN_INSERTED); - - ck_assert_int_eq(libevdev_event_code_from_code_name_n("ABS_YXZ", 5), ABS_Y); -} -END_TEST - -START_TEST(test_code_names_invalid) -{ - ck_assert_int_eq(libevdev_event_code_from_name(EV_MAX, "MAX_FAKE"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_CNT, "CNT_FAKE"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_PWR, "PWR_SOMETHING"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_ABS, "EV_ABS"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_ABS, "ABS_XY"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "BTN_GAMEPAD"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "BUS_PCI"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_FF_STATUS, "FF_STATUS_"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_FF, "FF_STATUS"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_FF, "FF_STATUS_"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "ID_BUS"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_SND, "SND_CNT"), -1); - ck_assert_int_eq(libevdev_event_code_from_name(EV_SW, "SW_CNT"), -1); - - ck_assert_int_eq(libevdev_event_code_from_name_n(EV_ABS, "ABS_X", 4), -1); -} -END_TEST - -START_TEST(test_code_name_lookup_invalid) -{ - /* Same as test_code_names_invalid() but without the type */ - ck_assert_int_eq(libevdev_event_code_from_code_name("MAX_FAKE"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("CNT_FAKE"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("PWR_SOMETHING"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("EV_ABS"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("ABS_XY"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("BTN_GAMEPAD"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("BUS_PCI"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("FF_STATUS"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("FF_STATUS_"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("FF_STATUS"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("FF_STATUS_"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("ID_BUS"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("SND_CNT"), -1); - ck_assert_int_eq(libevdev_event_code_from_code_name("SW_CNT"), -1); - - ck_assert_int_eq(libevdev_event_code_from_code_name_n("ABS_X", 4), -1); -} -END_TEST - -START_TEST(test_code_names_max) -{ - ck_assert_int_eq(libevdev_event_code_from_name(EV_SYN, "SYN_MAX"), SYN_MAX); - ck_assert_int_eq(libevdev_event_code_from_name(EV_KEY, "KEY_MAX"), KEY_MAX); - ck_assert_int_eq(libevdev_event_code_from_name(EV_REL, "REL_MAX"), REL_MAX); - ck_assert_int_eq(libevdev_event_code_from_name(EV_ABS, "ABS_MAX"), ABS_MAX); - ck_assert_int_eq(libevdev_event_code_from_name(EV_MSC, "MSC_MAX"), MSC_MAX); - ck_assert_int_eq(libevdev_event_code_from_name(EV_SW, "SW_MAX"), SW_MAX); - ck_assert_int_eq(libevdev_event_code_from_name(EV_LED, "LED_MAX"), LED_MAX); - ck_assert_int_eq(libevdev_event_code_from_name(EV_SND, "SND_MAX"), SND_MAX); - ck_assert_int_eq(libevdev_event_code_from_name(EV_REP, "REP_MAX"), REP_MAX); - ck_assert_int_eq(libevdev_event_code_from_name(EV_FF, "FF_MAX"), FF_MAX); - - ck_assert_int_eq(libevdev_event_code_from_code_name("SYN_MAX"), SYN_MAX); - ck_assert_int_eq(libevdev_event_code_from_code_name("KEY_MAX"), KEY_MAX); - ck_assert_int_eq(libevdev_event_code_from_code_name("REL_MAX"), REL_MAX); - ck_assert_int_eq(libevdev_event_code_from_code_name("ABS_MAX"), ABS_MAX); - ck_assert_int_eq(libevdev_event_code_from_code_name("MSC_MAX"), MSC_MAX); - ck_assert_int_eq(libevdev_event_code_from_code_name("SW_MAX"), SW_MAX); - ck_assert_int_eq(libevdev_event_code_from_code_name("LED_MAX"), LED_MAX); - ck_assert_int_eq(libevdev_event_code_from_code_name("SND_MAX"), SND_MAX); - ck_assert_int_eq(libevdev_event_code_from_code_name("REP_MAX"), REP_MAX); - ck_assert_int_eq(libevdev_event_code_from_code_name("FF_MAX"), FF_MAX); -} -END_TEST - -START_TEST(test_value_names) -{ - ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "MT_TOOL_PALM"), MT_TOOL_PALM); - ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "MT_TOOL_FINGER"), MT_TOOL_FINGER); - ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "MT_TOOL_PEN"), MT_TOOL_PEN); - ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "MT_TOOL_MAX"), MT_TOOL_MAX); -} -END_TEST - -START_TEST(test_value_names_invalid) -{ - ck_assert_int_eq(libevdev_event_value_from_name(EV_SYN, REL_X, "MT_TOOL_PALM"), -1); - ck_assert_int_eq(libevdev_event_value_from_name(EV_REL, REL_X, "MT_TOOL_PALM"), -1); - ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_X, "MT_TOOL_PALM"), -1); - ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "MT_TOOL_"), -1); - ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "MT_TOOL_PALMA"), -1); - ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, ""), -1); - ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "EV_ABS"), -1); - ck_assert_int_eq(libevdev_event_value_from_name(EV_ABS, ABS_MT_TOOL_TYPE, "ABS_X"), -1); -} -END_TEST - -START_TEST(test_properties) -{ - struct prop { - int val; - const char *name; - } lut[] = { - { INPUT_PROP_DIRECT, "INPUT_PROP_DIRECT" }, - { INPUT_PROP_POINTER, "INPUT_PROP_POINTER" }, - { INPUT_PROP_MAX, "INPUT_PROP_MAX" }, - { -1, NULL} - }; - struct prop *p = lut; - while (p->val != -1) { - ck_assert_int_eq(libevdev_property_from_name(p->name), p->val); - p++; - } -} -END_TEST - -START_TEST(test_properties_invalid) -{ - ck_assert_int_eq(libevdev_property_from_name("EV_ABS"), -1); - ck_assert_int_eq(libevdev_property_from_name("INPUT_PROP"), -1); - ck_assert_int_eq(libevdev_property_from_name("INPUT_PROP_"), -1); - ck_assert_int_eq(libevdev_property_from_name("INPUT_PROP_FOO"), -1); - - ck_assert_int_eq(libevdev_property_from_name_n("INPUT_PROP_POINTER", 11), -1); - ck_assert_int_eq(libevdev_property_from_name_n("INPUT_PROP_POINTER", - strlen("INPUT_PROP_POINTER") - 1), -1); -} -END_TEST - -TEST_SUITE(event_code_suite) -{ - Suite *s = suite_create("Event codes"); - - add_test(s, test_type_names); - add_test(s, test_type_names_invalid); - add_test(s, test_type_name_lookup); - add_test(s, test_type_name_lookup_invalid); - - add_test(s, test_code_names); - add_test(s, test_code_name_lookup); - add_test(s, test_code_names_invalid); - add_test(s, test_code_name_lookup_invalid); - add_test(s, test_code_names_max); - - add_test(s, test_value_names); - add_test(s, test_value_names_invalid); - - add_test(s, test_properties); - add_test(s, test_properties_invalid); - - return s; -} diff --git a/test/test-event-names.c b/test/test-event-names.c deleted file mode 100644 index bf95f4342f67de063d60cba1669a77a659fad446..0000000000000000000000000000000000000000 --- a/test/test-event-names.c +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright © 2013 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include "test-common.h" - -START_TEST(test_limits) -{ - ck_assert(libevdev_event_type_get_name(EV_MAX + 1) == NULL); - ck_assert(libevdev_event_code_get_name(EV_ABS, ABS_MAX + 1) == NULL); - ck_assert(libevdev_event_code_get_name(EV_REL, REL_MAX + 1) == NULL); - ck_assert(libevdev_event_code_get_name(EV_KEY, KEY_MAX + 1) == NULL); - ck_assert(libevdev_event_code_get_name(EV_LED, LED_MAX + 1) == NULL); - ck_assert(libevdev_event_code_get_name(EV_SW, SW_MAX + 1) == NULL); - ck_assert(libevdev_event_code_get_name(EV_MSC, MSC_MAX + 1) == NULL); - ck_assert(libevdev_event_code_get_name(EV_SND, SND_MAX + 1) == NULL); - ck_assert(libevdev_event_code_get_name(EV_REP, REP_MAX + 1) == NULL); - ck_assert(libevdev_event_code_get_name(EV_FF, FF_MAX + 1) == NULL); - ck_assert(libevdev_event_code_get_name(EV_MAX + 1, 0) == NULL); - ck_assert(libevdev_event_value_get_name(EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_MAX + 1) == NULL); -} -END_TEST - -START_TEST(test_type_name) -{ - ck_assert_str_eq(libevdev_event_type_get_name(EV_SYN), "EV_SYN"); - ck_assert_str_eq(libevdev_event_type_get_name(EV_REL), "EV_REL"); - ck_assert_str_eq(libevdev_event_type_get_name(EV_ABS), "EV_ABS"); - ck_assert_str_eq(libevdev_event_type_get_name(EV_MSC), "EV_MSC"); - ck_assert_str_eq(libevdev_event_type_get_name(EV_SW), "EV_SW"); - ck_assert_str_eq(libevdev_event_type_get_name(EV_LED), "EV_LED"); - ck_assert_str_eq(libevdev_event_type_get_name(EV_SND), "EV_SND"); - ck_assert_str_eq(libevdev_event_type_get_name(EV_REP), "EV_REP"); - ck_assert_str_eq(libevdev_event_type_get_name(EV_FF), "EV_FF"); - ck_assert_str_eq(libevdev_event_type_get_name(EV_PWR), "EV_PWR"); - ck_assert_str_eq(libevdev_event_type_get_name(EV_FF_STATUS), "EV_FF_STATUS"); - ck_assert_str_eq(libevdev_event_type_get_name(EV_MAX), "EV_MAX"); -} -END_TEST - -START_TEST(test_code_abs_name) -{ - /* pick out a few only */ - ck_assert_str_eq(libevdev_event_code_get_name(EV_ABS, ABS_X), "ABS_X"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_ABS, ABS_Y), "ABS_Y"); - - ck_assert_str_eq(libevdev_event_code_get_name(EV_ABS, ABS_MT_SLOT), "ABS_MT_SLOT"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_ABS, ABS_MISC), "ABS_MISC"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_ABS, ABS_MAX), "ABS_MAX"); - - ck_assert(libevdev_event_code_get_name(EV_ABS, ABS_MAX - 1) == NULL); - -} -END_TEST - -START_TEST(test_code_rel_name) -{ - /* pick out a few only */ - ck_assert_str_eq(libevdev_event_code_get_name(EV_REL, REL_X), "REL_X"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_REL, REL_Y), "REL_Y"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_REL, REL_MISC), "REL_MISC"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_REL, REL_MAX), "REL_MAX"); - - ck_assert(libevdev_event_code_get_name(EV_REL, REL_MAX - 1) == NULL); - -} -END_TEST - -START_TEST(test_code_key_name) -{ - /* pick out a few only */ - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, KEY_RESERVED), "KEY_RESERVED"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, KEY_ESC), "KEY_ESC"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, KEY_1), "KEY_1"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, KEY_2), "KEY_2"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, KEY_UNKNOWN), "KEY_UNKNOWN"); - - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_0), "BTN_0"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_LEFT), "BTN_LEFT"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_TRIGGER), "BTN_TRIGGER"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_A), "BTN_SOUTH"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_TOOL_PEN), "BTN_TOOL_PEN"); - - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, KEY_TOUCHPAD_TOGGLE), "KEY_TOUCHPAD_TOGGLE"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_TRIGGER_HAPPY), "BTN_TRIGGER_HAPPY1"); - - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, KEY_MAX), "KEY_MAX"); - ck_assert(libevdev_event_code_get_name(EV_KEY, KEY_MAX - 1) == NULL); - - /* special cases that resolve to something else */ - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, KEY_HANGUEL), "KEY_HANGEUL"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, KEY_SCREENLOCK), "KEY_COFFEE"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_MISC), "BTN_0"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_MOUSE), "BTN_LEFT"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_JOYSTICK), "BTN_TRIGGER"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_GAMEPAD), "BTN_SOUTH"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_DIGI), "BTN_TOOL_PEN"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_WHEEL), "BTN_GEAR_DOWN"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_KEY, BTN_TRIGGER_HAPPY), "BTN_TRIGGER_HAPPY1"); - -} -END_TEST - -START_TEST(test_code_led_name) -{ - /* pick out a few only */ - ck_assert_str_eq(libevdev_event_code_get_name(EV_LED, LED_NUML), "LED_NUML"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_LED, LED_KANA), "LED_KANA"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_LED, LED_MAX), "LED_MAX"); - - ck_assert(libevdev_event_code_get_name(EV_LED, LED_MAX - 1) == NULL); - -} -END_TEST - -START_TEST(test_code_snd_name) -{ - /* pick out a few only */ - ck_assert_str_eq(libevdev_event_code_get_name(EV_SND, SND_CLICK), "SND_CLICK"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_SND, SND_TONE), "SND_TONE"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_SND, SND_MAX), "SND_MAX"); - - ck_assert(libevdev_event_code_get_name(EV_SND, SND_MAX - 1) == NULL); - -} -END_TEST - -START_TEST(test_code_rep_name) -{ - ck_assert_str_eq(libevdev_event_code_get_name(EV_REP, REP_DELAY), "REP_DELAY"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_REP, REP_PERIOD), "REP_PERIOD"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_REP, REP_MAX), "REP_PERIOD"); - -} -END_TEST - -START_TEST(test_code_msc_name) -{ - /* pick out a few only */ - ck_assert_str_eq(libevdev_event_code_get_name(EV_MSC, MSC_SERIAL), "MSC_SERIAL"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_MSC, MSC_RAW), "MSC_RAW"); -#ifdef MSC_TIMESTAMP - ck_assert_str_eq(libevdev_event_code_get_name(EV_MSC, MSC_TIMESTAMP), "MSC_TIMESTAMP"); -#endif - ck_assert_str_eq(libevdev_event_code_get_name(EV_MSC, MSC_MAX), "MSC_MAX"); - - ck_assert(libevdev_event_code_get_name(EV_MSC, MSC_MAX - 1) == NULL); - -} -END_TEST - -START_TEST(test_code_sw_name) -{ - /* pick out a few only */ - ck_assert_str_eq(libevdev_event_code_get_name(EV_SW, SW_LID), "SW_LID"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_SW, SW_RFKILL_ALL), "SW_RFKILL_ALL"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_SW, SW_LINEIN_INSERT), "SW_LINEIN_INSERT"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_SW, SW_PEN_INSERTED), "SW_PEN_INSERTED"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_SW, SW_MAX), "SW_MACHINE_COVER"); -} -END_TEST - -START_TEST(test_code_ff_name) -{ - /* pick out a few only */ - ck_assert_str_eq(libevdev_event_code_get_name(EV_FF, FF_STATUS_STOPPED), "FF_STATUS_STOPPED"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_FF, FF_FRICTION), "FF_FRICTION"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_FF, FF_CUSTOM), "FF_CUSTOM"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_FF, FF_MAX), "FF_MAX"); - - ck_assert(libevdev_event_code_get_name(EV_FF, FF_MAX - 1) == NULL); - -} -END_TEST - -START_TEST(test_code_syn_name) -{ - ck_assert_str_eq(libevdev_event_code_get_name(EV_SYN, SYN_REPORT), "SYN_REPORT"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_SYN, SYN_CONFIG), "SYN_CONFIG"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_SYN, SYN_MT_REPORT), "SYN_MT_REPORT"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_SYN, SYN_DROPPED), "SYN_DROPPED"); - ck_assert_str_eq(libevdev_event_code_get_name(EV_SYN, SYN_MAX), "SYN_MAX"); -} -END_TEST - -START_TEST(test_value_name) -{ - unsigned int type, code; - int value; - - for (type = 0; type < EV_MAX; type++) { - int max = libevdev_event_type_get_max(type); - - if (max == -1) - continue; - - for (code = 0; code < (unsigned int)max; code++) { - if (type == EV_ABS && code == ABS_MT_TOOL_TYPE) - continue; - - for (value = 0; value < 0xff; value++) { - ck_assert(libevdev_event_value_get_name(type, code, value) == NULL); - } - } - } - - ck_assert_str_eq(libevdev_event_value_get_name(EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_FINGER), "MT_TOOL_FINGER"); - ck_assert_str_eq(libevdev_event_value_get_name(EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_PALM), "MT_TOOL_PALM"); - ck_assert_str_eq(libevdev_event_value_get_name(EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_PEN), "MT_TOOL_PEN"); - ck_assert_str_eq(libevdev_event_value_get_name(EV_ABS, ABS_MT_TOOL_TYPE, MT_TOOL_MAX), "MT_TOOL_MAX"); - ck_assert(libevdev_event_value_get_name(EV_ABS, ABS_MT_TOOL_TYPE, -1) == NULL); -} -END_TEST - -START_TEST(test_prop_name) -{ - ck_assert_str_eq(libevdev_property_get_name(INPUT_PROP_POINTER), "INPUT_PROP_POINTER"); - ck_assert_str_eq(libevdev_property_get_name(INPUT_PROP_DIRECT), "INPUT_PROP_DIRECT"); - ck_assert_str_eq(libevdev_property_get_name(INPUT_PROP_BUTTONPAD), "INPUT_PROP_BUTTONPAD"); - ck_assert_str_eq(libevdev_property_get_name(INPUT_PROP_SEMI_MT), "INPUT_PROP_SEMI_MT"); - ck_assert_str_eq(libevdev_property_get_name(INPUT_PROP_MAX), "INPUT_PROP_MAX"); - - ck_assert(libevdev_property_get_name(INPUT_PROP_MAX - 1) == NULL); - ck_assert(libevdev_property_get_name(INPUT_PROP_MAX + 1) == NULL); -} -END_TEST - -START_TEST(test_event_type_max) -{ - ck_assert_int_eq(libevdev_event_type_get_max(EV_ABS), ABS_MAX); - ck_assert_int_eq(libevdev_event_type_get_max(EV_REL), REL_MAX); - ck_assert_int_eq(libevdev_event_type_get_max(EV_KEY), KEY_MAX); - - ck_assert_int_eq(libevdev_event_type_get_max(EV_MAX - 1), -1); - ck_assert_int_eq(libevdev_event_type_get_max(EV_MAX + 1), -1); - -} -END_TEST - -START_TEST(test_event_type) -{ - struct input_event ev; - int i = 0; - - ev.type = EV_REL; - - ck_assert_int_eq(libevdev_event_is_type(&ev, EV_REL), 1); - for (i = 0; i < EV_CNT; i++) { - if (i == ev.type) - continue; - ck_assert_int_eq(libevdev_event_is_type(&ev, i), 0); - } - ck_assert_int_eq(libevdev_event_is_type(&ev, EV_MAX + 1), 0); -} -END_TEST - -START_TEST(test_event_code) -{ - struct input_event ev; - int i = 0; - - ev.type = EV_REL; - ev.code = REL_Y; - - ck_assert_int_eq(libevdev_event_is_code(&ev, EV_REL, REL_Y), 1); - for (i = 0; i < EV_CNT; i++) { - int j; - if (i == ev.type || i == EV_SYN) - continue; - - for (j = 0; j < libevdev_event_type_get_max(i); i++) { - ck_assert_int_eq(libevdev_event_is_code(&ev, i, j), 0); - } - } - ck_assert_int_eq(libevdev_event_is_code(&ev, EV_MAX + 1, ev.code), 0); - ck_assert_int_eq(libevdev_event_is_code(&ev, EV_REL, REL_MAX + 1), 0); - - ev.type = EV_SYN; - ev.code = SYN_REPORT; - ck_assert_int_eq(libevdev_event_is_code(&ev, EV_SYN, SYN_REPORT), 1); - ck_assert_int_eq(libevdev_event_is_code(&ev, EV_SYN, SYN_DROPPED), 0); -} -END_TEST - -TEST_SUITE(event_name_suite) -{ - Suite *s = suite_create("Event names"); - - add_test(s, test_limits); - add_test(s, test_event_type_max); - - add_test(s, test_type_name); - - add_test(s, test_code_abs_name); - add_test(s, test_code_rel_name); - add_test(s, test_code_key_name); - add_test(s, test_code_led_name); - add_test(s, test_code_snd_name); - add_test(s, test_code_rep_name); - add_test(s, test_code_msc_name); - add_test(s, test_code_sw_name); - add_test(s, test_code_ff_name); - add_test(s, test_code_syn_name); - - add_test(s, test_value_name); - add_test(s, test_prop_name); - - add_test(s, test_event_type); - add_test(s, test_event_code); - - return s; -} diff --git a/test/test-int-queue.c b/test/test-int-queue.c deleted file mode 100644 index 07f5c72151a029f4c0079cfae164aeaa3d74f63d..0000000000000000000000000000000000000000 --- a/test/test-int-queue.c +++ /dev/null @@ -1,355 +0,0 @@ -/* - * Copyright © 2013 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include -#include -#include "test-common.h" - -START_TEST(test_queue_alloc) -{ - struct libevdev dev; - int rc; - - rc = queue_alloc(&dev, 0); - ck_assert_int_eq(rc, -ENOMEM); - - rc = queue_alloc(&dev, 100); - ck_assert_int_eq(rc, 0); - - ck_assert_int_eq(dev.queue_size, 100); - ck_assert_int_eq(dev.queue_next, 0); - - queue_free(&dev); - ck_assert_int_eq(dev.queue_size, 0); - ck_assert_int_eq(dev.queue_next, 0); - -} -END_TEST - -START_TEST(test_queue_sizes) -{ - struct libevdev dev = {0}; - - queue_alloc(&dev, 0); - ck_assert_int_eq(queue_num_elements(&dev), 0); - ck_assert_int_eq(queue_num_free_elements(&dev), 0); - ck_assert_int_eq(queue_size(&dev), 0); - - queue_alloc(&dev, 100); - ck_assert_int_eq(queue_num_elements(&dev), 0); - ck_assert_int_eq(queue_num_free_elements(&dev), 100); - ck_assert_int_eq(queue_size(&dev), 100); - - queue_free(&dev); - - ck_assert_int_eq(queue_num_elements(&dev), 0); - ck_assert_int_eq(queue_num_free_elements(&dev), 0); - ck_assert_int_eq(queue_size(&dev), 0); -} -END_TEST - -START_TEST(test_queue_push) -{ - struct libevdev dev = {0}; - struct input_event *ev; - - queue_alloc(&dev, 0); - ev = queue_push(&dev); - ck_assert(ev == NULL); - - queue_alloc(&dev, 2); - ev = queue_push(&dev); - ck_assert(ev == dev.queue); - ck_assert_int_eq(queue_num_elements(&dev), 1); - ck_assert_int_eq(queue_num_free_elements(&dev), 1); - - ev = queue_push(&dev); - ck_assert(ev == dev.queue + 1); - - ev = queue_push(&dev); - ck_assert(ev == NULL); - - queue_free(&dev); - ev = queue_push(&dev); - ck_assert(ev == NULL); - -} -END_TEST - -START_TEST(test_queue_pop) -{ - struct libevdev dev = {0}; - struct input_event ev, *e, tmp; - int rc; - - queue_alloc(&dev, 0); - rc = queue_pop(&dev, &ev); - ck_assert_int_eq(rc, 1); - - queue_alloc(&dev, 2); - e = queue_push(&dev); - memset(e, 0xab, sizeof(*e)); - ck_assert_int_eq(queue_num_elements(&dev), 1); - ck_assert_int_eq(queue_num_free_elements(&dev), 1); - - rc = queue_pop(&dev, &ev); - ck_assert_int_eq(rc, 0); - memset(&tmp, 0xab, sizeof(tmp)); - rc = memcmp(&tmp, &ev, sizeof(tmp)); - ck_assert_int_eq(rc, 0); - - ck_assert_int_eq(queue_num_elements(&dev), 0); - ck_assert_int_eq(queue_num_free_elements(&dev), 2); - - rc = queue_pop(&dev, &ev); - ck_assert_int_eq(rc, 1); - - queue_free(&dev); -} -END_TEST - -START_TEST(test_queue_peek) -{ - struct libevdev dev = {0}; - struct input_event ev, *e, tmp; - int rc; - - queue_alloc(&dev, 0); - rc = queue_peek(&dev, 0, &ev); - ck_assert_int_eq(rc, 1); - - queue_alloc(&dev, 2); - e = queue_push(&dev); - memset(e, 0xab, sizeof(*e)); - - rc = queue_peek(&dev, 0, &ev); - ck_assert_int_eq(rc, 0); - memset(&tmp, 0xab, sizeof(tmp)); - rc = memcmp(&tmp, &ev, sizeof(tmp)); - ck_assert_int_eq(rc, 0); - - ck_assert_int_eq(queue_num_elements(&dev), 1); - e = queue_push(&dev); - memset(e, 0xbc, sizeof(*e)); - - rc = queue_peek(&dev, 1, &ev); - ck_assert_int_eq(rc, 0); - memset(&tmp, 0xbc, sizeof(tmp)); - rc = memcmp(&tmp, &ev, sizeof(tmp)); - ck_assert_int_eq(rc, 0); - - rc = queue_peek(&dev, 0, &ev); - ck_assert_int_eq(rc, 0); - memset(&tmp, 0xab, sizeof(tmp)); - rc = memcmp(&tmp, &ev, sizeof(tmp)); - ck_assert_int_eq(rc, 0); - - ck_assert_int_eq(queue_num_elements(&dev), 2); - - queue_free(&dev); -} -END_TEST - -START_TEST(test_queue_shift) -{ - struct libevdev dev = {0}; - struct input_event ev, *first, *second, e1, e2; - int rc; - - ck_assert_int_eq(queue_shift(&dev, &ev), 1); - - queue_alloc(&dev, 10); - ck_assert_int_eq(queue_shift(&dev, &ev), 1); - - first = queue_push(&dev); - ck_assert(first != NULL); - memset(first, 0xab, sizeof(*first)); - - e1 = *first; - - second = queue_push(&dev); - ck_assert(second != NULL); - memset(second, 0x12, sizeof(*second)); - - e2 = *second; - - rc = queue_shift(&dev, &ev); - ck_assert_int_eq(rc, 0); - rc = memcmp(&ev, &e1, sizeof(ev)); - ck_assert_int_eq(rc, 0); - - rc = queue_shift(&dev, &ev); - ck_assert_int_eq(rc, 0); - rc = memcmp(&ev, &e2, sizeof(ev)); - ck_assert_int_eq(rc, 0); - - ck_assert_int_eq(queue_shift(&dev, &ev), 1); - - queue_free(&dev); -} -END_TEST - -START_TEST(test_queue_shift_multiple) -{ - struct libevdev dev = {0}; - struct input_event ev, *first, *second, e1, e2; - struct input_event events[5]; - int rc; - - ck_assert_int_eq(queue_shift_multiple(&dev, 1, &ev), 0); - ck_assert_int_eq(queue_shift_multiple(&dev, 0, &ev), 0); - - queue_alloc(&dev, 10); - ck_assert_int_eq(queue_shift_multiple(&dev, 1, &ev), 0); - ck_assert_int_eq(queue_shift_multiple(&dev, 0, &ev), 0); - - first = queue_push(&dev); - ck_assert(first != NULL); - memset(first, 0xab, sizeof(*first)); - e1 = *first; - - second = queue_push(&dev); - ck_assert(second != NULL); - memset(second, 0x12, sizeof(*second)); - e2 = *second; - - rc = queue_shift_multiple(&dev, 5, events); - ck_assert_int_eq(rc, 2); - rc = memcmp(&events[0], &e1, sizeof(ev)); - ck_assert_int_eq(rc, 0); - rc = memcmp(&events[1], &e2, sizeof(ev)); - ck_assert_int_eq(rc, 0); - - first = queue_push(&dev); - ck_assert(first != NULL); - memset(first, 0xab, sizeof(*first)); - e1 = *first; - - second = queue_push(&dev); - ck_assert(second != NULL); - memset(second, 0x12, sizeof(*second)); - e2 = *second; - - rc = queue_shift_multiple(&dev, 1, events); - ck_assert_int_eq(rc, 1); - rc = memcmp(&events[0], &e1, sizeof(ev)); - ck_assert_int_eq(rc, 0); - - rc = queue_shift_multiple(&dev, 1, events); - ck_assert_int_eq(rc, 1); - rc = memcmp(&events[0], &e2, sizeof(ev)); - ck_assert_int_eq(rc, 0); - - ck_assert_int_eq(queue_shift_multiple(&dev, 1, events), 0); - - queue_free(&dev); -} -END_TEST - -START_TEST(test_queue_next_element) -{ - struct libevdev dev = {0}; - struct input_event ev, *first, *second; - int rc; - - queue_alloc(&dev, 0); - first = queue_next_element(&dev); - ck_assert(first == NULL); - - queue_alloc(&dev, 2); - first = queue_next_element(&dev); - ck_assert(first != NULL); - memset(first, 0xab, sizeof(*first)); - - second = queue_next_element(&dev); - ck_assert(second != NULL); - memset(second, 0xbc, sizeof(*second)); - - /* queue_next_element does not advance, so we overwrite */ - memset(&ev, 0xbc, sizeof(ev)); - rc = memcmp(&ev, first, sizeof(ev)); - ck_assert_int_eq(rc, 0); - - ck_assert_int_eq(queue_num_elements(&dev), 0); - - first = queue_next_element(&dev); - ck_assert(first != NULL); - memset(first, 0xab, sizeof(*first)); - - queue_set_num_elements(&dev, 1); - ck_assert_int_eq(queue_num_elements(&dev), 1); - - second = queue_next_element(&dev); - ck_assert(second != NULL); - memset(second, 0xbc, sizeof(*second)); - - memset(&ev, 0xab, sizeof(ev)); - rc = memcmp(&ev, first, sizeof(ev)); - ck_assert_int_eq(rc, 0); - - queue_free(&dev); -} -END_TEST - -START_TEST(test_queue_set_num_elements) -{ - struct libevdev dev = {0}; - - queue_alloc(&dev, 0); - ck_assert_int_eq(queue_set_num_elements(&dev, 1), 1); - - queue_alloc(&dev, 2); - ck_assert_int_eq(queue_set_num_elements(&dev, 3), 1); - ck_assert_int_eq(queue_set_num_elements(&dev, 2), 0); - - queue_free(&dev); -} -END_TEST - -TEST_SUITE(queue_suite) -{ - Suite *s = suite_create("Event queue"); - - TCase *tc = tcase_create("Queue allocation"); - tcase_add_test(tc, test_queue_alloc); - tcase_add_test(tc, test_queue_sizes); - suite_add_tcase(s, tc); - - tc = tcase_create("Queue push/pop/peek"); - tcase_add_test(tc, test_queue_push); - tcase_add_test(tc, test_queue_pop); - tcase_add_test(tc, test_queue_peek); - suite_add_tcase(s, tc); - - tc = tcase_create("Queue shift"); - tcase_add_test(tc, test_queue_shift); - tcase_add_test(tc, test_queue_shift_multiple); - suite_add_tcase(s, tc); - - tc = tcase_create("Queue next elem"); - tcase_add_test(tc, test_queue_next_element); - tcase_add_test(tc, test_queue_set_num_elements); - suite_add_tcase(s, tc); - - return s; -} diff --git a/test/test-kernel.c b/test/test-kernel.c deleted file mode 100644 index 9648d84dd1bef325a5ab53e0c4d36d3f4eadbe83..0000000000000000000000000000000000000000 --- a/test/test-kernel.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright © 2014 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include "test-common.h" - -START_TEST(test_revoke) -{ - struct uinput_device* uidev; - struct libevdev *dev, *dev2; - int rc, fd; - struct input_event ev1, ev2; - int dev_fd; - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_REL, REL_WHEEL, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - fd = open(uinput_device_get_devnode(uidev), O_RDONLY|O_NONBLOCK); - ck_assert_int_gt(fd, -1); - rc = libevdev_new_from_fd(fd, &dev2); - ck_assert_msg(rc == 0, "Failed to create second device: %s", strerror(-rc)); - - uinput_device_event(uidev, EV_REL, REL_X, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - - for (int i = 0; i < 2; i++) { - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev1); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - - rc = libevdev_next_event(dev2, LIBEVDEV_READ_FLAG_NORMAL, &ev2); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - - ck_assert_int_eq(ev1.type, ev2.type); - ck_assert_int_eq(ev1.code, ev2.code); - ck_assert_int_eq(ev1.value, ev2.value); - } - - /* revoke first device, expect it closed, second device still open */ - dev_fd = libevdev_get_fd(dev); - ck_assert_int_ge(dev_fd, 0); - rc = ioctl(dev_fd, EVIOCREVOKE, NULL); - if (rc == -1 && errno == EINVAL) { - fprintf(stderr, "WARNING: skipping EVIOCREVOKE test, not suported by current kernel\n"); - goto out; - } - ck_assert_msg(rc == 0, "Failed to revoke device: %s", strerror(errno)); - - uinput_device_event(uidev, EV_REL, REL_X, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev1); - ck_assert_int_eq(rc, -ENODEV); - - rc = libevdev_next_event(dev2, LIBEVDEV_READ_FLAG_NORMAL, &ev2); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - -out: - uinput_device_free(uidev); - libevdev_free(dev); - libevdev_free(dev2); - close(fd); -} -END_TEST - -START_TEST(test_revoke_invalid) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - int dev_fd; - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_REL, REL_WHEEL, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - dev_fd = libevdev_get_fd(dev); - ck_assert_int_ge(dev_fd, 0); - /* ioctl requires 0 as value */ - rc = ioctl(dev_fd, EVIOCREVOKE, 1); - ck_assert_int_eq(rc, -1); - ck_assert_int_eq(errno, EINVAL); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_revoke_fail_after) -{ - struct uinput_device* uidev; - struct libevdev *dev, *dev2 = NULL; - int rc, fd; - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_REL, REL_WHEEL, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - fd = open(uinput_device_get_devnode(uidev), O_RDONLY|O_NONBLOCK); - ck_assert_int_gt(fd, -1); - - rc = ioctl(fd, EVIOCREVOKE, NULL); - if (rc == -1 && errno == EINVAL) { - fprintf(stderr, "WARNING: skipping EVIOCREVOKE test, not suported by current kernel\n"); - goto out; - } - ck_assert_msg(rc == 0, "Failed to revoke device: %s", strerror(errno)); - - rc = libevdev_new_from_fd(fd, &dev2); - ck_assert_int_eq(rc, -ENODEV); - -out: - uinput_device_free(uidev); - libevdev_free(dev); - close(fd); -} -END_TEST - -TEST_SUITE_ROOT_PRIVILEGES(kernel) -{ - Suite *s = suite_create("kernel"); - - add_test(s, test_revoke); - add_test(s, test_revoke_invalid); - add_test(s, test_revoke_fail_after); - - return s; -} diff --git a/test/test-libevdev-events.c b/test/test-libevdev-events.c deleted file mode 100644 index bf7bdbdb9439ec292ac04fcb6a73ea03a64322c3..0000000000000000000000000000000000000000 --- a/test/test-libevdev-events.c +++ /dev/null @@ -1,2101 +0,0 @@ -/* - * Copyright © 2013 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include -#include -#include -#include -#include -#include - -#include "test-common.h" - -START_TEST(test_next_event) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - - test_create_device(&uidev, &dev, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_KEY, BTN_LEFT, - -1); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - uinput_device_event(uidev, EV_KEY, BTN_LEFT, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_KEY, BTN_LEFT, 1); - - libevdev_free(dev); - uinput_device_free(uidev); - -} -END_TEST - -START_TEST(test_next_event_invalid_fd) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - - libevdev_set_log_function(test_logfunc_ignore_error, NULL); - - dev = libevdev_new(); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, -EBADF); - libevdev_free(dev); - - test_create_device(&uidev, &dev, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_KEY, BTN_LEFT, - -1); - - /* invalid (missing) flag */ - rc = libevdev_next_event(dev, 0x10, &ev); - ck_assert_int_eq(rc, -EINVAL); - - /* set an invalid fd */ - rc = libevdev_change_fd(dev, -3); - ck_assert_int_eq(rc, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, -EBADF); - - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - libevdev_free(dev); - uinput_device_free(uidev); -} -END_TEST - -START_TEST(test_next_event_blocking) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int fd, flags; - int rc; - struct input_event ev; - - test_create_device(&uidev, &dev, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_KEY, BTN_LEFT, - -1); - - fd = libevdev_get_fd(dev); - flags = fcntl(fd, F_GETFL) & ~O_NONBLOCK; - rc = fcntl(fd, F_SETFL, flags); - ck_assert_int_eq(rc, 0); - - uinput_device_event(uidev, EV_KEY, BTN_LEFT, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_BLOCKING, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_KEY, BTN_LEFT, 1); - - libevdev_free(dev); - uinput_device_free(uidev); -} -END_TEST - -START_TEST(test_syn_dropped_event) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - int pipefd[2]; - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_SYN, SYN_DROPPED, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_KEY, BTN_LEFT, - -1); - - /* This is a bit complicated: - we can't get SYN_DROPPED through uinput, so we push two events down - uinput, and process those. Then write a SYN_DROPPED on a pipe, - switch the fd and read one event off the wire. Switch back, so - that when we do read off the SYN_DROPPED we have the fd back on - the device and the ioctls work. - */ - uinput_device_event(uidev, EV_KEY, BTN_LEFT, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_KEY, BTN_LEFT, 1); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_SYN, SYN_REPORT, 0); - - rc = pipe2(pipefd, O_NONBLOCK); - ck_assert_int_eq(rc, 0); - - libevdev_change_fd(dev, pipefd[0]); - ev.type = EV_SYN; - ev.code = SYN_DROPPED; - ev.value = 0; - rc = write(pipefd[1], &ev, sizeof(ev)); - ck_assert_int_eq(rc, sizeof(ev)); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_SYN, SYN_DROPPED, 0); - - libevdev_change_fd(dev, uinput_device_get_fd(uidev)); - /* only check for the rc, nothing actually changed on the device */ - - libevdev_free(dev); - uinput_device_free(uidev); - - close(pipefd[0]); - close(pipefd[1]); - -} -END_TEST - -START_TEST(test_event_type_filtered) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - - test_create_device(&uidev, &dev, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_KEY, BTN_LEFT, - -1); - - libevdev_disable_event_type(dev, EV_REL); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - uinput_device_event(uidev, EV_REL, REL_X, 1); - uinput_device_event(uidev, EV_KEY, REL_Y, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_SYN, SYN_REPORT, 0); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - libevdev_free(dev); - uinput_device_free(uidev); - -} -END_TEST - -START_TEST(test_event_code_filtered) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - - test_create_device(&uidev, &dev, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_KEY, BTN_LEFT, - -1); - - libevdev_disable_event_code(dev, EV_REL, REL_X); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - uinput_device_event(uidev, EV_REL, REL_X, 1); - uinput_device_event(uidev, EV_REL, REL_Y, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_REL, REL_Y, 1); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_SYN, SYN_REPORT, 0); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - libevdev_free(dev); - uinput_device_free(uidev); - -} -END_TEST - -START_TEST(test_has_event_pending) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - - test_create_device(&uidev, &dev, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_KEY, BTN_LEFT, - -1); - - ck_assert_int_eq(libevdev_has_event_pending(dev), 0); - - uinput_device_event(uidev, EV_REL, REL_X, 1); - uinput_device_event(uidev, EV_REL, REL_Y, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - - ck_assert_int_eq(libevdev_has_event_pending(dev), 1); - - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - - ck_assert_int_eq(libevdev_has_event_pending(dev), 1); - - while ((rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev)) != -EAGAIN) - ; - - ck_assert_int_eq(libevdev_has_event_pending(dev), 0); - - libevdev_change_fd(dev, -1); - ck_assert_int_eq(libevdev_has_event_pending(dev), -EBADF); - - libevdev_free(dev); - uinput_device_free(uidev); - -} -END_TEST - -START_TEST(test_has_event_pending_invalid_fd) -{ - struct libevdev *dev; - int rc; - - libevdev_set_log_function(test_logfunc_ignore_error, NULL); - - dev = libevdev_new(); - rc = libevdev_has_event_pending(dev); - ck_assert_int_eq(rc, -EBADF); - - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - libevdev_free(dev); -} -END_TEST - -START_TEST(test_syn_delta_button) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_SYN, SYN_DROPPED, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - EV_KEY, KEY_MAX, - -1); - - uinput_device_event(uidev, EV_KEY, BTN_LEFT, 1); - uinput_device_event(uidev, EV_KEY, BTN_RIGHT, 1); - uinput_device_event(uidev, EV_KEY, KEY_MAX, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_KEY, BTN_LEFT, 1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_KEY, BTN_RIGHT, 1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_KEY, KEY_MAX, 1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - ck_assert(libevdev_get_event_value(dev, EV_KEY, BTN_LEFT)); - ck_assert(libevdev_get_event_value(dev, EV_KEY, BTN_RIGHT)); - ck_assert(!libevdev_get_event_value(dev, EV_KEY, BTN_MIDDLE)); - ck_assert(libevdev_get_event_value(dev, EV_KEY, KEY_MAX)); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_syn_delta_abs) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - struct input_absinfo abs[3] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MAX, .maximum = 1000 }, - }; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - EV_SYN, SYN_DROPPED, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - uinput_device_event(uidev, EV_ABS, ABS_X, 100); - uinput_device_event(uidev, EV_ABS, ABS_Y, 500); - uinput_device_event(uidev, EV_ABS, ABS_MAX, 700); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_ABS, ABS_X, 100); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_ABS, ABS_Y, 500); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - ck_assert_int_eq(ev.type, EV_ABS); - ck_assert_int_eq(ev.code, ABS_MAX); - ck_assert_int_eq(ev.value, 700); - assert_event(&ev, EV_ABS, ABS_MAX, 700); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_syn_delta_mt) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - struct input_absinfo abs[6] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = 1 }, - { .value = ABS_MT_TRACKING_ID, .minimum = -1, .maximum = 2 }, - }; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - -1); - - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 0, - EV_ABS, ABS_X, 100, - EV_ABS, ABS_Y, 500, - EV_ABS, ABS_MT_POSITION_X, 100, - EV_ABS, ABS_MT_POSITION_Y, 500, - EV_ABS, ABS_MT_TRACKING_ID, 1, - EV_ABS, ABS_MT_SLOT, 1, - EV_ABS, ABS_X, 1, - EV_ABS, ABS_Y, 5, - EV_ABS, ABS_MT_POSITION_X, 1, - EV_ABS, ABS_MT_POSITION_Y, 5, - EV_ABS, ABS_MT_TRACKING_ID, 2, - EV_SYN, SYN_REPORT, 0, - -1, -1); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - ck_assert_int_eq(libevdev_get_current_slot(dev), 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_ABS, ABS_X, 1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_ABS, ABS_Y, 5); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_ABS, ABS_MT_SLOT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_ABS, ABS_MT_POSITION_X, 100); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_ABS, ABS_MT_POSITION_Y, 500); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_ABS, ABS_MT_TRACKING_ID, 1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_ABS, ABS_MT_SLOT, 1); - ck_assert_int_eq(libevdev_get_current_slot(dev), 1); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_ABS, ABS_MT_POSITION_X, 1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_ABS, ABS_MT_POSITION_Y, 5); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_ABS, ABS_MT_TRACKING_ID, 2); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_syn_delta_mt_reset_slot) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev, - last_slot_event = { .type = 0}; - struct input_absinfo abs[6] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = 1 }, - { .value = ABS_MT_TRACKING_ID, .minimum = -1, .maximum = 2 }, - }; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - -1); - - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 1, - EV_ABS, ABS_MT_POSITION_X, 100, - EV_ABS, ABS_MT_POSITION_Y, 500, - EV_ABS, ABS_MT_TRACKING_ID, 1, - EV_ABS, ABS_MT_SLOT, 0, - EV_ABS, ABS_MT_POSITION_X, 1, - EV_ABS, ABS_MT_POSITION_Y, 5, - EV_ABS, ABS_MT_TRACKING_ID, 2, - EV_SYN, SYN_REPORT, 0, - -1, -1); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - do { - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - if (libevdev_event_is_code(&ev, EV_ABS, ABS_MT_SLOT)) - last_slot_event = ev; - } while (rc != -EAGAIN); - - ck_assert(libevdev_event_is_code(&last_slot_event, EV_ABS, ABS_MT_SLOT)); - ck_assert_int_eq(last_slot_event.value, 0); - ck_assert_int_eq(libevdev_get_current_slot(dev), 0); - - last_slot_event.type = 0; - - /* same thing again, this time swap the numbers */ - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 0, - EV_ABS, ABS_MT_POSITION_X, 100, - EV_ABS, ABS_MT_POSITION_Y, 500, - EV_ABS, ABS_MT_TRACKING_ID, 1, - EV_ABS, ABS_MT_SLOT, 1, - EV_ABS, ABS_MT_POSITION_X, 1, - EV_ABS, ABS_MT_POSITION_Y, 5, - EV_ABS, ABS_MT_TRACKING_ID, 2, - EV_SYN, SYN_REPORT, 0, - -1, -1); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - do { - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - if (libevdev_event_is_code(&ev, EV_ABS, ABS_MT_SLOT)) - last_slot_event = ev; - } while (rc != -EAGAIN); - - ck_assert(libevdev_event_is_code(&last_slot_event, EV_ABS, ABS_MT_SLOT)); - ck_assert_int_eq(last_slot_event.value, 1); - ck_assert_int_eq(libevdev_get_current_slot(dev), 1); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_syn_delta_led) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_SYN, SYN_DROPPED, - EV_LED, LED_NUML, - EV_LED, LED_CAPSL, - EV_LED, LED_MAX, - -1); - - uinput_device_event(uidev, EV_LED, LED_NUML, 1); - uinput_device_event(uidev, EV_LED, LED_CAPSL, 1); - uinput_device_event(uidev, EV_LED, LED_MAX, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_LED, LED_NUML, 1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_LED, LED_CAPSL, 1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_LED, LED_MAX, 1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - ck_assert_int_eq(libevdev_get_event_value(dev, EV_LED, LED_NUML), 1); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_LED, LED_CAPSL), 1); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_LED, LED_MAX), 1); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_syn_delta_sw) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_SYN, SYN_DROPPED, - EV_SW, SW_HEADPHONE_INSERT, - EV_SW, SW_MICROPHONE_INSERT, - EV_SW, SW_MAX, - -1); - - uinput_device_event(uidev, EV_SW, SW_HEADPHONE_INSERT, 1); - uinput_device_event(uidev, EV_SW, SW_MICROPHONE_INSERT, 1); - uinput_device_event(uidev, EV_SW, SW_MAX, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_SW, SW_HEADPHONE_INSERT, 1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_SW, SW_MICROPHONE_INSERT, 1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_SW, SW_MAX, 1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - ck_assert_int_eq(libevdev_get_event_value(dev, EV_SW, SW_HEADPHONE_INSERT), 1); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_SW, SW_MICROPHONE_INSERT), 1); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_SW, SW_MAX), 1); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_syn_delta_tracking_ids) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - int i; - const int num_slots = 15; - int slot = -1; - unsigned long terminated[NLONGS(num_slots)]; - unsigned long restarted[NLONGS(num_slots)]; - struct input_absinfo abs[6] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = num_slots }, - { .value = ABS_MT_TRACKING_ID, .minimum = -1, .maximum = 0xff }, - }; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - -1); - - /* Test the sync process to make sure we get touches terminated when - * the tracking id changes: - * 1) start a bunch of touch points - * 2) read data into libevdev, make sure state is up-to-date - * 3) change touchpoints - * 3.1) change the tracking ID on some (indicating terminated and - * re-started touchpoint) - * 3.2) change the tracking ID to -1 on some (indicating termianted - * touchpoint) - * 3.3) just update the data on others - * 4) force a sync on the device - * 5) make sure we get the right tracking ID changes in the caller - */ - - /* Start a bunch of touch points */ - for (i = num_slots; i >= 0; i--) { - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, i, - EV_ABS, ABS_MT_TRACKING_ID, i, - EV_ABS, ABS_X, 100 + i, - EV_ABS, ABS_Y, 500 + i, - EV_ABS, ABS_MT_POSITION_X, 100 + i, - EV_ABS, ABS_MT_POSITION_Y, 500 + i, - EV_SYN, SYN_REPORT, 0, - -1, -1); - do { - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_ne(rc, LIBEVDEV_READ_STATUS_SYNC); - } while (rc >= 0); - } - - /* we have a bunch of touches now, and libevdev knows it. Change all - * touches */ - for (i = num_slots; i >= 0; i--) { - uinput_device_event(uidev, EV_ABS, ABS_MT_SLOT, i); - if (i % 3 == 0) { - /* change some slots with a new tracking id */ - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_TRACKING_ID, num_slots + i, - EV_ABS, ABS_X, 200 + i, - EV_ABS, ABS_Y, 700 + i, - EV_ABS, ABS_MT_POSITION_X, 200 + i, - EV_ABS, ABS_MT_POSITION_Y, 700 + i, - -1, -1); - } else if (i % 3 == 1) { - /* stop others */ - uinput_device_event(uidev, EV_ABS, ABS_MT_TRACKING_ID, -1); - } else { - /* just update */ - uinput_device_event_multiple(uidev, - EV_ABS, ABS_X, 200 + i, - EV_ABS, ABS_Y, 700 + i, - EV_ABS, ABS_MT_POSITION_X, 200 + i, - EV_ABS, ABS_MT_POSITION_Y, 700 + i, - -1, -1); - } - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - } - - /* Force sync */ - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - /* now check for the right tracking IDs */ - memset(terminated, 0, sizeof(terminated)); - memset(restarted, 0, sizeof(restarted)); - slot = -1; - while ((rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev)) != -EAGAIN) { - if (libevdev_event_is_code(&ev, EV_SYN, SYN_REPORT)) - continue; - - if (libevdev_event_is_code(&ev, EV_ABS, ABS_MT_SLOT)) { - slot = ev.value; - continue; - } - - if (libevdev_event_is_code(&ev, EV_ABS, ABS_X) || - libevdev_event_is_code(&ev, EV_ABS, ABS_Y)) - continue; - - ck_assert_int_ne(slot, -1); - - if (libevdev_event_is_code(&ev, EV_ABS, ABS_MT_TRACKING_ID)) { - if (slot % 3 == 0) { - if (!bit_is_set(terminated, slot)) { - ck_assert_int_eq(ev.value, -1); - set_bit(terminated, slot); - } else { - ck_assert_int_eq(ev.value, num_slots + slot); - set_bit(restarted, slot); - } - } else if (slot % 3 == 1) { - ck_assert(!bit_is_set(terminated, slot)); - ck_assert_int_eq(ev.value, -1); - set_bit(terminated, slot); - } else - ck_abort(); - - continue; - } - - switch(ev.code) { - case ABS_MT_POSITION_X: - ck_assert_int_eq(ev.value, 200 + slot); - break; - case ABS_MT_POSITION_Y: - ck_assert_int_eq(ev.value, 700 + slot); - break; - default: - ck_abort(); - } - } - - for (i = 0; i < num_slots; i++) { - if (i % 3 == 0) { - ck_assert(bit_is_set(terminated, i)); - ck_assert(bit_is_set(restarted, i)); - } else if (i % 3 == 1) { - ck_assert(bit_is_set(terminated, i)); - ck_assert(!bit_is_set(restarted, i)); - } else { - ck_assert(!bit_is_set(terminated, i)); - ck_assert(!bit_is_set(restarted, i)); - } - } - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_syn_delta_tracking_ids_btntool) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - const int num_slots = 5; - struct input_absinfo abs[6] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = num_slots }, - { .value = ABS_MT_TRACKING_ID, .minimum = -1, .maximum = 0xffff }, - }; - bool have_doubletap = false, - have_quadtap = false, - have_quinttap = false; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_KEY, BTN_TOOL_FINGER, - EV_KEY, BTN_TOOL_DOUBLETAP, - EV_KEY, BTN_TOOL_TRIPLETAP, - EV_KEY, BTN_TOOL_QUADTAP, - EV_KEY, BTN_TOOL_QUINTTAP, - EV_SYN, SYN_REPORT, - -1); - - /* Test the sync process to make sure we get the BTN_TOOL bits for - * touches adjusted correctly when the tracking id changes: - * 1) start a bunch of touch points - * 2) read data into libevdev, make sure state is up-to-date - * 3) change touchpoints - * 3.1) change the tracking ID on some (indicating terminated and - * re-started touchpoint) - * 3.2) change the tracking ID to -1 on some (indicating termianted - * touchpoint) - * 3.3) just update the data on others - * 4) force a sync on the device - * 5) make sure we get the right BTN_TOOL_ changes in the caller - */ - for (int i = 0; i < num_slots; i++) { - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, i, - EV_ABS, ABS_MT_TRACKING_ID, 111, - EV_ABS, ABS_X, 100 + 10 * i, - EV_ABS, ABS_Y, 100 + 10 * i, - EV_ABS, ABS_MT_POSITION_X, 100, - EV_ABS, ABS_MT_POSITION_Y, 100, - -1, -1); - switch (i) { - case 0: - uinput_device_event(uidev, EV_KEY, BTN_TOOL_FINGER, 1); - break; - case 1: - uinput_device_event(uidev, EV_KEY, BTN_TOOL_FINGER, 0); - uinput_device_event(uidev, EV_KEY, BTN_TOOL_DOUBLETAP, 1); - break; - case 2: - uinput_device_event(uidev, EV_KEY, BTN_TOOL_DOUBLETAP, 0); - uinput_device_event(uidev, EV_KEY, BTN_TOOL_TRIPLETAP, 1); - break; - case 3: - uinput_device_event(uidev, EV_KEY, BTN_TOOL_TRIPLETAP, 0); - uinput_device_event(uidev, EV_KEY, BTN_TOOL_QUADTAP, 1); - break; - case 4: - uinput_device_event(uidev, EV_KEY, BTN_TOOL_QUADTAP, 0); - uinput_device_event(uidev, EV_KEY, BTN_TOOL_QUINTTAP, 1); - break; - default: - ck_abort(); - } - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - } - - do { - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_ne(rc, LIBEVDEV_READ_STATUS_SYNC); - } while (rc >= 0); - - /* we have a bunch of touches now, and libevdev knows it. - * - stop touch 0 - * - stop and restart touch 1 and 4 - * - leave 2, 3 unchanged - */ - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 0, - EV_ABS, ABS_MT_TRACKING_ID, -1, - EV_KEY, BTN_TOOL_QUINTTAP, 0, - EV_KEY, BTN_TOOL_QUADTAP, 1, - EV_SYN, SYN_REPORT, 0, - -1, -1); - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 1, - EV_ABS, ABS_MT_TRACKING_ID, -1, - EV_KEY, BTN_TOOL_QUADTAP, 0, - EV_KEY, BTN_TOOL_TRIPLETAP, 1, - EV_SYN, SYN_REPORT, 0, - -1, -1); - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 1, - EV_ABS, ABS_MT_TRACKING_ID, 666, - EV_ABS, ABS_X, 666, - EV_ABS, ABS_Y, 666, - EV_ABS, ABS_MT_POSITION_X, 666, - EV_ABS, ABS_MT_POSITION_Y, 666, - EV_KEY, BTN_TOOL_TRIPLETAP, 0, - EV_KEY, BTN_TOOL_QUADTAP, 1, - EV_SYN, SYN_REPORT, 0, - -1, -1); - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 4, - EV_ABS, ABS_MT_TRACKING_ID, -1, - EV_KEY, BTN_TOOL_QUADTAP, 0, - EV_KEY, BTN_TOOL_TRIPLETAP, 1, - EV_SYN, SYN_REPORT, 0, - -1, -1); - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 4, - EV_ABS, ABS_MT_TRACKING_ID, 777, - EV_ABS, ABS_X, 777, - EV_ABS, ABS_Y, 777, - EV_ABS, ABS_MT_POSITION_X, 777, - EV_ABS, ABS_MT_POSITION_Y, 777, - EV_KEY, BTN_TOOL_QUADTAP, 1, - EV_KEY, BTN_TOOL_TRIPLETAP, 0, - EV_SYN, SYN_REPORT, 0, - -1, -1); - - /* Force sync */ - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - /* In the first sync frame, we expect us to drop to 2 touches - we - * started with 5, 1 stopped, 2 stopped+restarted */ - while ((rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev)) != -EAGAIN) { - if (libevdev_event_is_code(&ev, EV_KEY, BTN_TOOL_QUINTTAP)) { - ck_assert(!have_quinttap); - assert_event(&ev, EV_KEY, BTN_TOOL_QUINTTAP, 0); - have_quinttap = true; - } - - if (libevdev_event_is_code(&ev, EV_KEY, BTN_TOOL_TRIPLETAP)) - ck_abort(); - - if (libevdev_event_is_code(&ev, EV_KEY, BTN_TOOL_DOUBLETAP)) { - ck_assert(!have_doubletap); - assert_event(&ev, EV_KEY, BTN_TOOL_DOUBLETAP, 1); - have_doubletap = true; - } - - ck_assert(!libevdev_event_is_code(&ev, EV_KEY, BTN_TOOL_TRIPLETAP)); - ck_assert(!libevdev_event_is_code(&ev, EV_KEY, BTN_TOOL_QUADTAP)); - ck_assert(!libevdev_event_is_code(&ev, EV_KEY, BTN_TOOL_FINGER)); - - if (libevdev_event_is_code(&ev, EV_SYN, SYN_REPORT)) { - ck_assert(have_doubletap); - ck_assert(have_quinttap); - break; - } - } - - have_doubletap = false; - have_quadtap = false; - - /* In the second sync frame, we expect to go back to 4 touches, - * recovering the two stopped+started touches */ - while ((rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev)) != -EAGAIN) { - if (libevdev_event_is_code(&ev, EV_KEY, BTN_TOOL_QUADTAP)) { - ck_assert(!have_quadtap); - assert_event(&ev, EV_KEY, BTN_TOOL_QUADTAP, 1); - have_quadtap = true; - } - - if (libevdev_event_is_code(&ev, EV_KEY, BTN_TOOL_TRIPLETAP)) - ck_abort(); - - if (libevdev_event_is_code(&ev, EV_KEY, BTN_TOOL_DOUBLETAP)) { - ck_assert(!have_doubletap); - assert_event(&ev, EV_KEY, BTN_TOOL_DOUBLETAP, 0); - have_doubletap = true; - } - - ck_assert(!libevdev_event_is_code(&ev, EV_KEY, BTN_TOOL_TRIPLETAP)); - ck_assert(!libevdev_event_is_code(&ev, EV_KEY, BTN_TOOL_QUINTTAP)); - ck_assert(!libevdev_event_is_code(&ev, EV_KEY, BTN_TOOL_FINGER)); - - if (libevdev_event_is_code(&ev, EV_SYN, SYN_REPORT)) { - ck_assert(have_doubletap); - ck_assert(have_quadtap); - break; - } - } - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_syn_delta_late_sync) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - struct input_absinfo abs[6] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = 1 }, - { .value = ABS_MT_TRACKING_ID, .minimum = -1, .maximum = 0xff}, - }; - int i, slot; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - -1); - - /* emulate a touch down, make sure libevdev sees it */ - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 0, - EV_ABS, ABS_MT_TRACKING_ID, 1, - EV_ABS, ABS_X, 100, - EV_ABS, ABS_Y, 500, - EV_ABS, ABS_MT_POSITION_X, 100, - EV_ABS, ABS_MT_POSITION_Y, 500, - EV_SYN, SYN_REPORT, 0, - -1, -1); - do { - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_ne(rc, LIBEVDEV_READ_STATUS_SYNC); - } while (rc >= 0); - - /* force enough events to trigger a SYN_DROPPED */ - for (i = 0; i < 100; i++) { - uinput_device_event_multiple(uidev, - EV_ABS, ABS_X, 100 + i, - EV_ABS, ABS_Y, 500 + i, - EV_ABS, ABS_MT_POSITION_X, 100 + i, - EV_ABS, ABS_MT_POSITION_Y, 500 + i, - EV_SYN, SYN_REPORT, 0, - -1, -1); - } - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - /* trigger the tracking ID change after getting the SYN_DROPPED */ - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 0, - EV_ABS, ABS_MT_TRACKING_ID, -1, - EV_ABS, ABS_X, 200, - EV_ABS, ABS_Y, 600, - EV_ABS, ABS_MT_POSITION_X, 200, - EV_ABS, ABS_MT_POSITION_Y, 600, - EV_SYN, SYN_REPORT, 0, - -1, -1); - - slot = 0; - - /* Now sync the device, expect the data to be equal to the last event*/ - while ((rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev)) != -EAGAIN) { - if (ev.type == EV_SYN) - continue; - - ck_assert_int_eq(ev.type, EV_ABS); - switch(ev.code) { - case ABS_MT_SLOT: - slot = ev.value; - break; - case ABS_MT_TRACKING_ID: - if (slot == 0) - ck_assert_int_eq(ev.value, -1); - break; - case ABS_X: - case ABS_MT_POSITION_X: - ck_assert_int_eq(ev.value, 200); - break; - case ABS_Y: - case ABS_MT_POSITION_Y: - ck_assert_int_eq(ev.value, 600); - break; - } - } - - /* And a new tracking ID */ - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 0, - EV_ABS, ABS_MT_TRACKING_ID, 2, - EV_ABS, ABS_X, 201, - EV_ABS, ABS_Y, 601, - EV_ABS, ABS_MT_POSITION_X, 201, - EV_ABS, ABS_MT_POSITION_Y, 601, - EV_SYN, SYN_REPORT, 0, - -1, -1); - - while ((rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev)) != -EAGAIN) { - ck_assert_int_ne(rc, LIBEVDEV_READ_STATUS_SYNC); - - if (ev.type == EV_SYN) - continue; - - ck_assert_int_eq(ev.type, EV_ABS); - - switch(ev.code) { - case ABS_MT_SLOT: - ck_assert_int_eq(ev.value, 0); - break; - case ABS_MT_TRACKING_ID: - ck_assert_int_eq(ev.value, 2); - break; - case ABS_X: - case ABS_MT_POSITION_X: - ck_assert_int_eq(ev.value, 201); - break; - case ABS_Y: - case ABS_MT_POSITION_Y: - ck_assert_int_eq(ev.value, 601); - break; - } - } - - /* Now we basically re-do the exact same test, just with the - tracking ID order inverted */ - - /* drop the tracking ID, make sure libevdev sees it */ - uinput_device_event(uidev, EV_ABS, ABS_MT_SLOT, 0); - uinput_device_event(uidev, EV_ABS, ABS_MT_TRACKING_ID, -1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - do { - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_ne(rc, LIBEVDEV_READ_STATUS_SYNC); - } while (rc >= 0); - - /* force enough events to trigger a SYN_DROPPED */ - for (i = 0; i < 100; i++) { - uinput_device_event_multiple(uidev, - EV_ABS, ABS_X, 100 + i, - EV_ABS, ABS_Y, 500 + i, - EV_ABS, ABS_MT_POSITION_X, 100 + i, - EV_ABS, ABS_MT_POSITION_Y, 500 + i, - EV_SYN, SYN_REPORT, 0, - -1, -1); - } - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - /* trigger the new tracking ID after getting the SYN_DROPPED */ - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 0, - EV_ABS, ABS_MT_TRACKING_ID, 5, - EV_ABS, ABS_X, 200, - EV_ABS, ABS_Y, 600, - EV_ABS, ABS_MT_POSITION_X, 200, - EV_ABS, ABS_MT_POSITION_Y, 600, - EV_SYN, SYN_REPORT, 0, - -1, -1); - - slot = 0; - - /* Now sync the device, expect the data to be equal to the last event*/ - while ((rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev)) != -EAGAIN) { - if (ev.type == EV_SYN) - continue; - - ck_assert_int_eq(ev.type, EV_ABS); - switch(ev.code) { - case ABS_MT_SLOT: - slot = ev.value; - break; - case ABS_MT_TRACKING_ID: - if (slot == 0) - ck_assert_int_eq(ev.value, 5); - break; - case ABS_X: - case ABS_MT_POSITION_X: - ck_assert_int_eq(ev.value, 200); - break; - case ABS_Y: - case ABS_MT_POSITION_Y: - ck_assert_int_eq(ev.value, 600); - break; - } - } - - /* Drop the tracking ID */ - uinput_device_event(uidev, EV_ABS, ABS_MT_SLOT, 0); - uinput_device_event(uidev, EV_ABS, ABS_MT_TRACKING_ID, -1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - - while ((rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev)) != -EAGAIN) { - ck_assert_int_ne(rc, LIBEVDEV_READ_STATUS_SYNC); - - if (ev.type == EV_SYN) - continue; - - ck_assert_int_eq(ev.type, EV_ABS); - - switch(ev.code) { - case ABS_MT_SLOT: - ck_assert_int_eq(ev.value, 0); - break; - case ABS_MT_TRACKING_ID: - ck_assert_int_eq(ev.value, -1); - break; - } - } - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_syn_delta_fake_mt) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - struct input_absinfo abs[] = { - { .value = ABS_X, .minimum = 0, .maximum = 1000 }, - { .value = ABS_Y, .minimum = 0, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .minimum = 0, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .minimum = 0, .maximum = 1000 }, - { .value = ABS_MT_SLOT - 1, .minimum = 0, .maximum = 2 }}; - /* don't set ABS_MT_SLOT here, otherwise uinput will init - * slots and the behavior is different to real devices with - * such events */ - unsigned long received[NLONGS(ABS_CNT)] = {0}; - - test_create_abs_device(&uidev, &dev, ARRAY_LENGTH(abs), abs, -1); - /* first set of events */ - uinput_device_event_multiple(uidev, - EV_ABS, ABS_X, 200, - EV_ABS, ABS_Y, 400, - EV_ABS, ABS_MT_POSITION_X, 100, - EV_ABS, ABS_MT_POSITION_Y, 500, - EV_ABS, ABS_MT_SLOT - 1, 1, - EV_SYN, SYN_REPORT, 0, - -1, -1); - - /* second set of events */ - uinput_device_event_multiple(uidev, - EV_ABS, ABS_X, 201, - EV_ABS, ABS_Y, 401, - EV_ABS, ABS_MT_POSITION_X, 101, - EV_ABS, ABS_MT_POSITION_Y, 501, - EV_ABS, ABS_MT_SLOT - 1, 2, - EV_SYN, SYN_REPORT, 0, - -1, -1); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - while ((rc = libevdev_next_event(dev, LIBEVDEV_READ_STATUS_SYNC, &ev)) != -EAGAIN) { - if (ev.type != EV_ABS) - continue; - - ck_assert(!bit_is_set(received, ev.code)); - - switch(ev.code) { - /* see comment below for ABS_MT_POSITION_X - * and ABS_MT_POSITION_Y */ - case ABS_MT_POSITION_X: - case ABS_MT_POSITION_Y: - ck_abort(); - break; - - case ABS_MT_SLOT - 1: ck_assert_int_eq(ev.value, 2); break; - case ABS_X: ck_assert_int_eq(ev.value, 201); break; - case ABS_Y: ck_assert_int_eq(ev.value, 401); break; - default: - ck_abort(); - } - - set_bit(received, ev.code); - } - - /* Dont' expect ABS_MT values, they are ignored during the sync - * process */ - ck_assert(!bit_is_set(received, ABS_MT_POSITION_X)); - ck_assert(!bit_is_set(received, ABS_MT_POSITION_Y)); - ck_assert(bit_is_set(received, ABS_MT_SLOT - 1)); - ck_assert(bit_is_set(received, ABS_X)); - ck_assert(bit_is_set(received, ABS_Y)); - - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_X), 201); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_Y), 401); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_MT_SLOT - 1), 2); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_skipped_sync) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - struct input_absinfo abs[2] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - }; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - EV_SYN, SYN_DROPPED, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - uinput_device_event(uidev, EV_KEY, BTN_LEFT, 1); - uinput_device_event(uidev, EV_ABS, ABS_X, 100); - uinput_device_event(uidev, EV_ABS, ABS_Y, 500); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - ck_assert_int_eq(libevdev_get_event_value(dev, EV_KEY, BTN_LEFT), 1); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_X), 100); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_Y), 500); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_incomplete_sync) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - struct input_absinfo abs[2] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - }; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - EV_SYN, SYN_DROPPED, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - uinput_device_event(uidev, EV_KEY, BTN_LEFT, 1); - uinput_device_event(uidev, EV_ABS, ABS_X, 100); - uinput_device_event(uidev, EV_ABS, ABS_Y, 500); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - assert_event(&ev, EV_KEY, BTN_LEFT, 1); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - ck_assert_int_eq(libevdev_get_event_value(dev, EV_KEY, BTN_LEFT), 1); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_X), 100); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_Y), 500); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_empty_sync) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_SYN, SYN_DROPPED, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_FORCE_SYNC, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SYNC); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_event_values) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - struct input_absinfo abs[2] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - }; - int value; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - EV_SYN, SYN_DROPPED, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - uinput_device_event(uidev, EV_KEY, BTN_LEFT, 1); - uinput_device_event(uidev, EV_ABS, ABS_X, 100); - uinput_device_event(uidev, EV_ABS, ABS_Y, 500); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - - /* must still be on old values */ - ck_assert_int_eq(libevdev_get_event_value(dev, EV_KEY, BTN_LEFT), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_X), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_Y), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_REL, REL_X), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_REL, REL_Y), 0); - - ck_assert_int_eq(libevdev_fetch_event_value(dev, EV_KEY, BTN_LEFT, &value), 1); - ck_assert_int_eq(value, 0); - - do { - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - } while (rc == 0); - ck_assert_int_eq(rc, -EAGAIN); - - ck_assert_int_eq(libevdev_get_event_value(dev, EV_KEY, BTN_LEFT), 1); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_X), 100); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_Y), 500); - - /* always 0 */ - ck_assert_int_eq(libevdev_get_event_value(dev, EV_REL, REL_X), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_REL, REL_Y), 0); - - ck_assert_int_eq(libevdev_fetch_event_value(dev, EV_KEY, BTN_LEFT, &value), 1); - ck_assert_int_eq(value, 1); - ck_assert_int_eq(libevdev_fetch_event_value(dev, EV_ABS, ABS_X, &value), 1); - ck_assert_int_eq(value, 100); - ck_assert_int_eq(libevdev_fetch_event_value(dev, EV_ABS, ABS_Y, &value), 1); - ck_assert_int_eq(value, 500); - - uinput_device_free(uidev); - libevdev_free(dev); - -} -END_TEST - -START_TEST(test_event_values_invalid) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs[2] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - }; - int value; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - EV_SYN, SYN_DROPPED, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - ck_assert_int_eq(libevdev_get_event_value(dev, EV_KEY, BTN_EXTRA), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_Z), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_REL, REL_Z), 0); - - value = 0xab; - ck_assert_int_eq(libevdev_fetch_event_value(dev, EV_KEY, BTN_EXTRA, &value), 0); - ck_assert_int_eq(value, 0xab); - ck_assert_int_eq(libevdev_fetch_event_value(dev, EV_ABS, ABS_Z, &value), 0); - ck_assert_int_eq(value, 0xab); - ck_assert_int_eq(libevdev_fetch_event_value(dev, EV_REL, REL_Z, &value), 0); - ck_assert_int_eq(value, 0xab); - - uinput_device_free(uidev); - libevdev_free(dev); - -} -END_TEST - -START_TEST(test_mt_event_values) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - struct input_absinfo abs[5] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = 2 }, - }; - int value; - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - -1); - - uinput_device_event_multiple(uidev, - EV_ABS, ABS_MT_SLOT, 0, - EV_ABS, ABS_X, 100, - EV_ABS, ABS_Y, 500, - EV_ABS, ABS_MT_POSITION_X, 100, - EV_ABS, ABS_MT_POSITION_Y, 500, - EV_ABS, ABS_MT_SLOT, 1, - EV_ABS, ABS_X, 1, - EV_ABS, ABS_Y, 5, - EV_ABS, ABS_MT_POSITION_X, 1, - EV_ABS, ABS_MT_POSITION_Y, 5, - EV_SYN, SYN_REPORT, 0, - -1, -1); - - /* must still be on old values */ - ck_assert_int_eq(libevdev_get_current_slot(dev), 0); - ck_assert_int_eq(libevdev_get_slot_value(dev, 0, ABS_MT_POSITION_X), 0); - ck_assert_int_eq(libevdev_get_slot_value(dev, 0, ABS_MT_POSITION_Y), 0); - ck_assert_int_eq(libevdev_get_slot_value(dev, 1, ABS_MT_POSITION_X), 0); - ck_assert_int_eq(libevdev_get_slot_value(dev, 1, ABS_MT_POSITION_Y), 0); - - do { - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - } while (rc == LIBEVDEV_READ_STATUS_SUCCESS); - ck_assert_int_eq(rc, -EAGAIN); - - ck_assert_int_eq(libevdev_get_current_slot(dev), 1); - ck_assert_int_eq(libevdev_get_slot_value(dev, 0, ABS_MT_POSITION_X), 100); - ck_assert_int_eq(libevdev_get_slot_value(dev, 0, ABS_MT_POSITION_Y), 500); - ck_assert_int_eq(libevdev_get_slot_value(dev, 1, ABS_MT_POSITION_X), 1); - ck_assert_int_eq(libevdev_get_slot_value(dev, 1, ABS_MT_POSITION_Y), 5); - - ck_assert_int_eq(libevdev_fetch_slot_value(dev, 0, ABS_MT_POSITION_X, &value), 1); - ck_assert_int_eq(value, 100); - ck_assert_int_eq(libevdev_fetch_slot_value(dev, 0, ABS_MT_POSITION_Y, &value), 1); - ck_assert_int_eq(value, 500); - ck_assert_int_eq(libevdev_fetch_slot_value(dev, 1, ABS_MT_POSITION_X, &value), 1); - ck_assert_int_eq(value, 1); - ck_assert_int_eq(libevdev_fetch_slot_value(dev, 1, ABS_MT_POSITION_Y, &value), 1); - ck_assert_int_eq(value, 5); - - uinput_device_free(uidev); - libevdev_free(dev); - -} -END_TEST - -START_TEST(test_mt_event_values_invalid) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs[5] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = 2 }, - }; - int value; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - -1); - - ck_assert_int_eq(libevdev_get_current_slot(dev), 0); - ck_assert_int_eq(libevdev_get_slot_value(dev, 0, ABS_MT_TOUCH_MINOR), 0); - value = 0xab; - ck_assert_int_eq(libevdev_fetch_slot_value(dev, 0, ABS_MT_TOUCH_MINOR, &value), 0); - ck_assert_int_eq(value, 0xab); - - ck_assert_int_eq(libevdev_get_slot_value(dev, 10, ABS_MT_POSITION_X), 0); - ck_assert_int_eq(libevdev_get_slot_value(dev, 0, ABS_X), 0); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_mt_slot_ranges_invalid) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_event ev[2]; - int rc; - int num_slots = 2; - struct input_absinfo abs[5] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = num_slots - 1 }, - }; - int pipefd[2]; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - -1); - - rc = pipe2(pipefd, O_NONBLOCK); - ck_assert_int_eq(rc, 0); - libevdev_change_fd(dev, pipefd[0]); - - memset(ev, 0, sizeof(ev)); - ev[0].type = EV_ABS; - ev[0].code = ABS_MT_SLOT; - ev[0].value = num_slots; - ev[1].type = EV_SYN; - ev[1].code = SYN_REPORT; - ev[1].value = 0; - rc = write(pipefd[1], ev, sizeof(ev)); - ck_assert_int_eq(rc, sizeof(ev)); - - libevdev_set_log_function(test_logfunc_ignore_error, NULL); - - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, ev); - ck_assert(libevdev_event_is_code(ev, EV_ABS, ABS_MT_SLOT)); - ck_assert_int_eq(ev[0].value, num_slots - 1); - - /* drain the EV_SYN */ - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, ev); - - ev[0].type = EV_ABS; - ev[0].code = ABS_MT_SLOT; - ev[0].value = -1; - ev[1].type = EV_SYN; - ev[1].code = SYN_REPORT; - ev[1].value = 0; - rc = write(pipefd[1], ev, sizeof(ev)); - ck_assert_int_eq(rc, sizeof(ev)); - - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, ev); - ck_assert(libevdev_event_is_code(ev, EV_ABS, ABS_MT_SLOT)); - ck_assert_int_eq(ev[0].value, num_slots - 1); - - ck_assert_int_eq(libevdev_get_current_slot(dev), num_slots - 1); - - ck_assert_int_eq(libevdev_set_event_value(dev, EV_ABS, ABS_MT_SLOT, num_slots), -1); - ck_assert_int_eq(libevdev_set_event_value(dev, EV_ABS, ABS_MT_SLOT, -1), -1); - - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_mt_tracking_id_discard) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - struct input_absinfo abs[6] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = 10 }, - { .value = ABS_MT_TRACKING_ID, .minimum = -1, .maximum = 500 }, - }; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - -1); - - uinput_device_event(uidev, EV_ABS, ABS_MT_SLOT, 1); - uinput_device_event(uidev, EV_ABS, ABS_MT_TRACKING_ID, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - - /* second tracking ID on same slot */ - uinput_device_event(uidev, EV_ABS, ABS_MT_TRACKING_ID, 2); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - - libevdev_set_log_function(test_logfunc_ignore_error, NULL); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_ABS, ABS_MT_SLOT, 1); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_ABS, ABS_MT_TRACKING_ID, 1); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_SYN, SYN_REPORT, 0); - - /* expect tracking ID discarded */ - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_SYN, SYN_REPORT, 0); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_mt_tracking_id_discard_neg_1) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - struct input_event ev; - struct input_absinfo abs[6] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = 10 }, - { .value = ABS_MT_TRACKING_ID, .minimum = -1, .maximum = 500 }, - }; - int pipefd[2]; - struct input_event events[] = { - { .type = EV_ABS, .code = ABS_MT_TRACKING_ID, .value = -1 }, - { .type = EV_SYN, .code = SYN_REPORT, .value = 0 }, - }; - - rc = pipe2(pipefd, O_NONBLOCK); - ck_assert_int_eq(rc, 0); - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - -1); - uinput_device_event(uidev, EV_ABS, ABS_MT_SLOT, 1); - uinput_device_event(uidev, EV_ABS, ABS_MT_TRACKING_ID, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - - while (libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev) != -EAGAIN) - ; - - libevdev_set_log_function(test_logfunc_ignore_error, NULL); - - /* two -1 tracking ids, need to use the pipe here, the kernel will - filter it otherwise */ - libevdev_change_fd(dev, pipefd[0]); - - rc = write(pipefd[1], events, sizeof(events)); - ck_assert_int_eq(rc, sizeof(events)); - rc = write(pipefd[1], events, sizeof(events)); - ck_assert_int_eq(rc, sizeof(events)); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_ABS, ABS_MT_TRACKING_ID, -1); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_SYN, SYN_REPORT, 0); - - /* expect second tracking ID discarded */ - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - assert_event(&ev, EV_SYN, SYN_REPORT, 0); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - ck_assert_int_eq(rc, -EAGAIN); - - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_ev_rep_values) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int delay = 500, period = 200; - test_create_device(&uidev, &dev, - EV_KEY, BTN_LEFT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_SYN, SYN_REPORT, - -1); - - libevdev_enable_event_code(dev, EV_REP, REP_DELAY, &delay); - libevdev_enable_event_code(dev, EV_REP, REP_PERIOD, &period); - - ck_assert_int_eq(libevdev_has_event_type(dev, EV_REP), 1); - ck_assert_int_eq(libevdev_has_event_code(dev, EV_REP, REP_DELAY), 1); - ck_assert_int_eq(libevdev_has_event_code(dev, EV_REP, REP_PERIOD), 1); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_REP, REP_DELAY), 500); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_REP, REP_PERIOD), 200); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_event_value_setters) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs[2] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - }; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - EV_LED, LED_NUML, - EV_LED, LED_CAPSL, - EV_SW, SW_HEADPHONE_INSERT, - EV_SW, SW_TABLET_MODE, - -1); - - ck_assert_int_eq(libevdev_get_event_value(dev, EV_KEY, BTN_LEFT), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_X), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_Y), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_REL, REL_X), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_REL, REL_Y), 0); - - ck_assert_int_eq(libevdev_set_event_value(dev, EV_KEY, BTN_LEFT, 1), 0); - ck_assert_int_eq(libevdev_set_event_value(dev, EV_KEY, BTN_RIGHT, 1), 0); - - ck_assert_int_eq(libevdev_get_event_value(dev, EV_KEY, BTN_LEFT), 1); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_KEY, BTN_RIGHT), 1); - - ck_assert_int_eq(libevdev_set_event_value(dev, EV_ABS, ABS_X, 10), 0); - ck_assert_int_eq(libevdev_set_event_value(dev, EV_ABS, ABS_Y, 20), 0); - - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_X), 10); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_Y), 20); - - ck_assert_int_eq(libevdev_set_event_value(dev, EV_LED, LED_NUML, 1), 0); - ck_assert_int_eq(libevdev_set_event_value(dev, EV_LED, LED_CAPSL, 1), 0); - - ck_assert_int_eq(libevdev_get_event_value(dev, EV_LED, LED_NUML), 1); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_LED, LED_CAPSL), 1); - - ck_assert_int_eq(libevdev_set_event_value(dev, EV_SW, SW_HEADPHONE_INSERT, 1), 0); - ck_assert_int_eq(libevdev_set_event_value(dev, EV_SW, SW_TABLET_MODE, 1), 0); - - ck_assert_int_eq(libevdev_get_event_value(dev, EV_SW, SW_HEADPHONE_INSERT), 1); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_SW, SW_TABLET_MODE), 1); - - uinput_device_free(uidev); - libevdev_free(dev); - -} -END_TEST - -START_TEST(test_event_value_setters_invalid) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs[2] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - }; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - ck_assert_int_eq(libevdev_set_event_value(dev, EV_REL, REL_X, 1), -1); - ck_assert_int_eq(libevdev_set_event_value(dev, EV_SW, SW_DOCK, 1), -1); - ck_assert_int_eq(libevdev_set_event_value(dev, EV_ABS, ABS_Z, 1), -1); - ck_assert_int_eq(libevdev_set_event_value(dev, EV_MAX + 1, 0, 1), -1); - ck_assert_int_eq(libevdev_set_event_value(dev, EV_SYN, SYN_REPORT, 0), -1); - - uinput_device_free(uidev); - libevdev_free(dev); - -} -END_TEST - -START_TEST(test_event_mt_value_setters) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs[5] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = 2 }, - }; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - -1); - - ck_assert_int_eq(libevdev_set_slot_value(dev, 1, ABS_MT_POSITION_X, 1), 0); - ck_assert_int_eq(libevdev_set_slot_value(dev, 1, ABS_MT_POSITION_Y, 2), 0); - ck_assert_int_eq(libevdev_set_slot_value(dev, 0, ABS_MT_POSITION_X, 3), 0); - ck_assert_int_eq(libevdev_set_slot_value(dev, 0, ABS_MT_POSITION_Y, 4), 0); - - ck_assert_int_eq(libevdev_get_slot_value(dev, 1, ABS_MT_POSITION_X), 1); - ck_assert_int_eq(libevdev_get_slot_value(dev, 1, ABS_MT_POSITION_Y), 2); - ck_assert_int_eq(libevdev_get_slot_value(dev, 0, ABS_MT_POSITION_X), 3); - ck_assert_int_eq(libevdev_get_slot_value(dev, 0, ABS_MT_POSITION_Y), 4); - - ck_assert_int_eq(libevdev_set_slot_value(dev, 1, ABS_MT_SLOT, 1), 0); - ck_assert_int_eq(libevdev_get_slot_value(dev, 1, ABS_MT_SLOT), 1); - ck_assert_int_eq(libevdev_get_current_slot(dev), 1); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_event_mt_value_setters_invalid) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs[5] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = 2 }, - }; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - -1); - - /* invalid axis */ - ck_assert_int_eq(libevdev_set_slot_value(dev, 1, ABS_Z, 1), -1); - /* valid, but non-mt axis */ - ck_assert_int_eq(libevdev_set_slot_value(dev, 1, ABS_X, 1), -1); - /* invalid mt axis */ - ck_assert_int_eq(libevdev_set_slot_value(dev, 1, ABS_MT_PRESSURE, 1), -1); - /* invalid slot no */ - ck_assert_int_eq(libevdev_set_slot_value(dev, 4, ABS_X, 1), -1); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_event_mt_value_setters_current_slot) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs[5] = { - { .value = ABS_X, .maximum = 1000 }, - { .value = ABS_Y, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .maximum = 1000 }, - { .value = ABS_MT_SLOT, .maximum = 2 }, - }; - - test_create_abs_device(&uidev, &dev, - ARRAY_LENGTH(abs), abs, - EV_SYN, SYN_REPORT, - -1); - - /* set_event_value/get_event_value works on the current slot */ - - ck_assert_int_eq(libevdev_get_current_slot(dev), 0); - ck_assert_int_eq(libevdev_set_event_value(dev, EV_ABS, ABS_MT_POSITION_X, 1), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_MT_POSITION_X), 1); - ck_assert_int_eq(libevdev_get_slot_value(dev, 0, ABS_MT_POSITION_X), 1); - - ck_assert_int_eq(libevdev_set_event_value(dev, EV_ABS, ABS_MT_SLOT, 1), 0); - ck_assert_int_eq(libevdev_get_current_slot(dev), 1); - ck_assert_int_eq(libevdev_set_event_value(dev, EV_ABS, ABS_MT_POSITION_X, 2), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_MT_POSITION_X), 2); - ck_assert_int_eq(libevdev_get_slot_value(dev, 1, ABS_MT_POSITION_X), 2); - - /* set slot 0, but current is still slot 1 */ - ck_assert_int_eq(libevdev_set_slot_value(dev, 0, ABS_MT_POSITION_X, 3), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_MT_POSITION_X), 2); - - ck_assert_int_eq(libevdev_set_event_value(dev, EV_ABS, ABS_MT_SLOT, 0), 0); - ck_assert_int_eq(libevdev_get_current_slot(dev), 0); - ck_assert_int_eq(libevdev_get_event_value(dev, EV_ABS, ABS_MT_POSITION_X), 3); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -TEST_SUITE_ROOT_PRIVILEGES(libevdev_events) -{ - Suite *s = suite_create("libevdev event tests"); - - add_test(s, test_next_event); - add_test(s, test_next_event_invalid_fd); - add_test(s, test_next_event_blocking); - add_test(s, test_syn_dropped_event); - add_test(s, test_event_type_filtered); - add_test(s, test_event_code_filtered); - add_test(s, test_has_event_pending); - add_test(s, test_has_event_pending_invalid_fd); - - add_test(s, test_syn_delta_button); - add_test(s, test_syn_delta_abs); - add_test(s, test_syn_delta_mt); - add_test(s, test_syn_delta_mt_reset_slot); - add_test(s, test_syn_delta_led); - add_test(s, test_syn_delta_sw); - add_test(s, test_syn_delta_fake_mt); - add_test(s, test_syn_delta_late_sync); - add_test(s, test_syn_delta_tracking_ids); - add_test(s, test_syn_delta_tracking_ids_btntool); - - add_test(s, test_skipped_sync); - add_test(s, test_incomplete_sync); - add_test(s, test_empty_sync); - - add_test(s, test_event_values); - add_test(s, test_event_values_invalid); - add_test(s, test_mt_event_values); - add_test(s, test_mt_event_values_invalid); - add_test(s, test_mt_slot_ranges_invalid); - add_test(s, test_mt_tracking_id_discard); - add_test(s, test_mt_tracking_id_discard_neg_1); - add_test(s, test_ev_rep_values); - - add_test(s, test_event_value_setters); - add_test(s, test_event_value_setters_invalid); - add_test(s, test_event_mt_value_setters); - add_test(s, test_event_mt_value_setters_invalid); - add_test(s, test_event_mt_value_setters_current_slot); - - return s; -} diff --git a/test/test-libevdev-has-event.c b/test/test-libevdev-has-event.c deleted file mode 100644 index a1f2fec1f999d1f8577b2ed67223600d56501174..0000000000000000000000000000000000000000 --- a/test/test-libevdev-has-event.c +++ /dev/null @@ -1,1211 +0,0 @@ -/* - * Copyright © 2013 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include -#include -#include -#include -#include - -#include "test-common.h" - -static int evbits[] = { - EV_SYN, EV_KEY, EV_REL, EV_ABS, EV_MSC, - EV_SW, EV_LED, EV_SND, EV_FF, - /* Intentionally skipping these, they're different - * EV_PWR, EV_FF_STATUS, EV_REP, */ - -1, -}; - -START_TEST(test_has_ev_bit) -{ - int *evbit = evbits; - - while(*evbit != -1) { - struct uinput_device* uidev; - struct libevdev *dev; - int i; - - if (*evbit == EV_ABS) { - struct input_absinfo abs = { ABS_X, 0, 2, 0, 0, 0}; - test_create_abs_device(&uidev, &dev, - 1, &abs, - -1); - } else - test_create_device(&uidev, &dev, - *evbit, 0, - -1); - - ck_assert_msg(libevdev_has_event_type(dev, EV_SYN), "for event type %d\n", *evbit); - ck_assert_msg(libevdev_has_event_type(dev, *evbit), "for event type %d\n", *evbit); - - for (i = 0; i <= EV_MAX; i++) { - if (i == EV_SYN || i == *evbit) - continue; - - ck_assert_msg(!libevdev_has_event_type(dev, i), "for event type %d\n", i); - } - - libevdev_free(dev); - uinput_device_free(uidev); - - evbit++; - } -} -END_TEST - -START_TEST(test_ev_bit_limits) -{ - int *evbit = evbits; - - while(*evbit != -1) { - struct uinput_device* uidev; - struct libevdev *dev; - - if (*evbit == EV_ABS) { - struct input_absinfo abs = { ABS_X, 0, 2, 0, 0, 0}; - test_create_abs_device(&uidev, &dev, - 1, &abs, - -1); - } else - test_create_device(&uidev, &dev, - *evbit, 0, - -1); - - ck_assert_int_eq(libevdev_has_event_type(dev, EV_MAX + 1), 0); - ck_assert_int_eq(libevdev_has_event_type(dev, INT_MAX), 0); - ck_assert_int_eq(libevdev_has_event_type(dev, UINT_MAX), 0); - - libevdev_free(dev); - uinput_device_free(uidev); - - evbit++; - } -} -END_TEST - -START_TEST(test_event_codes) -{ - int *evbit = evbits; - - while(*evbit != -1) { - struct uinput_device* uidev; - struct libevdev *dev; - int code, max; - if (*evbit == EV_SYN) { - evbit++; - continue; - } - -#ifdef __FreeBSD__ - /* Force feedback events are not supported by FreeBSD */ - if (*evbit == EV_FF) { - evbit++; - continue; - } -#endif - - max = libevdev_event_type_get_max(*evbit); - - for (code = 1; code < max; code += 10) { - if (*evbit == EV_ABS) { - struct input_absinfo abs = { code, 0, 2, 0, 0, 0}; - test_create_abs_device(&uidev, &dev, - 1, &abs, - -1); - } else - test_create_device(&uidev, &dev, - *evbit, code, - -1); - - ck_assert_msg(libevdev_has_event_type(dev, *evbit), "for event type %d\n", *evbit); - ck_assert_msg(libevdev_has_event_code(dev, *evbit, code), "for type %d code %d", *evbit, code); - ck_assert_msg(libevdev_has_event_code(dev, EV_SYN, SYN_REPORT), "for EV_SYN"); - /* always false */ - ck_assert_msg(!libevdev_has_event_code(dev, EV_PWR, 0), "for EV_PWR"); - - libevdev_free(dev); - uinput_device_free(uidev); - } - - evbit++; - } -} -END_TEST - -START_TEST(test_event_code_limits) -{ - int *evbit = evbits; - - while(*evbit != -1) { - struct uinput_device* uidev; - struct libevdev *dev; - int max; - - if (*evbit == EV_SYN) { - evbit++; - continue; - } - - max = libevdev_event_type_get_max(*evbit); - ck_assert(max != -1); - - if (*evbit == EV_ABS) { - struct input_absinfo abs = { ABS_X, 0, 2, 0, 0, 0}; - test_create_abs_device(&uidev, &dev, - 1, &abs, - -1); - } else - test_create_device(&uidev, &dev, - *evbit, 1, - -1); - - ck_assert_msg(!libevdev_has_event_code(dev, *evbit, max), "for type %d code %d", *evbit, max); - ck_assert_msg(!libevdev_has_event_code(dev, *evbit, INT_MAX), "for type %d code %d", *evbit, INT_MAX); - ck_assert_msg(!libevdev_has_event_code(dev, *evbit, UINT_MAX), "for type %d code %d", *evbit, UINT_MAX); - - libevdev_free(dev); - uinput_device_free(uidev); - - evbit++; - } -} -END_TEST - -START_TEST(test_ev_rep) -{ - struct libevdev *dev; - struct uinput_device* uidev; - int rc; - int rep, delay; - const int KERNEL_DEFAULT_REP = 250; - const int KERNEL_DEFAULT_DELAY = 33; - - /* EV_REP is special, it's always fully set if set at all, - can't test this through uinput though */ - uidev = uinput_device_new(TEST_DEVICE_NAME); - ck_assert(uidev != NULL); - rc = uinput_device_set_bit(uidev, EV_REP); - ck_assert_int_eq(rc, 0); - - rc = uinput_device_create(uidev); - ck_assert_int_eq(rc, 0); - - rc = libevdev_new_from_fd(uinput_device_get_fd(uidev), &dev); - ck_assert_int_eq(rc, 0); - - ck_assert_int_eq(libevdev_has_event_type(dev, EV_REP), 1); - ck_assert_int_eq(libevdev_has_event_code(dev, EV_REP, REP_DELAY), 1); - ck_assert_int_eq(libevdev_has_event_code(dev, EV_REP, REP_PERIOD), 1); - - ck_assert_int_eq(libevdev_get_repeat(dev, &rep, &delay), 0); - /* default values as set by the kernel, - see drivers/input/input.c:input_register_device() */ - ck_assert_int_eq(rep, KERNEL_DEFAULT_REP); - ck_assert_int_eq(delay, KERNEL_DEFAULT_DELAY); - - libevdev_free(dev); - uinput_device_free(uidev); -} -END_TEST - -START_TEST(test_ev_rep_values) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int delay = 0xab, period = 0xbc; - - /* EV_REP is special, it's always fully set if set at all, can't set - it through uinput though. */ - test_create_device(&uidev, &dev, -1); - - ck_assert_int_eq(libevdev_get_repeat(dev, NULL, NULL), -1); - ck_assert_int_eq(libevdev_get_repeat(dev, &delay, NULL), -1); - ck_assert_int_eq(libevdev_get_repeat(dev, NULL, &period), -1); - ck_assert_int_eq(libevdev_get_repeat(dev, &delay, &period), -1); - - ck_assert_int_eq(delay, 0xab); - ck_assert_int_eq(period, 0xbc); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_input_props) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc, i; - struct input_absinfo abs = { .value = 0, .minimum = 0, .maximum = 2}; - - uidev = uinput_device_new(TEST_DEVICE_NAME); - rc = uinput_device_set_abs_bit(uidev, ABS_X, &abs); - ck_assert_int_eq(rc, 0); - uinput_device_set_prop(uidev, INPUT_PROP_DIRECT); - uinput_device_set_prop(uidev, INPUT_PROP_BUTTONPAD); - rc = uinput_device_create(uidev); - ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc)); - - rc = libevdev_new_from_fd(uinput_device_get_fd(uidev), &dev); - ck_assert_msg(rc == 0, "Failed to create device: %s", strerror(-rc)); - - for (i = 0; i < INPUT_PROP_CNT; i++) { - if (i == INPUT_PROP_DIRECT || i == INPUT_PROP_BUTTONPAD) - ck_assert_int_eq(libevdev_has_property(dev, i), 1); - else - ck_assert_int_eq(libevdev_has_property(dev, i), 0); - } - - ck_assert_int_eq(libevdev_has_property(dev, INPUT_PROP_MAX + 1), 0); - ck_assert_int_eq(libevdev_has_property(dev, INPUT_PROP_MAX), 0); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_set_input_props) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc, fd; - struct input_absinfo abs = { .value = 0, .minimum = 0, .maximum = 2}; - - dev = libevdev_new(); - ck_assert_int_eq(libevdev_enable_property(dev, INPUT_PROP_MAX + 1), -1); - ck_assert_int_eq(libevdev_enable_property(dev, INPUT_PROP_DIRECT), 0); - ck_assert_int_eq(libevdev_enable_property(dev, INPUT_PROP_BUTTONPAD), 0); - ck_assert_int_eq(libevdev_has_property(dev, INPUT_PROP_DIRECT), 1); - ck_assert_int_eq(libevdev_has_property(dev, INPUT_PROP_BUTTONPAD), 1); - - uidev = uinput_device_new(TEST_DEVICE_NAME); - rc = uinput_device_set_abs_bit(uidev, ABS_X, &abs); - ck_assert_int_eq(rc, 0); - uinput_device_set_prop(uidev, INPUT_PROP_BUTTONPAD); - rc = uinput_device_create(uidev); - ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc)); - - fd = uinput_device_get_fd(uidev); - rc = libevdev_set_fd(dev, fd); - ck_assert_msg(rc == 0, "Failed to create device: %s", strerror(-rc)); - - ck_assert_int_eq(libevdev_has_property(dev, INPUT_PROP_DIRECT), 0); - ck_assert_int_eq(libevdev_has_property(dev, INPUT_PROP_BUTTONPAD), 1); - - /* Test disabling the properties too */ - ck_assert_int_eq(libevdev_disable_property(dev, INPUT_PROP_MAX + 1), -1); - ck_assert_int_eq(libevdev_disable_property(dev, INPUT_PROP_DIRECT), 0); - ck_assert_int_eq(libevdev_disable_property(dev, INPUT_PROP_BUTTONPAD), 0); - ck_assert_int_eq(libevdev_has_property(dev, INPUT_PROP_DIRECT), 0); - ck_assert_int_eq(libevdev_has_property(dev, INPUT_PROP_BUTTONPAD), 0); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_slot_init_value) -{ - struct uinput_device *uidev; - struct libevdev *dev; - int rc; - const int nabs = 6; - int i; - int fd; - struct input_absinfo abs[] = { - { .value = ABS_X, .minimum = 0, .maximum = 1000 }, - { .value = ABS_Y, .minimum = 0, .maximum = 1000 }, - { .value = ABS_MT_POSITION_X, .minimum = 0, .maximum = 1000 }, - { .value = ABS_MT_POSITION_Y, .minimum = 0, .maximum = 1000 }, - { .value = ABS_MT_TRACKING_ID, .minimum = -1, .maximum = 2 }, - { .value = ABS_MT_SLOT, .minimum = 0, .maximum = 1 } - }; - - uidev = uinput_device_new(TEST_DEVICE_NAME); - - for (i = 0; i < nabs; i++) { - rc = uinput_device_set_abs_bit(uidev, abs[i].value, &abs[i]); - ck_assert_int_eq(rc, 0); - } - - rc = uinput_device_create(uidev); - ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc)); - - fd = uinput_device_get_fd(uidev); - rc = fcntl(fd, F_SETFL, O_NONBLOCK); - ck_assert_msg(rc == 0, "fcntl failed: %s", strerror(errno)); - - uinput_device_event(uidev, EV_ABS, ABS_MT_SLOT, 0); - uinput_device_event(uidev, EV_ABS, ABS_X, 100); - uinput_device_event(uidev, EV_ABS, ABS_Y, 500); - uinput_device_event(uidev, EV_ABS, ABS_MT_POSITION_X, 100); - uinput_device_event(uidev, EV_ABS, ABS_MT_POSITION_Y, 500); - uinput_device_event(uidev, EV_ABS, ABS_MT_TRACKING_ID, 1); - uinput_device_event(uidev, EV_ABS, ABS_MT_SLOT, 1); - uinput_device_event(uidev, EV_ABS, ABS_X, 1); - uinput_device_event(uidev, EV_ABS, ABS_Y, 5); - uinput_device_event(uidev, EV_ABS, ABS_MT_POSITION_X, 1); - uinput_device_event(uidev, EV_ABS, ABS_MT_POSITION_Y, 5); - uinput_device_event(uidev, EV_ABS, ABS_MT_TRACKING_ID, 2); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - - rc = libevdev_new_from_fd(fd, &dev); - ck_assert_int_eq(rc, 0); - - ck_assert_int_eq(libevdev_get_current_slot(dev), 1); - ck_assert_int_eq(libevdev_get_slot_value(dev, 0, ABS_MT_POSITION_X), 100); - ck_assert_int_eq(libevdev_get_slot_value(dev, 0, ABS_MT_POSITION_Y), 500); - ck_assert_int_eq(libevdev_get_slot_value(dev, 1, ABS_MT_POSITION_X), 1); - ck_assert_int_eq(libevdev_get_slot_value(dev, 1, ABS_MT_POSITION_Y), 5); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_no_slots) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs[] = { - { .value = ABS_X, .minimum = 0, .maximum = 2 }, - { .value = ABS_Y, .minimum = 0, .maximum = 2 }, - { .value = ABS_MT_POSITION_X, .minimum = 0, .maximum = 2 }, - { .value = ABS_MT_POSITION_Y, .minimum = 0, .maximum = 2 } - }; - - test_create_abs_device(&uidev, &dev, 4, abs, - -1); - - ck_assert_int_eq(libevdev_get_num_slots(dev), -1); - ck_assert_int_eq(libevdev_get_current_slot(dev), -1); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_slot_number) -{ - struct uinput_device* uidev; - struct libevdev *dev; - const int nslots = 4; - struct input_absinfo abs[] = { - { .value = ABS_X, .minimum = 0, .maximum = 2 }, - { .value = ABS_Y, .minimum = 0, .maximum = 2 }, - { .value = ABS_MT_POSITION_X, .minimum = 0, .maximum = 2 }, - { .value = ABS_MT_POSITION_Y, .minimum = 0, .maximum = 2 }, - { .value = ABS_MT_SLOT, .minimum = 0, .maximum = nslots - 1 } - }; - - test_create_abs_device(&uidev, &dev, 5, abs, - -1); - - ck_assert_int_eq(libevdev_get_num_slots(dev), nslots); - ck_assert_int_eq(libevdev_get_current_slot(dev), 0); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_invalid_mt_device) -{ - struct uinput_device* uidev; - struct libevdev *dev; - const int nslots = 4; - int value; - struct input_absinfo abs[] = { - { .value = ABS_X, .minimum = 0, .maximum = 2 }, - { .value = ABS_Y, .minimum = 0, .maximum = 2 }, - { .value = ABS_MT_POSITION_X, .minimum = 0, .maximum = 2 }, - { .value = ABS_MT_POSITION_Y, .minimum = 0, .maximum = 2 }, - { .value = ABS_MT_SLOT - 1, .minimum = 0, .maximum = 2 }, - { .value = ABS_MT_SLOT, .minimum = 0, .maximum = nslots - 1 } - }; - - test_create_abs_device(&uidev, &dev, 6, abs, - -1); - - ck_assert_int_eq(libevdev_get_num_slots(dev), -1); - ck_assert_int_eq(libevdev_get_current_slot(dev), -1); - ck_assert_int_eq(libevdev_set_slot_value(dev, 0, ABS_MT_POSITION_X, 0), -1); - ck_assert_int_eq(libevdev_fetch_slot_value(dev, 0, ABS_MT_POSITION_X, &value), 0); - - ck_assert(libevdev_has_event_code(dev, EV_ABS, ABS_MT_SLOT - 1)); - ck_assert(libevdev_has_event_code(dev, EV_ABS, ABS_MT_SLOT)); - - ck_assert_int_eq(libevdev_set_event_value(dev, EV_ABS, ABS_MT_SLOT, 1), 0); - ck_assert(libevdev_get_event_value(dev, EV_ABS, ABS_MT_SLOT) == 1); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_name) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_id ids = {1, 2, 3, 4}; - const char *str; - int rc; - - dev = libevdev_new(); - - str = libevdev_get_name(dev); - ck_assert(str != NULL); - ck_assert_int_eq(strlen(str), 0); - - rc = uinput_device_new_with_events(&uidev, TEST_DEVICE_NAME, &ids, - EV_REL, REL_X, - -1); - ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc)); - rc = libevdev_set_fd(dev, uinput_device_get_fd(uidev)); - ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc));; - - str = libevdev_get_name(dev); - ck_assert_int_eq(strcmp(str, TEST_DEVICE_NAME), 0); - - str = libevdev_get_phys(dev); - ck_assert(str == NULL); - - str = libevdev_get_uniq(dev); - ck_assert(str == NULL); - - ck_assert_int_eq(libevdev_get_id_bustype(dev), ids.bustype); - ck_assert_int_eq(libevdev_get_id_vendor(dev), ids.vendor); - ck_assert_int_eq(libevdev_get_id_product(dev), ids.product); - ck_assert_int_eq(libevdev_get_id_version(dev), ids.version); - ck_assert_int_eq(libevdev_get_driver_version(dev), EV_VERSION); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_set_name) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_id ids = {1, 2, 3, 4}; - const char *str; - int rc; - - dev = libevdev_new(); - - libevdev_set_name(dev, "the name"); - libevdev_set_phys(dev, "the phys"); - libevdev_set_uniq(dev, "the uniq"); - - str = libevdev_get_name(dev); - ck_assert(str != NULL); - ck_assert_int_eq(strcmp(str, "the name"), 0); - - str = libevdev_get_phys(dev); - ck_assert(str != NULL); - ck_assert_int_eq(strcmp(str, "the phys"), 0); - - str = libevdev_get_uniq(dev); - ck_assert(str != NULL); - ck_assert_int_eq(strcmp(str, "the uniq"), 0); - - rc = uinput_device_new_with_events(&uidev, TEST_DEVICE_NAME, &ids, - EV_REL, REL_X, - -1); - ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc)); - rc = libevdev_set_fd(dev, uinput_device_get_fd(uidev)); - ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc));; - - str = libevdev_get_name(dev); - ck_assert_int_eq(strcmp(str, TEST_DEVICE_NAME), 0); - - str = libevdev_get_phys(dev); - ck_assert(str == NULL); - - str = libevdev_get_uniq(dev); - ck_assert(str == NULL); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_set_ids) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_id ids = {1, 2, 3, 4}; - int rc; - - dev = libevdev_new(); - - libevdev_set_id_product(dev, 10); - libevdev_set_id_vendor(dev, 20); - libevdev_set_id_bustype(dev, 30); - libevdev_set_id_version(dev, 40); - - ck_assert_int_eq(libevdev_get_id_product(dev), 10); - ck_assert_int_eq(libevdev_get_id_vendor(dev), 20); - ck_assert_int_eq(libevdev_get_id_bustype(dev), 30); - ck_assert_int_eq(libevdev_get_id_version(dev), 40); - - rc = uinput_device_new_with_events(&uidev, TEST_DEVICE_NAME, &ids, - EV_REL, REL_X, - -1); - ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc)); - rc = libevdev_set_fd(dev, uinput_device_get_fd(uidev)); - ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc));; - - ck_assert_int_eq(libevdev_get_id_bustype(dev), ids.bustype); - ck_assert_int_eq(libevdev_get_id_vendor(dev), ids.vendor); - ck_assert_int_eq(libevdev_get_id_product(dev), ids.product); - ck_assert_int_eq(libevdev_get_id_version(dev), ids.version); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_get_abs_info) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs; - const struct input_absinfo *a; - int rc; - - uidev = uinput_device_new(TEST_DEVICE_NAME); - ck_assert(uidev != NULL); - - abs.minimum = 0; - abs.maximum = 1000; - abs.fuzz = 1; - abs.flat = 2; - abs.resolution = 3; - abs.value = 0; - - uinput_device_set_abs_bit(uidev, ABS_X, &abs); - uinput_device_set_abs_bit(uidev, ABS_MT_POSITION_X, &abs); - - abs.minimum = -500; - abs.maximum = 500; - abs.fuzz = 10; - abs.flat = 20; - abs.resolution = 30; - abs.value = 0; - - uinput_device_set_abs_bit(uidev, ABS_Y, &abs); - uinput_device_set_abs_bit(uidev, ABS_MT_POSITION_Y, &abs); - - rc = uinput_device_create(uidev); - ck_assert_msg(rc == 0, "Failed to create device: %s", strerror(-rc)); - - rc = libevdev_new_from_fd(uinput_device_get_fd(uidev), &dev); - ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc));; - - ck_assert_int_eq(libevdev_get_abs_minimum(dev, ABS_MAX + 1), 0); - ck_assert_int_eq(libevdev_get_abs_maximum(dev, ABS_MAX + 1), 0); - ck_assert_int_eq(libevdev_get_abs_fuzz(dev, ABS_MAX + 1), 0); - ck_assert_int_eq(libevdev_get_abs_flat(dev, ABS_MAX + 1), 0); - ck_assert_int_eq(libevdev_get_abs_resolution(dev, ABS_MAX + 1), 0); - ck_assert(!libevdev_get_abs_info(dev, ABS_MAX + 1)); - - ck_assert_int_eq(libevdev_get_abs_minimum(dev, ABS_X), 0); - ck_assert_int_eq(libevdev_get_abs_maximum(dev, ABS_X), 1000); - ck_assert_int_eq(libevdev_get_abs_fuzz(dev, ABS_X), 1); - ck_assert_int_eq(libevdev_get_abs_flat(dev, ABS_X), 2); - ck_assert_int_eq(libevdev_get_abs_resolution(dev, ABS_X), 3); - a = libevdev_get_abs_info(dev, ABS_X); - ck_assert(a != NULL); - ck_assert_int_eq(a->minimum, 0); - ck_assert_int_eq(a->maximum, 1000); - ck_assert_int_eq(a->fuzz, 1); - ck_assert_int_eq(a->flat, 2); - ck_assert_int_eq(a->resolution, 3); - - ck_assert_int_eq(libevdev_get_abs_minimum(dev, ABS_MT_POSITION_X), 0); - ck_assert_int_eq(libevdev_get_abs_maximum(dev, ABS_MT_POSITION_X), 1000); - ck_assert_int_eq(libevdev_get_abs_fuzz(dev, ABS_MT_POSITION_X), 1); - ck_assert_int_eq(libevdev_get_abs_flat(dev, ABS_MT_POSITION_X), 2); - ck_assert_int_eq(libevdev_get_abs_resolution(dev, ABS_MT_POSITION_X), 3); - a = libevdev_get_abs_info(dev, ABS_MT_POSITION_X); - ck_assert(a != NULL); - ck_assert_int_eq(a->minimum, 0); - ck_assert_int_eq(a->maximum, 1000); - ck_assert_int_eq(a->fuzz, 1); - ck_assert_int_eq(a->flat, 2); - ck_assert_int_eq(a->resolution, 3); - - ck_assert_int_eq(libevdev_get_abs_minimum(dev, ABS_Y), -500); - ck_assert_int_eq(libevdev_get_abs_maximum(dev, ABS_Y), 500); - ck_assert_int_eq(libevdev_get_abs_fuzz(dev, ABS_Y), 10); - ck_assert_int_eq(libevdev_get_abs_flat(dev, ABS_Y), 20); - ck_assert_int_eq(libevdev_get_abs_resolution(dev, ABS_Y), 30); - a = libevdev_get_abs_info(dev, ABS_Y); - ck_assert(a != NULL); - ck_assert_int_eq(a->minimum, -500); - ck_assert_int_eq(a->maximum, 500); - ck_assert_int_eq(a->fuzz, 10); - ck_assert_int_eq(a->flat, 20); - ck_assert_int_eq(a->resolution, 30); - - ck_assert_int_eq(libevdev_get_abs_minimum(dev, ABS_MT_POSITION_Y), -500); - ck_assert_int_eq(libevdev_get_abs_maximum(dev, ABS_MT_POSITION_Y), 500); - ck_assert_int_eq(libevdev_get_abs_fuzz(dev, ABS_MT_POSITION_Y), 10); - ck_assert_int_eq(libevdev_get_abs_flat(dev, ABS_MT_POSITION_Y), 20); - ck_assert_int_eq(libevdev_get_abs_resolution(dev, ABS_MT_POSITION_Y), 30); - a = libevdev_get_abs_info(dev, ABS_MT_POSITION_Y); - ck_assert(a != NULL); - ck_assert_int_eq(a->minimum, -500); - ck_assert_int_eq(a->maximum, 500); - ck_assert_int_eq(a->fuzz, 10); - ck_assert_int_eq(a->flat, 20); - ck_assert_int_eq(a->resolution, 30); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_set_abs) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs[2]; - struct input_absinfo a; - - memset(abs, 0, sizeof(abs)); - abs[0].value = ABS_X; - abs[0].maximum = 1000; - - abs[1].value = ABS_Y; - abs[1].maximum = 1000; - - test_create_abs_device(&uidev, &dev, - 2, abs, - EV_SYN, - -1); - - libevdev_set_abs_minimum(dev, ABS_X, 1); - libevdev_set_abs_minimum(dev, ABS_Y, 5); - ck_assert_int_eq(libevdev_get_abs_minimum(dev, ABS_X), 1); - ck_assert_int_eq(libevdev_get_abs_minimum(dev, ABS_Y), 5); - - libevdev_set_abs_maximum(dev, ABS_X, 3000); - libevdev_set_abs_maximum(dev, ABS_Y, 5000); - ck_assert_int_eq(libevdev_get_abs_maximum(dev, ABS_X), 3000); - ck_assert_int_eq(libevdev_get_abs_maximum(dev, ABS_Y), 5000); - - libevdev_set_abs_fuzz(dev, ABS_X, 3); - libevdev_set_abs_fuzz(dev, ABS_Y, 5); - ck_assert_int_eq(libevdev_get_abs_fuzz(dev, ABS_X), 3); - ck_assert_int_eq(libevdev_get_abs_fuzz(dev, ABS_Y), 5); - - libevdev_set_abs_flat(dev, ABS_X, 8); - libevdev_set_abs_flat(dev, ABS_Y, 15); - ck_assert_int_eq(libevdev_get_abs_flat(dev, ABS_X), 8); - ck_assert_int_eq(libevdev_get_abs_flat(dev, ABS_Y), 15); - - libevdev_set_abs_resolution(dev, ABS_X, 80); - libevdev_set_abs_resolution(dev, ABS_Y, 150); - ck_assert_int_eq(libevdev_get_abs_resolution(dev, ABS_X), 80); - ck_assert_int_eq(libevdev_get_abs_resolution(dev, ABS_Y), 150); - - a.value = 0; - a.minimum = 10; - a.maximum = 100; - a.fuzz = 13; - a.flat = 1; - a.resolution = 16; - - libevdev_set_abs_info(dev, ABS_X, &a); - ck_assert_int_eq(memcmp(&a, libevdev_get_abs_info(dev, ABS_X), sizeof(a)), 0); - - libevdev_set_abs_minimum(dev, ABS_Z, 10); - ck_assert_int_eq(libevdev_has_event_code(dev, EV_ABS, ABS_Z), 0); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_enable_bit) -{ - struct uinput_device* uidev; - struct libevdev *dev, *dev2; - struct input_absinfo abs = { .value = ABS_X, .minimum = 0, .maximum = 2 }; - int rc; - - test_create_abs_device(&uidev, &dev, 1, &abs, - -1); - - ck_assert(!libevdev_has_event_code(dev, EV_ABS, ABS_Y)); - ck_assert(!libevdev_has_event_type(dev, EV_REL)); - ck_assert(!libevdev_has_event_code(dev, EV_REL, REL_X)); - - abs.minimum = 0; - abs.maximum = 100; - abs.fuzz = 1; - abs.flat = 2; - abs.resolution = 3; - - ck_assert_int_eq(libevdev_enable_event_code(dev, EV_ABS, ABS_Y, &abs), 0); - ck_assert(libevdev_has_event_code(dev, EV_ABS, ABS_Y)); - - ck_assert_int_eq(libevdev_enable_event_type(dev, EV_REL), 0); - ck_assert(libevdev_has_event_type(dev, EV_REL)); - ck_assert(!libevdev_has_event_code(dev, EV_REL, REL_X)); - - ck_assert_int_eq(libevdev_enable_event_code(dev, EV_REL, REL_X, NULL), 0); - ck_assert(libevdev_has_event_code(dev, EV_REL, REL_X)); - - /* make sure kernel device is unchanged */ - rc = libevdev_new_from_fd(uinput_device_get_fd(uidev), &dev2); - ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc)); - ck_assert(libevdev_has_event_code(dev2, EV_ABS, ABS_X)); - ck_assert(!libevdev_has_event_code(dev2, EV_ABS, ABS_Y)); - ck_assert(!libevdev_has_event_type(dev2, EV_REL)); - ck_assert(!libevdev_has_event_code(dev2, EV_REL, REL_X)); - libevdev_free(dev2); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_enable_bit_invalid) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs = { .value = ABS_X, .minimum = 0, .maximum = 1 }; - - test_create_abs_device(&uidev, &dev, 1, &abs, - -1); - - ck_assert_int_eq(libevdev_enable_event_code(dev, EV_ABS, ABS_MAX + 1, &abs), -1); - ck_assert_int_eq(libevdev_enable_event_code(dev, EV_MAX + 1, ABS_MAX + 1, &abs), -1); - ck_assert_int_eq(libevdev_enable_event_type(dev, EV_MAX + 1), -1); - /* there's a gap between EV_SW and EV_LED */ - ck_assert_int_eq(libevdev_enable_event_type(dev, EV_LED - 1), -1); - ck_assert_int_eq(libevdev_enable_event_code(dev, EV_LED - 1, 0, NULL), -1); - - ck_assert_int_eq(libevdev_enable_event_code(dev, EV_ABS, ABS_Y, NULL), -1); - ck_assert_int_eq(libevdev_enable_event_code(dev, EV_REP, REP_DELAY, NULL), -1); - ck_assert_int_eq(libevdev_enable_event_code(dev, EV_REL, REL_X, &abs), -1); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_disable_bit) -{ - struct uinput_device* uidev; - struct libevdev *dev, *dev2; - int rc; - struct input_absinfo abs[2] = { - { .value = ABS_X, .minimum = 0, .maximum = 1 }, - { .value = ABS_Y, .minimum = 0, .maximum = 1 }, - }; - - test_create_abs_device(&uidev, &dev, - 2, abs, - EV_REL, REL_X, - EV_REL, REL_Y, - -1); - - ck_assert(libevdev_has_event_code(dev, EV_ABS, ABS_X)); - ck_assert(libevdev_has_event_code(dev, EV_ABS, ABS_Y)); - ck_assert(libevdev_has_event_type(dev, EV_REL)); - ck_assert(libevdev_has_event_code(dev, EV_REL, REL_X)); - ck_assert(libevdev_has_event_code(dev, EV_REL, REL_Y)); - - ck_assert_int_eq(libevdev_disable_event_code(dev, EV_ABS, ABS_Y), 0); - ck_assert(!libevdev_has_event_code(dev, EV_ABS, ABS_Y)); - - ck_assert_int_eq(libevdev_disable_event_code(dev, EV_REL, REL_X), 0); - ck_assert(!libevdev_has_event_code(dev, EV_REL, REL_X)); - ck_assert(libevdev_has_event_code(dev, EV_REL, REL_Y)); - ck_assert(libevdev_has_event_type(dev, EV_REL)); - - ck_assert_int_eq(libevdev_disable_event_type(dev, EV_REL), 0); - ck_assert(!libevdev_has_event_type(dev, EV_REL)); - ck_assert(!libevdev_has_event_code(dev, EV_REL, REL_X)); - ck_assert(!libevdev_has_event_code(dev, EV_REL, REL_Y)); - - /* make sure kernel device is unchanged */ - rc = libevdev_new_from_fd(uinput_device_get_fd(uidev), &dev2); - ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc)); - ck_assert(libevdev_has_event_code(dev2, EV_ABS, ABS_X)); - ck_assert(libevdev_has_event_code(dev2, EV_ABS, ABS_Y)); - ck_assert(libevdev_has_event_type(dev2, EV_REL)); - ck_assert(libevdev_has_event_code(dev2, EV_REL, REL_X)); - ck_assert(libevdev_has_event_code(dev2, EV_REL, REL_Y)); - libevdev_free(dev2); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_disable_bit_invalid) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs = { .value = ABS_X, .minimum = 0, .maximum = 1 }; - - test_create_abs_device(&uidev, &dev, 1, &abs, -1); - - /* there's a gap between EV_SW and EV_LED */ - ck_assert_int_eq(libevdev_disable_event_type(dev, EV_LED - 1), -1); - ck_assert_int_eq(libevdev_disable_event_code(dev, EV_LED - 1, 0), -1); - ck_assert_int_eq(libevdev_disable_event_code(dev, EV_ABS, ABS_MAX + 1), -1); - ck_assert_int_eq(libevdev_disable_event_code(dev, EV_MAX + 1, ABS_MAX + 1), -1); - ck_assert_int_eq(libevdev_disable_event_type(dev, EV_MAX + 1), -1); - ck_assert_int_eq(libevdev_disable_event_type(dev, EV_SYN), -1); - ck_assert_int_eq(libevdev_disable_event_code(dev, EV_SYN, SYN_REPORT), -1); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_kernel_change_axis) -{ - struct uinput_device* uidev; - struct libevdev *dev, *dev2; - struct input_absinfo abs; - int rc; - - uidev = uinput_device_new(TEST_DEVICE_NAME); - ck_assert(uidev != NULL); - - abs.minimum = 0; - abs.maximum = 1000; - abs.fuzz = 1; - abs.flat = 2; - abs.resolution = 3; - abs.value = 0; - - uinput_device_set_abs_bit(uidev, ABS_X, &abs); - - rc = uinput_device_create(uidev); - ck_assert_msg(rc == 0, "Failed to create device: %s", strerror(-rc)); - - rc = libevdev_new_from_fd(uinput_device_get_fd(uidev), &dev); - ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc));; - - ck_assert_int_eq(libevdev_get_abs_minimum(dev, ABS_X), 0); - ck_assert_int_eq(libevdev_get_abs_maximum(dev, ABS_X), 1000); - ck_assert_int_eq(libevdev_get_abs_fuzz(dev, ABS_X), 1); - ck_assert_int_eq(libevdev_get_abs_flat(dev, ABS_X), 2); - ck_assert_int_eq(libevdev_get_abs_resolution(dev, ABS_X), 3); - - abs.minimum = 500; - abs.maximum = 5000; - abs.fuzz = 10; - abs.flat = 20; - abs.resolution = 30; - rc = libevdev_kernel_set_abs_info(dev, ABS_X, &abs); - ck_assert_int_eq(rc, 0); - - ck_assert_int_eq(libevdev_get_abs_minimum(dev, ABS_X), 500); - ck_assert_int_eq(libevdev_get_abs_maximum(dev, ABS_X), 5000); - ck_assert_int_eq(libevdev_get_abs_fuzz(dev, ABS_X), 10); - ck_assert_int_eq(libevdev_get_abs_flat(dev, ABS_X), 20); - ck_assert_int_eq(libevdev_get_abs_resolution(dev, ABS_X), 30); - - /* make sure kernel device is changed */ - rc = libevdev_new_from_fd(uinput_device_get_fd(uidev), &dev2); - ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc)); - ck_assert_int_eq(libevdev_get_abs_minimum(dev2, ABS_X), 500); - ck_assert_int_eq(libevdev_get_abs_maximum(dev2, ABS_X), 5000); - ck_assert_int_eq(libevdev_get_abs_fuzz(dev2, ABS_X), 10); - ck_assert_int_eq(libevdev_get_abs_flat(dev2, ABS_X), 20); - ck_assert_int_eq(libevdev_get_abs_resolution(dev2, ABS_X), 30); - libevdev_free(dev2); - - libevdev_free(dev); - uinput_device_free(uidev); -} -END_TEST - -START_TEST(test_device_kernel_change_axis_invalid) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs; - int rc; - - uidev = uinput_device_new(TEST_DEVICE_NAME); - ck_assert(uidev != NULL); - - abs.minimum = 0; - abs.maximum = 1000; - abs.fuzz = 1; - abs.flat = 2; - abs.resolution = 3; /* FIXME: value is unused, we can't test resolution */ - abs.value = 0; - - uinput_device_set_abs_bit(uidev, ABS_X, &abs); - - rc = uinput_device_create(uidev); - ck_assert_msg(rc == 0, "Failed to create device: %s", strerror(-rc)); - - rc = libevdev_new_from_fd(uinput_device_get_fd(uidev), &dev); - ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc));; - - rc = libevdev_kernel_set_abs_info(dev, ABS_MAX + 1, &abs); - ck_assert_int_eq(rc, -EINVAL); - - libevdev_free(dev); - uinput_device_free(uidev); -} -END_TEST - -START_TEST(test_device_kernel_set_abs_invalid_fd) -{ - struct uinput_device* uidev; - struct libevdev *dev; - struct input_absinfo abs[2]; - struct input_absinfo a; - int rc; - - libevdev_set_log_function(test_logfunc_ignore_error, NULL); - - memset(abs, 0, sizeof(abs)); - abs[0].value = ABS_X; - abs[0].maximum = 1000; - - abs[1].value = ABS_Y; - abs[1].maximum = 1000; - - dev = libevdev_new(); - rc = libevdev_kernel_set_abs_info(dev, ABS_X, &a); - ck_assert_int_eq(rc, -EBADF); - libevdev_free(dev); - - test_create_abs_device(&uidev, &dev, - 2, abs, - EV_SYN, - -1); - - libevdev_change_fd(dev, -2); - rc = libevdev_kernel_set_abs_info(dev, ABS_X, &a); - ck_assert_int_eq(rc, -EBADF); - - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_led_valid) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - - test_create_device(&uidev, &dev, - EV_LED, LED_NUML, - EV_LED, LED_CAPSL, - EV_LED, LED_COMPOSE, - -1); - - rc = libevdev_kernel_set_led_value(dev, LED_NUML, LIBEVDEV_LED_ON); - ck_assert_int_eq(rc, 0); - rc = libevdev_kernel_set_led_value(dev, LED_NUML, LIBEVDEV_LED_OFF); - ck_assert_int_eq(rc, 0); - - rc = libevdev_kernel_set_led_values(dev, - LED_NUML, LIBEVDEV_LED_OFF, - LED_CAPSL, LIBEVDEV_LED_ON, - LED_COMPOSE, LIBEVDEV_LED_OFF, - -1); - ck_assert_int_eq(rc, 0); - ck_assert_int_eq(0, libevdev_get_event_value(dev, EV_LED, LED_NUML)); - ck_assert_int_eq(1, libevdev_get_event_value(dev, EV_LED, LED_CAPSL)); - ck_assert_int_eq(0, libevdev_get_event_value(dev, EV_LED, LED_COMPOSE)); - - rc = libevdev_kernel_set_led_values(dev, - LED_NUML, LIBEVDEV_LED_ON, - LED_CAPSL, LIBEVDEV_LED_OFF, - LED_COMPOSE, LIBEVDEV_LED_ON, - -1); - ck_assert_int_eq(rc, 0); - ck_assert_int_eq(1, libevdev_get_event_value(dev, EV_LED, LED_NUML)); - ck_assert_int_eq(0, libevdev_get_event_value(dev, EV_LED, LED_CAPSL)); - ck_assert_int_eq(1, libevdev_get_event_value(dev, EV_LED, LED_COMPOSE)); - - /* make sure we ignore unset leds */ - rc = libevdev_kernel_set_led_values(dev, - LED_NUML, LIBEVDEV_LED_ON, - LED_CAPSL, LIBEVDEV_LED_OFF, - LED_SCROLLL, LIBEVDEV_LED_OFF, - LED_COMPOSE, LIBEVDEV_LED_ON, - -1); - ck_assert_int_eq(rc, 0); - ck_assert_int_eq(1, libevdev_get_event_value(dev, EV_LED, LED_NUML)); - ck_assert_int_eq(0, libevdev_get_event_value(dev, EV_LED, LED_CAPSL)); - ck_assert_int_eq(1, libevdev_get_event_value(dev, EV_LED, LED_COMPOSE)); - - libevdev_free(dev); - uinput_device_free(uidev); -} -END_TEST - -START_TEST(test_led_invalid) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - - test_create_device(&uidev, &dev, - EV_LED, LED_NUML, - EV_LED, LED_CAPSL, - EV_LED, LED_COMPOSE, - -1); - - rc = libevdev_kernel_set_led_value(dev, LED_MAX + 1, LIBEVDEV_LED_ON); - ck_assert_int_eq(rc, -EINVAL); - - rc = libevdev_kernel_set_led_value(dev, LED_NUML, LIBEVDEV_LED_OFF + 1); - ck_assert_int_eq(rc, -EINVAL); - - rc = libevdev_kernel_set_led_value(dev, LED_SCROLLL, LIBEVDEV_LED_ON); - ck_assert_int_eq(rc, 0); - - rc = libevdev_kernel_set_led_values(dev, - LED_NUML, LIBEVDEV_LED_OFF + 1, - -1); - ck_assert_int_eq(rc, -EINVAL); - - rc = libevdev_kernel_set_led_values(dev, - LED_MAX + 1, LIBEVDEV_LED_ON, - LED_NUML, LIBEVDEV_LED_OFF + 1, - -1); - ck_assert_int_eq(rc, -EINVAL); - - rc = libevdev_kernel_set_led_values(dev, - LED_SCROLLL, LIBEVDEV_LED_OFF, - -1); - ck_assert_int_eq(rc, 0); - - libevdev_free(dev); - uinput_device_free(uidev); -} -END_TEST - -START_TEST(test_led_same) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - - test_create_device(&uidev, &dev, - EV_LED, LED_NUML, - EV_LED, LED_CAPSL, - EV_LED, LED_COMPOSE, - -1); - - rc = libevdev_kernel_set_led_values(dev, - LED_NUML, LIBEVDEV_LED_OFF, - LED_NUML, LIBEVDEV_LED_ON, - LED_NUML, LIBEVDEV_LED_OFF, - LED_NUML, LIBEVDEV_LED_ON, - LED_NUML, LIBEVDEV_LED_OFF, - LED_NUML, LIBEVDEV_LED_ON, - LED_NUML, LIBEVDEV_LED_OFF, - LED_NUML, LIBEVDEV_LED_ON, - LED_NUML, LIBEVDEV_LED_OFF, - LED_NUML, LIBEVDEV_LED_ON, - LED_NUML, LIBEVDEV_LED_OFF, - LED_NUML, LIBEVDEV_LED_ON, - LED_NUML, LIBEVDEV_LED_OFF, - LED_NUML, LIBEVDEV_LED_ON, - LED_NUML, LIBEVDEV_LED_OFF, - LED_NUML, LIBEVDEV_LED_ON, - LED_NUML, LIBEVDEV_LED_OFF, - LED_NUML, LIBEVDEV_LED_ON, - LED_NUML, LIBEVDEV_LED_OFF, - LED_NUML, LIBEVDEV_LED_ON, - LED_NUML, LIBEVDEV_LED_OFF, - LED_NUML, LIBEVDEV_LED_ON, - LED_NUML, LIBEVDEV_LED_OFF, - LED_NUML, LIBEVDEV_LED_ON, - /* more than LED_CNT */ - -1); - ck_assert_int_eq(rc, 0); - ck_assert_int_eq(1, libevdev_get_event_value(dev, EV_LED, LED_NUML)); - ck_assert_int_eq(0, libevdev_get_event_value(dev, EV_LED, LED_CAPSL)); - ck_assert_int_eq(0, libevdev_get_event_value(dev, EV_LED, LED_COMPOSE)); - - libevdev_free(dev); - uinput_device_free(uidev); -} -END_TEST - -TEST_SUITE_ROOT_PRIVILEGES(has_events) -{ - Suite *s = suite_create("libevdev_has_event tests"); - - add_test(s, test_ev_bit_limits); - add_test(s, test_has_ev_bit); - - add_test(s, test_event_codes); - add_test(s, test_event_code_limits); - - add_test(s, test_ev_rep); - add_test(s, test_ev_rep_values); - - add_test(s, test_input_props); - add_test(s, test_set_input_props); - - add_test(s, test_no_slots); - add_test(s, test_slot_number); - add_test(s, test_slot_init_value); - add_test(s, test_invalid_mt_device); - - add_test(s, test_device_name); - add_test(s, test_device_set_name); - add_test(s, test_device_set_ids); - add_test(s, test_device_get_abs_info); - - add_test(s, test_device_set_abs); - add_test(s, test_device_enable_bit); - add_test(s, test_device_enable_bit_invalid); - add_test(s, test_device_disable_bit); - add_test(s, test_device_disable_bit_invalid); - add_test(s, test_device_kernel_change_axis); - add_test(s, test_device_kernel_change_axis_invalid); - add_test(s, test_device_kernel_set_abs_invalid_fd); - - add_test(s, test_led_valid); - add_test(s, test_led_invalid); - add_test(s, test_led_same); - - return s; -} diff --git a/test/test-libevdev-init.c b/test/test-libevdev-init.c deleted file mode 100644 index 87d29101310c878ff6c6fdcc714620160039d0c4..0000000000000000000000000000000000000000 --- a/test/test-libevdev-init.c +++ /dev/null @@ -1,721 +0,0 @@ -/* - * Copyright © 2013 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include -#include -#include -#include -#include -#include -#include - -#include -#include "test-common.h" - -START_TEST(test_new_device) -{ - struct libevdev *dev; - - dev = libevdev_new(); - ck_assert(dev != NULL); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_free_device) -{ - libevdev_free(NULL); -} -END_TEST - -START_TEST(test_init_from_invalid_fd) -{ - int rc; - struct libevdev *dev = NULL; - - rc = libevdev_new_from_fd(-1, &dev); - - ck_assert(dev == NULL); - ck_assert_int_eq(rc, -EBADF); - - rc = libevdev_new_from_fd(STDIN_FILENO, &dev); - ck_assert(dev == NULL); - ck_assert_int_eq(rc, -ENOTTY); -} -END_TEST - -START_TEST(test_init_and_change_fd) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - - dev = libevdev_new(); - ck_assert(dev != NULL); - ck_assert_int_eq(libevdev_set_fd(dev, -1), -EBADF); - - libevdev_set_log_function(test_logfunc_ignore_error, NULL); - ck_assert_int_eq(libevdev_change_fd(dev, -1), -1); - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - rc = uinput_device_new_with_events(&uidev, - TEST_DEVICE_NAME, DEFAULT_IDS, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_REL, REL_WHEEL, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc)); - ck_assert_int_eq(libevdev_set_fd(dev, uinput_device_get_fd(uidev)), 0); - - libevdev_set_log_function(test_logfunc_ignore_error, NULL); - ck_assert_int_eq(libevdev_set_fd(dev, 0), -EBADF); - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - ck_assert_int_eq(libevdev_get_fd(dev), uinput_device_get_fd(uidev)); - - ck_assert_int_eq(libevdev_change_fd(dev, 0), 0); - ck_assert_int_eq(libevdev_get_fd(dev), 0); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -static int log_fn_called = 0; -static char *logdata = "test"; -static void logfunc(enum libevdev_log_priority priority, - void *data, - const char *file, int line, const char *func, - const char *f, va_list args) { - ck_assert_int_eq(strcmp(logdata, data), 0); - log_fn_called++; -} - -START_TEST(test_log_init) -{ - struct libevdev *dev = NULL; - enum libevdev_log_priority old; - - old = libevdev_get_log_priority(); - - libevdev_set_log_priority(LIBEVDEV_LOG_DEBUG); - - libevdev_set_log_function(logfunc, NULL); - libevdev_set_log_function(NULL, NULL); - - dev = libevdev_new(); - ck_assert(dev != NULL); - - libevdev_set_log_function(logfunc, logdata); - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - - libevdev_set_log_function(NULL, NULL); - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - - libevdev_set_log_function(logfunc, logdata); - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - - /* libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL) should - trigger a log message. We called it three times, but only twice - with the logfunc set, thus, ensure we only called the logfunc - twice */ - ck_assert_int_eq(log_fn_called, 2); - - libevdev_free(dev); - - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - log_fn_called = 0; - - libevdev_set_log_priority(old); -} -END_TEST - -START_TEST(test_log_default_priority) -{ - ck_assert_int_eq(libevdev_get_log_priority(), LIBEVDEV_LOG_INFO); -} -END_TEST - -START_TEST(test_log_set_get_priority) -{ - enum libevdev_log_priority pri; - enum libevdev_log_priority old; - - old = libevdev_get_log_priority(); - - pri = LIBEVDEV_LOG_DEBUG; - libevdev_set_log_priority(pri); - ck_assert_int_eq(libevdev_get_log_priority(), pri); - - pri = LIBEVDEV_LOG_INFO; - libevdev_set_log_priority(pri); - ck_assert_int_eq(libevdev_get_log_priority(), pri); - - pri = LIBEVDEV_LOG_ERROR; - libevdev_set_log_priority(pri); - ck_assert_int_eq(libevdev_get_log_priority(), pri); - - /* debug and above is clamped */ - pri = LIBEVDEV_LOG_DEBUG + 1; - libevdev_set_log_priority(pri); - ck_assert_int_eq(libevdev_get_log_priority(), LIBEVDEV_LOG_DEBUG); - - /* error and below is not clamped, we need this for another test */ - pri = LIBEVDEV_LOG_ERROR - 1; - libevdev_set_log_priority(pri); - ck_assert_int_eq(libevdev_get_log_priority(), pri); - - libevdev_set_log_priority(old); -} -END_TEST - -START_TEST(test_log_priority) -{ - struct libevdev *dev = NULL; - enum libevdev_log_priority old; - - old = libevdev_get_log_priority(); - - libevdev_set_log_function(logfunc, logdata); - - dev = libevdev_new(); - ck_assert(dev != NULL); - - libevdev_set_log_priority(LIBEVDEV_LOG_DEBUG); - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - ck_assert_int_eq(log_fn_called, 1); - - libevdev_set_log_priority(LIBEVDEV_LOG_INFO); - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - ck_assert_int_eq(log_fn_called, 2); - - libevdev_set_log_priority(LIBEVDEV_LOG_ERROR); - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - ck_assert_int_eq(log_fn_called, 3); - - /* we don't have any log msgs > ERROR at the moment, so test it by - setting an invalid priority. */ - libevdev_set_log_priority(LIBEVDEV_LOG_ERROR - 1); - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - ck_assert_int_eq(log_fn_called, 3); - - libevdev_free(dev); - - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - log_fn_called = 0; - - libevdev_set_log_priority(old); -} -END_TEST - -static char *logdata_1 = "foo"; -static char *logdata_2 = "bar"; -static int log_data_fn_called = 0; -static void logfunc_data(enum libevdev_log_priority priority, - void *data, - const char *file, int line, const char *func, - const char *f, va_list args) { - switch(log_data_fn_called) { - case 0: ck_assert(data == logdata_1); break; - case 1: ck_assert(data == logdata_2); break; - case 2: ck_assert(data == NULL); break; - default: - ck_abort(); - } - log_data_fn_called++; -} - -START_TEST(test_log_data) -{ - struct libevdev *dev = NULL; - - dev = libevdev_new(); - ck_assert(dev != NULL); - - libevdev_set_log_function(logfunc_data, logdata_1); - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - - libevdev_set_log_function(logfunc_data, logdata_2); - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - - libevdev_set_log_function(logfunc_data, NULL); - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - - libevdev_free(dev); -} -END_TEST - -struct libevdev *devlogdata; -static int dev_log_fn_called = 0; -static void devlogfunc(const struct libevdev *dev, - enum libevdev_log_priority priority, - void *data, - const char *file, int line, const char *func, - const char *f, va_list args) -{ - ck_assert(dev == data); - dev_log_fn_called++; -} - -START_TEST(test_device_log_init) -{ - struct libevdev *dev = NULL; - enum libevdev_log_priority old; - - old = libevdev_get_log_priority(); - libevdev_set_log_priority(LIBEVDEV_LOG_DEBUG); - libevdev_set_log_function(logfunc, logdata); - - /* error for NULL device */ - libevdev_set_device_log_function(NULL, NULL, - LIBEVDEV_LOG_ERROR, NULL); - ck_assert_int_eq(log_fn_called, 1); - - /* error for NULL device */ - libevdev_set_device_log_function(NULL, devlogfunc, - LIBEVDEV_LOG_ERROR, NULL); - ck_assert_int_eq(log_fn_called, 2); - - log_fn_called = 0; - - dev = libevdev_new(); - ck_assert(dev != NULL); - - libevdev_set_device_log_function(dev, NULL, - LIBEVDEV_LOG_ERROR, NULL); - - /* libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL) should - trigger a log message. */ - - /* expect global handler triggered */ - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - ck_assert_int_eq(log_fn_called, 1); - ck_assert_int_eq(dev_log_fn_called, 0); - - /* expect device handler triggered */ - libevdev_set_device_log_function(dev, devlogfunc, - LIBEVDEV_LOG_ERROR, dev); - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - ck_assert_int_eq(log_fn_called, 1); - ck_assert_int_eq(dev_log_fn_called, 1); - - /* device handler set, but priority filters. don't expect any log - handler to be called. - we don't have any log msgs > ERROR at the moment, so test it by - setting an invalid priority. */ - libevdev_set_device_log_function(dev, devlogfunc, - LIBEVDEV_LOG_ERROR - 1, dev); - libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, NULL); - ck_assert_int_eq(log_fn_called, 1); - ck_assert_int_eq(dev_log_fn_called, 1); - - libevdev_free(dev); - - log_fn_called = 0; - libevdev_set_log_priority(old); - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - -} -END_TEST - -START_TEST(test_device_init) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - - rc = uinput_device_new_with_events(&uidev, - TEST_DEVICE_NAME, DEFAULT_IDS, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_REL, REL_WHEEL, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc)); - - dev = libevdev_new(); - ck_assert(dev != NULL); - rc = libevdev_set_fd(dev, uinput_device_get_fd(uidev)); - ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc));; - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_init_from_fd) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - - rc = uinput_device_new_with_events(&uidev, - TEST_DEVICE_NAME, DEFAULT_IDS, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_REL, REL_WHEEL, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - ck_assert_msg(rc == 0, "Failed to create uinput device: %s", strerror(-rc)); - - rc = libevdev_new_from_fd(uinput_device_get_fd(uidev), &dev); - ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc));; - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_grab) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_REL, REL_WHEEL, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - libevdev_set_log_function(test_logfunc_ignore_error, NULL); - rc = libevdev_grab(dev, 0); - ck_assert_int_eq(rc, -EINVAL); - rc = libevdev_grab(dev, 1); - ck_assert_int_eq(rc, -EINVAL); - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - rc = libevdev_grab(dev, LIBEVDEV_UNGRAB); - ck_assert_int_eq(rc, 0); - rc = libevdev_grab(dev, LIBEVDEV_GRAB); - ck_assert_int_eq(rc, 0); - rc = libevdev_grab(dev, LIBEVDEV_GRAB); - ck_assert_int_eq(rc, 0); - rc = libevdev_grab(dev, LIBEVDEV_UNGRAB); - ck_assert_int_eq(rc, 0); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_grab_invalid_fd) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - - libevdev_set_log_function(test_logfunc_ignore_error, NULL); - - dev = libevdev_new(); - rc = libevdev_grab(dev, 0); - ck_assert_int_eq(rc, -EBADF); - libevdev_free(dev); - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_REL, REL_WHEEL, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - libevdev_change_fd(dev, -2); - rc = libevdev_grab(dev, 0); - ck_assert_int_eq(rc, -EBADF); - - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_device_grab_change_fd) -{ - struct libevdev_uinput *uidev; - struct libevdev *dev, *other; - struct input_event e; - int rc; - int other_fd; - int dev_fd; - - dev = libevdev_new(); - libevdev_set_name(dev, "libevdev test device"); - libevdev_enable_event_code(dev, EV_REL, REL_X, NULL); - libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL); - libevdev_enable_event_code(dev, EV_KEY, BTN_LEFT, NULL); - - rc = libevdev_uinput_create_from_device(dev, - LIBEVDEV_UINPUT_OPEN_MANAGED, - &uidev); - ck_assert_int_eq(rc, 0); - libevdev_free(dev); - - dev_fd = open(libevdev_uinput_get_devnode(uidev), - O_RDONLY|O_NONBLOCK); - ck_assert_int_ne(dev_fd, -1); - rc = libevdev_new_from_fd(dev_fd, &dev); - ck_assert_int_eq(rc, 0); - - other_fd = open(libevdev_uinput_get_devnode(uidev), - O_RDONLY|O_NONBLOCK); - ck_assert_int_ne(other_fd, -1); - rc = libevdev_new_from_fd(other_fd, &other); - ck_assert_int_eq(rc, 0); - - /* check we're getting the events before the grab */ - libevdev_uinput_write_event(uidev, EV_REL, REL_X, -1); - libevdev_uinput_write_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(other, LIBEVDEV_READ_FLAG_NORMAL, &e); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - rc = libevdev_next_event(other, LIBEVDEV_READ_FLAG_NORMAL, &e); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - rc = libevdev_next_event(other, LIBEVDEV_READ_FLAG_NORMAL, &e); - ck_assert_int_eq(rc, -EAGAIN); - - /* no events after the grab */ - rc = libevdev_grab(dev, LIBEVDEV_GRAB); - ck_assert_int_eq(rc, 0); - libevdev_uinput_write_event(uidev, EV_REL, REL_X, -1); - libevdev_uinput_write_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_grab(dev, LIBEVDEV_GRAB); - ck_assert_int_eq(rc, 0); - rc = libevdev_next_event(other, LIBEVDEV_READ_FLAG_NORMAL, &e); - ck_assert_int_eq(rc, -EAGAIN); - - /* swapping the fd removes the grab */ - close(dev_fd); - dev_fd = open(libevdev_uinput_get_devnode(uidev), - O_RDONLY|O_NONBLOCK); - ck_assert_int_ne(dev_fd, -1); - rc = libevdev_change_fd(dev, dev_fd); - ck_assert_int_eq(rc, 0); - - /* check we're getting the events again */ - libevdev_uinput_write_event(uidev, EV_REL, REL_X, -1); - libevdev_uinput_write_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(other, LIBEVDEV_READ_FLAG_NORMAL, &e); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - rc = libevdev_next_event(other, LIBEVDEV_READ_FLAG_NORMAL, &e); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - rc = libevdev_next_event(other, LIBEVDEV_READ_FLAG_NORMAL, &e); - ck_assert_int_eq(rc, -EAGAIN); - - /* no events after the grab */ - rc = libevdev_grab(dev, LIBEVDEV_GRAB); - ck_assert_int_eq(rc, 0); - libevdev_uinput_write_event(uidev, EV_REL, REL_X, -1); - libevdev_uinput_write_event(uidev, EV_SYN, SYN_REPORT, 0); - rc = libevdev_next_event(other, LIBEVDEV_READ_FLAG_NORMAL, &e); - ck_assert_int_eq(rc, -EAGAIN); - - libevdev_uinput_destroy(uidev); - libevdev_free(dev); - libevdev_free(other); - close(dev_fd); - close(other_fd); -} -END_TEST - -START_TEST(test_set_clock_id) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int clockid; - int rc; - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_REL, REL_WHEEL, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - rc = libevdev_set_clock_id(dev, CLOCK_REALTIME); - ck_assert_int_eq(rc, 0); - - rc = libevdev_set_clock_id(dev, CLOCK_MONOTONIC); - ck_assert_int_eq(rc, 0); - -#ifdef __FreeBSD__ - clockid = CLOCK_MONOTONIC_FAST; -#else - clockid = CLOCK_MONOTONIC_RAW; -#endif - - rc = libevdev_set_clock_id(dev, clockid); - ck_assert_int_eq(rc, -EINVAL); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_set_clock_id_invalid_fd) -{ - struct uinput_device* uidev; - struct libevdev *dev; - int rc; - - libevdev_set_log_function(test_logfunc_ignore_error, NULL); - - dev = libevdev_new(); - rc = libevdev_set_clock_id(dev, CLOCK_MONOTONIC); - ck_assert_int_eq(rc, -EBADF); - libevdev_free(dev); - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_REL, REL_WHEEL, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - libevdev_change_fd(dev, -2); - rc = libevdev_set_clock_id(dev, CLOCK_MONOTONIC); - ck_assert_int_eq(rc, -EBADF); - - uinput_device_free(uidev); - libevdev_free(dev); -} -END_TEST - -START_TEST(test_clock_id_events) -{ - struct uinput_device* uidev; - struct libevdev *dev, *dev2; - int rc, fd; - struct input_event ev1, ev2; - struct timespec t1_real, t2_real; - struct timespec t1_mono, t2_mono; - int64_t t1, t2; - - test_create_device(&uidev, &dev, - EV_SYN, SYN_REPORT, - EV_REL, REL_X, - EV_REL, REL_Y, - EV_REL, REL_WHEEL, - EV_KEY, BTN_LEFT, - EV_KEY, BTN_MIDDLE, - EV_KEY, BTN_RIGHT, - -1); - - fd = open(uinput_device_get_devnode(uidev), O_RDONLY); - ck_assert_int_gt(fd, -1); - - rc = libevdev_new_from_fd(fd, &dev2); - ck_assert_msg(rc == 0, "Failed to create second device: %s", strerror(-rc)); - - rc = libevdev_set_clock_id(dev2, CLOCK_MONOTONIC); - ck_assert_int_eq(rc, 0); - - clock_gettime(CLOCK_REALTIME, &t1_real); - clock_gettime(CLOCK_MONOTONIC, &t1_mono); - uinput_device_event(uidev, EV_REL, REL_X, 1); - uinput_device_event(uidev, EV_SYN, SYN_REPORT, 0); - clock_gettime(CLOCK_REALTIME, &t2_real); - clock_gettime(CLOCK_MONOTONIC, &t2_mono); - - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev1); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - - rc = libevdev_next_event(dev2, LIBEVDEV_READ_FLAG_NORMAL, &ev2); - ck_assert_int_eq(rc, LIBEVDEV_READ_STATUS_SUCCESS); - - ck_assert_int_eq(ev1.type, ev2.type); - ck_assert_int_eq(ev1.code, ev2.code); - ck_assert_int_eq(ev1.value, ev2.value); - - t1 = ev1.input_event_sec * 1000000LL + ev1.input_event_usec; - t2 = ev2.input_event_sec * 1000000LL + ev2.input_event_usec; - ck_assert_int_ne(t1, t2); - - ck_assert_int_ge(ev1.input_event_sec, t1_real.tv_sec); - ck_assert_int_ge(ev1.input_event_usec, t1_real.tv_nsec/1000); - ck_assert_int_le(ev1.input_event_sec, t2_real.tv_sec); - ck_assert_int_le(ev1.input_event_usec, t2_real.tv_nsec/1000); - - ck_assert_int_ge(ev2.input_event_sec, t1_mono.tv_sec); - ck_assert_int_ge(ev2.input_event_usec, t1_mono.tv_nsec/1000); - ck_assert_int_le(ev2.input_event_sec, t2_mono.tv_sec); - ck_assert_int_le(ev2.input_event_usec, t2_mono.tv_nsec/1000); - - uinput_device_free(uidev); - libevdev_free(dev); - libevdev_free(dev2); - close(fd); -} -END_TEST - -TEST_SUITE_ROOT_PRIVILEGES(libevdev_init_test) -{ - Suite *s = suite_create("libevdev init tests"); - - add_test(s, test_new_device); - add_test(s, test_free_device); - add_test(s, test_init_from_invalid_fd); - add_test(s, test_init_and_change_fd); - - add_test(s, test_log_init); - add_test(s, test_log_priority); - add_test(s, test_log_set_get_priority); - add_test(s, test_log_default_priority); - add_test(s, test_log_data); - add_test(s, test_device_log_init); - - add_test(s, test_device_init); - add_test(s, test_device_init_from_fd); - - add_test(s, test_device_grab); - add_test(s, test_device_grab_invalid_fd); - add_test(s, test_device_grab_change_fd); - - add_test(s, test_set_clock_id); - add_test(s, test_set_clock_id_invalid_fd); - add_test(s, test_clock_id_events); - - return s; -} diff --git a/test/test-link.c b/test/test-link.c deleted file mode 100644 index a66ea8684fac5b360f84c5ae8c4f91af2f581ddc..0000000000000000000000000000000000000000 --- a/test/test-link.c +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include - -int main(void) { - return libevdev_new_from_fd(0, NULL); -} diff --git a/test/test-main.c b/test/test-main.c deleted file mode 100644 index 3763993bb3f1d7ce987ddaeee664362dc2842e4c..0000000000000000000000000000000000000000 --- a/test/test-main.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright © 2013 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "test-common.h" - -static int -is_debugger_attached(void) -{ - int rc = 1; - /* - * FreeBSD does not support PTRACE_ATTACH, disable attaching a debugger - * on FreeBSD by skipping the rest of the function and just return 1. - */ -#ifndef __FreeBSD__ - int status; - int pid = fork(); - - if (pid == -1) - return 0; - - if (pid == 0) { - int ppid = getppid(); - if (ptrace(PTRACE_ATTACH, ppid, NULL, NULL) == 0) { - waitpid(ppid, NULL, 0); - ptrace(PTRACE_CONT, NULL, NULL); - ptrace(PTRACE_DETACH, ppid, NULL, NULL); - rc = 0; - } - _exit(rc); - } else { - waitpid(pid, &status, 0); - rc = WEXITSTATUS(status); - } - -#endif /* !__FreeBSD__ */ - return rc; -} - -static bool -device_nodes_exist(void) -{ - struct stat st; - int rc; - - rc = stat("/dev/uinput", &st); - if (rc == -1 && errno == ENOENT) - return false; - - rc = stat("/dev/input", &st); - if (rc == -1 && errno == ENOENT) - return false; - - /* Any issues but ENOENT we just let the test suite blow up later */ - return true; -} - -extern const struct libevdev_test __start_test_section, __stop_test_section; - -int main(void) -{ - const struct libevdev_test *t; - const struct rlimit corelimit = {0, 0}; - int failed; - - for (t = &__start_test_section; t < &__stop_test_section; t++) { - if (t->needs_root_privileges) { - if (getenv("LIBEVDEV_SKIP_ROOT_TESTS")) - return 77; - - if (getuid() != 0) { - fprintf(stderr, "This test needs to run as root\n"); - return 77; - } - if (!device_nodes_exist()) { - fprintf(stderr, "This test needs /dev/input and /dev/uinput to exist\n"); - return 77; - } - - break; - } - } - - if (is_debugger_attached()) - setenv("CK_FORK", "no", 0); - - if (setrlimit(RLIMIT_CORE, &corelimit) != 0) - perror("WARNING: Core dumps not disabled. Reason"); - - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - SRunner *sr = srunner_create(NULL); - for (t = &__start_test_section; t < &__stop_test_section; t++) { - srunner_add_suite(sr, t->setup()); - } - - srunner_run_all(sr, CK_NORMAL); - - failed = srunner_ntests_failed(sr); - srunner_free(sr); - - return failed; -} diff --git a/test/test-static-symbols-leak.sh b/test/test-static-symbols-leak.sh deleted file mode 100755 index 9564a2ad9e743402e00afc3b8c4ed7fd796873a7..0000000000000000000000000000000000000000 --- a/test/test-static-symbols-leak.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash -# -# Hack to check for leaking symbols in the static library. -# See https://bugs.freedesktop.org/show_bug.cgi?id=82785 -# Note the spaces in the expressions! After the first grep, each line -# is " T symbol_name" - -test -z "$RUNNING_ON_VALGRIND" || exit 77 - -builddir="$1" - -test -f "$builddir/test-static-link" || (echo "Unable to find test file" && exit 1) -nm --extern-only "$builddir/test-static-link" | - grep -o -e " T .*" | \ - grep -v -e " main\$" \ - -e " atexit" \ - -e " mangle_path" \ - -e " *gcov.*" \ - -e " _.*" \ - -e " libevdev_*" && \ - echo "Leaking symbols found" && exit 1 || exit 0 diff --git a/test/test-uinput.c b/test/test-uinput.c deleted file mode 100644 index de4688b38ac2ba995cb7ad6a3392deb33ca9f105..0000000000000000000000000000000000000000 --- a/test/test-uinput.c +++ /dev/null @@ -1,480 +0,0 @@ -/* - * Copyright © 2013 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" -#include -#include -#include -#include -#include -#include - -#include "test-common.h" -#define UINPUT_NODE "/dev/uinput" - -START_TEST(test_uinput_create_device) -{ - struct libevdev *dev, *dev2; - struct libevdev_uinput *uidev; - int fd, uinput_fd; - unsigned int type, code; - int rc; - const char *devnode; - - dev = libevdev_new(); - ck_assert(dev != NULL); - libevdev_set_name(dev, TEST_DEVICE_NAME); - libevdev_enable_event_type(dev, EV_SYN); - libevdev_enable_event_type(dev, EV_REL); - libevdev_enable_event_code(dev, EV_REL, REL_X, NULL); - libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL); - libevdev_enable_event_code(dev, EV_REL, REL_MAX, NULL); - - rc = libevdev_uinput_create_from_device(dev, LIBEVDEV_UINPUT_OPEN_MANAGED, &uidev); - ck_assert_int_eq(rc, 0); - ck_assert(uidev != NULL); - - uinput_fd = libevdev_uinput_get_fd(uidev); - ck_assert_int_gt(uinput_fd, -1); - - devnode = libevdev_uinput_get_devnode(uidev); - ck_assert(devnode != NULL); - - fd = open(devnode, O_RDONLY); - ck_assert_int_gt(fd, -1); - rc = libevdev_new_from_fd(fd, &dev2); - ck_assert_int_eq(rc, 0); - - for (type = 0; type < EV_CNT; type++) { - int max = libevdev_event_type_get_max(type); - if (max == -1) - continue; - - for (code = 0; code < (unsigned int)max; code++) { - ck_assert_int_eq(libevdev_has_event_code(dev, type, code), - libevdev_has_event_code(dev2, type, code)); - } - } - - libevdev_free(dev); - libevdev_free(dev2); - libevdev_uinput_destroy(uidev); - close(fd); - - /* uinput fd is managed, so make sure it did get closed */ - ck_assert_int_eq(close(uinput_fd), -1); - ck_assert_int_eq(errno, EBADF); - -} -END_TEST - -START_TEST(test_uinput_create_device_invalid) -{ - struct libevdev *dev; - struct libevdev_uinput *uidev = NULL; - int rc; - - dev = libevdev_new(); - ck_assert(dev != NULL); - libevdev_set_name(dev, TEST_DEVICE_NAME); - libevdev_enable_event_type(dev, EV_SYN); - libevdev_enable_event_type(dev, EV_REL); - libevdev_enable_event_code(dev, EV_REL, REL_X, NULL); - libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL); - - libevdev_set_log_function(test_logfunc_ignore_error, NULL); - rc = libevdev_uinput_create_from_device(dev, -1, &uidev); - ck_assert_int_eq(rc, -EBADF); - ck_assert(uidev == NULL); - libevdev_set_log_function(test_logfunc_abort_on_error, NULL); - - libevdev_free(dev); -} -END_TEST - -START_TEST(test_uinput_create_device_from_fd) -{ - struct libevdev *dev, *dev2; - struct libevdev_uinput *uidev; - int fd, fd2; - unsigned int type, code; - int rc; - const char *devnode; - - dev = libevdev_new(); - ck_assert(dev != NULL); - libevdev_set_name(dev, TEST_DEVICE_NAME); - libevdev_enable_event_type(dev, EV_SYN); - libevdev_enable_event_type(dev, EV_REL); - libevdev_enable_event_code(dev, EV_REL, REL_X, NULL); - libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL); - - fd = open(UINPUT_NODE, O_RDWR); - ck_assert_int_gt(fd, -1); - - rc = libevdev_uinput_create_from_device(dev, fd, &uidev); - ck_assert_int_eq(rc, 0); - ck_assert(uidev != NULL); - - ck_assert_int_eq(libevdev_uinput_get_fd(uidev), fd); - - devnode = libevdev_uinput_get_devnode(uidev); - ck_assert(devnode != NULL); - - fd2 = open(devnode, O_RDONLY); - ck_assert_int_gt(fd2, -1); - rc = libevdev_new_from_fd(fd2, &dev2); - ck_assert_int_eq(rc, 0); - - for (type = 0; type < EV_CNT; type++) { - int max = libevdev_event_type_get_max(type); - if (max == -1) - continue; - - for (code = 0; code < (unsigned int)max; code++) { - ck_assert_int_eq(libevdev_has_event_code(dev, type, code), - libevdev_has_event_code(dev2, type, code)); - } - } - - libevdev_free(dev); - libevdev_free(dev2); - libevdev_uinput_destroy(uidev); - close(fd); - close(fd2); -} -END_TEST - -#ifdef __FreeBSD__ -START_TEST(test_uinput_check_devnode_bsd) -{ - struct libevdev *dev; - struct libevdev_uinput *uidev, *uidev2; - const char *devnode, *devnode2; - int fd, fd2; - int rc; - - dev = libevdev_new(); - ck_assert(dev != NULL); - libevdev_set_name(dev, TEST_DEVICE_NAME); - libevdev_enable_event_type(dev, EV_SYN); - libevdev_enable_event_type(dev, EV_REL); - libevdev_enable_event_code(dev, EV_REL, REL_X, NULL); - libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL); - - fd = open(UINPUT_NODE, O_RDWR); - ck_assert_int_gt(fd, -1); - fd2 = open(UINPUT_NODE, O_RDWR); - ck_assert_int_gt(fd2, -1); - - rc = libevdev_uinput_create_from_device(dev, fd, &uidev); - ck_assert_int_eq(rc, 0); - - /* create a second one */ - libevdev_set_name(dev, TEST_DEVICE_NAME " 2"); - rc = libevdev_uinput_create_from_device(dev, fd2, &uidev2); - ck_assert_int_eq(rc, 0); - - devnode = libevdev_uinput_get_devnode(uidev); - ck_assert(devnode != NULL); - - /* get syspath twice returns same pointer */ - devnode2 = libevdev_uinput_get_devnode(uidev); - ck_assert(devnode == devnode2); - - /* second dev has different devnode */ - devnode2 = libevdev_uinput_get_devnode(uidev2); - ck_assert(strcmp(devnode, devnode2) != 0); - - libevdev_uinput_destroy(uidev2); - libevdev_uinput_destroy(uidev); - - close(fd2); - close(fd); - - libevdev_free(dev); -} -END_TEST - -START_TEST(test_uinput_check_syspath_bsd) -{ - struct libevdev *dev; - struct libevdev_uinput *uidev; - const char *syspath; - int fd; - int rc; - - dev = libevdev_new(); - ck_assert(dev != NULL); - libevdev_set_name(dev, TEST_DEVICE_NAME); - libevdev_enable_event_type(dev, EV_SYN); - libevdev_enable_event_type(dev, EV_REL); - libevdev_enable_event_code(dev, EV_REL, REL_X, NULL); - libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL); - - fd = open(UINPUT_NODE, O_RDWR); - ck_assert_int_gt(fd, -1); - - rc = libevdev_uinput_create_from_device(dev, fd, &uidev); - ck_assert_int_eq(rc, 0); - - syspath = libevdev_uinput_get_syspath(uidev); - /* FreeBSD should always return NULL for libevdev_unput_get_syspath() */ - ck_assert(syspath == NULL); - - libevdev_uinput_destroy(uidev); - - close(fd); - - libevdev_free(dev); -} -END_TEST - -#else /* !__FreeBSD__ */ - -START_TEST(test_uinput_check_syspath_time) -{ - struct libevdev *dev; - struct libevdev_uinput *uidev, *uidev2; - const char *syspath, *syspath2; - int fd, fd2; - int rc; - - dev = libevdev_new(); - ck_assert(dev != NULL); - libevdev_set_name(dev, TEST_DEVICE_NAME); - libevdev_enable_event_type(dev, EV_SYN); - libevdev_enable_event_type(dev, EV_REL); - libevdev_enable_event_code(dev, EV_REL, REL_X, NULL); - libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL); - - fd = open(UINPUT_NODE, O_RDWR); - ck_assert_int_gt(fd, -1); - fd2 = open(UINPUT_NODE, O_RDWR); - ck_assert_int_gt(fd2, -1); - - rc = libevdev_uinput_create_from_device(dev, fd, &uidev); - ck_assert_int_eq(rc, 0); - - /* sleep for 1.5 seconds. sysfs resolution is 1 second, so - creating both devices without delay means - libevdev_uinput_get_syspath can't actually differ between - them. By waiting, we get different ctime for uidev and uidev2, - and exercise that part of the code. - */ - usleep(1500000); - - /* create a second one to test the syspath time filtering code */ - rc = libevdev_uinput_create_from_device(dev, fd2, &uidev2); - ck_assert_int_eq(rc, 0); - - syspath = libevdev_uinput_get_syspath(uidev); - ck_assert(syspath != NULL); - - /* get syspath twice returns same pointer */ - syspath2 = libevdev_uinput_get_syspath(uidev); - ck_assert(syspath == syspath2); - - /* second dev has different syspath */ - syspath2 = libevdev_uinput_get_syspath(uidev2); - ck_assert(strcmp(syspath, syspath2) != 0); - - libevdev_free(dev); - libevdev_uinput_destroy(uidev); - libevdev_uinput_destroy(uidev2); - - close(fd); - close(fd2); -} -END_TEST - -START_TEST(test_uinput_check_syspath_name) -{ - struct libevdev *dev; - struct libevdev_uinput *uidev, *uidev2; - const char *syspath, *syspath2; - int fd, fd2; - int rc; - - dev = libevdev_new(); - ck_assert(dev != NULL); - libevdev_set_name(dev, TEST_DEVICE_NAME); - libevdev_enable_event_type(dev, EV_SYN); - libevdev_enable_event_type(dev, EV_REL); - libevdev_enable_event_code(dev, EV_REL, REL_X, NULL); - libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL); - - fd = open(UINPUT_NODE, O_RDWR); - ck_assert_int_gt(fd, -1); - fd2 = open(UINPUT_NODE, O_RDWR); - ck_assert_int_gt(fd2, -1); - - rc = libevdev_uinput_create_from_device(dev, fd, &uidev); - ck_assert_int_eq(rc, 0); - - /* create a second one to stress the syspath filtering code */ - libevdev_set_name(dev, TEST_DEVICE_NAME " 2"); - rc = libevdev_uinput_create_from_device(dev, fd2, &uidev2); - ck_assert_int_eq(rc, 0); - - syspath = libevdev_uinput_get_syspath(uidev); - ck_assert(syspath != NULL); - - /* get syspath twice returns same pointer */ - syspath2 = libevdev_uinput_get_syspath(uidev); - ck_assert(syspath == syspath2); - - /* second dev has different syspath */ - syspath2 = libevdev_uinput_get_syspath(uidev2); - ck_assert(strcmp(syspath, syspath2) != 0); - - libevdev_free(dev); - libevdev_uinput_destroy(uidev); - libevdev_uinput_destroy(uidev2); - - close(fd); - close(fd2); -} -END_TEST - -#endif /* __FreeBSD __ */ - -START_TEST(test_uinput_events) -{ - struct libevdev *dev; - struct libevdev_uinput *uidev; - int fd, fd2; - int rc; - const char *devnode; - int i; - const int nevents = 5; - struct input_event events[] = { {{0, 0}, EV_REL, REL_X, 1}, - {{0, 0}, EV_REL, REL_Y, -1}, - {{0, 0}, EV_SYN, SYN_REPORT, 0}, - {{0, 0}, EV_KEY, BTN_LEFT, 1}, - {{0, 0}, EV_SYN, SYN_REPORT, 0}}; - struct input_event events_read[nevents]; - - dev = libevdev_new(); - ck_assert(dev != NULL); - libevdev_set_name(dev, TEST_DEVICE_NAME); - libevdev_enable_event_type(dev, EV_SYN); - libevdev_enable_event_type(dev, EV_REL); - libevdev_enable_event_type(dev, EV_KEY); - libevdev_enable_event_code(dev, EV_REL, REL_X, NULL); - libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL); - libevdev_enable_event_code(dev, EV_KEY, BTN_LEFT, NULL); - - fd = open(UINPUT_NODE, O_RDWR); - ck_assert_int_gt(fd, -1); - - rc = libevdev_uinput_create_from_device(dev, fd, &uidev); - ck_assert_int_eq(rc, 0); - ck_assert(uidev != NULL); - - devnode = libevdev_uinput_get_devnode(uidev); - ck_assert(devnode != NULL); - - fd2 = open(devnode, O_RDONLY); - - for (i = 0; i < nevents; i++) - libevdev_uinput_write_event(uidev, events[i].type, events[i].code, events[i].value); - - rc = read(fd2, events_read, sizeof(events_read)); - ck_assert_int_eq(rc, sizeof(events_read)); - - for (i = 0; i < nevents; i++) { - ck_assert_int_eq(events[i].type, events_read[i].type); - ck_assert_int_eq(events[i].code, events_read[i].code); - ck_assert_int_eq(events[i].value, events_read[i].value); - } - - libevdev_free(dev); - libevdev_uinput_destroy(uidev); - close(fd); - close(fd2); -} -END_TEST - -START_TEST(test_uinput_properties) -{ - struct libevdev *dev, *dev2; - struct libevdev_uinput *uidev; - int fd; - int rc; - const char *devnode; - - dev = libevdev_new(); - ck_assert(dev != NULL); - libevdev_set_name(dev, TEST_DEVICE_NAME); - libevdev_enable_event_type(dev, EV_SYN); - libevdev_enable_event_type(dev, EV_REL); - libevdev_enable_event_type(dev, EV_KEY); - libevdev_enable_event_code(dev, EV_REL, REL_X, NULL); - libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL); - libevdev_enable_event_code(dev, EV_KEY, BTN_LEFT, NULL); - libevdev_enable_property(dev, INPUT_PROP_BUTTONPAD); - libevdev_enable_property(dev, INPUT_PROP_MAX); - - rc = libevdev_uinput_create_from_device(dev, LIBEVDEV_UINPUT_OPEN_MANAGED, &uidev); - ck_assert_int_eq(rc, 0); - ck_assert(uidev != NULL); - - devnode = libevdev_uinput_get_devnode(uidev); - ck_assert(devnode != NULL); - - fd = open(devnode, O_RDONLY); - ck_assert_int_gt(fd, -1); - rc = libevdev_new_from_fd(fd, &dev2); - ck_assert_int_eq(rc, 0); - - ck_assert(libevdev_has_property(dev2, INPUT_PROP_BUTTONPAD)); - ck_assert(libevdev_has_property(dev2, INPUT_PROP_MAX)); - - libevdev_free(dev); - libevdev_free(dev2); - libevdev_uinput_destroy(uidev); - close(fd); -} -END_TEST - -TEST_SUITE_ROOT_PRIVILEGES(uinput_suite) -{ - Suite *s = suite_create("libevdev uinput device tests"); - - add_test(s, test_uinput_create_device); - add_test(s, test_uinput_create_device_invalid); - add_test(s, test_uinput_create_device_from_fd); -#ifdef __FreeBSD__ - add_test(s, test_uinput_check_devnode_bsd); - add_test(s, test_uinput_check_syspath_bsd); -#else - add_test(s, test_uinput_check_syspath_time); - add_test(s, test_uinput_check_syspath_name); -#endif - - add_test(s, test_uinput_events); - - add_test(s, test_uinput_properties); - - return s; -} diff --git a/test/valgrind.suppressions b/test/valgrind.suppressions deleted file mode 100644 index 5fee7aa7168eaa5d30a82b951b34613959663de8..0000000000000000000000000000000000000000 --- a/test/valgrind.suppressions +++ /dev/null @@ -1,27 +0,0 @@ -{ - - Memcheck:Param - timer_create(evp) - fun:timer_create@@GLIBC_2.3.3 -} -{ - - Memcheck:Param - ioctl(generic) - fun:ioctl - fun:libevdev_grab -} -{ - - Memcheck:Param - ioctl(generic) - fun:ioctl - fun:test_revoke* -} -{ - - Memcheck:Leak - ... - fun:reader_loop - fun:main -} diff --git a/tools/Makefile.am b/tools/Makefile.am deleted file mode 100644 index 86222f71c06eccaebf53aaf454c35777c14aa750..0000000000000000000000000000000000000000 --- a/tools/Makefile.am +++ /dev/null @@ -1,25 +0,0 @@ -noinst_PROGRAMS = libevdev-events -bin_PROGRAMS = \ - touchpad-edge-detector \ - mouse-dpi-tool \ - libevdev-tweak-device - -AM_CPPFLAGS = $(GCC_CFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_srcdir)/libevdev -libevdev_ldadd = $(top_builddir)/libevdev/libevdev.la - -libevdev_events_SOURCES = libevdev-events.c -libevdev_events_LDADD = $(libevdev_ldadd) - -touchpad_edge_detector_SOURCES = touchpad-edge-detector.c -touchpad_edge_detector_LDADD = $(libevdev_ldadd) - -mouse_dpi_tool_SOURCES = mouse-dpi-tool.c -mouse_dpi_tool_LDADD = $(libevdev_ldadd) - -libevdev_tweak_device_SOURCES = libevdev-tweak-device.c -libevdev_tweak_device_LDADD = $(libevdev_ldadd) - -dist_man_MANS = \ - libevdev-tweak-device.1 \ - touchpad-edge-detector.1 \ - $(NULL) diff --git a/tools/Makefile.in b/tools/Makefile.in deleted file mode 100644 index e63a12f6d6a1e1705fdfe265b9a305aecd82cf8a..0000000000000000000000000000000000000000 --- a/tools/Makefile.in +++ /dev/null @@ -1,799 +0,0 @@ -# Makefile.in generated by automake 1.16.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2020 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = libevdev-events$(EXEEXT) -bin_PROGRAMS = touchpad-edge-detector$(EXEEXT) mouse-dpi-tool$(EXEEXT) \ - libevdev-tweak-device$(EXEEXT) -subdir = tools -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/attributes.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" -PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) -am_libevdev_events_OBJECTS = libevdev-events.$(OBJEXT) -libevdev_events_OBJECTS = $(am_libevdev_events_OBJECTS) -libevdev_events_DEPENDENCIES = $(libevdev_ldadd) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -am_libevdev_tweak_device_OBJECTS = libevdev-tweak-device.$(OBJEXT) -libevdev_tweak_device_OBJECTS = $(am_libevdev_tweak_device_OBJECTS) -libevdev_tweak_device_DEPENDENCIES = $(libevdev_ldadd) -am_mouse_dpi_tool_OBJECTS = mouse-dpi-tool.$(OBJEXT) -mouse_dpi_tool_OBJECTS = $(am_mouse_dpi_tool_OBJECTS) -mouse_dpi_tool_DEPENDENCIES = $(libevdev_ldadd) -am_touchpad_edge_detector_OBJECTS = touchpad-edge-detector.$(OBJEXT) -touchpad_edge_detector_OBJECTS = $(am_touchpad_edge_detector_OBJECTS) -touchpad_edge_detector_DEPENDENCIES = $(libevdev_ldadd) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/libevdev-events.Po \ - ./$(DEPDIR)/libevdev-tweak-device.Po \ - ./$(DEPDIR)/mouse-dpi-tool.Po \ - ./$(DEPDIR)/touchpad-edge-detector.Po -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libevdev_events_SOURCES) $(libevdev_tweak_device_SOURCES) \ - $(mouse_dpi_tool_SOURCES) $(touchpad_edge_detector_SOURCES) -DIST_SOURCES = $(libevdev_events_SOURCES) \ - $(libevdev_tweak_device_SOURCES) $(mouse_dpi_tool_SOURCES) \ - $(touchpad_edge_detector_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -man1dir = $(mandir)/man1 -NROFF = nroff -MANS = $(dist_man_MANS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \ - $(top_srcdir)/build-aux/depcomp -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CHECK_CFLAGS = @CHECK_CFLAGS@ -CHECK_LIBS = @CHECK_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DOXYGEN = @DOXYGEN@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GCC_CFLAGS = @GCC_CFLAGS@ -GCOV_CFLAGS = @GCOV_CFLAGS@ -GCOV_LDFLAGS = @GCOV_LDFLAGS@ -GNU_LD_FLAGS = @GNU_LD_FLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBEVDEV_LT_VERSION = @LIBEVDEV_LT_VERSION@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OS = @OS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VALGRIND = @VALGRIND@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AM_CPPFLAGS = $(GCC_CFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_srcdir)/libevdev -libevdev_ldadd = $(top_builddir)/libevdev/libevdev.la -libevdev_events_SOURCES = libevdev-events.c -libevdev_events_LDADD = $(libevdev_ldadd) -touchpad_edge_detector_SOURCES = touchpad-edge-detector.c -touchpad_edge_detector_LDADD = $(libevdev_ldadd) -mouse_dpi_tool_SOURCES = mouse-dpi-tool.c -mouse_dpi_tool_LDADD = $(libevdev_ldadd) -libevdev_tweak_device_SOURCES = libevdev-tweak-device.c -libevdev_tweak_device_LDADD = $(libevdev_ldadd) -dist_man_MANS = \ - libevdev-tweak-device.1 \ - touchpad-edge-detector.1 \ - $(NULL) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign tools/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - || test -f $$p1 \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -libevdev-events$(EXEEXT): $(libevdev_events_OBJECTS) $(libevdev_events_DEPENDENCIES) $(EXTRA_libevdev_events_DEPENDENCIES) - @rm -f libevdev-events$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(libevdev_events_OBJECTS) $(libevdev_events_LDADD) $(LIBS) - -libevdev-tweak-device$(EXEEXT): $(libevdev_tweak_device_OBJECTS) $(libevdev_tweak_device_DEPENDENCIES) $(EXTRA_libevdev_tweak_device_DEPENDENCIES) - @rm -f libevdev-tweak-device$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(libevdev_tweak_device_OBJECTS) $(libevdev_tweak_device_LDADD) $(LIBS) - -mouse-dpi-tool$(EXEEXT): $(mouse_dpi_tool_OBJECTS) $(mouse_dpi_tool_DEPENDENCIES) $(EXTRA_mouse_dpi_tool_DEPENDENCIES) - @rm -f mouse-dpi-tool$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(mouse_dpi_tool_OBJECTS) $(mouse_dpi_tool_LDADD) $(LIBS) - -touchpad-edge-detector$(EXEEXT): $(touchpad_edge_detector_OBJECTS) $(touchpad_edge_detector_DEPENDENCIES) $(EXTRA_touchpad_edge_detector_DEPENDENCIES) - @rm -f touchpad-edge-detector$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(touchpad_edge_detector_OBJECTS) $(touchpad_edge_detector_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libevdev-events.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libevdev-tweak-device.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mouse-dpi-tool.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/touchpad-edge-detector.Po@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-man1: $(dist_man_MANS) - @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(dist_man_MANS)'; \ - test -n "$(man1dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.1[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ - done; } - -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man1dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.1[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) $(MANS) -installdirs: - for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-libtool \ - clean-noinstPROGRAMS mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/libevdev-events.Po - -rm -f ./$(DEPDIR)/libevdev-tweak-device.Po - -rm -f ./$(DEPDIR)/mouse-dpi-tool.Po - -rm -f ./$(DEPDIR)/touchpad-edge-detector.Po - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-man - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: install-man1 - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/libevdev-events.Po - -rm -f ./$(DEPDIR)/libevdev-tweak-device.Po - -rm -f ./$(DEPDIR)/mouse-dpi-tool.Po - -rm -f ./$(DEPDIR)/touchpad-edge-detector.Po - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS uninstall-man - -uninstall-man: uninstall-man1 - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ - clean-binPROGRAMS clean-generic clean-libtool \ - clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-binPROGRAMS install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-man1 install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \ - uninstall-man uninstall-man1 - -.PRECIOUS: Makefile - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/libevdev-events.c b/tools/libevdev-events.c deleted file mode 100644 index 215407e5b2c2847ec0f45d1dc28e3af887fae31d..0000000000000000000000000000000000000000 --- a/tools/libevdev-events.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright © 2013 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "libevdev/libevdev.h" - -static void -print_abs_bits(struct libevdev *dev, int axis) -{ - const struct input_absinfo *abs; - - if (!libevdev_has_event_code(dev, EV_ABS, axis)) - return; - - abs = libevdev_get_abs_info(dev, axis); - - printf(" Value %6d\n", abs->value); - printf(" Min %6d\n", abs->minimum); - printf(" Max %6d\n", abs->maximum); - if (abs->fuzz) - printf(" Fuzz %6d\n", abs->fuzz); - if (abs->flat) - printf(" Flat %6d\n", abs->flat); - if (abs->resolution) - printf(" Resolution %6d\n", abs->resolution); -} - -static void -print_code_bits(struct libevdev *dev, unsigned int type, unsigned int max) -{ - unsigned int i; - for (i = 0; i <= max; i++) { - if (!libevdev_has_event_code(dev, type, i)) - continue; - - printf(" Event code %i (%s)\n", i, libevdev_event_code_get_name(type, i)); - if (type == EV_ABS) - print_abs_bits(dev, i); - } -} - -static void -print_bits(struct libevdev *dev) -{ - unsigned int i; - printf("Supported events:\n"); - - for (i = 0; i <= EV_MAX; i++) { - if (libevdev_has_event_type(dev, i)) - printf(" Event type %d (%s)\n", i, libevdev_event_type_get_name(i)); - switch(i) { - case EV_KEY: - print_code_bits(dev, EV_KEY, KEY_MAX); - break; - case EV_REL: - print_code_bits(dev, EV_REL, REL_MAX); - break; - case EV_ABS: - print_code_bits(dev, EV_ABS, ABS_MAX); - break; - case EV_LED: - print_code_bits(dev, EV_LED, LED_MAX); - break; - } - } -} - -static void -print_props(struct libevdev *dev) -{ - unsigned int i; - printf("Properties:\n"); - - for (i = 0; i <= INPUT_PROP_MAX; i++) { - if (libevdev_has_property(dev, i)) - printf(" Property type %d (%s)\n", i, - libevdev_property_get_name(i)); - } -} - -static int -print_event(struct input_event *ev) -{ - if (ev->type == EV_SYN) - printf("Event: time %ld.%06ld, ++++++++++++++++++++ %s +++++++++++++++\n", - ev->input_event_sec, - ev->input_event_usec, - libevdev_event_type_get_name(ev->type)); - else - printf("Event: time %ld.%06ld, type %d (%s), code %d (%s), value %d\n", - ev->input_event_sec, - ev->input_event_usec, - ev->type, - libevdev_event_type_get_name(ev->type), - ev->code, - libevdev_event_code_get_name(ev->type, ev->code), - ev->value); - return 0; -} - -static int -print_sync_event(struct input_event *ev) -{ - printf("SYNC: "); - print_event(ev); - return 0; -} - -int -main(int argc, char **argv) -{ - struct libevdev *dev = NULL; - const char *file; - int fd; - int rc = 1; - - if (argc < 2) - goto out; - - file = argv[1]; - fd = open(file, O_RDONLY); - if (fd < 0) { - perror("Failed to open device"); - goto out; - } - - rc = libevdev_new_from_fd(fd, &dev); - if (rc < 0) { - fprintf(stderr, "Failed to init libevdev (%s)\n", strerror(-rc)); - goto out; - } - - printf("Input device ID: bus %#x vendor %#x product %#x\n", - libevdev_get_id_bustype(dev), - libevdev_get_id_vendor(dev), - libevdev_get_id_product(dev)); - printf("Evdev version: %x\n", libevdev_get_driver_version(dev)); - printf("Input device name: \"%s\"\n", libevdev_get_name(dev)); - printf("Phys location: %s\n", libevdev_get_phys(dev)); - printf("Uniq identifier: %s\n", libevdev_get_uniq(dev)); - print_bits(dev); - print_props(dev); - - do { - struct input_event ev; - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL|LIBEVDEV_READ_FLAG_BLOCKING, &ev); - if (rc == LIBEVDEV_READ_STATUS_SYNC) { - printf("::::::::::::::::::::: dropped ::::::::::::::::::::::\n"); - while (rc == LIBEVDEV_READ_STATUS_SYNC) { - print_sync_event(&ev); - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_SYNC, &ev); - } - printf("::::::::::::::::::::: re-synced ::::::::::::::::::::::\n"); - } else if (rc == LIBEVDEV_READ_STATUS_SUCCESS) - print_event(&ev); - } while (rc == LIBEVDEV_READ_STATUS_SYNC || rc == LIBEVDEV_READ_STATUS_SUCCESS || rc == -EAGAIN); - - if (rc != LIBEVDEV_READ_STATUS_SUCCESS && rc != -EAGAIN) - fprintf(stderr, "Failed to handle events: %s\n", strerror(-rc)); - - rc = 0; -out: - libevdev_free(dev); - - return rc; -} diff --git a/tools/libevdev-tweak-device.1 b/tools/libevdev-tweak-device.1 deleted file mode 100644 index bb33387e70d52564e34b317a11f7ada846030be9..0000000000000000000000000000000000000000 --- a/tools/libevdev-tweak-device.1 +++ /dev/null @@ -1,69 +0,0 @@ -.TH LIBEVDEV-TWEAK-DEVICE "1" -.SH NAME -libevdev-tweak-device \- modify an evdev kernel device -.SH SYNOPSIS -.B libevdev-tweak-device ---abs ABS_X [--min a] [--max b] [--res c] [--fuzz d] [--flat e] -/dev/input/eventX -.B libevdev-tweak-device ---resolution res[,yres] /dev/input/eventX -.PP -.B libevdev-tweak-device ---led LED_NUML --on|--off /dev/input/eventX -.SH DESCRIPTION -.PP -The -.I libevdev-tweak-device -tool changes the properties of the evdev kernel device at -.I /dev/input/eventX. -Currently this may be used to force an LED on or off, or to change the -properties of an absolute axis (e.g. its minimum/maximum range or -resolution). Changes are permanent until the device is removed. -.SH OPTIONS -.SS Changing absolute axes -.TP 8 -.B --abs axis -Change the given named ABS_ kernel axis, e.g. ABS_X. For a full list, see linux/input.h. -Each of the options -.B min, max, res, fuzz, flat -may be given. -.TP 8 -.B --min v -Set the absinfo minimum to the value v -.TP 8 -.B --max v -Set the absinfo maximum to the value v -.TP 8 -.B --res v -Set the absinfo resolution to the value v -.TP 8 -.B --fuzz v -Set the absinfo fuzz to the value v -.TP 8 -.B --flat v -Set the absinfo flat to the value v -.PP -.SS Changing the x/y resolution -.TP 8 -.B --resolution res[,yres] -Changes the resolution of the ABS_X, ABS_MT_POSITION_X, ABS_Y, and -ABS_MT_POSITION_Y axis to the given resolution. If only one resolution value -is provided, both x and y axis are set to the same resolution, otherwise the -first resolution value is applied to the x axes and the second value to the -y axes. -.SS Toggling LEDs -.TP 8 -.B --led led -Change the given LED, e.g. LED_NUML. For a full list, see linux/input.h. -.TP 8 -.B --on -Change the LED state to on -.TP 8 -.B --off -Change the LED state to off -.SH NOTES -.PP -The kernel does not notify processes about absinfo property changes. Any -process that has previously obtained the absinfo from the device will remain -on the old information. This makes using this tool potentially racy, use -with caution. diff --git a/tools/libevdev-tweak-device.c b/tools/libevdev-tweak-device.c deleted file mode 100644 index 15570c2e51f525bd982e20b470f281b29ae4c900..0000000000000000000000000000000000000000 --- a/tools/libevdev-tweak-device.c +++ /dev/null @@ -1,482 +0,0 @@ -/* - * Copyright © 2014 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that copyright - * notice and this permission notice appear in supporting documentation, and - * that the name of the copyright holders not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. The copyright holders make no representations - * about the suitability of this software for any purpose. It is provided "as - * is" without express or implied warranty. - * - * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "libevdev/libevdev.h" - -static void -usage(const char *progname) -{ - printf("%s --abs [--min min] [--max max] [--res res] [--fuzz fuzz] [--flat flat] /dev/input/eventXYZ\n" - "\tChange the absinfo struct for the named axis\n" - "%s --resolution res[,yres] /dev/input/eventXYZ\n" - "\tChange the x/y resolution on the given device\n" - "%s --led --on|--off /dev/input/eventXYZ\n" - "\tEnable or disable the named LED\n", - progname, - progname, - progname); -} - -enum mode { - MODE_NONE = 0, - MODE_ABS, - MODE_LED, - MODE_RESOLUTION, - MODE_HELP, -}; - -enum opts { - OPT_ABS = 1 << 0, - OPT_MIN = 1 << 1, - OPT_MAX = 1 << 2, - OPT_FUZZ = 1 << 3, - OPT_FLAT = 1 << 4, - OPT_RES = 1 << 5, - OPT_LED = 1 << 6, - OPT_ON = 1 << 7, - OPT_OFF = 1 << 8, - OPT_RESOLUTION = 1 << 9, - OPT_HELP = 1 << 10, -}; - -static bool -parse_resolution_argument(const char *arg, int *xres, int *yres) -{ - int matched; - - matched = sscanf(arg, "%d,%d", xres, yres); - - switch(matched) { - case 2: - break; - case 1: - *yres = *xres; - break; - default: - return false; - } - - return true; -} - -static inline bool -safe_atoi(const char *str, int *val) -{ - char *endptr; - long v; - - v = strtol(str, &endptr, 10); - if (str == endptr) - return false; - if (*str != '\0' && *endptr != '\0') - return false; - - if (v > INT_MAX || v < INT_MIN) - return false; - - *val = v; - return true; -} - -static int -parse_event_code(int type, const char *str) -{ - int code; - - code = libevdev_event_code_from_name(type, str); - if (code != -1) - return code; - - if (safe_atoi(str, &code)) - return code; - - return -1; -} - -static int -parse_options_abs(int argc, char **argv, unsigned int *changes, - int *axis, struct input_absinfo *absinfo) -{ - int rc = 1; - int c; - int option_index = 0; - static struct option opts[] = { - { "abs", 1, 0, OPT_ABS }, - { "min", 1, 0, OPT_MIN }, - { "max", 1, 0, OPT_MAX }, - { "fuzz", 1, 0, OPT_FUZZ }, - { "flat", 1, 0, OPT_FLAT }, - { "res", 1, 0, OPT_RES }, - { NULL, 0, 0, 0 }, - }; - - if (argc < 2) - goto error; - - optind = 1; - while (1) { - c = getopt_long(argc, argv, "h", opts, &option_index); - if (c == -1) - break; - - switch (c) { - case OPT_ABS: - *axis = parse_event_code(EV_ABS, optarg); - if (*axis == -1) - goto error; - break; - case OPT_MIN: - absinfo->minimum = atoi(optarg); - break; - case OPT_MAX: - absinfo->maximum = atoi(optarg); - break; - case OPT_FUZZ: - absinfo->fuzz = atoi(optarg); - break; - case OPT_FLAT: - absinfo->flat = atoi(optarg); - break; - case OPT_RES: - absinfo->resolution = atoi(optarg); - break; - default: - goto error; - } - *changes |= c; - } - rc = 0; -error: - return rc; -} - -static int -parse_options_led(int argc, char **argv, int *led, int *led_state) -{ - int rc = 1; - int c; - int option_index = 0; - static struct option opts[] = { - { "led", 1, 0, OPT_LED }, - { "on", 0, 0, OPT_ON }, - { "off", 0, 0, OPT_OFF }, - { NULL, 0, 0, 0 }, - }; - - if (argc < 2) - goto error; - - optind = 1; - while (1) { - c = getopt_long(argc, argv, "h", opts, &option_index); - if (c == -1) - break; - - switch (c) { - case OPT_LED: - *led = parse_event_code(EV_LED, optarg); - if (*led == -1) - goto error; - break; - case OPT_ON: - if (*led_state != -1) - goto error; - *led_state = 1; - break; - case OPT_OFF: - if (*led_state != -1) - goto error; - *led_state = 0; - break; - default: - goto error; - } - } - - rc = 0; -error: - return rc; -} - -static int -parse_options_resolution(int argc, char **argv, int *xres, int *yres) -{ - int rc = 1; - int c; - int option_index = 0; - static struct option opts[] = { - { "resolution", 1, 0, OPT_RESOLUTION }, - { NULL, 0, 0, 0 }, - }; - - if (argc < 2) - goto error; - - optind = 1; - while (1) { - c = getopt_long(argc, argv, "h", opts, &option_index); - if (c == -1) - break; - - switch (c) { - case OPT_RESOLUTION: - if (!parse_resolution_argument(optarg, - xres, yres)) - goto error; - break; - default: - goto error; - } - } - - rc = 0; -error: - return rc; -} - -static enum mode -parse_options_mode(int argc, char **argv) -{ - int c; - int option_index = 0; - static const struct option opts[] = { - { "abs", 1, 0, OPT_ABS }, - { "led", 1, 0, OPT_LED }, - { "resolution", 1, 0, OPT_RESOLUTION }, - { "help", 0, 0, OPT_HELP }, - { NULL, 0, 0, 0 }, - }; - enum mode mode = MODE_NONE; - - if (argc < 2) - return mode; - - while (mode == MODE_NONE) { - c = getopt_long(argc, argv, "h", opts, &option_index); - if (c == -1) - break; - - switch (c) { - case 'h': - case OPT_HELP: - mode = MODE_HELP; - break; - case OPT_ABS: - mode = MODE_ABS; - break; - case OPT_LED: - mode = MODE_LED; - break; - case OPT_RESOLUTION: - mode = MODE_RESOLUTION; - break; - default: - break; - } - } - - if (optind >= argc && mode != MODE_HELP) - return MODE_NONE; - - return mode; -} - -static void -set_abs(struct libevdev *dev, unsigned int changes, - unsigned int axis, struct input_absinfo *absinfo) -{ - int rc; - struct input_absinfo abs; - const struct input_absinfo *a; - - if ((a = libevdev_get_abs_info(dev, axis)) == NULL) { - fprintf(stderr, - "Device '%s' doesn't have axis %s\n", - libevdev_get_name(dev), - libevdev_event_code_get_name(EV_ABS, axis)); - return; - } - - abs = *a; - if (changes & OPT_MIN) - abs.minimum = absinfo->minimum; - if (changes & OPT_MAX) - abs.maximum = absinfo->maximum; - if (changes & OPT_FUZZ) - abs.fuzz = absinfo->fuzz; - if (changes & OPT_FLAT) - abs.flat = absinfo->flat; - if (changes & OPT_RES) - abs.resolution = absinfo->resolution; - - rc = libevdev_kernel_set_abs_info(dev, axis, &abs); - if (rc != 0) - fprintf(stderr, - "Failed to set absinfo %s: %s", - libevdev_event_code_get_name(EV_ABS, axis), - strerror(-rc)); -} - -static void -set_led(struct libevdev *dev, unsigned int led, int led_state) -{ - int rc; - enum libevdev_led_value state = - led_state ? LIBEVDEV_LED_ON : LIBEVDEV_LED_OFF; - - if (!libevdev_has_event_code(dev, EV_LED, led)) { - fprintf(stderr, - "Device '%s' doesn't have %s\n", - libevdev_get_name(dev), - libevdev_event_code_get_name(EV_LED, led)); - return; - } - - rc = libevdev_kernel_set_led_value(dev, led, state); - if (rc != 0) - fprintf(stderr, - "Failed to set LED %s: %s", - libevdev_event_code_get_name(EV_LED, led), - strerror(-rc)); -} - -static void -set_resolution(struct libevdev *dev, int xres, int yres) -{ - struct input_absinfo abs; - - abs.resolution = xres; - if (libevdev_has_event_code(dev, EV_ABS, ABS_X)) - set_abs(dev, OPT_RES, ABS_X, &abs); - if (libevdev_has_event_code(dev, EV_ABS, ABS_MT_POSITION_X)) - set_abs(dev, OPT_RES, ABS_MT_POSITION_X, &abs); - - abs.resolution = yres; - if (libevdev_has_event_code(dev, EV_ABS, ABS_Y)) - set_abs(dev, OPT_RES, ABS_Y, &abs); - if (libevdev_has_event_code(dev, EV_ABS, ABS_MT_POSITION_Y)) - set_abs(dev, OPT_RES, ABS_MT_POSITION_Y, &abs); -} - -int -main(int argc, char **argv) -{ - struct libevdev *dev = NULL; - int fd = -1; - int rc = EXIT_FAILURE; - enum mode mode; - const char *path; - struct input_absinfo absinfo; - int axis = -1; - int led = -1; - int led_state = -1; - unsigned int changes = 0; /* bitmask of changes */ - int xres = 0, - yres = 0; - - mode = parse_options_mode(argc, argv); - switch (mode) { - case MODE_HELP: - rc = EXIT_SUCCESS; - /* fallthrough */ - case MODE_NONE: - usage(basename(argv[0])); - goto out; - case MODE_ABS: - rc = parse_options_abs(argc, argv, &changes, &axis, - &absinfo); - break; - case MODE_LED: - rc = parse_options_led(argc, argv, &led, &led_state); - break; - case MODE_RESOLUTION: - rc = parse_options_resolution(argc, argv, &xres, - &yres); - break; - default: - fprintf(stderr, - "++?????++ Out of Cheese Error. Redo From Start.\n"); - goto out; - } - - if (rc != EXIT_SUCCESS) - goto out; - - if (optind >= argc) { - rc = EXIT_FAILURE; - usage(basename(argv[0])); - goto out; - } - - path = argv[optind]; - - fd = open(path, O_RDWR); - if (fd < 0) { - rc = EXIT_FAILURE; - perror("Failed to open device"); - goto out; - } - - rc = libevdev_new_from_fd(fd, &dev); - if (rc < 0) { - fprintf(stderr, "Failed to init libevdev (%s)\n", strerror(-rc)); - goto out; - } - - switch (mode) { - case MODE_ABS: - set_abs(dev, changes, axis, &absinfo); - break; - case MODE_LED: - set_led(dev, led, led_state); - break; - case MODE_RESOLUTION: - set_resolution(dev, xres, yres); - break; - default: - break; - } - -out: - libevdev_free(dev); - if (fd != -1) - close(fd); - - return rc; -} diff --git a/tools/mouse-dpi-tool.c b/tools/mouse-dpi-tool.c deleted file mode 100644 index 2adca634aa9a988ba09b580b719bbf774a6abf15..0000000000000000000000000000000000000000 --- a/tools/mouse-dpi-tool.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * Copyright © 2014 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of Red Hat - * not be used in advertising or publicity pertaining to distribution - * of the software without specific, written prior permission. Red - * Hat makes no representations about the suitability of this software - * for any purpose. It is provided "as is" without express or implied - * warranty. - * - * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN - * NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "libevdev/libevdev.h" - -#define min(a, b) (((a) < (b)) ? (a) : (b)) -#define max(a, b) (((a) > (b)) ? (a) : (b)) - -static int signalled = 0; - -struct measurements { - int distance; - double max_frequency; - double *frequencies; - size_t frequencies_sz; - size_t nfrequencies; - uint64_t us; -}; - -static int -usage(const char *progname) { - printf("Usage: %s /dev/input/event0\n", progname); - printf("\n"); - printf("This tool reads relative events from the kernel and calculates\n" - "the distance covered and maximum frequency of the incoming events.\n" - "Some mouse devices provide dynamic frequencies, it is\n" - "recommended to measure multiple times to obtain the highest value.\n"); - return 1; -} - -static inline double -get_frequency(uint64_t last, uint64_t current) -{ - return 1000000.0/(current - last); -} - -static inline void -push_frequency(struct measurements *m, double freq) -{ - if (m->nfrequencies == m->frequencies_sz) { - m->frequencies_sz += 100; - m->frequencies = realloc(m->frequencies, - m->frequencies_sz * sizeof *m->frequencies); - if (!m->frequencies) - abort(); - } - - m->frequencies[m->nfrequencies] = freq; - m->nfrequencies++; -} - -static int -print_current_values(const struct measurements *m) -{ - static int progress = 0; - char status = 0; - - switch (progress) { - case 0: status = '|'; break; - case 1: status = '/'; break; - case 2: status = '-'; break; - case 3: status = '\\'; break; - default: - status = '?'; - break; - } - - progress = (progress + 1) % 4; - - printf("\rCovered distance in device units: %8d at frequency %3.1fHz %c", - abs(m->distance), m->max_frequency, status); - - return 0; -} - -static int -handle_event(struct measurements *m, const struct input_event *ev) -{ - if (ev->type == EV_SYN) { - const int idle_reset = 3000000; /* us */ - uint64_t last_us = m->us; - - m->us = ev->input_event_sec * 1000000 + ev->input_event_usec; - - /* reset after pause */ - if (last_us + idle_reset < m->us) { - m->max_frequency = 0.0; - m->distance = 0; - } else { - double freq = get_frequency(last_us, m->us); - push_frequency(m, freq); - m->max_frequency = max(freq, m->max_frequency); - return print_current_values(m); - } - - return 0; - } - - if (ev->type != EV_REL) - return 0; - - switch(ev->code) { - case REL_X: - m->distance += ev->value; - break; - } - - return 0; -} - -static void -signal_handler(__attribute__((__unused__)) int signal) -{ - signalled++; -} - -static int -mainloop(struct libevdev *dev, struct measurements *m) { - struct pollfd fds; - - fds.fd = libevdev_get_fd(dev); - fds.events = POLLIN; - - signal(SIGINT, signal_handler); - - while (poll(&fds, 1, -1)) { - struct input_event ev; - int rc; - - if (signalled) - break; - - do { - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - if (rc == LIBEVDEV_READ_STATUS_SYNC) { - fprintf(stderr, "Error: cannot keep up\n"); - return 1; - } - - if (rc != -EAGAIN && rc < 0) { - fprintf(stderr, "Error: %s\n", strerror(-rc)); - return 1; - } - - if (rc == LIBEVDEV_READ_STATUS_SUCCESS) - handle_event(m, &ev); - } while (rc != -EAGAIN); - } - - return 0; -} - -static inline double -mean_frequency(struct measurements *m) -{ - int idx; - - idx = m->nfrequencies/2; - return m->frequencies[idx]; -} - -static inline const char* -bustype(int bustype) -{ - const char *bus; - - switch(bustype) { - case BUS_PCI: bus = "pci"; break; - case BUS_ISAPNP: bus = "isapnp"; break; - case BUS_USB: bus = "usb"; break; - case BUS_HIL: bus = "hil"; break; - case BUS_BLUETOOTH: bus = "bluetooth"; break; - case BUS_VIRTUAL: bus = "virtual"; break; - default: bus = "unknown bus type"; break; - } - - return bus; -} - -static void -print_summary(struct libevdev *dev, struct measurements *m) -{ - int res; - int max_freq, mean_freq; - - if (m->nfrequencies == 0) { - fprintf(stderr, "Error: no matching events received.\n"); - return; - } - - max_freq = (int)m->max_frequency; - mean_freq = (int)mean_frequency(m); - - printf("Estimated sampling frequency: %dHz (mean %dHz)\n", - max_freq, mean_freq); - - if (max_freq > mean_freq * 1.3) - printf("WARNING: Max frequency is more than 30%% higher " - "than mean frequency. Manual verification required!\n"); - - printf("To calculate resolution, measure physical distance covered\n" - "and look up the matching resolution in the table below\n"); - - m->distance = abs(m->distance); - - /* If the mouse has more than 2500dpi, the manufacturer usually - shows off on their website anyway */ - for (res = 400; res <= 2500; res += 200) { - double inch = m->distance/(double)res; - printf("%8dmm %8.2fin %8ddpi\n", - (int)(inch * 25.4), inch, res); - } - printf("If your resolution is not in the list, calculate it with:\n" - "\tresolution=%d/inches, or\n" - "\tresolution=%d * 25.4/mm\n", m->distance, m->distance); - - printf("\n"); - printf("Entry for hwdb match (replace XXX with the resolution in DPI):\n" - "mouse:%s:v%04xp%04x:name:%s:\n" - " MOUSE_DPI=XXX@%d\n", - bustype(libevdev_get_id_bustype(dev)), - libevdev_get_id_vendor(dev), - libevdev_get_id_product(dev), - libevdev_get_name(dev), - (int)m->max_frequency); -} - -int -main (int argc, char **argv) { - int rc; - int fd; - const char *path; - struct libevdev *dev; - struct measurements measurements = {0}; - - if (argc < 2) - return usage(basename(argv[0])); - - path = argv[1]; - if (path[0] == '-') - return usage(basename(argv[0])); - - fd = open(path, O_RDONLY|O_NONBLOCK); - if (fd < 0) { - fprintf(stderr, "Error opening the device: %s\n", strerror(errno)); - return 1; - } - - rc = libevdev_new_from_fd(fd, &dev); - if (rc != 0) { - fprintf(stderr, "Error fetching the device info: %s\n", strerror(-rc)); - return 1; - } - - if (libevdev_grab(dev, LIBEVDEV_GRAB) != 0) { - fprintf(stderr, "Error: cannot grab the device, something else is grabbing it.\n"); - fprintf(stderr, "Use 'fuser -v %s' to find processes with an open fd\n", path); - return 1; - } - libevdev_grab(dev, LIBEVDEV_UNGRAB); - - printf("Mouse %s on %s\n", libevdev_get_name(dev), path); - printf("Move the device 250mm/10in or more along the x-axis.\n"); - printf("Pause 3 seconds before movement to reset, Ctrl+C to exit.\n"); - setbuf(stdout, NULL); - - rc = mainloop(dev, &measurements); - - printf("\n"); - - print_summary(dev, &measurements); - - libevdev_free(dev); - close(fd); - - return rc; -} diff --git a/tools/touchpad-edge-detector.1 b/tools/touchpad-edge-detector.1 deleted file mode 100644 index e9a4b9cdda33fcca415445bf45ff67a7719303da..0000000000000000000000000000000000000000 --- a/tools/touchpad-edge-detector.1 +++ /dev/null @@ -1,44 +0,0 @@ -.TH TOUCHPAD-EDGE-DETECTOR "1" -.SH NAME -touchpad-edge-detector \- print the axis ranges for a touchpad device -.SH SYNOPSIS -.B touchpad-edge-detector [--help] \fIWxH /dev/input/eventX\fR -.SH DESCRIPTION -.PP -The -.B touchpad-edge-detector -tool reads touchpad events from the kernel and records the minimum and -maximum coordinates based on user input. This is an interactive tool, the -user must move a finger around the touchpad, attempting to trigger an -event at all edges of the touchpad. -.PP -To terminate the event collection and print a summary, press Ctrl+C. It is -recommended that the tool is run several times to guarantee a reliable -result. -.SH OPTIONS -.TP 8 -.I WxH -The width and height of the touchpad in mm. For a touchpad 100mm wide and -75mm high, the argument is thus \fI100x75\fR. This is a required argument. -.TP 8 -.I /dev/input/eventX -The event node of the touchpad to read events from. A list of possible event -nodes can be obtained with either one of the following commands: \fBlibinput -record\fR, \fBevemu-record\fR, or \fBevtest\fR. Alternatively the event node -for a device is listed in the \fBHandlers=\fR line \fI/proc/bus/input/devices\fR. -This is a required argument. -.TP 8 -.B --help -Print a short help description -.SH NOTES -.PP -On completion, this tool prints a summary of the collected events and a -suggested udev rule. Due to rounding errors it is rare to get an exact match -for the touchpad's dimensions, but any discrepancy of more than 5mm should -be corrected with the suggested udev rule. -.PP -The udev rule should be simplified and submitted as a pull request to the -system repository at \fIhttps://github.com/systemd/systemd\fR. For further -guidance, see the file \fI/usr/lib/udev/hwdb.d/60-evdev.hwdb\fR. -.SH SEE ALSO -udev(7) diff --git a/tools/touchpad-edge-detector.c b/tools/touchpad-edge-detector.c deleted file mode 100644 index 8472c27d4e7c1d023cf39f8622dc6b4b778494a8..0000000000000000000000000000000000000000 --- a/tools/touchpad-edge-detector.c +++ /dev/null @@ -1,312 +0,0 @@ -/* - * Copyright © 2014 Red Hat, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without - * fee, provided that the above copyright notice appear in all copies - * and that both that copyright notice and this permission notice - * appear in supporting documentation, and that the name of Red Hat - * not be used in advertising or publicity pertaining to distribution - * of the software without specific, written prior permission. Red - * Hat makes no representations about the suitability of this software - * for any purpose. It is provided "as is" without express or implied - * warranty. - * - * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN - * NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "libevdev/libevdev.h" - -#define min(a, b) (((a) < (b)) ? (a) : (b)) -#define max(a, b) (((a) > (b)) ? (a) : (b)) - -static int signalled = 0; - -static int -usage(const char *progname) { - printf("Usage: %s 12x34 /dev/input/eventX\n", progname); - printf("\n"); - printf("This tool reads the touchpad events from the kernel and calculates\n " - "the minimum and maximum for the x and y coordinates, respectively.\n" - "The first argument is the physical size of the touchpad in mm (WIDTHxHEIGHT).\n"); - return 1; -} - -struct dimensions { - int top, bottom, left, right; -}; - -struct size { - int w, h; -}; - -static int -print_current_values(const struct dimensions *d) -{ - static int progress; - char status = 0; - - switch (progress) { - case 0: status = '|'; break; - case 1: status = '/'; break; - case 2: status = '-'; break; - case 3: status = '\\'; break; - } - - progress = (progress + 1) % 4; - - printf("\rTouchpad sends: x [%d..%d], y [%d..%d] %c", - d->left, d->right, d->top, d->bottom, status); - return 0; -} - -static int -handle_event(struct dimensions *d, const struct input_event *ev) { - if (ev->type == EV_SYN) - return print_current_values(d); - - if (ev->type != EV_ABS) - return 0; - - switch(ev->code) { - case ABS_X: - case ABS_MT_POSITION_X: - d->left = min(d->left, ev->value); - d->right = max(d->right, ev->value); - break; - case ABS_Y: - case ABS_MT_POSITION_Y: - d->top = min(d->top, ev->value); - d->bottom = max(d->bottom, ev->value); - break; - } - - return 0; -} - -static void -signal_handler(__attribute__((__unused__)) int signal) -{ - signalled++; -} - -static int -mainloop(struct libevdev *dev, struct dimensions *dim) { - struct pollfd fds; - - fds.fd = libevdev_get_fd(dev); - fds.events = POLLIN; - - signal(SIGINT, signal_handler); - - while (poll(&fds, 1, -1)) { - struct input_event ev; - int rc; - - if (signalled) - break; - - do { - rc = libevdev_next_event(dev, LIBEVDEV_READ_FLAG_NORMAL, &ev); - if (rc == LIBEVDEV_READ_STATUS_SYNC) { - fprintf(stderr, "Error: cannot keep up\n"); - return 1; - } - - if (rc != -EAGAIN && rc < 0) { - fprintf(stderr, "Error: %s\n", strerror(-rc)); - return 1; - - } - - if (rc == LIBEVDEV_READ_STATUS_SUCCESS) - handle_event(dim, &ev); - } while (rc != -EAGAIN); - } - - return 0; -} - -static inline void -pid_vid_matchstr(struct libevdev *dev, char *match, size_t sz) -{ - snprintf(match, sz, "input:b%04Xv%04Xp%04X", - libevdev_get_id_bustype(dev), - libevdev_get_id_vendor(dev), - libevdev_get_id_product(dev)); -} - -static inline void -dmi_matchstr(struct libevdev *dev, char *match, size_t sz) -{ - char modalias[PATH_MAX]; - FILE *fp; - - fp = fopen("/sys/class/dmi/id/modalias", "r"); - if (!fp || fgets(modalias, sizeof(modalias), fp) == NULL) { - sprintf(match, "ERROR READING DMI MODALIAS"); - if (fp) - fclose(fp); - return; - } - - fclose(fp); - - modalias[strlen(modalias) - 1] = '\0'; /* drop \n */ - snprintf(match, sz, "name:%s:%s", libevdev_get_name(dev), modalias); -} - -static void -print_udev_override_rule(struct libevdev *dev, - const struct dimensions *dim, - const struct size *size) { - const struct input_absinfo *x, *y; - char match[PATH_MAX]; - int w, h; - int xres, yres; - - x = libevdev_get_abs_info(dev, ABS_X); - y = libevdev_get_abs_info(dev, ABS_Y); - w = dim->right - dim->left; - h = dim->bottom - dim->top; - xres = round((double)w/size->w); - yres = round((double)h/size->h); - - if (x->resolution && y->resolution) { - int width = x->maximum - x->minimum, - height = y->maximum - y->minimum; - printf("Touchpad size as listed by the kernel: %dx%dmm\n", - width/x->resolution, height/y->resolution); - } else { - printf("Touchpad has no resolution, size unknown\n"); - } - - printf("User-specified touchpad size: %dx%dmm\n", size->w, size->h); - printf("Calculated ranges: %d/%d\n", w, h); - printf("\n"); - printf("Suggested udev rule:\n"); - - switch(libevdev_get_id_bustype(dev)) { - case BUS_USB: - case BUS_BLUETOOTH: - pid_vid_matchstr(dev, match, sizeof(match)); - break; - default: - dmi_matchstr(dev, match, sizeof(match)); - break; - } - - printf("# \n" - "evdev:%s*\n" - " EVDEV_ABS_00=%d:%d:%d\n" - " EVDEV_ABS_01=%d:%d:%d\n", - match, - dim->left, dim->right, xres, - dim->top, dim->bottom, yres); - if (libevdev_has_event_code(dev, EV_ABS, ABS_MT_POSITION_X)) - printf(" EVDEV_ABS_35=%d:%d:%d\n" - " EVDEV_ABS_36=%d:%d:%d\n", - dim->left, dim->right, xres, - dim->top, dim->bottom, yres); -} - -int main (int argc, char **argv) { - int rc; - int fd; - const char *path; - struct libevdev *dev; - struct dimensions dim; - struct size size; - - if (argc < 3) - return usage(basename(argv[0])); - - if (sscanf(argv[1], "%dx%d", &size.w, &size.h) != 2 || - size.w <= 0 || size.h <= 0) - return usage(basename(argv[0])); - - if (size.w < 30 || size.h < 30) { - fprintf(stderr, - "%dx%dmm is too small for a touchpad.\n" - "Please specify the touchpad size in mm.\n", - size.w, size.h); - return 1; - } - - path = argv[2]; - if (path[0] == '-') - return usage(basename(argv[0])); - - fd = open(path, O_RDONLY|O_NONBLOCK); - if (fd < 0) { - fprintf(stderr, "Error opening the device: %s\n", strerror(errno)); - return 1; - } - - rc = libevdev_new_from_fd(fd, &dev); - if (rc != 0) { - fprintf(stderr, "Error fetching the device info: %s\n", strerror(-rc)); - return 1; - } - - if (libevdev_grab(dev, LIBEVDEV_GRAB) != 0) { - fprintf(stderr, "Error: cannot grab the device, something else is grabbing it.\n"); - fprintf(stderr, "Use 'fuser -v %s' to find processes with an open fd\n", path); - return 1; - } - libevdev_grab(dev, LIBEVDEV_UNGRAB); - - if (!libevdev_has_event_code(dev, EV_ABS, ABS_X) || - !libevdev_has_event_code(dev, EV_ABS, ABS_Y)) { - fprintf(stderr, "Error: this device does not have abs axes\n"); - rc = EXIT_FAILURE; - goto out; - } - - dim.left = INT_MAX; - dim.right = INT_MIN; - dim.top = INT_MAX; - dim.bottom = INT_MIN; - - printf("Touchpad %s on %s\n", libevdev_get_name(dev), path); - printf("Move one finger around the touchpad to detect the actual edges\n"); - printf("Kernel says: x [%d..%d], y [%d..%d]\n", - libevdev_get_abs_minimum(dev, ABS_X), - libevdev_get_abs_maximum(dev, ABS_X), - libevdev_get_abs_minimum(dev, ABS_Y), - libevdev_get_abs_maximum(dev, ABS_Y)); - - setbuf(stdout, NULL); - - rc = mainloop(dev, &dim); - printf("\n\n"); - - print_udev_override_rule(dev, &dim, &size); - -out: - libevdev_free(dev); - close(fd); - - return rc; -}