From 7fe60435bce6595a9c58a9bfd8244d74b5320e96 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Tue, 15 Jan 2013 08:46:13 +0100 Subject: Import DirectFB141_2k11R3_beta5 --- Source/DirectFB/inputdrivers/Makefile.am | 98 + Source/DirectFB/inputdrivers/Makefile.in | 597 ++++++ .../DirectFB/inputdrivers/dbox2remote/Makefile.am | 31 + .../DirectFB/inputdrivers/dbox2remote/Makefile.in | 598 ++++++ .../inputdrivers/dbox2remote/dbox2remote.c | 340 ++++ .../inputdrivers/dreamboxremote/Makefile.am | 31 + .../inputdrivers/dreamboxremote/Makefile.in | 598 ++++++ .../inputdrivers/dreamboxremote/dreamboxremote.c | 329 ++++ Source/DirectFB/inputdrivers/dynapro/Makefile.am | 30 + Source/DirectFB/inputdrivers/dynapro/Makefile.in | 592 ++++++ Source/DirectFB/inputdrivers/dynapro/dynapro.c | 356 ++++ Source/DirectFB/inputdrivers/elo/Makefile.am | 31 + Source/DirectFB/inputdrivers/elo/Makefile.in | 592 ++++++ Source/DirectFB/inputdrivers/elo/elo.c | 539 ++++++ Source/DirectFB/inputdrivers/gunze/Makefile.am | 30 + Source/DirectFB/inputdrivers/gunze/Makefile.in | 592 ++++++ Source/DirectFB/inputdrivers/gunze/gunze.c | 576 ++++++ Source/DirectFB/inputdrivers/h3600_ts/Makefile.am | 31 + Source/DirectFB/inputdrivers/h3600_ts/Makefile.in | 593 ++++++ Source/DirectFB/inputdrivers/h3600_ts/h3600_ts.c | 239 +++ Source/DirectFB/inputdrivers/joystick/Makefile.am | 31 + Source/DirectFB/inputdrivers/joystick/Makefile.in | 594 ++++++ Source/DirectFB/inputdrivers/joystick/joystick.c | 279 +++ Source/DirectFB/inputdrivers/keyboard/Makefile.am | 33 + Source/DirectFB/inputdrivers/keyboard/Makefile.in | 596 ++++++ Source/DirectFB/inputdrivers/keyboard/keyboard.c | 524 +++++ .../DirectFB/inputdrivers/linux_input/Makefile.am | 34 + .../DirectFB/inputdrivers/linux_input/Makefile.in | 601 ++++++ .../DirectFB/inputdrivers/linux_input/input_fake.h | 84 + .../inputdrivers/linux_input/linux_input.c | 1994 ++++++++++++++++++++ Source/DirectFB/inputdrivers/lirc/Makefile.am | 32 + Source/DirectFB/inputdrivers/lirc/Makefile.in | 593 ++++++ Source/DirectFB/inputdrivers/lirc/lirc.c | 353 ++++ Source/DirectFB/inputdrivers/mutouch/Makefile.am | 30 + Source/DirectFB/inputdrivers/mutouch/Makefile.in | 590 ++++++ Source/DirectFB/inputdrivers/mutouch/mutouch.c | 615 ++++++ Source/DirectFB/inputdrivers/penmount/Makefile.am | 29 + Source/DirectFB/inputdrivers/penmount/Makefile.in | 591 ++++++ Source/DirectFB/inputdrivers/penmount/penmount.c | 363 ++++ Source/DirectFB/inputdrivers/ps2mouse/Makefile.am | 31 + Source/DirectFB/inputdrivers/ps2mouse/Makefile.in | 594 ++++++ Source/DirectFB/inputdrivers/ps2mouse/ps2mouse.c | 576 ++++++ .../DirectFB/inputdrivers/serialmouse/Makefile.am | 30 + .../DirectFB/inputdrivers/serialmouse/Makefile.in | 595 ++++++ .../inputdrivers/serialmouse/serialmouse.c | 572 ++++++ Source/DirectFB/inputdrivers/sonypi/Makefile.am | 31 + Source/DirectFB/inputdrivers/sonypi/Makefile.in | 592 ++++++ Source/DirectFB/inputdrivers/sonypi/sonypi.c | 265 +++ Source/DirectFB/inputdrivers/tslib/Makefile.am | 33 + Source/DirectFB/inputdrivers/tslib/Makefile.in | 605 ++++++ Source/DirectFB/inputdrivers/tslib/tslib.c | 292 +++ .../DirectFB/inputdrivers/ucb1x00_ts/Makefile.am | 31 + .../DirectFB/inputdrivers/ucb1x00_ts/Makefile.in | 594 ++++++ .../DirectFB/inputdrivers/ucb1x00_ts/ucb1x00_ts.c | 361 ++++ Source/DirectFB/inputdrivers/wm97xx_ts/Makefile.am | 31 + Source/DirectFB/inputdrivers/wm97xx_ts/Makefile.in | 593 ++++++ Source/DirectFB/inputdrivers/wm97xx_ts/wm97xx_ts.c | 260 +++ Source/DirectFB/inputdrivers/zytronic/Makefile.am | 30 + Source/DirectFB/inputdrivers/zytronic/Makefile.in | 591 ++++++ Source/DirectFB/inputdrivers/zytronic/zytronic.c | 628 ++++++ 60 files changed, 22124 insertions(+) create mode 100755 Source/DirectFB/inputdrivers/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/dbox2remote/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/dbox2remote/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/dbox2remote/dbox2remote.c create mode 100755 Source/DirectFB/inputdrivers/dreamboxremote/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/dreamboxremote/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/dreamboxremote/dreamboxremote.c create mode 100755 Source/DirectFB/inputdrivers/dynapro/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/dynapro/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/dynapro/dynapro.c create mode 100755 Source/DirectFB/inputdrivers/elo/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/elo/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/elo/elo.c create mode 100755 Source/DirectFB/inputdrivers/gunze/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/gunze/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/gunze/gunze.c create mode 100755 Source/DirectFB/inputdrivers/h3600_ts/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/h3600_ts/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/h3600_ts/h3600_ts.c create mode 100755 Source/DirectFB/inputdrivers/joystick/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/joystick/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/joystick/joystick.c create mode 100755 Source/DirectFB/inputdrivers/keyboard/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/keyboard/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/keyboard/keyboard.c create mode 100755 Source/DirectFB/inputdrivers/linux_input/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/linux_input/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/linux_input/input_fake.h create mode 100755 Source/DirectFB/inputdrivers/linux_input/linux_input.c create mode 100755 Source/DirectFB/inputdrivers/lirc/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/lirc/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/lirc/lirc.c create mode 100755 Source/DirectFB/inputdrivers/mutouch/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/mutouch/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/mutouch/mutouch.c create mode 100755 Source/DirectFB/inputdrivers/penmount/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/penmount/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/penmount/penmount.c create mode 100755 Source/DirectFB/inputdrivers/ps2mouse/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/ps2mouse/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/ps2mouse/ps2mouse.c create mode 100755 Source/DirectFB/inputdrivers/serialmouse/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/serialmouse/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/serialmouse/serialmouse.c create mode 100755 Source/DirectFB/inputdrivers/sonypi/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/sonypi/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/sonypi/sonypi.c create mode 100755 Source/DirectFB/inputdrivers/tslib/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/tslib/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/tslib/tslib.c create mode 100755 Source/DirectFB/inputdrivers/ucb1x00_ts/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/ucb1x00_ts/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/ucb1x00_ts/ucb1x00_ts.c create mode 100755 Source/DirectFB/inputdrivers/wm97xx_ts/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/wm97xx_ts/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/wm97xx_ts/wm97xx_ts.c create mode 100755 Source/DirectFB/inputdrivers/zytronic/Makefile.am create mode 100755 Source/DirectFB/inputdrivers/zytronic/Makefile.in create mode 100755 Source/DirectFB/inputdrivers/zytronic/zytronic.c (limited to 'Source/DirectFB/inputdrivers') diff --git a/Source/DirectFB/inputdrivers/Makefile.am b/Source/DirectFB/inputdrivers/Makefile.am new file mode 100755 index 0000000..331644c --- /dev/null +++ b/Source/DirectFB/inputdrivers/Makefile.am @@ -0,0 +1,98 @@ +## Makefile.am for DirectFB/inputdrivers + +if DBOX2REMOTE +DBOX2REMOTE_DIR = dbox2remote +endif + +if DREAMBOXREMOTE +DREAMBOXREMOTE_DIR = dreamboxremote +endif + +if DYNAPRO_INPUT +DYNAPRO_INPUT_DIR = dynapro +endif + +if ELO_INPUT +ELO_INPUT_DIR = elo +endif + +if GUNZE_INPUT +GUNZE_INPUT_DIR = gunze +endif + +if H3600_TS +H3600_TS_DIR = h3600_ts +endif + +if JOYSTICK_INPUT +JOYSTICK_INPUT_DIR = joystick +endif + +if KEYBOARD_INPUT +KEYBOARD_INPUT_DIR = keyboard +endif + +if LINUX_INPUT +LINUX_INPUT_DIR = linux_input +endif + +if LIRC_INPUT +LIRC_INPUT_DIR = lirc +endif + +if MUTOUCH_TS +MUTOUCH_TS_DIR = mutouch +endif + +if ZYTRONIC_TS +ZYTRONIC_TS_DIR = zytronic +endif + +if PENMOUNT_TS +PENMOUNT_TS_DIR = penmount +endif + +if PS2MOUSE_INPUT +PS2MOUSE_INPUT_DIR = ps2mouse +endif + +if SERIAL_MOUSE_INPUT +SERIALMOUSE_INPUT_DIR = serialmouse +endif + +if SONYPI +SONYPI_DIR = sonypi +endif + +if TSLIB +TSLIB_DIR = tslib +endif + +if UCB1X00_TS +UCB1X00_TS_DIR = ucb1x00_ts +endif + +if WM97XX_TS +WM97XX_TS_DIR = wm97xx_ts +endif + +SUBDIRS = \ + $(DBOX2REMOTE_DIR) \ + $(DREAMBOXREMOTE_DIR) \ + $(DYNAPRO_INPUT_DIR) \ + $(ELO_INPUT_DIR) \ + $(GUNZE_INPUT_DIR) \ + $(H3600_TS_DIR) \ + $(JOYSTICK_INPUT_DIR) \ + $(KEYBOARD_INPUT_DIR) \ + $(LINUX_INPUT_DIR) \ + $(LIRC_INPUT_DIR) \ + $(MUTOUCH_TS_DIR) \ + $(ZYTRONIC_TS_DIR) \ + $(PENMOUNT_TS_DIR) \ + $(PS2MOUSE_INPUT_DIR) \ + $(SERIALMOUSE_INPUT_DIR) \ + $(SONYPI_DIR) \ + $(TSLIB_DIR) \ + $(UCB1X00_TS_DIR) \ + $(WM97XX_TS_DIR) diff --git a/Source/DirectFB/inputdrivers/Makefile.in b/Source/DirectFB/inputdrivers/Makefile.in new file mode 100755 index 0000000..2da6621 --- /dev/null +++ b/Source/DirectFB/inputdrivers/Makefile.in @@ -0,0 +1,597 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +subdir = inputdrivers +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-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 uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = dbox2remote dreamboxremote dynapro elo gunze h3600_ts \ + joystick keyboard linux_input lirc mutouch zytronic penmount \ + ps2mouse serialmouse sonypi tslib ucb1x00_ts wm97xx_ts +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +@DBOX2REMOTE_TRUE@DBOX2REMOTE_DIR = dbox2remote +@DREAMBOXREMOTE_TRUE@DREAMBOXREMOTE_DIR = dreamboxremote +@DYNAPRO_INPUT_TRUE@DYNAPRO_INPUT_DIR = dynapro +@ELO_INPUT_TRUE@ELO_INPUT_DIR = elo +@GUNZE_INPUT_TRUE@GUNZE_INPUT_DIR = gunze +@H3600_TS_TRUE@H3600_TS_DIR = h3600_ts +@JOYSTICK_INPUT_TRUE@JOYSTICK_INPUT_DIR = joystick +@KEYBOARD_INPUT_TRUE@KEYBOARD_INPUT_DIR = keyboard +@LINUX_INPUT_TRUE@LINUX_INPUT_DIR = linux_input +@LIRC_INPUT_TRUE@LIRC_INPUT_DIR = lirc +@MUTOUCH_TS_TRUE@MUTOUCH_TS_DIR = mutouch +@ZYTRONIC_TS_TRUE@ZYTRONIC_TS_DIR = zytronic +@PENMOUNT_TS_TRUE@PENMOUNT_TS_DIR = penmount +@PS2MOUSE_INPUT_TRUE@PS2MOUSE_INPUT_DIR = ps2mouse +@SERIAL_MOUSE_INPUT_TRUE@SERIALMOUSE_INPUT_DIR = serialmouse +@SONYPI_TRUE@SONYPI_DIR = sonypi +@TSLIB_TRUE@TSLIB_DIR = tslib +@UCB1X00_TS_TRUE@UCB1X00_TS_DIR = ucb1x00_ts +@WM97XX_TS_TRUE@WM97XX_TS_DIR = wm97xx_ts +SUBDIRS = \ + $(DBOX2REMOTE_DIR) \ + $(DREAMBOXREMOTE_DIR) \ + $(DYNAPRO_INPUT_DIR) \ + $(ELO_INPUT_DIR) \ + $(GUNZE_INPUT_DIR) \ + $(H3600_TS_DIR) \ + $(JOYSTICK_INPUT_DIR) \ + $(KEYBOARD_INPUT_DIR) \ + $(LINUX_INPUT_DIR) \ + $(LIRC_INPUT_DIR) \ + $(MUTOUCH_TS_DIR) \ + $(ZYTRONIC_TS_DIR) \ + $(PENMOUNT_TS_DIR) \ + $(PS2MOUSE_INPUT_DIR) \ + $(SERIALMOUSE_INPUT_DIR) \ + $(SONYPI_DIR) \ + $(TSLIB_DIR) \ + $(UCB1X00_TS_DIR) \ + $(WM97XX_TS_DIR) + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# 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. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; 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; \ + (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" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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 || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -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: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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 installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + +# 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/Source/DirectFB/inputdrivers/dbox2remote/Makefile.am b/Source/DirectFB/inputdrivers/dbox2remote/Makefile.am new file mode 100755 index 0000000..9d880f8 --- /dev/null +++ b/Source/DirectFB/inputdrivers/dbox2remote/Makefile.am @@ -0,0 +1,31 @@ +## Makefile.am for DirectFB/inputdrivers/dbox2remote + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +dbox2remote_LTLIBRARIES = libdirectfb_dbox2remote.la + +if BUILD_STATIC +dbox2remote_DATA = $(dbox2remote_LTLIBRARIES:.la=.o) +endif + +dbox2remotedir = $(MODULEDIR)/inputdrivers + +libdirectfb_dbox2remote_la_SOURCES = \ + dbox2remote.c + +libdirectfb_dbox2remote_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_dbox2remote_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/dbox2remote/Makefile.in b/Source/DirectFB/inputdrivers/dbox2remote/Makefile.in new file mode 100755 index 0000000..924cfb1 --- /dev/null +++ b/Source/DirectFB/inputdrivers/dbox2remote/Makefile.in @@ -0,0 +1,598 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/dbox2remote +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(dbox2remotedir)" \ + "$(DESTDIR)$(dbox2remotedir)" +dbox2remoteLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(dbox2remote_LTLIBRARIES) +libdirectfb_dbox2remote_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_dbox2remote_la_OBJECTS = dbox2remote.lo +libdirectfb_dbox2remote_la_OBJECTS = \ + $(am_libdirectfb_dbox2remote_la_OBJECTS) +libdirectfb_dbox2remote_la_LINK = $(LIBTOOL) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libdirectfb_dbox2remote_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_dbox2remote_la_SOURCES) +DIST_SOURCES = $(libdirectfb_dbox2remote_la_SOURCES) +dbox2remoteDATA_INSTALL = $(INSTALL_DATA) +DATA = $(dbox2remote_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +dbox2remote_LTLIBRARIES = libdirectfb_dbox2remote.la +@BUILD_STATIC_TRUE@dbox2remote_DATA = $(dbox2remote_LTLIBRARIES:.la=.o) +dbox2remotedir = $(MODULEDIR)/inputdrivers +libdirectfb_dbox2remote_la_SOURCES = \ + dbox2remote.c + +libdirectfb_dbox2remote_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_dbox2remote_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/dbox2remote/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/dbox2remote/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-dbox2remoteLTLIBRARIES: $(dbox2remote_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(dbox2remotedir)" || $(MKDIR_P) "$(DESTDIR)$(dbox2remotedir)" + @list='$(dbox2remote_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(dbox2remoteLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(dbox2remotedir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(dbox2remoteLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(dbox2remotedir)/$$f"; \ + else :; fi; \ + done + +uninstall-dbox2remoteLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(dbox2remote_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(dbox2remotedir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(dbox2remotedir)/$$p"; \ + done + +clean-dbox2remoteLTLIBRARIES: + -test -z "$(dbox2remote_LTLIBRARIES)" || rm -f $(dbox2remote_LTLIBRARIES) + @list='$(dbox2remote_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_dbox2remote.la: $(libdirectfb_dbox2remote_la_OBJECTS) $(libdirectfb_dbox2remote_la_DEPENDENCIES) + $(libdirectfb_dbox2remote_la_LINK) -rpath $(dbox2remotedir) $(libdirectfb_dbox2remote_la_OBJECTS) $(libdirectfb_dbox2remote_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbox2remote.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dbox2remoteDATA: $(dbox2remote_DATA) + @$(NORMAL_INSTALL) + test -z "$(dbox2remotedir)" || $(MKDIR_P) "$(DESTDIR)$(dbox2remotedir)" + @list='$(dbox2remote_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(dbox2remoteDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(dbox2remotedir)/$$f'"; \ + $(dbox2remoteDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(dbox2remotedir)/$$f"; \ + done + +uninstall-dbox2remoteDATA: + @$(NORMAL_UNINSTALL) + @list='$(dbox2remote_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dbox2remotedir)/$$f'"; \ + rm -f "$(DESTDIR)$(dbox2remotedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(dbox2remotedir)" "$(DESTDIR)$(dbox2remotedir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-dbox2remoteLTLIBRARIES clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-dbox2remoteDATA \ + install-dbox2remoteLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-dbox2remoteDATA \ + uninstall-dbox2remoteLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean \ + clean-dbox2remoteLTLIBRARIES clean-generic clean-libtool ctags \ + 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-dbox2remoteDATA \ + install-dbox2remoteLTLIBRARIES 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 \ + tags uninstall uninstall-am uninstall-dbox2remoteDATA \ + uninstall-dbox2remoteLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/dbox2remote/dbox2remote.c b/Source/DirectFB/inputdrivers/dbox2remote/dbox2remote.c new file mode 100755 index 0000000..cc7dbc1 --- /dev/null +++ b/Source/DirectFB/inputdrivers/dbox2remote/dbox2remote.c @@ -0,0 +1,340 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include +#include +#include + +#include +#include +#include + +#include + +#include + +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include + + +DFB_INPUT_DRIVER( dbox2remote ) + +#define DEVICE "/dev/dbox/rc0" + +typedef struct { + DFBInputDeviceKeySymbol key; + u16 rccode; +} KeyCode; + +/* REMOTE_NEW is the one with _fewer_ buttons */ +static KeyCode keycodes_new_remote[] = { + { DIKS_0, 0x0000 }, + { DIKS_1, 0x0001 }, + { DIKS_2, 0x0002 }, + { DIKS_3, 0x0003 }, + { DIKS_4, 0x0004 }, + { DIKS_5, 0x0005 }, + { DIKS_6, 0x0006 }, + { DIKS_7, 0x0007 }, + { DIKS_8, 0x0008 }, + { DIKS_9, 0x0009 }, + + { DIKS_CURSOR_LEFT, 0x000b }, + { DIKS_CURSOR_RIGHT, 0x000a }, + { DIKS_CURSOR_UP, 0x000c }, + { DIKS_CURSOR_DOWN, 0x000d }, + /* FIXME: add support for right-up, right-down, left-down, left-up, + they occur, too */ + + { DIKS_RED, 0x0013 }, + { DIKS_GREEN, 0x0011 }, + { DIKS_YELLOW, 0x0012 }, + { DIKS_BLUE, 0x0014 }, + + { DIKS_OK, 0x000e }, + { DIKS_HOME, 0x001F }, + { DIKS_VENDOR, 0x0018 }, /* "d-box" key */ + { DIKS_POWER, 0x0010 }, + + { DIKS_PAGE_DOWN, 0x0053 }, /* dbox1 only */ + { DIKS_PAGE_UP, 0x0054 }, /* dbox1 only */ + + { DIKS_VOLUME_UP, 0x0015 }, + { DIKS_VOLUME_DOWN, 0x0016 }, + { DIKS_MUTE, 0x000f }, + { DIKS_INFO, 0x0017 }, + { DIKS_NULL, 0xFFFF } +}; + +static KeyCode keycodes_old_remote[] = { + { DIKS_0, 0x5c00 }, + { DIKS_1, 0x5c01 }, + { DIKS_2, 0x5c02 }, + { DIKS_3, 0x5c03 }, + { DIKS_4, 0x5c04 }, + { DIKS_5, 0x5c05 }, + { DIKS_6, 0x5c06 }, + { DIKS_7, 0x5c07 }, + { DIKS_8, 0x5c08 }, + { DIKS_9, 0x5c09 }, + + { DIKS_CURSOR_LEFT, 0x5c2f }, + { DIKS_CURSOR_RIGHT, 0x5c2e }, + { DIKS_CURSOR_UP, 0x5c0e }, + { DIKS_CURSOR_DOWN, 0x5c0f }, + + { DIKS_RED, 0x5c2D }, + { DIKS_GREEN, 0x5c55 }, + { DIKS_YELLOW, 0x5c52 }, + { DIKS_BLUE, 0x5c3b }, + + { DIKS_OK, 0x5c30 }, + { DIKS_HOME, 0x5c20 }, /* radio key */ + { DIKS_VENDOR, 0x5c27 }, /* TV key */ + { DIKS_POWER, 0x5c0c }, + + { DIKS_PAGE_DOWN, 0x5c53 }, /* dbox1 only */ + { DIKS_PAGE_UP, 0x5c54 }, /* dbox1 only */ + + { DIKS_VOLUME_UP, 0x5c16 }, + { DIKS_VOLUME_DOWN, 0x5c17 }, + { DIKS_MUTE, 0x5c28 }, + { DIKS_INFO, 0x5c82 }, + { DIKS_NULL, 0xFFFF } +}; + + +/* + * declaration of private data + */ +typedef struct { + CoreInputDevice *device; + DirectThread *thread; + + int fd; +} Dbox2remoteData; + + +/* + * helper function for translating rccode + */ +static DFBInputDeviceKeySymbol +dbox2remote_parse_rccode( u16 rccode ) +{ + KeyCode *keycode; + + if ((rccode & 0xff00) == 0x5c00) { + keycode = keycodes_old_remote; + } + else { + keycode = keycodes_new_remote; + rccode &= 0x003f; + } + + while (keycode->key != DIKS_NULL) { + if (keycode->rccode == rccode) { + return keycode->key; + } + keycode++; + } + + return DIKS_NULL; +} + +/* + * Input thread reading from device. + * Generates events on incoming data. + */ +static void* +dbox2remoteEventThread( DirectThread *thread, void *driver_data ) +{ + Dbox2remoteData *data = (Dbox2remoteData*) driver_data; + int readlen; + u16 rccode; + DFBInputEvent evt; + + while ((readlen = read( data->fd, &rccode, 2 )) == 2) { + direct_thread_testcancel( thread ); + + /* translate rccode to DirectFB keycode */ + evt.key_symbol = dbox2remote_parse_rccode( rccode ); + if (evt.key_symbol != DIKS_NULL) { + /* set event type and dispatch*/ + evt.type = DIET_KEYPRESS; + evt.flags = DIEF_KEYSYMBOL; + dfb_input_dispatch( data->device, &evt ); + + /* set event type and dispatch*/ + evt.type = DIET_KEYRELEASE; + evt.flags = DIEF_KEYSYMBOL; + dfb_input_dispatch( data->device, &evt ); + } + } + + if (readlen <= 0 && errno != EINTR) + D_PERROR ("dbox2remote thread died\n"); + + return NULL; +} + +/* exported symbols */ + +/* + * Return the number of available devices. + * Called once during initialization of DirectFB. + */ +static int +driver_get_available( void ) +{ + /* Check if we are able to read from device */ + if (access( DEVICE, R_OK )) + return 0; + + return 1; +} + +/* + * Fill out general information about this driver. + * Called once during initialization of DirectFB. + */ +static void +driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf ( info->name, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "dbox2 remote" ); + snprintf ( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, "fischlustig" ); + + info->version.major = 0; + info->version.minor = 9; +} + +/* + * Open the device, fill out information about it, + * allocate and fill private data, start input thread. + * Called during initialization, resuming or taking over mastership. + */ +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + int fd; + Dbox2remoteData *data; + + /* open device */ + fd = open( DEVICE, O_RDONLY); + if (fd < 0) { + D_PERROR( "DirectFB/dbox2remote: could not open device" ); + return DFB_INIT; + } + + /* apply voodoo */ + ioctl( fd, RC_IOCTL_BCODES, 0 ); + + + /* set device name */ + snprintf( info->desc.name, + DFB_INPUT_DEVICE_DESC_NAME_LENGTH, "dbox2 remote control" ); + + /* set device vendor */ + snprintf( info->desc.vendor, + DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "nokia/sagem/philips" ); + + /* set one of the primary input device IDs */ + info->prefered_id = DIDID_REMOTE; + + /* set type flags */ + info->desc.type = DIDTF_REMOTE; + + /* set capabilities */ + info->desc.caps = DICAPS_KEYS; + + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(Dbox2remoteData) ); + if (!data) { + close( fd ); + return D_OOM(); + } + + data->fd = fd; + data->device = device; + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, dbox2remoteEventThread, data, "DBOX2 Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ + return DFB_UNSUPPORTED; +} + +/* + * End thread, close device and free private data. + */ +static void +driver_close_device( void *driver_data ) +{ + Dbox2remoteData *data = (Dbox2remoteData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + /* close file */ + close( data->fd ); + + /* free private data */ + D_FREE ( data ); +} + diff --git a/Source/DirectFB/inputdrivers/dreamboxremote/Makefile.am b/Source/DirectFB/inputdrivers/dreamboxremote/Makefile.am new file mode 100755 index 0000000..126288b --- /dev/null +++ b/Source/DirectFB/inputdrivers/dreamboxremote/Makefile.am @@ -0,0 +1,31 @@ +## Makefile.am for DirectFB/inputdrivers/dreamboxremote + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +dreamboxremote_LTLIBRARIES = libdirectfb_dreamboxremote.la + +if BUILD_STATIC +dreamboxremote_DATA = $(dreamboxremote_LTLIBRARIES:.la=.o) +endif + +dreamboxremotedir = $(MODULEDIR)/inputdrivers + +libdirectfb_dreamboxremote_la_SOURCES = \ + dreamboxremote.c + +libdirectfb_dreamboxremote_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_dreamboxremote_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/dreamboxremote/Makefile.in b/Source/DirectFB/inputdrivers/dreamboxremote/Makefile.in new file mode 100755 index 0000000..003e84b --- /dev/null +++ b/Source/DirectFB/inputdrivers/dreamboxremote/Makefile.in @@ -0,0 +1,598 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/dreamboxremote +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(dreamboxremotedir)" \ + "$(DESTDIR)$(dreamboxremotedir)" +dreamboxremoteLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(dreamboxremote_LTLIBRARIES) +libdirectfb_dreamboxremote_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_dreamboxremote_la_OBJECTS = dreamboxremote.lo +libdirectfb_dreamboxremote_la_OBJECTS = \ + $(am_libdirectfb_dreamboxremote_la_OBJECTS) +libdirectfb_dreamboxremote_la_LINK = $(LIBTOOL) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_dreamboxremote_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_dreamboxremote_la_SOURCES) +DIST_SOURCES = $(libdirectfb_dreamboxremote_la_SOURCES) +dreamboxremoteDATA_INSTALL = $(INSTALL_DATA) +DATA = $(dreamboxremote_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +dreamboxremote_LTLIBRARIES = libdirectfb_dreamboxremote.la +@BUILD_STATIC_TRUE@dreamboxremote_DATA = $(dreamboxremote_LTLIBRARIES:.la=.o) +dreamboxremotedir = $(MODULEDIR)/inputdrivers +libdirectfb_dreamboxremote_la_SOURCES = \ + dreamboxremote.c + +libdirectfb_dreamboxremote_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_dreamboxremote_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/dreamboxremote/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/dreamboxremote/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-dreamboxremoteLTLIBRARIES: $(dreamboxremote_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(dreamboxremotedir)" || $(MKDIR_P) "$(DESTDIR)$(dreamboxremotedir)" + @list='$(dreamboxremote_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(dreamboxremoteLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(dreamboxremotedir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(dreamboxremoteLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(dreamboxremotedir)/$$f"; \ + else :; fi; \ + done + +uninstall-dreamboxremoteLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(dreamboxremote_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(dreamboxremotedir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(dreamboxremotedir)/$$p"; \ + done + +clean-dreamboxremoteLTLIBRARIES: + -test -z "$(dreamboxremote_LTLIBRARIES)" || rm -f $(dreamboxremote_LTLIBRARIES) + @list='$(dreamboxremote_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_dreamboxremote.la: $(libdirectfb_dreamboxremote_la_OBJECTS) $(libdirectfb_dreamboxremote_la_DEPENDENCIES) + $(libdirectfb_dreamboxremote_la_LINK) -rpath $(dreamboxremotedir) $(libdirectfb_dreamboxremote_la_OBJECTS) $(libdirectfb_dreamboxremote_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dreamboxremote.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dreamboxremoteDATA: $(dreamboxremote_DATA) + @$(NORMAL_INSTALL) + test -z "$(dreamboxremotedir)" || $(MKDIR_P) "$(DESTDIR)$(dreamboxremotedir)" + @list='$(dreamboxremote_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(dreamboxremoteDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(dreamboxremotedir)/$$f'"; \ + $(dreamboxremoteDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(dreamboxremotedir)/$$f"; \ + done + +uninstall-dreamboxremoteDATA: + @$(NORMAL_UNINSTALL) + @list='$(dreamboxremote_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dreamboxremotedir)/$$f'"; \ + rm -f "$(DESTDIR)$(dreamboxremotedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(dreamboxremotedir)" "$(DESTDIR)$(dreamboxremotedir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-dreamboxremoteLTLIBRARIES clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-dreamboxremoteDATA \ + install-dreamboxremoteLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-dreamboxremoteDATA \ + uninstall-dreamboxremoteLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean \ + clean-dreamboxremoteLTLIBRARIES clean-generic clean-libtool \ + ctags 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-dreamboxremoteDATA \ + install-dreamboxremoteLTLIBRARIES 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 \ + tags uninstall uninstall-am uninstall-dreamboxremoteDATA \ + uninstall-dreamboxremoteLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/dreamboxremote/dreamboxremote.c b/Source/DirectFB/inputdrivers/dreamboxremote/dreamboxremote.c new file mode 100755 index 0000000..2aa297f --- /dev/null +++ b/Source/DirectFB/inputdrivers/dreamboxremote/dreamboxremote.c @@ -0,0 +1,329 @@ +/* + (c) Copyright 2005 Marcel Siegert + + All rights reserved. + + Written by Marcel Siegert + + Mainly based on dbox2remote: + + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include +#include +#include + +#include +#include +#include + +#include + +#include + +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include + +DFB_INPUT_DRIVER( dreamboxremote ) + +#define DEVICE "/dev/rawir2" + +typedef struct { + DFBInputDeviceKeySymbol key; + u16 rccode; +} KeyCode; + +static KeyCode keycodes_remote[] = { + { DIKS_0, 0x0000 }, + { DIKS_1, 0x0001 }, + { DIKS_2, 0x0002 }, + { DIKS_3, 0x0003 }, + { DIKS_4, 0x0004 }, + { DIKS_5, 0x0005 }, + { DIKS_6, 0x0006 }, + { DIKS_7, 0x0007 }, + { DIKS_8, 0x0008 }, + { DIKS_9, 0x0009 }, + { DIKS_VOLUME_UP, 0x000a }, + { DIKS_VOLUME_DOWN, 0x000b }, + { DIKS_SELECT, 0x000c }, // DM500 Mute +// TODO find appropriate DIKS codes +/* + { DIKS_TV??, 0x000c }, // TV + { DIKS_, 0x000d }, // bouquet up + { DIKS_, 0x000e }, // bouquet down + { DIKS_, 0x000f }, // power on/off standby +*/ + { DIKS_MENU, 0x0020 }, // DREAM + { DIKS_CURSOR_UP, 0x0021 }, + { DIKS_CURSOR_DOWN, 0x0022 }, + { DIKS_CURSOR_LEFT, 0x0023 }, + { DIKS_CURSOR_RIGHT, 0x0024 }, + { DIKS_OK, 0x0025 }, +// TODO find appropriate DIKS codes +// { DIKS_, 0x0026 }, // audio +// { DIKS_, 0x0027 }, // video + { DIKS_INFO, 0x0028 }, + { DIKS_RED, 0x0040 }, + { DIKS_GREEN, 0x0041 }, + { DIKS_YELLOW, 0x0042 }, + { DIKS_BLUE, 0x0043 }, + { DIKS_MUTE, 0x0044 }, +// TODO find appropriate DIKS codes +// { DIKS_, 0x0045 }, // text +// { DIKS_, 0x0050 }, // forward +// { DIKS_, 0x0051 }, // back + { DIKS_HOME, 0x0052 }, // lame + { DIKS_SLOW, 0x0054 }, // dm500 lame +// { DIKS_, 0x0053 }, // text +// { DIKS_, 0x0054 }, // help + + { DIKS_NULL, 0xFFFF } +}; + + +/* + * declaration of private data + */ +typedef struct { + CoreInputDevice *device; + DirectThread *thread; + + int fd; +} DreamboxremoteData; + + +/* + * helper function for translating rccode + */ +static DFBInputDeviceKeySymbol +dreamboxremote_parse_rccode( u16 rccode ) +{ + KeyCode *keycode; + static u16 rccodeOld = 0; + + keycode = keycodes_remote; + /* 0x00ff indicates key was released + so reset rccodeOld and do nothing + */ + if ( rccode == 0x00ff ) { + rccodeOld = 0; + return DIKS_NULL; + } + /* check for a new keycode + the drivers return msb clear if a key is + pressed - msb set if pressed + ignore key down - otherwise 2 events are + generated for one press + */ + rccode &= 0x7fff; + if (rccodeOld != rccode ) { + rccodeOld = rccode; + return DIKS_NULL; + } + + while (keycode->key != DIKS_NULL) { + if (keycode->rccode == rccode) { + return keycode->key; + } + keycode++; + } + return DIKS_NULL; +} + +/* + * Input thread reading from device. + * Generates events on incoming data. + */ +static void* +dreamboxremoteEventThread( DirectThread *thread, void *driver_data ) +{ + DreamboxremoteData *data = (DreamboxremoteData*) driver_data; + int readlen; + u16 rccode; + DFBInputEvent evt; + + while ((readlen = read( data->fd, &rccode, 2 )) == 2) { + direct_thread_testcancel( thread ); + + /* translate rccode to DirectFB keycode */ + evt.key_symbol = dreamboxremote_parse_rccode( rccode ); + if (evt.key_symbol != DIKS_NULL) { + /* set event type and dispatch*/ + evt.type = DIET_KEYPRESS; + evt.flags = DIEF_KEYSYMBOL; + dfb_input_dispatch( data->device, &evt ); + + /* set event type and dispatch*/ + evt.type = DIET_KEYRELEASE; + evt.flags = DIEF_KEYSYMBOL; + dfb_input_dispatch( data->device, &evt ); + } + } + + if (readlen <= 0 && errno != EINTR) + D_PERROR ("dreamboxremote thread died\n"); + + return NULL; +} + +/* exported symbols */ + +/* + * Return the number of available devices. + * Called once during initialization of DirectFB. + */ +static int +driver_get_available( void ) +{ + /* Check if we are able to read from device */ + if (access( DEVICE, R_OK )) + return 0; + + return 1; +} + +/* + * Fill out general information about this driver. + * Called once during initialization of DirectFB. + */ +static void +driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf ( info->name, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "dreambox remote" ); + snprintf ( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, "mws" ); + + info->version.major = 0; + info->version.minor = 1; +} + +/* + * Open the device, fill out information about it, + * allocate and fill private data, start input thread. + * Called during initialization, resuming or taking over mastership. + */ +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + int fd; + DreamboxremoteData *data; + + /* open device */ + fd = open( DEVICE, O_RDONLY); + if (fd < 0) { + D_PERROR( "DirectFB/dreamboxremote: could not open device" ); + return DFB_INIT; + } + + /* apply voodoo */ + //ioctl( fd, RC_IOCTL_BCODES, 0 ); + + + /* set device name */ + snprintf( info->desc.name, + DFB_INPUT_DEVICE_DESC_NAME_LENGTH, "dreambox remote control" ); + + /* set device vendor */ + snprintf( info->desc.vendor, + DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "DM7000/DM56XX/DM500" ); + + /* set one of the primary input device IDs */ + info->prefered_id = DIDID_REMOTE; + + /* set type flags */ + info->desc.type = DIDTF_REMOTE; + + /* set capabilities */ + info->desc.caps = DICAPS_KEYS; + + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(DreamboxremoteData) ); + if (!data) { + close( fd ); + return D_OOM(); + } + + data->fd = fd; + data->device = device; + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, dreamboxremoteEventThread, data, "DreamBox Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ + return DFB_UNSUPPORTED; +} + +/* + * End thread, close device and free private data. + */ +static void +driver_close_device( void *driver_data ) +{ + DreamboxremoteData *data = (DreamboxremoteData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + /* close file */ + close( data->fd ); + + /* free private data */ + D_FREE ( data ); +} diff --git a/Source/DirectFB/inputdrivers/dynapro/Makefile.am b/Source/DirectFB/inputdrivers/dynapro/Makefile.am new file mode 100755 index 0000000..58dfc5c --- /dev/null +++ b/Source/DirectFB/inputdrivers/dynapro/Makefile.am @@ -0,0 +1,30 @@ +## Makefile.am for DirectFB/inputdrivers/dynapro + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_dynapro.la + +if BUILD_STATIC +input_DATA = $(input_LTLIBRARIES:.la=.o) +endif + +inputdir = $(MODULEDIR)/inputdrivers + +libdirectfb_dynapro_la_SOURCES = \ + dynapro.c + +libdirectfb_dynapro_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_dynapro_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/dynapro/Makefile.in b/Source/DirectFB/inputdrivers/dynapro/Makefile.in new file mode 100755 index 0000000..ecd0a80 --- /dev/null +++ b/Source/DirectFB/inputdrivers/dynapro/Makefile.in @@ -0,0 +1,592 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/dynapro +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)" +inputLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(input_LTLIBRARIES) +libdirectfb_dynapro_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_dynapro_la_OBJECTS = dynapro.lo +libdirectfb_dynapro_la_OBJECTS = $(am_libdirectfb_dynapro_la_OBJECTS) +libdirectfb_dynapro_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_dynapro_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_dynapro_la_SOURCES) +DIST_SOURCES = $(libdirectfb_dynapro_la_SOURCES) +inputDATA_INSTALL = $(INSTALL_DATA) +DATA = $(input_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_dynapro.la +@BUILD_STATIC_TRUE@input_DATA = $(input_LTLIBRARIES:.la=.o) +inputdir = $(MODULEDIR)/inputdrivers +libdirectfb_dynapro_la_SOURCES = \ + dynapro.c + +libdirectfb_dynapro_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_dynapro_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/dynapro/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/dynapro/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-inputLTLIBRARIES: $(input_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + else :; fi; \ + done + +uninstall-inputLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(inputdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(inputdir)/$$p"; \ + done + +clean-inputLTLIBRARIES: + -test -z "$(input_LTLIBRARIES)" || rm -f $(input_LTLIBRARIES) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_dynapro.la: $(libdirectfb_dynapro_la_OBJECTS) $(libdirectfb_dynapro_la_DEPENDENCIES) + $(libdirectfb_dynapro_la_LINK) -rpath $(inputdir) $(libdirectfb_dynapro_la_OBJECTS) $(libdirectfb_dynapro_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dynapro.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-inputDATA: $(input_DATA) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(inputDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(inputDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + done + +uninstall-inputDATA: + @$(NORMAL_UNINSTALL) + @list='$(input_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(inputdir)/$$f'"; \ + rm -f "$(DESTDIR)$(inputdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-inputLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-inputDATA install-inputLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-inputDATA uninstall-inputLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-inputLTLIBRARIES clean-libtool ctags 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-inputDATA \ + install-inputLTLIBRARIES 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 uninstall uninstall-am uninstall-inputDATA \ + uninstall-inputLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/dynapro/dynapro.c b/Source/DirectFB/inputdrivers/dynapro/dynapro.c new file mode 100755 index 0000000..11ab3fb --- /dev/null +++ b/Source/DirectFB/inputdrivers/dynapro/dynapro.c @@ -0,0 +1,356 @@ +/* + Written by Pär Degerman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + + NOTES + ===== + This driver is based heavily on code from two other DirectFB + drivers, namely mutouch.c by Simon Ueng and elo.c by Byron + Stanoszek and Brandon Reynolds, so a lot of credit should go + to those people and not me. + + INSTRUCTIONS + ============ + You should change DYNAPRO_MIN_X and DYNAPRO_MIN_Y to match + the orientation of your touchscreen. + +*/ + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + +DFB_INPUT_DRIVER( dynapro ) + +#define DYNAPRO_DEVICE "/dev/ttyS0" +#define DYNAPRO_BAUD B9600 +#define DYNAPRO_PACKET_SIZE 5 + +#define DYNAPRO_SCREENWIDTH 800 +#define DYNAPRO_SCREENHEIGHT 600 +#define DYNAPRO_MINX 800 +#define DYNAPRO_MINY 600 + +#define DYNAPRO_CMD_TOUCH 0x81 +#define DYNAPRO_CMD_UNTOUCH 0x80 + +typedef struct __dynaproData__ { + int fd; + DirectThread *thread; + CoreInputDevice *device; + + unsigned short screen_width; + unsigned short screen_height; + unsigned short min_x; + unsigned short min_y; + + unsigned short x; + unsigned short y; + unsigned char action; +} dynaproData; + +/* Read a packet from touchcontroller */ +static inline unsigned char *dynapro_getpck(int fd) +{ + static unsigned char packet[DYNAPRO_PACKET_SIZE]; + static unsigned int len = 0, start = 0; + + while(1) { + if (read(fd, &packet[len++], 1) < 1) { + break; + } + + if (0 == start) { + if (packet[len-1] & 0x80) { + /* Packet start found */ + start = 1; + continue; + } else { + /* Continue searching for packet start */ + len = 0; + start = 0; + continue; + } + } else if (len < DYNAPRO_PACKET_SIZE) { + /* Continue until we have a full packet */ + start = 1; + continue; + } + + /* A full packet received */ + len = 0; + start = 0; + return packet; + } + + return NULL; +} + +/* Remove all input translations over tty serial controller. + * + * set=1: Saves current settings then turns rawmode on. + * set=0: Restores controller to previous saved value. + */ +static void tty_rawmode(int fd, int set) +{ + static struct termios tbuf, termios_save; + + if(set) { + tcgetattr(fd, &termios_save); + tbuf = termios_save; + + tbuf.c_iflag = 0; /* No input processing */ + tbuf.c_oflag = 0; /* No output processing */ + tbuf.c_lflag = 0; /* Disable erase/kill, signals, and echo */ + + /* Set baud & 1-char read mode */ + tbuf.c_cflag = DYNAPRO_BAUD | CS8 | CLOCAL | CREAD; + + tcsetattr(fd, TCSANOW, &tbuf); + } else { + tcsetattr(fd, TCSANOW, &termios_save); + } +} + +/* Open file descriptor to touch device */ +static int dynaproOpenDevice(char *device) +{ + int fd; + + if((fd = open(device, O_RDWR|O_NOCTTY)) == -1) { + D_PERROR("DirectFB/dynbapro: Error opening '%s'!\n",device); + return -1; + } + + if((flock(fd, LOCK_EX|LOCK_NB)) == -1) { + D_PERROR("DirectFB/dynbapro: Error locking '%s'!\n",device); + close(fd); + return -1; + } + + tty_rawmode(fd,1); + + return fd; +} + + +static int dynaproGetEvent(dynaproData *event) +{ + unsigned char *ptr; + unsigned int cmd, x, y; + + /* read packet */ + if(!(ptr = dynapro_getpck(event->fd))) { + return -1; + } + + /* Get command (touch/untouch) and coordinates */ + cmd = ptr[0]; + x = (event->screen_width * ((ptr[3] << 8) + ptr[4])) / 0x0fff; + y = (event->screen_height* ((ptr[1] << 8) + ptr[2])) / 0x0fff; + + if (event->min_x) + x = event->min_x - x; + if (event->min_y) + y = event->min_y - y; + + event->action = cmd; + event->x = x; + event->y = y; + + return 0; +} + + +/* The main routine for dynapro */ +static void *dynaproTouchEventThread(DirectThread *thread, void *driver_data) +{ + dynaproData *data = (dynaproData *) driver_data; + + /* Read data */ + while (1) { + DFBInputEvent evt; + + if(dynaproGetEvent(data) == -1) { + continue; + } + direct_thread_testcancel(thread); + + /* Dispatch axis */ + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_X; + evt.axisabs = data->x; + dfb_input_dispatch(data->device, &evt); + + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_Y; + evt.axisabs = data->y; + dfb_input_dispatch(data->device, &evt); + + /* Dispatch touch event */ + if (DYNAPRO_CMD_UNTOUCH == data->action) + evt.type = DIET_BUTTONRELEASE; + else + evt.type = DIET_BUTTONPRESS; + + evt.flags = DIEF_NONE; + evt.button = DIBI_LEFT; + + dfb_input_dispatch(data->device, &evt); + direct_thread_testcancel(thread); + } + + return NULL; +} + + +/* exported symbols */ +static int driver_get_available( void ) +{ + int fd; + + fd = dynaproOpenDevice(DYNAPRO_DEVICE); + if (fd < 0) { + return 0; + } + close(fd); + + return 1; +} + +static void driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf(info->name, DFB_INPUT_DRIVER_INFO_NAME_LENGTH, + "dynapro" ); + snprintf(info->vendor, DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, + "3M" ); + + info->version.major = 0; + info->version.minor = 1; +} + +static DFBResult driver_open_device(CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data) +{ + int fd; + dynaproData *data; + + /* open device */ + fd = dynaproOpenDevice(DYNAPRO_DEVICE); + if(fd < 0) { + D_PERROR("DirectFB/dynapro: Error opening '"DYNAPRO_DEVICE"'!\n"); + return DFB_INIT; + } + + data = D_CALLOC(1, sizeof(dynaproData)); + if (!data) { + tty_rawmode(fd, 0); + close(fd); + return D_OOM(); + } + + data->fd = fd; + data->device = device; + + /* FIXME! Use settings instead? */ + data->screen_width = DYNAPRO_SCREENWIDTH; + data->screen_height = DYNAPRO_SCREENHEIGHT; + data->min_x = DYNAPRO_MINX; + data->min_y = DYNAPRO_MINY; + + /* fill device info structure */ + snprintf(info->desc.name, DFB_INPUT_DEVICE_DESC_NAME_LENGTH, + "dynapro"); + snprintf(info->desc.vendor, DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, + "3M"); + + info->prefered_id = DIDID_MOUSE; + info->desc.type = DIDTF_MOUSE; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_axis = DIAI_Y; + info->desc.max_button = DIBI_LEFT; + + /* start input thread */ + data->thread = direct_thread_create(DTT_INPUT, + dynaproTouchEventThread, + data, + "Dynapro Touch Input"); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult driver_get_keymap_entry(CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry) +{ + return DFB_UNSUPPORTED; +} + +static void driver_close_device(void *driver_data) +{ + dynaproData *data = (dynaproData *)driver_data; + + /* stop input thread */ + direct_thread_cancel(data->thread); + direct_thread_join(data->thread); + direct_thread_destroy(data->thread); + + /* restore termnial settings for the port */ + tty_rawmode(data->fd, 0); + + /* close device */ + close(data->fd); + + /* free private data */ + D_FREE(data); +} diff --git a/Source/DirectFB/inputdrivers/elo/Makefile.am b/Source/DirectFB/inputdrivers/elo/Makefile.am new file mode 100755 index 0000000..28a3583 --- /dev/null +++ b/Source/DirectFB/inputdrivers/elo/Makefile.am @@ -0,0 +1,31 @@ +## Makefile.am for DirectFB/inputdrivers/elo + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_elo.la + +if BUILD_STATIC +input_DATA = $(input_LTLIBRARIES:.la=.o) +endif + +inputdir = $(MODULEDIR)/inputdrivers + +libdirectfb_elo_la_SOURCES = \ + elo.c + +libdirectfb_elo_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_elo_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/elo/Makefile.in b/Source/DirectFB/inputdrivers/elo/Makefile.in new file mode 100755 index 0000000..f52684b --- /dev/null +++ b/Source/DirectFB/inputdrivers/elo/Makefile.in @@ -0,0 +1,592 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/elo +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)" +inputLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(input_LTLIBRARIES) +libdirectfb_elo_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_elo_la_OBJECTS = elo.lo +libdirectfb_elo_la_OBJECTS = $(am_libdirectfb_elo_la_OBJECTS) +libdirectfb_elo_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_elo_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_elo_la_SOURCES) +DIST_SOURCES = $(libdirectfb_elo_la_SOURCES) +inputDATA_INSTALL = $(INSTALL_DATA) +DATA = $(input_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_elo.la +@BUILD_STATIC_TRUE@input_DATA = $(input_LTLIBRARIES:.la=.o) +inputdir = $(MODULEDIR)/inputdrivers +libdirectfb_elo_la_SOURCES = \ + elo.c + +libdirectfb_elo_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_elo_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/elo/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/elo/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-inputLTLIBRARIES: $(input_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + else :; fi; \ + done + +uninstall-inputLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(inputdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(inputdir)/$$p"; \ + done + +clean-inputLTLIBRARIES: + -test -z "$(input_LTLIBRARIES)" || rm -f $(input_LTLIBRARIES) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_elo.la: $(libdirectfb_elo_la_OBJECTS) $(libdirectfb_elo_la_DEPENDENCIES) + $(libdirectfb_elo_la_LINK) -rpath $(inputdir) $(libdirectfb_elo_la_OBJECTS) $(libdirectfb_elo_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elo.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-inputDATA: $(input_DATA) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(inputDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(inputDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + done + +uninstall-inputDATA: + @$(NORMAL_UNINSTALL) + @list='$(input_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(inputdir)/$$f'"; \ + rm -f "$(DESTDIR)$(inputdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-inputLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-inputDATA install-inputLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-inputDATA uninstall-inputLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-inputLTLIBRARIES clean-libtool ctags 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-inputDATA \ + install-inputLTLIBRARIES 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 uninstall uninstall-am uninstall-inputDATA \ + uninstall-inputLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/elo/elo.c b/Source/DirectFB/inputdrivers/elo/elo.c new file mode 100755 index 0000000..0274bff --- /dev/null +++ b/Source/DirectFB/inputdrivers/elo/elo.c @@ -0,0 +1,539 @@ +/* + (c) Copyright 2003 Commercial Timesharing Inc. + + All rights reserved. + + Written by Byron Stanoszek and + Brandon Reynolds + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include + +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + + +DFB_INPUT_DRIVER( elo ) + +#define elo_REPORT_SIZE 5 +#define elo_PACKET_SIZE 10 +#define elo_SCREENWIDTH 4096 +#define elo_SCREENHEIGHT 4096 +#define elo_MINX 0 +#define elo_MINY 0 + + +/* Mode 1 Bit Definitions */ +#define ELO_M_INITIAL 0x01 /* Enables initial pressing detection */ +#define ELO_M_STREAM 0x02 /* Enables stream touch (when finger moves) */ +#define ELO_M_UNTOUCH 0x04 /* Enables untouch detection */ +#define ELO_M_RANGECK 0x40 /* Range checking mode */ + +/* Mode 2 Bit Definitions */ +#define ELO_M_TRIM 0x02 /* Trim Mode */ +#define ELO_M_CALIB 0x04 /* Calibration Mode */ +#define ELO_M_SCALE 0x08 /* Scaling Mode */ +#define ELO_M_TRACK 0x40 /* Tracking Mode */ + + +typedef struct __eloData__ { + int fd; + DirectThread *thread; + CoreInputDevice *device; + unsigned short x; + unsigned short y; + unsigned short screen_width; + unsigned short screen_height; + unsigned short min_x; + unsigned short min_y; + unsigned char action; +} eloData; + +static int elo_check_ack(int fd); + +static inline void __mdelay(unsigned int msec) +{ + struct timespec delay; + + delay.tv_sec = 0; + delay.tv_nsec = msec * 1000000; + nanosleep (&delay, NULL); +} + +// Write a 10-byte character packet to the touch device. +// +static inline void elo_putbuf(int fd, unsigned char *data) +{ + unsigned char packet[10]; + int i; + + packet[0]='U'; /* Special serial lead-in byte */ + memcpy(packet+1, data, 8); + packet[9]=0; + + /* Calculate checksum */ + for(i=1;i<9;i++) + packet[9]+=packet[i]; + packet[9]--; + + write(fd, packet, 10); +} +// Read a packet from the touch device. +// +static inline unsigned char *elo_getbuf(int fd) +{ + static unsigned char packet[10]; + static int len=0, start=0; + + fd_set set; + unsigned char checksum; + int i, j; + + while(1) { + /* look ahead to see if there is any data to be gotten */ + FD_ZERO(&set); + FD_SET(fd, &set); + if(!select(fd+1, &set, NULL, NULL, NULL)) + return NULL; + + /* read the next byte from the stream */ + if(read(fd, &packet[len++], 1) < 1) + exit(1); + if(!start && packet[len-1] != 0x55) { /* search for `begin-packet' 0x55 */ + len=0; + continue; + } + + start=1; + if(len < 10) /* wait until we get 10 full bytes first */ + continue; + + /* check packet checksum when finished */ + for(i=1,checksum=0;i<9;i++) + checksum+=packet[i]; + checksum--; + + /* checksum does not match */ + if(checksum != packet[9]) { + /* scan buffer for next `begin-packet' byte 0x55 */ + for(i=1;i<10;i++) + if(packet[i] == 0x55) + break; + if(i == 10) { /* No other 0x55 found */ + len=0; + continue; + } + for(j=0;i+j < 10;j++) /* Move 0x55 to front of buffer */ + packet[j]=packet[i+j]; + len=j; + continue; + } + + /* We have a match. Return buffer string */ + len=0; /* set for next match */ + + return packet+1; + } +} + +// Remove all input translations over tty serial controller. +// +// set=1: Saves current settings then turns rawmode on. +// set=0: Restores controller to previous saved value. +// +static void tty_rawmode(int fd, int set) +{ + static struct termio tbuf, termio_save; + + int ret; + + if(set) { + ioctl(fd, TCGETA, &termio_save); + tbuf=termio_save; + + /* For complete explanation of the flags set/unset below, see termios(3) + unix programmers reference manual. */ + + tbuf.c_iflag = 0; /* No input processing */ + tbuf.c_oflag = 0; /* No output processing */ + tbuf.c_lflag = 0; /* Disable erase/kill, signals, and echo */ + + tbuf.c_cflag = B9600|CS8|CLOCAL|CREAD; /* Set baud & 1-char read mode */ + + ret = ioctl(fd, TCSETAF, &tbuf); + D_INFO("Elo:tty_rawmode ioctl= %d\n",ret); + } else + ioctl(fd, TCSETAF, &termio_save); +} + +// Wait for acknowledgment. Returns 0 if no packet received or 1 for success or 2 for fail. +static int elo_check_ack(int fd) +{ + unsigned char buf[100]; + int i; + + + __mdelay(100); + fd_set set; + struct timeval timeout={0, 100000}; /* 0.1 seconds */ + FD_ZERO(&set); + FD_SET(fd, &set); + if(!select(fd+1, &set, NULL, NULL, &timeout)) { + D_INFO("Elo:elo_check_ack NO PACKET\n"); + return 0; + } + memset(buf, 0, sizeof(buf)); + ssize_t nb = read( fd, buf, sizeof(buf)-1); + if( nb >= 0) { + for( i = 0; i < nb; i++ ) { + if( buf[i] < 0x20 ) + buf[i] = 0x20; + } + buf[nb] = '\0'; /* buf now look as a string */ + char* pt = strstr( buf, "A0000"); + if ( pt != NULL ) { + D_INFO("Elo:elo_check_ack nb= %zd ACK OK\n", nb); + + return 1; + } + } + D_INFO("Elo:elo_check_ack nb= %zd ACK KO\n", nb); + return 2; +} + +// Set scaling info to touch device. Axis can be either 'X', 'Y', or 'Z'. +// +static int elo_set_scale(int fd, unsigned char axis, short low, short high) +{ + unsigned char packet[8], *ptr; + + if(axis < 'X' || axis > 'Z') + return -1; + + memset(packet, 0, 8); + packet[0]='S'; + packet[1]=axis; + packet[2]=low; + packet[3]=low >> 8; + packet[4]=high; + packet[5]=high >> 8; + + /* send packet until proper ack is received */ + while(1) { + elo_putbuf(fd, packet); + + int ret = elo_check_ack(fd); + if( ret == 1 ) // OK + return 0; + if( ret == 0 ) // No receive + return -2; + } +} + +// Set touch screen response packet mode (see #ifdefs in beginning of file). +// +static int elo_set_mode(int fd, unsigned char mode1, unsigned char mode2) +{ + unsigned char packet[8]; + + /* create packet */ + memset(packet, 0, 8); + packet[0]='M'; + packet[2]=mode1; + packet[3]=mode2; + + /* send packet until proper ack is received */ + while(1) { + elo_putbuf(fd, packet); + + int ret = elo_check_ack(fd); + if( ret == 1 ) // OK + return 0; + if( ret == 0 ) // No receive + return -2; + + } +} +// Reset the touch-screen interface. +// +static int elo_reset_touch(int fd) +{ + unsigned char packet[8]; + + /* Send reset command */ + memset(packet, 0, 8); + packet[0]='R'; + packet[1]=1; /* 0=Hard reset, 1=Soft */ + elo_putbuf(fd, packet); + + /* Wait for response */ + if(!elo_check_ack(fd)) + return -1; /* no valid packet received */ + + /* Set the proper mode of operation: + Initial Touch, Range Checking, Calibration, Scaling, and Trim. */ + + elo_set_mode(fd,ELO_M_INITIAL|ELO_M_UNTOUCH|ELO_M_RANGECK, + ELO_M_CALIB|ELO_M_SCALE|ELO_M_TRIM); + + /* Set scaling to 80 x 25 */ + elo_set_scale(fd, 'X', elo_MINX, elo_SCREENWIDTH-1); + elo_set_scale(fd, 'Y', elo_MINY, elo_SCREENHEIGHT-1); + + return 0; +} + +static int eloOpenDevice(char *device) +{ + int fd; + int res; + + if((fd = open(device, O_RDWR|O_NOCTTY)) == -1) + return -1; + + if((flock(fd, LOCK_EX|LOCK_NB)) == -1) { + D_PERROR("DirectFB/elo: Error locking '%s'!\n",device); + close(fd); + return -1; + } + + tty_rawmode(fd,1); + + if((res=elo_reset_touch(fd))) { + close(fd); + return -1; + } + + return fd; +} +// +// +static int eloGetEvent(eloData *event) +{ + unsigned char *ptr; + + /* read in the packet */ + if(!(ptr=elo_getbuf(event->fd))) + return -1; + + if(ptr[0] != 'T') + return -1; + + /* Get touch coordinates */ + event->x = ptr[2]+(ptr[3] << 8); + event->y = ptr[4]+(ptr[5] << 8); + + /* Check for invalid range -- reset touch device if so */ + if(event->x >= event->screen_width + || event->y >= event->screen_height) { + elo_reset_touch(event->fd); + return -1; + } + + event->action = ptr[1]; + + return 0; // valid touch +} + +/* The main routine for elo */ +static void *eloTouchEventThread(DirectThread *thread, void *driver_data) +{ + eloData *data = (eloData *) driver_data; + + /* Read data */ + while (1) { + DFBInputEvent evt; + + if(eloGetEvent(data) == -1) continue; + direct_thread_testcancel(thread); + + /* Dispatch axis */ + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_X; + evt.axisabs = data->x; + dfb_input_dispatch(data->device, &evt); + + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_Y; + evt.axisabs = data->y; + dfb_input_dispatch(data->device, &evt); + + /* Dispatch touch event */ + if(data->action & ELO_M_UNTOUCH) + evt.type = DIET_BUTTONRELEASE; + else + evt.type = DIET_BUTTONPRESS; + + evt.flags = DIEF_NONE; + evt.button = DIBI_LEFT; + + dfb_input_dispatch(data->device, &evt); + direct_thread_testcancel(thread); + } + + return NULL; +} + +/* exported symbols */ + +static int driver_get_available( void ) +{ + int fd; + + /* we will only use the ELO device if it has been configured */ + if(!dfb_config->elo_device) { + return 0; + } + fd = eloOpenDevice (dfb_config->elo_device); + if (fd < 0) { + D_INFO("Elo:driver_get_available NON OK\n"); + return 0; + } + close(fd); + + return 1; +} + +static void driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf(info->name, DFB_INPUT_DRIVER_INFO_NAME_LENGTH, + "elo" ); + snprintf(info->vendor, DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, + "elo Systems" ); + + info->version.major = 0; + info->version.minor = 2; +} + +static DFBResult driver_open_device(CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data) +{ + int fd; + eloData *data; + + /* open device */ + fd = eloOpenDevice(dfb_config->elo_device); + if(fd < 0) { + D_INFO("DirectFB/elo: Error opening '%s'!\n", dfb_config->elo_device); + return DFB_INIT; + } + + data = D_CALLOC(1, sizeof(eloData)); + if (!data) { + close(fd); + return D_OOM(); + } + + data->fd = fd; + data->device = device; + + /* Must define the correct resolution of screen */ + data->screen_width = elo_SCREENWIDTH; + data->screen_height = elo_SCREENHEIGHT; + + /* The following variable are defined to adjust the orientation of + * the touchscreen. Variables are either max screen height/width or 0. + */ + data->min_x = elo_MINX; + data->min_y = elo_MINY; + + /* fill device info structure */ + snprintf(info->desc.name, DFB_INPUT_DEVICE_DESC_NAME_LENGTH, + "elo"); + snprintf(info->desc.vendor, DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, + "elo Systems"); + + info->prefered_id = DIDID_MOUSE; + info->desc.type = DIDTF_MOUSE; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_axis = DIAI_Y; + info->desc.max_button = DIBI_LEFT; + + /* start input thread */ + data->thread = direct_thread_create (DTT_INPUT, eloTouchEventThread, data, "ELO Touch Input"); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult driver_get_keymap_entry(CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry) +{ + return DFB_UNSUPPORTED; +} + +static void driver_close_device(void *driver_data) +{ + eloData *data = (eloData *)driver_data; + + /* stop input thread */ + direct_thread_cancel(data->thread); + direct_thread_join(data->thread); + direct_thread_destroy(data->thread); + + /* restore termnial settings for the port */ + tty_rawmode(data->fd,0); + + /* close device */ + close(data->fd); + + /* free private data */ + D_FREE(data); +} diff --git a/Source/DirectFB/inputdrivers/gunze/Makefile.am b/Source/DirectFB/inputdrivers/gunze/Makefile.am new file mode 100755 index 0000000..ef0b9e6 --- /dev/null +++ b/Source/DirectFB/inputdrivers/gunze/Makefile.am @@ -0,0 +1,30 @@ +## Makefile.am for DirectFB/inputdrivers/gunze + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_gunze.la + +if BUILD_STATIC +input_DATA = $(input_LTLIBRARIES:.la=.o) +endif + +inputdir = $(MODULEDIR)/inputdrivers + +libdirectfb_gunze_la_SOURCES = \ + gunze.c + +libdirectfb_gunze_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_gunze_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/gunze/Makefile.in b/Source/DirectFB/inputdrivers/gunze/Makefile.in new file mode 100755 index 0000000..ceef162 --- /dev/null +++ b/Source/DirectFB/inputdrivers/gunze/Makefile.in @@ -0,0 +1,592 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/gunze +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)" +inputLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(input_LTLIBRARIES) +libdirectfb_gunze_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_gunze_la_OBJECTS = gunze.lo +libdirectfb_gunze_la_OBJECTS = $(am_libdirectfb_gunze_la_OBJECTS) +libdirectfb_gunze_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_gunze_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_gunze_la_SOURCES) +DIST_SOURCES = $(libdirectfb_gunze_la_SOURCES) +inputDATA_INSTALL = $(INSTALL_DATA) +DATA = $(input_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_gunze.la +@BUILD_STATIC_TRUE@input_DATA = $(input_LTLIBRARIES:.la=.o) +inputdir = $(MODULEDIR)/inputdrivers +libdirectfb_gunze_la_SOURCES = \ + gunze.c + +libdirectfb_gunze_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_gunze_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/gunze/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/gunze/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-inputLTLIBRARIES: $(input_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + else :; fi; \ + done + +uninstall-inputLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(inputdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(inputdir)/$$p"; \ + done + +clean-inputLTLIBRARIES: + -test -z "$(input_LTLIBRARIES)" || rm -f $(input_LTLIBRARIES) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_gunze.la: $(libdirectfb_gunze_la_OBJECTS) $(libdirectfb_gunze_la_DEPENDENCIES) + $(libdirectfb_gunze_la_LINK) -rpath $(inputdir) $(libdirectfb_gunze_la_OBJECTS) $(libdirectfb_gunze_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gunze.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-inputDATA: $(input_DATA) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(inputDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(inputDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + done + +uninstall-inputDATA: + @$(NORMAL_UNINSTALL) + @list='$(input_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(inputdir)/$$f'"; \ + rm -f "$(DESTDIR)$(inputdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-inputLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-inputDATA install-inputLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-inputDATA uninstall-inputLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-inputLTLIBRARIES clean-libtool ctags 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-inputDATA \ + install-inputLTLIBRARIES 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 uninstall uninstall-am uninstall-inputDATA \ + uninstall-inputLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/gunze/gunze.c b/Source/DirectFB/inputdrivers/gunze/gunze.c new file mode 100755 index 0000000..840cd33 --- /dev/null +++ b/Source/DirectFB/inputdrivers/gunze/gunze.c @@ -0,0 +1,576 @@ +/* + (c) Copyright 2005 Gnat Solutions, Inc. + + All rights reserved. + + Written by Nathanael D. Noblet + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + This driver is a re-write from the gunze driver provided in XFree86. + Using the MuTouch driver as a skeleton. + + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include + +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + +DFB_INPUT_DRIVER( gunze ) + +#define BUFFER_SIZE 64 /* size of reception buffer */ +#define GUNZE_MAXPHYSCOORD 1023 +#define GUNZE_MAXCOORD (64*1024-1) /* oversampled, synthetic value */ +#define FLAG_TAPPING 1 +#define FLAG_WAS_UP 2 +#define BAUDRATE B9600 + +#define GunzeT_PACKET_SIZE 10 +#define GunzeT_SCREENWIDTH 1024 +#define GunzeT_SCREENHEIGHT 768 +#define GunzeT_MINX 0 +#define GunzeT_MINY 0 +#define GunzeT_DEFAULT_DEVICE "/dev/ttyS0" + +#define GUNZE_PANEL_TOUCH T +#define GUNZE_PANEL_UNTOUCH R + +#define GUNZE_SERIAL_DLEN 11 +#define GUNZE_PS2_DLEN 3 + +#define GUNZE_SECTION_NAME "gunze" +#define GUNZE_DEFAULT_CFGFILE "/etc/gunzets.calib" + +#define SYSCALL(call) while(((call) == -1) && (errno == EINTR)) + +/* +* Serial protocol (11 b): <4-bytes-for-X> , <4-bytes-for-Y> 0x0d +*/ +typedef struct __GunzeTData__ +{ + const char *gunDevice; /* device file name */ + DirectThread *thread; + CoreInputDevice *device; + unsigned int x; + unsigned int y; + unsigned int screen_width; + unsigned int screen_height; + int flags; /* various flags */ + int gunType; /* TYPE_SERIAL, etc */ + int gunBaud; /* 9600 or 19200 */ + int gunDlen; /* data length (3 or 11) */ + int gunPrevX; /* previous X position */ + int gunPrevY; /* previous Y position */ + int gunSmooth; /* how smooth the motion is */ + int gunTapping; /* move-and-tap (or press-only) not implemented */ + int gunPrevButtonState; /* previous button state */ + int gunBytes; /* number of bytes read */ + unsigned char gunData[16]; /* data read on the device */ + int gunCalib[4]; /* calibration data */ + char *gunConfig; /* filename for configuration */ + int fd; +} GunzeTData; + +enum devicetypeitems { + TYPE_UNKNOWN = 0, + TYPE_SERIAL = 1, + TYPE_PS2, + TYPE_USB +}; + +static int GunzeReadCalib(GunzeTData *priv) +{ + int i=1; + int err = 1; + FILE *f; + priv->gunCalib[0]=priv->gunCalib[1]=priv->gunCalib[2]=priv->gunCalib[3]=0; + f = fopen(priv->gunConfig, "r"); + if (f) + { + char s[80]; + fgets(s, 80, f); /* discard the comment */ + if (fscanf(f, "%d %d %d %d", priv->gunCalib, priv->gunCalib+1, priv->gunCalib+2, priv->gunCalib+3) == 4) + { + D_PERROR("DirectFB/gunze: Calibration invalid 0 i:%d gunCalib[0]:%d \n",i,priv->gunCalib[0]); + err = 0; + } + + for (i=0; i<4; i++) + { + if (priv->gunCalib[i] & ~1023) + { + D_PERROR("DirectFB/gunze: Calibration invalid 0 i:%d gunCalib[i]:%d \n",i,priv->gunCalib[i]); + err++; + } + if (abs(priv->gunCalib[0] - priv->gunCalib[2]) < 100) + { + D_PERROR("DirectFB/gunze: Calibration invalid 1 0:%d 2:%d abs(%d)\n",priv->gunCalib[0],priv->gunCalib[2],abs(priv->gunCalib[0] - priv->gunCalib[2])); + err++; + } + if (abs(priv->gunCalib[1] - priv->gunCalib[3]) < 100) + { + D_PERROR("DirectFB/gunze: Calibration invalid 2 1:%d 3:%d abs(%d)\n",priv->gunCalib[1],priv->gunCalib[3],abs(priv->gunCalib[1] - priv->gunCalib[3])); + err++; + } + fclose(f); + } + } + if (err) + { + D_PERROR("DirectFB/gunze: Calibration data absent or invalid, using defaults\n"); + priv->gunCalib[0] = priv->gunCalib[1] = 128; /* 1/8 */ + priv->gunCalib[2] = priv->gunCalib[3] = 896; /* 7/8 */ + } + return 0; +} + +static int GunzeSetToOptimalCTRL(int file) +{ + struct termios newtio; + int err; + + SYSCALL(err = tcgetattr(file, &newtio)); + + if (err == -1) { + D_PERROR("DirectFB/gunze: Gunze touch screen tcgetattr failed\n"); + return 0; + } + + memset(&newtio,0, sizeof(newtio)); /* clear struct for new port settings */ +/* + BAUDRATE: Set bps rate. You could also use cfsetispeed and cfsetospeed. + CRTSCTS : output hardware flow control (only used if the cable has + all necessary lines. See sect. 7 of Serial-HOWTO) + CS8 : 8n1 (8bit,no parity,1 stopbit) + CLOCAL : local connection, no modem contol + CREAD : enable receiving characters +*/ + newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD; +/* + IGNPAR : ignore bytes with parity errors + ICRNL : map CR to NL (otherwise a CR input on the other computer will not terminate input) + otherwise make device raw (no other input processing) +*/ + newtio.c_iflag = IGNPAR | ICRNL; +/* Raw output */ + newtio.c_oflag = 0; +/* + ICANON : enable canonical input + disable all echo functionality, and don't send signals to calling program +*/ + newtio.c_lflag = ICANON; + +/* + initialize all control characters + default values can be found in /usr/include/termios.h, and are given + in the comments, but we don't need them here +*/ + newtio.c_cc[VINTR] = 0; /* Ctrl-c */ + newtio.c_cc[VQUIT] = 0; /* Ctrl-\ */ + newtio.c_cc[VERASE] = 0; /* del */ + newtio.c_cc[VKILL] = 0; /* @ */ + newtio.c_cc[VEOF] = 4; /* Ctrl-d */ + newtio.c_cc[VTIME] = 0; /* inter-character timer unused */ + newtio.c_cc[VMIN] = 1; /* blocking read until 1 character arrives */ + newtio.c_cc[VSWTC] = 0; /* '\0' */ + newtio.c_cc[VSTART] = 0; /* Ctrl-q */ + newtio.c_cc[VSTOP] = 0; /* Ctrl-s */ + newtio.c_cc[VSUSP] = 0; /* Ctrl-z */ + newtio.c_cc[VEOL] = 0; /* '\0' */ + newtio.c_cc[VREPRINT] = 0; /* Ctrl-r */ + newtio.c_cc[VDISCARD] = 0; /* Ctrl-u */ + newtio.c_cc[VWERASE] = 0; /* Ctrl-w */ + newtio.c_cc[VLNEXT] = 0; /* Ctrl-v */ + newtio.c_cc[VEOL2] = 0; /* '\0' */ + + /* now clean the modem line and activate the settings for the port */ + + tcflush(file, TCIFLUSH); + err = tcsetattr(file, TCSANOW, &newtio); + if (err == -1) { + D_PERROR("DirectFB/gunze: Gunze touch screen tcsetattr TCSANOW failed\n"); + return 0; + } + + return 1; +} + +static int GunzeOpenDevice(const char *device) +{ + int fd; + int res; + + /* opens device */ + SYSCALL(fd = open(device, O_RDWR | O_NOCTTY)); + if (fd == -1) + { + D_PERROR("DirectFB/gunze: Error opening device %s\n",device); + return fd; + } + + /* setup termios settings for communication */ + if((res = GunzeSetToOptimalCTRL(fd)) == 0) + { + close(fd); + return res; + } + + return fd; +} + +/* The main routine for GunzeTouch */ +static void *GunzeTouchEventThread(DirectThread *thread, void *driver_data) +{ + GunzeTData *priv = (GunzeTData *) driver_data; + unsigned char *pkt = priv->gunData; + int len, loop; + int x =0; + int y =0; + int button =0; + int *calib = priv->gunCalib; + unsigned char buffer[BUFFER_SIZE]; + + while ((len = read( priv->fd, buffer, BUFFER_SIZE)) >= 0 || errno == EINTR) + { + + if (len <= 0) + { + D_PERROR("DirectFB/gunze: error reading Gunze touch screen device %d %d\n",errno,priv->fd); + perror(NULL); + return NULL; + } + + for(loop=0; loopgunBytes == 0) + { + int error = 0; + if (priv->gunDlen == GUNZE_SERIAL_DLEN) + { + /* First byte is 'R' (0x52) or 'T' (0x54) */ + if ((buffer[loop] != 'R') && (buffer[loop] != 'T')) + error = 1; + } + /* PS/2 / USB Unsupported for now (basically I don't have one, and didn't test adding support will be trivial + else + { + if ( !(buffer[loop] & 0x80) || (len > loop+1 && !(buffer[loop+1] & 0x80)) || (len > loop+2 && (buffer[loop+2] & 0x80))) + error = 1; + } + */ + if (error) + { + D_PERROR("DirectFB/gunze: GunzeReadInput: bad first byte 0x%x %c\n",buffer[loop],buffer[loop]); + continue; + } + } + + pkt[priv->gunBytes++] = buffer[loop]; + + /* Hack: sometimes a serial packet gets corrupted. If so, drop it */ + if (buffer[loop] == 0x0d && priv->gunBytes != priv->gunDlen && priv->gunDlen == GUNZE_SERIAL_DLEN) + { + pkt[priv->gunBytes-1] = '\0'; + D_PERROR("DirectFB/gunze: Bad packet \"%s\" dropping it\n", pkt); + priv->gunBytes = 0; + continue; + } + + /* if whole packet collected, decode it */ + if (priv->gunBytes == priv->gunDlen) + { + DFBInputEvent evt; + + priv->gunBytes = 0; + if (priv->gunDlen == GUNZE_SERIAL_DLEN) + { + /* if T button == true */ + button = (pkt[0] == 'T'); + x = atoi((char *)pkt+1); + y = atoi((char *)pkt+6); + } + /* USB version which I haven't added support for + else + { + button = (pkt[2] & 0x40); + x = ((pkt[0] & 0x7f) << 3) | ((pkt[1] & 0x70) >> 4); + y = ((pkt[1] & 0x0f) << 6) | ((pkt[2] & 0x3f)); + } + */ + + if (x>1023 || x<0 || y>1023 || y<0) + { + D_PERROR("DirectFB/gunze: Bad packet \"%s\" -> %i,%i\n", pkt, x, y); + + priv->gunBytes = 0; + continue; + } + + /* + Ok, now that we have raw data, turn it to real data + according to calibration, smoothness, tapping and debouncing + calibrate and rescale (by multiplying by 64) + + I don't fully understand this, came from xf86Gunze.c + x = 64*128 + 64*768 * (x - calib[0])/(calib[2]-calib[0]); + y = 64*128 + 64*768 * (y - calib[1])/(calib[3]-calib[1]); + */ + + x = 8192 + 49152 * (x - calib[0])/(calib[2]-calib[0]); + y = 8192 + 49152 * (y - calib[1])/(calib[3]-calib[1]); + y = GUNZE_MAXCOORD - y; + /* smooth it down, unless first touch */ + if (!(priv->flags & FLAG_WAS_UP)) + { + x = (priv->gunPrevX * priv->gunSmooth + x)/(priv->gunSmooth+1); + y = (priv->gunPrevY * priv->gunSmooth + y)/(priv->gunSmooth+1); + } + + /* convert gunze x/y to screen dimensions */ + x = x * priv->screen_width / (GUNZE_MAXCOORD); + y = y * priv->screen_height / (GUNZE_MAXCOORD); + if (x < 0) x = 0; + if (y < 0) y = 0; + if (x > priv->screen_width) x = priv->screen_width; + if (y > priv->screen_height) y = priv->screen_height; + + if (!button) + priv->flags |= FLAG_WAS_UP; + else + priv->flags &= ~FLAG_WAS_UP; + + /* Now send events */ + + /* only post new x/y if different from previous tap */ + if ( (priv->gunPrevX != x) || (priv->gunPrevY != y) ) + { + direct_thread_testcancel (thread); + /* Dispatch axis */ + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_X; + evt.axisabs = x; + dfb_input_dispatch (priv->device, &evt); + + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_Y; + evt.axisabs = y; + dfb_input_dispatch (priv->device, &evt); + direct_thread_testcancel (thread); + /*printf("dispatched motion x %d y %d\n",x,y);*/ + } + /* post button state change at x/y */ + if (priv->gunPrevButtonState != button) + { + direct_thread_testcancel (thread); + + /* Dispatch axis */ + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_X; + evt.axisabs = x; + dfb_input_dispatch (priv->device, &evt); + + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_Y; + evt.axisabs = y; + dfb_input_dispatch (priv->device, &evt); + + /* Dispatch touch event */ + evt.type = (button) ? DIET_BUTTONPRESS:DIET_BUTTONRELEASE; + evt.flags = DIEF_NONE; + evt.button = DIBI_LEFT; + + dfb_input_dispatch (priv->device, &evt); + direct_thread_testcancel (thread); + /* printf("dispatched button x %d y %d\n",x,y); */ + } + + /* remember data */ + priv->gunPrevButtonState = button; + priv->gunPrevX = x; + priv->gunPrevY = y; + + } + } + } + + return NULL; +} + +/* exported symbols */ + +static int driver_get_available( void ) +{ + int fd; + /* + if (!dfb_config->gunze_device){ + D_PERROR("DirectFB/GunzeTouch: Missing Gunze device file using default %s!\n",GunzeT_DEFAULT_DEVICE); + fflush(NULL); + }*/ + +/* + if (!dfb_config->gunze_device) + return 0; + */ + /* TODO gotta clean this up... seems odd to open & close it like this... */ + //fd = GunzeOpenDevice (dfb_config->gunze_device); + fd = GunzeOpenDevice(GunzeT_DEFAULT_DEVICE); + if (fd < 0) + return 0; + + close(fd); + + return 1; +} + +static void driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf(info->name, DFB_INPUT_DRIVER_INFO_NAME_LENGTH,"gunze" ); + snprintf(info->vendor, DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH,"Gunze" ); + + info->version.major = 0; + info->version.minor = 1; +} + +static DFBResult driver_open_device(CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data) +{ + int fd; + GunzeTData *data = NULL; + const char *devname = GunzeT_DEFAULT_DEVICE; + + +// if (!dfb_config->gunze_device) +// D_PERROR("DirectFB/GunzeTouch: Missing Gunze device file using default %s!\n",GunzeT_DEFAULT_DEVICE); + + + /* open device */ + fd = GunzeOpenDevice (devname); + + if (fd < 0) { + D_PERROR("DirectFB/GunzeTouch: Error opening '%s'!\n", devname); + return DFB_INIT; + } + + data = D_CALLOC (1, sizeof(GunzeTData)); + if (!data) { + close (fd); + return D_OOM (); + } + + data->fd = fd; + data->device = device; + data->gunDevice= devname; + /* hard coded... */ + data->gunType = TYPE_SERIAL; + data->gunDlen = GUNZE_SERIAL_DLEN; + /* Must define the correct resolution of screen */ + data->screen_width = GunzeT_SCREENWIDTH; + data->screen_height = GunzeT_SCREENHEIGHT; + data->gunConfig = GUNZE_DEFAULT_CFGFILE;//(!dfb_config->gunze_calibration_file)?GUNZE_DEFAULT_CFGFILE:dfb_config->gunze_calibration_file; + + /* The following variable are defined to adjust the orientation of + * the touchscreen. Variables are either max screen height/width or 0. + * don't know how to use this as it was taken from mutouch likely not needed... + + data->min_x = GunzeT_MINX; + data->min_y = GunzeT_MINY; +*/ + /* grab calibration data */ + GunzeReadCalib(data); + + /* fill device info structure */ + snprintf(info->desc.name, DFB_INPUT_DEVICE_DESC_NAME_LENGTH,"gunze"); + snprintf(info->desc.vendor, DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH,"Gunze"); + + info->prefered_id = DIDID_MOUSE; + info->desc.type = DIDTF_MOUSE; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_axis = DIAI_Y; + info->desc.max_button = DIBI_LEFT; + + /* start input thread */ + data->thread = direct_thread_create (DTT_INPUT, GunzeTouchEventThread, data, "GunzeTouch Input"); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult driver_get_keymap_entry(CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry) +{ + return DFB_UNSUPPORTED; +} + +static void driver_close_device(void *driver_data) +{ + GunzeTData *data = (GunzeTData *)driver_data; + + /* stop input thread */ + direct_thread_cancel (data->thread); + direct_thread_join (data->thread); + direct_thread_destroy (data->thread); + + /* close device */ + close (data->fd); + + /* free private data */ + D_FREE (data); +} + diff --git a/Source/DirectFB/inputdrivers/h3600_ts/Makefile.am b/Source/DirectFB/inputdrivers/h3600_ts/Makefile.am new file mode 100755 index 0000000..3338669 --- /dev/null +++ b/Source/DirectFB/inputdrivers/h3600_ts/Makefile.am @@ -0,0 +1,31 @@ +## Makefile.am for DirectFB/inputdrivers/h3600_ts + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_h3600_ts.la + +if BUILD_STATIC +input_DATA = $(input_LTLIBRARIES:.la=.o) +endif + +inputdir = $(MODULEDIR)/inputdrivers + +libdirectfb_h3600_ts_la_SOURCES = \ + h3600_ts.c + +libdirectfb_h3600_ts_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_h3600_ts_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/h3600_ts/Makefile.in b/Source/DirectFB/inputdrivers/h3600_ts/Makefile.in new file mode 100755 index 0000000..45e88ef --- /dev/null +++ b/Source/DirectFB/inputdrivers/h3600_ts/Makefile.in @@ -0,0 +1,593 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/h3600_ts +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)" +inputLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(input_LTLIBRARIES) +libdirectfb_h3600_ts_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_h3600_ts_la_OBJECTS = h3600_ts.lo +libdirectfb_h3600_ts_la_OBJECTS = \ + $(am_libdirectfb_h3600_ts_la_OBJECTS) +libdirectfb_h3600_ts_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_h3600_ts_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_h3600_ts_la_SOURCES) +DIST_SOURCES = $(libdirectfb_h3600_ts_la_SOURCES) +inputDATA_INSTALL = $(INSTALL_DATA) +DATA = $(input_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_h3600_ts.la +@BUILD_STATIC_TRUE@input_DATA = $(input_LTLIBRARIES:.la=.o) +inputdir = $(MODULEDIR)/inputdrivers +libdirectfb_h3600_ts_la_SOURCES = \ + h3600_ts.c + +libdirectfb_h3600_ts_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_h3600_ts_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/h3600_ts/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/h3600_ts/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-inputLTLIBRARIES: $(input_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + else :; fi; \ + done + +uninstall-inputLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(inputdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(inputdir)/$$p"; \ + done + +clean-inputLTLIBRARIES: + -test -z "$(input_LTLIBRARIES)" || rm -f $(input_LTLIBRARIES) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_h3600_ts.la: $(libdirectfb_h3600_ts_la_OBJECTS) $(libdirectfb_h3600_ts_la_DEPENDENCIES) + $(libdirectfb_h3600_ts_la_LINK) -rpath $(inputdir) $(libdirectfb_h3600_ts_la_OBJECTS) $(libdirectfb_h3600_ts_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h3600_ts.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-inputDATA: $(input_DATA) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(inputDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(inputDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + done + +uninstall-inputDATA: + @$(NORMAL_UNINSTALL) + @list='$(input_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(inputdir)/$$f'"; \ + rm -f "$(DESTDIR)$(inputdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-inputLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-inputDATA install-inputLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-inputDATA uninstall-inputLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-inputLTLIBRARIES clean-libtool ctags 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-inputDATA \ + install-inputLTLIBRARIES 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 uninstall uninstall-am uninstall-inputDATA \ + uninstall-inputLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/h3600_ts/h3600_ts.c b/Source/DirectFB/inputdrivers/h3600_ts/h3600_ts.c new file mode 100755 index 0000000..6a6b1af --- /dev/null +++ b/Source/DirectFB/inputdrivers/h3600_ts/h3600_ts.c @@ -0,0 +1,239 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include + +#include +#include + +#include + +#include + +#include +#include +#include +#include + +#include + + +DFB_INPUT_DRIVER( h3600_ts ) + +typedef struct { + CoreInputDevice *device; + DirectThread *thread; + + int fd; +} H3600TSData; + +static void * +h3600tsEventThread( DirectThread *thread, void *driver_data ) +{ + H3600TSData *data = (H3600TSData*) driver_data; + + TS_EVENT ts_event; + + int readlen; + + unsigned short old_x = -1; + unsigned short old_y = -1; + unsigned short old_pressure = 0; + + while ((readlen = read(data->fd, &ts_event, sizeof(TS_EVENT))) > 0 || + errno == EINTR) + { + DFBInputEvent evt; + + direct_thread_testcancel( thread ); + + if (readlen < 1) + continue; + + if (ts_event.pressure) { + if (ts_event.x != old_x) { + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_X; + evt.axisabs = ts_event.x; + + dfb_input_dispatch( data->device, &evt ); + + old_x = ts_event.x; + } + + if (ts_event.y != old_y) { + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_Y; + evt.axisabs = ts_event.y; + + dfb_input_dispatch( data->device, &evt ); + + old_y = ts_event.y; + } + } + + if ((ts_event.pressure && !old_pressure) || + (!ts_event.pressure && old_pressure)) { + evt.type = (ts_event.pressure ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE); + evt.flags = DIEF_NONE; + evt.button = DIBI_LEFT; + + dfb_input_dispatch( data->device, &evt ); + + old_pressure = ts_event.pressure; + } + } + + if (readlen <= 0) + D_PERROR ("H3600 Touchscreen thread died\n"); + + return NULL; +} + + +/* exported symbols */ + +static int driver_get_available( void ) +{ + int fd; + + fd = open( dfb_config->h3600_device ? : "/dev/ts", O_RDONLY | O_NOCTTY ); + if (fd < 0) + return 0; + + close( fd ); + + return 1; +} + +static void +driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf( info->name, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "H3600 Touchscreen Driver" ); + + snprintf( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, "directfb.org" ); + + info->version.major = 0; + info->version.minor = 2; +} + +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + int fd; + H3600TSData *data; + + /* open device */ + fd = open( dfb_config->h3600_device ? : "/dev/ts", O_RDONLY | O_NOCTTY ); + if (fd < 0) { + D_PERROR( "DirectFB/H3600: Error opening `%s'!\n", dfb_config->h3600_device ? : "/dev/ts" ); + return DFB_INIT; + } + + /* fill device info structure */ + snprintf( info->desc.name, + DFB_INPUT_DEVICE_DESC_NAME_LENGTH, "H3600 Touchscreen" ); + + snprintf( info->desc.vendor, + DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "Unknown" ); + + info->prefered_id = DIDID_MOUSE; + + info->desc.type = DIDTF_MOUSE; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_axis = DIAI_Y; + info->desc.max_button = DIBI_LEFT; + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(H3600TSData) ); + if (!data) { + close( fd ); + return D_OOM(); + } + + data->fd = fd; + data->device = device; + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, h3600tsEventThread, data, "H3600 TS Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ + return DFB_UNSUPPORTED; +} + +static void +driver_close_device( void *driver_data ) +{ + H3600TSData *data = (H3600TSData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + /* close device */ + if (close( data->fd ) < 0) + D_PERROR( "DirectFB/H3600: Error closing `%s'!\n", dfb_config->h3600_device ? : "/dev/ts" ); + + /* free private data */ + D_FREE( data ); +} + diff --git a/Source/DirectFB/inputdrivers/joystick/Makefile.am b/Source/DirectFB/inputdrivers/joystick/Makefile.am new file mode 100755 index 0000000..0f957df --- /dev/null +++ b/Source/DirectFB/inputdrivers/joystick/Makefile.am @@ -0,0 +1,31 @@ +## Makefile.am for DirectFB/inputdrivers/joystick + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +joystick_LTLIBRARIES = libdirectfb_joystick.la + +if BUILD_STATIC +joystick_DATA = $(joystick_LTLIBRARIES:.la=.o) +endif + +joystickdir = $(MODULEDIR)/inputdrivers + +libdirectfb_joystick_la_SOURCES = \ + joystick.c + +libdirectfb_joystick_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_joystick_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/joystick/Makefile.in b/Source/DirectFB/inputdrivers/joystick/Makefile.in new file mode 100755 index 0000000..83b7633 --- /dev/null +++ b/Source/DirectFB/inputdrivers/joystick/Makefile.in @@ -0,0 +1,594 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/joystick +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(joystickdir)" \ + "$(DESTDIR)$(joystickdir)" +joystickLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(joystick_LTLIBRARIES) +libdirectfb_joystick_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_joystick_la_OBJECTS = joystick.lo +libdirectfb_joystick_la_OBJECTS = \ + $(am_libdirectfb_joystick_la_OBJECTS) +libdirectfb_joystick_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_joystick_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_joystick_la_SOURCES) +DIST_SOURCES = $(libdirectfb_joystick_la_SOURCES) +joystickDATA_INSTALL = $(INSTALL_DATA) +DATA = $(joystick_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +joystick_LTLIBRARIES = libdirectfb_joystick.la +@BUILD_STATIC_TRUE@joystick_DATA = $(joystick_LTLIBRARIES:.la=.o) +joystickdir = $(MODULEDIR)/inputdrivers +libdirectfb_joystick_la_SOURCES = \ + joystick.c + +libdirectfb_joystick_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_joystick_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/joystick/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/joystick/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-joystickLTLIBRARIES: $(joystick_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(joystickdir)" || $(MKDIR_P) "$(DESTDIR)$(joystickdir)" + @list='$(joystick_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(joystickLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(joystickdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(joystickLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(joystickdir)/$$f"; \ + else :; fi; \ + done + +uninstall-joystickLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(joystick_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(joystickdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(joystickdir)/$$p"; \ + done + +clean-joystickLTLIBRARIES: + -test -z "$(joystick_LTLIBRARIES)" || rm -f $(joystick_LTLIBRARIES) + @list='$(joystick_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_joystick.la: $(libdirectfb_joystick_la_OBJECTS) $(libdirectfb_joystick_la_DEPENDENCIES) + $(libdirectfb_joystick_la_LINK) -rpath $(joystickdir) $(libdirectfb_joystick_la_OBJECTS) $(libdirectfb_joystick_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/joystick.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-joystickDATA: $(joystick_DATA) + @$(NORMAL_INSTALL) + test -z "$(joystickdir)" || $(MKDIR_P) "$(DESTDIR)$(joystickdir)" + @list='$(joystick_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(joystickDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(joystickdir)/$$f'"; \ + $(joystickDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(joystickdir)/$$f"; \ + done + +uninstall-joystickDATA: + @$(NORMAL_UNINSTALL) + @list='$(joystick_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(joystickdir)/$$f'"; \ + rm -f "$(DESTDIR)$(joystickdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(joystickdir)" "$(DESTDIR)$(joystickdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-joystickLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-joystickDATA install-joystickLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-joystickDATA uninstall-joystickLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-joystickLTLIBRARIES clean-libtool ctags 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-joystickDATA install-joystickLTLIBRARIES 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 uninstall uninstall-am \ + uninstall-joystickDATA uninstall-joystickLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/joystick/joystick.c b/Source/DirectFB/inputdrivers/joystick/joystick.c new file mode 100755 index 0000000..807c455 --- /dev/null +++ b/Source/DirectFB/inputdrivers/joystick/joystick.c @@ -0,0 +1,279 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) +typedef unsigned long kernel_ulong_t; +#define BITS_PER_LONG (sizeof(long)*8) +#endif + +#include + +#include + +#include +#include + +#include +#include +#include +#include + +#include + +#include + + +DFB_INPUT_DRIVER( joystick ) + +typedef struct { + CoreInputDevice *device; + DirectThread *thread; + + int fd; +} JoystickData; + + +static void +joystick_handle_event( JoystickData *data, struct js_event jse ) +{ + DFBInputEvent event; + + switch (jse.type) { + case JS_EVENT_BUTTON: + event.type = (jse.value ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE); + event.flags = DIEF_NONE; /* button is always valid */ + event.button = jse.number; + break; + case JS_EVENT_AXIS: + event.type = DIET_AXISMOTION; + event.flags = DIEF_AXISABS; + event.axis = jse.number; + event.axisabs = jse.value; + break; + case JS_EVENT_INIT: + case JS_EVENT_INIT | JS_EVENT_BUTTON: + case JS_EVENT_INIT | JS_EVENT_AXIS: + D_ONCE( "Joystick sends JS_EVENT_INIT events, " \ + "make sure it has been calibrated using 'jscal -c'\n"); + return; + break; + default: + D_PERROR ("unknown joystick event type\n"); + return; + } + + dfb_input_dispatch( data->device, &event ); +} + +static void* +joystickEventThread( DirectThread *thread, void *driver_data ) +{ + int len; + struct js_event jse; + JoystickData *data = driver_data; + + while ((len = read( data->fd, &jse, + sizeof(struct js_event) )) > 0 || errno == EINTR) + { + direct_thread_testcancel( thread ); + + if (len != sizeof(struct js_event)) + continue; + + joystick_handle_event( data, jse ); + } + + if (len <= 0 && errno != EINTR) + D_PERROR ("joystick thread died\n"); + + return NULL; +} + +/* exported symbols */ + +static int +driver_get_available( void ) +{ + int i, fd; + int joy_count = 0; + char devicename[20]; + + for (i=0; i<8; i++) { + snprintf( devicename, 20, "/dev/js%d", i ); + + fd = open( devicename, O_RDONLY ); + if (fd < 0) + break; + + close (fd); + + joy_count++; + } + + if (!joy_count) { + /* try new-style device names */ + + for (i=0; i<8; i++) { + snprintf( devicename, 20, "/dev/input/js%d", i ); + + fd = open( devicename, O_RDONLY ); + if (fd < 0) + break; + + close (fd); + + joy_count++; + } + } + + return joy_count; +} + +static void +driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf( info->name, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "Joystick Driver" ); + + snprintf( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, "directfb.org" ); + + info->version.major = 0; + info->version.minor = 9; +} + +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + int fd, buttons, axes; + JoystickData *data; + char devicename[20]; + + /* open the right device */ + snprintf( devicename, 20, "/dev/js%d", number ); + + fd = open( devicename, O_RDONLY ); + if (fd < 0) { + /* try new-style device names */ + snprintf( devicename, 20, "/dev/input/js%d", number ); + + fd = open( devicename, O_RDONLY ); + if (fd < 0) { + D_PERROR( "DirectFB/Joystick: Could not open `%s'!\n", + devicename ); + return DFB_INIT; /* no joystick available */ + } + } + + /* query number of buttons and axes */ + ioctl( fd, JSIOCGBUTTONS, &buttons ); + ioctl( fd, JSIOCGAXES, &axes ); + + /* fill device info structure */ + snprintf( info->desc.name, + DFB_INPUT_DEVICE_DESC_NAME_LENGTH, "Joystick" ); + + snprintf( info->desc.vendor, + DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "Unknown" ); + + info->prefered_id = DIDID_JOYSTICK; + + info->desc.type = DIDTF_JOYSTICK; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_button = buttons - 1; + info->desc.max_axis = axes - 1; + + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(JoystickData) ); + if (!data) { + close( fd ); + return D_OOM(); + } + + data->fd = fd; + data->device = device; + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, joystickEventThread, data, "Joystick Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ + return DFB_UNSUPPORTED; +} + +static void +driver_close_device( void *driver_data ) +{ + JoystickData *data = (JoystickData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + /* close device */ + close( data->fd ); + + /* free private data */ + D_FREE( data ); +} + diff --git a/Source/DirectFB/inputdrivers/keyboard/Makefile.am b/Source/DirectFB/inputdrivers/keyboard/Makefile.am new file mode 100755 index 0000000..3b949ed --- /dev/null +++ b/Source/DirectFB/inputdrivers/keyboard/Makefile.am @@ -0,0 +1,33 @@ +## Makefile.am for DirectFB/inputdrivers/keyboard + +INCLUDES = \ + -I$(top_builddir)/include \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/systems + +keyboard_LTLIBRARIES = libdirectfb_keyboard.la + +if BUILD_STATIC +keyboard_DATA = $(keyboard_LTLIBRARIES:.la=.o) +endif + +keyboarddir = $(MODULEDIR)/inputdrivers + +libdirectfb_keyboard_la_SOURCES = \ + keyboard.c + +libdirectfb_keyboard_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_keyboard_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/keyboard/Makefile.in b/Source/DirectFB/inputdrivers/keyboard/Makefile.in new file mode 100755 index 0000000..a11b449 --- /dev/null +++ b/Source/DirectFB/inputdrivers/keyboard/Makefile.in @@ -0,0 +1,596 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/keyboard +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(keyboarddir)" \ + "$(DESTDIR)$(keyboarddir)" +keyboardLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(keyboard_LTLIBRARIES) +libdirectfb_keyboard_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_keyboard_la_OBJECTS = keyboard.lo +libdirectfb_keyboard_la_OBJECTS = \ + $(am_libdirectfb_keyboard_la_OBJECTS) +libdirectfb_keyboard_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_keyboard_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_keyboard_la_SOURCES) +DIST_SOURCES = $(libdirectfb_keyboard_la_SOURCES) +keyboardDATA_INSTALL = $(INSTALL_DATA) +DATA = $(keyboard_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_builddir)/include \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/systems + +keyboard_LTLIBRARIES = libdirectfb_keyboard.la +@BUILD_STATIC_TRUE@keyboard_DATA = $(keyboard_LTLIBRARIES:.la=.o) +keyboarddir = $(MODULEDIR)/inputdrivers +libdirectfb_keyboard_la_SOURCES = \ + keyboard.c + +libdirectfb_keyboard_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_keyboard_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/keyboard/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/keyboard/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-keyboardLTLIBRARIES: $(keyboard_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(keyboarddir)" || $(MKDIR_P) "$(DESTDIR)$(keyboarddir)" + @list='$(keyboard_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(keyboardLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(keyboarddir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(keyboardLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(keyboarddir)/$$f"; \ + else :; fi; \ + done + +uninstall-keyboardLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(keyboard_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(keyboarddir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(keyboarddir)/$$p"; \ + done + +clean-keyboardLTLIBRARIES: + -test -z "$(keyboard_LTLIBRARIES)" || rm -f $(keyboard_LTLIBRARIES) + @list='$(keyboard_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_keyboard.la: $(libdirectfb_keyboard_la_OBJECTS) $(libdirectfb_keyboard_la_DEPENDENCIES) + $(libdirectfb_keyboard_la_LINK) -rpath $(keyboarddir) $(libdirectfb_keyboard_la_OBJECTS) $(libdirectfb_keyboard_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyboard.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-keyboardDATA: $(keyboard_DATA) + @$(NORMAL_INSTALL) + test -z "$(keyboarddir)" || $(MKDIR_P) "$(DESTDIR)$(keyboarddir)" + @list='$(keyboard_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(keyboardDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(keyboarddir)/$$f'"; \ + $(keyboardDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(keyboarddir)/$$f"; \ + done + +uninstall-keyboardDATA: + @$(NORMAL_UNINSTALL) + @list='$(keyboard_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(keyboarddir)/$$f'"; \ + rm -f "$(DESTDIR)$(keyboarddir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(keyboarddir)" "$(DESTDIR)$(keyboarddir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-keyboardLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-keyboardDATA install-keyboardLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-keyboardDATA uninstall-keyboardLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-keyboardLTLIBRARIES clean-libtool ctags 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-keyboardDATA install-keyboardLTLIBRARIES 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 uninstall uninstall-am \ + uninstall-keyboardDATA uninstall-keyboardLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/keyboard/keyboard.c b/Source/DirectFB/inputdrivers/keyboard/keyboard.c new file mode 100755 index 0000000..783ebfb --- /dev/null +++ b/Source/DirectFB/inputdrivers/keyboard/keyboard.c @@ -0,0 +1,524 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include + +#include + +#include + +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +#include + + + +DFB_INPUT_DRIVER( keyboard ) + +typedef struct { + CoreInputDevice *device; + DirectThread *thread; + + struct termios old_ts; + + int vt_fd; +} KeyboardData; + +static DFBInputDeviceKeySymbol +keyboard_get_symbol( int code, + unsigned short value, + DFBInputDeviceKeymapSymbolIndex level ) +{ + unsigned char type = KTYP(value); + unsigned char index = KVAL(value); + int base = (level == DIKSI_BASE); + + switch (type) { + case KT_FN: + if (index < 20) + return DFB_FUNCTION_KEY( index + 1 ); + break; + case KT_LETTER: + case KT_LATIN: + switch (index) { + case 0x1c: + return DIKS_PRINT; + case 0x7f: + return DIKS_BACKSPACE; + case 0xa4: + return 0x20ac; /* euro currency sign */ + default: + return index; + } + break; + case KT_DEAD: + switch (value) { + case K_DGRAVE: + return DIKS_DEAD_GRAVE; + + case K_DACUTE: + return DIKS_DEAD_ACUTE; + + case K_DCIRCM: + return DIKS_DEAD_CIRCUMFLEX; + + case K_DTILDE: + return DIKS_DEAD_TILDE; + + case K_DDIERE: + return DIKS_DEAD_DIAERESIS; + + case K_DCEDIL: + return DIKS_DEAD_CEDILLA; + + default: + break; + } + break; + case KT_PAD: + if (index <= 9 && level != DIKSI_BASE) + return DIKS_0 + index; + break; + case 0xe: /* special IPAQ H3600 case - AH */ + switch (index) { + case 0x20: return DIKS_CALENDAR; + case 0x1a: return DIKS_BACK; + case 0x1c: return DIKS_MEMO; + case 0x21: return DIKS_POWER; + } + break; + case 0xd: /* another special IPAQ H3600 case - AH */ + switch (index) { + case 0x2: return DIKS_DIRECTORY; + case 0x1: return DIKS_MAIL; /* Q on older iPaqs */ + } + break; + } + + switch (value) { + case K_LEFT: return DIKS_CURSOR_LEFT; + case K_RIGHT: return DIKS_CURSOR_RIGHT; + case K_UP: return DIKS_CURSOR_UP; + case K_DOWN: return DIKS_CURSOR_DOWN; + case K_ENTER: return DIKS_ENTER; + case K_CTRL: return DIKS_CONTROL; + case K_SHIFT: return DIKS_SHIFT; + case K_ALT: return DIKS_ALT; + case K_ALTGR: return DIKS_ALTGR; + case K_INSERT: return DIKS_INSERT; + case K_REMOVE: return DIKS_DELETE; + case K_FIND: return DIKS_HOME; + case K_SELECT: return DIKS_END; + case K_PGUP: return DIKS_PAGE_UP; + case K_PGDN: return DIKS_PAGE_DOWN; + case K_NUM: return DIKS_NUM_LOCK; + case K_HOLD: return DIKS_SCROLL_LOCK; + case K_PAUSE: return DIKS_PAUSE; + case K_BREAK: return DIKS_BREAK; + case K_CAPS: return DIKS_CAPS_LOCK; + + case K_P0: return DIKS_INSERT; + case K_P1: return DIKS_END; + case K_P2: return DIKS_CURSOR_DOWN; + case K_P3: return DIKS_PAGE_DOWN; + case K_P4: return DIKS_CURSOR_LEFT; + case K_P5: return DIKS_BEGIN; + case K_P6: return DIKS_CURSOR_RIGHT; + case K_P7: return DIKS_HOME; + case K_P8: return DIKS_CURSOR_UP; + case K_P9: return DIKS_PAGE_UP; + case K_PPLUS: return DIKS_PLUS_SIGN; + case K_PMINUS: return DIKS_MINUS_SIGN; + case K_PSTAR: return DIKS_ASTERISK; + case K_PSLASH: return DIKS_SLASH; + case K_PENTER: return DIKS_ENTER; + case K_PCOMMA: return base ? DIKS_DELETE : DIKS_COMMA; + case K_PDOT: return base ? DIKS_DELETE : DIKS_PERIOD; + case K_PPARENL: return DIKS_PARENTHESIS_LEFT; + case K_PPARENR: return DIKS_PARENTHESIS_RIGHT; + } + + /* special keys not in the map, hack? */ + if (code == 124) /* keypad equal key */ + return DIKS_EQUALS_SIGN; + + if (code == 125) /* left windows key */ + return DIKS_META; + + if (code == 126) /* right windows key */ + return DIKS_META; + + if (code == 127) /* context menu key */ + return DIKS_SUPER; + + return DIKS_NULL; +} + +static DFBInputDeviceKeyIdentifier +keyboard_get_identifier( int code, unsigned short value ) +{ + unsigned char type = KTYP(value); + unsigned char index = KVAL(value); + + if (type == KT_PAD) { + if (index <= 9) + return DIKI_KP_0 + index; + + switch (value) { + case K_PSLASH: return DIKI_KP_DIV; + case K_PSTAR: return DIKI_KP_MULT; + case K_PMINUS: return DIKI_KP_MINUS; + case K_PPLUS: return DIKI_KP_PLUS; + case K_PENTER: return DIKI_KP_ENTER; + case K_PCOMMA: + case K_PDOT: return DIKI_KP_DECIMAL; + } + } + + /* Looks like a hack, but don't know a better way yet. */ + switch (code) { + case 12: return DIKI_MINUS_SIGN; + case 13: return DIKI_EQUALS_SIGN; + case 26: return DIKI_BRACKET_LEFT; + case 27: return DIKI_BRACKET_RIGHT; + case 39: return DIKI_SEMICOLON; + case 40: return DIKI_QUOTE_RIGHT; + case 41: return DIKI_QUOTE_LEFT; + case 43: return DIKI_BACKSLASH; + case 51: return DIKI_COMMA; + case 52: return DIKI_PERIOD; + case 53: return DIKI_SLASH; + case 54: return DIKI_SHIFT_R; + case 97: return DIKI_CONTROL_R; + default: + ; + } + + /* special keys not in the map, hack? */ + if (code == 124) /* keypad equal key */ + return DIKI_KP_EQUAL; + + if (code == 125) /* left windows key */ + return DIKI_META_L; + + if (code == 126) /* right windows key */ + return DIKI_META_R; + + if (code == 127) /* context menu key */ + return DIKI_SUPER_R; + + return DIKI_UNKNOWN; +} + +static unsigned short +keyboard_read_value( KeyboardData *data, + unsigned char table, unsigned char index ) +{ + struct kbentry entry; + + entry.kb_table = table; + entry.kb_index = index; + entry.kb_value = 0; + + if (ioctl( data->vt_fd, KDGKBENT, &entry )) { + D_PERROR("DirectFB/keyboard: KDGKBENT (table: %d, index: %d) " + "failed!\n", table, index); + return 0; + } + + return entry.kb_value; +} + +static void +keyboard_set_lights( KeyboardData *data, DFBInputDeviceLockState locks ) +{ + ioctl( data->vt_fd, KDSKBLED, locks ); +} + +static void* +keyboardEventThread( DirectThread *thread, void *driver_data ) +{ + int readlen; + unsigned char buf[64]; + KeyboardData *data = (KeyboardData*) driver_data; + + /* Read keyboard data */ + while ((readlen = read (data->vt_fd, buf, 64)) >= 0 || errno == EINTR) { + int i; + + direct_thread_testcancel( thread ); + + for (i = 0; i < readlen; i++) { + DFBInputEvent evt; + + evt.type = ((buf[i] & 0x80) ? + DIET_KEYRELEASE : DIET_KEYPRESS); + evt.flags = DIEF_KEYCODE; + evt.key_code = buf[i] & 0x7f; + + dfb_input_dispatch( data->device, &evt ); + + keyboard_set_lights( data, evt.locks ); + } + + if (readlen <= 0) + usleep( 200000 ); + } + + if (readlen <= 0 && errno != EINTR) + D_PERROR ("keyboard thread died\n"); + + return NULL; +} + +/* driver functions */ + +static int +driver_get_available( void ) +{ + int fd; + + switch (dfb_system_type()) { + case CORE_FBDEV: + case CORE_DEVMEM: + return 1; + + default: + return 0; + } + + fd = open( "/dev/tty0", O_RDWR | O_NOCTTY ); + if (fd < 0) + return 0; + + close( fd ); + + return 1; +} + +static void +driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf( info->name, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "Keyboard Driver" ); + + snprintf( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, "directfb.org" ); + + info->version.major = 0; + info->version.minor = 9; +} + +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + int fd; + struct termios ts; + KeyboardData *data; + + + if (dfb_system_type() == CORE_FBDEV && dfb_config->vt) { + FBDev *dfb_fbdev = dfb_system_data(); + + fd = dup( dfb_fbdev->vt->fd ); + if (fd < 0) { + D_PERROR( "DirectFB/Keyboard: Could not dup() file descriptor of TTY!\n" ); + return DFB_INIT; + } + } + else { + fd = open( "/dev/tty0", O_RDWR | O_NOCTTY ); + if (fd < 0) { + D_PERROR( "DirectFB/Keyboard: Could not open() /dev/tty0!\n" ); + return DFB_INIT; + } + } + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(KeyboardData) ); + if (!data) { + close( fd ); + return D_OOM(); + } + + data->device = device; + data->vt_fd = fd; + + tcgetattr( data->vt_fd, &data->old_ts ); + + ts = data->old_ts; + ts.c_cc[VTIME] = 0; + ts.c_cc[VMIN] = 1; + ts.c_lflag &= ~(ICANON|ECHO|ISIG); + ts.c_iflag = 0; + tcsetattr( data->vt_fd, TCSAFLUSH, &ts ); + + tcsetpgrp( data->vt_fd, getpgrp() ); + + if (dfb_system_type() == CORE_FBDEV && dfb_config->vt) { + FBDev *dfb_fbdev = dfb_system_data(); + dfb_fbdev->vt->flush = false; + } + + /* fill device info structure */ + snprintf( info->desc.name, + DFB_INPUT_DEVICE_DESC_NAME_LENGTH, "Keyboard" ); + + snprintf( info->desc.vendor, + DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "Unknown" ); + + /* claim to be the primary keyboard */ + info->prefered_id = DIDID_KEYBOARD; + + /* classify as a keyboard able to produce key events */ + info->desc.type = DIDTF_KEYBOARD; + info->desc.caps = DICAPS_KEYS; + + /* enable translation of raw hardware keycodes */ + info->desc.min_keycode = 0; + info->desc.max_keycode = 127; + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, keyboardEventThread, data, "Keyboard Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the kernel keymap. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ + int code = entry->code; + unsigned short value; + DFBInputDeviceKeyIdentifier identifier; + + /* fetch the base level */ + value = keyboard_read_value( driver_data, K_NORMTAB, code ); + + /* get the identifier for basic mapping */ + identifier = keyboard_get_identifier( code, value ); + + /* is CapsLock effective? */ + if (KTYP(value) == KT_LETTER) + entry->locks |= DILS_CAPS; + + /* is NumLock effective? */ + if (identifier >= DIKI_KP_DECIMAL && identifier <= DIKI_KP_9) + entry->locks |= DILS_NUM; + + /* write identifier to entry */ + entry->identifier = identifier; + + /* write base level symbol to entry */ + entry->symbols[DIKSI_BASE] = keyboard_get_symbol( code, value, DIKSI_BASE ); + + + /* fetch the shifted base level */ + value = keyboard_read_value( driver_data, K_SHIFTTAB, entry->code ); + + /* write shifted base level symbol to entry */ + entry->symbols[DIKSI_BASE_SHIFT] = keyboard_get_symbol( code, value, + DIKSI_BASE_SHIFT ); + + + /* fetch the alternative level */ + value = keyboard_read_value( driver_data, K_ALTTAB, entry->code ); + + /* write alternative level symbol to entry */ + entry->symbols[DIKSI_ALT] = keyboard_get_symbol( code, value, DIKSI_ALT ); + + + /* fetch the shifted alternative level */ + value = keyboard_read_value( driver_data, K_ALTSHIFTTAB, entry->code ); + + /* write shifted alternative level symbol to entry */ + entry->symbols[DIKSI_ALT_SHIFT] = keyboard_get_symbol( code, value, + DIKSI_ALT_SHIFT ); + + return DFB_OK; +} + +static void +driver_close_device( void *driver_data ) +{ + KeyboardData *data = (KeyboardData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + if (tcsetattr( data->vt_fd, TCSAFLUSH, &data->old_ts ) < 0) + D_PERROR("DirectFB/keyboard: tcsetattr for original values failed!\n"); + + close( data->vt_fd ); + + /* free private data */ + D_FREE( data ); +} + diff --git a/Source/DirectFB/inputdrivers/linux_input/Makefile.am b/Source/DirectFB/inputdrivers/linux_input/Makefile.am new file mode 100755 index 0000000..eb4265a --- /dev/null +++ b/Source/DirectFB/inputdrivers/linux_input/Makefile.am @@ -0,0 +1,34 @@ +## Makefile.am for DirectFB/inputdrivers/linux_input + +INCLUDES = \ + -I$(top_builddir)/include \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/systems + +linux_input_LTLIBRARIES = libdirectfb_linux_input.la + +if BUILD_STATIC +linux_input_DATA = $(linux_input_LTLIBRARIES:.la=.o) +endif + +linux_inputdir = $(MODULEDIR)/inputdrivers + +libdirectfb_linux_input_la_SOURCES = \ + input_fake.h \ + linux_input.c + +libdirectfb_linux_input_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_linux_input_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/linux_input/Makefile.in b/Source/DirectFB/inputdrivers/linux_input/Makefile.in new file mode 100755 index 0000000..8f54db6 --- /dev/null +++ b/Source/DirectFB/inputdrivers/linux_input/Makefile.in @@ -0,0 +1,601 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/linux_input +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(linux_inputdir)" \ + "$(DESTDIR)$(linux_inputdir)" +linux_inputLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(linux_input_LTLIBRARIES) +libdirectfb_linux_input_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_linux_input_la_OBJECTS = linux_input.lo +libdirectfb_linux_input_la_OBJECTS = \ + $(am_libdirectfb_linux_input_la_OBJECTS) +libdirectfb_linux_input_la_LINK = $(LIBTOOL) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libdirectfb_linux_input_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_linux_input_la_SOURCES) +DIST_SOURCES = $(libdirectfb_linux_input_la_SOURCES) +linux_inputDATA_INSTALL = $(INSTALL_DATA) +DATA = $(linux_input_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_builddir)/include \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/systems + +linux_input_LTLIBRARIES = libdirectfb_linux_input.la +@BUILD_STATIC_TRUE@linux_input_DATA = $(linux_input_LTLIBRARIES:.la=.o) +linux_inputdir = $(MODULEDIR)/inputdrivers +libdirectfb_linux_input_la_SOURCES = \ + input_fake.h \ + linux_input.c + +libdirectfb_linux_input_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_linux_input_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/linux_input/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/linux_input/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-linux_inputLTLIBRARIES: $(linux_input_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(linux_inputdir)" || $(MKDIR_P) "$(DESTDIR)$(linux_inputdir)" + @list='$(linux_input_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(linux_inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(linux_inputdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(linux_inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(linux_inputdir)/$$f"; \ + else :; fi; \ + done + +uninstall-linux_inputLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(linux_input_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(linux_inputdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(linux_inputdir)/$$p"; \ + done + +clean-linux_inputLTLIBRARIES: + -test -z "$(linux_input_LTLIBRARIES)" || rm -f $(linux_input_LTLIBRARIES) + @list='$(linux_input_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_linux_input.la: $(libdirectfb_linux_input_la_OBJECTS) $(libdirectfb_linux_input_la_DEPENDENCIES) + $(libdirectfb_linux_input_la_LINK) -rpath $(linux_inputdir) $(libdirectfb_linux_input_la_OBJECTS) $(libdirectfb_linux_input_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linux_input.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-linux_inputDATA: $(linux_input_DATA) + @$(NORMAL_INSTALL) + test -z "$(linux_inputdir)" || $(MKDIR_P) "$(DESTDIR)$(linux_inputdir)" + @list='$(linux_input_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(linux_inputDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(linux_inputdir)/$$f'"; \ + $(linux_inputDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(linux_inputdir)/$$f"; \ + done + +uninstall-linux_inputDATA: + @$(NORMAL_UNINSTALL) + @list='$(linux_input_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(linux_inputdir)/$$f'"; \ + rm -f "$(DESTDIR)$(linux_inputdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(linux_inputdir)" "$(DESTDIR)$(linux_inputdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-linux_inputLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-linux_inputDATA \ + install-linux_inputLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-linux_inputDATA \ + uninstall-linux_inputLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-linux_inputLTLIBRARIES ctags 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-linux_inputDATA install-linux_inputLTLIBRARIES \ + 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 uninstall \ + uninstall-am uninstall-linux_inputDATA \ + uninstall-linux_inputLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/linux_input/input_fake.h b/Source/DirectFB/inputdrivers/linux_input/input_fake.h new file mode 100755 index 0000000..7aecc9f --- /dev/null +++ b/Source/DirectFB/inputdrivers/linux_input/input_fake.h @@ -0,0 +1,84 @@ +#ifndef _INPUT_FAKE_H +#define _INPUT_FAKE_H + +#include + + +#if !defined(KEY_OK) + +/** + * define some additional remote control keys in case they + * were not already defined above in + */ + +#define KEY_OK 0x160 +#define KEY_SELECT 0x161 +#define KEY_GOTO 0x162 +#define KEY_CLEAR 0x163 +#define KEY_POWER2 0x164 +#define KEY_OPTION 0x165 +#define KEY_INFO 0x166 +#define KEY_TIME 0x167 +#define KEY_VENDOR 0x168 +#define KEY_ARCHIVE 0x169 +#define KEY_PROGRAM 0x16a +#define KEY_CHANNEL 0x16b +#define KEY_FAVORITES 0x16c +#define KEY_EPG 0x16d +#define KEY_PVR 0x16e +#define KEY_MHP 0x16f +#define KEY_LANGUAGE 0x170 +#define KEY_TITLE 0x171 +#define KEY_SUBTITLE 0x172 +#define KEY_ANGLE 0x173 +#define KEY_ZOOM 0x174 +#define KEY_MODE 0x175 +#define KEY_KEYBOARD 0x176 +#define KEY_SCREEN 0x177 +#define KEY_PC 0x178 +#define KEY_TV 0x179 +#define KEY_TV2 0x17a +#define KEY_VCR 0x17b +#define KEY_VCR2 0x17c +#define KEY_SAT 0x17d +#define KEY_SAT2 0x17e +#define KEY_CD 0x17f +#define KEY_TAPE 0x180 +#define KEY_RADIO 0x181 +#define KEY_TUNER 0x182 +#define KEY_PLAYER 0x183 +#define KEY_TEXT 0x184 +#define KEY_DVD 0x185 +#define KEY_AUX 0x186 +#define KEY_MP3 0x187 +#define KEY_AUDIO 0x188 +#define KEY_VIDEO 0x189 +#define KEY_DIRECTORY 0x18a +#define KEY_LIST 0x18b +#define KEY_MEMO 0x18c +#define KEY_CALENDAR 0x18d +#define KEY_RED 0x18e +#define KEY_GREEN 0x18f +#define KEY_YELLOW 0x190 +#define KEY_BLUE 0x191 +#define KEY_CHANNELUP 0x192 +#define KEY_CHANNELDOWN 0x193 +#define KEY_FIRST 0x194 +#define KEY_LAST 0x195 +#define KEY_AB 0x196 +#define KEY_PLAY 0x197 +#define KEY_RESTART 0x198 +#define KEY_SLOW 0x199 +#define KEY_SHUFFLE 0x19a +#define KEY_FASTFORWARD 0x19b +#define KEY_PREVIOUS 0x19c +#define KEY_NEXT 0x19d +#define KEY_DIGITS 0x19e +#define KEY_TEEN 0x19f +#define KEY_TWEN 0x1a0 +#define KEY_BREAK 0x1a1 + + +#endif /* !defined(KEY_OK) */ +#endif /* _INPUT_FAKE_H */ + diff --git a/Source/DirectFB/inputdrivers/linux_input/linux_input.c b/Source/DirectFB/inputdrivers/linux_input/linux_input.c new file mode 100755 index 0000000..9294ef7 --- /dev/null +++ b/Source/DirectFB/inputdrivers/linux_input/linux_input.c @@ -0,0 +1,1994 @@ +/* + (c) Copyright 2001-2008 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include + + +#include + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) +typedef unsigned long kernel_ulong_t; +#define BITS_PER_LONG (sizeof(long)*8) +#endif + +#include + +#ifndef KEY_OK +/* Linux kernel 2.5.42+ defines additional keys in linux/input.h */ +#include "input_fake.h" +#endif + +#ifndef EV_CNT +#define EV_CNT (EV_MAX+1) +#define KEY_CNT (KEY_MAX+1) +#define REL_CNT (REL_MAX+1) +#define ABS_CNT (ABS_MAX+1) +#define LED_CNT (LED_MAX+1) +#endif + +/* compat defines for older kernel like 2.4.x */ +#ifndef EV_SYN +#define EV_SYN 0x00 +#define SYN_REPORT 0 +#define SYN_CONFIG 1 +#define ABS_TOOL_WIDTH 0x1c +#define BTN_TOOL_DOUBLETAP 0x14d +#define BTN_TOOL_TRIPLETAP 0x14e +#endif + +#ifndef EVIOCGLED +#define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len) +#endif + +#ifndef EVIOCGRAB +#define EVIOCGRAB _IOW('E', 0x90, int) +#endif + +#include + + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#define DFB_INPUTDRIVER_HAS_AXIS_INFO +#define DFB_INPUTDRIVER_HAS_SENSITIVITY + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#ifdef LINUX_INPUT_USE_FBDEV +#include +#endif + +#include + + +DFB_INPUT_DRIVER( linux_input ) + +#ifndef BITS_PER_LONG +#define BITS_PER_LONG (sizeof(long) * 8) +#endif +#define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1) +#define OFF(x) ((x)%BITS_PER_LONG) +#define BIT(x) (1UL<> OFF(bit)) & 1) + +/* compat for 2.4.x kernel - just a compile fix */ +#ifndef HAVE_INPUT_ABSINFO +struct input_absinfo { + s32 value; + s32 minimum; + s32 maximum; + s32 fuzz; + s32 flat; +}; +#endif + + +D_DEBUG_DOMAIN( LinuxInput_Driver, "LinuxInput/Driver", "Linux Input Driver" ); + + +/* + * Touchpads related stuff + */ +typedef enum { + TOUCHPAD_FSM_START, + TOUCHPAD_FSM_MAIN, + TOUCHPAD_FSM_DRAG_START, + TOUCHPAD_FSM_DRAG_MAIN, +} TouchPadState; + +struct touchpad_axis { + int old, min, max; +}; + +struct touchpad_fsm_state { + TouchPadState fsm_state; + + struct touchpad_axis x; + struct touchpad_axis y; + struct timeval timeout; +}; + +typedef enum { + EVENT_NONE = 0x00000000, + + EVENT_BUTTON = 0x00000001, + EVENT_KEY = 0x00000002, + EVENT_AXES = 0x00000004, + + EVENT_ALL = 0x00000007, +} EventFlags; + +/* + * declaration of private data + */ +typedef struct { + unsigned int index; + + CoreInputDevice *device; + DirectThread *thread; + + InputDeviceInfo info; + + int fd; + + bool has_leds; + unsigned long led_state[NBITS(LED_CNT)]; + DFBInputDeviceLockState locks; + +#ifdef LINUX_INPUT_USE_FBDEV + VirtualTerminal *vt; +#endif + + bool touchpad; + struct touchpad_fsm_state fsm_state; + + struct { + EventFlags added; + + DFBInputEvent button; + DFBInputEvent key; + + DFBInputEvent axes[DIAI_LAST+1]; + } events; + + struct timeval timeout; + + int sensitivity; +} LinuxInputData; + + +typedef struct { + char *device; + InputDeviceInfo info; + LinuxInputData *data; +} InputDevice; + + +static bool check_device( const char *device, + InputDeviceInfo *ret_info ); + + +#define MAX_LINUX_INPUT_DEVICES 16 + +static int num_devices = 0; +static InputDevice devices[MAX_LINUX_INPUT_DEVICES]; + + +static const +int basic_keycodes [] = { + DIKI_UNKNOWN, DIKI_ESCAPE, DIKI_1, DIKI_2, DIKI_3, DIKI_4, DIKI_5, + DIKI_6, DIKI_7, DIKI_8, DIKI_9, DIKI_0, DIKI_MINUS_SIGN, + DIKI_EQUALS_SIGN, DIKI_BACKSPACE, + + DIKI_TAB, DIKI_Q, DIKI_W, DIKI_E, DIKI_R, DIKI_T, DIKI_Y, DIKI_U, + DIKI_I, DIKI_O, DIKI_P, DIKI_BRACKET_LEFT, DIKI_BRACKET_RIGHT, + DIKI_ENTER, + + DIKI_CONTROL_L, DIKI_A, DIKI_S, DIKI_D, DIKI_F, DIKI_G, DIKI_H, DIKI_J, + DIKI_K, DIKI_L, DIKI_SEMICOLON, DIKI_QUOTE_RIGHT, DIKI_QUOTE_LEFT, + + DIKI_SHIFT_L, DIKI_BACKSLASH, DIKI_Z, DIKI_X, DIKI_C, DIKI_V, DIKI_B, + DIKI_N, DIKI_M, DIKI_COMMA, DIKI_PERIOD, DIKI_SLASH, DIKI_SHIFT_R, + DIKI_KP_MULT, DIKI_ALT_L, DIKI_SPACE, DIKI_CAPS_LOCK, + + DIKI_F1, DIKI_F2, DIKI_F3, DIKI_F4, DIKI_F5, DIKI_F6, DIKI_F7, DIKI_F8, + DIKI_F9, DIKI_F10, DIKI_NUM_LOCK, DIKI_SCROLL_LOCK, + + DIKI_KP_7, DIKI_KP_8, DIKI_KP_9, DIKI_KP_MINUS, + DIKI_KP_4, DIKI_KP_5, DIKI_KP_6, DIKI_KP_PLUS, + DIKI_KP_1, DIKI_KP_2, DIKI_KP_3, DIKI_KP_0, DIKI_KP_DECIMAL, + + /*KEY_103RD,*/ DIKI_BACKSLASH, + /*KEY_F13,*/ DFB_FUNCTION_KEY(13), + /*KEY_102ND*/ DIKI_LESS_SIGN, + + DIKI_F11, DIKI_F12, DIKI_PRINT, DFB_FUNCTION_KEY(15), + DFB_FUNCTION_KEY(16), DFB_FUNCTION_KEY(17), DFB_FUNCTION_KEY(18), + DFB_FUNCTION_KEY(19), DFB_FUNCTION_KEY(20), + + DIKI_KP_ENTER, DIKI_CONTROL_R, DIKI_KP_DIV, DIKI_PRINT, DIKS_ALTGR, + + /*KEY_LINEFEED*/ DIKI_UNKNOWN, + + DIKI_HOME, DIKI_UP, DIKI_PAGE_UP, DIKI_LEFT, DIKI_RIGHT, + DIKI_END, DIKI_DOWN, DIKI_PAGE_DOWN, DIKI_INSERT, DIKI_DELETE, + + /*KEY_MACRO,*/ DIKI_UNKNOWN, + + DIKS_MUTE, DIKS_VOLUME_DOWN, DIKS_VOLUME_UP, DIKS_POWER, DIKI_KP_EQUAL, + + /*KEY_KPPLUSMINUS,*/ DIKI_UNKNOWN, + + DIKS_PAUSE, DFB_FUNCTION_KEY(21), DFB_FUNCTION_KEY(22), + DFB_FUNCTION_KEY(23), DFB_FUNCTION_KEY(24), + + DIKI_KP_SEPARATOR, DIKI_META_L, DIKI_META_R, DIKI_SUPER_L, + + DIKS_STOP, + + /*DIKS_AGAIN, DIKS_PROPS, DIKS_UNDO, DIKS_FRONT, DIKS_COPY, + DIKS_OPEN, DIKS_PASTE, DIKS_FIND, DIKS_CUT,*/ + DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, + DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, + + DIKS_HELP, DIKS_MENU, DIKS_CALCULATOR, DIKS_SETUP, + + /*KEY_SLEEP, KEY_WAKEUP, KEY_FILE, KEY_SENDFILE, KEY_DELETEFILE, + KEY_XFER,*/ + DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, + DIKI_UNKNOWN, + + /*KEY_PROG1, KEY_PROG2,*/ + DIKS_CUSTOM1, DIKS_CUSTOM2, + + DIKS_INTERNET, + + /*KEY_MSDOS, KEY_COFFEE, KEY_DIRECTION, KEY_CYCLEWINDOWS,*/ + DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, + + DIKS_MAIL, + + /*KEY_BOOKMARKS, KEY_COMPUTER, */ + DIKI_UNKNOWN, DIKI_UNKNOWN, + + DIKS_BACK, DIKS_FORWARD, + + /*KEY_CLOSECD, KEY_EJECTCD, KEY_EJECTCLOSECD,*/ + DIKS_EJECT, DIKS_EJECT, DIKS_EJECT, + + DIKS_NEXT, DIKS_PLAYPAUSE, DIKS_PREVIOUS, DIKS_STOP, DIKS_RECORD, + DIKS_REWIND, DIKS_PHONE, + + /*KEY_ISO,*/ DIKI_UNKNOWN, + /*KEY_CONFIG,*/ DIKS_SETUP, + /*KEY_HOMEPAGE, KEY_REFRESH,*/ DIKI_UNKNOWN, DIKS_SHUFFLE, + + DIKS_EXIT, /*KEY_MOVE,*/ DIKI_UNKNOWN, DIKS_EDITOR, + + /*KEY_SCROLLUP,*/ DIKS_PAGE_UP, + /*KEY_SCROLLDOWN,*/ DIKS_PAGE_DOWN, + /*KEY_KPLEFTPAREN,*/ DIKI_UNKNOWN, + /*KEY_KPRIGHTPAREN,*/ DIKI_UNKNOWN, + + /* unused codes 181-182: */ + DIKI_UNKNOWN, DIKI_UNKNOWN, + + DFB_FUNCTION_KEY(13), DFB_FUNCTION_KEY(14), DFB_FUNCTION_KEY(15), + DFB_FUNCTION_KEY(16), DFB_FUNCTION_KEY(17), DFB_FUNCTION_KEY(18), + DFB_FUNCTION_KEY(19), DFB_FUNCTION_KEY(20), DFB_FUNCTION_KEY(21), + DFB_FUNCTION_KEY(22), DFB_FUNCTION_KEY(23), DFB_FUNCTION_KEY(24), + + /* unused codes 195-199: */ + DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, DIKI_UNKNOWN, + + /* KEY_PLAYCD, KEY_PAUSECD */ + DIKS_PLAY, DIKS_PAUSE, + + /*KEY_PROG3, KEY_PROG4,*/ + DIKS_CUSTOM3, DIKS_CUSTOM4, + + DIKI_UNKNOWN, + + /*KEY_SUSPEND, KEY_CLOSE*/ + DIKI_UNKNOWN, DIKI_UNKNOWN, + + /* KEY_PLAY */ + DIKS_PLAY, + + /* KEY_FASTFORWARD */ + DIKS_FASTFORWARD, + + /* KEY_BASSBOOST */ + DIKI_UNKNOWN, + + /* KEY_PRINT */ + DIKS_PRINT, + + /* KEY_HP */ DIKI_UNKNOWN, + /* KEY_CAMERA */ DIKI_UNKNOWN, + /* KEY_SOUND */ DIKS_AUDIO, + /* KEY_QUESTION */ DIKS_HELP, + /* KEY_EMAIL */ DIKS_MAIL, + /* KEY_CHAT */ DIKI_UNKNOWN, + /* KEY_SEARCH */ DIKI_UNKNOWN, + /* KEY_CONNECT */ DIKI_UNKNOWN, + /* KEY_FINANCE */ DIKI_UNKNOWN, + /* KEY_SPORT */ DIKI_UNKNOWN, + /* KEY_SHOP */ DIKI_UNKNOWN, + /* KEY_ALTERASE */ DIKI_UNKNOWN, + /* KEY_CANCEL */ DIKS_CANCEL, + /* KEY_BRIGHTNESSDOWN */ DIKI_UNKNOWN, + /* KEY_BRIGHTNESSUP */ DIKI_UNKNOWN, + /* KEY_MEDIA */ DIKI_UNKNOWN, +}; + +static const +int ext_keycodes [] = { + DIKS_OK, DIKS_SELECT, DIKS_GOTO, DIKS_CLEAR, DIKS_POWER2, DIKS_OPTION, + DIKS_INFO, DIKS_TIME, DIKS_VENDOR, DIKS_ARCHIVE, DIKS_PROGRAM, + DIKS_CHANNEL, DIKS_FAVORITES, DIKS_EPG, DIKS_PVR, DIKS_MHP, + DIKS_LANGUAGE, DIKS_TITLE, DIKS_SUBTITLE, DIKS_ANGLE, DIKS_ZOOM, + DIKS_MODE, DIKS_KEYBOARD, DIKS_SCREEN, DIKS_PC, DIKS_TV, DIKS_TV2, + DIKS_VCR, DIKS_VCR2, DIKS_SAT, DIKS_SAT2, DIKS_CD, DIKS_TAPE, + DIKS_RADIO, DIKS_TUNER, DIKS_PLAYER, DIKS_TEXT, DIKS_DVD, DIKS_AUX, + DIKS_MP3, DIKS_AUDIO, DIKS_VIDEO, DIKS_DIRECTORY, DIKS_LIST, DIKS_MEMO, + DIKS_CALENDAR, DIKS_RED, DIKS_GREEN, DIKS_YELLOW, DIKS_BLUE, + DIKS_CHANNEL_UP, DIKS_CHANNEL_DOWN, DIKS_FIRST, DIKS_LAST, DIKS_AB, + DIKS_NEXT, DIKS_RESTART, DIKS_SLOW, DIKS_SHUFFLE, DIKS_FASTFORWARD, + DIKS_PREVIOUS, DIKS_NEXT, DIKS_DIGITS, DIKS_TEEN, DIKS_TWEN, DIKS_BREAK +}; + +/**********************************************************************************************************************/ + +static void touchpad_fsm_init( struct touchpad_fsm_state *state ); +static int touchpad_fsm( struct touchpad_fsm_state *state, + const struct input_event *levt, + DFBInputEvent *devt ); + +/**********************************************************************************************************************/ + +static bool timeout_passed( const struct timeval *timeout, const struct timeval *current ); +static bool timeout_is_set( const struct timeval *timeout ); +static void timeout_add( struct timeval *timeout, const struct timeval *sub ); +static void timeout_sub( struct timeval *timeout, const struct timeval *sub ); + +/**********************************************************************************************************************/ +/**********************************************************************************************************************/ + +/* + * Translates a Linux input keycode into a DirectFB keycode. + */ +static int +translate_key( unsigned short code ) +{ + if (code < D_ARRAY_SIZE( basic_keycodes )) + return basic_keycodes[code]; + + if (code >= KEY_OK) + if (code - KEY_OK < D_ARRAY_SIZE( ext_keycodes )) + return ext_keycodes[code-KEY_OK]; + + return DIKI_UNKNOWN; +} + +#ifdef LINUX_INPUT_USE_FBDEV +static DFBInputDeviceKeySymbol +keyboard_get_symbol( int code, + unsigned short value, + DFBInputDeviceKeymapSymbolIndex level ) +{ + unsigned char type = KTYP(value); + unsigned char index = KVAL(value); + int base = (level == DIKSI_BASE); + + switch (type) { + case KT_FN: + if (index < 20) + return DFB_FUNCTION_KEY( index + 1 ); + break; + case KT_LETTER: + case KT_LATIN: + switch (index) { + case 0x1c: + return DIKS_PRINT; + case 0x7f: + return DIKS_BACKSPACE; + case 0xa4: + return 0x20ac; /* euro currency sign */ + default: + return index; + } + break; + case KT_DEAD: + switch (value) { + case K_DGRAVE: + return DIKS_DEAD_GRAVE; + + case K_DACUTE: + return DIKS_DEAD_ACUTE; + + case K_DCIRCM: + return DIKS_DEAD_CIRCUMFLEX; + + case K_DTILDE: + return DIKS_DEAD_TILDE; + + case K_DDIERE: + return DIKS_DEAD_DIAERESIS; + + case K_DCEDIL: + return DIKS_DEAD_CEDILLA; + + default: + break; + } + break; + case KT_PAD: + if (index <= 9 && level != DIKSI_BASE) + return DIKS_0 + index; + break; + case 0xe: /* special IPAQ H3600 case - AH */ + switch (index) { + case 0x20: return DIKS_CALENDAR; + case 0x1a: return DIKS_BACK; + case 0x1c: return DIKS_MEMO; + case 0x21: return DIKS_POWER; + } + break; + case 0xd: /* another special IPAQ H3600 case - AH */ + switch (index) { + case 0x2: return DIKS_DIRECTORY; + case 0x1: return DIKS_MAIL; /* Q on older iPaqs */ + } + break; + } + + switch (value) { + case K_LEFT: return DIKS_CURSOR_LEFT; + case K_RIGHT: return DIKS_CURSOR_RIGHT; + case K_UP: return DIKS_CURSOR_UP; + case K_DOWN: return DIKS_CURSOR_DOWN; + case K_ENTER: return DIKS_ENTER; + case K_CTRL: return DIKS_CONTROL; + case K_SHIFT: return DIKS_SHIFT; + case K_ALT: return DIKS_ALT; + case K_ALTGR: return DIKS_ALTGR; + case K_INSERT: return DIKS_INSERT; + case K_REMOVE: return DIKS_DELETE; + case K_FIND: return DIKS_HOME; + case K_SELECT: return DIKS_END; + case K_PGUP: return DIKS_PAGE_UP; + case K_PGDN: return DIKS_PAGE_DOWN; + case K_NUM: return DIKS_NUM_LOCK; + case K_HOLD: return DIKS_SCROLL_LOCK; + case K_PAUSE: return DIKS_PAUSE; + case K_BREAK: return DIKS_BREAK; + case K_CAPS: return DIKS_CAPS_LOCK; + + case K_P0: return DIKS_INSERT; + case K_P1: return DIKS_END; + case K_P2: return DIKS_CURSOR_DOWN; + case K_P3: return DIKS_PAGE_DOWN; + case K_P4: return DIKS_CURSOR_LEFT; + case K_P5: return DIKS_BEGIN; + case K_P6: return DIKS_CURSOR_RIGHT; + case K_P7: return DIKS_HOME; + case K_P8: return DIKS_CURSOR_UP; + case K_P9: return DIKS_PAGE_UP; + case K_PPLUS: return DIKS_PLUS_SIGN; + case K_PMINUS: return DIKS_MINUS_SIGN; + case K_PSTAR: return DIKS_ASTERISK; + case K_PSLASH: return DIKS_SLASH; + case K_PENTER: return DIKS_ENTER; + case K_PCOMMA: return base ? DIKS_DELETE : DIKS_COMMA; + case K_PDOT: return base ? DIKS_DELETE : DIKS_PERIOD; + case K_PPARENL: return DIKS_PARENTHESIS_LEFT; + case K_PPARENR: return DIKS_PARENTHESIS_RIGHT; + } + + /* special keys not in the map, hack? */ + if (code == 99) + return DIKS_PRINT; + + if (code == 124) /* keypad equal key */ + return DIKS_EQUALS_SIGN; + + if (code == 125) /* left windows key */ + return DIKS_META; + + if (code == 126) /* right windows key */ + return DIKS_META; + + if (code == 127) /* context menu key */ + return DIKS_SUPER; + + return DIKS_NULL; +} + +static DFBInputDeviceKeyIdentifier +keyboard_get_identifier( int code, unsigned short value ) +{ + unsigned char type = KTYP(value); + unsigned char index = KVAL(value); + + if (type == KT_PAD) { + if (index <= 9) + return DIKI_KP_0 + index; + + switch (value) { + case K_PSLASH: return DIKI_KP_DIV; + case K_PSTAR: return DIKI_KP_MULT; + case K_PMINUS: return DIKI_KP_MINUS; + case K_PPLUS: return DIKI_KP_PLUS; + case K_PENTER: return DIKI_KP_ENTER; + case K_PCOMMA: + case K_PDOT: return DIKI_KP_DECIMAL; + } + } + + /* Looks like a hack, but don't know a better way yet. */ + switch (code) { + case 12: return DIKI_MINUS_SIGN; + case 13: return DIKI_EQUALS_SIGN; + case 26: return DIKI_BRACKET_LEFT; + case 27: return DIKI_BRACKET_RIGHT; + case 39: return DIKI_SEMICOLON; + case 40: return DIKI_QUOTE_RIGHT; + case 41: return DIKI_QUOTE_LEFT; + case 43: return DIKI_BACKSLASH; + case 51: return DIKI_COMMA; + case 52: return DIKI_PERIOD; + case 53: return DIKI_SLASH; + case 54: return DIKI_SHIFT_R; + case 97: return DIKI_CONTROL_R; + case 100: return DIKI_ALT_R; + default: + ; + } + + /* special keys not in the map, hack? */ + if (code == 124) /* keypad equal key */ + return DIKI_KP_EQUAL; + + if (code == 125) /* left windows key */ + return DIKI_META_L; + + if (code == 126) /* right windows key */ + return DIKI_META_R; + + if (code == 127) /* context menu key */ + return DIKI_SUPER_R; + + return DIKI_UNKNOWN; +} + +static unsigned short +keyboard_read_value( const LinuxInputData *data, + unsigned char table, unsigned char index ) +{ + struct kbentry entry; + + if (!data->vt) + return 0; + + entry.kb_table = table; + entry.kb_index = index; + entry.kb_value = 0; + + if (ioctl( data->vt->fd, KDGKBENT, &entry )) { + D_PERROR("DirectFB/keyboard: KDGKBENT (table: %d, index: %d) " + "failed!\n", table, index); + return 0; + } + + return entry.kb_value; +} +#endif /* LINUX_INPUT_USE_FBDEV */ + +/**********************************************************************************************************************/ + +/* + * Translates key and button events. + */ +static bool +key_event( const struct input_event *levt, + DFBInputEvent *devt ) +{ + int code = levt->code; + + /* map touchscreen and smartpad events to button mouse */ + if (code == BTN_TOUCH || code == BTN_TOOL_FINGER) + code = BTN_MOUSE; + + if ((code >= BTN_MOUSE && code < BTN_JOYSTICK) || code == BTN_TOUCH) { + /* ignore repeat events for buttons */ + if (levt->value == 2) + return false; + + devt->type = levt->value ? DIET_BUTTONPRESS : DIET_BUTTONRELEASE; + /* don't set DIEF_BUTTONS, it will be set by the input core */ + devt->button = DIBI_FIRST + code - BTN_MOUSE; + } + else { + int key = translate_key( code ); + + if (key == DIKI_UNKNOWN) + return false; + + devt->type = levt->value ? DIET_KEYPRESS : DIET_KEYRELEASE; + + if (DFB_KEY_TYPE(key) == DIKT_IDENTIFIER) { + devt->key_id = key; + devt->flags |= DIEF_KEYID; + } + else { + devt->key_symbol = key; + devt->flags |= DIEF_KEYSYMBOL; + } + + devt->flags |= DIEF_KEYCODE; + devt->key_code = code; + } + + if (levt->value == 2) + devt->flags |= DIEF_REPEAT; + + return true; +} + +/* + * Translates relative axis events. + */ +static bool +rel_event( const LinuxInputData *data, + const struct input_event *levt, + DFBInputEvent *devt ) +{ + switch (levt->code) { + case REL_X: + devt->axis = DIAI_X; + devt->axisrel = levt->value * data->sensitivity; + break; + + case REL_Y: + devt->axis = DIAI_Y; + devt->axisrel = levt->value * data->sensitivity; + break; + + case REL_Z: + case REL_WHEEL: + devt->axis = DIAI_Z; + devt->axisrel = -levt->value * data->sensitivity; + break; + + default: + if (levt->code > REL_MAX || levt->code > DIAI_LAST) + return false; + devt->axis = levt->code; + devt->axisrel = levt->value * data->sensitivity; + } + + devt->type = DIET_AXISMOTION; + devt->flags |= DIEF_AXISREL; + + return true; +} + +/* + * Translates absolute axis events. + */ +static bool +abs_event( const struct input_event *levt, + DFBInputEvent *devt ) +{ + switch (levt->code) { + case ABS_X: + devt->axis = DIAI_X; + break; + + case ABS_Y: + devt->axis = DIAI_Y; + break; + + case ABS_Z: + case ABS_WHEEL: + devt->axis = DIAI_Z; + break; + + default: + if (levt->code >= ABS_PRESSURE || levt->code > DIAI_LAST) + return false; + devt->axis = levt->code; + } + + devt->type = DIET_AXISMOTION; + devt->flags |= DIEF_AXISABS; + devt->axisabs = levt->value; + + return true; +} + +/* + * Translates a Linux input event into a DirectFB input event. + */ +static bool +translate_event( const LinuxInputData *data, + const struct input_event *levt, + DFBInputEvent *devt ) +{ + devt->flags = DIEF_TIMESTAMP; + devt->timestamp = levt->time; + + switch (levt->type) { + case EV_KEY: + return key_event( levt, devt ); + + case EV_REL: + return rel_event( data, levt, devt ); + + case EV_ABS: + return abs_event( levt, devt ); + + default: + ; + } + + return false; +} + +static void +set_led( const LinuxInputData *data, int led, int state ) +{ + struct input_event levt; + + levt.type = EV_LED; + levt.code = led; + levt.value = !!state; + + write( data->fd, &levt, sizeof(levt) ); +} + +/**********************************************************************************************************************/ +/**********************************************************************************************************************/ + +static void +LinuxInput_Initialize( LinuxInputData *data ) +{ + /* Query min/max coordinates. */ + if (data->touchpad) { + struct input_absinfo absinfo; + + touchpad_fsm_init( &data->fsm_state ); + + ioctl( data->fd, EVIOCGABS(ABS_X), &absinfo ); + data->fsm_state.x.min = absinfo.minimum; + data->fsm_state.x.max = absinfo.maximum; + + ioctl( data->fd, EVIOCGABS(ABS_Y), &absinfo ); + data->fsm_state.y.min = absinfo.minimum; + data->fsm_state.y.max = absinfo.maximum; + } +} + +static void +LinuxInput_FlushEvents( LinuxInputData *data ) +{ + int i; + int num = 0; + DFBInputEvent *events[DIAI_LAST+1+2]; + + D_DEBUG_AT( LinuxInput_Driver, "%s( %p )\n", __FUNCTION__, data ); + + /* Flush axis events first */ + if (data->events.added & EVENT_AXES) { + for (i=0; ievents.axes); i++) { + if (data->events.axes[i].type) + events[num++] = &data->events.axes[i]; + } + } + + /* Flush button */ + if (data->events.added & EVENT_BUTTON) { + events[num++] = &data->events.button; + } + + /* Flush key */ + if (data->events.added & EVENT_KEY) { + events[num++] = &data->events.key; + } + + /* Clear event mask */ + data->events.added = EVENT_NONE; + + /* + * Dispatch all events + */ + for (i=0; iflags |= DIEF_FOLLOW; + + dfb_input_dispatch( data->device, events[i] ); + + if (data->has_leds && (events[i]->locks != data->locks)) { + set_led( data, LED_SCROLLL, events[i]->locks & DILS_SCROLL ); + set_led( data, LED_NUML, events[i]->locks & DILS_NUM ); + set_led( data, LED_CAPSL, events[i]->locks & DILS_CAPS ); + + data->locks = events[i]->locks; + } + + events[i]->type = DIET_UNKNOWN; + events[i]->flags = DIEF_NONE; + } +} + +static void +LinuxInput_AddEvent( LinuxInputData *data, + DFBInputEvent *event ) +{ + D_DEBUG_AT( LinuxInput_Driver, "%s( %p, %p )\n", __FUNCTION__, data, event ); + D_DEBUG_AT( LinuxInput_Driver, " =-> type %d, flags 0x%04x\n", event->type, event->flags ); + + if (!data->events.added && dfb_config->max_axis_rate) { + struct timeval time; + + gettimeofday( &time, NULL ); + + data->timeout.tv_sec = 0; + data->timeout.tv_usec = 1000000 / dfb_config->max_axis_rate; + + timeout_add( &data->timeout, &time ); + } + + switch (event->type) { + case DIET_BUTTONPRESS: + case DIET_BUTTONRELEASE: + if (data->events.button.type) { + D_BUG( "previous button event not flushed" ); + LinuxInput_FlushEvents( data ); + } + + data->events.added |= EVENT_BUTTON; + data->events.button = *event; + break; + + case DIET_KEYPRESS: + case DIET_KEYRELEASE: + if (data->events.key.type) { + D_BUG( "previous key event not flushed" ); + LinuxInput_FlushEvents( data ); + } + + data->events.added |= EVENT_KEY; + data->events.key = *event; + break; + + case DIET_AXISMOTION: + if (event->axis < DIAI_FIRST || event->axis > DIAI_LAST) { + D_BUG( "axis %d out of range", event->axis ); + return; + } + + if (data->events.axes[event->axis].type) { + if (dfb_config->mouse_motion_compression || dfb_config->max_axis_rate) { + if (D_FLAGS_IS_SET( event->flags, DIEF_AXISREL )) { + if (D_FLAGS_IS_SET( data->events.axes[event->axis].flags, DIEF_AXISREL )) + event->axisrel += data->events.axes[event->axis].axisrel; + else + D_WARN( "previous axis event with different abs/rel flag" ); + } + else { + if (D_FLAGS_IS_SET( data->events.axes[event->axis].flags, DIEF_AXISREL )) + D_WARN( "previous axis event with different abs/rel flag" ); + } + } + else { + D_BUG( "previous axis event not flushed" ); + LinuxInput_FlushEvents( data ); + } + } + + data->events.added |= EVENT_AXES; + data->events.axes[event->axis] = *event; + break; + + default: + D_ONCE( "unknown event type %d", event->type ); + } +} + +static void +LinuxInput_HandleEvent( LinuxInputData *data, + const struct input_event *levt ) +{ + int status = -1; + DFBInputEvent temp = { .type = DIET_UNKNOWN }; + + D_DEBUG_AT( LinuxInput_Driver, "%s( %p, %p )\n", __FUNCTION__, data, levt ); + D_DEBUG_AT( LinuxInput_Driver, " =-> 0x%02x 0x%03x\n", levt->type, levt->code ); + + if (levt->type == EV_SYN && levt->code == SYN_REPORT) { + /* With mouse motion compression wait as long as only axis events are added */ + if ((dfb_config->mouse_motion_compression || dfb_config->max_axis_rate) && data->events.added == EVENT_AXES) + return; + + LinuxInput_FlushEvents( data ); + + return; + } + + if (data->touchpad) { + status = touchpad_fsm( &data->fsm_state, levt, &temp ); + if (!status) + /* Handled but no further processing is necessary. */ + return; + } + + if (status < 0) { + /* Not handled. Try the direct approach. */ + if (!translate_event( data, levt, &temp )) + return; + } + + D_ASSERT( temp.type != DIET_UNKNOWN ); + + LinuxInput_AddEvent( data, &temp ); +} + +static void +LinuxInput_HandleTimeout( LinuxInputData *data ) +{ + D_DEBUG_AT( LinuxInput_Driver, "%s( %p )\n", __FUNCTION__, data ); + + if (data->touchpad) { + DFBInputEvent event; + + if (touchpad_fsm( &data->fsm_state, NULL, &event ) > 0) + dfb_input_dispatch( data->device, &event ); + } + + LinuxInput_FlushEvents( data ); +} + +static DFBResult +LinuxInput_GetTimeout( LinuxInputData *data, + struct timeval *ret_timeout ) +{ + D_DEBUG_AT( LinuxInput_Driver, "%s( %p )\n", __FUNCTION__, data ); + + if (data->events.added && dfb_config->max_axis_rate) { + *ret_timeout = data->timeout; + + return DFB_OK; + } + + if (data->touchpad && timeout_is_set( &data->fsm_state.timeout )) { + *ret_timeout = data->fsm_state.timeout; + + return DFB_OK; + } + + return DFB_TEMPUNAVAIL; +} + +/**********************************************************************************************************************/ +/**********************************************************************************************************************/ + +static void +LinuxInput_CloseDevice( LinuxInputData *data ) +{ + int fd = data->fd; + + D_INFO( "LinuxInput: Disconnected '%s'\n", data->info.desc.name ); + + dfb_input_device_disconnected( data->device ); + + data->fd = -1; + + close( fd ); +} + +static void +LinuxInput_ProbeDevice( const char *device ) +{ + DFBResult ret; + int i, fd; + InputDeviceInfo info; + + D_DEBUG_AT( LinuxInput_Driver, "%s( %s )\n", __FUNCTION__, device ); + + for (i=0; ifd != -1) + return; + + break; + } + } + + if (!check_device( device, &info )) + return; + + for (i=0; ifd == -1) { + D_INFO( "LinuxInput: Reconnected '%s'\n", info.desc.name ); + + dfb_input_device_reconnected( devices[i].data->device ); + + /* reopen device */ + fd = open( device, O_RDWR ); + if (fd < 0) { + D_PERROR( "DirectFB/linux_input: could not reopen device" ); + return; + } + + /* grab device */ + if (dfb_config->linux_input_grab) { + ret = ioctl( fd, EVIOCGRAB, 1 ); + /* 2.4 kernels don't have EVIOCGRAB so ignore EINVAL */ + if (ret && errno != EINVAL) { + D_PERROR( "DirectFB/linux_input: could not grab device" ); + close( fd ); + return; + } + } + + devices[i].data->fd = fd; + + D_FREE( devices[i].device ); + + devices[i].device = D_STRDUP( device ); + } + + return; + } + } + + D_INFO( "LinuxInput: Added '%s'\n", info.desc.name ); + + devices[num_devices].device = D_STRDUP( device ); + devices[num_devices].info = info; + + num_devices++; +} + +static void +LinuxInput_UpdateDevices() +{ + int i; + + D_DEBUG_AT( LinuxInput_Driver, "%s()\n", __FUNCTION__ ); + + /* Use the devices specified in the configuration. */ + if (fusion_vector_has_elements( &dfb_config->linux_input_devices )) { + const char *device; + + fusion_vector_foreach (device, i, dfb_config->linux_input_devices) { + if (num_devices >= MAX_LINUX_INPUT_DEVICES) + break; + + LinuxInput_ProbeDevice( device ); + } + } + else { + char *tsdev; + + /* Check for tslib device being used. */ + tsdev = getenv( "TSLIB_TSDEVICE" ); + + /* No devices specified. Try to guess some. */ + for (i=0; ifd < 0) { + usleep( 100000 ); + + if (data->index == 0) + LinuxInput_UpdateDevices(); + + continue; + } + + FD_ZERO( &set ); + FD_SET( data->fd, &set ); + + ret = LinuxInput_GetTimeout( data, &timeout ); + switch (ret) { + case DFB_TEMPUNAVAIL: + timeout.tv_sec = 0; + timeout.tv_usec = 2000000; + + status = select( data->fd + 1, &set, NULL, NULL, &timeout ); + break; + + case DFB_OK: { + struct timeval time; + + handle = true; + + gettimeofday( &time, NULL ); + + if (!timeout_passed( &timeout, &time )) { + timeout_sub( &timeout, &time ); + + status = select( data->fd + 1, &set, NULL, NULL, &timeout ); + break; + } + } + + default: + status = 0; + break; + } + + /* timeout? */ + if (status == 0) { + if (handle) + LinuxInput_HandleTimeout( data ); + + if (data->index == 0) + LinuxInput_UpdateDevices(); + + continue; + } + + if (status < 0) { + direct_thread_testcancel( thread ); + + if (errno != EINTR) + break; + } + else if (FD_ISSET( data->fd, &set )) { + int i; + int readlen; + struct input_event levt[64]; + + readlen = read( data->fd, levt, sizeof(levt) ); + if (readlen < 0) { + direct_thread_testcancel( thread ); + + if (errno != EINTR) { + if (errno != ENODEV) + D_PERROR( "LinuxInput: Error during read()!\n" ); + + LinuxInput_CloseDevice( data ); + } + } + else if (readlen > 0) { + D_DEBUG_AT( LinuxInput_Driver, "%s( '%s' )\n", __FUNCTION__, data->info.desc.name ); + + for (i=0; imouse_motion_compression && data->events.added && !dfb_config->max_axis_rate) + LinuxInput_FlushEvents( data ); + } + + D_PERROR( "linux_input thread died\n" ); + + return NULL; +} + +/**********************************************************************************************************************/ + +/* + * Fill device information. + * Queries the input device and tries to classify it. + */ +static void +get_device_info( int fd, + InputDeviceInfo *info, + bool *touchpad ) +{ + unsigned int num_keys = 0; + unsigned int num_ext_keys = 0; + unsigned int num_buttons = 0; + unsigned int num_rels = 0; + unsigned int num_abs = 0; + + unsigned long evbit[NBITS(EV_CNT)]; + unsigned long keybit[NBITS(KEY_CNT)]; + unsigned long relbit[NBITS(REL_CNT)]; + unsigned long absbit[NBITS(ABS_CNT)]; + + struct input_id devinfo; + + /* get device name */ + ioctl( fd, EVIOCGNAME(DFB_INPUT_DEVICE_DESC_NAME_LENGTH - 1), info->desc.name ); + + /* set device vendor */ + snprintf( info->desc.vendor, + DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "Linux" ); + + /* get event type bits */ + ioctl( fd, EVIOCGBIT(0, sizeof(evbit)), evbit ); + + if (test_bit( EV_KEY, evbit )) { + int i; + + /* get keyboard bits */ + ioctl( fd, EVIOCGBIT(EV_KEY, sizeof(keybit)), keybit ); + + /** count typical keyboard keys only */ + for (i=KEY_Q; i<=KEY_M; i++) + if (test_bit( i, keybit )) + num_keys++; + + for (i=KEY_OK; i= 2 && num_buttons) || (num_abs == 2 && (num_buttons == 1)))) + info->desc.type |= DIDTF_MOUSE; + else if (num_abs && num_buttons) /* Or a Joystick? */ + info->desc.type |= DIDTF_JOYSTICK; + + /* A Keyboard, do we have at least some letters? */ + if (num_keys > 20) { + info->desc.type |= DIDTF_KEYBOARD; + info->desc.caps |= DICAPS_KEYS; + } + + info->desc.min_keycode = 0; + info->desc.max_keycode = 127; + + /* A Remote Control? */ + if (num_ext_keys) { + info->desc.type |= DIDTF_REMOTE; + info->desc.caps |= DICAPS_KEYS; + } + + /* Buttons */ + if (num_buttons) { + info->desc.caps |= DICAPS_BUTTONS; + info->desc.max_button = DIBI_FIRST + num_buttons - 1; + } + + /* Axes */ + if (num_rels || num_abs) { + info->desc.caps |= DICAPS_AXES; + info->desc.max_axis = DIAI_FIRST + MAX(num_rels, num_abs) - 1; + } + + /* Decide which primary input device to be. */ + if (info->desc.type & DIDTF_KEYBOARD) + info->prefered_id = DIDID_KEYBOARD; + else if (info->desc.type & DIDTF_REMOTE) + info->prefered_id = DIDID_REMOTE; + else if (info->desc.type & DIDTF_JOYSTICK) + info->prefered_id = DIDID_JOYSTICK; + else if (info->desc.type & DIDTF_MOUSE) + info->prefered_id = DIDID_MOUSE; + else + info->prefered_id = DIDID_ANY; + + /* Get VID and PID information */ + ioctl( fd, EVIOCGID, &devinfo ); + + info->desc.vendor_id = devinfo.vendor; + info->desc.product_id = devinfo.product; +} + +static bool +check_device( const char *device, + InputDeviceInfo *ret_info ) +{ + int fd; + + D_DEBUG_AT( LinuxInput_Driver, "%s( %s )\n", __FUNCTION__, device ); + + /* Check if we are able to open the device */ + fd = open( device, O_RDWR ); + if (fd < 0) { + return false; + } + else { + bool touchpad; + + /* try to grab the device */ + if (dfb_config->linux_input_grab) { + /* 2.4 kernels don't have EVIOCGRAB so ignore EINVAL */ + if (ioctl( fd, EVIOCGRAB, 1 ) && errno != EINVAL) { + close( fd ); + return false; + } + } + + memset( ret_info, 0, sizeof(InputDeviceInfo) ); + + get_device_info( fd, ret_info, &touchpad ); + + if (dfb_config->linux_input_grab) + ioctl( fd, EVIOCGRAB, 0 ); + close( fd ); + + if (!dfb_config->linux_input_ir_only || + (ret_info->desc.type & DIDTF_REMOTE)) + return true; + } + + return false; +} + +/**********************************************************************************************************************/ +/**********************************************************************************************************************/ + +/* + * Return the number of available devices. + * Called once during initialization of DirectFB. + */ +static int +driver_get_available( void ) +{ + D_DEBUG_AT( LinuxInput_Driver, "%s()\n", __FUNCTION__ ); + +#ifdef LINUX_INPUT_USE_FBDEV + if (dfb_system_type() != CORE_FBDEV) + return 0; +#endif + + LinuxInput_UpdateDevices(); + + printf("================JK: get_available returns %d\n", num_devices); + return num_devices; +} + +/* + * Fill out general information about this driver. + * Called once during initialization of DirectFB. + */ +static void +driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf ( info->name, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "Linux Input Driver" ); + snprintf ( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, "directfb.org" ); + + info->version.major = 0; + info->version.minor = 1; +} + +/* + * Open the device, fill out information about it, + * allocate and fill private data, start input thread. + * Called during initialization, resuming or taking over mastership. + */ +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + int fd, ret; + unsigned long ledbit[NBITS(LED_CNT)]; + LinuxInputData *data; +#ifdef LINUX_INPUT_USE_FBDEV + FBDev *dfb_fbdev = dfb_system_data(); +#endif + bool touchpad; + + D_DEBUG_AT( LinuxInput_Driver, "%s( %d ) <- %s\n", __FUNCTION__, number, devices[number].device ); + + /* open device */ + fd = open( devices[number].device, O_RDWR ); + if (fd < 0) { + D_PERROR( "DirectFB/linux_input: could not open device" ); + return DFB_INIT; + } + + /* grab device */ + if (dfb_config->linux_input_grab) { + ret = ioctl( fd, EVIOCGRAB, 1 ); + /* 2.4 kernels don't have EVIOCGRAB so ignore EINVAL */ + if (ret && errno != EINVAL) { + D_PERROR( "DirectFB/linux_input: could not grab device" ); + close( fd ); + return DFB_INIT; + } + } + + /* fill device info structure */ + get_device_info( fd, info, &touchpad ); + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(LinuxInputData) ); + if (!data) { + if (dfb_config->linux_input_grab) + ioctl( fd, EVIOCGRAB, 0 ); + close( fd ); + return D_OOM(); + } + + data->index = number; + data->fd = fd; + data->device = device; + data->info = *info; +#ifdef LINUX_INPUT_USE_FBDEV + if (dfb_system_type() == CORE_FBDEV) + data->vt = dfb_fbdev->vt; +#endif + data->touchpad = touchpad; + + /* check if the device has LEDs */ + ret = ioctl( fd, EVIOCGBIT(EV_LED, sizeof(ledbit)), ledbit ); + if (ret < 0) + D_PERROR( "DirectFB/linux_input: could not get LED bits" ); + else + data->has_leds = test_bit( LED_SCROLLL, ledbit ) || + test_bit( LED_NUML, ledbit ) || + test_bit( LED_CAPSL, ledbit ); + + if (data->has_leds) { + /* get LED state */ + ret = ioctl( fd, EVIOCGLED(sizeof(data->led_state)), data->led_state ); + if (ret < 0) { + D_PERROR( "DirectFB/linux_input: could not get LED state" ); + if (dfb_config->linux_input_grab) + ioctl( fd, EVIOCGRAB, 0 ); + close( fd ); + D_FREE( data ); + return DFB_INIT; + } + + /* turn off LEDs */ + set_led( data, LED_SCROLLL, 0 ); + set_led( data, LED_NUML, 0 ); + set_led( data, LED_CAPSL, 0 ); + } + + data->sensitivity = 0x10000; + + devices[number].data = data; + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, linux_input_EventThread, data, "Linux Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Obtain information about an axis (only absolute axis so far). + */ +static DFBResult +driver_get_axis_info( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceAxisIdentifier axis, + DFBInputDeviceAxisInfo *ret_info ) +{ + LinuxInputData *data = (LinuxInputData*) driver_data; + + if (data->touchpad) + return DFB_OK; + + if (axis <= ABS_PRESSURE && axis < DIAI_LAST) { + unsigned long absbit[NBITS(ABS_CNT)]; + + /* check if we have an absolute axes */ + ioctl( data->fd, EVIOCGBIT(EV_ABS, sizeof(absbit)), absbit ); + + if (test_bit (axis, absbit)) { + struct input_absinfo absinfo; + + if (ioctl( data->fd, EVIOCGABS(axis), &absinfo ) == 0 && + (absinfo.minimum || absinfo.maximum)) { + ret_info->flags |= DIAIF_ABS_MIN | DIAIF_ABS_MAX; + ret_info->abs_min = absinfo.minimum; + ret_info->abs_max = absinfo.maximum; + } + } + } + + return DFB_OK; +} + +/* + * Fetch one entry from the kernel keymap. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ +#ifdef LINUX_INPUT_USE_FBDEV + LinuxInputData *data = (LinuxInputData*) driver_data; + int code = entry->code; + unsigned short value; + DFBInputDeviceKeyIdentifier identifier; + + if (!data->vt) + return DFB_UNSUPPORTED; + + /* fetch the base level */ + value = keyboard_read_value( driver_data, K_NORMTAB, code ); + + /* get the identifier for basic mapping */ + identifier = keyboard_get_identifier( code, value ); + + /* is CapsLock effective? */ + if (KTYP(value) == KT_LETTER) + entry->locks |= DILS_CAPS; + + /* is NumLock effective? */ + if (identifier >= DIKI_KP_DECIMAL && identifier <= DIKI_KP_9) + entry->locks |= DILS_NUM; + + /* write identifier to entry */ + entry->identifier = identifier; + + /* write base level symbol to entry */ + entry->symbols[DIKSI_BASE] = keyboard_get_symbol( code, value, DIKSI_BASE ); + + + /* fetch the shifted base level */ + value = keyboard_read_value( driver_data, K_SHIFTTAB, entry->code ); + + /* write shifted base level symbol to entry */ + entry->symbols[DIKSI_BASE_SHIFT] = keyboard_get_symbol( code, value, + DIKSI_BASE_SHIFT ); + + + /* fetch the alternative level */ + value = keyboard_read_value( driver_data, K_ALTTAB, entry->code ); + + /* write alternative level symbol to entry */ + entry->symbols[DIKSI_ALT] = keyboard_get_symbol( code, value, DIKSI_ALT ); + + + /* fetch the shifted alternative level */ + value = keyboard_read_value( driver_data, K_ALTSHIFTTAB, entry->code ); + + /* write shifted alternative level symbol to entry */ + entry->symbols[DIKSI_ALT_SHIFT] = keyboard_get_symbol( code, value, + DIKSI_ALT_SHIFT ); + + return DFB_OK; +#else + return DFB_UNSUPPORTED; +#endif +} + +/* + * Obtain information about an axis (only absolute axis so far). + */ +static DFBResult +driver_set_sensitivity( CoreInputDevice *device, + void *driver_data, + int sensitivity ) +{ + LinuxInputData *data = (LinuxInputData*) driver_data; + + data->sensitivity = sensitivity; + + return DFB_OK; +} + +/* + * End thread, close device and free private data. + */ +static void +driver_close_device( void *driver_data ) +{ + LinuxInputData *data = (LinuxInputData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + if (data->has_leds) { + /* restore LED state */ + set_led( data, LED_SCROLLL, test_bit( LED_SCROLLL, data->led_state ) ); + set_led( data, LED_NUML, test_bit( LED_NUML, data->led_state ) ); + set_led( data, LED_CAPSL, test_bit( LED_CAPSL, data->led_state ) ); + } + + /* release device */ + if (dfb_config->linux_input_grab) + ioctl( data->fd, EVIOCGRAB, 0 ); + + /* close file */ + close( data->fd ); + + /* free private data */ + D_FREE( data ); +} + +/**********************************************************************************************************************/ + +static bool +timeout_is_set( const struct timeval *timeout ) +{ + return timeout->tv_sec || timeout->tv_usec; +} + +static bool +timeout_passed( const struct timeval *timeout, const struct timeval *current ) +{ + return !timeout_is_set( timeout ) || + current->tv_sec > timeout->tv_sec || + (current->tv_sec == timeout->tv_sec && current->tv_usec > timeout->tv_usec); +} + +static void +timeout_clear( struct timeval *timeout ) +{ + timeout->tv_sec = 0; + timeout->tv_usec = 0; +} + +static void +timeout_add( struct timeval *timeout, const struct timeval *add ) +{ + timeout->tv_sec += add->tv_sec; + timeout->tv_usec += add->tv_usec; + while (timeout->tv_usec >= 1000000) { + timeout->tv_sec++; + timeout->tv_usec -= 1000000; + } +} + +static void +timeout_sub( struct timeval *timeout, const struct timeval *sub ) +{ + timeout->tv_sec -= sub->tv_sec; + timeout->tv_usec -= sub->tv_usec; + while (timeout->tv_usec < 0) { + timeout->tv_sec--; + timeout->tv_usec += 1000000; + } +} + +/**********************************************************************************************************************/ + +static void +touchpad_fsm_init( struct touchpad_fsm_state *state ) +{ + state->x.old = -1; + state->y.old = -1; + state->fsm_state = TOUCHPAD_FSM_START; + timeout_clear( &state->timeout ); +} + +static int +touchpad_normalize( const struct touchpad_axis *axis, int value ) +{ + return ((value - axis->min) << 9) / (axis->max - axis->min); +} + +static int +touchpad_translate( struct touchpad_fsm_state *state, + const struct input_event *levt, + DFBInputEvent *devt ) +{ + struct touchpad_axis *axis = NULL; + int abs, rel; + + devt->flags = DIEF_TIMESTAMP | DIEF_AXISREL; + devt->timestamp = levt->time; + devt->type = DIET_AXISMOTION; + + switch (levt->code) { + case ABS_X: + axis = &state->x; + devt->axis = DIAI_X; + break; + case ABS_Y: + axis = &state->y; + devt->axis = DIAI_Y; + break; + default: + return 0; + } + + abs = touchpad_normalize( axis, levt->value ); + if (axis->old == -1) + axis->old = abs; + rel = abs - axis->old; + +#define ACCEL_THRESHOLD 25 +#define ACCEL_NUM 3 +#define ACCEL_DENOM 1 + + if (rel > ACCEL_THRESHOLD) + rel += (rel - ACCEL_THRESHOLD) * ACCEL_NUM / ACCEL_DENOM; + else if (rel < -ACCEL_THRESHOLD) + rel += (rel + ACCEL_THRESHOLD) * ACCEL_NUM / ACCEL_DENOM; + + axis->old = abs; + devt->axisrel = rel; + + return 1; +} + +static bool +touchpad_finger_landing( const struct input_event *levt ) +{ + return levt->type == EV_KEY && levt->code == BTN_TOUCH && levt->value == 1; +} + +static bool +touchpad_finger_leaving( const struct input_event *levt ) +{ + return levt->type == EV_KEY && levt->code == BTN_TOUCH && levt->value == 0; +} + +static bool +touchpad_finger_moving( const struct input_event *levt ) +{ + return levt->type == EV_ABS && (levt->code == ABS_X || levt->code == ABS_Y); +} + +/* + * This FSM takes into accout finger landing on touchpad and leaving and + * translates absolute DFBInputEvent into a relative one + */ +static int +touchpad_fsm( struct touchpad_fsm_state *state, + const struct input_event *levt, + DFBInputEvent *devt ) +{ + struct timeval timeout = { 0, 125000 }; + + /* select() timeout? */ + if (!levt) { + /* Check if button release is due. */ + if (state->fsm_state == TOUCHPAD_FSM_DRAG_START) { + devt->flags = DIEF_TIMESTAMP; + devt->timestamp = state->timeout; /* timeout of current time? */ + devt->type = DIET_BUTTONRELEASE; + devt->button = DIBI_FIRST; + + touchpad_fsm_init( state ); + return 1; + } + + /* Already passed, clear it so select() won't return until there is something to do. */ + timeout_clear( &state->timeout ); + return 0; + } + + /* More or less ignore these events for now */ + if ((levt->type == EV_SYN && levt->code == SYN_REPORT) || + (levt->type == EV_ABS && levt->code == ABS_PRESSURE) || + (levt->type == EV_ABS && levt->code == ABS_TOOL_WIDTH) || + (levt->type == EV_KEY && levt->code == BTN_TOOL_FINGER) || + (levt->type == EV_KEY && levt->code == BTN_TOOL_DOUBLETAP) || + (levt->type == EV_KEY && levt->code == BTN_TOOL_TRIPLETAP)) { + + /* Check if button release is due. */ + if (state->fsm_state == TOUCHPAD_FSM_DRAG_START && + timeout_passed( &state->timeout, &levt->time )) { + devt->flags = DIEF_TIMESTAMP; + devt->timestamp = state->timeout; /* timeout of levt->time? */ + devt->type = DIET_BUTTONRELEASE; + devt->button = DIBI_FIRST; + + touchpad_fsm_init( state ); + return 1; + } + + return 0; + } + + /* Use translate_event() for other events. */ + if (!(levt->type == EV_KEY && levt->code == BTN_TOUCH) && + !(levt->type == EV_ABS && (levt->code == ABS_X || levt->code == ABS_Y))) + return -1; + + switch (state->fsm_state) { + case TOUCHPAD_FSM_START: + if (touchpad_finger_landing( levt )) { + state->fsm_state = TOUCHPAD_FSM_MAIN; + state->timeout = levt->time; + timeout_add( &state->timeout, &timeout ); + } + return 0; + + case TOUCHPAD_FSM_MAIN: + if (touchpad_finger_moving( levt )) { + if (1){//timeout_passed( &state->timeout, &levt->time )) { + //timeout_clear( &state->timeout ); + return touchpad_translate( state, levt, devt ); + } + } + else if (touchpad_finger_leaving( levt )) { + if (!timeout_passed( &state->timeout, &levt->time )) { + devt->flags = DIEF_TIMESTAMP; + devt->timestamp = levt->time; + devt->type = DIET_BUTTONPRESS; + devt->button = DIBI_FIRST; + + touchpad_fsm_init( state ); + state->fsm_state = TOUCHPAD_FSM_DRAG_START; + state->timeout = levt->time; + timeout_add( &state->timeout, &timeout ); + return 1; + } + else { + touchpad_fsm_init( state ); + } + } + return 0; + + case TOUCHPAD_FSM_DRAG_START: + if (timeout_passed( &state->timeout, &levt->time )){ + devt->flags = DIEF_TIMESTAMP; + devt->timestamp = state->timeout; /* timeout of levt->time? */ + devt->type = DIET_BUTTONRELEASE; + devt->button = DIBI_FIRST; + + touchpad_fsm_init(state); + return 1; + } + else { + if (touchpad_finger_landing( levt )) { + state->fsm_state = TOUCHPAD_FSM_DRAG_MAIN; + state->timeout = levt->time; + timeout_add( &state->timeout, &timeout ); + } + } + return 0; + + case TOUCHPAD_FSM_DRAG_MAIN: + if (touchpad_finger_moving( levt )) { + if (1){//timeout_passed( &state->timeout, &levt->time )) { + //timeout_clear( &state->timeout ); + return touchpad_translate( state, levt, devt ); + } + } + else if (touchpad_finger_leaving( levt )) { + devt->flags = DIEF_TIMESTAMP; + devt->timestamp = levt->time; + devt->type = DIET_BUTTONRELEASE; + devt->button = DIBI_FIRST; + + touchpad_fsm_init( state ); + return 1; + } + return 0; + + default: + return 0; + } + + return 0; +} diff --git a/Source/DirectFB/inputdrivers/lirc/Makefile.am b/Source/DirectFB/inputdrivers/lirc/Makefile.am new file mode 100755 index 0000000..c4b2f94 --- /dev/null +++ b/Source/DirectFB/inputdrivers/lirc/Makefile.am @@ -0,0 +1,32 @@ +## Makefile.am for DirectFB/inputdrivers/lirc + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src \ + -I$(top_builddir)/include + +lirc_LTLIBRARIES = libdirectfb_lirc.la + +if BUILD_STATIC +lirc_DATA = $(lirc_LTLIBRARIES:.la=.o) +endif + +lircdir = $(MODULEDIR)/inputdrivers + +libdirectfb_lirc_la_SOURCES = \ + lirc.c + +libdirectfb_lirc_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_lirc_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/lirc/Makefile.in b/Source/DirectFB/inputdrivers/lirc/Makefile.in new file mode 100755 index 0000000..6bc39d3 --- /dev/null +++ b/Source/DirectFB/inputdrivers/lirc/Makefile.in @@ -0,0 +1,593 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/lirc +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(lircdir)" "$(DESTDIR)$(lircdir)" +lircLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lirc_LTLIBRARIES) +libdirectfb_lirc_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_lirc_la_OBJECTS = lirc.lo +libdirectfb_lirc_la_OBJECTS = $(am_libdirectfb_lirc_la_OBJECTS) +libdirectfb_lirc_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_lirc_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_lirc_la_SOURCES) +DIST_SOURCES = $(libdirectfb_lirc_la_SOURCES) +lircDATA_INSTALL = $(INSTALL_DATA) +DATA = $(lirc_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src \ + -I$(top_builddir)/include + +lirc_LTLIBRARIES = libdirectfb_lirc.la +@BUILD_STATIC_TRUE@lirc_DATA = $(lirc_LTLIBRARIES:.la=.o) +lircdir = $(MODULEDIR)/inputdrivers +libdirectfb_lirc_la_SOURCES = \ + lirc.c + +libdirectfb_lirc_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_lirc_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/lirc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/lirc/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-lircLTLIBRARIES: $(lirc_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(lircdir)" || $(MKDIR_P) "$(DESTDIR)$(lircdir)" + @list='$(lirc_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(lircLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(lircdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(lircLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(lircdir)/$$f"; \ + else :; fi; \ + done + +uninstall-lircLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lirc_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(lircdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(lircdir)/$$p"; \ + done + +clean-lircLTLIBRARIES: + -test -z "$(lirc_LTLIBRARIES)" || rm -f $(lirc_LTLIBRARIES) + @list='$(lirc_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_lirc.la: $(libdirectfb_lirc_la_OBJECTS) $(libdirectfb_lirc_la_DEPENDENCIES) + $(libdirectfb_lirc_la_LINK) -rpath $(lircdir) $(libdirectfb_lirc_la_OBJECTS) $(libdirectfb_lirc_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lirc.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-lircDATA: $(lirc_DATA) + @$(NORMAL_INSTALL) + test -z "$(lircdir)" || $(MKDIR_P) "$(DESTDIR)$(lircdir)" + @list='$(lirc_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(lircDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(lircdir)/$$f'"; \ + $(lircDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(lircdir)/$$f"; \ + done + +uninstall-lircDATA: + @$(NORMAL_UNINSTALL) + @list='$(lirc_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(lircdir)/$$f'"; \ + rm -f "$(DESTDIR)$(lircdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(lircdir)" "$(DESTDIR)$(lircdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-lircLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-lircDATA install-lircLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-lircDATA uninstall-lircLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-lircLTLIBRARIES ctags 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-lircDATA \ + install-lircLTLIBRARIES 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 uninstall uninstall-am uninstall-lircDATA \ + uninstall-lircLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/lirc/lirc.c b/Source/DirectFB/inputdrivers/lirc/lirc.c new file mode 100755 index 0000000..edb6957 --- /dev/null +++ b/Source/DirectFB/inputdrivers/lirc/lirc.c @@ -0,0 +1,353 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + + +DFB_INPUT_DRIVER( lirc ) + +static DirectFBKeySymbolNames(keynames); + +static bool keynames_sorted = false; + +typedef struct { + CoreInputDevice *device; + DirectThread *thread; + + int fd; +} LircData; + + +static int keynames_compare (const void *key, + const void *base) +{ + return strcmp ((const char *) key, + ((const struct DFBKeySymbolName *) base)->name); +} + +static int keynames_sort_compare (const void *d1, + const void *d2) +{ + return strcmp (((const struct DFBKeySymbolName *) d1)->name, + ((const struct DFBKeySymbolName *) d2)->name); +} + +static DFBInputDeviceKeySymbol lirc_parse_line(const char *line) +{ + struct DFBKeySymbolName *symbol_name; + char *s, *name; + + if (!keynames_sorted) { + qsort ( keynames, + D_ARRAY_SIZE( keynames ), + sizeof(keynames[0]), + (__compar_fn_t) keynames_sort_compare ); + keynames_sorted = true; + } + + s = strchr( line, ' ' ); + if (!s || !s[1]) + return DIKS_NULL; + + s = strchr( ++s, ' ' ); + if (!s|| !s[1]) + return DIKS_NULL; + + name = ++s; + + s = strchr( name, ' ' ); + if (s) + *s = '\0'; + + switch (strlen( name )) { + case 0: + return DIKS_NULL; + case 1: + return (DFBInputDeviceKeySymbol) name[0]; + default: + symbol_name = bsearch( name, keynames, + D_ARRAY_SIZE( keynames ), + sizeof(keynames[0]), + (__compar_fn_t) keynames_compare ); + if (symbol_name) + return symbol_name->symbol; + break; + } + + return DIKS_NULL; +} + +static void* +lircEventThread( DirectThread *thread, void *driver_data ) +{ + int repeats = 0; + DFBInputDeviceKeySymbol last = DIKS_NULL; + LircData *data = (LircData*) driver_data; + + while (true) { + struct timeval tv; + fd_set set; + int result; + int readlen; + char buf[128]; + DFBInputEvent evt; + DFBInputDeviceKeySymbol symbol; + + FD_ZERO(&set); + FD_SET(data->fd,&set); + + tv.tv_sec = 0; + tv.tv_usec = 200000; + + result = select (data->fd+1, &set, NULL, NULL, &tv); + + switch (result) { + case -1: + /* error */ + if (errno == EINTR) + continue; + + D_PERROR("DirectFB/LIRC: select() failed\n"); + return NULL; + + case 0: + /* timeout, release last key */ + if (last != DIKS_NULL) { + evt.flags = DIEF_KEYSYMBOL; + evt.type = DIET_KEYRELEASE; + evt.key_symbol = last; + + dfb_input_dispatch( data->device, &evt ); + + last = DIKS_NULL; + } + continue; + + default: + /* data arrived */ + break; + } + + direct_thread_testcancel( thread ); + + /* read data */ + readlen = read( data->fd, buf, 128 ); + if (readlen < 1) + continue; + + /* get new key */ + symbol = lirc_parse_line( buf ); + if (symbol == DIKS_NULL) + continue; + + /* repeated key? */ + if (symbol == last) { + /* swallow the first three repeats */ + if (++repeats < 4) + continue; + } + else { + /* reset repeat counter */ + repeats = 0; + + /* release previous key if not released yet */ + if (last != DIKS_NULL) { + evt.flags = DIEF_KEYSYMBOL; + evt.type = DIET_KEYRELEASE; + evt.key_symbol = last; + + dfb_input_dispatch( data->device, &evt ); + } + } + + /* send the press event */ + evt.flags = DIEF_KEYSYMBOL; + evt.type = DIET_KEYPRESS; + evt.key_symbol = symbol; + + dfb_input_dispatch( data->device, &evt ); + + /* remember last key */ + last = symbol; + } + + return NULL; +} + +/* exported symbols */ + +static int +driver_get_available( void ) +{ + int fd; + struct sockaddr_un addr; + + addr.sun_family = AF_UNIX; + direct_snputs( addr.sun_path, "/dev/lircd", sizeof(addr.sun_path) ); + + fd = socket( PF_UNIX, SOCK_STREAM, 0 ); + if (fd < 0) + return 0; + + if (connect( fd, (struct sockaddr*)&addr, sizeof(addr) ) < 0) { + close( fd ); + return 0; + } + + close( fd ); + + return 1; +} + +static void +driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf( info->name, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "LIRC Driver" ); + + snprintf( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, "directfb.org" ); + + info->version.major = 0; + info->version.minor = 2; +} + +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + int fd; + LircData *data; + struct sockaddr_un sa; + + /* create socket */ + sa.sun_family = AF_UNIX; + direct_snputs( sa.sun_path, "/dev/lircd", sizeof(sa.sun_path) ); + + fd = socket( PF_UNIX, SOCK_STREAM, 0 ); + if (fd < 0) { + D_PERROR( "DirectFB/LIRC: socket" ); + return DFB_INIT; + } + + /* initiate connection */ + if (connect( fd, (struct sockaddr*)&sa, sizeof(sa) ) < 0) { + D_PERROR( "DirectFB/LIRC: connect" ); + close( fd ); + return DFB_INIT; + } + + /* fill driver info structure */ + snprintf( info->desc.name, + DFB_INPUT_DEVICE_DESC_NAME_LENGTH, "LIRC Device" ); + + snprintf( info->desc.vendor, + DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "Unknown" ); + + info->prefered_id = DIDID_REMOTE; + + info->desc.type = DIDTF_REMOTE; + info->desc.caps = DICAPS_KEYS; + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(LircData) ); + if (!data) { + close( fd ); + return D_OOM(); + } + + data->fd = fd; + data->device = device; + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, lircEventThread, data, "LiRC Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ + return DFB_UNSUPPORTED; +} + +static void +driver_close_device( void *driver_data ) +{ + LircData *data = (LircData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + /* close socket */ + close( data->fd ); + + /* free private data */ + D_FREE( data ); +} + diff --git a/Source/DirectFB/inputdrivers/mutouch/Makefile.am b/Source/DirectFB/inputdrivers/mutouch/Makefile.am new file mode 100755 index 0000000..513cd1b --- /dev/null +++ b/Source/DirectFB/inputdrivers/mutouch/Makefile.am @@ -0,0 +1,30 @@ +## Makefile.am for DirectFB/inputdrivers/microtouch + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_mutouch.la + +if BUILD_STATIC +input_DATA = $(input_LTLIBRARIES:.la=.o) +endif + +inputdir = $(MODULEDIR)/inputdrivers + +libdirectfb_mutouch_la_SOURCES = mutouch.c + +libdirectfb_mutouch_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_mutouch_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/mutouch/Makefile.in b/Source/DirectFB/inputdrivers/mutouch/Makefile.in new file mode 100755 index 0000000..544ea61 --- /dev/null +++ b/Source/DirectFB/inputdrivers/mutouch/Makefile.in @@ -0,0 +1,590 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/mutouch +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)" +inputLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(input_LTLIBRARIES) +libdirectfb_mutouch_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_mutouch_la_OBJECTS = mutouch.lo +libdirectfb_mutouch_la_OBJECTS = $(am_libdirectfb_mutouch_la_OBJECTS) +libdirectfb_mutouch_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_mutouch_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_mutouch_la_SOURCES) +DIST_SOURCES = $(libdirectfb_mutouch_la_SOURCES) +inputDATA_INSTALL = $(INSTALL_DATA) +DATA = $(input_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_mutouch.la +@BUILD_STATIC_TRUE@input_DATA = $(input_LTLIBRARIES:.la=.o) +inputdir = $(MODULEDIR)/inputdrivers +libdirectfb_mutouch_la_SOURCES = mutouch.c +libdirectfb_mutouch_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_mutouch_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/mutouch/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/mutouch/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-inputLTLIBRARIES: $(input_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + else :; fi; \ + done + +uninstall-inputLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(inputdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(inputdir)/$$p"; \ + done + +clean-inputLTLIBRARIES: + -test -z "$(input_LTLIBRARIES)" || rm -f $(input_LTLIBRARIES) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_mutouch.la: $(libdirectfb_mutouch_la_OBJECTS) $(libdirectfb_mutouch_la_DEPENDENCIES) + $(libdirectfb_mutouch_la_LINK) -rpath $(inputdir) $(libdirectfb_mutouch_la_OBJECTS) $(libdirectfb_mutouch_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mutouch.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-inputDATA: $(input_DATA) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(inputDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(inputDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + done + +uninstall-inputDATA: + @$(NORMAL_UNINSTALL) + @list='$(input_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(inputdir)/$$f'"; \ + rm -f "$(DESTDIR)$(inputdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-inputLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-inputDATA install-inputLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-inputDATA uninstall-inputLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-inputLTLIBRARIES clean-libtool ctags 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-inputDATA \ + install-inputLTLIBRARIES 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 uninstall uninstall-am uninstall-inputDATA \ + uninstall-inputLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/mutouch/mutouch.c b/Source/DirectFB/inputdrivers/mutouch/mutouch.c new file mode 100755 index 0000000..79c278f --- /dev/null +++ b/Source/DirectFB/inputdrivers/mutouch/mutouch.c @@ -0,0 +1,615 @@ +/* + (c) Copyright 2000-2002 Fulgid Technology Co., Ltd. + + All rights reserved. + + Written by Simon Ueng + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + This driver is a re-write from the MuTouch driver provided in XFree86. + Extended options in the MuTouch firmware are not used as it wasn't + an issue during the writing of this driver. + Baudrate has also been rewritting to automatically adjust to 19200 if + its support else it uses 9600. + + Feel free to change according to your needs, but changing both + MuT_MINX as well as MuT_MINY is required to adjust the orientation + of the touchscreen. We've had numerous occasions where the one + touchscreen was installed in a different orientation than others. + Also don't forget to adjust the MuT_SCREENWIDTH and MuT_SCREENHEIGHT + for the appropriate screen dimension. + + Not much time has been spent writing this driver therefore expect errors. + Calibration process has also been omitted since there are applications + to do the calibration process. + + Lastly, please don't email me regarding technical informations. I + don't work for 3M. But if you have any new ideas on improving this + driver, please don't hesitate to share it with me. + */ +/* + * Jacques Luder j.luder@laposte.net + * Baudrate adjust now realy working ! + * version 0.3 10/09/2006 Jacques Luder j.luder@laposte.net + * Can now work also with a keyspan USB-Serial line. + * Can start OK even if someone touch the screen during probing. + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include + +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + + +DFB_INPUT_DRIVER( mutouch ) + + +#define BAUDRATE B9600 +#define OPTIMAL_BAUDRATE B19200 +#define MAX_TIMEOUT 5 + +#define MuT_REPORT_SIZE 5 +#define MuT_PACKET_SIZE 10 +#define MuT_SCREENWIDTH 4096 +#define MuT_SCREENHEIGHT 4096 +#define MuT_MINX 0 +#define MuT_MINY 0 + +#define MuT_LEAD_BYTE 0x01 +#define MuT_TRAIL_BYTE 0x0d + + +#define ERROR_NOT_SUITABLE -1110 /* The touchpanel firmware is not + suitable for IMP2001 */ +#define ERROR_NOT_FOUND -1111 /* Touchpanel not found */ +#define ERROR_INIT -1112 /* Error occurred while initializing */ + +#define MUT_PANEL_TOUCH 0x01 +#define MUT_PANEL_UNTOUCH 0x00 + + +/* Commands */ +#define MuT_RESET "R" +#define MuT_AUTOBAUD_DISABLE "AD" +#define MuT_RESTORE_DEFAULTS "RD" +#define MuT_QUERY "Z" +#define MuT_FORMAT_TABLET "FT" +#define MuT_FORMAT_RAW "FR" +#define MuT_CALIBRATE_RAW "CR" +#define MuT_CALIBRATE_EXT "CX" +#define MuT_OUTPUT_IDENT "OI" +#define MuT_UNIT_TYPE "UT" +#define MuT_FINGER_ONLY "FO" +#define MuT_PEN_ONLY "PO" +#define MuT_PEN_FINGER "PF" +#define MuT_MODE_STREAM "MS" +#define MuT_MODE_DOWN_UP "MDU" + +/* Command reply */ +#define MuT_OK '0' +#define MuT_ERROR '1' + +/* Offsets in status byte of touch and motion reports */ +#define MuT_WHICH_DEVICE 0x20 +#define MuT_CONTACT 0x40 + +/* Identity and friends */ +#define MuT_SMT3_IDENT "Q1" +#define MuT_THRU_GLASS_IDENT "T1" + +/* Event mask */ +#define MuT_PANEL_TOUCH_MASK 0x40 +#define MuT_PANEL_SYNC_MASK 0x80 + +typedef struct __MuTData__ { + int fd; + DirectThread *thread; + CoreInputDevice *device; + unsigned short x; + unsigned short y; + unsigned short screen_width; + unsigned short screen_height; + unsigned short min_x; + unsigned short min_y; + unsigned char action; +} MuTData; + +/* Global Variables */ +static unsigned char packet[MuT_PACKET_SIZE]; + + +static inline void __mdelay(unsigned int msec) +{ + struct timespec delay; + + delay.tv_sec = 0; + delay.tv_nsec = msec * 1000000; + nanosleep (&delay, NULL); +} + +static inline void MuTSendPacket(int file, char *packet, unsigned char len) +{ + unsigned char tmp_packet[MuT_PACKET_SIZE]; + + direct_memcpy (&tmp_packet[1], packet, len); + *tmp_packet = MuT_LEAD_BYTE; + tmp_packet[len + 1] = MuT_TRAIL_BYTE; + write (file, tmp_packet, len + 2); +} + +static inline void MuTReadPacket(int file, unsigned char *packet) +{ + int n = 0; + + while ( n < MuT_REPORT_SIZE ) { + read( file, &packet[n], 1 ); + if ( (packet[0] & MuT_PANEL_SYNC_MASK) != 0) { + n++; + } + } +} + +static int MuTSetToOptimalCTRL(int file, unsigned long baud) +{ + unsigned char packet[3]={0,0,0}; + struct termios options; + struct termios save_options; + /* + * We are now in a mode who "works" but may be not the good one ! + * So we will make a test if a "good" mode works fine ... + */ + + tcgetattr(file, &options); + tcgetattr(file, &save_options); // Save mode who works. + /* + * Send a command to change to suitable mode. + */ + switch (baud) { + case B19200: + MuTSendPacket (file, "PN811", 5); + break; + case B9600: + MuTSendPacket (file, "PN812", 5); + break; + } + // Note answer from driver will be lost ! there is no way to catch it with some + // USB-Serial device. we have only to wait ! + __mdelay (20); + + /* + * We can't work on CS7 mode messages format are not the same ! + */ + options.c_cflag = CS8 | CLOCAL | CREAD; + /* + * POSIX says speed is ONLY here ! + */ + cfsetospeed( &options, baud); + cfsetispeed( &options, 0); // Same as output. + + tcsetattr (file, TCSANOW, &options); + __mdelay (100); + tcflush (file, TCIFLUSH); + /* + * With some USB-Serial device flush may occurs after sending message and answer from driver + * may be lost ! ... so we wait ! + */ + __mdelay (100); + + switch (baud) { + case B19200: + MuTSendPacket (file, "PN811", 5); + break; + case B9600: + MuTSendPacket (file, "PN812", 5); + break; + } + /* + * note if someone touch screen, we have also to strip "touch" message by testing MuT_LEAD_BYTE. + */ + __mdelay (100); + int n = 0; + while ( n <3 ) { + if (read( file, &packet[n], 1 ) <=0) + break; + if ( packet[n] == MuT_LEAD_BYTE ) { // new start + n = 0; + packet[0] = MuT_LEAD_BYTE; + } + if ( (n==1) && (packet[1] != MuT_OK)) { + n = 0; + packet[0]= 0; + } + if ( (n==2) && (packet[2] != MuT_TRAIL_BYTE) ) { + n = 0; + packet[0]= 0; + } + if ( packet[0] == MuT_LEAD_BYTE) + n++; + } + + if ( n == 3 ) { + /* Unset O_NONBLOCK */ + int flags; + flags = fcntl( file, F_GETFL ); + flags &= ~O_NONBLOCK; + fcntl( file, F_SETFL, flags ); + /* Unset VTIME */ + options.c_cc[VMIN] = 1; + options.c_cc[VTIME] = 0; + tcsetattr (file, TCSANOW, &options); + __mdelay (100); + + return 1; // OK + } + // KO return to old termios options. + tcsetattr (file, TCSANOW, &save_options); + __mdelay (100); + return 0; +} + + +static int MuTPollDevice(char *device) +{ + int file; + struct termios options; + unsigned char i, m; + unsigned char packet[MuT_PACKET_SIZE]; + unsigned long baud[2] = {B9600, B19200}; + unsigned long misc[2] = {CS8, CS7 | CSTOPB}; + + file = open (device, O_RDWR | O_NOCTTY); + + /* Set O_NONBLOCK */ + int flags; + flags = fcntl( file, F_GETFL ); + flags |= O_NONBLOCK; + fcntl( file, F_SETFL, flags ); + + + /* Make raw I/O */ + memset (&options, 0, sizeof (struct termios)); + + /* cfmakeraw(&options) */ + options.c_cc[VMIN] = 0; + options.c_cc[VTIME] = 10; + + /* loop through the bauds */ + for (i = 0; i < 2; i++) { + /* loop through the misc configs */ + for (m = 0; m < 2; m++) { + options.c_cflag = misc[m] | CLOCAL | CREAD; + /* + * POSIX + */ + cfsetospeed( &options, baud[i]); + cfsetispeed( &options, 0); + tcsetattr (file, TCSANOW, &options); + /* wait for some USB-Serial device */ + __mdelay (100); + tcflush (file, TCIFLUSH); + __mdelay (100); + + MuTSendPacket (file, MuT_QUERY, strlen (MuT_QUERY)); + /* we are in O_NONBLOCK need wait before read */ + __mdelay (100); + + int n = 0; + while ( n <3 ) { + if (read( file, &packet[n], 1 ) <=0) + break; + if ( packet[n] == MuT_LEAD_BYTE ) { // new start + n = 0; + packet[0] = MuT_LEAD_BYTE; + } + if ( (n==1) && (packet[1] != MuT_OK)) { // false start + n = 0; + packet[0]= 0; + } + if ( (n==2) && (packet[2] != MuT_TRAIL_BYTE) ) { // false start + n = 0; + packet[0]= 0; + } + if ( packet[0] == MuT_LEAD_BYTE) + n++; + } + + if ( n == 3 ) { + + + if (MuTSetToOptimalCTRL (file, B19200)) { + return file; + } + else if (MuTSetToOptimalCTRL (file, B9600)) { + return file; + } + else return ERROR_NOT_SUITABLE; + } + } + } + close(file); + return ERROR_NOT_FOUND; +} + +static int MuTInitCmd(int file, char *cmd) +{ + unsigned char timeout = 0; + unsigned char packet[MuT_PACKET_SIZE]; + + do { + MuTSendPacket (file, cmd, strlen (cmd)); + + /* + * Strip out 'touch" message + */ + int n = 0; + while ( n <3 ) { + if (read( file, &packet[n], 1 ) <=0) + break; + if ( packet[0] == MuT_LEAD_BYTE) + n++; + } + + timeout++; + if (timeout >= MAX_TIMEOUT) + return ERROR_INIT; + } while (packet[1] != MuT_OK); + + return 1; +} + +static inline int MuTInitialize(int file) +{ + if (!MuTInitCmd (file, MuT_RESET)) + return 0; + if (!MuTInitCmd (file, MuT_FINGER_ONLY)) + return 0; + if (!MuTInitCmd (file, MuT_MODE_DOWN_UP)) + return 0; + if (!MuTInitCmd (file, MuT_FORMAT_TABLET)) + return 0; + + return 1; +} + +static int MuTOpenDevice(char *device) +{ + int fd; + int res; + + fd = MuTPollDevice (device); + if ((res = MuTInitialize (fd)) == 0) { + close (fd); + return res; + } + + return fd; +} + +#define WORD_ASSEMBLY(byte1, byte2) (((byte2) << 7) | (byte1)) +static int MuTGetEvent(MuTData *event) +{ + MuTReadPacket(event->fd, packet); + + /* Sync bit always must be set to 1 */ + if ((*packet & MuT_PANEL_SYNC_MASK) == 0) + return 0; + + if (*packet & MuT_PANEL_TOUCH_MASK) + event->action = MUT_PANEL_TOUCH; + else + event->action = MUT_PANEL_UNTOUCH; + + event->x = (event->screen_width * + WORD_ASSEMBLY(packet[1], packet[2])) / 16383; + event->y = (event->screen_height * + WORD_ASSEMBLY(packet[3], packet[4])) / 16383; + + if (event->min_x) + event->x = event->min_x - event->x; + if (event->min_y) + event->y = event->min_y - event->y; + + return 1; +} + +/* The main routine for MuTouch */ +static void *MuTouchEventThread(DirectThread *thread, void *driver_data) +{ + MuTData *data = (MuTData *) driver_data; + + /* Read data */ + while (1) { + DFBInputEvent evt; + + if (!MuTGetEvent (data)) + continue; + direct_thread_testcancel (thread); + + /* Dispatch axis */ + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_X; + evt.axisabs = data->x; + dfb_input_dispatch (data->device, &evt); + + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_Y; + evt.axisabs = data->y; + dfb_input_dispatch (data->device, &evt); + + /* Dispatch touch event */ + switch (data->action) { + case MUT_PANEL_TOUCH: + evt.type = DIET_BUTTONPRESS; + break; + case MUT_PANEL_UNTOUCH: + evt.type = DIET_BUTTONRELEASE; + break; + } + + evt.flags = DIEF_NONE; + evt.button = DIBI_LEFT; + + dfb_input_dispatch (data->device, &evt); + direct_thread_testcancel (thread); + } + + return NULL; +} + +/* exported symbols */ + +static int driver_get_available( void ) +{ + int fd; + + if (!dfb_config->mut_device) + return 0; + + fd = MuTOpenDevice (dfb_config->mut_device); + if (fd < 0) + return 0; + + close(fd); + + return 1; +} + +static void driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf(info->name, DFB_INPUT_DRIVER_INFO_NAME_LENGTH, + "MuTouch" ); + snprintf(info->vendor, DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, + "Microtouch" ); + + info->version.major = 0; + info->version.minor = 3; +} + +static DFBResult driver_open_device(CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data) +{ + int fd; + MuTData *data; + + /* open device */ + fd = MuTOpenDevice (dfb_config->mut_device); + D_INFO("MuTouch:driver_open_device %s fd %d\n", dfb_config->mut_device,fd); + + if (fd < 0) { + return DFB_INIT; + } + + data = D_CALLOC (1, sizeof(MuTData)); + if (!data) { + close (fd); + return D_OOM (); + } + + data->fd = fd; + data->device = device; + + /* Must define the correct resolution of screen */ + data->screen_width = MuT_SCREENWIDTH; + data->screen_height = MuT_SCREENHEIGHT; + + /* The following variable are defined to adjust the orientation of + * the touchscreen. Variables are either max screen height/width or 0. + */ + data->min_x = MuT_MINX; + data->min_y = MuT_MINY; + + /* fill device info structure */ + snprintf(info->desc.name, DFB_INPUT_DEVICE_DESC_NAME_LENGTH, + "MuTouch"); + snprintf(info->desc.vendor, DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, + "Microtouch"); + + info->prefered_id = DIDID_MOUSE; + info->desc.type = DIDTF_MOUSE; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_axis = DIAI_Y; + info->desc.max_button = DIBI_LEFT; + + /* start input thread */ + data->thread = direct_thread_create (DTT_INPUT, MuTouchEventThread, data, "MuTouch Input"); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult driver_get_keymap_entry(CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry) +{ + return DFB_UNSUPPORTED; +} + +static void driver_close_device(void *driver_data) +{ + MuTData *data = (MuTData *)driver_data; + + /* stop input thread */ + direct_thread_cancel (data->thread); + direct_thread_join (data->thread); + direct_thread_destroy (data->thread); + + /* close device */ + close (data->fd); + + /* free private data */ + D_FREE (data); +} + diff --git a/Source/DirectFB/inputdrivers/penmount/Makefile.am b/Source/DirectFB/inputdrivers/penmount/Makefile.am new file mode 100755 index 0000000..4b2e92f --- /dev/null +++ b/Source/DirectFB/inputdrivers/penmount/Makefile.am @@ -0,0 +1,29 @@ +## Makefile.am for DirectFB/inputdrivers/penmount + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_penmount.la + +if BUILD_STATIC +input_DATA = $(input_LTLIBRARIES:.la=.o) +endif + +inputdir = $(MODULEDIR)/inputdrivers + +libdirectfb_penmount_la_SOURCES = penmount.c + +libdirectfb_penmount_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_penmount_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/penmount/Makefile.in b/Source/DirectFB/inputdrivers/penmount/Makefile.in new file mode 100755 index 0000000..8805622 --- /dev/null +++ b/Source/DirectFB/inputdrivers/penmount/Makefile.in @@ -0,0 +1,591 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/penmount +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)" +inputLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(input_LTLIBRARIES) +libdirectfb_penmount_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_penmount_la_OBJECTS = penmount.lo +libdirectfb_penmount_la_OBJECTS = \ + $(am_libdirectfb_penmount_la_OBJECTS) +libdirectfb_penmount_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_penmount_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_penmount_la_SOURCES) +DIST_SOURCES = $(libdirectfb_penmount_la_SOURCES) +inputDATA_INSTALL = $(INSTALL_DATA) +DATA = $(input_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_penmount.la +@BUILD_STATIC_TRUE@input_DATA = $(input_LTLIBRARIES:.la=.o) +inputdir = $(MODULEDIR)/inputdrivers +libdirectfb_penmount_la_SOURCES = penmount.c +libdirectfb_penmount_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_penmount_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/penmount/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/penmount/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-inputLTLIBRARIES: $(input_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + else :; fi; \ + done + +uninstall-inputLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(inputdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(inputdir)/$$p"; \ + done + +clean-inputLTLIBRARIES: + -test -z "$(input_LTLIBRARIES)" || rm -f $(input_LTLIBRARIES) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_penmount.la: $(libdirectfb_penmount_la_OBJECTS) $(libdirectfb_penmount_la_DEPENDENCIES) + $(libdirectfb_penmount_la_LINK) -rpath $(inputdir) $(libdirectfb_penmount_la_OBJECTS) $(libdirectfb_penmount_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/penmount.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-inputDATA: $(input_DATA) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(inputDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(inputDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + done + +uninstall-inputDATA: + @$(NORMAL_UNINSTALL) + @list='$(input_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(inputdir)/$$f'"; \ + rm -f "$(DESTDIR)$(inputdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-inputLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-inputDATA install-inputLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-inputDATA uninstall-inputLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-inputLTLIBRARIES clean-libtool ctags 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-inputDATA \ + install-inputLTLIBRARIES 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 uninstall uninstall-am uninstall-inputDATA \ + uninstall-inputLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/penmount/penmount.c b/Source/DirectFB/inputdrivers/penmount/penmount.c new file mode 100755 index 0000000..76bce8e --- /dev/null +++ b/Source/DirectFB/inputdrivers/penmount/penmount.c @@ -0,0 +1,363 @@ +/* + (c) Copyright 2000-2002 Fulgid Technology Co., Ltd. + + All rights reserved. + + Written by Simon Ueng + Modified by Nikita Egorov + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + This driver is a re-write from the MuTouch driver. +*/ + +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include + +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + + +DFB_INPUT_DRIVER( penmount ) + +#define BAUDRATE B19200 + +#define PeM_REPORT_SIZE 5 +#define PeM_PACKET_SIZE 10 +#define PeM_SCREENWIDTH 640 +#define PeM_SCREENHEIGHT 480 +#define PeM_MINX 0 +#define PeM_MINY 0 + +#define PEM_PANEL_TOUCH 0x01 +#define PEM_PANEL_UNTOUCH 0x00 + + +/* Event mask */ +#define PeM_PANEL_TOUCH_MASK 0x40 +#define PeM_PANEL_SYNC_MASK 0x80 + +typedef struct __PeMData__ { + int fd; + DirectThread *thread; + CoreInputDevice *device; + unsigned short x; + unsigned short y; + unsigned short screen_width; + unsigned short screen_height; + unsigned short min_x; + unsigned short min_y; + unsigned char action; +} PeMData; + +/* Global Variables */ +static unsigned char packet[PeM_PACKET_SIZE]; + + /* touchscreen values of left/top position */ +static int min_x=19,min_y=1001; + + /* touchscreen values of right/bottom position */ +static int max_x=946,max_y=62; + + +static inline void __mdelay(unsigned int msec){ + struct timespec delay; + + delay.tv_sec = 0; + delay.tv_nsec = msec * 1000000; + nanosleep (&delay, NULL); +} + +static inline void PeMSendPacket(int file, unsigned char *packet, unsigned char len){ + + write (file, packet, len); +} + +static inline void PeMReadPacket(int file, unsigned char *packet){ + int n = 0; + memset (packet, 0, PeM_PACKET_SIZE); + while ((n += read (file, packet+n, PeM_REPORT_SIZE-n)) != PeM_REPORT_SIZE); +} + +static int PeMPollDevice(const char *device){ + int file; + struct termios options; + + /* Make raw I/O */ + memset (&options, 0, sizeof (struct termios)); + + /* Open I/O port */ + file = open (device, O_RDWR | O_NOCTTY); + + options.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD; + options.c_cc[VMIN] = 1; + options.c_cc[VTIME] = 0; + + tcflush (file, TCIFLUSH); + tcsetattr (file, TCSANOW, &options); + + return file; +} + +static inline int PeMInitialize(int file){ + /* it's a stub */ + /* I dont know how get information about PenMount device... */ + + return 1; +} + +static int PeMOpenDevice(char *device){ + int fd; + int res; + + char *pos = strstr(device, ":raw"); + if (pos) {// raw data + max_x = min_x; + max_y = min_y; + *pos = 0; + } + fd = PeMPollDevice (device); + if ((res = PeMInitialize (fd)) == 0) { + close (fd); + return res; + } + return fd; +} + +static int convert_x(int x,PeMData *event){ + if (max_x != min_x) + return .5+event->screen_width*((double)x - min_x)/(max_x - min_x); + else + return x; +} + +static int convert_y(int y,PeMData *event){ + if (max_y != min_y) + return .5+event->screen_height*((double)y - min_y)/(max_y - min_y); + else + return y; +} + +#define WORD_ASSEMBLY(byte1, byte2) (((byte2) << 7) | (byte1)) + +static int PeMGetEvent(PeMData *event){ + + PeMReadPacket(event->fd, packet); + /* Sync bit always must be set to 1 */ + if ((*packet & PeM_PANEL_SYNC_MASK) == 0) + return 0; + + if (*packet & PeM_PANEL_TOUCH_MASK) + event->action = PEM_PANEL_TOUCH; + else + event->action = PEM_PANEL_UNTOUCH; + + event->y = convert_y( WORD_ASSEMBLY(packet[2], packet[1]),event); + event->x = convert_x( WORD_ASSEMBLY(packet[4], packet[3]),event); + + if (event->min_x) + event->x = event->min_x - event->x; + if (event->min_y) + event->y = event->min_y - event->y; + + return 1; +} + +/* The main routine for PenMount */ +static void *PenMountEventThread(DirectThread *thread, void *driver_data){ + + PeMData *data = (PeMData *) driver_data; + + /* Read data */ + while (1) { + DFBInputEvent evt; + static int pressed = 0; + + if (!PeMGetEvent (data)) + continue; + direct_thread_testcancel (thread); + + /* Dispatch axis */ + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_X; + evt.axisabs = data->x; + dfb_input_dispatch (data->device, &evt); + + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_Y; + evt.axisabs = data->y; + dfb_input_dispatch (data->device, &evt); + + /* Dispatch touch event */ + switch (data->action) { + case PEM_PANEL_TOUCH: + if (!pressed) + evt.type = DIET_BUTTONPRESS; + pressed = 1; + break; + case PEM_PANEL_UNTOUCH: + if (pressed) + evt.type = DIET_BUTTONRELEASE; + pressed = 0; + break; + } + + evt.flags = DIEF_NONE; + evt.button = DIBI_LEFT; + + dfb_input_dispatch (data->device, &evt); + direct_thread_testcancel (thread); + } + + return NULL; +} + +/* exported symbols */ + +static int driver_get_available( void ){ + int fd; + + if (!dfb_config->penmount_device) + return 0; + + fd = PeMOpenDevice (dfb_config->penmount_device); + if (fd < 0) + return 0; + + close(fd); + + return 1; +} + +static void driver_get_info( InputDriverInfo *info ){ + /* fill driver info structure */ + snprintf(info->name, DFB_INPUT_DRIVER_INFO_NAME_LENGTH, + "PenMount 9509" ); + snprintf(info->vendor, DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, + "AMT" ); + + info->version.major = 0; + info->version.minor = 1; +} + +static DFBResult driver_open_device(CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data){ + int fd; + PeMData *data; + + /* open device */ + fd = PeMOpenDevice (dfb_config->penmount_device); + if (fd < 0) { + D_PERROR("DirectFB/PenMount: Error opening '%s'!\n", dfb_config->penmount_device); + return DFB_INIT; + } + + data = D_CALLOC (1, sizeof(PeMData)); + if (!data) { + close (fd); + return D_OOM (); + } + + data->fd = fd; + data->device = device; + + /* Must define the correct resolution of screen */ + data->screen_width = PeM_SCREENWIDTH; + data->screen_height = PeM_SCREENHEIGHT; + + /* The following variable are defined to adjust the orientation of + * the touchscreen. Variables are either max screen height/width or 0. + */ + data->min_x = PeM_MINX; + data->min_y = PeM_MINY; + + /* fill device info structure */ + snprintf(info->desc.name, DFB_INPUT_DEVICE_DESC_NAME_LENGTH, + "PenMount 9509"); + snprintf(info->desc.vendor, DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, + "AMT"); + + info->prefered_id = DIDID_MOUSE; + info->desc.type = DIDTF_MOUSE; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_axis = DIAI_Y; + info->desc.max_button = DIBI_LEFT; + + /* start input thread */ + data->thread = direct_thread_create (DTT_INPUT, PenMountEventThread, data, "PenMount Input"); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult driver_get_keymap_entry(CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry) +{ + return DFB_UNSUPPORTED; +} + +static void driver_close_device(void *driver_data){ + PeMData *data = (PeMData *)driver_data; + + /* stop input thread */ + direct_thread_cancel (data->thread); + direct_thread_join (data->thread); + direct_thread_destroy (data->thread); + + /* close device */ + close (data->fd); + + /* free private data */ + D_FREE (data); +} diff --git a/Source/DirectFB/inputdrivers/ps2mouse/Makefile.am b/Source/DirectFB/inputdrivers/ps2mouse/Makefile.am new file mode 100755 index 0000000..30915f8 --- /dev/null +++ b/Source/DirectFB/inputdrivers/ps2mouse/Makefile.am @@ -0,0 +1,31 @@ +## Makefile.am for DirectFB/inputdrivers/ps2mouse + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_srcdir)/lib \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/src + +ps2mouse_LTLIBRARIES = libdirectfb_ps2mouse.la + +if BUILD_STATIC +ps2mouse_DATA = $(ps2mouse_LTLIBRARIES:.la=.o) +endif + +ps2mousedir = $(MODULEDIR)/inputdrivers + +libdirectfb_ps2mouse_la_SOURCES = \ + ps2mouse.c + +libdirectfb_ps2mouse_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_ps2mouse_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/ps2mouse/Makefile.in b/Source/DirectFB/inputdrivers/ps2mouse/Makefile.in new file mode 100755 index 0000000..8ee00f3 --- /dev/null +++ b/Source/DirectFB/inputdrivers/ps2mouse/Makefile.in @@ -0,0 +1,594 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/ps2mouse +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(ps2mousedir)" \ + "$(DESTDIR)$(ps2mousedir)" +ps2mouseLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(ps2mouse_LTLIBRARIES) +libdirectfb_ps2mouse_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_ps2mouse_la_OBJECTS = ps2mouse.lo +libdirectfb_ps2mouse_la_OBJECTS = \ + $(am_libdirectfb_ps2mouse_la_OBJECTS) +libdirectfb_ps2mouse_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_ps2mouse_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_ps2mouse_la_SOURCES) +DIST_SOURCES = $(libdirectfb_ps2mouse_la_SOURCES) +ps2mouseDATA_INSTALL = $(INSTALL_DATA) +DATA = $(ps2mouse_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_srcdir)/lib \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/src + +ps2mouse_LTLIBRARIES = libdirectfb_ps2mouse.la +@BUILD_STATIC_TRUE@ps2mouse_DATA = $(ps2mouse_LTLIBRARIES:.la=.o) +ps2mousedir = $(MODULEDIR)/inputdrivers +libdirectfb_ps2mouse_la_SOURCES = \ + ps2mouse.c + +libdirectfb_ps2mouse_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_ps2mouse_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/ps2mouse/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/ps2mouse/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-ps2mouseLTLIBRARIES: $(ps2mouse_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(ps2mousedir)" || $(MKDIR_P) "$(DESTDIR)$(ps2mousedir)" + @list='$(ps2mouse_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(ps2mouseLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(ps2mousedir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(ps2mouseLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(ps2mousedir)/$$f"; \ + else :; fi; \ + done + +uninstall-ps2mouseLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(ps2mouse_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(ps2mousedir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(ps2mousedir)/$$p"; \ + done + +clean-ps2mouseLTLIBRARIES: + -test -z "$(ps2mouse_LTLIBRARIES)" || rm -f $(ps2mouse_LTLIBRARIES) + @list='$(ps2mouse_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_ps2mouse.la: $(libdirectfb_ps2mouse_la_OBJECTS) $(libdirectfb_ps2mouse_la_DEPENDENCIES) + $(libdirectfb_ps2mouse_la_LINK) -rpath $(ps2mousedir) $(libdirectfb_ps2mouse_la_OBJECTS) $(libdirectfb_ps2mouse_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ps2mouse.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-ps2mouseDATA: $(ps2mouse_DATA) + @$(NORMAL_INSTALL) + test -z "$(ps2mousedir)" || $(MKDIR_P) "$(DESTDIR)$(ps2mousedir)" + @list='$(ps2mouse_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(ps2mouseDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(ps2mousedir)/$$f'"; \ + $(ps2mouseDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(ps2mousedir)/$$f"; \ + done + +uninstall-ps2mouseDATA: + @$(NORMAL_UNINSTALL) + @list='$(ps2mouse_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(ps2mousedir)/$$f'"; \ + rm -f "$(DESTDIR)$(ps2mousedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(ps2mousedir)" "$(DESTDIR)$(ps2mousedir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-ps2mouseLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-ps2mouseDATA install-ps2mouseLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-ps2mouseDATA uninstall-ps2mouseLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-ps2mouseLTLIBRARIES ctags 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-ps2mouseDATA install-ps2mouseLTLIBRARIES 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 uninstall uninstall-am uninstall-ps2mouseDATA \ + uninstall-ps2mouseLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/ps2mouse/ps2mouse.c b/Source/DirectFB/inputdrivers/ps2mouse/ps2mouse.c new file mode 100755 index 0000000..5b0fe2d --- /dev/null +++ b/Source/DirectFB/inputdrivers/ps2mouse/ps2mouse.c @@ -0,0 +1,576 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include + +#include +#include +#include +#include +#include + +#include + +#include + +#include + +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + + +DFB_INPUT_DRIVER( ps2mouse ) + + +/* Stolen from the linux kernel (pc_keyb.h) */ +#define PS2_SET_RES 0xE8 /* Set resolution */ +#define PS2_SET_SCALE11 0xE6 /* Set 1:1 scaling */ +#define PS2_SET_SCALE21 0xE7 /* Set 2:1 scaling */ +#define PS2_GET_SCALE 0xE9 /* Get scaling factor */ +#define PS2_SET_STREAM 0xEA /* Set stream mode */ +#define PS2_SET_SAMPLE 0xF3 /* Set sample rate */ +#define PS2_ENABLE_DEV 0xF4 /* Enable aux device */ +#define PS2_DISABLE_DEV 0xF5 /* Disable aux device */ +#define PS2_RESET 0xFF /* Reset aux device */ +#define PS2_ACK 0xFA /* Command byte ACK */ + +/*** mouse commands ***/ + +#define PS2_SEND_ID 0xF2 +#define PS2_ID_ERROR -1 +#define PS2_ID_PS2 0 +#define PS2_ID_IMPS2 3 + +static int ndev; +static const char *devlist[8]; + +typedef struct { + int fd; + CoreInputDevice *device; + DirectThread *thread; + + int mouseId; + int packetLength; + + int dx; + int dy; +} PS2MouseData; + + +static void +flush_xy( PS2MouseData *data ) +{ + DFBInputEvent evt; + + if (data->dx) { + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISREL; + evt.axis = DIAI_X; + evt.axisrel = data->dx; + + /* Signal immediately following event. */ + if (data->dy) + evt.flags |= DIEF_FOLLOW; + + dfb_input_dispatch( data->device, &evt ); + + data->dx = 0; + } + + if (data->dy) { + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISREL; + evt.axis = DIAI_Y; + evt.axisrel = data->dy; + + dfb_input_dispatch( data->device, &evt ); + + data->dy = 0; + } +} + +static void* +ps2mouseEventThread( DirectThread *thread, void *driver_data ) +{ + PS2MouseData *data = (PS2MouseData*) driver_data; + + unsigned char packet[4]; + unsigned char pos = 0; + unsigned char last_buttons = 0; + + int readlen; + unsigned char buf[256]; + + + while ( (readlen = read(data->fd, buf, 256)) > 0 ) { + int i; + + direct_thread_testcancel( thread ); + + for ( i = 0; i < readlen; i++ ) { + + if ( pos == 0 && (buf[i] & 0xc0) ) { + continue; + } + packet[pos++] = buf[i]; + if ( pos == data->packetLength ) { + int dx, dy, dz; + int buttons; + + pos = 0; + + if ( !(packet[0] & 0x08) ) { + /* We've lost sync! */ + i--; /* does this make sense? oh well, + it will resync eventually (will it ?)*/ + continue; + } + + buttons = packet[0] & 0x07; + dx = (packet[0] & 0x10) ? packet[1]-256 : packet[1]; + dy = (packet[0] & 0x20) ? -(packet[2]-256) : -packet[2]; + if (data->mouseId == PS2_ID_IMPS2) { + /* Just strip off the extra buttons if present + and sign extend the 4 bit value */ + dz = (s8)((packet[3] & 0x80) ? + packet[3] | 0xf0 : packet[3] & 0x0F); + if (dz) { + DFBInputEvent evt; + + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISREL; + evt.axis = DIAI_Z; + evt.axisrel = dz; + + flush_xy( data ); + + dfb_input_dispatch( data->device, &evt ); + } + } + else { + dz = 0; + } + + data->dx += dx; + data->dy += dy; + + if ( !dfb_config->mouse_motion_compression ) + flush_xy( data ); + + if ( last_buttons != buttons ) { + DFBInputEvent evt; + unsigned char changed_buttons; + + changed_buttons = last_buttons ^ buttons; + + /* make sure the compressed motion event is dispatched + before any button change */ + flush_xy( data ); + + if ( changed_buttons & 0x01 ) { + evt.type = (buttons & 0x01) ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE; + evt.flags = DIEF_NONE; + evt.button = DIBI_LEFT; + dfb_input_dispatch( data->device, &evt ); + } + if ( changed_buttons & 0x02 ) { + evt.type = (buttons & 0x02) ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE; + evt.flags = DIEF_NONE; + evt.button = DIBI_RIGHT; + dfb_input_dispatch( data->device, &evt ); + } + if ( changed_buttons & 0x04 ) { + evt.type = (buttons & 0x04) ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE; + evt.flags = DIEF_NONE; + evt.button = DIBI_MIDDLE; + dfb_input_dispatch( data->device, &evt ); + } + + last_buttons = buttons; + } + } + } + /* make sure the compressed motion event is dispatched, + necessary if the last packet was a motion event */ + flush_xy( data ); + } + + if ( readlen <= 0 && errno != EINTR ) + D_PERROR ("psmouse thread died\n"); + + return NULL; +} + + +static int +ps2WriteChar( int fd, unsigned char c, bool verbose ) +{ + struct timeval tv; + fd_set fds; + + tv.tv_sec = 0; + tv.tv_usec = 200000; /* timeout 200 ms */ + + FD_ZERO( &fds ); + FD_SET( fd, &fds ); + + write( fd, &c, 1 ); + + if ( select(fd+1, &fds, NULL, NULL, &tv) == 0 ) { + if ( verbose ) + D_ERROR( "DirectFB/PS2Mouse: timeout waiting for ack!!\n" ); + return -1; + } + + read( fd, &c, 1 ); + + if ( c != PS2_ACK ) + return -2; + + return 0; +} + + +static int +ps2GetId( int fd, bool verbose ) +{ + unsigned char c; + + if ( ps2WriteChar(fd, PS2_SEND_ID, verbose) < 0 ) + return PS2_ID_ERROR; + + read( fd, &c, 1 ); + + return( c ); +} + + +static int +ps2Write( int fd, const unsigned char *data, size_t len, bool verbose) +{ + size_t i; + int error = 0; + + for ( i = 0; i < len; i++ ) { + if ( ps2WriteChar(fd, data[i], verbose) < 0 ) { + if ( verbose ) + D_ERROR( "DirectFB/PS2Mouse: error @byte %zu\n", i ); + error++; + } + } + + if ( error && verbose ) + D_ERROR( "DirectFB/PS2Mouse: missed %i ack's!\n", error); + + return( error ); +} + + +static int +init_ps2( int fd, bool verbose ) +{ + static const unsigned char basic_init[] = + { PS2_ENABLE_DEV, PS2_SET_SAMPLE, 100 }; + static const unsigned char imps2_init[] = + { PS2_SET_SAMPLE, 200, PS2_SET_SAMPLE, 100, PS2_SET_SAMPLE, 80 }; + static const unsigned char ps2_init[] = + { PS2_SET_SCALE11, PS2_ENABLE_DEV, PS2_SET_SAMPLE, 100, PS2_SET_RES, 3 }; + int mouseId; + + struct timeval tv; + fd_set fds; + int count = 100; + + /* read all data from the file descriptor before initializing the mouse */ + while (true) { + unsigned char buf[64]; + + tv.tv_sec = 0; + tv.tv_usec = 50000; /* timeout 1/50 sec */ + + FD_ZERO( &fds ); + FD_SET( fd, &fds ); + + if (select( fd+1, &fds, NULL, NULL, &tv )) + read( fd, buf, sizeof(buf) ); + else + break; + + if (! --count) { + D_ERROR( "DirectFB/PS2Mouse: " + "PS/2 mouse keeps sending data, " + "initialization failed\n" ); + return -1; + } + } + + ps2Write( fd, basic_init, sizeof (basic_init), verbose ); + /* Do a basic init in case the mouse is confused */ + if (ps2Write( fd, basic_init, sizeof (basic_init), verbose ) != 0) { + if (verbose) + D_ERROR( "DirectFB/PS2Mouse: PS/2 mouse failed init\n" ); + return -1; + } + + ps2Write( fd, ps2_init, sizeof (ps2_init), verbose ); + + if (ps2Write(fd, imps2_init, sizeof (imps2_init), verbose) != 0) { + if (verbose) + D_ERROR ("DirectFB/PS2Mouse: mouse failed IMPS/2 init\n"); + return -2; + } + + if ((mouseId = ps2GetId( fd, verbose )) < 0) + return mouseId; + + if ( mouseId != PS2_ID_IMPS2 ) /* unknown id, assume PS/2 */ + mouseId = PS2_ID_PS2; + + return mouseId; +} + +/**************************************************************************************************/ + +static void +check_devices( const char *devnames[], int num ) +{ + int i, fd; + + for (i=0; imouse_protocol && + (strcasecmp( dfb_config->mouse_protocol, "PS/2") == 0 || + strcasecmp( dfb_config->mouse_protocol, "IMPS/2") == 0)) + { + int fd = open( dfb_config->mouse_source, O_RDONLY | O_NONBLOCK ); + + if (fd < 0) { + D_PERROR( "DirectFB/PS2Mouse: opening %s failed!\n", + dfb_config->mouse_source ); + return 0; + } + + devlist[0] = dfb_config->mouse_source; + close( fd ); + return 1; + } + + if (uname( &uts ) < 0) + D_PERROR( "DirectFB/PS2Mouse: uname() failed!\n" ); + else if (!strncmp( uts.release, "2.6.", 4 ) || !strncmp( uts.release, "2.5.", 4 )) + check_psaux = false; + + if (check_psaux) + CHECK_DEVICES( dev_psaux ); + + if (check_input) + CHECK_DEVICES( dev_input ); + + return ndev; +} + +static void +driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf( info->name, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "PS/2 Mouse Driver" ); + + snprintf( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, "directfb.org" ); + + info->version.major = 1; + info->version.minor = 0; +} + +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + int fd; + int mouseId = -1; + int flags; + PS2MouseData *data; + + /* open device */ + + flags = (dfb_config->mouse_gpm_source) + ? (O_RDONLY | O_NONBLOCK) + : (O_RDWR | O_SYNC | O_EXCL); + + fd = open( devlist[number], flags ); + if (fd < 0) { + D_PERROR( "DirectFB/PS2Mouse: failed opening `%s' !\n", + devlist[number] ); + close( fd ); + return DFB_INIT; + } + + fcntl( fd, F_SETFL, fcntl ( fd, F_GETFL ) & ~O_NONBLOCK ); + + if (!dfb_config->mouse_gpm_source) { + mouseId = init_ps2( fd, true ); + + if (mouseId < 0) { + D_PERROR( "DirectFB/PS2Mouse: could not initialize mouse on `%s'!\n", + devlist[number] ); + close( fd ); + return DFB_INIT; + } + } + + if (dfb_config->mouse_protocol) { + if (strcasecmp( dfb_config->mouse_protocol, "IMPS/2" ) == 0) { + mouseId = PS2_ID_IMPS2; + } + else if (strcasecmp( dfb_config->mouse_protocol, "PS/2" ) == 0) { + mouseId = PS2_ID_PS2; + } + else { + D_ERROR( "DirectFB/PS2Mouse: unsupported protocol `%s' !\n", + dfb_config->mouse_protocol ); + close( fd ); + return DFB_INIT; + } + } + + /* fill device info structure */ + snprintf( info->desc.name, DFB_INPUT_DEVICE_DESC_NAME_LENGTH, + (mouseId == PS2_ID_IMPS2) ? "IMPS/2 Mouse" : "PS/2 Mouse" ); + + snprintf( info->desc.vendor, + DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "Unknown" ); + + info->prefered_id = DIDID_MOUSE; + info->desc.type = DIDTF_MOUSE; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_axis = (mouseId == PS2_ID_IMPS2) ? DIAI_Z : DIAI_Y; + info->desc.max_button = DIBI_MIDDLE; /* TODO: probe!? */ + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(PS2MouseData) ); + if (!data) { + close( fd ); + return D_OOM(); + } + + data->fd = fd; + data->device = device; + data->mouseId = mouseId; + data->packetLength = (mouseId == PS2_ID_IMPS2) ? 4 : 3; + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, ps2mouseEventThread, data, "PS/2 Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ + return DFB_UNSUPPORTED; +} + +static void +driver_close_device( void *driver_data ) +{ + PS2MouseData *data = (PS2MouseData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + /* close device */ + close( data->fd ); + + /* free private data */ + D_FREE( data ); +} diff --git a/Source/DirectFB/inputdrivers/serialmouse/Makefile.am b/Source/DirectFB/inputdrivers/serialmouse/Makefile.am new file mode 100755 index 0000000..13f5744 --- /dev/null +++ b/Source/DirectFB/inputdrivers/serialmouse/Makefile.am @@ -0,0 +1,30 @@ +## Makefile.am for DirectFB/inputdrivers/serialmouse + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +serialmouse_LTLIBRARIES = libdirectfb_serialmouse.la + +if BUILD_STATIC +serialmouse_DATA = $(serialmouse_LTLIBRARIES:.la=.o) +endif + +serialmousedir = $(MODULEDIR)/inputdrivers + +libdirectfb_serialmouse_la_SOURCES = serialmouse.c + +libdirectfb_serialmouse_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_serialmouse_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/serialmouse/Makefile.in b/Source/DirectFB/inputdrivers/serialmouse/Makefile.in new file mode 100755 index 0000000..682ce14 --- /dev/null +++ b/Source/DirectFB/inputdrivers/serialmouse/Makefile.in @@ -0,0 +1,595 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/serialmouse +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(serialmousedir)" \ + "$(DESTDIR)$(serialmousedir)" +serialmouseLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(serialmouse_LTLIBRARIES) +libdirectfb_serialmouse_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_serialmouse_la_OBJECTS = serialmouse.lo +libdirectfb_serialmouse_la_OBJECTS = \ + $(am_libdirectfb_serialmouse_la_OBJECTS) +libdirectfb_serialmouse_la_LINK = $(LIBTOOL) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libdirectfb_serialmouse_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_serialmouse_la_SOURCES) +DIST_SOURCES = $(libdirectfb_serialmouse_la_SOURCES) +serialmouseDATA_INSTALL = $(INSTALL_DATA) +DATA = $(serialmouse_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +serialmouse_LTLIBRARIES = libdirectfb_serialmouse.la +@BUILD_STATIC_TRUE@serialmouse_DATA = $(serialmouse_LTLIBRARIES:.la=.o) +serialmousedir = $(MODULEDIR)/inputdrivers +libdirectfb_serialmouse_la_SOURCES = serialmouse.c +libdirectfb_serialmouse_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_serialmouse_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/serialmouse/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/serialmouse/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-serialmouseLTLIBRARIES: $(serialmouse_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(serialmousedir)" || $(MKDIR_P) "$(DESTDIR)$(serialmousedir)" + @list='$(serialmouse_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(serialmouseLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(serialmousedir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(serialmouseLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(serialmousedir)/$$f"; \ + else :; fi; \ + done + +uninstall-serialmouseLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(serialmouse_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(serialmousedir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(serialmousedir)/$$p"; \ + done + +clean-serialmouseLTLIBRARIES: + -test -z "$(serialmouse_LTLIBRARIES)" || rm -f $(serialmouse_LTLIBRARIES) + @list='$(serialmouse_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_serialmouse.la: $(libdirectfb_serialmouse_la_OBJECTS) $(libdirectfb_serialmouse_la_DEPENDENCIES) + $(libdirectfb_serialmouse_la_LINK) -rpath $(serialmousedir) $(libdirectfb_serialmouse_la_OBJECTS) $(libdirectfb_serialmouse_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/serialmouse.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-serialmouseDATA: $(serialmouse_DATA) + @$(NORMAL_INSTALL) + test -z "$(serialmousedir)" || $(MKDIR_P) "$(DESTDIR)$(serialmousedir)" + @list='$(serialmouse_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(serialmouseDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(serialmousedir)/$$f'"; \ + $(serialmouseDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(serialmousedir)/$$f"; \ + done + +uninstall-serialmouseDATA: + @$(NORMAL_UNINSTALL) + @list='$(serialmouse_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(serialmousedir)/$$f'"; \ + rm -f "$(DESTDIR)$(serialmousedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(serialmousedir)" "$(DESTDIR)$(serialmousedir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-serialmouseLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-serialmouseDATA \ + install-serialmouseLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-serialmouseDATA \ + uninstall-serialmouseLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-serialmouseLTLIBRARIES ctags 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-serialmouseDATA install-serialmouseLTLIBRARIES \ + 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 uninstall uninstall-am \ + uninstall-serialmouseDATA uninstall-serialmouseLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/serialmouse/serialmouse.c b/Source/DirectFB/inputdrivers/serialmouse/serialmouse.c new file mode 100755 index 0000000..3aba563 --- /dev/null +++ b/Source/DirectFB/inputdrivers/serialmouse/serialmouse.c @@ -0,0 +1,572 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include + +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +#include + + +DFB_INPUT_DRIVER( serialmouse ) + +#define MIDDLE 0x08 + +typedef enum +{ + PROTOCOL_MS, /* two buttons MS protocol */ + PROTOCOL_MS3, /* MS with ugly 3-button extension */ + PROTOCOL_MOUSEMAN, /* referred to as MS + Logitech extension in mouse(4) */ + PROTOCOL_MOUSESYSTEMS, /* most commonly used serial mouse protocol nowadays */ + LAST_PROTOCOL +} MouseProtocol; + +static const char *protocol_names[LAST_PROTOCOL] = +{ + "MS", + "MS3", + "MouseMan", + "MouseSystems" +}; + +typedef struct { + CoreInputDevice *device; + DirectThread *thread; + + int fd; + + MouseProtocol protocol; + + DFBInputEvent x_motion; + DFBInputEvent y_motion; +} SerialMouseData; + +static inline void +mouse_motion_initialize( SerialMouseData *data ) +{ + data->x_motion.type = data->y_motion.type = DIET_AXISMOTION; + data->x_motion.axisrel = data->y_motion.axisrel = 0; + + data->x_motion.axis = DIAI_X; + data->y_motion.axis = DIAI_Y; +} + +static inline void +mouse_motion_compress( SerialMouseData *data, int dx, int dy ) +{ + data->x_motion.axisrel += dx; + data->y_motion.axisrel += dy; +} + +static inline void +mouse_motion_realize( SerialMouseData *data ) +{ + if (data->x_motion.axisrel) { + data->x_motion.flags = DIEF_AXISREL; + dfb_input_dispatch( data->device, &data->x_motion ); + data->x_motion.axisrel = 0; + } + + if (data->y_motion.axisrel) { + data->y_motion.flags = DIEF_AXISREL; + dfb_input_dispatch( data->device, &data->y_motion ); + data->y_motion.axisrel = 0; + } +} + + +static void +mouse_setspeed( SerialMouseData *data ) +{ + struct termios tty; + + tcgetattr (data->fd, &tty); + + tty.c_iflag = IGNBRK | IGNPAR; + tty.c_oflag = 0; + tty.c_lflag = 0; + tty.c_line = 0; + tty.c_cc[VTIME] = 0; + tty.c_cc[VMIN] = 1; + tty.c_cflag = CREAD|CLOCAL|HUPCL|B1200; + tty.c_cflag |= ((data->protocol == PROTOCOL_MOUSESYSTEMS) ? + CS8|CSTOPB : CS7); + + tcsetattr (data->fd, TCSAFLUSH, &tty); + + write (data->fd, "*n", 2); +} + +/* the main routine for MS mice (plus extensions) */ +static void* +mouseEventThread_ms( DirectThread *thread, void *driver_data ) +{ + SerialMouseData *data = (SerialMouseData*) driver_data; + DFBInputEvent evt; + + unsigned char buf[256]; + unsigned char packet[4]; + unsigned char pos = 0; + unsigned char last_buttons = 0; + int dx, dy; + int buttons; + int readlen; + int i; + + mouse_motion_initialize( data ); + + /* Read data */ + while ((readlen = read( data->fd, buf, 256 )) >= 0 || errno == EINTR) { + + direct_thread_testcancel( thread ); + + for (i = 0; i < readlen; i++) { + + if (pos == 0 && !(buf[i] & 0x40)) + continue; + + /* We did not reset the position in the mouse event handler + since a forth byte may follow. We check for it now and + reset the position if this is a start byte. */ + if (pos == 3 && buf[i] & 0x40) + pos = 0; + + packet[pos++] = buf[i]; + + switch (pos) { + case 3: + if (data->protocol != PROTOCOL_MOUSEMAN) + pos = 0; + + buttons = packet[0] & 0x30; + dx = (signed char) + (((packet[0] & 0x03) << 6) | (packet[1] & 0x3f)); + dy = (signed char) + (((packet[0] & 0x0C) << 4) | (packet[2] & 0x3f)); + + mouse_motion_compress( data, dx, dy ); + + if (data->protocol == PROTOCOL_MS3) { + if (!dx && !dy && buttons == (last_buttons & ~MIDDLE)) + buttons = last_buttons ^ MIDDLE; /* toggle */ + else + buttons |= last_buttons & MIDDLE; /* preserve */ + } + + if (!dfb_config->mouse_motion_compression) + mouse_motion_realize( data ); + + if (last_buttons != buttons) { + unsigned char changed_buttons = last_buttons ^ buttons; + + /* make sure the compressed motion event is dispatched + before any button change */ + mouse_motion_realize( data ); + + if (changed_buttons & 0x20) { + evt.type = (buttons & 0x20) ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE; + evt.flags = DIEF_NONE; + evt.button = DIBI_LEFT; + dfb_input_dispatch( data->device, &evt ); + } + if (changed_buttons & 0x10) { + evt.type = (buttons & 0x10) ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE; + evt.flags = DIEF_NONE; + evt.button = DIBI_RIGHT; + dfb_input_dispatch( data->device, &evt ); + } + if (changed_buttons & MIDDLE) { + evt.type = (buttons & MIDDLE) ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE; + evt.flags = DIEF_NONE; + evt.button = DIBI_MIDDLE; + dfb_input_dispatch( data->device, &evt ); + } + + last_buttons = buttons; + } + break; + + case 4: + pos = 0; + + evt.type = (packet[3] & 0x20) ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE; + evt.flags = DIEF_NONE; /* button is always valid */ + evt.button = DIBI_MIDDLE; + dfb_input_dispatch( data->device, &evt ); + break; + + default: + break; + } + } + + /* make sure the compressed motion event is dispatched, + necessary if the last packet was a motion event */ + if (readlen > 0) + mouse_motion_realize( data ); + + direct_thread_testcancel( thread ); + } + + D_PERROR ("serial mouse thread died\n"); + + return NULL; +} + +/* the main routine for MouseSystems */ +static void* +mouseEventThread_mousesystems( DirectThread *thread, void *driver_data ) +{ + SerialMouseData *data = (SerialMouseData*) driver_data; + + unsigned char buf[256]; + unsigned char packet[5]; + unsigned char pos = 0; + unsigned char last_buttons = 0; + int i; + int readlen; + + mouse_motion_initialize( data ); + + /* Read data */ + while ((readlen = read( data->fd, buf, 256 )) >= 0 || errno == EINTR) { + + direct_thread_testcancel( thread ); + + for (i = 0; i < readlen; i++) { + + if (pos == 0 && (buf[i] & 0xf8) != 0x80) + continue; + + packet[pos++] = buf[i]; + + if (pos == 5) { + int dx, dy; + int buttons; + + pos = 0; + + buttons= (~packet[0]) & 0x07; + dx = (signed char) (packet[1]) + (signed char)(packet[3]); + dy = - ((signed char) (packet[2]) + (signed char)(packet[4])); + + mouse_motion_compress( data, dx, dy ); + + if (!dfb_config->mouse_motion_compression) + mouse_motion_realize( data ); + + if (last_buttons != buttons) { + DFBInputEvent evt; + unsigned char changed_buttons = last_buttons ^ buttons; + + /* make sure the compressed motion event is dispatched + before any button change */ + mouse_motion_realize( data ); + + if (changed_buttons & 0x04) { + evt.type = (buttons & 0x04) ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE; + evt.flags = DIEF_NONE; /* button is always valid */ + evt.button = DIBI_LEFT; + dfb_input_dispatch( data->device, &evt ); + } + if (changed_buttons & 0x01) { + evt.type = (buttons & 0x01) ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE; + evt.flags = DIEF_NONE; /* button is always valid */ + evt.button = DIBI_MIDDLE; + dfb_input_dispatch( data->device, &evt ); + } + if (changed_buttons & 0x02) { + evt.type = (buttons & 0x02) ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE; + evt.flags = DIEF_NONE; /* button is always valid */ + evt.button = DIBI_RIGHT; + dfb_input_dispatch( data->device, &evt ); + } + + last_buttons = buttons; + } + } + } + + /* make sure the compressed motion event is dispatched, + necessary if the last packet was a motion event */ + if (readlen > 0) + mouse_motion_realize( data ); + + direct_thread_testcancel( thread ); + } + + D_PERROR ("serial mouse thread died\n"); + + return NULL; +} + +static MouseProtocol mouse_get_protocol( void ) +{ + MouseProtocol protocol; + + if (!dfb_config->mouse_protocol) + return LAST_PROTOCOL; + + for (protocol = 0; protocol < LAST_PROTOCOL; protocol++) { + if (strcasecmp (dfb_config->mouse_protocol, + protocol_names[protocol]) == 0) + break; + } + + return protocol; +} + +/* exported symbols */ + +static int +driver_get_available( void ) +{ + struct serial_struct serial_info; + struct timeval timeout; + MouseProtocol protocol; + fd_set set; + int fd; + char buf[8]; + int readlen; + int lines; + int flags; + + if (dfb_system_type() != CORE_FBDEV) + return 0; + + protocol = mouse_get_protocol(); + if (protocol == LAST_PROTOCOL) + return 0; + + /* initialize source device name to read from */ + /* initialize flags to open device with */ + flags = O_NONBLOCK; + D_INFO( "DirectFB/SerialMouse: mouse detection on device '%s'...", dfb_config->mouse_source ); + + /* open device to read from */ + fd = open( dfb_config->mouse_source, flags ); + if (fd < 0) { + D_INFO( "DirectFB/SerialMouse: could not open device '%s'!\n", dfb_config->mouse_source ); + return 0; + } + + /* test if this is a serial device */ + if (dfb_config->mouse_gpm_source) { + + /* test whether a there is really a GPM driver active */ + /* availibity of device name is enough */ + + goto success; + + } + else { + if (ioctl( fd, TIOCGSERIAL, &serial_info )) + goto error; + + /* test if there's a mouse connected by lowering and raising RTS */ + if (ioctl( fd, TIOCMGET, &lines )) + goto error; + + lines ^= TIOCM_RTS; + if (ioctl( fd, TIOCMSET, &lines )) + goto error; + usleep (1000); + lines |= TIOCM_RTS; + if (ioctl( fd, TIOCMSET, &lines )) + goto error; + + /* wait for the mouse to send 0x4D */ + FD_ZERO (&set); + FD_SET (fd, &set); + timeout.tv_sec = 0; + timeout.tv_usec = 50000; + + while (select (fd+1, &set, NULL, NULL, &timeout) < 0 && errno == EINTR); + + if (FD_ISSET (fd, &set) && (readlen = read (fd, buf, 8) > 0)) { + int i; + + for (i=0; iname, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "Serial Mouse Driver" ); + + snprintf( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, "directfb.org" ); + + info->version.major = 0; + info->version.minor = 2; +} + +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + int fd; + int flags; + MouseProtocol protocol; + SerialMouseData *data; + + protocol = mouse_get_protocol(); + if (protocol == LAST_PROTOCOL) /* shouldn't happen */ + return DFB_BUG; + + /* open device */ + flags = O_NONBLOCK | (dfb_config->mouse_gpm_source ? O_RDONLY : O_RDWR); + fd = open( dfb_config->mouse_source, flags ); + if (fd < 0) { + D_PERROR( "DirectFB/SerialMouse: Error opening '%s'!\n", dfb_config->mouse_source ); + return DFB_INIT; + } + + /* reset the O_NONBLOCK flag */ + fcntl (fd, F_SETFL, fcntl (fd, F_GETFL) & ~O_NONBLOCK); + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(SerialMouseData) ); + if (!data) { + close( fd ); + return D_OOM(); + } + + data->fd = fd; + data->device = device; + data->protocol = protocol; + + mouse_setspeed( data ); + + /* fill device info structure */ + snprintf( info->desc.name, DFB_INPUT_DEVICE_DESC_NAME_LENGTH, + "Serial Mouse (%s)", protocol_names[protocol] ); + + snprintf( info->desc.vendor, DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "Unknown" ); + + info->prefered_id = DIDID_MOUSE; + + info->desc.type = DIDTF_MOUSE; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_axis = DIAI_Y; + info->desc.max_button = (protocol > PROTOCOL_MS) ? DIBI_MIDDLE : DIBI_RIGHT; + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, protocol == PROTOCOL_MOUSESYSTEMS ? + mouseEventThread_mousesystems : mouseEventThread_ms, + data, "SerMouse Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ + return DFB_UNSUPPORTED; +} + +static void +driver_close_device( void *driver_data ) +{ + SerialMouseData *data = (SerialMouseData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + /* close device */ + close( data->fd ); + + /* free private data */ + D_FREE( data ); +} + diff --git a/Source/DirectFB/inputdrivers/sonypi/Makefile.am b/Source/DirectFB/inputdrivers/sonypi/Makefile.am new file mode 100755 index 0000000..7851e0e --- /dev/null +++ b/Source/DirectFB/inputdrivers/sonypi/Makefile.am @@ -0,0 +1,31 @@ +## Makefile.am for DirectFB/inputdrivers/sonypi + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +sonypi_LTLIBRARIES = libdirectfb_sonypi.la + +if BUILD_STATIC +sonypi_DATA = $(sonypi_LTLIBRARIES:.la=.o) +endif + +sonypidir = $(MODULEDIR)/inputdrivers + +libdirectfb_sonypi_la_SOURCES = \ + sonypi.c + +libdirectfb_sonypi_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_sonypi_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/sonypi/Makefile.in b/Source/DirectFB/inputdrivers/sonypi/Makefile.in new file mode 100755 index 0000000..65b7d32 --- /dev/null +++ b/Source/DirectFB/inputdrivers/sonypi/Makefile.in @@ -0,0 +1,592 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/sonypi +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(sonypidir)" "$(DESTDIR)$(sonypidir)" +sonypiLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(sonypi_LTLIBRARIES) +libdirectfb_sonypi_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_sonypi_la_OBJECTS = sonypi.lo +libdirectfb_sonypi_la_OBJECTS = $(am_libdirectfb_sonypi_la_OBJECTS) +libdirectfb_sonypi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_sonypi_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_sonypi_la_SOURCES) +DIST_SOURCES = $(libdirectfb_sonypi_la_SOURCES) +sonypiDATA_INSTALL = $(INSTALL_DATA) +DATA = $(sonypi_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +sonypi_LTLIBRARIES = libdirectfb_sonypi.la +@BUILD_STATIC_TRUE@sonypi_DATA = $(sonypi_LTLIBRARIES:.la=.o) +sonypidir = $(MODULEDIR)/inputdrivers +libdirectfb_sonypi_la_SOURCES = \ + sonypi.c + +libdirectfb_sonypi_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_sonypi_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/sonypi/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/sonypi/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-sonypiLTLIBRARIES: $(sonypi_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(sonypidir)" || $(MKDIR_P) "$(DESTDIR)$(sonypidir)" + @list='$(sonypi_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(sonypiLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(sonypidir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(sonypiLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(sonypidir)/$$f"; \ + else :; fi; \ + done + +uninstall-sonypiLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(sonypi_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(sonypidir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(sonypidir)/$$p"; \ + done + +clean-sonypiLTLIBRARIES: + -test -z "$(sonypi_LTLIBRARIES)" || rm -f $(sonypi_LTLIBRARIES) + @list='$(sonypi_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_sonypi.la: $(libdirectfb_sonypi_la_OBJECTS) $(libdirectfb_sonypi_la_DEPENDENCIES) + $(libdirectfb_sonypi_la_LINK) -rpath $(sonypidir) $(libdirectfb_sonypi_la_OBJECTS) $(libdirectfb_sonypi_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sonypi.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-sonypiDATA: $(sonypi_DATA) + @$(NORMAL_INSTALL) + test -z "$(sonypidir)" || $(MKDIR_P) "$(DESTDIR)$(sonypidir)" + @list='$(sonypi_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(sonypiDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(sonypidir)/$$f'"; \ + $(sonypiDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(sonypidir)/$$f"; \ + done + +uninstall-sonypiDATA: + @$(NORMAL_UNINSTALL) + @list='$(sonypi_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(sonypidir)/$$f'"; \ + rm -f "$(DESTDIR)$(sonypidir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(sonypidir)" "$(DESTDIR)$(sonypidir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-sonypiLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-sonypiDATA install-sonypiLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-sonypiDATA uninstall-sonypiLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-sonypiLTLIBRARIES ctags 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-sonypiDATA install-sonypiLTLIBRARIES 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 uninstall uninstall-am uninstall-sonypiDATA \ + uninstall-sonypiLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/sonypi/sonypi.c b/Source/DirectFB/inputdrivers/sonypi/sonypi.c new file mode 100755 index 0000000..0632d25 --- /dev/null +++ b/Source/DirectFB/inputdrivers/sonypi/sonypi.c @@ -0,0 +1,265 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include + +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include + + +DFB_INPUT_DRIVER( sonypi ) + +#define DEVICE "/dev/sonypi" + + +/* + * declaration of private data + */ +typedef struct { + CoreInputDevice *device; + DirectThread *thread; + + int fd; +} SonypiData; + + +/* + * Input thread reading from device. + * Generates events on incoming data. + */ +static void* +sonypiEventThread( DirectThread *thread, void *driver_data ) +{ + SonypiData *data = (SonypiData*) driver_data; + int readlen; + u8 buffer[16]; + + /* loop until error occurs except EINTR */ + while ((readlen = read( data->fd, buffer, 16 )) > 0 || errno == EINTR) { + int i; + DFBInputEvent evt; + + direct_thread_testcancel( thread ); + + /* process each byte */ + for (i=0; idevice, &evt ); + break; + + case SONYPI_EVENT_JOGDIAL_PRESSED: + case SONYPI_EVENT_JOGDIAL_RELEASED: + if (buffer[i] == SONYPI_EVENT_JOGDIAL_PRESSED) + evt.type = DIET_BUTTONPRESS; + else + evt.type = DIET_BUTTONRELEASE; + + evt.flags = DIEF_NONE; /* button is always valid */ + evt.button = DIBI_MIDDLE; + + dfb_input_dispatch( data->device, &evt ); + break; + + default: + ; + } + } + } + + if (readlen < 0) + D_PERROR ("sonypi thread died\n"); + + return NULL; +} + +/* exported symbols */ + +/* + * Return the number of available devices. + * Called once during initialization of DirectFB. + */ +static int +driver_get_available( void ) +{ + int fd; + + /* Check if we are able to open device for reading */ + if ((fd = open( DEVICE, O_RDONLY )) < 0) + return 0; + + close(fd); + + return 1; +} + +/* + * Fill out general information about this driver. + * Called once during initialization of DirectFB. + */ +static void +driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf ( info->name, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "SonyPI Jogdial Driver" ); + snprintf ( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, "Denis Oliver Kropp" ); + + info->version.major = 0; + info->version.minor = 1; +} + +/* + * Open the device, fill out information about it, + * allocate and fill private data, start input thread. + * Called during initialization, resuming or taking over mastership. + */ +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + int fd; + SonypiData *data; + + /* open device */ + fd = open( DEVICE, O_RDONLY); + if (fd < 0) { + D_PERROR( "DirectFB/sonypi: could not open device" ); + return DFB_INIT; + } + + /* set device name */ + snprintf( info->desc.name, + DFB_INPUT_DEVICE_DESC_NAME_LENGTH, "PI Jogdial" ); + + /* set device vendor */ + snprintf( info->desc.vendor, + DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "Sony" ); + + /* set one of the primary input device IDs */ + info->prefered_id = DIDID_MOUSE; + + /* set type flags */ + info->desc.type = DIDTF_MOUSE; + + /* set capabilities */ + info->desc.caps = DICAPS_BUTTONS | DICAPS_AXES; + info->desc.max_axis = DIAI_Z; + info->desc.max_button = DIBI_MIDDLE; + + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(SonypiData) ); + if (!data) { + close( fd ); + return D_OOM(); + } + + data->fd = fd; + data->device = device; + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, sonypiEventThread, data, "Sony PI Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ + return DFB_UNSUPPORTED; +} + +/* + * End thread, close device and free private data. + */ +static void +driver_close_device( void *driver_data ) +{ + SonypiData *data = (SonypiData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + /* close file */ + close( data->fd ); + + /* free private data */ + D_FREE ( data ); +} + diff --git a/Source/DirectFB/inputdrivers/tslib/Makefile.am b/Source/DirectFB/inputdrivers/tslib/Makefile.am new file mode 100755 index 0000000..5bca495 --- /dev/null +++ b/Source/DirectFB/inputdrivers/tslib/Makefile.am @@ -0,0 +1,33 @@ +## Makefile.am for DirectFB/inputdrivers/tslib + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +tslib_LTLIBRARIES = libdirectfb_tslib.la + +if BUILD_STATIC +tslib_DATA = $(tslib_LTLIBRARIES:.la=.o) +endif + +tslibdir = $(MODULEDIR)/inputdrivers + +libdirectfb_tslib_la_SOURCES = \ + tslib.c + +libdirectfb_tslib_la_CFLAGS = \ + $(TSLIB_CFLAGS) + +libdirectfb_tslib_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_tslib_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la \ + $(TSLIB_LIBS) + +include $(top_srcdir)/rules/libobject.make diff --git a/Source/DirectFB/inputdrivers/tslib/Makefile.in b/Source/DirectFB/inputdrivers/tslib/Makefile.in new file mode 100755 index 0000000..f630293 --- /dev/null +++ b/Source/DirectFB/inputdrivers/tslib/Makefile.in @@ -0,0 +1,605 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/tslib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(tslibdir)" "$(DESTDIR)$(tslibdir)" +tslibLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(tslib_LTLIBRARIES) +am__DEPENDENCIES_1 = +libdirectfb_tslib_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la $(am__DEPENDENCIES_1) +am_libdirectfb_tslib_la_OBJECTS = libdirectfb_tslib_la-tslib.lo +libdirectfb_tslib_la_OBJECTS = $(am_libdirectfb_tslib_la_OBJECTS) +libdirectfb_tslib_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(libdirectfb_tslib_la_CFLAGS) $(CFLAGS) \ + $(libdirectfb_tslib_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_tslib_la_SOURCES) +DIST_SOURCES = $(libdirectfb_tslib_la_SOURCES) +tslibDATA_INSTALL = $(INSTALL_DATA) +DATA = $(tslib_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +tslib_LTLIBRARIES = libdirectfb_tslib.la +@BUILD_STATIC_TRUE@tslib_DATA = $(tslib_LTLIBRARIES:.la=.o) +tslibdir = $(MODULEDIR)/inputdrivers +libdirectfb_tslib_la_SOURCES = \ + tslib.c + +libdirectfb_tslib_la_CFLAGS = \ + $(TSLIB_CFLAGS) + +libdirectfb_tslib_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_tslib_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la \ + $(TSLIB_LIBS) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/tslib/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/tslib/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-tslibLTLIBRARIES: $(tslib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(tslibdir)" || $(MKDIR_P) "$(DESTDIR)$(tslibdir)" + @list='$(tslib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(tslibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(tslibdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(tslibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(tslibdir)/$$f"; \ + else :; fi; \ + done + +uninstall-tslibLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(tslib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(tslibdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(tslibdir)/$$p"; \ + done + +clean-tslibLTLIBRARIES: + -test -z "$(tslib_LTLIBRARIES)" || rm -f $(tslib_LTLIBRARIES) + @list='$(tslib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_tslib.la: $(libdirectfb_tslib_la_OBJECTS) $(libdirectfb_tslib_la_DEPENDENCIES) + $(libdirectfb_tslib_la_LINK) -rpath $(tslibdir) $(libdirectfb_tslib_la_OBJECTS) $(libdirectfb_tslib_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdirectfb_tslib_la-tslib.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +libdirectfb_tslib_la-tslib.lo: tslib.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirectfb_tslib_la_CFLAGS) $(CFLAGS) -MT libdirectfb_tslib_la-tslib.lo -MD -MP -MF $(DEPDIR)/libdirectfb_tslib_la-tslib.Tpo -c -o libdirectfb_tslib_la-tslib.lo `test -f 'tslib.c' || echo '$(srcdir)/'`tslib.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libdirectfb_tslib_la-tslib.Tpo $(DEPDIR)/libdirectfb_tslib_la-tslib.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='tslib.c' object='libdirectfb_tslib_la-tslib.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdirectfb_tslib_la_CFLAGS) $(CFLAGS) -c -o libdirectfb_tslib_la-tslib.lo `test -f 'tslib.c' || echo '$(srcdir)/'`tslib.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-tslibDATA: $(tslib_DATA) + @$(NORMAL_INSTALL) + test -z "$(tslibdir)" || $(MKDIR_P) "$(DESTDIR)$(tslibdir)" + @list='$(tslib_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(tslibDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(tslibdir)/$$f'"; \ + $(tslibDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(tslibdir)/$$f"; \ + done + +uninstall-tslibDATA: + @$(NORMAL_UNINSTALL) + @list='$(tslib_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(tslibdir)/$$f'"; \ + rm -f "$(DESTDIR)$(tslibdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(tslibdir)" "$(DESTDIR)$(tslibdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-tslibLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-tslibDATA install-tslibLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-tslibDATA uninstall-tslibLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-tslibLTLIBRARIES ctags 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 install-tslibDATA install-tslibLTLIBRARIES \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-tslibDATA \ + uninstall-tslibLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/tslib/tslib.c b/Source/DirectFB/inputdrivers/tslib/tslib.c new file mode 100755 index 0000000..57b8296 --- /dev/null +++ b/Source/DirectFB/inputdrivers/tslib/tslib.c @@ -0,0 +1,292 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Shane Volpe , + Andreas Hundt , + Sven Neumann and + Ville Syrj��. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include + +#include +#include +#include + +#include + +#include + +#include +#include + +#include + +#include +#include +#include + +#include + +#include + +DFB_INPUT_DRIVER( tslib ) + +typedef struct { + CoreInputDevice *device; + DirectThread *thread; + struct tsdev *ts; +} tslibData; + +#define MAX_TSLIB_DEVICES 16 + +static int num_devices = 0; +static char *device_names[MAX_TSLIB_DEVICES]; + +static void * +tslibEventThread( DirectThread *thread, void *driver_data ) +{ + tslibData *data = (tslibData *) driver_data; + struct ts_sample ts_event; + int readlen; + int old_x = -1; + int old_y = -1; + unsigned int old_pressure = 0; + + while ((readlen = ts_read( data->ts, &ts_event, 1 )) >= 0) { + DFBInputEvent evt; + + direct_thread_testcancel( thread ); + + if (readlen < 1) + continue; + + if (ts_event.pressure) { + if (ts_event.x != old_x) { + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_X; + evt.axisabs = ts_event.x; + + dfb_input_dispatch( data->device, &evt ); + + old_x = ts_event.x; + } + + if (ts_event.y != old_y) { + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_Y; + evt.axisabs = ts_event.y; + + dfb_input_dispatch( data->device, &evt ); + + old_y = ts_event.y; + } + } + + if (!ts_event.pressure != !old_pressure) { + evt.type = ts_event.pressure ? DIET_BUTTONPRESS : DIET_BUTTONRELEASE; + evt.flags = DIEF_NONE; + evt.button = DIBI_LEFT; + + dfb_input_dispatch( data->device, &evt ); + + old_pressure = ts_event.pressure; + } + } + + if (readlen < 0) + D_ERROR( "tslib Input thread died\n" ); + + return NULL; +} + +static bool +check_device( const char *device ) +{ + struct tsdev *ts; + + ts = ts_open( device, 0 ); + if (!ts) + return false; + + if (ts_config( ts )) { + ts_close( ts ); + return false; + } + + ts_close( ts ); + + return true; +} + +/* exported symbols */ + +static int +driver_get_available(void) +{ + int i; + char *tsdev; + + /* Use the devices specified in the configuration. */ + if (fusion_vector_has_elements( &dfb_config->tslib_devices )) { + const char *device; + + fusion_vector_foreach (device, i, dfb_config->tslib_devices) { + if (num_devices >= MAX_TSLIB_DEVICES) + break; + + if (check_device( device )) + device_names[num_devices++] = D_STRDUP( device ); + } + + return num_devices; + } + + /* Check for environment variable. */ + tsdev = getenv( "TSLIB_TSDEVICE" ); + if (tsdev && check_device( tsdev )) + device_names[num_devices++] = D_STRDUP( tsdev ); + + /* Try to guess some (more) devices. */ + for (i = 0; i < MAX_TSLIB_DEVICES; i++) { + char buf[32]; + + if (num_devices >= MAX_TSLIB_DEVICES) + break; + + snprintf( buf, 32, "/dev/input/tslib%d", i ); + + /* Already handled above. */ + if (tsdev && !strcmp( tsdev, buf )) + continue; + + if (check_device( buf )) + device_names[num_devices++] = D_STRDUP( buf ); + } + + return num_devices; +} + +static void +driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + + snprintf( info->name, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, + "tslib Input Driver" ); + + snprintf( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, + "tslib" ); + + info->version.major = 0; + info->version.minor = 1; +} + +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + tslibData *data; + struct tsdev *ts; + + /* open device */ + ts = ts_open( device_names[number], 0 ); + if (!ts) { + D_ERROR( "DirectFB/tslib: Error opening `%s'!\n", device_names[number] ); + return DFB_INIT; + } + + /* configure device */ + if (ts_config( ts )) { + D_ERROR( "DirectFB/tslib: Error configuring `%s'!\n", device_names[number] ); + ts_close( ts ); + return DFB_INIT; + } + + /* fill device info structure */ + snprintf( info->desc.name, + DFB_INPUT_DEVICE_DESC_NAME_LENGTH, "tslib touchscreen %d", number ); + + snprintf( info->desc.vendor, + DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "tslib" ); + + info->prefered_id = DIDID_MOUSE; + + info->desc.type = DIDTF_MOUSE; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_axis = DIAI_Y; + info->desc.max_button = DIBI_LEFT; + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(tslibData) ); + if (!data) { + ts_close( ts ); + return D_OOM(); + } + + data->ts = ts; + data->device = device; + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, tslibEventThread, data, "tslib Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ + return DFB_UNSUPPORTED; +} + +static void +driver_close_device( void *driver_data ) +{ + tslibData *data = (tslibData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + /* close device */ + ts_close( data->ts ); + + /* free private data */ + D_FREE( data ); +} diff --git a/Source/DirectFB/inputdrivers/ucb1x00_ts/Makefile.am b/Source/DirectFB/inputdrivers/ucb1x00_ts/Makefile.am new file mode 100755 index 0000000..e85b9bc --- /dev/null +++ b/Source/DirectFB/inputdrivers/ucb1x00_ts/Makefile.am @@ -0,0 +1,31 @@ +## Makefile.am for DirectFB/inputdrivers/ucb1x00_ts + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_ucb1x00_ts.la + +if BUILD_STATIC +input_DATA = $(input_LTLIBRARIES:.la=.o) +endif + +inputdir = $(MODULEDIR)/inputdrivers + +libdirectfb_ucb1x00_ts_la_SOURCES = \ + ucb1x00_ts.c + +libdirectfb_ucb1x00_ts_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_ucb1x00_ts_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/ucb1x00_ts/Makefile.in b/Source/DirectFB/inputdrivers/ucb1x00_ts/Makefile.in new file mode 100755 index 0000000..1738272 --- /dev/null +++ b/Source/DirectFB/inputdrivers/ucb1x00_ts/Makefile.in @@ -0,0 +1,594 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/ucb1x00_ts +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)" +inputLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(input_LTLIBRARIES) +libdirectfb_ucb1x00_ts_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_ucb1x00_ts_la_OBJECTS = ucb1x00_ts.lo +libdirectfb_ucb1x00_ts_la_OBJECTS = \ + $(am_libdirectfb_ucb1x00_ts_la_OBJECTS) +libdirectfb_ucb1x00_ts_la_LINK = $(LIBTOOL) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libdirectfb_ucb1x00_ts_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_ucb1x00_ts_la_SOURCES) +DIST_SOURCES = $(libdirectfb_ucb1x00_ts_la_SOURCES) +inputDATA_INSTALL = $(INSTALL_DATA) +DATA = $(input_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_ucb1x00_ts.la +@BUILD_STATIC_TRUE@input_DATA = $(input_LTLIBRARIES:.la=.o) +inputdir = $(MODULEDIR)/inputdrivers +libdirectfb_ucb1x00_ts_la_SOURCES = \ + ucb1x00_ts.c + +libdirectfb_ucb1x00_ts_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_ucb1x00_ts_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/ucb1x00_ts/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/ucb1x00_ts/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-inputLTLIBRARIES: $(input_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + else :; fi; \ + done + +uninstall-inputLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(inputdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(inputdir)/$$p"; \ + done + +clean-inputLTLIBRARIES: + -test -z "$(input_LTLIBRARIES)" || rm -f $(input_LTLIBRARIES) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_ucb1x00_ts.la: $(libdirectfb_ucb1x00_ts_la_OBJECTS) $(libdirectfb_ucb1x00_ts_la_DEPENDENCIES) + $(libdirectfb_ucb1x00_ts_la_LINK) -rpath $(inputdir) $(libdirectfb_ucb1x00_ts_la_OBJECTS) $(libdirectfb_ucb1x00_ts_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ucb1x00_ts.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-inputDATA: $(input_DATA) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(inputDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(inputDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + done + +uninstall-inputDATA: + @$(NORMAL_UNINSTALL) + @list='$(input_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(inputdir)/$$f'"; \ + rm -f "$(DESTDIR)$(inputdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-inputLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-inputDATA install-inputLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-inputDATA uninstall-inputLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-inputLTLIBRARIES clean-libtool ctags 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-inputDATA \ + install-inputLTLIBRARIES 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 uninstall uninstall-am uninstall-inputDATA \ + uninstall-inputLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/ucb1x00_ts/ucb1x00_ts.c b/Source/DirectFB/inputdrivers/ucb1x00_ts/ucb1x00_ts.c new file mode 100755 index 0000000..1b91477 --- /dev/null +++ b/Source/DirectFB/inputdrivers/ucb1x00_ts/ucb1x00_ts.c @@ -0,0 +1,361 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include + +#include + +#include + +#include +#include +#include +#include +#include + +#include + +#define FIX_PRECISION 8 +#define inttofix(A) ((A) << FIX_PRECISION) +#define fixtoint(A) ((A) >> FIX_PRECISION) +#define fixmult(A, B) (((A) * (B)) >> FIX_PRECISION) +#define fixdiv(A, B) (((A) << FIX_PRECISION) / (B)) + +DFB_INPUT_DRIVER( ucb1x00_ts ) + +typedef struct { + CoreInputDevice *device; + DirectThread *thread; + + int fd; +} ucb1x00TSData; + +/* I copied this from the kernel driver since there is no include file */ +typedef struct { + u16 pressure; + u16 x; + u16 y; + u16 pad; + struct timeval stamp; +} TS_EVENT; + +static struct { + int xmin; + int xmax; + int ymin; + int ymax; + int xswap; + int yswap; + int zthresh; + int jthresh; + int numevents; + int xres; + int yres; +} config = { 50, 930, 50, 930, 1, 1, 50, 5, 8, 640, 480}; + +/* needed for event filter */ +static TS_EVENT *event_buffer = NULL; + +static int +avg_events(int which, int count) +{ + int i, sum = 0; + + for(i = 0; i < count; i++) + sum += which ? event_buffer[i].x : event_buffer[i].y; + + return(sum / count); +} + +static void +filter_event(TS_EVENT *ts_event) +{ + int dx, dy; + static int lastx = 0, lasty = 0; + static int lastb = 0; + static int evcnt = 0; + static int event_index = 0; + + /* Increment the buffer index and the count of items in the buffer. */ + if(++evcnt > config.numevents) evcnt = config.numevents; + if(++event_index == config.numevents) event_index = 0; + + /* If the pen has just been pressed down, reset the counters. */ + if(ts_event->pressure > config.zthresh) { + if(!lastb) { + lastb = 1; + evcnt = 1; + event_index = 0; + } + } else lastb = 0; + + /* Store this event in the circular buffer. */ + direct_memcpy(&event_buffer[event_index], ts_event, sizeof(TS_EVENT)); + + /* Don't try to average and filter if we only have one reading. */ + if(evcnt > 1) { + /* Average the closest values */ + ts_event->y = avg_events(0, evcnt); + ts_event->x = avg_events(1, evcnt); + + /* Ignore movements which are below the minimum threshold */ + dx = ts_event->x - lastx; + if(dx < 0) dx = -dx; + if(dx < config.jthresh) ts_event->x = lastx; + dy = ts_event->y - lasty; + if(dy < 0) dy = -dy; + if(dy < config.jthresh) ts_event->y = lasty; + } + + /* Remember the values we are returning. */ + lastx = ts_event->x; + lasty = ts_event->y; +} + +static void +scale_point( TS_EVENT *ts_event ) +{ + int x = ts_event->x; + int y = ts_event->y; + + /* Clip any values outside the expected range. */ + if(x > config.xmax) x = config.xmax; + if(x < config.xmin) x = config.xmin; + if(y > config.ymax) y = config.ymax; + if(y < config.ymin) y = config.ymin; + + /* ((x - config.xmin) / (config.xmax - config.xmin)) * config.xres */ + x = fixtoint(fixmult(fixdiv(inttofix(x - config.xmin), + inttofix(config.xmax - config.xmin)), inttofix(config.xres))); + + /* ((y - config.ymin) / (config.ymax - config.ymin)) * config.yres */ + y = fixtoint(fixmult(fixdiv(inttofix(y - config.ymin), + inttofix(config.ymax - config.ymin)), inttofix(config.yres))); + + /* Swap the X and/or Y axes if necessary.*/ + ts_event->x = config.xswap ? (config.xres - x) : x; + ts_event->y = config.yswap ? (config.yres - y) : y; +} + +static void * +ucb1x00tsEventThread( DirectThread *thread, void *driver_data ) +{ + ucb1x00TSData *data = (ucb1x00TSData*) driver_data; + + TS_EVENT ts_event; + + int readlen; + + unsigned short old_x = -1; + unsigned short old_y = -1; + unsigned short old_pressure = 0; + + while ((readlen = read(data->fd, &ts_event, sizeof(TS_EVENT))) > 0 || + errno == EINTR) + { + DFBInputEvent evt; + + direct_thread_testcancel( thread ); + + if (readlen < 1) + continue; + + filter_event( &ts_event ); + scale_point( &ts_event ); + + ts_event.pressure = (ts_event.pressure > config.zthresh ); + + if (ts_event.pressure) { + if (ts_event.x != old_x) { + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_X; + evt.axisabs = ts_event.x; + + dfb_input_dispatch( data->device, &evt ); + + old_x = ts_event.x; + } + + if (ts_event.y != old_y) { + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_Y; + evt.axisabs = ts_event.y; + + dfb_input_dispatch( data->device, &evt ); + + old_y = ts_event.y; + } + } + + if ((ts_event.pressure && !old_pressure) || + (!ts_event.pressure && old_pressure)) { + evt.type = (ts_event.pressure ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE); + evt.flags = DIEF_NONE; + evt.button = DIBI_LEFT; + + dfb_input_dispatch( data->device, &evt ); + + old_pressure = ts_event.pressure; + } + } + + if (readlen <= 0) + D_PERROR ("ucb1x00 Touchscreen thread died\n"); + + return NULL; +} + + +/* exported symbols */ + +static int +driver_get_available( void ) +{ + int fd; + + fd = open( "/dev/ucb1x00-ts", O_RDONLY | O_NOCTTY ); + if (fd < 0) + return 0; + + close( fd ); + + return 1; +} + +static void +driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf( info->name, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "ucb1x00 Touchscreen Driver" ); + + snprintf( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, + "fischlustig" ); + + info->version.major = 0; + info->version.minor = 4; +} + +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + int fd; + ucb1x00TSData *data; + + /* open device */ + fd = open( "/dev/ucb1x00-ts", O_RDONLY | O_NOCTTY ); + if (fd < 0) { + D_PERROR( "DirectFB/ucb1x00: Error opening `/dev/ucb1x00-ts'!\n" ); + return DFB_INIT; + } + + /* fill device info structure */ + snprintf( info->desc.name, + DFB_INPUT_DEVICE_DESC_NAME_LENGTH, "ucb1x00 Touchscreen" ); + + snprintf( info->desc.vendor, + DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "Unknown" ); + + info->prefered_id = DIDID_MOUSE; + + info->desc.type = DIDTF_MOUSE; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_axis = DIAI_Y; + info->desc.max_button = DIBI_LEFT; + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(ucb1x00TSData) ); + if (!data) { + close( fd ); + return D_OOM(); + } + + data->fd = fd; + data->device = device; + + event_buffer = malloc( sizeof( TS_EVENT) * config.numevents ); + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, ucb1x00tsEventThread, data, "UCB TS Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ + return DFB_UNSUPPORTED; +} + +static void +driver_close_device( void *driver_data ) +{ + ucb1x00TSData *data = (ucb1x00TSData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + /* close device */ + if (close( data->fd ) < 0) + D_PERROR( "DirectFB/ucb1x00: Error closing `/dev/ucb1x00-ts'!\n" ); + + if (event_buffer) + free( event_buffer ); + + /* free private data */ + D_FREE( data ); +} diff --git a/Source/DirectFB/inputdrivers/wm97xx_ts/Makefile.am b/Source/DirectFB/inputdrivers/wm97xx_ts/Makefile.am new file mode 100755 index 0000000..d65c509 --- /dev/null +++ b/Source/DirectFB/inputdrivers/wm97xx_ts/Makefile.am @@ -0,0 +1,31 @@ +## Makefile.am for DirectFB/inputdrivers/wm97xx + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_wm97xx_ts.la + +if BUILD_STATIC +input_DATA = $(input_LTLIBRARIES:.la=.o) +endif + +inputdir = $(MODULEDIR)/inputdrivers + +libdirectfb_wm97xx_ts_la_SOURCES = \ + wm97xx_ts.c + +libdirectfb_wm97xx_ts_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_wm97xx_ts_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/wm97xx_ts/Makefile.in b/Source/DirectFB/inputdrivers/wm97xx_ts/Makefile.in new file mode 100755 index 0000000..90a99e8 --- /dev/null +++ b/Source/DirectFB/inputdrivers/wm97xx_ts/Makefile.in @@ -0,0 +1,593 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/wm97xx_ts +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)" +inputLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(input_LTLIBRARIES) +libdirectfb_wm97xx_ts_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_wm97xx_ts_la_OBJECTS = wm97xx_ts.lo +libdirectfb_wm97xx_ts_la_OBJECTS = \ + $(am_libdirectfb_wm97xx_ts_la_OBJECTS) +libdirectfb_wm97xx_ts_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_wm97xx_ts_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_wm97xx_ts_la_SOURCES) +DIST_SOURCES = $(libdirectfb_wm97xx_ts_la_SOURCES) +inputDATA_INSTALL = $(INSTALL_DATA) +DATA = $(input_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_wm97xx_ts.la +@BUILD_STATIC_TRUE@input_DATA = $(input_LTLIBRARIES:.la=.o) +inputdir = $(MODULEDIR)/inputdrivers +libdirectfb_wm97xx_ts_la_SOURCES = \ + wm97xx_ts.c + +libdirectfb_wm97xx_ts_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_wm97xx_ts_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/wm97xx_ts/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/wm97xx_ts/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-inputLTLIBRARIES: $(input_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + else :; fi; \ + done + +uninstall-inputLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(inputdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(inputdir)/$$p"; \ + done + +clean-inputLTLIBRARIES: + -test -z "$(input_LTLIBRARIES)" || rm -f $(input_LTLIBRARIES) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_wm97xx_ts.la: $(libdirectfb_wm97xx_ts_la_OBJECTS) $(libdirectfb_wm97xx_ts_la_DEPENDENCIES) + $(libdirectfb_wm97xx_ts_la_LINK) -rpath $(inputdir) $(libdirectfb_wm97xx_ts_la_OBJECTS) $(libdirectfb_wm97xx_ts_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wm97xx_ts.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-inputDATA: $(input_DATA) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(inputDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(inputDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + done + +uninstall-inputDATA: + @$(NORMAL_UNINSTALL) + @list='$(input_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(inputdir)/$$f'"; \ + rm -f "$(DESTDIR)$(inputdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-inputLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-inputDATA install-inputLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-inputDATA uninstall-inputLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-inputLTLIBRARIES clean-libtool ctags 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-inputDATA \ + install-inputLTLIBRARIES 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 uninstall uninstall-am uninstall-inputDATA \ + uninstall-inputLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/wm97xx_ts/wm97xx_ts.c b/Source/DirectFB/inputdrivers/wm97xx_ts/wm97xx_ts.c new file mode 100755 index 0000000..8294a23 --- /dev/null +++ b/Source/DirectFB/inputdrivers/wm97xx_ts/wm97xx_ts.c @@ -0,0 +1,260 @@ +/* + + Driver for Wolfson WM9705/WM9712 touchscreen controllers as + found in the Dell Axim and Toshiba e740. + + liam.girdwood@wolfsonmicro.com + + NOTE: Please make sure that pressure measurement is enable in the + kernel driver. (i.e. pil != 0) Please read + wolfson-touchscreen.txt in your kernel documentation for + details. + + Based on the h3600_ts.c driver: + + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include + +#include + +#include + +#include +#include +#include +#include + +#include + + +DFB_INPUT_DRIVER( wm97xx_ts ) + +typedef struct { + CoreInputDevice *device; + DirectThread *thread; + + int fd; +} WM97xxTSData; + +/* I copied this from the kernel driver since there is no include file */ +typedef struct { + u16 pressure; + u16 x; + u16 y; + u16 pad; + struct timeval stamp; +} TS_EVENT; + +static void * +wm97xxtsEventThread( DirectThread *thread, void *driver_data ) +{ + WM97xxTSData *data = (WM97xxTSData*) driver_data; + + TS_EVENT ts_event; + + int readlen; + + unsigned short old_x = -1; + unsigned short old_y = -1; + unsigned short old_pressure = 0; + + while ((readlen = read(data->fd, &ts_event, sizeof(TS_EVENT))) > 0 || + errno == EINTR) + { + DFBInputEvent evt; + + direct_thread_testcancel( thread ); + + if (readlen < 1) + continue; + + if (ts_event.pressure) { + if (ts_event.x != old_x) { + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_X; + evt.axisabs = ts_event.x; + + dfb_input_dispatch( data->device, &evt ); + + old_x = ts_event.x; + } + + if (ts_event.y != old_y) { + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_Y; + evt.axisabs = ts_event.y; + + dfb_input_dispatch( data->device, &evt ); + + old_y = ts_event.y; + } + } + + if ((ts_event.pressure && !old_pressure) || + (!ts_event.pressure && old_pressure)) { + evt.type = (ts_event.pressure ? + DIET_BUTTONPRESS : DIET_BUTTONRELEASE); + evt.flags = DIEF_NONE; + evt.button = DIBI_LEFT; + + dfb_input_dispatch( data->device, &evt ); + + old_pressure = ts_event.pressure; + } + } + + if (readlen <= 0) + D_PERROR ("WM97xx Touchscreen thread died\n"); + + return NULL; +} + + +/* exported symbols */ + +static int driver_get_available( void ) +{ + int fd; + + fd = open( "/dev/touchscreen/wm97xx", O_RDONLY | O_NOCTTY ); + if (fd < 0) + return 0; + + close( fd ); + + return 1; +} + +static void +driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf( info->name, + DFB_INPUT_DRIVER_INFO_NAME_LENGTH, "WM97xx Touchscreen Driver" ); + + snprintf( info->vendor, + DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, "directfb.org" ); + + info->version.major = 0; + info->version.minor = 1; +} + +static DFBResult +driver_open_device( CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data ) +{ + int fd; + WM97xxTSData *data; + + /* open device */ + fd = open( "/dev/touchscreen/wm97xx", O_RDONLY | O_NOCTTY ); + if (fd < 0) { + D_PERROR( "DirectFB/WM97xx: Error opening `/dev/touchscreen/wm97xx'!\n" ); + return DFB_INIT; + } + + /* fill device info structure */ + snprintf( info->desc.name, + DFB_INPUT_DEVICE_DESC_NAME_LENGTH, "WM97xx Touchscreen" ); + + snprintf( info->desc.vendor, + DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, "Wolfson Microelectronics" ); + + info->prefered_id = DIDID_MOUSE; + + info->desc.type = DIDTF_MOUSE; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_axis = DIAI_Y; + info->desc.max_button = DIBI_LEFT; + + /* allocate and fill private data */ + data = D_CALLOC( 1, sizeof(WM97xxTSData) ); + if (!data) { + close( fd ); + return D_OOM(); + } + + data->fd = fd; + data->device = device; + + /* start input thread */ + data->thread = direct_thread_create( DTT_INPUT, wm97xxtsEventThread, data, "WM97xx TS Input" ); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult +driver_get_keymap_entry( CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry ) +{ + return DFB_UNSUPPORTED; +} + +static void +driver_close_device( void *driver_data ) +{ + WM97xxTSData *data = (WM97xxTSData*) driver_data; + + /* stop input thread */ + direct_thread_cancel( data->thread ); + direct_thread_join( data->thread ); + direct_thread_destroy( data->thread ); + + /* close device */ + if (close( data->fd ) < 0) + D_PERROR( "DirectFB/WM97xx: Error closing `/dev/touchscreen/wm97xx'!\n" ); + + /* free private data */ + D_FREE( data ); +} diff --git a/Source/DirectFB/inputdrivers/zytronic/Makefile.am b/Source/DirectFB/inputdrivers/zytronic/Makefile.am new file mode 100755 index 0000000..b113b4b --- /dev/null +++ b/Source/DirectFB/inputdrivers/zytronic/Makefile.am @@ -0,0 +1,30 @@ +## Makefile.am for DirectFB/inputdrivers/zytronic + +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_zytronic.la + +if BUILD_STATIC +input_DATA = $(input_LTLIBRARIES:.la=.o) +endif + +inputdir = $(MODULEDIR)/inputdrivers + +libdirectfb_zytronic_la_SOURCES = zytronic.c + +libdirectfb_zytronic_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_zytronic_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + + +include $(top_srcdir)/rules/libobject.make + diff --git a/Source/DirectFB/inputdrivers/zytronic/Makefile.in b/Source/DirectFB/inputdrivers/zytronic/Makefile.in new file mode 100755 index 0000000..6819549 --- /dev/null +++ b/Source/DirectFB/inputdrivers/zytronic/Makefile.in @@ -0,0 +1,591 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 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@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@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@ +target_triplet = @target@ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/rules/libobject.make +subdir = inputdrivers/zytronic +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)" +inputLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(input_LTLIBRARIES) +libdirectfb_zytronic_la_DEPENDENCIES = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la +am_libdirectfb_zytronic_la_OBJECTS = zytronic.lo +libdirectfb_zytronic_la_OBJECTS = \ + $(am_libdirectfb_zytronic_la_OBJECTS) +libdirectfb_zytronic_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libdirectfb_zytronic_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(libdirectfb_zytronic_la_SOURCES) +DIST_SOURCES = $(libdirectfb_zytronic_la_SOURCES) +inputDATA_INSTALL = $(INSTALL_DATA) +DATA = $(input_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +ASFLAGS = @ASFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIR = @DATADIR@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DFB_CFLAGS_OMIT_FRAME_POINTER = @DFB_CFLAGS_OMIT_FRAME_POINTER@ +DFB_INTERNAL_CFLAGS = @DFB_INTERNAL_CFLAGS@ +DFB_LDFLAGS = @DFB_LDFLAGS@ +DFB_SMOOTH_SCALING = @DFB_SMOOTH_SCALING@ +DIRECTFB_BINARY_AGE = @DIRECTFB_BINARY_AGE@ +DIRECTFB_CSOURCE = @DIRECTFB_CSOURCE@ +DIRECTFB_INTERFACE_AGE = @DIRECTFB_INTERFACE_AGE@ +DIRECTFB_MAJOR_VERSION = @DIRECTFB_MAJOR_VERSION@ +DIRECTFB_MICRO_VERSION = @DIRECTFB_MICRO_VERSION@ +DIRECTFB_MINOR_VERSION = @DIRECTFB_MINOR_VERSION@ +DIRECTFB_VERSION = @DIRECTFB_VERSION@ +DIRECT_BUILD_DEBUG = @DIRECT_BUILD_DEBUG@ +DIRECT_BUILD_DEBUGS = @DIRECT_BUILD_DEBUGS@ +DIRECT_BUILD_GETTID = @DIRECT_BUILD_GETTID@ +DIRECT_BUILD_NETWORK = @DIRECT_BUILD_NETWORK@ +DIRECT_BUILD_STDBOOL = @DIRECT_BUILD_STDBOOL@ +DIRECT_BUILD_TEXT = @DIRECT_BUILD_TEXT@ +DIRECT_BUILD_TRACE = @DIRECT_BUILD_TRACE@ +DSYMUTIL = @DSYMUTIL@ +DYNLIB = @DYNLIB@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ +FREETYPE_LIBS = @FREETYPE_LIBS@ +FREETYPE_PROVIDER = @FREETYPE_PROVIDER@ +FUSION_BUILD_KERNEL = @FUSION_BUILD_KERNEL@ +FUSION_BUILD_MULTI = @FUSION_BUILD_MULTI@ +FUSION_MESSAGE_SIZE = @FUSION_MESSAGE_SIZE@ +GIF_PROVIDER = @GIF_PROVIDER@ +GREP = @GREP@ +HAVE_LINUX = @HAVE_LINUX@ +INCLUDEDIR = @INCLUDEDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERNALINCLUDEDIR = @INTERNALINCLUDEDIR@ +JPEG_PROVIDER = @JPEG_PROVIDER@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBJPEG = @LIBJPEG@ +LIBOBJS = @LIBOBJS@ +LIBPNG = @LIBPNG@ +LIBPNG_CONFIG = @LIBPNG_CONFIG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_BINARY = @LT_BINARY@ +LT_CURRENT = @LT_CURRENT@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MAN2HTML = @MAN2HTML@ +MKDIR_P = @MKDIR_P@ +MODULEDIR = @MODULEDIR@ +MODULEDIRNAME = @MODULEDIRNAME@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +OSX_LIBS = @OSX_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PNG_PROVIDER = @PNG_PROVIDER@ +RANLIB = @RANLIB@ +RUNTIME_SYSROOT = @RUNTIME_SYSROOT@ +SDL_CFLAGS = @SDL_CFLAGS@ +SDL_LIBS = @SDL_LIBS@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOPATH = @SOPATH@ +STRIP = @STRIP@ +SYSCONFDIR = @SYSCONFDIR@ +SYSFS_LIBS = @SYSFS_LIBS@ +THREADFLAGS = @THREADFLAGS@ +THREADLIB = @THREADLIB@ +TSLIB_CFLAGS = @TSLIB_CFLAGS@ +TSLIB_LIBS = @TSLIB_LIBS@ +VERSION = @VERSION@ +VNC_CFLAGS = @VNC_CFLAGS@ +VNC_CONFIG = @VNC_CONFIG@ +VNC_LIBS = @VNC_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +X11_LIBS = @X11_LIBS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +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@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +INCLUDES = \ + -I$(top_srcdir)/include \ + -I$(top_builddir)/lib \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/src + +input_LTLIBRARIES = libdirectfb_zytronic.la +@BUILD_STATIC_TRUE@input_DATA = $(input_LTLIBRARIES:.la=.o) +inputdir = $(MODULEDIR)/inputdrivers +libdirectfb_zytronic_la_SOURCES = zytronic.c +libdirectfb_zytronic_la_LDFLAGS = \ + -module \ + -avoid-version \ + $(DFB_LDFLAGS) + +libdirectfb_zytronic_la_LIBADD = \ + $(top_builddir)/lib/direct/libdirect.la \ + $(top_builddir)/src/libdirectfb.la + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/rules/libobject.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu inputdrivers/zytronic/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu inputdrivers/zytronic/Makefile +.PRECIOUS: 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__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-inputLTLIBRARIES: $(input_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(inputLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + else :; fi; \ + done + +uninstall-inputLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(inputdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(inputdir)/$$p"; \ + done + +clean-inputLTLIBRARIES: + -test -z "$(input_LTLIBRARIES)" || rm -f $(input_LTLIBRARIES) + @list='$(input_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libdirectfb_zytronic.la: $(libdirectfb_zytronic_la_OBJECTS) $(libdirectfb_zytronic_la_DEPENDENCIES) + $(libdirectfb_zytronic_la_LINK) -rpath $(inputdir) $(libdirectfb_zytronic_la_OBJECTS) $(libdirectfb_zytronic_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zytronic.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-inputDATA: $(input_DATA) + @$(NORMAL_INSTALL) + test -z "$(inputdir)" || $(MKDIR_P) "$(DESTDIR)$(inputdir)" + @list='$(input_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(inputDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(inputdir)/$$f'"; \ + $(inputDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(inputdir)/$$f"; \ + done + +uninstall-inputDATA: + @$(NORMAL_UNINSTALL) + @list='$(input_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(inputdir)/$$f'"; \ + rm -f "$(DESTDIR)$(inputdir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(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 $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$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 $(LTLIBRARIES) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(inputdir)" "$(DESTDIR)$(inputdir)"; 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: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-inputLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-inputDATA install-inputLTLIBRARIES + +install-dvi: install-dvi-am + +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 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -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-inputDATA uninstall-inputLTLIBRARIES + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-inputLTLIBRARIES clean-libtool ctags 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-inputDATA \ + install-inputLTLIBRARIES 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 uninstall uninstall-am uninstall-inputDATA \ + uninstall-inputLTLIBRARIES + +%.o: .libs/%.a %.la + rm -f $<.tmp/*.o + if test -d $<.tmp; then rmdir $<.tmp; fi + mkdir $<.tmp + (cd $<.tmp && $(AR) x ../../$<) + $(LD) -o $@ -r $<.tmp/*.o + rm -f $<.tmp/*.o && rmdir $<.tmp + +.PHONY: $(LTLIBRARIES:%.la=.libs/%.a) +# 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/Source/DirectFB/inputdrivers/zytronic/zytronic.c b/Source/DirectFB/inputdrivers/zytronic/zytronic.c new file mode 100755 index 0000000..e98d480 --- /dev/null +++ b/Source/DirectFB/inputdrivers/zytronic/zytronic.c @@ -0,0 +1,628 @@ +/* + (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) + (c) Copyright 2000-2004 Convergence (integrated media) GmbH + + All rights reserved. + + Written by Denis Oliver Kropp , + Andreas Hundt , + Sven Neumann , + Ville Syrjälä and + Claudio Ciccani . + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +/* + * This is a driver for a Zytronic Touchscreen. + * Note that is not the standard Zytronic (microsoft-DLL controllable) touchscreen; + * It uses a micro-controller similar to the one of Elo or Mutouch touchscreens. + * The configuration inside directfbrc is equal to Elo/Mutouch config. + * All three touchscreens are conceptualised to use 4096x4096 virtual resolutions. + * + * This driver has been kindly provided by Jacques Luder. + * Written by Eric Wajman - Jacques Luder. + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include + +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + +DFB_INPUT_DRIVER( zytronic ) + + +// codes de retours : + #define ZYT_ERR_NOT_START_OF_READ -1 // erreur si on demande un lecture de msg alors que l'on ne + // reçoit pas ':' comme premier caractère (à priori ne devrait + // jamais arriver...?) + #define ZYT_ERR_CANT_OPEN -2 // erreur si on n'arrive pas à ouvrir le "fichier" lié au device. + #define ZYT_ACK_NACK -3 // prévient que le message lu est un ack/nack + // et non un vrai message + #define ZYT_END_OF_CONF_FILE -4 // prévient que l'on a atteint la fin du fichier de configuration + +// infos utiles : + #define ZYT_PAQUET_SIZE 128 // taille max d'un msg envoyé/reçu (pour la taille du tableau) + #define ZYT_ENDOFMSG_CR 13 // 1er caractère de fin de message reçu + #define ZYT_ENDOFMSG_LF 10 // 2ème caractère de fin de message reçu + +// commandes protocoles (pas toutes utilisées dans ce driver) : + #define ZYT_ENABLE_CONTROLLER 201 + #define ZYT_DISABLE_CONTROLLER 200 + + #define ZYT_XY_TOUCH_MESSAGE_MODE 210 + #define ZYT_INIT_FW_RESET 72 + #define ZYT_FORCE_EQUALISATION 69 + #define ZYT_SET_TOUCH_THRESHOLD 100 // + valeur de Threshold voulue (entre 5 et 50) + + #define ZYT_REQ_FW_AND_ID 86 + #define ZYT_REQ_NON_VOLATILE_SETTINGS 88 + #define ZYT_RESTORE_FACTORY_DEFAULT_SETTINGS 68 + #define ZYT_REQ_SHORT_STATUS_MESSAGE 71 + + #define ZYT_REQ_SINGLE_FRAME_OF_RAW_SENSOR_DATA 82 + #define ZYT_ENABLE_CONTINUOUS_RAW_SENSOR_DATA 205 + #define ZYT_DISABLE_CONTINUOUS_RAW_SENSOR_DATA 204 + + #define ZYT_SET_FRAME_AVERAGING 220 // + nombre de frame pour "xy averaging" voulue (1 à 9) + #define ZYT_SET_GLASS_THICKNESS 230 // + valeur (ci dessous) + #define ZYT_GLASS_THIN 0 + #define ZYT_GLASS_MEDIUM 1 + #define ZYT_GLASS_THICK 2 + + #define ZYT_ENABLE_CONTROLLER_ACK_NAK 203 + #define ZYT_DISABLE_CONTROLLER_ACK_NAK 202 + #define ZYT_STORE_DATA_BLOCK 213 // + le code à enregistrer (voir la doc du protocole...) + #define ZYT_RETRIEVE_DATA_BLOCK 214 // + taile des infos à récupèrer (voir la doc du protocole...) + +// paramètres de notre fichier de configuration : + #define ZYT_CONF_FILE "/etc/zyposConf" // le nom de notre fichier de configuration + #define ZYT_CONF_DIM_DALLE_X "dimDalleX" + #define ZYT_CONF_DIM_DALLE_Y "dimDalleY" + #define ZYT_CONF_SEUIL "seuil" + #define ZYT_CONF_EPAISSEUR "epaisseur" + #define ZYT_CONF_ATTENTE_MULTI_CLIC "attenteMultiClic" + #define ZYT_CONF_MODE "mode" + #define ZYT_CONF_FRAME_AVERAGING "frameAveraging" + #define ZYT_CONF_NB_CLIGN_TO_PRESS "nbClignToPress" + #define ZYT_CONF_DEBUG "debug" + +// types d'action (pour ZytData->action): + #define ZYT_ACTION_TOUCH 0x01 + #define ZYT_ACTION_RELEASE 0x00 + +// les masques : + #define ZYT_MASK_ACTION 0x40 + #define ZYT_MASK_SYNC_MSG 0x80 + +typedef enum{ + NO_DRAG_DROP=0, + CONTINUOUS=1, +} ZytMode; + +typedef enum{ + NO_DEBUG=0, + DEBUG=1, +} ZytDebug; + +// structure du paramètrage +typedef struct { + unsigned short dimDalleX; + unsigned short dimDalleY; + unsigned short seuil; + unsigned short epaisseur; + unsigned int attenteMultiClic; + ZytMode mode; + unsigned short frameRateAveraging; + unsigned short nbClignToPress; + ZytDebug debug; +} ZytConf_t; + +/* structure de data du Zytronic */ +typedef struct __ZytData__ { + int fd; + DirectThread *thread; + CoreInputDevice *device; + unsigned short x; + unsigned short y; + unsigned char action; +} ZytData; + +/* Global Variables */ +static unsigned char packet[ZYT_PAQUET_SIZE]; +static struct termios options; // pour changer les configurations du port (avec cfmakeraw) +static struct termios saved_options;// pour sauvegarder l'ancienne configuration du port et la rétablir après +static ZytConf_t zytConf; + +// fonction pour faire des mini-pauses en millisecondes : (utile? on garde) +static inline void __mdelay(unsigned int msec) +{ + struct timespec delay; + + delay.tv_sec = 0; + delay.tv_nsec = msec * 1000000; + nanosleep (&delay, NULL); +} + +// procédure pour envoyer un paquet au controleur Zytronic, encapsulé d'une certaine manière par rapport +// au protocole (pour Zytronic il y n'a rien autour du code OP_CODE lui même) +static inline void ZytSendPacket(int file, unsigned char *msg, unsigned char len) +{ + write(file,msg,len); +} + +// procédure pour lire un "paquet" de données venant du controleur (un message donc) +static int ZytReadMsg(int file, unsigned char *msg) +{ + int i=0; + read(file,&msg[0],1); + + if(msg[0]==':'){ // si c'est un réponse à une commande : + do{ // on lit tant qu'on trouve pas les 2 caractères de fin : + i++; // on commence à lire à 1 (car le 0 est déjà lu) + read(file,&msg[i],1); + }while(msg[i]!=ZYT_ENDOFMSG_LF || msg[i-1]!=ZYT_ENDOFMSG_CR); + }else if(msg[0]==0xC0 || msg[0]==0x80){ // si c'est un appui ou un relachement sur la dalle : + // on lit les 4 caractères pour la position du touché : + for(i=1;i<5;i++){ + read(file,&msg[i],1); + } + }else if(msg[0]==0x06 || msg[0]==0x15){ // si c'est un ACK/NACK on le dit + if(zytConf.debug==DEBUG){ + D_INFO("ZYT, reception d'un ACK/NACK (6=ACK, 21=NACK): %d\n",msg[0]); //debug + } + return ZYT_ACK_NACK; + }else { // sinon : ce n'est pas le début d'une lecture => on a perdu des donneés précédemment ... + D_INFO("ZYT_ERR_NOT_START_OF_READ\n"); // ça ne devrait PAS arriver ! + return ZYT_ERR_NOT_START_OF_READ; + } + if(zytConf.debug==DEBUG){ + D_INFO("ZYT_READ_MSG : nb octets recus= %d\n",i); // debug + } + + return 0; +} + +#define WORD_ASSEMBLY(b1,b2) (((b2) << 7) | (b1)) +// fonction qui permet de récupèrer les informations contenues dans un "message" en mode "touch XY mode" *** +static int ZytReadTouchMessage(ZytData* event){ + if( ZytReadMsg(event->fd,packet) != 0 ) { + return 0; // on renvoit qu'on a pas pu lire correctement + } + + // on récupère les infos x,y et appui ou relachement: + if( (packet[0] & ZYT_MASK_ACTION) == 0 ){ + event->action = ZYT_ACTION_RELEASE; + }else{ + event->action = ZYT_ACTION_TOUCH; + } + + event->x = (float)(4096*WORD_ASSEMBLY(packet[1], packet[2])/zytConf.dimDalleX); + event->y = (float)(4096*WORD_ASSEMBLY(packet[3], packet[4])/zytConf.dimDalleY); + + return 1; // on dit que on a effectivement bien lu +} + +// procédure pour écrire un paramètre dans le fichier de configuration Zytronic : +static void ecrireConf(int f,char *sp, char *sv){ + char tmp[100]; + + strcpy(tmp,":"); + strcat(tmp,sp); + strcat(tmp,"="); + strcat(tmp,sv); + strcat(tmp,";\n"); + write(f,tmp,strlen(tmp)); +} + +// procédure pour créer le fichier de configuration avec les valeurs par défaut +static void createConfigFile(int *fdConf){ + char tmp[10]; + + // création du fichier : + *fdConf = open(ZYT_CONF_FILE,O_RDWR | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO); + + // mise en place des valeurs par défaut : + sprintf(tmp,"%d",zytConf.dimDalleX); + ecrireConf(*fdConf,ZYT_CONF_DIM_DALLE_X,tmp); + sprintf(tmp,"%d",zytConf.dimDalleY); + ecrireConf(*fdConf,ZYT_CONF_DIM_DALLE_Y,tmp); + sprintf(tmp,"%d",zytConf.seuil); + ecrireConf(*fdConf,ZYT_CONF_SEUIL,tmp); + sprintf(tmp,"%d",zytConf.epaisseur); + ecrireConf(*fdConf,ZYT_CONF_EPAISSEUR,tmp); + sprintf(tmp,"%d",zytConf.attenteMultiClic); + ecrireConf(*fdConf,ZYT_CONF_ATTENTE_MULTI_CLIC,tmp); + sprintf(tmp,"%d",zytConf.mode); + ecrireConf(*fdConf,ZYT_CONF_MODE,tmp); + sprintf(tmp,"%d",zytConf.frameRateAveraging); + ecrireConf(*fdConf,ZYT_CONF_FRAME_AVERAGING,tmp); + sprintf(tmp,"%d",zytConf.nbClignToPress); + ecrireConf(*fdConf,ZYT_CONF_NB_CLIGN_TO_PRESS,tmp); + sprintf(tmp,"%d",zytConf.debug); + ecrireConf(*fdConf,ZYT_CONF_DEBUG,tmp); + D_INFO("fsync renvoi la valeur: %d\n",fsync(*fdConf)); //pour s'assurer qu'on écrit bien dans le fichier +} + +// procédure qui retourne le prochain paramètre lu dans le fichier de configuration +static int nextConf(int fdConf,char *param, char *res){ + char charActuel; + int i,nb=1; + + // note : on suppose pour l'instant qu'aucune erreur de lecture n'intervient, ni de fichier mal formaté *** ... + + // on cherche le début d'un paramètre de configuration (ou la fin du fichier) : + while(charActuel!=':' && nb==1){ + nb = read(fdConf,&charActuel,1); + } + if(nb==0){ // le cas échéant, on prévient que le fichier ne contient pas d'autres paramètres (fin du fichier) + return ZYT_END_OF_CONF_FILE; + } + + // on enregistre le nom du paramètre: + i=0; + read(fdConf,&charActuel,1); + while(charActuel!='='){ + param[i]=charActuel; + read(fdConf,&charActuel,1); + i++; + } + param[i]='\0'; + + + // on enregistre la valeur de ce paramètre : + i=0; + read(fdConf,&charActuel,1); + while(charActuel!=';'){ + res[i]=charActuel; + read(fdConf,&charActuel,1); + i++; + } + res[i]='\0'; + + // on retourne le tout (en indiquant que tout s'est bien passé, on a pas atteint la fin du fichier) + return 0; +} + +// procédure pour "activer" le device, en l'occurence : mettre les paramètres de base qui nous intéressent nous : +static void ZytActivateDevice(int fd) +{ + int fdConf,val; + char param[100],res[10]; + + //paramètres par défaut : (également utilisés pour créer le fichier de configuration par la suite, s'il n'existe pas) + zytConf.dimDalleX = 1024; + zytConf.dimDalleY = 768; + zytConf.seuil = 10; + zytConf.epaisseur = 1; + zytConf.attenteMultiClic = 300; + // par défaut on ne garde que le premier appui d'une série : la "souris" ne bougera pas entre un appui et un relachement + zytConf.mode=NO_DRAG_DROP; + zytConf.frameRateAveraging=3; + zytConf.nbClignToPress=5; // le nombre d'appuis successifs pour comprendre un appui après un clignotement + zytConf.debug=NO_DEBUG; + + // récupération des paramètres choisis, et création du fichier si besoin : + fdConf = open(ZYT_CONF_FILE,O_RDWR); + if(fdConf==-1){ + D_INFO("ZYT, le fichier %s de configuration de la dalle zytronic n'existe pas, creation en cours...\n",ZYT_CONF_FILE); + createConfigFile(&fdConf); + D_INFO("ZYT, ...creation de %s finie.\n",ZYT_CONF_FILE); + }else{ + D_INFO("ZYT, le fichier %s de configuration de la dalle zytronic existe.\n",ZYT_CONF_FILE); + } + + // puis, on charge les valeurs de configuration, en gardant les valeurs par défaut pour les paramètres non précisés : + lseek(fdConf,0,SEEK_SET); // on retourne au début du fichier (au cas où on vient de le créé) + while(nextConf(fdConf,param,res)!=ZYT_END_OF_CONF_FILE){ + val = atoi(res); + D_INFO("parametre : %s = %d\n",param,val); //debug + if(strcmp(param,ZYT_CONF_DIM_DALLE_X)==0){ + zytConf.dimDalleX=val; + }else if(strcmp(param,ZYT_CONF_DIM_DALLE_Y)==0){ + zytConf.dimDalleY=val; + }else if(strcmp(param,ZYT_CONF_SEUIL)==0){ + zytConf.seuil=val; + }else if(strcmp(param,ZYT_CONF_EPAISSEUR)==0){ + zytConf.epaisseur=val; + }else if(strcmp(param,ZYT_CONF_ATTENTE_MULTI_CLIC)==0){ + zytConf.attenteMultiClic=val*1000; //on passe les millisecondes en microsecondes + }else if(strcmp(param,ZYT_CONF_MODE)==0){ + zytConf.mode=val; + }else if(strcmp(param,ZYT_CONF_FRAME_AVERAGING)==0){ + zytConf.frameRateAveraging=val; + }else if(strcmp(param,ZYT_CONF_NB_CLIGN_TO_PRESS)==0){ + zytConf.nbClignToPress=val; + }else if(strcmp(param,ZYT_CONF_DEBUG)==0){ + zytConf.debug=val; + }else { + D_INFO("ZYT, parametre non reconnu : %s\n",param); + D_INFO("ZYT, veuillez verifier le fichier de configuration %s!\n",ZYT_CONF_FILE); + } + } + close(fdConf); + + // envoi des paramètres du controleur pour utilisation normale : + //packet[0]=ZYT_INIT_FW_RESET; // permet de "mieux" initialiser le controleur, utile? (long : ~5sec) + //ZytSendPacket(fd,packet,1); // attention, commande inutilisable telle qu'elle, car elle coupe la liaison + // et donc empêche les commandes suivantes... + // (ici en l'occurence tout le paramètrage qui suit...) !!! + packet[0]=ZYT_RESTORE_FACTORY_DEFAULT_SETTINGS; + ZytSendPacket(fd,packet,1); + packet[0]=ZYT_SET_FRAME_AVERAGING + zytConf.frameRateAveraging; + ZytSendPacket(fd,packet,1); + packet[0]=ZYT_DISABLE_CONTINUOUS_RAW_SENSOR_DATA; + ZytSendPacket(fd,packet,1); + packet[0]=ZYT_SET_TOUCH_THRESHOLD + zytConf.seuil; + ZytSendPacket(fd,packet,1); + packet[0]=ZYT_SET_GLASS_THICKNESS + zytConf.epaisseur; + ZytSendPacket(fd,packet,1); + packet[0]=ZYT_ENABLE_CONTROLLER; + ZytSendPacket(fd,packet,1); + packet[0]=ZYT_FORCE_EQUALISATION; + ZytSendPacket(fd,packet,1); + packet[0]=ZYT_XY_TOUCH_MESSAGE_MODE; + ZytSendPacket(fd,packet,1); +} + +// fonction pour "ouvrir" le périphérique +// (càd: ouvrir le fichier spécial qui permet de communiquer avec le controleur) +static int ZytOpenDevice(char *device) +{ + int fd; + fd = open (device, O_RDWR | O_NOCTTY); // pourquoi 0_NOCTTY ? *** + if ( fd == -1 ) { + return ZYT_ERR_CANT_OPEN; + } + + // on récupère l'actuelle configuration du port : + tcgetattr(fd,&options); + tcgetattr(fd,&saved_options); + + // on passe en 96000 bauds : + cfsetospeed(&options,B9600); + cfsetispeed(&options,B9600); + + // on passe en mode de fonctionnement "pur" pour pouvoir utiliser correctement le port série : + cfmakeraw(&options); + tcsetattr(fd,TCSANOW,&options); + + return fd; +} + +// le thread qui sert à recevoir des données en continue : +static void *ZytronicEventThread(DirectThread *thread, void *driver_data) +{ + ZytData *data = (ZytData *) driver_data; + int lastAction = ZYT_ACTION_RELEASE; + struct timeval unT; + unsigned int lastT,newT; + unsigned short nbClignot=0; + lastT = 0; + DFBInputEvent evt; + + /* Read data */ + while (1) { + if (!ZytReadTouchMessage (data)){ // si jamais il y a eut mauvaise lecture (pas normal) + continue; // on ignore le mesage mal lu + } + // en mode sans drag&drop, si l'action actuelle est la même que la précédente, on l'ignore: + if (zytConf.mode==NO_DRAG_DROP && lastAction == data->action){ + nbClignot=0; // et on dit que ça clignote pas (car c'est un appui long, pas un clignotement) + continue; // permet de ne garder que le premier appui, et le relachement : + } + gettimeofday(&unT,NULL); + newT = unT.tv_sec*1000000 + unT.tv_usec; + if(zytConf.debug==DEBUG){ + D_INFO("newT=%u\n",newT); + D_INFO("lastT=%u\n",lastT); + D_INFO("lastT+attente=%u\n",lastT+zytConf.attenteMultiClic); + } + + // si on "appui" trop vite, sans faire un appui continu, on réenregistre la dernière action,... : + if(data->action==ZYT_ACTION_TOUCH && nbClignot < zytConf.nbClignToPress && \ + (lastT + zytConf.attenteMultiClic) > newT) { + nbClignot++;// ..on compte combien de fois de suite on essai d'appuyer (pour voir si c'est la fin + // d'un clignotement justement parce qu'on a rapprocher le doigt suffisemment) .. + gettimeofday(&unT,NULL); + lastT = unT.tv_sec*1000000 + unT.tv_usec; + continue; // ..et on ignore cet appui (permet d'éviter le phénomène de clignotement..) + } + nbClignot=0; // on remet le compteur à zéro, puisque c'est ici un appui réel + direct_thread_testcancel (thread); // si cette ligne fait bien ce que je pense (regarder si on n'a pas + // demandé la fin du thread en cours) pourquoi est-elle là, et pas avant le "if" ? Car si le controlleur + // n'envoi plus aucune information pendant un moment, le driver ne peut pas détecter de "cancel" + // pendant ce laps de temps .. ? *** + + // Dispatch axis + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_X; + evt.axisabs = data->x; + dfb_input_dispatch (data->device, &evt); + + evt.type = DIET_AXISMOTION; + evt.flags = DIEF_AXISABS; + evt.axis = DIAI_Y; + evt.axisabs = data->y; + dfb_input_dispatch (data->device, &evt); + + // Dispatch touch event + switch (data->action) { + case ZYT_ACTION_TOUCH: + evt.type = DIET_BUTTONPRESS; + break; + case ZYT_ACTION_RELEASE: + evt.type = DIET_BUTTONRELEASE; + break; + } + + + evt.flags = DIEF_NONE; + evt.button = DIBI_LEFT; + dfb_input_dispatch (data->device, &evt); + + lastAction = data->action; // on enregistre l'évènement + gettimeofday(&unT,NULL); // on enregistre quand s'est produit l'évènement + lastT = unT.tv_sec*1000000 + unT.tv_usec; + + if(zytConf.debug==DEBUG){ + D_INFO("Zytronic TOUCH : x=%d y=%d action=%d\n", data->x,data->y,data->action); + } + + direct_thread_testcancel (thread); + } + + return NULL; +} + + +/* exported symbols */ + +// procédure pour dire à directFB si c'est bien ce driver qu'il faut charger : +static int driver_get_available( void ) +{ + int fd; + + /* we only try to open the device if it has been actually configured */ + if( !dfb_config->zytronic_device ) + return 0; + + fd = ZytOpenDevice(dfb_config->zytronic_device ); + D_INFO( "Zytronic:driver_get_available %s fd %d\n", dfb_config->zytronic_device,fd ); + + if (fd < 0){ + D_INFO( "The Zytronic driver cannot be loaded from %s\n", dfb_config->zytronic_device ); + return 0; + } + + close(fd); + return 1; +} + +// donne la description du driver : +static void driver_get_info( InputDriverInfo *info ) +{ + /* fill driver info structure */ + snprintf(info->name, DFB_INPUT_DRIVER_INFO_NAME_LENGTH, + "Zypos" ); + snprintf(info->vendor, DFB_INPUT_DRIVER_INFO_VENDOR_LENGTH, + "Zytronic" ); + + info->version.major = 0; + info->version.minor = 5; +} + +// "ouvre" le device et commnce à le préparer : +static DFBResult driver_open_device(CoreInputDevice *device, + unsigned int number, + InputDeviceInfo *info, + void **driver_data) +{ + int fd; + ZytData *data; + + /* open device */ + fd = ZytOpenDevice (dfb_config->zytronic_device); + D_INFO("ZYT, driver_open_device %s fd %d\n", dfb_config->zytronic_device,fd); + + if (fd < 0) { + return DFB_INIT; + } + + ZytActivateDevice(fd); //on configure le controleur pour fonctionner en mode normal + + data = D_CALLOC (1, sizeof(ZytData)); + + data->fd = fd; + data->device = device; + + /* fill device info structure */ + snprintf(info->desc.name, DFB_INPUT_DEVICE_DESC_NAME_LENGTH, + "Zypos"); + snprintf(info->desc.vendor, DFB_INPUT_DEVICE_DESC_VENDOR_LENGTH, + "Zytronic"); + + info->prefered_id = DIDID_MOUSE; + info->desc.type = DIDTF_MOUSE; + info->desc.caps = DICAPS_AXES | DICAPS_BUTTONS; + info->desc.max_axis = DIAI_Y; + info->desc.max_button = DIBI_LEFT; + + /* start input thread */ + data->thread = direct_thread_create (DTT_INPUT, ZytronicEventThread, data, "Zytronic Input"); + + /* set private data pointer */ + *driver_data = data; + + return DFB_OK; +} + +/* + * Fetch one entry from the device's keymap if supported. + */ +static DFBResult driver_get_keymap_entry(CoreInputDevice *device, + void *driver_data, + DFBInputDeviceKeymapEntry *entry) +{ + return DFB_UNSUPPORTED; +} + +// "fermeture" du driver *** +static void driver_close_device(void *driver_data) +{ + ZytData *data = (ZytData *)driver_data; + + /* stop input thread */ + direct_thread_cancel (data->thread); + direct_thread_join (data->thread); + direct_thread_destroy (data->thread); + + /* close device */ + tcsetattr(data->fd,TCSANOW,&saved_options); // remise en l'état de l'ancienne configuration du port + close (data->fd); + + /* free private data */ + D_FREE (data); +} -- cgit