forked from enlightenment/efl
atspi: notify registry daemon about keyboard events.
Test Plan: elemeentary_test with Orca Screen reader 3.10.1 Reviewers: raster, z.kosinski Reviewed By: raster Differential Revision: https://phab.enlightenment.org/D1025
This commit is contained in:
parent
3351cb39ab
commit
0975fd37e0
|
@ -3305,3 +3305,47 @@ _elm_atspi_bridge_shutdown(void)
|
|||
_root = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_iter_marshall_key_event(Eldbus_Message_Iter *iter, Evas_Callback_Type type, void *event)
|
||||
{
|
||||
Eldbus_Message_Iter *struct_iter;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN(event);
|
||||
|
||||
struct_iter = eldbus_message_iter_container_new(iter, 'r', NULL);
|
||||
|
||||
if (type == EVAS_CALLBACK_KEY_DOWN)
|
||||
{
|
||||
Evas_Event_Key_Down *kde = event;
|
||||
const char *str = kde->string ? kde->string : "";
|
||||
int is_text = kde->string ? 1 : 0;
|
||||
eldbus_message_iter_arguments_append(struct_iter, "uiiiisb", ATSPI_KEY_PRESSED_EVENT, 0, kde->keycode, 0, kde->timestamp, str, is_text);
|
||||
}
|
||||
else if (type == EVAS_CALLBACK_KEY_UP)
|
||||
{
|
||||
Evas_Event_Key_Up *kue = event;
|
||||
const char *str = kue->string ? kue->string : "";
|
||||
int is_text = kue->string ? 1 : 0;
|
||||
eldbus_message_iter_arguments_append(struct_iter, "uiiiisb", ATSPI_KEY_RELEASED_EVENT, 0, kue->keycode, 0, kue->timestamp, str, is_text);
|
||||
}
|
||||
|
||||
eldbus_message_iter_container_close(iter, struct_iter);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
_elm_atspi_bridge_key_event_notify(Evas_Callback_Type type, void *event)
|
||||
{
|
||||
Eldbus_Message *msg;
|
||||
Eldbus_Message_Iter *iter;
|
||||
|
||||
if (!_init_count) return;
|
||||
if ((type != EVAS_CALLBACK_KEY_DOWN) && (type != EVAS_CALLBACK_KEY_UP)) return;
|
||||
|
||||
msg = eldbus_message_method_call_new(ATSPI_DBUS_NAME_REGISTRY, ATSPI_DBUS_PATH_DEC,
|
||||
ATSPI_DBUS_INTERFACE_DEC, "NotifyListenersSync");
|
||||
iter = eldbus_message_iter_get(msg);
|
||||
_iter_marshall_key_event(iter, type, event);
|
||||
|
||||
eldbus_connection_send(_a11y_bus, msg, NULL, NULL, -1);
|
||||
}
|
||||
|
|
|
@ -348,6 +348,7 @@ Eo *_elm_atspi_root_get(void);
|
|||
|
||||
void _elm_atspi_bridge_init(void);
|
||||
void _elm_atspi_bridge_shutdown(void);
|
||||
void _elm_atspi_bridge_key_event_notify(Evas_Callback_Type type, void *event);
|
||||
|
||||
void _elm_prefs_init(void);
|
||||
void _elm_prefs_shutdown(void);
|
||||
|
|
|
@ -615,6 +615,9 @@ _propagate_event(void *data,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
if (_elm_config->atspi_mode)
|
||||
_elm_atspi_bridge_key_event_notify(type, event_info);
|
||||
|
||||
|
||||
elm_widget_event_propagate(obj, type, event_info, event_flags);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue