Release version 1.3

This commit is contained in:
Bradlee Speice
2012-07-23 16:19:09 -04:00
parent 34b9da1832
commit 020d536376
46 changed files with 46105 additions and 157 deletions

488
docs/Makefile.in Normal file
View File

@ -0,0 +1,488 @@
# 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@
subdir = docs
DIST_COMMON = $(dist_man_MANS) $(srcdir)/Doxyfile_example.in \
$(srcdir)/Doxyfile_library.in $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES = Doxyfile_library Doxyfile_example
SOURCES =
DIST_SOURCES =
man1dir = $(mandir)/man1
am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"
man3dir = $(mandir)/man3
NROFF = nroff
MANS = $(dist_man_MANS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CV_CFLAGS = @CV_CFLAGS@
CV_LIBS = @CV_LIBS@
CV_VERSION = @CV_VERSION@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
Doxygen = @Doxygen@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_MAN = @ENABLE_MAN@
ENABLE_TEX = @ENABLE_TEX@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_VERSION = @LIBTOOL_VERSION@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
OpenCV_CFLAGS = @OpenCV_CFLAGS@
OpenCV_LIBS = @OpenCV_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@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
X11_CFLAGS = @X11_CFLAGS@
X11_LIBS = @X11_LIBS@
XMKMF = @XMKMF@
XTEST_CFLAGS = @XTEST_CFLAGS@
XTEST_LIBS = @XTEST_LIBS@
XTest_CFLAGS = @XTest_CFLAGS@
XTest_LIBS = @XTest_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_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
@BUILD_DOXYGEN_TRUE@EXTRA_DIST = html
@BUILD_DOXYGEN_TRUE@CLEANFILES = doxyfile.stamp
@BUILD_MAN_TRUE@directory_1 = man/man1
@BUILD_MAN_TRUE@directory_3 = man/man3
@BUILD_MAN_TRUE@dist_man_MANS = $(directory_3)/cvaPoint.3 $(directory_3)/libcvautomation.h.3 $(directory_3)/libcvautomation-xlib.h.3 $(directory_3)/libcvautomation_search_methods.3 $(directory_3)/xtest_key_strings.3 $(directory_3)/cvautomationList.3 $(directory_3)/libcvautomation-opencv.h.3 $(directory_3)/libcvautomation-xtest.h.3 $(directory_3)/xtest_command_strings.3 $(directory_3)/libcvautomation.3 $(directory_3)/writing_app_tests.3 $(directory_1)/cva-match.1 $(directory_1)/cva-input.1
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu docs/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: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
Doxyfile_library: $(top_builddir)/config.status $(srcdir)/Doxyfile_library.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
Doxyfile_example: $(top_builddir)/config.status $(srcdir)/Doxyfile_example.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
1*) ;; \
*) ext='1' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
1*) ;; \
*) ext='1' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
done
install-man3: $(man3_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)"
@list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.3*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
3*) ;; \
*) ext='3' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst"; \
done
uninstall-man3:
@$(NORMAL_UNINSTALL)
@list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.3*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
3*) ;; \
*) ext='3' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f '$(DESTDIR)$(man3dir)/$$inst'"; \
rm -f "$(DESTDIR)$(man3dir)/$$inst"; \
done
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
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
@BUILD_DOXYGEN_FALSE@all-local:
all-am: Makefile $(MANS) all-local
installdirs:
for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(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:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
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."
@BUILD_DOXYGEN_FALSE@uninstall-local:
@BUILD_DOXYGEN_FALSE@install-data-local:
@BUILD_DOXYGEN_FALSE@clean-local:
clean: clean-am
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am: install-data-local install-man
install-dvi: install-dvi-am
install-exec-am:
install-html: install-html-am
install-info: install-info-am
install-man: install-man1 install-man3
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-local uninstall-man
uninstall-man: uninstall-man1 uninstall-man3
.MAKE: install-am install-strip
.PHONY: all all-am all-local check check-am clean clean-generic \
clean-libtool clean-local distclean distclean-generic \
distclean-libtool distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am \
install-data-local install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-man1 install-man3 \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
uninstall uninstall-am uninstall-local uninstall-man \
uninstall-man1 uninstall-man3
@BUILD_DOXYGEN_TRUE@install-data-local:
@BUILD_DOXYGEN_TRUE@ $(mkdir_p) $(DESTDIR)$(datadir)/$(PACKAGE)/html
@BUILD_DOXYGEN_TRUE@ for f in html/*; do \
@BUILD_DOXYGEN_TRUE@ $(INSTALL_DATA) $$f \
@BUILD_DOXYGEN_TRUE@ $(DESTDIR)$(datadir)/$(PACKAGE)/html; done
@BUILD_DOXYGEN_TRUE@uninstall-local:
@BUILD_DOXYGEN_TRUE@ rm $(DESTDIR)$(datadir)/$(PACKAGE)/html/*
@BUILD_DOXYGEN_TRUE@ -rmdir $(DESTDIR)$(datadir)/$(PACKAGE)/html
@BUILD_DOXYGEN_TRUE@doxyfile.stamp:
@BUILD_DOXYGEN_TRUE@ $(Doxygen) Doxyfile_library
@BUILD_DOXYGEN_TRUE@ $(Doxygen) Doxyfile_example
@BUILD_DOXYGEN_TRUE@ echo Timestamp > doxyfile.stamp
@BUILD_DOXYGEN_TRUE@all-local: doxyfile.stamp
@BUILD_DOXYGEN_TRUE@clean-local:
@BUILD_DOXYGEN_TRUE@ rm -rf $(top_srcdir)/docs/man $(top_srcdir)/docs/html $(top_srcdir)/docs/latex
@BUILD_MAN_TRUE@$(directory_3)/cvaPoint.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/libcvautomation.h.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/libcvautomation-xlib.h.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/libcvautomation_search_methods.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/xtest_key_strings.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/cvautomationList.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/libcvautomation-opencv.h.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/libcvautomation-xtest.h.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/xtest_command_strings.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/libcvautomation.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_3)/writing_app_tests.3: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_1)/cva-match.1: doxyfile.stamp
@BUILD_MAN_TRUE@$(directory_1)/cva-input.1: doxyfile.stamp
# 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:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 925 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 847 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 733 B

80
docs/man/man1/cva-input.1 Normal file
View File

@ -0,0 +1,80 @@
.TH "cva-input" 1 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
cva-input \- \fBAuthor:\fP
.RS 4
Bradlee Speice <bspeice@uncc.edu>
.RE
.PP
.SH "Usage:"
.PP
This program works kind of like a mini-language. All options are parsed left-to-right, and executed right there. Thus, specifying '--display' at different places in the options will cause this program to use the most recent given display. The return code is 1 if there are no commands given, or if all commands fail. It is 0 otherwise.
.SH "Example Usage:"
.PP
Click the mouse:
.PP
cva-input -s 'click 1'
.PP
Press key 'a':
.PP
cva-input -s 'keyclick a'
.SH "Full Options:"
.PP
-h, --help: Display this usage message.
.PP
-u, --usage: Display this usage message.
.PP
-d, --display: Specify the X display to use.
.PP
-m, --search-method: Specify a method to search by. See \fCcva-match --help\fP for more information on this.
.PP
-t, --tolerance: Specify how strict the match is.
.PP
-b, --button: Specify the mouse button to press (default 1).
.PP
-c, --center: Instead of matching the top-left corner of an image, match the center of the image.
.PP
-o, --sane-tolerance: Set the tolerance using a scale of 1-100, rather than INT_MIN to INT_MAX (100 ~= INT_MAX)
.PP
-s, --string: Command string - see below.
.PP
-i, --timeout: Specify the timeout to use when using the 'waitfor' command
.SH "Full Command List:"
.PP
\fCmouseclick:\fP Click the mouse in-place.
.PP
\fCimouseclick:\fP Click the mouse at an image's top-left corner.
.PP
\fCicmouseclick:\fP Click the mouse at an image's center.
.PP
\fCmousexy:\fP Move the mouse to the given coordinate.
.PP
\fCmouserxy:\fP Move the mouse by the given x and y values (relative motion).
.PP
\fCmouseimage:\fP Move the mouse to an image's top-left corner.
.PP
\fCcmouseimage:\fP Move the mouse to an image's center.
.PP
\fCmousedown:\fP Push and leave down a mouse button.
.PP
\fCmouseup:\fP Release a mouse button.
.PP
\fCmousejiggle:\fP Jiggle the mouse (helps to activate some widgets).
.PP
\fCmousescrollu:\fP Scroll the mouse wheel up
.PP
\fCmousescrolld:\fP Scroll the mouse wheel down
.PP
\fCkeyclick:\fP Click a keyboard button.
.PP
\fCkeydown:\fP Push and leave down a keyboard button.
.PP
\fCkeyup:\fP Release a keyboard button.
.PP
\fCkeystring:\fP Input a string of keys to X11.
.PP
\fCwaitfor:\fP Wait for an image to be displayed
.SH "Contact Information:"
.PP
Questions? Comments? Concerns? Suggestions? Send all feedback to Bradlee Speice at <bspeice@uncc.edu>

60
docs/man/man1/cva-match.1 Normal file
View File

@ -0,0 +1,60 @@
.TH "cva-match" 1 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
cva-match \- \fBAuthor:\fP
.RS 4
Bradlee Speice <bspeice@uncc.edu>
.RE
.PP
.SH "Usage:"
.PP
This program uses OpenCV in order to recognize an image within an image. The return code is 0 for at least one successful match, and 1 otherwise.
.SH "Example Usage:"
.PP
Match two images against the root X11 window:
.PP
cva-match --x-root -s '<image_name>' -s '<image_name_2>'
.PP
Match a root and sub image with a custom tolerance and search method
.PP
cva-match -r '<root_image>' -s '<image_name>' -o 75 -m 1
.SH "Full Options:"
.PP
-h, --help: Display this usage message.
.PP
-u, --usage: Display this usage message.
.PP
-r, --root-image: Location of the root image to compare against.
.PP
-s, --sub-image: Location of the sub-image to find in root.
.PP
-p, --separator: Separator of the X and Y coordinates.
.PP
-t, --tolerance: Set how strict the match is - 100 is recommended lowest value.
.PP
\fBNote:\fP
.RS 4
When using CCORR or CCOEFF tolerance works in opposite direction, so -50 is recommended highest value.
.RE
.PP
-m, --search-method: Set which method is used to search for sub-images.
.PP
\fBNote:\fP
.RS 4
Search Methods: CV_TM_SQDIFF = 0, CV_TM_SQDIFF_NORMED = 1, CV_TM_CCORR = 2, CV_TM_CCORR_NORMED = 3, CV_TM_CCOEFF = 4, CV_TM_COEFF_NORMED = 5
.RE
.PP
-x, --x-root[=DISPLAY]: Set the root image to come from X11
.PP
\fBNote:\fP
.RS 4
The DISPLAY variable is optional, not specifying it will cause X to use the default display (not specifically :0.0)
.RE
.PP
-c, --center: The output points should be centered on the sub-image, rather than the top-left corner.
.PP
-o, --sane-tolerance: Set the tolerance using a scale of 1-100, rather than INT_MIN to INT_MAX (100 ~= INT_MAX)
.SH "Contact Information:"
.PP
Questions? Comments? Concerns? Suggestions? Send all feedback to Bradlee Speice at <bspeice@uncc.edu>

40
docs/man/man3/cvaPoint.3 Normal file
View File

@ -0,0 +1,40 @@
.TH "cvaPoint" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
cvaPoint \- Very simple structure to standardize how points are used in libcvautomation.
.PP
.SH SYNOPSIS
.br
.PP
\fC#include <libcvautomation.h>\fP
.PP
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "int \fBx\fP"
.br
.ti -1c
.RI "int \fBy\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
Very simple structure to standardize how points are used in libcvautomation.
\fBParameters:\fP
.RS 4
\fIx\fP An X-coordinate
.br
\fIy\fP A Y-coordinate
.RE
.PP
.PP
Definition at line 41 of file libcvautomation.h.
.SH "Author"
.PP
Generated automatically by Doxygen for libcvautomation from the source code.

View File

@ -0,0 +1,62 @@
.TH "cvautomationList" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
cvautomationList \- Implements a structure to build an array for methods like \fBmatchSubImage_a()\fP.
.PP
.SH SYNOPSIS
.br
.PP
\fC#include <libcvautomation.h>\fP
.PP
.SS "Public Attributes"
.in +1c
.ti -1c
.RI "IplImage * \fBcvaImage\fP"
.br
.ti -1c
.RI "char * \fBfileName\fP"
.br
.ti -1c
.RI "\fBcvaPoint\fP \fBresultPoint\fP"
.br
.ti -1c
.RI "int \fBsearchMethod\fP"
.br
.ti -1c
.RI "int \fBtolerance\fP"
.br
.in -1c
.SH "Detailed Description"
.PP
Implements a structure to build an array for methods like \fBmatchSubImage_a()\fP.
This structure is a simple way to wrap up all needed information for matching sub images in one location.
.PP
\fBParameters:\fP
.RS 4
\fIcvaImage\fP An image in IplImage format
.br
\fIfileName\fP The file location of an image to be loaded
.br
\fIresultPoint\fP Holder for a result - for example, storing where this sub image was located in its root image
.br
\fIsearchMethod\fP The search method to use when searching for this sub image in a root image
.br
\fItolerance\fP The tolerance to use when searching for this sub image in a root image
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
.PP
Definition at line 47 of file libcvautomation.h.
.SH "Author"
.PP
Generated automatically by Doxygen for libcvautomation from the source code.

View File

@ -0,0 +1,276 @@
.TH "libcvautomation-opencv.h" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libcvautomation-opencv.h \- The source code to access libcv from inside libcvautomation.
.SH SYNOPSIS
.br
.PP
\fC#include <libcvautomation/libcvautomation.h>\fP
.br
.SS "Functions"
.in +1c
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage\fP (IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance)"
.br
.RI "\fIReturn the location of a sub image in its root image. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_center\fP (IplImage *rootImage, IplImage *subImage, int searchMethod, double tolerance)"
.br
.RI "\fIReturn the center of a sub image in its root image, rather than the top-left corner. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_location\fP (const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance)"
.br
.RI "\fIReturn the location of a sub image in its root image. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_location_center\fP (const char *rootImage_location, const char *subImage_location, int searchMethod, double tolerance)"
.br
.RI "\fIReturn the center of a sub image in its root image, rather than the top-left corner. \fP"
.ti -1c
.RI "void \fBmatchSubImage_a\fP (IplImage *rootImage, \fBcvautomationList\fP *subImageArray, int listSize)"
.br
.RI "\fIParse an array of sub images and send them to \fBmatchSubImage()\fP. \fP"
.ti -1c
.RI "void \fBmatchSubImage_a_center\fP (IplImage *rootImage, \fBcvautomationList\fP *subImageArray, int listSize)"
.br
.RI "\fIParse an array of sub images and send them to \fBmatchSubImage_center()\fP. \fP"
.ti -1c
.RI "void \fBmatchSubImage_a_location\fP (const char *rootImageFileName, \fBcvautomationList\fP *subImageArray, int listSize)"
.br
.RI "\fIParse an array of sub images and send them to \fBmatchSubImage()\fP. \fP"
.ti -1c
.RI "void \fBmatchSubImage_a_location_center\fP (const char *rootImageFileName, \fBcvautomationList\fP *subImageArray, int listSize)"
.br
.RI "\fIParse an array of sub images and send them to \fBmatchSubImage_center()\fP. \fP"
.in -1c
.SH "Detailed Description"
.PP
The source code to access libcv from inside libcvautomation.
This source file builds in the necessary functionality to use libcv functions inside libcvautomation.
.PP
\fBAuthor:\fP
.RS 4
Bradlee Speice
.RE
.PP
.PP
Definition in file \fBlibcvautomation-opencv.h\fP.
.SH "Function Documentation"
.PP
.SS "CvPoint matchSubImage (IplImage * rootImage, IplImage * subImage, int searchMethod, double tolerance)"
.PP
Return the location of a sub image in its root image.
.PP
\fBParameters:\fP
.RS 4
\fIrootImage\fP The root image (in IplImage format) to search in
.br
\fIsubImage\fP The sub image (in IplImage format) to search for in \fCrootImage\fP
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of the sub image in root image
.RE
.PP
.SS "CvPoint matchSubImage_center (IplImage * rootImage, IplImage * subImage, int searchMethod, double tolerance)"
.PP
Return the center of a sub image in its root image, rather than the top-left corner.
.PP
\fBParameters:\fP
.RS 4
\fIrootImage\fP The root image (in IplImage format) to search in
.br
\fIsubImage\fP The sub image (in IplImage format) to search for in \fCrootImage\fP
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The center location of the sub image in root image
.RE
.PP
.SS "CvPoint matchSubImage_location (const char * rootImage_location, const char * subImage_location, int searchMethod, double tolerance)"
.PP
Return the location of a sub image in its root image.
.PP
The difference that this function has over \fBmatchSubImage()\fP is that \fIrootImage_location\fP and \fIsubImage_location\fP are from files, rather than an IplImage format image.
.PP
\fBParameters:\fP
.RS 4
\fIrootImage_location\fP The location of the root image
.br
\fIsubImage_location\fP The location of the sub image to search for in \fCrootImage\fP
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of the sub image in root image
.RE
.PP
.SS "CvPoint matchSubImage_location_center (const char * rootImage_location, const char * subImage_location, int searchMethod, double tolerance)"
.PP
Return the center of a sub image in its root image, rather than the top-left corner.
.PP
The difference that this function has over \fBmatchSubImage_center()\fP is that \fIrootImage_location\fP and \fIsubImage_location\fP are from files, rather than an IplImage format image.
.PP
\fBParameters:\fP
.RS 4
\fIrootImage_location\fP The location of the root image
.br
\fIsubImage_location\fP The location of the sub image to search for in \fCrootImage\fP
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in \fCrootImage\fP.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The center location of the sub image in root image
.RE
.PP
.SS "void matchSubImage_a (IplImage * rootImage, \fBcvautomationList\fP * subImageArray, int listSize)"
.PP
Parse an array of sub images and send them to \fBmatchSubImage()\fP.
.PP
\fBParameters:\fP
.RS 4
\fIrootImage\fP The root image (in IplImage format) to search in
.br
\fIsubImageArray\fP The sub image array to search for in \fCrootImage\fP - Note that the contents of \fCsubImageArray\fP are modified during execution of this routine
.br
\fIlistSize\fP The number of sub images to search for in subImageArray
.RE
.PP
\fBSee also:\fP
.RS 4
\fBcvautomationList\fP
.RE
.PP
\fBReturns:\fP
.RS 4
This function returns void, and modifies the contents of subImageArray
.RE
.PP
.SS "void matchSubImage_a_center (IplImage * rootImage, \fBcvautomationList\fP * subImageArray, int listSize)"
.PP
Parse an array of sub images and send them to \fBmatchSubImage_center()\fP.
.PP
Uses the \fBcvautomationList.cvaImage\fP parameter to find a \fCsubImage\fP in \fCrootImage\fP
.PP
\fBParameters:\fP
.RS 4
\fIrootImage\fP The root image (in IplImage format) to search in
.br
\fIsubImageArray\fP The sub image array to search for in \fCrootImage\fP - Note that the contents of \fCsubImageArray\fP are modified during execution of this routine
.br
\fIlistSize\fP The number of sub images to search for in subImageArray
.RE
.PP
\fBSee also:\fP
.RS 4
\fBcvautomationList\fP
.RE
.PP
\fBReturns:\fP
.RS 4
This function returns void, and modifies the contents of subImageArray
.RE
.PP
.SS "void matchSubImage_a_location (const char * rootImage_location, \fBcvautomationList\fP * subImageArray, int listSize)"
.PP
Parse an array of sub images and send them to \fBmatchSubImage()\fP.
.PP
The difference between this and \fBmatchSubImage_a()\fP is that this uses a root image from filename, rather than from an IplImage format.
.PP
\fBParameters:\fP
.RS 4
\fIrootImage_location\fP The location of the root image
.br
\fIsubImageArray\fP The sub image array to search for in \fCrootImage_location\fP - Note that the contents of \fCsubImageArray\fP are modified during execution of this routine
.br
\fIlistSize\fP The number of sub images to search for in subImageArray
.RE
.PP
\fBSee also:\fP
.RS 4
\fBcvautomationList\fP
.RE
.PP
\fBReturns:\fP
.RS 4
This function returns void, and modifies the contents of subImageArray
.RE
.PP
.SS "void matchSubImage_a_location_center (const char * rootImage_location, \fBcvautomationList\fP * subImageArray, int listSize)"
.PP
Parse an array of sub images and send them to \fBmatchSubImage_center()\fP.
.PP
The difference that this function has over \fBmatchSubImage_a_center()\fP is that \fCrootImage_location\fP is from a file
.PP
\fBParameters:\fP
.RS 4
\fIrootImage_location\fP The location of the root image
.br
\fIsubImageArray\fP The sub image array to search for in \fCrootImage_location\fP - Note that the contents of \fCsubImageArray\fP are modified during execution of this routine
.br
\fIlistSize\fP The number of sub images to search for in subImageArray
.RE
.PP
\fBSee also:\fP
.RS 4
\fBcvautomationList\fP
.RE
.PP
\fBReturns:\fP
.RS 4
This function returns void, and modifies the contents of subImageArray
.RE
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for libcvautomation from the source code.

View File

@ -0,0 +1,211 @@
.TH "libcvautomation-xlib.h" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libcvautomation-xlib.h \- The source code to access Xlib from inside libcvautomation.
.SH SYNOPSIS
.br
.PP
\fC#include <libcvautomation/libcvautomation.h>\fP
.br
.SS "Functions"
.in +1c
.ti -1c
.RI "Display * \fBcvaOpenDisplay\fP (char *displayName)"
.br
.RI "\fISimple wrapper for XOpenDisplay. \fP"
.ti -1c
.RI "void \fBcvaCloseDisplay\fP (Display *displayLocation)"
.br
.RI "\fISimple wrapper for XCloseDisplay. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_X11\fP (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance)"
.br
.RI "\fIReturn the location of a sub image in the X11 root window. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_X11_center\fP (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance)"
.br
.RI "\fIReturn the center of a sub image in root X11 window, rather than the top-left corner. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_X11_location\fP (Display *displayLocation, const char *subImage_location, int search_method, int tolerance)"
.br
.RI "\fIReturn the location of a sub image in the X11 root window. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBmatchSubImage_X11_location_center\fP (Display *displayLocation, const char *subImage_location, int search_method, int tolerance)"
.br
.RI "\fIReturn the center of a sub image in the root X11 window, rather than the top-left corner. \fP"
.in -1c
.SH "Detailed Description"
.PP
The source code to access Xlib from inside libcvautomation.
This source file builds in the necessary functionality to use xlib functions inside libcvautomation.
.PP
\fBAuthor:\fP
.RS 4
Bradlee Speice
.RE
.PP
.PP
Definition in file \fBlibcvautomation-xlib.h\fP.
.SH "Function Documentation"
.PP
.SS "Display * cvaOpenDisplay (char * displayName)"
.PP
Simple wrapper for XOpenDisplay.
.PP
Currently this function literally just passes off to XOpenDisplay, but is designed to be used in the future if extra functionality is needed.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayName\fP The name of the display to open - '' is a valid name
.RE
.PP
\fBReturns:\fP
.RS 4
Pointer to the opened X11 Display
.RE
.PP
\fBWarning:\fP
.RS 4
You must open a display to use any functions.
.PP
The program using this library is responsible to close the display as well.
.RE
.PP
.SS "void cvaCloseDisplay (Display * displayLocation)"
.PP
Simple wrapper for XCloseDisplay.
.PP
Currently this function literally just passes off to XCloseDisplay, but is designed to be used in the future if extra functionality is needed.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP Pointer to the display to close
.RE
.PP
\fBReturns:\fP
.RS 4
Nothing
.RE
.PP
.SS "\fBcvaPoint\fP matchSubImage_X11 (Display * displayLocation, IplImage * subImage, int searchMethod, int tolerance)"
.PP
Return the location of a sub image in the X11 root window.
.PP
This function wraps grabbing the X11 root window, converting it to IplImage format, and then giving this to \fBmatchSubImage()\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP Pointer to the currently open X11 Display
.br
\fIsubImage\fP The sub image (in IplImage format) to search for in the root X11 window
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of the sub image in root X11 window
.RE
.PP
.SS "\fBcvaPoint\fP matchSubImage_X11_center (Display * displayLocation, IplImage * subImage, int searchMethod, int tolerance)"
.PP
Return the center of a sub image in root X11 window, rather than the top-left corner.
.PP
This function wraps grabbing the X11 root window, converting it to IplImage format, and then giving this to \fBmatchSubImage_center()\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP Pointer to the currently open X11 Display
.br
\fIsubImage\fP The sub image (in IplImage format) to search for in the root X11 window
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The center location of the sub image in the root X11 window
.RE
.PP
.SS "\fBcvaPoint\fP matchSubImage_X11_location (Display * displayLocation, const char * subImage_location, int searchMethod, int tolerance)"
.PP
Return the location of a sub image in the X11 root window.
.PP
This function wraps grabbing the X11 root window, converting it to IplImage format, and then giving this to \fBmatchSubImage_location()\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP Pointer to the currently open X11 Display
.br
\fIsubImage_location\fP The location of the sub image to search for in the root X11 window
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The center location of the sub image in the root X11 window
.RE
.PP
.SS "\fBcvaPoint\fP matchSubImage_X11_location_center (Display * displayLocation, const char * subImage_location, int searchMethod, int tolerance)"
.PP
Return the center of a sub image in the root X11 window, rather than the top-left corner.
.PP
This function wraps grabbing the X11 root window, converting it to IplImage format, and then giving this to \fBmatchSubImage_location_center()\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP Pointer to the currently open X11 Display
.br
\fIsubImage_location\fP The location of the sub image to search for in the root X11 window
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The center location of the sub image in the root X11 window
.RE
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for libcvautomation from the source code.

View File

@ -0,0 +1,716 @@
.TH "libcvautomation-xtest.h" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libcvautomation-xtest.h \- The source code to access the XTest extension inside libcvautomation.
.SH SYNOPSIS
.br
.PP
\fC#include <libcvautomation/libcvautomation.h>\fP
.br
.SS "Defines"
.in +1c
.ti -1c
.RI "#define \fBIS_CMD\fP(x, y) strncmp( x, y, strlen( y ) ) == 0"
.br
.RI "\fIChecks if string \fC'x'\fP is in \fC'y'\fP. \fP"
.ti -1c
.RI "#define \fBCOMMAND_STR_LEN\fP 512"
.br
.RI "\fISpecifies the maximum length of a command string. \fP"
.in -1c
.SS "Functions"
.in +1c
.ti -1c
.RI "Bool \fBxte_XTestSupported\fP (Display *displayLocation)"
.br
.RI "\fICheck if the XTest extension is supported. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_pointerLocation\fP (Display *displayLocation)"
.br
.RI "\fIGrab the current location of the pointer. \fP"
.ti -1c
.RI "void \fBxte_clickMouse\fP (Display *displayLocation, int mouseButton)"
.br
.RI "\fIClick the mouse in its current location. \fP"
.ti -1c
.RI "void \fBxte_clickMouseXY\fP (Display *displayLocation, int xLocation, int yLocation, int mouseButton)"
.br
.RI "\fIClick the mouse button at an absolute location. \fP"
.ti -1c
.RI "void \fBxte_clickMouseRXY\fP (Display *displayLocation, int xIncrement, int yIncrement, int mouseButton)"
.br
.RI "\fIClick the mouse button at a relative location. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_clickMouseImage\fP (Display *displayLocation, IplImage *subImage, int mouseButton, int searchMethod, int tolerance)"
.br
.RI "\fIClick the mouse based on location of an image. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_clickMouseImage_location\fP (Display *displayLocation, const char *fileName, int mouseButton, int searchMethod, int tolerance)"
.br
.RI "\fIClick the mouse based on the location of an image from file. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_clickMouseImage_center\fP (Display *displayLocation, IplImage *subImage, int mouseButton, int searchMethod, int tolerance)"
.br
.RI "\fIClick the mouse based on center location of an image. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_clickMouseImage_location_center\fP (Display *displayLocation, const char *fileName, int mouseButton, int searchMethod, int tolerance)"
.br
.RI "\fIClick the mouse based on the center location of an image from file. \fP"
.ti -1c
.RI "void \fBxte_hoverMouseXY\fP (Display *displayLocation, int xLocation, int yLocation)"
.br
.RI "\fIMove the mouse to a location, but do not click it. \fP"
.ti -1c
.RI "void \fBxte_hoverMouseRXY\fP (Display *displayLocation, int xIncrement, int yIncrement)"
.br
.RI "\fIMove the mouse to a relative location, but do not click it. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_hoverMouseImage\fP (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance)"
.br
.RI "\fIMove the mouse based on location of an image. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_hoverMouseImage_location\fP (Display *displayLocation, const char *filename, int searchMethod, int tolerance)"
.br
.RI "\fIMove the mouse based on location of an image from file. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_hoverMouseImage_center\fP (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance)"
.br
.RI "\fIMove the mouse based on center location of an image. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_hoverMouseImage_location_center\fP (Display *displayLocation, const char *fileName, int searchMethod, int tolerance)"
.br
.RI "\fIMove the mouse based on the center location of an image from file. \fP"
.ti -1c
.RI "void \fBxte_mouseDown\fP (Display *displayLocation, int mouseButton)"
.br
.RI "\fIPress a mouse button down, and do not release it. \fP"
.ti -1c
.RI "void \fBxte_mouseUp\fP (Display *displayLocation, int mouseButton)"
.br
.RI "\fIRelease a mouse button. \fP"
.ti -1c
.RI "void \fBxte_mouseJiggle\fP (Display *displayLocation)"
.br
.RI "\fIJiggle the mouse in place. \fP"
.ti -1c
.RI "void \fBxte_mouseScrollUp\fP (Display *displayLocation)"
.br
.RI "\fIScroll the mouse up. \fP"
.ti -1c
.RI "void \fBxte_mouseScrollDown\fP (Display *displayLocation)"
.br
.RI "\fIScroll the mouse down. \fP"
.ti -1c
.RI "void \fBxte_clickKey\fP (Display *displayLocation, char *key)"
.br
.RI "\fIPress and release a keyboard key. \fP"
.ti -1c
.RI "void \fBxte_clickKeyStr\fP (Display *displayLocation, char *string)"
.br
.RI "\fIInput a string of characters to the X Server. \fP"
.ti -1c
.RI "void \fBxte_keyDown\fP (Display *displayLocation, char *key)"
.br
.RI "\fIPress a key down, but do not release it. \fP"
.ti -1c
.RI "void \fBxte_keyUp\fP (Display *displayLocation, char *key)"
.br
.RI "\fIRelease a key. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_waitForImage\fP (Display *displayLocation, IplImage *subImage, int searchMethod, int tolerance, int timeout)"
.br
.RI "\fIWait for an image to show up on screen. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_waitForImage_location\fP (Display *displayLocation, const char *fileName, int searchMethod, int tolerance, int timeout)"
.br
.RI "\fIWait for an image from file to show up on screen. \fP"
.ti -1c
.RI "\fBcvaPoint\fP \fBxte_commandString\fP (Display *displayLocation, char *commandString, int mouseButton, int searchMethod, int tolerance, int timeout)"
.br
.RI "\fIExecute a command where the command is coming from a string. \fP"
.in -1c
.SH "Detailed Description"
.PP
The source code to access the XTest extension inside libcvautomation.
This source file builds in the necessary functionality to drive the X11 server in libcvautomation
.PP
\fBAuthor:\fP
.RS 4
Bradlee Speice
.RE
.PP
.PP
Definition in file \fBlibcvautomation-xtest.h\fP.
.SH "Define Documentation"
.PP
.SS "#define IS_CMD(x, y) strncmp( x, y, strlen( y ) ) == 0"
.PP
Checks if string \fC'x'\fP is in \fC'y'\fP.
.PP
Performs a safe check to see if x is in y - this way, you can check that \fC'command'\fP is inside \fC'command argument'\fP
.SH "Function Documentation"
.PP
.SS "Bool xte_XTestSupported (Display * displayLocation)"
.PP
Check if the XTest extension is supported.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display to check if XTest is supported on
.RE
.PP
\fBReturns:\fP
.RS 4
True if XTest is supported, False otherwise
.RE
.PP
\fBWarning:\fP
.RS 4
The program using this library is responsible for checking to see if XTest is supported.
.RE
.PP
.SS "\fBcvaPoint\fP xte_pointerLocation (Display * displayLocation)"
.PP
Grab the current location of the pointer.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to grab the pointer location from
.RE
.PP
\fBReturns:\fP
.RS 4
\fBcvaPoint\fP with the current location of the pointer
.RE
.PP
.SS "void xte_clickMouse (Display * displayLocation, int mouseButton)"
.PP
Click the mouse in its current location.
.PP
Perform a mouse-down and mouse-up event on button \fCmouseButton\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fImouseButton\fP The mouse button to click
.RE
.PP
.SS "void xte_clickMouseXY (Display * displayLocation, int xLocation, int yLocation, int mouseButton)"
.PP
Click the mouse button at an absolute location.
.PP
Move the mouse to location (\fCxLocation\fP, \fCyLocation\fP ) and then click button \fCmouseButton\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fIxLocation\fP The X-coordinate to move the mouse to before clicking
.br
\fIyLocation\fP The Y-location to move the mouse to before clicking
.br
\fImouseButton\fP The mouse button to click
.RE
.PP
.SS "void xte_clickMouseRXY (Display * displayLocation, int xIncrement, int yIncrement, int mouseButton)"
.PP
Click the mouse button at a relative location.
.PP
Move the mouse horizontally \fCxIncrement\fP and vertically \fCyIncrement\fP before clicking button \fCmouseButton\fP
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fIxIncrement\fP Move the mouse horizontally this many pixels - positive value is motion to the right
.br
\fIyIncrement\fP Move the mouse vertically this many pixels - positive value is motion downwards
.br
\fImouseButton\fP The mouse button to click
.RE
.PP
.SS "\fBcvaPoint\fP xte_clickMouseImage (Display * displayLocation, IplImage * subImage, int mouseButton, int searchMethod, int tolerance)"
.PP
Click the mouse based on location of an image.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding \fCsubImage\fP in this display, moving the mouse to that location, and then clicking \fCmouseButton\fP. The return value can be ignored, the mouse will already have been clicked there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fIsubImage\fP The sub image (in IplImage format) to find in the root X11 window
.br
\fImouseButton\fP The mouse button to click
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of where the mouse was clicked. This will be (-1,-1) if there was an error, in which case the mouse will not have been clicked.
.RE
.PP
.SS "\fBcvaPoint\fP xte_clickMouseImage_location (Display * displayLocation, const char * fileName, int mouseButton, int searchMethod, int tolerance)"
.PP
Click the mouse based on the location of an image from file.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding the sub image from \fCfileName\fP in this display, moving the mouse to that location, and then clicking \fCmouseButton\fP. The return value can be ignored, the mouse will already have been clicked there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fIfileName\fP The file name from which to load the sub-image
.br
\fImouseButton\fP The mouse button to click
.br
\fIsearchMethod\fP The search method to use when searching for the sub image in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for the sub image in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of where the mouse was clicked. This will be (-1,-1) if there was an error, in which case the mouse will not have been clicked.
.RE
.PP
.SS "\fBcvaPoint\fP xte_clickMouseImage_center (Display * displayLocation, IplImage * subImage, int mouseButton, int searchMethod, int tolerance)"
.PP
Click the mouse based on center location of an image.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding the center of \fCsubImage\fP in this display, moving the mouse to that location, and then clicking \fCmouseButton\fP. The return value can be ignored, the mouse will already have been clicked there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fIsubImage\fP The sub image (in IplImage format) to find in the root X11 window
.br
\fImouseButton\fP The mouse button to click
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of where the mouse was clicked. This will be (-1,-1) if there was an error, in which case the mouse will not have been clicked.
.RE
.PP
.SS "\fBcvaPoint\fP xte_clickMouseImage_location_center (Display * displayLocation, const char * fileName, int mouseButton, int searchMethod, int tolerance)"
.PP
Click the mouse based on the center location of an image from file.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding the center location of the sub image from \fCfileName\fP in this display, moving the mouse to that location, and then clicking \fCmouseButton\fP. The return value can be ignored, the mouse will already have been clicked there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click the mouse on
.br
\fIfileName\fP The file name from which to load the sub-image
.br
\fImouseButton\fP The mouse button to click
.br
\fIsearchMethod\fP The search method to use when searching for the sub image in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for the sub image in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of where the mouse was clicked. This will be (-1,-1) if there was an error, in which case the mouse will not have been clicked.
.RE
.PP
.SS "void xte_hoverMouseXY (Display * displayLocation, int xLocation, int yLocation)"
.PP
Move the mouse to a location, but do not click it.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse
.br
\fIxLocation\fP The X-coordinate of which to move the mouse
.br
\fIyLocation\fP The Y-coordinate of which to move the mouse
.RE
.PP
.SS "void xte_hoverMouseRXY (Display * displayLocation, int xIncrement, int yIncrement)"
.PP
Move the mouse to a relative location, but do not click it.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse
.br
\fIxIncrement\fP How far to move the mouse horizontally. Positive values indicate motion to the right.
.br
\fIyIncrement\fP How far to move the mouse vertically. Positive values indicate motion downward.
.RE
.PP
.SS "\fBcvaPoint\fP xte_hoverMouseImage (Display * displayLocation, IplImage * subImage, int searchMethod, int tolerance)"
.PP
Move the mouse based on location of an image.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding \fCsubImage\fP in this display, and then moving the mouse to that location. The return value can be ignored, the mouse will already have been moved there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse on
.br
\fIsubImage\fP The sub image (in IplImage format) to find in the root X11 window
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of where the mouse was moved. This will be (-1,-1) if there was an error, in which case the mouse will not have been moved.
.RE
.PP
.SS "\fBcvaPoint\fP xte_hoverMouseImage_location (Display * displayLocation, const char * filename, int searchMethod, int tolerance)"
.PP
Move the mouse based on location of an image from file.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding the sub image from \fCfileName\fP in this display, and then moving the mouse to that location. The return value can be ignored, the mouse will already have been moved there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse on
.br
\fIfilename\fP The file name from which to load the sub-image
.br
\fIsearchMethod\fP The search method to use when searching for the sub image in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for the sub image in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of where the mouse was moved. This will be (-1,-1) if there was an error, in which case the mouse will not have been moved.
.RE
.PP
.SS "\fBcvaPoint\fP xte_hoverMouseImage_center (Display * displayLocation, IplImage * subImage, int searchMethod, int tolerance)"
.PP
Move the mouse based on center location of an image.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding the center of \fCsubImage\fP in this display, and then moving the mouse to that location. The return value can be ignored, the mouse will already have been moved there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse on
.br
\fIsubImage\fP The sub image (in IplImage format) to find in the root X11 window
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for \fCsubImage\fP in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of where the mouse was moved. This will be (-1,-1) if there was an error, in which case the mouse will not have been moved.
.RE
.PP
.SS "\fBcvaPoint\fP xte_hoverMouseImage_location_center (Display * displayLocation, const char * fileName, int searchMethod, int tolerance)"
.PP
Move the mouse based on the center location of an image from file.
.PP
Wraps grabbing the X11 root window of \fCdisplayLocation\fP, finding the center location of the sub image from \fCfileName\fP in this display, and then moving the mouse to that location. The return value can be ignored, the mouse will already have been moved there.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse on
.br
\fIfileName\fP The file name from which to load the sub-image
.br
\fIsearchMethod\fP The search method to use when searching for the sub image in the root X11 window
.br
\fItolerance\fP The tolerance to use when searching for the sub image in the root X11 window
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
\fBReturns:\fP
.RS 4
The location of where the mouse was moved. This will be (-1,-1) if there was an error, in which case the mouse will not have been moved.
.RE
.PP
.SS "void xte_mouseDown (Display * displayLocation, int mouseButton)"
.PP
Press a mouse button down, and do not release it.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to push a mouse button down
.br
\fImouseButton\fP The mouse button to push down
.RE
.PP
.SS "void xte_mouseUp (Display * displayLocation, int mouseButton)"
.PP
Release a mouse button.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to release a mouse button
.br
\fImouseButton\fP The mouse button to release
.RE
.PP
.SS "void xte_mouseJiggle (Display * displayLocation)"
.PP
Jiggle the mouse in place.
.PP
This moves the mouse down and right one pixel, and then back. This may be needed to activate menu items, etc.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to move the mouse
.RE
.PP
.SS "void xte_mouseScrollUp (Display * displayLocation)"
.PP
Scroll the mouse up.
.PP
This moves the mouse scroll wheel up one rotation, which may be multiple lines. What this really does is click mouse button 4.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to scroll the mouse
.RE
.PP
.SS "void void xte_mouseScrollDown (Display * displayLocation)"
.PP
Scroll the mouse down.
.PP
This moves the mouse scroll wheel down one rotation, which may be multiple lines. What this really does is click mouse button 5.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to scroll the mouse
.RE
.PP
.SS "void xte_clickKey (Display * displayLocation, char * key)"
.PP
Press and release a keyboard key.
.PP
This method allows you to press and release a key, where the key may be \fC'a'\fP, \fC'b'\fP, or maybe something fancy like \fC'space'\fP. Please see \fBXTest Key Strings\fP for a full list of keys.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to click a key
.br
\fIkey\fP The key to click as a string
.RE
.PP
\fBSee also:\fP
.RS 4
\fBXTest Key Strings\fP
.RE
.PP
.SS "void xte_clickKeyStr (Display * displayLocation, char * string)"
.PP
Input a string of characters to the X Server.
.PP
Instead of specifying a single character to enter at a time (\fC'a'\fP, \fC'space'\fP) this function allows you to enter an entire string (\fC'Hello\fP, World!') at a time.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to enter a key string on
.br
\fIstring\fP The key string to input to the X Server
.RE
.PP
.SS "void xte_keyDown (Display * displayLocation, char * key)"
.PP
Press a key down, but do not release it.
.PP
This method allows you to push down a key, where the key may be \fC'a'\fP, \fC'b'\fP, or maybe something fancy like \fC'space'\fP. Please see \fBXTest Key Strings\fP for a full list of keys.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to push down a key
.br
\fIkey\fP The key to click as a string
.RE
.PP
\fBSee also:\fP
.RS 4
\fBXTest Key Strings\fP
.RE
.PP
.SS "void xte_keyUp (Display * displayLocation, char * key)"
.PP
Release a key.
.PP
This method allows you to release a key, where the key may be \fC'a'\fP, \fC'b'\fP, or maybe something fancy like \fC'space'\fP. Please see \fBXTest Key Strings\fP for a full list of keys.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to release a key
.br
\fIkey\fP The key to click as a string
.RE
.PP
\fBSee also:\fP
.RS 4
\fBXTest Key Strings\fP
.RE
.PP
.SS "\fBcvaPoint\fP xte_waitForImage (Display * displayLocation, IplImage * subImage, int searchMethod, int tolerance, int timeout)"
.PP
Wait for an image to show up on screen.
.PP
This method allows you to search for an image on screen and wait for it to show up - this way you can make sure an image exists, and then respond to it. Also makes error checking easy.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to search for an image
.br
\fIsubImage\fP The sub image to search for
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP
.br
\fItolerance\fP The tolerance to use when searching for \fCtolerance\fP
.br
\fItimeout\fP The time (in seconds) to search for the image
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
.SS "\fBcvaPoint\fP xte_waitForImage_location (Display * displayLocation, const char * fileName, int searchMethod, int tolerance, int timeout)"
.PP
Wait for an image from file to show up on screen.
.PP
This method allows you to search for an image on screen and wait for it to show up - this way you can make sure an image exists, and then respond to it. Also makes error checking easy.
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to search for an image
.br
\fIfileName\fP The file to load an image from before searching
.br
\fIsearchMethod\fP The search method to use when searching for \fCsubImage\fP
.br
\fItolerance\fP The tolerance to use when searching for \fCtolerance\fP
.br
\fItimeout\fP The time (in seconds) to search for the image
.RE
.PP
\fBSee also:\fP
.RS 4
\fBLibcv Search Methods\fP
.RE
.PP
.SS "\fBcvaPoint\fP xte_commandString (Display * displayLocation, char * commandString, int mouseButton, int searchMethod, int tolerance, int timeout)"
.PP
Execute a command where the command is coming from a string.
.PP
This function allows you to input a command to libcvautomation from a string. For example, to click a mouse button, you would use the \fCcommand\fP 'mouseclick'. Please note that some \fCcommand\fPs may need arguments to the string, and some may use function arguments. See \fBxte_commandString() Command Strings\fP for a full list of command and arguments
.PP
\fBParameters:\fP
.RS 4
\fIdisplayLocation\fP The Display of which to operate on
.br
\fIcommandString\fP The command string to execute - limit to \fBCOMMAND_STR_LEN\fP characters
.br
\fImouseButton\fP The mouse button to click if it is needed by the command being executed
.br
\fIsearchMethod\fP The search method to use if it is needed by the command being executed
.br
\fItolerance\fP The tolerance to use if it is needed by the command being executed
.br
\fItimeout\fP The time in seconds to wait for an image to be displayed when using the \fCwaitfor\fP command.
.RE
.PP
\fBSee also:\fP
.RS 4
\fBxte_commandString() Command Strings\fP
.PP
\fBLibcv Search Methods\fP
.RE
.PP
.SH "Author"
.PP
Generated automatically by Doxygen for libcvautomation from the source code.

View File

@ -0,0 +1,27 @@
.TH "libcvautomation" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libcvautomation \- \fBAuthor:\fP
.RS 4
Bradlee Speice <\fCbspeice@uncc.edu\fP>
.RE
.PP
.SH "Introduction"
.PP
Welcome to Libcvautomation! Libcvautomation is a GUI automation and testing tool based on image recognition and response. This program was designed as a direct replacement for \fCSikuli\fP and \fCXpresser\fP. I was having incredible difficulty getting either of these solutions to work - Sikuli would crash whenever I tried to take a screenshot, and Xpresser was both too new for our Prominent North American Enterprise Linux systems, but also didn't work or \fCimport\fP correctly. I really liked the way each of these programs approached GUI automation, but they simply didn't work. Additionally, I wanted to create a simple solution - it does what you want it to, and that's it.
.SH "How Libcvautomation Works"
.PP
Libcvautomation represents two software products coming together - \fCOpenCV\fP and the \fCXTest extension\fP to the X11 server. OpenCV is used for image recognition, and XTest is used to actually drive the X server. You can dig into \fBlibcvautomation-xtest.h\fP to get an idea of what all this library is capable of.
.br
Basically what happens is that for whenever you need to do image recognition, OpenCV is used to find the images, and XTest is used to generate any events needed. Libcvautomation is mostly a wrapper to integrate both of these products, but also adds some functions like \fBmatchSubImage_X11()\fP that allow you to match an image against the X11 root window in place. This means no more \fC'xwd | convert '<out_name>''\fP.
.SH "Using Libcvautomation And Writing Application Tests"
.PP
So how does one go about using libcvautomation?
.br
I'm so glad you asked! I've provided a few reference programs - \fCcva-match\fP and \fCcva-input\fP - that can be used to demonstrate most of libcvautomation's capabilities. I've even provided a BASH wrapper to make it incredibly easy to use BASH with libcvautomation as well (requires that cva-match and cva-input are installed). Python bindings are on their way too.
.br
Finally, if you want to know how to write your own application tests, please see \fBWriting Application Tests\fP for more information on that. I've provided code to give you a basic idea of how they work.
.SH "Questions? Comments? Concerns?"
.PP
Please send any feedback to <\fCbspeice@uncc.edu\fP>. Pull requests can be submitted to \fCmy github repository\fP.

View File

@ -0,0 +1,86 @@
.TH "libcvautomation.h" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libcvautomation.h \- The top-level include for all projects involving libcvautomation.
.SH SYNOPSIS
.br
.PP
\fC#include <stdio.h>\fP
.br
\fC#include <string.h>\fP
.br
\fC#include <unistd.h>\fP
.br
\fC#include <limits.h>\fP
.br
\fC#include <opencv/cv.h>\fP
.br
\fC#include <opencv/highgui.h>\fP
.br
\fC#include <X11/Xlib.h>\fP
.br
\fC#include <X11/Xutil.h>\fP
.br
\fC#include <X11/extensions/XTest.h>\fP
.br
\fC#include <libcvautomation/libcvautomation-opencv.h>\fP
.br
\fC#include <libcvautomation/libcvautomation-xlib.h>\fP
.br
\fC#include <libcvautomation/libcvautomation-xtest.h>\fP
.br
.SS "Classes"
.in +1c
.ti -1c
.RI "struct \fBcvaPoint\fP"
.br
.RI "\fIVery simple structure to standardize how points are used in libcvautomation. \fP"
.ti -1c
.RI "struct \fBcvautomationList\fP"
.br
.RI "\fIImplements a structure to build an array for methods like \fBmatchSubImage_a()\fP. \fP"
.in -1c
.SS "Defines"
.in +1c
.ti -1c
.RI "#define \fBLIBCVAUTOMATION_VERSION\fP '1.3'"
.br
.RI "\fIDefine what version of Libcvautomation we are using. \fP"
.ti -1c
.RI "#define \fBLIBCVAUTOMATION_BUGREPORT\fP 'bspeice@uncc.edu'"
.br
.RI "\fIDefine who to send bug reports to for Libcvautomation. \fP"
.in -1c
.SH "Detailed Description"
.PP
The top-level include for all projects involving libcvautomation.
This source file includes all other files needed for libcvautomation projects, and also defines the \fBcvautomationList\fP and \fBcvaPoint\fP structs to be used among libcvautomation functions.
.PP
\fBAuthor:\fP
.RS 4
Bradlee Speice
.RE
.PP
.PP
Definition in file \fBlibcvautomation.h\fP.
.SH "Define Documentation"
.PP
.SS "#define LIBCVAUTOMATION_VERSION '1.3'"
.PP
Define what version of Libcvautomation we are using.
.PP
This define provides access to what version of Libcvautomation we're using. All times that you need to know what it is should use this.
.SS "#define LIBCVAUTOMATION_BUGREPORT 'bspeice@uncc.edu'"
.PP
Define who to send bug reports to for Libcvautomation.
.PP
This define provides access to who should be emailed in case of a Libcvautomation bug. All times that you need to know what it is should use this.
.SH "Author"
.PP
Generated automatically by Doxygen for libcvautomation from the source code.

View File

@ -0,0 +1,106 @@
.TH "libcvautomation_search_methods" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
libcvautomation_search_methods \- Libcv Search Methods
This page describes the methods libcv uses to search for a sub image in a root image.
.SH "Tolerance Values"
.PP
Tolerance values are used to control how strict each of the following search methods are. Acceptable values are from \fCINT_MIN\fP to \fCINT_MAX\fP.
.PP
Additionally, each of the reference programs - \fCcva-input\fP and \fCcva-match\fP - have a 'sane tolerance' built in. This is accessed by the '-o' switch, and allows you to specify a tolerance on scale of 1-100, where 1 is incredibly strict, and 100 is incredibly loose.
.PP
\fBNote:\fP
.RS 4
The formula for calculating the sane tolerance is: $ T(x) = (10^{\frac{\log{INT\_MAX}}{\lambda}})^x $ where $ \lambda $ is the highest tolerance value (in our case, 100). Finally, we have to round down a little bit to ensure that we don't accidentally generate a value higher than \fCINT_MAX\fP. The formula used does mean that we will never be able to generate values lower than 0.
.RE
.PP
\fBWarning:\fP
.RS 4
The 'sane-tolerance' option doesn't know which search method you are using - Thus while 1 is an incredibly strict search for \fBSquared Difference\fP and \fBSquared Difference (Normalized)\fP, it is fairly loose search for \fBCross Correlation\fP, \fBCross Correlation (Normalized)\fP, \fBCorrelation Coefficient\fP, and \fBCorrelation Coefficient (Normalized)\fP
.RE
.PP
.SH "Squared Difference"
.PP
.PP
.nf
#define CV_TM_SQDIFF 0
.fi
.PP
Squared Difference is the default search method used by \fClibcvautomation\fP, as well as \fCcva-match\fP and \fCcva-input\fP.
.PP
\fBFor this method, setting a low tolerance value results in a more strict match.\fP.RS 4
.RE
.PP
Formula: $R(x,y) = \sum_{x',y'} (T(x',y') - I(x + x', y+y'))^2 $
.SH "Squared Difference (Normalized)"
.PP
.PP
.nf
#define CV_TM_SQDIFF_NORMED 1
.fi
.PP
This is a normalized version of the \fBSquared Difference\fP search method.
.PP
\fBFor this method, setting a low tolerance value results in a more strict match.\fP.RS 4
.RE
.PP
Formula: $ R(x,y) = \frac{\sum_{x',y'}(T(x',y') - I(x + x', y + y'))^2}{ \sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'}I(x + x', y + y')^2}} $
.SH "Cross Correlation"
.PP
.PP
.nf
#define CV_TM_CCORR 2
.fi
.PP
This is the Cross Correlation search method.
.PP
\fBFor this method, setting a high tolerance value results in a more strict match.\fP.RS 4
.RE
.PP
Formula: $ R(x,y)= \sum _{x',y'} (T(x',y') \cdot I(x+x',y+y')) $
.SH "Cross Correlation (Normalized)"
.PP
.PP
.nf
#define CV_TM_CCORR_NORMED 3
.fi
.PP
This is the normalized version of the \fBCross Correlation\fP search method.
.PP
\fBFor this method, setting a high tolerance value results in a more strict match.\fP.RS 4
.RE
.PP
Formula: $ R(x,y)= \frac{\sum_{x',y'} (T(x',y') \cdot I'(x+x',y+y'))}{\sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}} $
.SH "Correlation Coefficient"
.PP
.PP
.nf
#define CV_TM_CCOEFF 4
.fi
.PP
This is the Correlation Coefficient search method.
.PP
\fBFor this method, setting a high tolerance value results in a more strict match.\fP.RS 4
.RE
.PP
Formula: $ R(x,y)= \sum _{x',y'} (T'(x',y') \cdot I(x+x',y+y')) $ where: $ \begin{array}{l} T'(x',y')=T(x',y') - 1/(w \cdot h) \cdot \sum _{x'',y''} T(x'',y'') \\ I'(x+x',y+y')=I(x+x',y+y') - 1/(w \cdot h) \cdot \sum _{x'',y''} I(x+x'',y+y'') \end{array} $
.SH "Correlation Coefficient (Normalized)"
.PP
.PP
.nf
#define CV_TM_CCOEFF_NORMED 5
.fi
.PP
This is the normalized version of the \fBCorrelation Coefficient\fP search method.
.PP
\fBFor this method, setting a high tolerance value results in a more strict match.\fP.RS 4
.RE
.PP
Formula: $ R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{ \sqrt{\sum_{x',y'}T'(x',y')^2 \cdot \sum_{x',y'} I'(x+x',y+y')^2} } $

View File

@ -0,0 +1,321 @@
.TH "writing_app_tests" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
writing_app_tests \- Writing Application Tests
\fBAuthor:\fP
.RS 4
Bradlee Speice <\fCbspeice@uncc.edu\fP>
.RE
.PP
\fBDate:\fP
.RS 4
7/23/2012
.RE
.PP
.SH "Audience"
.PP
.PD 0
.IP "\(bu" 2
This document was written for people with some intermediate knowledge of BASH.
.IP "\(bu" 2
Screenshot experience is required - being able to create screenshots of windows using \fCGIMP\fP, the \fCimport\fP command from \fCImageMagick\fP, or something similar.
.br
.IP "\(bu" 2
Required for working with libcvautomation internals (not needed strictly for writing application testing):
.PD 0
.IP " \(bu" 4
Intermediate-level C knowledge required for interfacing with libcvautomation. There isn't much complicated going on with libcvautomation itself, but you need to know to use \fBcvaOpenDisplay()\fP for grabbing a display and then \fBcvaCloseDisplay()\fP for closing it later for example.
.IP " \(bu" 4
C++ is available, but currently only as \fCextern 'C'\fP style bindings.
.IP " \(bu" 4
Python bindings are in progress as of time-of-writing
.PP
.PP
.SH "Purpose"
.PP
.PD 0
.IP "\(bu" 2
This document is intended to outline the libcvautomation testing library for GUI applications and its two reference programs \fCcva-match\fP and \fCcva-input\fP
.IP "\(bu" 2
These programs allow you to automate mouse and keyboard events in response to what appears on screen - for example, clicking a button based on an image of that button on screen.
.PP
.SH "Using Libcvautomation"
.PP
.PD 0
.IP "\(bu" 2
Since libcvautomation is a shared-object library intended to bundle a lot of functionality in one area, we must use external programs to agin access to the functions of libcvautomation.
.IP "\(bu" 2
Two reference programs have been included to make this easy - \fCcva-match\fP and \fCcva-input\fP
.IP "\(bu" 2
The reference programs are fairly full-featured, and expose most of libcvautomation:
.PD 0
.IP " \(bu" 4
\fCcva-match\fP allows you to match multiple image files against a root image providing very fine control over how specific the match is
.IP " \(bu" 4
\fCcva-input\fP allows you to drive the X11 server using the XTest extension - for example, clicking on a button from image, clicking a key on the keyboard, and more.
.PP
.IP "\(bu" 2
These two programs should implement all functionality needed for GUI automation. Please contact \fCbspeice@uncc.edu\fP if you have suggestions for extra functionality, patches, comments, etc.
.IP "\(bu" 2
Finally, if you want to write your own programs using libcvautomation, the headers are located on your system. Use:
.PP
.nf
#include <libcvautomation/libcvautomation.h>
.fi
.PP
to include all necessary header files. See the 'Files' tab above to get an idea of what functionality exists.
.PP
\fBNote:\fP
.RS 4
Intermediate C or C++ knowledge is required for programming with libcvautomation. C++ is currently only supported through \fCextern 'C'\fP, and full C++ bindings are not currently planned. Libcvautomation itself is incredibly simple, but interfaces with a few API's (Xlib, libcv) that it is helpful to have an idea of how to use.
.RE
.PP
.PP
.SH "Application Testing"
.PP
Now we get into the good stuff. The basic process for application testing is as follows:
.PD 0
.IP "\(bu" 2
Create a sequence of screenshots for all mouse-clicks
.IP "\(bu" 2
Create a testing wrapper in BASH for automating the application
.IP "\(bu" 2
Test the wrapper and tune any necessary options
.PP
.SS "Creating the Screenshot Sequence"
.PD 0
.IP "\(bu" 2
This process creates a set of screenshots by which libcvautomation can drive the X11 server
.IP "\(bu" 2
The process is simple - create a screenshot of all buttons you would like to click in an application test, or location where you would like to move the mouse, etc.
.IP "\(bu" 2
This can be accomplished a number of different ways - using GIMP, the \fCimport\fP command, or any other screenshot program. Additionally, libcvautomation will support any image format that OpenCV does. At the time of writing, these are:
.PD 0
.IP " \(bu" 4
Windows bitmaps - \fC*.bmp\fP, \fC*.dib\fP
.IP " \(bu" 4
JPEG files - \fC*.jpeg\fP, \fC*.jpg\fP, \fC*.jpe\fP
.IP " \(bu" 4
JPEG 2000 files - \fC*.jp2\fP
.IP " \(bu" 4
Portable Network Graphics - \fC*.png\fP
.IP " \(bu" 4
Portable image format - \fC*.pbm\fP, \fC*.pgm\fP, \fC*.ppm\fP
.IP " \(bu" 4
Sun rasters - \fC*.sr\fP, \fC*.ras\fP
.IP " \(bu" 4
TIFF files - \fC*.tiff\fP, \fC*.tif\fP
.PP
.br
.IP "\(bu" 2
Some tips on creating screenshots:
.PD 0
.IP " \(bu" 4
Use as distinct an image as possible in a screenshot. For example, the following images look very similar, but can do very different things:
.br
.PD 0
.IP " \(bu" 6
The large amount of grey-space in each of the images can be very confusing. While the text itself is different, the overwhelming amount of grey space can result in a false positive. Limiting the space of the screenshot can be useful:
.br
.IP " \(bu" 6
Limiting the button size in this case helps the program identify what button you want to click, but in general you want to include as much detail as possible.
.PP
.br
.IP " \(bu" 4
Be careful of where an image may appear multiple times in a screenshot. For example, a 'Help' button on a dialog may get confused with the 'Help' menu at the top of the screen.
.PP
.PP
.PP
.SS "Create a Testing Wrapper"
.PD 0
.IP "\(bu" 2
This is where the BASH knowledge comes into play. We are going to write a script that will run your application test, to make sure that the GUI is functioning correctly.
.IP "\(bu" 2
The following is the (strongly) recommended process, but is not strictly necessary to follow this. The way I'm going to explain this is by giving an example test I wrote, and explain what is going on:
.PP
.nf
#!/bin/bash
#This is an application test involving libcvautomation and libreoffice
. /etc/libcvautomation_funcs
set -o errexit
#Changing any wrapper parameters should go here
start_libreoffice_writer ()
{
click_i 'screens/gnome-1_menu.png' 'screens/kde-1_menu.png'
click_i 'screens/gnome-2_officeMenu.png' 'screens/kde-2_officeMenu.png'
hover_i 'screens/gnome-3_LibreOfficeWriter.png' 'screens/kde-3_LibreOfficeWriter.png'
jiggle_mouse
click
sleep 30
}
close_libreoffice_writer()
{
click_i 'screens/gnome-4_fileMenu.png' 'screens/kde-4_fileMenu.png'
click_i 'screens/gnome-5_fileExit.png' 'screens/kde-5_fileExit.png'
click_i 'screens/gnome-6_discard.png' 'screens/kde-6_discard.png'
}
start_libreoffice_writer
close_libreoffice_writer
.fi
.PP
.br
.PP
.nf
#!/bin/bash
#This is an application test involving libcvautomation and libreoffice
. /etc/libcvautomation_funcs
set -o errexit
#Changing any wrapper parameters should go here
.fi
.PP
.IP "\(bu" 2
The purpose of these lines is just the standard BASH header. Additionally, we import a wrapper created for libcvautomation to make our job easier. Please note that this is the default directory for the wrapper, your installation may be different. Use the command \fClocate libcvautomation_funcs\fP to find it on your computer. The wrapper itself is a handful of macros used to make our job easy.
.IP "\(bu" 2
The \fCset\fP line will abort the test if an error is ever encountered - for example, no images are found.
.IP "\(bu" 2
Changing any wrapper parameters should go after sourcing the wrapper functions. See \fBEnvironment Variables\fP for more information.
.br
.br
.PP
.nf
start_libreoffice_writer ()
{
click_i 'screens/gnome-1_menu.png' 'screens/kde-1_menu.png'
click_i 'screens/gnome-2_officeMenu.png' 'screens/kde-2_officeMenu.png'
hover_i 'screens/gnome-3_LibreOfficeWriter.png' 'screens/kde-3_LibreOfficeWriter.png'
jiggle_mouse
click
sleep 30
}
.fi
.PP
.IP "\(bu" 2
This is the actual body of work done by libcvautomation
.IP "\(bu" 2
\fCclick_i\fP is a function to click the mouse at an image - in this case, the gnome or kde menu.
.PD 0
.IP " \(bu" 4
Because of how the cva-input program is designed, you can give it multiple images, and it will only select the one currently available. See the \fBAppendix of Wrapper Functions and Environment Variables\fP for more information on how to use this (\fCTOLERANCE\fP specifically)
.IP " \(bu" 4
Additionally, the wrapper (by default) will wait for an image to appear before clicking on it. This way, you can string together click_i commands even when the program may need to wait a while on processing. Make sure to read up on the \fCTIMEOUT\fP option to learn how to use this.
.IP " \(bu" 4
By using the function \fCclick_i\fP, we make things a bit more readable - the full command line is \fCcva-input -s 'icmouseclick <filename>'\fP
.IP " \(bu" 4
See the \fBAppendix of Wrapper Functions and Environment Variables\fP for a list of all functions available in the wrapper.
.PP
.IP "\(bu" 2
\fChover_i\fP is a function to move the mouse to an image - in this case, move it over the LibreOffice menu item.
.IP "\(bu" 2
Then we jiggle the mouse to make sure that the item activates, click, and wait for the program to start up.
.br
.br
.PP
.nf
close_libreoffice_writer()
{
click_i 'screens/gnome-4_fileMenu.png' 'screens/kde-4_fileMenu.png'
click_i 'screens/gnome-5_fileExit.png' 'screens/kde-5_fileExit.png'
click_i 'screens/gnome-6_discard.png' 'screens/kde-6_discard.png'
}
.fi
.PP
.IP "\(bu" 2
Use the \fCclick_i\fP function to close down LibreOffice writer - Find the 'File' menu, click 'Exit', and then make sure to discard all changes.
.br
.br
.PP
.nf
start_libreoffice_writer
close_libreoffice_writer
.fi
.PP
.IP "\(bu" 2
Actually run the functions given.
.br
.br
.IP "\(bu" 2
Please note that this is a fairly trivial example. The full list of commands available in the wrapper is given in \fBAppendix of Wrapper Functions and Environment Variables\fP
.PP
.SS "Testing the Testing Wrapper"
.PD 0
.IP "\(bu" 2
First things first, run through the testing wrapper to make sure that everything is O.K.
.IP "\(bu" 2
If you need to, there are a few environment variables you can set to change how the wrapper works. See \fBEnvironment Variables\fP for more information on how these work.
.IP "\(bu" 2
A full list of commands provided by the wrapper is available at \fBFunctions\fP
.PP
.PP
\fBNote:\fP
.RS 4
These options are controlled using the testing script as demonstrated above. Any modifications to the following values should be done at the line:
.PP
.nf
#Changing any wrapper parameters should go here
.fi
.PP
.RE
.PP
.SH "Wrapping Up"
.PP
.PD 0
.IP "\(bu" 2
At this point you should have all the information you need to write your own application tests. The libcvautomation library and reference programs were designed to be simple and powerful, but if you invest the time to learn them and some expert BASH scripting, you can do some very complex things.
.PD 0
.IP " \(bu" 4
For example, integrating a \fCTest Anything Protocol\fP wrapper into your scripts as well.
.PP
.IP "\(bu" 2
If you have questions, comments, concerns, suggestions, or feedback in general, feel free to let me know at \fCbspeice@uncc.edu\fP.
.PP

View File

@ -0,0 +1,176 @@
.TH "xtest_command_strings" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
xtest_command_strings \- xte_commandString() Command Strings
This page describes the various command strings available for the \fBxte_commandString()\fP function.
.SH "Mouse Click"
.PP
.PP
.nf
'mouseclick <button_number>'
.fi
.PP
Click the mouse button \fC\fP <button_number> in-place.
.SH "Image Mouse Click"
.PP
.PP
.nf
'imouseclick <image_name>'
.fi
.PP
Click the mouse at an image's top-left corner.
.SH "Image Mouse Click (Centered)"
.PP
.PP
.nf
'icmouseclick <image_name>'
.fi
.PP
Click the mouse at an image's center.
.SH "Mouse XY Move"
.PP
.PP
.nf
'mousexy <x-coord> <y-coord>'
.fi
.PP
Move the mouse to an absolute coordinate.
.PP
\fBWarning:\fP
.RS 4
The \fC<x-coord>\fP and \fC<y-coord>\fP are expected to be integers.
.RE
.PP
.SH "Mouse XY Move (Relative)"
.PP
.PP
.nf
'mouserxy <x-increment> <y-increment>'
.fi
.PP
Move the mouse by the given x and y values (relative motion).
.PP
\fBA positive X increment will move the mouse to the right, and a positive Y increment will move the mouse down.\fP.RS 4
.RE
.PP
\fBWarning:\fP
.RS 4
The \fC<x-increment>\fP and \fC<y-increment>\fP are expected to be integers.
.RE
.PP
.SH "Mouse Image Move"
.PP
.PP
.nf
'mouseimage <image_name>'
.fi
.PP
Move the mouse to an image's top-left corner.
.SH "Mouse Image Move (Centered)"
.PP
.PP
.nf
'cmouseimage <image_name>'
.fi
.PP
Move the mouse to an image's center.
.SH "Mouse Button Down"
.PP
.PP
.nf
'mousedown <button_number>'
.fi
.PP
Push and leave down a mouse button.
.SH "Mouse Button Up"
.PP
.PP
.nf
'mouseup <button_number>'
.fi
.PP
Release mouse button \fC\fP <button_number>
.SH "Mouse Jiggle"
.PP
.PP
.nf
'mousejiggle'
.fi
.PP
Jiggle the mouse (helps to activate some widgets). Moves the mouse right and down 1 pixel, and then back.
.SH "Mouse Scroll Down"
.PP
.PP
.nf
'mousescrolld'
.fi
.PP
Scroll the mouse down 1 time - depending on window manager settings, etc., this may be multiple lines.
.PP
\fBNote:\fP
.RS 4
This is a wrapper function for clicking button 4 on the mouse
.RE
.PP
.SH "Mouse Scroll Up"
.PP
.PP
.nf
'mousescrollu'
.fi
.PP
Scroll the mouse up 1 time - depending on window manager settings, etc., this may be multiple lines.
.PP
\fBNote:\fP
.RS 4
This is a wrapper function for clicking button 5 on the mouse
.RE
.PP
.SH "Key Button Click"
.PP
.PP
.nf
'keyclick <key_name>'
.fi
.PP
Push and release a keyboard key. This can be a key like \fC'a'\fP, \fC'b'\fP, or something fancy like \fC'space'\fP. Please see \fBXTest Key Strings\fP for a full list of special keys.
.SH "Key Button Down"
.PP
.PP
.nf
'keydown <key_name>'
.fi
.PP
Push down \fIbut do not release\fP a keyboard key. This can be a key like \fC'a'\fP, \fC'b'\fP, or something fancy like \fC'space'\fP. Please see \fBXTest Key Strings\fP for a full list of special keys.
.SH "Key Button Up"
.PP
.PP
.nf
'keyup <key_name>'
.fi
.PP
Release a keyboard key. This can be a key like \fC'a'\fP, \fC'b'\fP, or something fancy like \fC'space'\fP. Please see \fBXTest Key Strings\fP for a full list of special keys.
.SH "Keyboard Input String"
.PP
.PP
.nf
'keystring <string>'
.fi
.PP
Input a string of text to the X11 server. For example, inputting 'Hello, world!' will act as if you typed 'Hello, world!' from the keyboard.
.PP
\fBWarning:\fP
.RS 4
Unlike \fBKey Button Down\fP, \fBKey Button Up\fP, and \fBKey Button Click\fP, this function can not handle special keys like 'space'.
.RE
.PP
.SH "Wait for Image"
.PP
.PP
.nf
'waitfor <image_name>'
.fi
.PP
Wait for an image to show up on screen. For example, this can be used to make sure a button exists before clicking it.

View File

@ -0,0 +1,266 @@
.TH "xtest_key_strings" 3 "23 Jul 2012" "Version 1.3" "libcvautomation" \" -*- nroff -*-
.ad l
.nh
.SH NAME
xtest_key_strings \- XTest Key Strings
This page describes the various extra key strings to use with X11. The following list is generated with this command:
.PP
.nf
xmodmap -pke | cut -d'=' -f2 | sed 's/ /\n/g' | tr -s '\n' | awk '{ print length(), $0 | 'sort -n' }' | cut -d' ' -f2 | uniq
.fi
.PP
.PP
.nf
0
1
2
3
4
5
6
7
8
9
a
A
b
B
c
C
d
D
e
E
f
F
g
G
h
H
i
I
j
J
k
K
l
L
m
M
n
N
o
O
p
P
q
Q
r
R
s
S
t
T
u
U
v
V
w
W
x
X
y
Y
z
Z
at
F1
F2
F3
F4
F5
F6
F7
F8
F9
Up
bar
End
F10
F11
F12
Tab
Down
Home
KP_0
KP_1
KP_2
KP_3
KP_4
KP_5
KP_6
KP_7
KP_8
KP_9
Left
less
Menu
Next
plus
Alt_L
Break
colon
comma
equal
grave
KP_Up
minus
Pause
Print
Prior
Right
slash
space
aacute
Aacute
dagger
Delete
dollar
eacute
Eacute
Escape
exclam
iacute
Iacute
Insert
KP_Add
KP_End
Meta_L
oacute
Oacute
period
Return
uacute
Uacute
greater
Hyper_L
KP_Down
KP_Home
KP_Left
KP_Next
percent
Shift_L
Shift_R
Super_L
Super_R
Sys_Req
XF86WWW
asterisk
KP_Begin
KP_Enter
KP_Equal
KP_Prior
KP_Right
NoSymbol
Num_Lock
question
quotedbl
XF86Back
XF86Mail
XF86Stop
XF86WLAN
ampersand
backslash
BackSpace
braceleft
brokenbar
Caps_Lock
Control_L
Control_R
KP_Delete
KP_Divide
KP_Insert
parenleft
semicolon
XF86Eject
XF86Sleep
adiaeresis
Adiaeresis
apostrophe
asciitilde
braceright
ediaeresis
Ediaeresis
idiaeresis
KP_Decimal
numbersign
odiaeresis
Odiaeresis
parenright
udiaeresis
Udiaeresis
underscore
XF86Reload
XF86Search
XF86WakeUp
asciicircum
bracketleft
KP_Multiply
KP_Subtract
Mode_switch
Scroll_Lock
XF86Battery
XF86Display
XF86Forward
XF86_Ungrab
bracketright
doubledagger
ISO_Left_Tab
XF86PowerOff
XF86AudioMute
XF86AudioNext
XF86AudioPrev
XF86AudioStop
XF86Favorites
XF86AudioMedia
XF86AudioPause
XF86Calculator
XF86_ClearGrab
XF86MyComputer
XF86_Next_VMode
XF86_Prev_VMode
ISO_Level3_Shift
Terminate_Server
XF86_Switch_VT_1
XF86_Switch_VT_2
XF86_Switch_VT_3
XF86_Switch_VT_4
XF86_Switch_VT_5
XF86_Switch_VT_6
XF86_Switch_VT_7
XF86_Switch_VT_8
XF86_Switch_VT_9
XF86KbdLightOnOff
XF86_Switch_VT_10
XF86_Switch_VT_11
XF86_Switch_VT_12
Pointer_EnableKeys
XF86KbdBrightnessUp
XF86MonBrightnessUp
XF86AudioLowerVolume
XF86AudioRaiseVolume
XF86KbdBrightnessDown
XF86MonBrightnessDown
.fi
.PP
.PP
\fBWarning:\fP
.RS 4
Please note that each key string above is first translated into a key code, and then into the actual key click. Thus, while you might intend to press 'dollar', it will actually come out as '4'. If you need a \fC'$'\fP to come out, use the \fC'keystring $'\fP command to \fBxte_commandString()\fP or \fC'key_str $'\fP function in the BASH wrapper - see the \fBAppendix of Wrapper Functions and Environment Variables\fP.
.RE
.PP