diff --git a/src/lib/ecore_imf/Ecore_IMF.h b/src/lib/ecore_imf/Ecore_IMF.h index 6bca58f7ad..8f2fa2a51e 100644 --- a/src/lib/ecore_imf/Ecore_IMF.h +++ b/src/lib/ecore_imf/Ecore_IMF.h @@ -700,6 +700,7 @@ struct _Ecore_IMF_Context_Class void (*candidate_panel_geometry_get)(Ecore_IMF_Context *ctx, int *x, int *y, int *w, int *h); /**< Return the candidate panel geometry */ void (*input_hint_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Hints input_hints); /**< Sets input hint to fine-tune input methods behavior */ void (*bidi_direction_set) (Ecore_IMF_Context *ctx, Ecore_IMF_BiDi_Direction direction); /**< Set bidirectionality at the cursor position */ + Ecore_IMF_Input_Panel_Keyboard_Mode (*keyboard_mode_get) (Ecore_IMF_Context *ctx); /**< Return the current keyboard mode of the input panel */ }; /** @@ -1861,6 +1862,17 @@ EAPI void ecore_imf_context_bidi_direction_set(Ecore_IM */ EAPI Ecore_IMF_BiDi_Direction ecore_imf_context_bidi_direction_get(Ecore_IMF_Context *ctx); +/** + * @ingroup Ecore_IMF_Context_Group + * @brief Get the keyboard mode on the input panel. + * + * @since 1.20.0 + * + * @param[in] ctx An #Ecore_IMF_Context + * @return the keyboard mode + */ +EAPI Ecore_IMF_Input_Panel_Keyboard_Mode ecore_imf_context_keyboard_mode_get(Ecore_IMF_Context *ctx); + /* The following entry points must be exported by each input method module */ diff --git a/src/lib/ecore_imf/ecore_imf_context.c b/src/lib/ecore_imf/ecore_imf_context.c index d6fd854035..a7289ba700 100644 --- a/src/lib/ecore_imf/ecore_imf_context.c +++ b/src/lib/ecore_imf/ecore_imf_context.c @@ -1391,3 +1391,19 @@ ecore_imf_context_bidi_direction_get(Ecore_IMF_Context *ctx) return ctx->bidi_direction; } +EAPI Ecore_IMF_Input_Panel_Keyboard_Mode +ecore_imf_context_keyboard_mode_get(Ecore_IMF_Context *ctx) +{ + Ecore_IMF_Input_Panel_Keyboard_Mode mode = ECORE_IMF_INPUT_PANEL_SW_KEYBOARD_MODE; + if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT)) + { + ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT, + "ecore_imf_context_keyboard_mode_get"); + return ECORE_IMF_INPUT_PANEL_SW_KEYBOARD_MODE; + } + + if (ctx->klass->keyboard_mode_get) + mode = ctx->klass->keyboard_mode_get(ctx); + + return mode; +}