/*************************************************************************** * Copyright (C) 2010~2010 by CSSlayer * * wengxt@gmail.com * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ /** * @addtogroup Fcitx * @{ */ /** * @file hook.h * Register function to be called automatically. */ #ifndef _HOOK_H #define _HOOK_H #include #include #include #ifdef __cplusplus extern "C" { #endif /** * key filter function **/ typedef boolean(*FcitxKeyFilter)(void* arg, FcitxKeySym sym, unsigned int state, INPUT_RETURN_VALUE *retval ); /** * string filter function **/ typedef char* (*FcitxStringFilter)(void* arg, const char* in); /** * ime event hook function **/ typedef void (*FcitxIMEventHookFunc)(void* arg); /** * ic event hook function **/ typedef void (*FcitxICEventHookFunc)(void* arg, struct _FcitxInputContext* ic); /** * ui status changed hook function **/ typedef void (*FcitxUIStatusHookFunc)(void* arg, const char* statusName); /** * Hotkey process struct **/ typedef struct _FcitxHotkeyHook { /** * Pointer to fcitx hotkeys, fcitx hotkey is length 2 array. **/ FcitxHotkey* hotkey; /** * Function to be called while hotkey is pressed. * * @return INPUT_RETURN_VALUE* **/ INPUT_RETURN_VALUE(*hotkeyhandle)(void*); /** * Argument **/ void* arg; } FcitxHotkeyHook; /** * Key filter hook **/ typedef struct _FcitxKeyFilterHook { /** * Key filter function **/ FcitxKeyFilter func; /** * extra argument for filter function **/ void *arg; } FcitxKeyFilterHook; /** * Hook for string filter, this hook can change the output string. **/ typedef struct _FcitxStringFilterHook { /** * Filter function **/ FcitxStringFilter func; /** * Extra argument for the filter function. **/ void *arg; } FcitxStringFilterHook; /** * IME Event hook for Reset, Trigger On/Off, Focus/Unfocus **/ typedef struct _FcitxIMEventHook { FcitxIMEventHookFunc func; /**< callback function */ void *arg; /**< argument for callback */ } FcitxIMEventHook; /** * IC Event hook **/ typedef struct _FcitxICEventHook { FcitxICEventHookFunc func; /**< callback function */ void *arg; /**< argument for callback */ } FcitxICEventHook; /** * UI Event hook **/ typedef struct _FcitxUIStatusHook { FcitxUIStatusHookFunc func; /**< callback function */ void *arg; /**< argument for callback */ } FcitxUIStatusHook; /** * register pre input filter * * @param instance fcitx instance * @param hook new hook * @return void **/ void FcitxInstanceRegisterPreInputFilter(struct _FcitxInstance* instance, FcitxKeyFilterHook hook) ; /** * register post input filter * * @param instance fcitx instance * @param hook new hook * @return void **/ void FcitxInstanceRegisterPostInputFilter(struct _FcitxInstance* instance, FcitxKeyFilterHook hook); /** * register pre release input filter * * @param instance fcitx instance * @param hook new hook * @return void * * @since 4.2.8 **/ void FcitxInstanceRegisterPreReleaseInputFilter(struct _FcitxInstance* instance, FcitxKeyFilterHook hook) ; /** * register post release input filter * * @param instance fcitx instance * @param hook new hook * @return void * * @since 4.2.8 **/ void FcitxInstanceRegisterPostReleaseInputFilter(struct _FcitxInstance* instance, FcitxKeyFilterHook hook); /** * register ouput string filter * * @param instance fcitx instance * @param hook new hook * @return void **/ void FcitxInstanceRegisterOutputFilter(struct _FcitxInstance* instance, FcitxStringFilterHook hook); /** * register hotkey * * @param instance fcitx instance * @param hook new hook * @return void **/ void FcitxInstanceRegisterHotkeyFilter(struct _FcitxInstance* instance, FcitxHotkeyHook hook); /** * register reset input hook * * @param instance fcitx instance * @param hook new hook * @return void **/ void FcitxInstanceRegisterResetInputHook(struct _FcitxInstance* instance, FcitxIMEventHook hook); /** * register trigger on hook * * @param instance fcitx instance * @param hook new hook * @return void **/ void FcitxInstanceRegisterTriggerOnHook(struct _FcitxInstance* instance, FcitxIMEventHook hook); /** * register trigger off hook * * @param instance fcitx instance * @param hook new hook * @return void **/ void FcitxInstanceRegisterTriggerOffHook(struct _FcitxInstance* instance, FcitxIMEventHook hook); /** * register focus in hook * * @param instance fcitx instance * @param hook new hook * @return void **/ void FcitxInstanceRegisterInputFocusHook(struct _FcitxInstance* instance, FcitxIMEventHook hook); /** * register focus out hook * * @param instance fcitx instance * @param hook new hook * @return void **/ void FcitxInstanceRegisterInputUnFocusHook(struct _FcitxInstance* instance, FcitxIMEventHook hook); /** * register im changed hook * * @param instance fcitx instance * @param hook new hook * @return void **/ void FcitxInstanceRegisterIMChangedHook(struct _FcitxInstance* instance, FcitxIMEventHook hook); /** * register update candidate word hook * * @param instance fcitx instance * @param hook new hook * @return void **/ void FcitxInstanceRegisterUpdateCandidateWordHook(struct _FcitxInstance* instance, FcitxIMEventHook hook); /** * register update input method list hook * * @param instance fcitx instance * @param hook new hook * @return void **/ void FcitxInstanceRegisterUpdateIMListHook(struct _FcitxInstance* instance, FcitxIMEventHook hook); /** * process output filter, return string is malloced * * @param instance fcitx instance * @param in input string * @return char* **/ char* FcitxInstanceProcessOutputFilter(struct _FcitxInstance* instance, const char *in); /** * process output filter, return string is malloced * * @param instance fcitx instance * @param in input string * @return char* **/ char* FcitxInstanceProcessCommitFilter(struct _FcitxInstance* instance, const char *in); /** * register ouput string filter * * @param instance fcitx instance * @param hook new hook * @return void * * @since 4.2.0 **/ void FcitxInstanceRegisterCommitFilter(struct _FcitxInstance* instance, FcitxStringFilterHook hook); /** * register a hook for watching when ic status changed * * @param instance fcitx instance * @param hook new hook * @return void * * @since 4.2.6 **/ void FcitxInstanceRegisterICStateChangedHook(struct _FcitxInstance* instance, FcitxICEventHook hook); /** * register a hook for watching when ui status changed * * @param instance fcitx instance * @param hook new hook * @return void * * @since TBD **/ void FcitxInstanceRegisterUIStatusChangedHook(struct _FcitxInstance* instance, FcitxUIStatusHook hook); boolean FcitxDummyReleaseInputHook(void* arg, FcitxKeySym sym, unsigned int state, INPUT_RETURN_VALUE *retval); #ifdef __cplusplus } #endif #endif /** * @} */ // kate: indent-mode cstyle; space-indent on; indent-width 0;