1,核心函数:RunInstance
2,加载全局基本配置:FcitxGlobalConfigLoad
3,读取插件配置,以数组的形式组织起来:FcitxAddonsLoadInternal
配置文件会有两个路径,一个是与个人用户相关的配置,在个人目录下的隐藏目录.config下;一个是整体全局配置。一般而言,个人配置会覆盖整体全局配置,而只有在对应个人配置不存在的情况下,整体全局配置才生效。
比如插件配置:
个人配置:/home/lenky/.config/fcitx/addon
全局配置:/usr/local/share/fcitx/addon
4,检查插件依赖:FcitxInstanceResolveAddonDependency
5,注册热键:FcitxInstanceInitBuiltInHotkey
6,正式加载插件:FcitxModuleLoad
利用dlopen、dlsym以及dlclose这一系列函数操作动态库文件,然后调用对应的module->Create,初始化各个插件。
7,注册输入法引擎:FcitxInstanceLoadAllIM
8,显示UI界面:FcitxUILoad
9,加载前端:FcitxInstanceLoadFrontend
有两个:
FcitxXIM 前端:提供XIM 支持
FcitxDBus 前端:输入法模块使用的前端
利用dlopen、dlsym以及dlclose这一系列函数操作动态库文件,然后调用对应的frontend->Create,初始化各个插件。
10,核心主循环:
while(1) {
...
调用各个事件模块的ProcessEvent函数处理事件
...
select(...)等待事件
...
}