forked from enlightenment/efl
Evas: Add storage class for Key events
This is for key up/down events' info.
This commit is contained in:
parent
45b12224ec
commit
95628c1efa
|
@ -43,6 +43,8 @@ evas_eolian_pub_files = \
|
|||
lib/evas/canvas/efl_canvas_surface_wayland.eo \
|
||||
lib/evas/canvas/evas_filter.eo \
|
||||
lib/evas/canvas/evas_smart_clipped.eo \
|
||||
lib/evas/canvas/efl_event_input.eo \
|
||||
lib/evas/canvas/efl_event_key.eo \
|
||||
lib/evas/canvas/efl_event_pointer.eo \
|
||||
$(NULL)
|
||||
|
||||
|
@ -198,6 +200,8 @@ lib/evas/canvas/efl_canvas_surface.c \
|
|||
lib/evas/canvas/efl_canvas_surface_tbm.c \
|
||||
lib/evas/canvas/efl_canvas_surface_x11.c \
|
||||
lib/evas/canvas/efl_canvas_surface_wayland.c \
|
||||
lib/evas/canvas/efl_event_input.c \
|
||||
lib/evas/canvas/efl_event_key.c \
|
||||
lib/evas/canvas/efl_event_pointer.c \
|
||||
$(NULL)
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
#include <Efl.h>
|
||||
|
||||
typedef struct _Efl_Event_Pointer_Data Efl_Event_Pointer_Data;
|
||||
typedef struct _Efl_Event_Key_Data Efl_Event_Key_Data;
|
||||
typedef struct _Efl_Input_Device_Data Efl_Input_Device_Data;
|
||||
typedef struct _Efl_Input_State_Data Efl_Input_State_Data;
|
||||
|
||||
#ifndef _EVAS_TYPES_EOT_H_
|
||||
typedef struct _Evas_Modifier Evas_Modifier;
|
||||
|
@ -54,6 +54,27 @@ struct _Efl_Event_Pointer_Data
|
|||
Eina_Bool evas_done; /* set by evas */
|
||||
};
|
||||
|
||||
struct _Efl_Event_Key_Data
|
||||
{
|
||||
Eo *eo;
|
||||
unsigned int timestamp; /* FIXME: store as double? */
|
||||
|
||||
Eina_Bool pressed; /* 1 = pressed/down, 0 = released/up */
|
||||
Eina_Stringshare *keyname;
|
||||
Eina_Stringshare *key;
|
||||
Eina_Stringshare *string;
|
||||
Eina_Stringshare *compose;
|
||||
unsigned int keycode;
|
||||
|
||||
void *data;
|
||||
Evas_Modifier *modifiers;
|
||||
Evas_Lock *locks;
|
||||
Efl_Event_Flags event_flags;
|
||||
Efl_Input_Device *device;
|
||||
void *legacy; /* DO NOT TOUCH (may contain the legacy event_info) */
|
||||
Eina_Bool evas_done; /* set by evas */
|
||||
};
|
||||
|
||||
struct _Efl_Input_Device_Data
|
||||
{
|
||||
Eo *eo;
|
||||
|
|
|
@ -300,4 +300,6 @@ typedef void (Evas_Canvas3D_Surface_Func)(Evas_Real *out_x,
|
|||
#include "canvas/efl_vg_gradient_linear.eo.h"
|
||||
#include "canvas/efl_vg_gradient_radial.eo.h"
|
||||
|
||||
#include "canvas/efl_event_input.eo.h"
|
||||
#include "canvas/efl_event_pointer.eo.h"
|
||||
#include "canvas/efl_event_key.eo.h"
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <Evas.h>
|
||||
|
||||
#define EFL_INTERNAL_UNSTABLE
|
||||
#include "interfaces/efl_common_internal.h"
|
||||
|
||||
#define MY_CLASS EFL_EVENT_INPUT_CLASS
|
||||
|
||||
#include "efl_event_input.eo.c"
|
|
@ -0,0 +1,32 @@
|
|||
import efl_event_types;
|
||||
|
||||
interface Efl.Event.Input (Efl.Event)
|
||||
{
|
||||
eo_prefix: efl_event;
|
||||
methods {
|
||||
@property device {
|
||||
[[Input device that originated this event.]]
|
||||
values {
|
||||
dev: Efl.Input.Device;
|
||||
}
|
||||
}
|
||||
@property event_flags {
|
||||
[[Extra flags for this event, may be changed by the user.]]
|
||||
values {
|
||||
flags: Efl.Event.Flags;
|
||||
}
|
||||
}
|
||||
@property on_hold {
|
||||
[[$true if @.event_flags indicates the event is on hold.]]
|
||||
values {
|
||||
val: bool;
|
||||
}
|
||||
}
|
||||
@property on_scroll {
|
||||
[[$true if @.event_flags indicates the event happened while scrolling.]]
|
||||
values {
|
||||
val: bool;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,206 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include <Evas.h>
|
||||
|
||||
#define EFL_INTERNAL_UNSTABLE
|
||||
#include "interfaces/efl_common_internal.h"
|
||||
|
||||
#define MY_CLASS EFL_EVENT_KEY_CLASS
|
||||
|
||||
EOLIAN static Eo_Base *
|
||||
_efl_event_key_eo_base_constructor(Eo *obj, Efl_Event_Key_Data *pd EINA_UNUSED)
|
||||
{
|
||||
obj = eo_constructor(eo_super(obj, MY_CLASS));
|
||||
efl_event_reset(obj);
|
||||
return obj;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_key_pressed_set(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, Eina_Bool val)
|
||||
{
|
||||
pd->pressed = !!val;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_event_key_pressed_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
return pd->pressed;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_key_key_name_set(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, const char *val)
|
||||
{
|
||||
eina_stringshare_replace(&pd->keyname, val);
|
||||
}
|
||||
|
||||
EOLIAN static const char *
|
||||
_efl_event_key_key_name_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
return pd->keyname;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_key_key_set(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, const char *val)
|
||||
{
|
||||
eina_stringshare_replace(&pd->key, val);
|
||||
}
|
||||
|
||||
EOLIAN static const char *
|
||||
_efl_event_key_key_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
return pd->key;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_key_string_set(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, const char *val)
|
||||
{
|
||||
eina_stringshare_replace(&pd->string, val);
|
||||
}
|
||||
|
||||
EOLIAN static const char *
|
||||
_efl_event_key_string_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
return pd->string;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_key_compose_set(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, const char *val)
|
||||
{
|
||||
eina_stringshare_replace(&pd->compose, val);
|
||||
}
|
||||
|
||||
EOLIAN static const char *
|
||||
_efl_event_key_compose_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
return pd->compose;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_key_key_code_set(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, int val)
|
||||
{
|
||||
pd->keycode = val;
|
||||
}
|
||||
|
||||
EOLIAN static int
|
||||
_efl_event_key_key_code_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
return pd->keycode;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_key_efl_event_reset(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
eina_stringshare_del(pd->key);
|
||||
eina_stringshare_del(pd->keyname);
|
||||
eina_stringshare_del(pd->string);
|
||||
eina_stringshare_del(pd->compose);
|
||||
memset(pd, 0, sizeof(*pd));
|
||||
pd->eo = obj;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Event *
|
||||
_efl_event_key_efl_event_dup(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
Efl_Event_Key_Data *pd2;
|
||||
Efl_Event *ev;
|
||||
|
||||
ev = eo_add(MY_CLASS, NULL); // no parent
|
||||
pd2 = eo_data_scope_get(ev, MY_CLASS);
|
||||
if (pd2)
|
||||
{
|
||||
memcpy(pd2, pd, sizeof(*pd));
|
||||
pd2->eo = ev;
|
||||
pd2->key = eina_stringshare_add(pd->key);
|
||||
pd2->keyname = eina_stringshare_add(pd->keyname);
|
||||
pd2->string = eina_stringshare_add(pd->string);
|
||||
pd2->compose = eina_stringshare_add(pd->compose);
|
||||
pd2->legacy = NULL;
|
||||
pd2->evas_done = 0;
|
||||
}
|
||||
|
||||
return ev;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_key_efl_event_timestamp_set(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, double ms)
|
||||
{
|
||||
pd->timestamp = ms;
|
||||
}
|
||||
|
||||
EOLIAN static double
|
||||
_efl_event_key_efl_event_timestamp_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
return pd->timestamp;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_key_efl_event_input_event_flags_set(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, Efl_Event_Flags flags)
|
||||
{
|
||||
pd->event_flags = flags;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Event_Flags
|
||||
_efl_event_key_efl_event_input_event_flags_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
return pd->event_flags;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_key_efl_event_input_on_hold_set(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, Eina_Bool val)
|
||||
{
|
||||
if (val)
|
||||
pd->event_flags |= EFL_EVENT_FLAGS_ON_HOLD;
|
||||
else
|
||||
pd->event_flags &= ~EFL_EVENT_FLAGS_ON_HOLD;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_event_key_efl_event_input_on_hold_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
return !!(pd->event_flags & EFL_EVENT_FLAGS_ON_HOLD);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_key_efl_event_input_on_scroll_set(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, Eina_Bool val)
|
||||
{
|
||||
if (val)
|
||||
pd->event_flags |= EFL_EVENT_FLAGS_ON_SCROLL;
|
||||
else
|
||||
pd->event_flags &= ~EFL_EVENT_FLAGS_ON_SCROLL;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_event_key_efl_event_input_on_scroll_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
return !!(pd->event_flags & EFL_EVENT_FLAGS_ON_SCROLL);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_key_efl_event_input_device_set(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, Efl_Input_Device *dev)
|
||||
{
|
||||
pd->device = dev;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Input_Device *
|
||||
_efl_event_key_efl_event_input_device_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd)
|
||||
{
|
||||
return pd->device;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_event_key_efl_input_state_modifier_enabled_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, const char * name)
|
||||
{
|
||||
if (!pd->modifiers) return EINA_FALSE;
|
||||
return evas_key_modifier_is_set(pd->modifiers, name);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_event_key_efl_input_state_lock_enabled_get(Eo *obj EINA_UNUSED, Efl_Event_Key_Data *pd, const char * name)
|
||||
{
|
||||
if (!pd->locks) return EINA_FALSE;
|
||||
return evas_key_lock_is_set(pd->locks, name);
|
||||
}
|
||||
|
||||
#include "efl_event_key.eo.c"
|
|
@ -0,0 +1,71 @@
|
|||
class Efl.Event.Key (Eo.Base, Efl.Event, Efl.Input.State, Efl.Event.Input)
|
||||
{
|
||||
[[Represents a single key event from a keyboard or similar device.
|
||||
|
||||
@since 1.18
|
||||
]]
|
||||
methods {
|
||||
@property pressed {
|
||||
[[$true if the key is down, $false if it is released.]]
|
||||
values {
|
||||
val: bool;
|
||||
}
|
||||
}
|
||||
@property key_name {
|
||||
[[Name string of the key.]]
|
||||
values {
|
||||
val: string;
|
||||
}
|
||||
}
|
||||
@property key {
|
||||
[[Logical key.
|
||||
|
||||
Eg. Shift + 1 = exclamation
|
||||
]]
|
||||
values {
|
||||
val: string;
|
||||
}
|
||||
}
|
||||
@property string {
|
||||
[[A UTF8 string if this keystroke has produced a visible string to be
|
||||
added.
|
||||
]]
|
||||
values {
|
||||
val: string;
|
||||
}
|
||||
}
|
||||
@property compose {
|
||||
[[A UTF8 string if this keystroke has modified a string in the middle
|
||||
of being composed.
|
||||
|
||||
Note: This string replaces the previous one
|
||||
]]
|
||||
values {
|
||||
val: string;
|
||||
}
|
||||
}
|
||||
@property key_code {
|
||||
[[Key scan code numeric value.]]
|
||||
values {
|
||||
val: int;
|
||||
}
|
||||
}
|
||||
}
|
||||
implements {
|
||||
Eo.Base.constructor;
|
||||
Efl.Event.reset;
|
||||
Efl.Event.dup;
|
||||
Efl.Event.timestamp.set;
|
||||
Efl.Event.timestamp.get;
|
||||
Efl.Event.Input.event_flags.set;
|
||||
Efl.Event.Input.event_flags.get;
|
||||
Efl.Event.Input.on_hold.set;
|
||||
Efl.Event.Input.on_hold.get;
|
||||
Efl.Event.Input.on_scroll.set;
|
||||
Efl.Event.Input.on_scroll.get;
|
||||
Efl.Event.Input.device.set;
|
||||
Efl.Event.Input.device.get;
|
||||
Efl.Input.State.modifier_enabled.get;
|
||||
Efl.Input.State.lock_enabled.get;
|
||||
}
|
||||
}
|
|
@ -13,7 +13,7 @@
|
|||
/* Pointer Event
|
||||
*
|
||||
* This is a storage class only, should not require ANY knowledge about
|
||||
* Ecore, Evas or anything else.
|
||||
* Ecore, Evas or anything else. Note: locks & modifiers require evas. :(
|
||||
*
|
||||
* This is intended to replace Ecore and Evas structs for mouse events.
|
||||
*
|
||||
|
@ -207,14 +207,14 @@ _efl_event_pointer_previous_position_precise_get(Eo *obj EINA_UNUSED, Efl_Event_
|
|||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_device_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, Efl_Input_Device *dev)
|
||||
_efl_event_pointer_efl_event_input_device_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, Efl_Input_Device *dev)
|
||||
{
|
||||
/* ref? */
|
||||
pd->device = dev;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Input_Device *
|
||||
_efl_event_pointer_device_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd)
|
||||
_efl_event_pointer_efl_event_input_device_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd)
|
||||
{
|
||||
return pd->device;
|
||||
}
|
||||
|
@ -245,13 +245,13 @@ _efl_event_pointer_button_flags_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data
|
|||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_event_flags_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, Efl_Event_Flags flags)
|
||||
_efl_event_pointer_efl_event_input_event_flags_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, Efl_Event_Flags flags)
|
||||
{
|
||||
pd->event_flags = flags;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Event_Flags
|
||||
_efl_event_pointer_event_flags_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd)
|
||||
_efl_event_pointer_efl_event_input_event_flags_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd)
|
||||
{
|
||||
return pd->event_flags;
|
||||
}
|
||||
|
@ -369,7 +369,7 @@ _efl_event_pointer_triple_click_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data
|
|||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_on_hold_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, Eina_Bool val)
|
||||
_efl_event_pointer_efl_event_input_on_hold_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, Eina_Bool val)
|
||||
{
|
||||
if (val)
|
||||
pd->event_flags |= EFL_EVENT_FLAGS_ON_HOLD;
|
||||
|
@ -378,13 +378,13 @@ _efl_event_pointer_on_hold_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd,
|
|||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_event_pointer_on_hold_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd)
|
||||
_efl_event_pointer_efl_event_input_on_hold_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd)
|
||||
{
|
||||
return !!(pd->event_flags & EFL_EVENT_FLAGS_ON_HOLD);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_on_scroll_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, Eina_Bool val)
|
||||
_efl_event_pointer_efl_event_input_on_scroll_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, Eina_Bool val)
|
||||
{
|
||||
if (val)
|
||||
pd->event_flags |= EFL_EVENT_FLAGS_ON_SCROLL;
|
||||
|
@ -393,7 +393,7 @@ _efl_event_pointer_on_scroll_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd
|
|||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_event_pointer_on_scroll_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd)
|
||||
_efl_event_pointer_efl_event_input_on_scroll_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd)
|
||||
{
|
||||
return !!(pd->event_flags & EFL_EVENT_FLAGS_ON_SCROLL);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import efl_orientation;
|
||||
import efl_event_types;
|
||||
|
||||
class Efl.Event.Pointer (Eo.Base, Efl.Event, Efl.Input.State)
|
||||
class Efl.Event.Pointer (Eo.Base, Efl.Event, Efl.Input.State, Efl.Event.Input)
|
||||
{
|
||||
[[Event data carried over with any pointer event (mouse, touch, ...)
|
||||
|
||||
|
@ -67,12 +67,6 @@ class Efl.Event.Pointer (Eo.Base, Efl.Event, Efl.Input.State)
|
|||
y: double;
|
||||
}
|
||||
}
|
||||
@property device {
|
||||
[[Pointing device that originated this event.]]
|
||||
values {
|
||||
dev: Efl.Input.Device;
|
||||
}
|
||||
}
|
||||
@property finger {
|
||||
[[Finger ID in case of a multi touch event.]]
|
||||
values {
|
||||
|
@ -121,24 +115,6 @@ class Efl.Event.Pointer (Eo.Base, Efl.Event, Efl.Input.State)
|
|||
val: bool;
|
||||
}
|
||||
}
|
||||
@property event_flags {
|
||||
[[Extra flags for this event, may be changed by the user.]]
|
||||
values {
|
||||
flags: Efl.Event.Flags;
|
||||
}
|
||||
}
|
||||
@property on_hold {
|
||||
[[$true if @.event_flags indicates the event is on hold.]]
|
||||
values {
|
||||
val: bool;
|
||||
}
|
||||
}
|
||||
@property on_scroll {
|
||||
[[$true if @.event_flags indicates the event happened while scrolling.]]
|
||||
values {
|
||||
val: bool;
|
||||
}
|
||||
}
|
||||
@property wheel_direction {
|
||||
values {
|
||||
dir: Efl.Orient; [[Horizontal or Vertical only.]]
|
||||
|
@ -167,6 +143,14 @@ class Efl.Event.Pointer (Eo.Base, Efl.Event, Efl.Input.State)
|
|||
Efl.Event.dup;
|
||||
Efl.Event.timestamp.set;
|
||||
Efl.Event.timestamp.get;
|
||||
Efl.Event.Input.event_flags.set;
|
||||
Efl.Event.Input.event_flags.get;
|
||||
Efl.Event.Input.on_hold.set;
|
||||
Efl.Event.Input.on_hold.get;
|
||||
Efl.Event.Input.on_scroll.set;
|
||||
Efl.Event.Input.on_scroll.get;
|
||||
Efl.Event.Input.device.set;
|
||||
Efl.Event.Input.device.get;
|
||||
Efl.Input.State.modifier_enabled.get;
|
||||
Efl.Input.State.lock_enabled.get;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue