Tizen Native API  5.5
Input Events Feeding Functions

Functions to tell Evas that input events happened and should be processed.

Warning:
Most of the time these functions are not what you're looking for. These functions should only be used if you're not working with ecore evas (or another input handling system). If you're not using ecore evas please consider using it, in most situation it will make life a lot easier.

As explained in intro_not_evas, Evas does not know how to poll for input events, so the developer should do it and then feed such events to the canvas to be processed. This is only required if operating Evas directly. Modules such as Ecore_Evas do that for you.

Some of the functions in this group are exemplified here.

Functions

Evas_Device * evas_device_add (Evas *e)
void evas_device_del (Evas_Device *dev)
void evas_device_push (Evas *e, Evas_Device *dev)
void evas_device_pop (Evas *e)
const Eina_Listevas_device_list (Evas *e, const Evas_Device *dev)
Evas_Device * evas_device_get (Evas *e, const char *name)
Evas_Device * evas_device_get_by_seat_id (Evas *eo_e, unsigned int id)
void evas_device_name_set (Evas_Device *dev, const char *name)
const char * evas_device_name_get (const Evas_Device *dev)
void evas_device_seat_id_set (Evas_Device *dev, unsigned int id)
unsigned int evas_device_seat_id_get (const Evas_Device *dev)
void evas_device_description_set (Evas_Device *dev, const char *desc)
const char * evas_device_description_get (const Evas_Device *dev)
void evas_device_parent_set (Evas_Device *dev, Evas_Device *parent) EINA_DEPRECATED
const Evas_Device * evas_device_parent_get (const Evas_Device *dev)
void evas_device_class_set (Evas_Device *dev, Evas_Device_Class clas) EINA_DEPRECATED
Evas_Device_Class evas_device_class_get (const Evas_Device *dev)
void evas_device_subclass_set (Evas_Device *dev, Evas_Device_Subclass clas)
Evas_Device_Subclass evas_device_subclass_get (const Evas_Device *dev)
void evas_device_emulation_source_set (Evas_Device *dev, Evas_Device *src)
const Evas_Device * evas_device_emulation_source_get (const Evas_Device *dev)

Function Documentation

Evas_Device* evas_device_add ( Evas e)

Add a new device type

Parameters:
eThe canvas to create the device node for.

Adds a new device node to the given canvas e. All devices created as part of the canvas e will automatically be deleted when the canvas is freed.

Returns:
the device node created or NULL if an error occurred.
See also:
evas_device_del
evas_device_add_full
Since (EFL) :
1.8
Since :
3.0
Evas_Device_Class evas_device_class_get ( const Evas_Device *  dev)

Get the major class of a device

Parameters:
devThe devise to query
Returns:
The device class to set

This gets the device class set by evas_device_class_set().

Since (EFL) :
1.8
Since :
3.0
void evas_device_class_set ( Evas_Device *  dev,
Evas_Device_Class  clas 
)

Set the major class of device

Parameters:
devThe device whose class to set
clasThe class to set it to

This sets the "primary" class of device (a broad thing like mouse, keyboard, touch, pen etc.).

Deprecated:
The class of a device can not be changed after creation.
Since (EFL) :
1.8
Since :
3.0
void evas_device_del ( Evas_Device *  dev)

Delete a new device type

Parameters:
devThe device node you want to delete.
See also:
evas_device_add
evas_device_push
evas_device_pop
Since (EFL) :
1.8
Since :
3.0
const char* evas_device_description_get ( const Evas_Device *  dev)

Get the description of a device

dev The device to query

Returns:
The device description string or NULL if none is set

This gets the description set by evas_device_description_set(). This is a readable UTF8 C string, or NULL if no description is set.

A description is meant to be a longer string describing the device so a human may make sense of it. For example "Wireless 6 button mouse in Black with red buttons" would be a good description, so a user may identify precisely which device is being talked about.

Since (EFL) :
1.8
Since :
3.0
void evas_device_description_set ( Evas_Device *  dev,
const char *  desc 
)

Set the description of a device as a string

dev The device to set the description of name The description string as a readable C UTF8 string

Since (EFL) :
1.8
Since :
3.0
const Evas_Device* evas_device_emulation_source_get ( const Evas_Device *  dev)

Get the emulation source device

Parameters:
devThe device to query
Returns:
The source emulation device set by evas_device_emulation_source_set().
Since (EFL) :
1.8
Since :
3.0
void evas_device_emulation_source_set ( Evas_Device *  dev,
Evas_Device *  src 
)

Set the emulation source device

Parameters:
devThe device being emulated
srcThe primary source device producing events in the emulated device

Devices may not be real, but may be emulated by listening to input on other devices and modifying or interpeting it to generate output on an emulated device (example a finger on a touchscreen will often emulate a mouse when it presses). This allows you to set which device primarily emulates dev so the user can choose to ignore events from emulated devices if they also pay attention to source device events for example.

Since (EFL) :
1.8
Since :
3.0
Evas_Device* evas_device_get ( Evas e,
const char *  name 
)

Get a device by its name

Parameters:
eThe canvas to find the device on
nameThe name of the device.

Gets the first occurrence of a device named as name on Evas e list of devices.

Returns:
the device or NULL if an error occurred, no name was provided, or no device with a matching name was found.
Since (EFL) :
1.19
Evas_Device* evas_device_get_by_seat_id ( Evas eo_e,
unsigned int  id 
)

Get a device by its seat id

Parameters:
eo_eThe canvas to find the device on
idThe seat id of the device.

Gets the device with id id on Evas e list of devices.

Returns:
the device or NULL if no device with a matching id was found.
Since (EFL) :
1.20
const Eina_List* evas_device_list ( Evas e,
const Evas_Device *  dev 
)

List all current devices attached to the given canvas and/or device

Parameters:
eThe canvas to query for a device list
devA specific device inside the canvas to query for child devices or NULL if just querying the base canvas devices
Returns:
An internal list of Evas_Device pointers, or NULL if no devices are found

This will list all devices belonging to a specific evas canvas e, at the top-level in the device tree if dev passed in is NULL. If dev is a valid device for the given canvas e, then a list of child devices of dev will be returned, allowing you to walk the device tree.

The list returned is only valid so long as no changes are made to the device tree in the given canvas e. If there are no devices or children then NULL is returned.

See also:
evas_device_parent_get
evas_device_name_get
evas_device_description_get
evas_device_class_get
evas_device_subclass_get
evas_device_emulation_source_get
Since (EFL) :
1.8
Since :
3.0
const char* evas_device_name_get ( const Evas_Device *  dev)

Get the name of a device

dev The device to query

Returns:
The device name string or NULL if none is set

This gets the name set by evas_device_name_set(). This is a readable UTF8 C string, or NULL if no name is set.

The name should be a short name like "Wireless Mouse", "Joystick", "Finger", "Keyboard" or "Numberpad" etc.

Since (EFL) :
1.8
Since :
3.0
void evas_device_name_set ( Evas_Device *  dev,
const char *  name 
)

Set the name of a device as a string

dev The device to set the name of name The name string as a readable C UTF8 string

Since (EFL) :
1.8
Since :
3.0
const Evas_Device* evas_device_parent_get ( const Evas_Device *  dev)

Get the parent of a device

Parameters:
devThe device to query
Returns:
The parent device or NULL if it is a toplevel

This returns the parent device of any given device entry, or NULL if no parent device exists (is a toplevel device).

Since (EFL) :
1.8
Since :
3.0
void evas_device_parent_set ( Evas_Device *  dev,
Evas_Device *  parent 
)

Set the parent of a device

dev The device to set the parent of parent The new parent device

This sets the parent of a device dev to the parent given by parent. If the device already has a parent, it is removed from that parent's list. If parent is NULL then the device is unparented and placed back as a root device in the canvas.

When a device is deleted with evas_device_del(), all children are also deleted along with it.

See also:
evas_device_del
evas_device_parent_get
evas_device_list
Since (EFL) :
1.8
Since :
3.0
void evas_device_pop ( Evas e)

This pops the top of the device stack for the canvas

Parameters:
eThe canvas to pop the device stack from

This pops the top of the device stack making the current device context used for device events being what is now at the top of the stack after popping.

See also:
evas_device_push
Since (EFL) :
1.8
Since :
3.0
void evas_device_push ( Evas e,
Evas_Device *  dev 
)

Push the current context device onto the device stack

Parameters:
eThe canvas to push the device on to
devThe device to push.

This pushes the given device dev onto the stack for the canvas e resulting in the dev pointer in all events that get fed to the canvas being the device at the top of the device stack for that canvas.

If a device is pushed onto the device stack, it will not be deleted until a canvas free OR until it has been popped from the stack even if evas_device_del() is called.

The device dev must have been created as a device for the canvas it is pushed onto (and not another canvas).

Example:

 evas_device_push(canvas, dev);
 evas_event_feed_mouse_move(canvas, 20, 30, 0, NULL);
 evas_device_pop(canvas);
See also:
evas_device_pop
Since (EFL) :
1.8
Since :
3.0
unsigned int evas_device_seat_id_get ( const Evas_Device *  dev)

Get the seat id of a device

dev The device to query

Returns:
The device seat id or 0 if none is set

This gets the seat id set by evas_device_seat id_set().

A seat id is the hardware id of the seat.

Since (EFL) :
1.20
void evas_device_seat_id_set ( Evas_Device *  dev,
unsigned int  id 
)

Set the seat id of a device

dev The device to set the seat id of name The seat id

Since (EFL) :
1.20
Evas_Device_Subclass evas_device_subclass_get ( const Evas_Device *  dev)

Get the device sub-class

Parameters:
devThe device to query
Returns:
The device sub-class set by evas_device_subclass_set().
Since (EFL) :
1.8
Since :
3.0
void evas_device_subclass_set ( Evas_Device *  dev,
Evas_Device_Subclass  clas 
)

Set the sub-class of a device

Parameters:
devThe device to modify
clasThe sub-class to set

This sets the sub-class of a device, giving much more detailed usage within a broader category.

Since (EFL) :
1.8
Since :
3.0
void evas_event_feed_axis_update ( Evas obj,
unsigned int  timestamp,
int  device,
int  toolid,
int  naxes,
const Evas_Axis *  axis,
const void *  data 
)

Input device axis update event feed.

This function will set some evas properties that are necessary when an e.g. stylus axis is updated. It prepares information to be treated by the callback function.

Parameters:
[in]deviceSystem-provided device identifier.
[in]toolidType of tool currently being used.
[in]naxesNumber of elements in the axis array.
[in]axisArray containing the current value of all updated axes.
[in]dataData for canvas.
Since (EFL) :
1.13
Since :
3.0
void evas_event_feed_hold ( Evas obj,
int  hold,
unsigned int  timestamp,
const void *  data 
)

Hold event feed.

This function makes the object to stop sending events.

Parameters:
[in]timestampThe timestamp of the mouse up event.
[in]dataThe data for canvas.
Since :
3.0
void evas_event_feed_key_down ( Evas obj,
const char *  keyname,
const char *  key,
const char *  string,
const char *  compose,
unsigned int  timestamp,
const void *  data 
)

Key down event feed.

This function will set some evas properties that are necessary when a key is pressed. It prepares information to be treated by the callback function.

Parameters:
[in]keyThe key pressed.
[in]stringA string.
[in]composeThe compose string.
[in]timestampTimestamp of the mouse up event.
[in]dataData for canvas.
Since :
3.0
void evas_event_feed_key_down_with_keycode ( Evas obj,
const char *  keyname,
const char *  key,
const char *  string,
const char *  compose,
unsigned int  timestamp,
const void *  data,
unsigned int  keycode 
)

Key down event feed with keycode.

This function will set some evas properties that are necessary when a key is pressed. It prepares information to be treated by the callback function.

Parameters:
[in]keyThe key released.
[in]stringA string.
[in]composeCompose.
[in]timestampTimestamp of the mouse up event.
[in]dataData for canvas.
[in]keycodeKey scan code numeric value for canvas.
Since (EFL) :
1.10
Since :
3.0
void evas_event_feed_key_up ( Evas obj,
const char *  keyname,
const char *  key,
const char *  string,
const char *  compose,
unsigned int  timestamp,
const void *  data 
)

Key up event feed.

This function will set some evas properties that are necessary when a key is released. It prepares information to be treated by the callback function.

Parameters:
[in]keyThe key released.
[in]stringA string.
[in]composeCompose.
[in]timestampTimestamp of the mouse up event.
[in]dataData for canvas.
Since :
3.0
void evas_event_feed_key_up_with_keycode ( Evas obj,
const char *  keyname,
const char *  key,
const char *  string,
const char *  compose,
unsigned int  timestamp,
const void *  data,
unsigned int  keycode 
)

Key up event feed with keycode.

This function will set some evas properties that are necessary when a key is released. It prepares information to be treated by the callback function.

Parameters:
[in]keyThe key released.
[in]stringA string.
[in]composeCompose.
[in]timestampTimestamp of the mouse up event.
[in]dataData for canvas.
[in]keycodeKey scan code numeric value for canvas.
Since (EFL) :
1.10
Since :
3.0
void evas_event_feed_mouse_cancel ( Evas obj,
unsigned int  timestamp,
const void *  data 
)

Mouse cancel event feed.

This function will call generate a mouse up event.

Parameters:
[in]dataThe data for canvas.
Since :
3.0
void evas_event_feed_mouse_down ( Evas obj,
int  b,
Evas_Button_Flags  flags,
unsigned int  timestamp,
const void *  data 
)

Mouse down event feed.

This function will set some evas properties that are necessary when the mouse button is pressed. It prepares information to be treated by the callback function.

Parameters:
[in]flagsEvas button flags.
[in]timestampThe timestamp of the mouse up event.
[in]dataThe data for canvas.
Since :
3.0
void evas_event_feed_mouse_in ( Evas obj,
unsigned int  timestamp,
const void *  data 
)

Mouse in event feed.

This function will set some evas properties that are necessary when the mouse in event happens. It prepares information to be treated by the callback function.

Parameters:
[in]dataThe data for canvas.
Since :
3.0
void evas_event_feed_mouse_move ( Evas obj,
int  x,
int  y,
unsigned int  timestamp,
const void *  data 
)

Mouse move event feed.

This function will set some evas properties that are necessary when the mouse is moved from its last position. It prepares information to be treated by the callback function.

Parameters:
[in]yThe vertical position of the mouse pointer.
[in]timestampThe timestamp of the mouse up event.
[in]dataThe data for canvas.
Since :
3.0
void evas_event_feed_mouse_out ( Evas obj,
unsigned int  timestamp,
const void *  data 
)

Mouse out event feed.

This function will set some evas properties that are necessary when the mouse out event happens. It prepares information to be treated by the callback function.

Parameters:
[in]dataThe data for canvas.
Since :
3.0
void evas_event_feed_mouse_up ( Evas obj,
int  b,
Evas_Button_Flags  flags,
unsigned int  timestamp,
const void *  data 
)

Mouse up event feed.

This function will set some evas properties that are necessary when the mouse button is released. It prepares information to be treated by the callback function.

Parameters:
[in]flagsEvas button flags.
[in]timestampThe timestamp of the mouse up event.
[in]dataThe data for canvas.
Since :
3.0
void evas_event_feed_mouse_wheel ( Evas obj,
int  direction,
int  z,
unsigned int  timestamp,
const void *  data 
)

Mouse wheel event feed.

This function will set some evas properties that are necessary when the mouse wheel is scrolled up or down. It prepares information to be treated by the callback function.

Parameters:
[in]zHow much mouse wheel was scrolled up or down.
[in]timestampThe timestamp of the mouse up event.
[in]dataThe data for canvas.
Since :
3.0
void evas_event_feed_multi_down ( Evas obj,
int  d,
int  x,
int  y,
double  rad,
double  radx,
double  rady,
double  pres,
double  ang,
double  fx,
double  fy,
Evas_Button_Flags  flags,
unsigned int  timestamp,
const void *  data 
)
Since :
3.0
void evas_event_feed_multi_move ( Evas obj,
int  d,
int  x,
int  y,
double  rad,
double  radx,
double  rady,
double  pres,
double  ang,
double  fx,
double  fy,
unsigned int  timestamp,
const void *  data 
)
Since :
3.0
void evas_event_feed_multi_up ( Evas obj,
int  d,
int  x,
int  y,
double  rad,
double  radx,
double  rady,
double  pres,
double  ang,
double  fx,
double  fy,
Evas_Button_Flags  flags,
unsigned int  timestamp,
const void *  data 
)
Since :
3.0
void evas_event_freeze ( Evas e)

Freeze all input events processing.

Parameters:
eThe canvas to freeze input events processing on.

This function will indicate to Evas that the canvas e is to have all input event processing frozen until a matching evas_event_thaw() function is called on the same canvas. All events of this kind during the freeze will get discarded. Every freeze call must be matched by a thaw call in order to completely thaw out a canvas (i.e. these calls may be nested). The most common use is when you don't want the user to interact with your user interface when you're populating a view or changing the layout.

Example:

  "\tf - freeze input for 3 seconds\n"
  "\tp - toggle precise point collision detection on image\n"
  "\tControl + o - add an obscured rectangle\n"
  "\th - print help\n";

struct test_data
{
   Ecore_Evas  *ee;
   Evas        *canvas;
   Evas_Object *img, *bg;
   Ecore_Timer *resize_timer, *freeze_timer;
   Eina_Bool    obscured, focus;
};
/* let's have our events back */
static Eina_Bool
_thaw_cb(void *data EINA_UNUSED)
{
   printf("Canvas was frozen %d times, now thawing.\n",
          evas_event_freeze_get(d.canvas));
   evas_event_thaw(d.canvas);
   return EINA_FALSE; /* do not re-issue the timer */
}

See the full example.

If you run that example, you'll see the canvas ignoring all input events for 3 seconds, when the "f" key is pressed. In a more realistic code we would be freezing while a toolkit or Edje was doing some UI changes, thawing it back afterwards.

Since :
2.3
Examples:
evas-events.c.
int evas_event_freeze_get ( const Evas e)

Return the freeze count on input events of a given canvas.

Parameters:
eThe canvas to fetch the freeze count from.

This returns the number of times the canvas has been told to freeze input events. It is possible to call evas_event_freeze() multiple times, and these must be matched by evas_event_thaw() calls. This call allows the program to discover just how many times things have been frozen in case it may want to break out of a deep freeze state where the count is high.

Example:

 extern Evas *evas;

 while (evas_event_freeze_get(evas) > 0) evas_event_thaw(evas);
Since :
2.3
Examples:
evas-events.c.
void evas_event_input_mouse_move ( Evas obj,
int  x,
int  y,
unsigned int  timestamp,
const void *  data 
)

Mouse move event feed from input.

Similar to the evas_event_feed_mouse_move, this function will inform Evas about mouse move events which were received by the input system, relative to the 0,0 of the window, not to the canvas 0,0. It will take care of doing any special transformation like adding the framespace offset to the mouse event.

Parameters:
[in]yThe vertical position of the mouse pointer relative to the 0,0 of the window/surface.
[in]timestampThe timestamp of the mouse move event.
[in]dataThe data for canvas.
Since (EFL) :
1.8
Since :
3.0
void evas_event_input_multi_down ( Evas obj,
int  d,
int  x,
int  y,
double  rad,
double  radx,
double  rady,
double  pres,
double  ang,
double  fx,
double  fy,
Evas_Button_Flags  flags,
unsigned int  timestamp,
const void *  data 
)
Since :
3.0
void evas_event_input_multi_move ( Evas obj,
int  d,
int  x,
int  y,
double  rad,
double  radx,
double  rady,
double  pres,
double  ang,
double  fx,
double  fy,
unsigned int  timestamp,
const void *  data 
)
Since :
3.0
void evas_event_input_multi_up ( Evas obj,
int  d,
int  x,
int  y,
double  rad,
double  radx,
double  rady,
double  pres,
double  ang,
double  fx,
double  fy,
Evas_Button_Flags  flags,
unsigned int  timestamp,
const void *  data 
)
Since :
3.0
void evas_event_refeed_event ( Evas obj,
void *  event_copy,
Evas_Callback_Type  event_type 
)

Re feed event.

This function re-feeds the event pointed by event_copy.

This function call evas_event_feed_* functions, so it can cause havoc if not used wisely. Please use it responsibly.

Parameters:
[in]event_typeEvent type.
Since :
3.0
void evas_event_thaw ( Evas e)

Thaw a canvas out after freezing (for input events).

Parameters:
eThe canvas to thaw out.

This will thaw out a canvas after a matching evas_event_freeze() call. If this call completely thaws out a canvas, i.e., there's no other unbalanced call to evas_event_freeze(), events will start to be processed again, but any "missed" events will not be evaluated.

See evas_event_freeze() for an example.

Since :
2.3
Examples:
evas-events.c.
void evas_event_thaw_eval ( Evas e)

After thaw of a canvas, re-evaluate the state of objects and call callbacks

Parameters:
eThe canvas to evaluate after a thaw

This is normally called after evas_event_thaw() to re-evaluate mouse containment and other states and thus also call callbacks for mouse in and out on new objects if the state change demands it.

Since :
2.3