#include "geis_config.h"
#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <sys/select.h>
void print_attr(GeisAttr attr)
{
{
printf(" \"%s\": %s\n", attr_name,
break;
break;
break;
break;
default:
break;
}
}
void
{
GeisAttr attr;
GeisSize i;
printf("device %02d \"%s\"\n",
geis_device_id(device), geis_device_name(device));
for (i = 0; i < geis_device_attr_count(device); ++i)
{
print_attr(geis_device_attr(device, i));
}
}
void
{
GeisSize i;
GeisAttr attr;
printf("gesture\n");
for (i= 0; i < geis_groupset_group_count(groupset); ++i)
{
GeisSize j;
GeisGroup group = geis_groupset_group(groupset, i);
printf("+group %u\n", geis_group_id(group));
for (j=0; j < geis_group_frame_count(group); ++j)
{
GeisSize k;
GeisFrame frame = geis_group_frame(group, j);
GeisSize attr_count = geis_frame_attr_count(frame);
printf("+frame %u\n", geis_frame_id(frame));
for (k = 0; k < attr_count; ++k)
{
print_attr(geis_frame_attr(frame, k));
}
for (k = 0; k < geis_frame_touchid_count(frame); ++k)
{
GeisSize touchid = geis_frame_touchid(frame, k);
GeisTouch touch = geis_touchset_touch_by_id(touchset, touchid);
GeisSize n;
printf("+touch %u\n", (unsigned)k);
for (n = 0; n < geis_touch_attr_count(touch); ++n)
{
print_attr(geis_touch_attr(touch, n));
}
}
}
}
}
void
{
GeisFilter filter = geis_filter_new(geis,
"filter");
geis_filter_add_term(filter,
NULL);
status = geis_subscription_add_filter(subscription, filter);
{
fprintf(stderr, "error adding filter\n");
}
}
int
main(int argc GEIS_UNUSED, char* argv[] GEIS_UNUSED)
{
int fd;
NULL);
while(1)
{
fd_set read_fds;
FD_ZERO(&read_fds);
FD_SET(0, &read_fds);
FD_SET(fd, &read_fds);
int sstat = select(fd+1, &read_fds, NULL, NULL, NULL);
if (sstat < 0)
{
fprintf(stderr, "error %d in select(): %s\n", errno, strerror(errno));
break;
}
if (FD_ISSET(fd, &read_fds))
{
{
switch (geis_event_type(event))
{
case GEIS_EVENT_INIT_COMPLETE:
target_subscription(geis, subscription);
status = geis_subscription_activate(subscription);
break;
case GEIS_EVENT_DEVICE_AVAILABLE:
case GEIS_EVENT_DEVICE_UNAVAILABLE:
dump_device_event(event);
break;
case GEIS_EVENT_GESTURE_BEGIN:
case GEIS_EVENT_GESTURE_UPDATE:
case GEIS_EVENT_GESTURE_END:
dump_gesture_event(event);
break;
default:
break;
}
geis_event_delete(event);
}
}
if (FD_ISSET(0, &read_fds))
{
break;
}
}
geis_subscription_delete(subscription);
geis_delete(geis);
}
A gesture-capable input device.
Selects a subset of possible gestures in a subscription.
A collection of information describing the state of a gesture.
A collection of gesture frames.
A collection of GeisGroups.
Represents an instance of the gesture recognition engine.
A gesture recognition subscription.
A collection of GeisTouch.
This is the public interface for the GEIS gesture API.
GeisStatus
Errors returned from calls.
Definition geis.h:73
@ GEIS_STATUS_SUCCESS
normal successful completion
Definition geis.h:74
@ GEIS_STATUS_CONTINUE
normal successful completion with data still remaining
Definition geis.h:75
@ GEIS_ATTR_TYPE_BOOLEAN
Attr is truth-valued .
Definition geis.h:93
@ GEIS_ATTR_TYPE_FLOAT
Attr is real-valued.
Definition geis.h:94
@ GEIS_ATTR_TYPE_STRING
Attr is a null-terminated UTF-8 string.
Definition geis.h:97
@ GEIS_ATTR_TYPE_INTEGER
Attr is a counting number.
Definition geis.h:95
GeisAttrType geis_attr_type(GeisAttr attr)
Gets the type of an attribute value.
GeisString geis_attr_name(GeisAttr attr)
An opaque type that encapsulates a GEIS attribute.
GeisStatus geis_dispatch_events(Geis geis)
Pumps the GEIS event loop.
GeisStatus geis_next_event(Geis geis, GeisEvent *event)
Retrieves the next queued GEIS event.
GeisBoolean geis_attr_value_to_boolean(GeisAttr attr)
Gets the value of an attribute as a GeisBoolean.
GeisStatus geis_get_configuration(Geis geis, GeisString configuration_item_name, void *configuration_item_value)
Gets a feature configuration value.
#define GEIS_CONFIGURATION_FD
Gets a Unix file descriptor that will signal the availablility of GEIS events for processing.
Definition geis.h:714
GeisPointer geis_attr_value_to_pointer(GeisAttr attr)
Gets the value of an attribute as a GeisPointer.
GeisFloat geis_attr_value_to_float(GeisAttr attr)
Gets the value of an attribute as a GeisFloat.
GeisInteger geis_attr_value_to_integer(GeisAttr attr)
Gets the value of an attribute as a GeisInteger.
GeisString geis_attr_value_to_string(GeisAttr attr)
Gets the value of an attribute as a GeisString.
#define GEIS_EVENT_ATTRIBUTE_DEVICE
The event attribute containing a pointer to a GeisDevice.
Definition geis.h:1273
@ GEIS_FILTER_CLASS
Filters on gesture class and gesture attributes.
Definition geis.h:1714
@ GEIS_FILTER_OP_EQ
Compares for equality.
Definition geis.h:1724
#define GEIS_INIT_TRACK_DEVICES
Tells GEIS to send input device events.
Definition geis.h:566
#define GEIS_INIT_TRACK_GESTURE_CLASSES
Tells GEIS to send gesture class events.
Definition geis.h:567
#define GEIS_EVENT_ATTRIBUTE_GROUPSET
The event attribute containing a pointer to a GeisGroupSet.
Definition geis.h:2082
#define GEIS_EVENT_ATTRIBUTE_TOUCHSET
The event attribute containing a pointer to a GeisTouchSet.
Definition geis.h:2083
@ GEIS_SUBSCRIPTION_CONT
The gesture engine will return gesture continuations, in which the class of a recognized gestire may ...
Definition geis.h:1845