discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a524ab1fe3c20f194d1df5d8f6603593cf5872e3

commit a524ab1fe3c20f194d1df5d8f6603593cf5872e3
Author: Mike Blumenkrantz <[email protected]>
Date:   Wed Jan 24 16:07:36 2018 -0500

    ecore-x: add some useful xkb function wrappers
    
    @feature
---
 src/lib/ecore_x/Ecore_X.h |  2 ++
 src/lib/ecore_x/ecore_x.c | 36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+)

diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
index b0955553ee..cb55dfa3ee 100644
--- a/src/lib/ecore_x/Ecore_X.h
+++ b/src/lib/ecore_x/Ecore_X.h
@@ -2729,6 +2729,8 @@ EAPI Ecore_X_Illume_Window_State           
ecore_x_e_illume_window_state_get(Eco
 EAPI void                                  
ecore_x_e_illume_window_state_send(Ecore_X_Window win, 
Ecore_X_Illume_Window_State state); /**< @since 1.9 */
 
 EAPI void                                  ecore_x_xkb_select_group(int 
group); /* @since 1.7 */
+EAPI Eina_Bool                             ecore_x_xkb_track_state(void); /** 
@since 1.21 */
+EAPI Eina_Bool                             
ecore_x_xkb_state_get(Ecore_X_Xkb_State *state); /** @since 1.21 */
 
 EAPI void                                  
ecore_x_e_window_rotation_supported_set(Ecore_X_Window root, Eina_Bool 
enabled); /**< @since 1.9 */
 EAPI Eina_Bool                             
ecore_x_e_window_rotation_supported_get(Ecore_X_Window root); /**< @since 1.9 */
diff --git a/src/lib/ecore_x/ecore_x.c b/src/lib/ecore_x/ecore_x.c
index 81eae65294..bab8a41f6d 100644
--- a/src/lib/ecore_x/ecore_x.c
+++ b/src/lib/ecore_x/ecore_x.c
@@ -2536,6 +2536,42 @@ ecore_x_xkb_select_group(int group)
 #endif
 }
 
+EAPI Eina_Bool
+ecore_x_xkb_track_state(void)
+{
+   Eina_Bool ret = EINA_FALSE;
+#ifdef ECORE_XKB
+   EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, EINA_FALSE);
+   ret = XkbSelectEvents(_ecore_x_disp, XkbUseCoreKbd, XkbStateNotifyMask, 
XkbStateNotifyMask);
+   if (_ecore_xlib_sync) ecore_x_sync();
+#endif
+   return ret;
+}
+
+EAPI Eina_Bool
+ecore_x_xkb_state_get(Ecore_X_Xkb_State *state)
+{
+   Eina_Bool ret = EINA_FALSE;
+#ifdef ECORE_XKB
+   XkbStateRec xkbstate;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, EINA_FALSE);
+   ret = XkbGetState(_ecore_x_disp, XkbUseCoreKbd, &xkbstate);
+   if (!ret) return ret;
+
+   state->group = xkbstate.group;
+   state->base_group = xkbstate.base_group;
+   state->latched_group = xkbstate.latched_group;
+   state->locked_group = xkbstate.locked_group;
+
+   state->mods = xkbstate.mods;
+   state->base_mods = xkbstate.base_mods;
+   state->latched_mods = xkbstate.latched_mods;
+   state->locked_mods = xkbstate.locked_mods;
+#endif
+   return ret;
+}
+
 /*****************************************************************************/
 /*****************************************************************************/
 /*****************************************************************************/

-- 


Reply via email to