fcitx代码主框架简单描述

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(...)等待事件

	...

}