Category Archives: fcitx development

Fcitx 4.2.0

fcitx 4.2.0 1. 码表支持构词码(郑码要求),显示时提示文本可以码表(仓颉要求)。 2. 重命名并整理API 3. API增加全局的上下文变量支持 4. 支持检测kimpanel进行自动切换。 5. 支持 alt + shift 作为激活/非激活模式的切换 6. 支持将第一个输入法作为非激活状态 7. kimpanel新的图标集 8. 大幅降低码表以及拼音的内存占用 9. 支持标点按当前输入法语言切换不同配置 10. -r 选项,用于替换已存在的fcitx。 fcitx-cloudpinyin 0.2.0 1. 取词单独放入一个线程中,解决curl multi在极少数时候依然是同步调用的问题 2. 修复一个在较新版本curl导致崩溃的bug fcitx-configtool 0.4.0 1. 增加kcm-fcitx一样的修改输入法列表的功能 2. 支持使用gtk3进行编译 … Continue reading

Posted in fcitx development | 56 Comments

Re-ask: Why Fcitx?

I wrote some post about “Why Fcitx” before, while I was little bit worried about fcitx’s future. But for now, I already have some idea for this question. There is already several input method framework on Linux world, why Fcitx … Continue reading

Posted in fcitx development | Tagged | 11 Comments

Make Fcitx like a system component.

Some days ago, I added a little option to Fcitx, which is called: “Use first input method as inactive state”. What does that mean? Actually that’s how I make Fcitx more like a system input method framework. Fcitx have three … Continue reading

Posted in fcitx development | 6 Comments

Fcitx Keyboard

Video demonstration: Your browser does not support the video tag. Fcitx will support spell checker based word hint, and automatically keyboard layout switch. 1. You can use keyboard layout as a single input method, and use corresponding language spell checker. … Continue reading

Posted in fcitx development | Tagged | 2 Comments

Memory pool

自从fcitx的内核从古老的gbk转向了utf8之后,自带拼音和码表的字符串就带来了一些问题。 首先情况是这样的在我的系统上,fcitx的自带拼音加载后将占用28MB的内存,考虑下的话,其中有个 (2int+2pointer)*词数的数据结构,其次是词本身,有约4MB,词总数约20万。那么估计一下的话拼音应该占用约8.5M。考虑刚刚启动不加载的时候,占用约6M,总计应该在14M左右。那多出来的14M都干啥去了呢?(并无内存泄露) 之前也一直没有关注这件事情,不过在前几天在 @henryhu 的建议下增加了一个Memory pool的实现。这个实现非常naive,乃至于不能单独释放申请的内存(只能整体释放)。不过对于fcitx自身拼音和码表的实现这个情况来说,是一个非常合适的选择。 首先有兴趣的人可以来做一个实验,写一个for循环,每次使用malloc申请1字节,循环申请1M次。然后看看操作系统的内存使用量。然后修改下,每次申请16字节,循环申请64k次,总量也是1MB,然后再看看操作系统内存使用量。 具体实现如下,内存不足时默认每次申请8k字节的内存块,如果一次申请超过8k就申请8k的2的n次方那么大的内存。每个块使用一个offset标记里面当前free的位置,当offset和容量的差距小于某个threshold的时候,就将其从可申请的list中移除,保证在遍历候选内存块的列表时的效率,那些不使用的部分成为可以忽略的内存碎片。(实际设定threshold = 16,16相比 8k 可忽略不计) 对于码表和拼音来说,其中的数据是几乎不用单独释放的,这正好可以采用这种naive的实现(而不是使用比较复杂的full functional的memory pool)。 那么最终的效果就是在我的系统上fcitx自带拼音加载后使用内存达到14MB,符合最开始的预期使用。 Ref: http://code.google.com/p/fcitx/issues/detail?id=133 http://en.wikipedia.org/wiki/Memory_pool

Posted in fcitx development | 8 Comments