刚刚才发现,其实ibus依然有人在维护,我们弄错网址了。

系统字体配置、中文显示和输入法问题
回复
头像
yq-ysy
论坛版主
帖子: 4451
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

刚刚才发现,其实ibus依然有人在维护,我们弄错网址了。

#1

帖子 yq-ysy » 2020-01-05 23:49

刚刚才发现,其实ibus依然有人在维护,我们弄错网址了。
以前一直以为,原来的开发者不再维护了 https://github.com/phuang/ibus-pinyin
其实,大本营是搬来这里了 https://github.com/ibus
其中主引擎 https://github.com/ibus/ibus 在11天前还在更新(修复IBus客户端在某些情况下连接不上按钮事件的情况)。
就连拼音输入法 https://github.com/ibus/ibus-pinyin 在2018年12月1日也有更新(修正在Python3的崩溃情况)。

目前 ibus 项目有四个人维护:Peng Wu(epico),@fujiwarat(Takao Fujiwara fujiwarat),@phuang(Peng Huang phuang),@yusukes(Yusuke Sato yusukes)从名字上看,另两个也许是日本人。(谷歌的翻译:藤原孝夫?佐藤佑介?)
如果有更多的中国程序员加入就好了,多多提交改进后的程序,他们应该会很乐意接受的。

就连Archlinux的文档里 https://wiki.archlinux.org/index.php/IBus 也误以为 ibus-pinyin 缺乏维护,建议改用 ibus-libpinyin 。
但是从 Ping-Wu 折腾的经验看,libpinyin 也不好用,又改用 Rime。
我觉得不要这么换来换去了,既然之前说 ibus-pinyin 的设计思想很好,速度也快,那么就下定决心、集中精力改造完善这个输入法吧。

我搜索了一下ibus相关的(中文)文档资料,希望能对未来想参与的开发者有用。
《linux输入法ibus架构简析》http://blog.sina.com.cn/s/blog_703f7fe80100q4aj.html
《自己编译安装IBus 1.1.0.20090225拼音输入法》http://blog.sina.com.cn/s/blog_703f7fe80100qywb.html
《ibus 维基百科》http://blog.sina.com.cn/s/blog_703f7fe80100q4ae.html
phyceiver
帖子: 19
注册时间: 2015-12-02 13:40
系统: ubuntu

Re: 刚刚才发现,其实ibus依然有人在维护,我们弄错网址了。

#2

帖子 phyceiver » 2020-01-06 11:25

ibus 是 gnome 的钦定输入法,确实比较完善,缺点是性能不行,比较卡
头像
yq-ysy
论坛版主
帖子: 4451
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

IBus Reference Manual 参考手册

#3

帖子 yq-ysy » 2020-01-06 17:00

之前错怪Ibus开发者了,他们的文档也是比较详细的:
《IBus Reference Manual 参考手册》(以下转贴谷歌机器翻译)
http://ibus.github.io/docs/ibus-1.5/index.html


Intelligent Input Bus (IBus) 1.5.4 reference manual. The latest version of this documentation can be found on-line at https://github.com/ibus/ibus/wiki.
智能输入总线(IBus)1.5.4参考手册。该文档的最新版本可在https://github.com/ibus/ibus/wiki上在线找到。

Overview 总览
Panel (User Interfaces) 面板(用户界面)
IBusAttribute — Attributes of IBusText.——IBus文本的属性。
IBusAttrList — AttrList of IBusText.——IBus文本的属性列表。
IBusHotkeyProfile — Hotkeys and associated events.——热键和相关事件。
IBusLookupTable — Candidate word/phrase lookup table.——候选单词/短语查询表。
IBusPanelService — Panel service back-end.——面板服务后端。
IBusProperty — UI component for input method engine property.——输入法引擎属性的界面设计组件。
IBusPropList — An IBusProperty container.——Bus属性容器。
IBusText — Text with decorating information.——具有装饰信息的文本。

Input method engine 输入法引擎
IBusComponent — Component (executable) specification.——组件(可执行)规范。
IBusEngine — Input method engine abstract.——输入法引擎摘要。
IBusEngineDesc — Input method engine description data.——输入法引擎描述数据。
IBusEngineSimple ——(输入法引擎简化?)
IBusFactory — Factory for creating engine instances.——用于创建引擎实例的工厂。
IBusInputContext — IBus input context proxy object.——IBus输入上下文代理对象。
ibuskeys ——(ibus键盘?)
IBusKeymap — Keyboard mapping handling.——键盘映射处理。
ibuskeysyms-compat ——(ibus键盘符号兼容?)
IBusKeysyms — Key symbol definition.——Ibus键盘符号定义。
ibusutil — Utilities with C-Language.——C语言的实用程序。

Configuration 配置
IBusConfig — IBus engine configuration module.——IBus引擎配置模块。
IBusConfigService — Configuration service back-end.——配置服务后端。
IBusObservedPath — Path object of IBus.——IBus的路径对象。
IBusRegistry — Registry cache handling.——注册表缓存处理。
ibusversion — Current version of IBus.——IBus的当前版本。
ibusxml — XML handling functions for IBus.——IBus的XML处理功能。

Communication 通讯
IBusBus — Connect with IBus daemon.——与IBus守护程序连接。
IBusProxy — Base proxy object.——基本代理对象。
IBusSerializable — A serializable object.——可序列化的对象。
IBusService — IBus service back-end.——IBus服务后端。

Internal 内部
ibusdebug — Debug message output.——调试消息输出。
ibuserror ——(IBus错误?)
IBusObject — Base object of IBus.——IBus的基础对象。
ibusshare — Shared utility functions and definition.——共享的实用程序功能和定义。
ibustypes — Generic types for IBus.——IBus的通用类型。

Index 索引
Index of deprecated symbols 不推荐使用的符号索引
Annotation Glossary 注释词汇表
头像
yq-ysy
论坛版主
帖子: 4451
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

linux输入法ibus架构简析

#4

帖子 yq-ysy » 2020-01-06 17:10

《linux输入法ibus架构简析》(2011-02-13 12:53:04)
(转贴自cougar的博客) http://blog.sina.com.cn/s/blog_703f7fe80100q4aj.html
linux输入法ibus架构简析
2010年12月29日 星期三 19:01

项目主页 是 http://code.google.com/p/ibus/wiki/Sources (国内无法访问)
好像没什么详细的开发文档,不过代码很简单的,因为想改改pinyin输入法来玩玩,就简单看了一下代码。
《IBus Reference Manual》 http://ibus.googlecode.com/svn/docs/ibus/index.html (国内无法访问,可以看楼上,或者 http://ibus.github.io/docs/ibus-1.5/index.html )这个可以看一下,了解一下ibus的各个组件的功能什么的。

在线的代码可以在这里浏览,
https://github.com/phuang/ibus (现在应该改为:https://github.com/ibus/ibus
http://code.google.com/p/ibus/wiki/Develop (国内访问不了,可以去:https://github.com/ibus/ibus/wiki

不过要看的话还是用git下载下来看的方便一些:
git clone git://github.com/ibus/ibus.git ibus
git clone git://github.com/ibus/ibus-pinyin.git ibus-pinyin
写一个新的引擎,这里有两个简单的例子,一个c的一个python的
git clone git://github.com/phuang/ibus-tmpl.git ibus-tmpl

一开始看直接看pinyin引擎,感觉有点复杂啊,所以先看一下ibus-tmpl这个简单的输入引擎的例子,看看是怎么工作的:

ibus应该是自持python和c两种语言写的引擎的,这里以c为例子。每个输入法其实作为一个独立的模块,在需要的时候的动态加载的。整个可以说是一种“插件“的架构,利用GType 和Dbus的功能实现。 每个输入法模块通过GType导出IBUS_TYPE_ENGINE 接口类, 核心部分就可以根据导出类加载某个输入法了。 ibus和核心部分和各个输入法的模块直接可以通过dbus通讯。

下马简单的看看,核心部分是怎么和输入法模块连接到一起的。

首先,每个模块都是一个xml配置文件,指定了这个输入法对应的模块是,一个模块他ibus术语叫做一个component,已经安装的输入法的配置文件应该都是可以在这个目录下找到的吧。/usr/share/ibus/component/

比如 /usr/share/ibus/component/pinyin.xml

代码: 全选

------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<!-- filename: pinyin.xml -->
<component>
    <name>org.freedesktop.IBus.Pinyin</name>
    <description>Pinyin Component</description>
    <exec>/usr/lib/ibus-pinyin/ibus-engine-pinyin --ibus</exec>    ///这个指定输入法对应的应用程序模块
    <version>1.3.10</version>
    <author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
    <license>GPL</license>
    <homepage>http://code.google.com/p/ibus</homepage>
    <textdomain>ibus-pinyin</textdomain>

    <engines>
        <engine>
            <name>pinyin</name>
            <language>zh</language>
            <license>GPL</license>
            <author>Peng Huang &lt;shawn.p.huang@gmail.com&gt;
BYVoid &lt;byvoid1@gmail.com&gt;</author>
            <icon>/usr/share/ibus-pinyin/icons/ibus-pinyin.svg</icon>
            <layout>us</layout>
            <longname>Pinyin</longname>
            <description>Pinyin input method</description>
            <rank>99</rank>
        </engine>
        <engine>
            <name>bopomofo</name>
            <language>zh</language>
            <license>GPL</license>
            <author>BYVoid &lt;byvoid1@gmail.com&gt;
Peng Huang &lt;shawn.p.huang@gmail.com&gt;</author>
            <icon>/usr/share/ibus-pinyin/icons/ibus-bopomofo.svg</icon>
            <layout>us</layout>
            <longname>Bopomofo</longname>
            <description>Bopomofo input method</description>
            <rank>98</rank>
        </engine>
    </engines>

</component>
-------------------------------------------------
应用程序main函数,完成了对应的输入法模块的注册加载:

代码: 全选

static void
init (void)
{
    IBusComponent *component;

    ibus_init ();

    bus = ibus_bus_new ();
    g_object_ref_sink (bus);
    g_signal_connect (bus, "disconnected", G_CALLBACK (ibus_disconnected_cb), NULL);
    
    factory = ibus_factory_new (ibus_bus_get_connection (bus));
    g_object_ref_sink (factory);
    ibus_factory_add_engine (factory, "enchant", IBUS_TYPE_ENCHANT_ENGINE);

    ibus_bus_request_name (bus, "org.freedesktop.IBus.Enchant", 0);

    component = ibus_component_new ("org.freedesktop.IBus.Enchant",
                                    "English Writer",
                                    "0.1.0",
                                    "GPL",
                                    "Peng Huang <shawn.p.huang@gmail.com>",
                                    "http://code.google.com/p/ibus/",
                                    "",
                                    "ibus-tmpl");
    ibus_component_add_engine (component,
                               ibus_engine_desc_new ("enchant",
                                                     "English Writer",
                                                     "English Writer",
                                                     "en",
                                                     "GPL",
                                                     "Peng Huang <shawn.p.huang@gmail.com>",
                                                     PKGDATADIR"/icon/ibus-enchant.svg",
                                                     "en"));
    ibus_bus_register_component (bus, component);
}

int main()
{

    init ();
    ibus_main ();
}
========另外一个文件里面的输入法类====================

代码: 全选

typedef struct _IBusEnchantEngine IBusEnchantEngine;
typedef struct _IBusEnchantEngineClass IBusEnchantEngineClass;

struct _IBusEnchantEngine {
    IBusEngine parent;

   
    GString *preedit;
    gint cursor_pos;

    IBusLookupTable *table;
};

struct _IBusEnchantEngineClass {
    IBusEngineClass parent;
};


G_DEFINE_TYPE (IBusEnchantEngine, ibus_enchant_engine, IBUS_TYPE_ENGINE)  

static void
ibus_enchant_engine_class_init (IBusEnchantEngineClass *klass)
{
    IBusObjectClass *ibus_object_class = IBUS_OBJECT_CLASS (klass);
    IBusEngineClass *engine_class = IBUS_ENGINE_CLASS (klass);
    
    ibus_object_class->destroy = (IBusObjectDestroyFunc) ibus_enchant_engine_destroy;

    engine_class->process_key_event = ibus_enchant_engine_process_key_event;   ///键盘按键的处理事件的注册
}

static void
ibus_enchant_engine_init (IBusEnchantEngine *enchant)
{
    if (broker == NULL) {
        broker = enchant_broker_init ();
        dict = enchant_broker_request_dict (broker, "en");
    }

    enchant->preedit = g_string_new ("");
    enchant->cursor_pos = 0;

    enchant->table = ibus_lookup_table_new (9, 0, TRUE, TRUE);
    g_object_ref_sink (enchant->table);
}
==================================
其中关键是G_DEFINE_TYPE宏的用法,这个注册了IBUS_TYPE_ENGINE 的类型,并把ibus_enchant_engine_class_init等函数设置为这个类型的初始化函数。这样ibus核心就可以找到相应模块中的自定义输入法类,并且调用相应的初始化函数了。详细的文档参考
http://library.gnome.org/devel/gobject/ ... ation.html
我自己之前也大理解gobject-Type 这个东西,所以看起来不是明白。

简单的说这个宏会展开成这样:

代码: 全选

---------------------------------------------------------------

The most general convenience macro for type implementations, on which G_DEFINE_TYPE(), etc are based.

 

1
2
3
4
5
6

	

G_DEFINE_TYPE_EXTENDED (GtkGadget,
gtk_gadget,
GTK_TYPE_WIDGET,
0,
G_IMPLEMENT_INTERFACE (TYPE_GIZMO,
gtk_gadget_gizmo_init));

expands to

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

	

static void gtk_gadget_init (GtkGadget *self);
static void gtk_gadget_class_init (GtkGadgetClass *klass);
static gpointer gtk_gadget_parent_class = NULL;
static void gtk_gadget_class_intern_init (gpointer klass)
{
gtk_gadget_parent_class = g_type_class_peek_parent (klass);
gtk_gadget_class_init ((GtkGadgetClass*) klass);
}

GType
gtk_gadget_get_type (void)
{
static volatile gsize g_define_type_id__volatile = 0;
if (g_once_init_enter (&g_define_type_id__volatile))
{
GType g_define_type_id =
g_type_register_static_simple (GTK_TYPE_WIDGET,
g_intern_static_string ("GtkGadget"),
sizeof (GtkGadgetClass),
(GClassInitFunc) gtk_gadget_class_intern_init,
sizeof (GtkGadget),
(GInstanceInitFunc) gtk_gadget_init,
(GTypeFlags) flags);
{
static const GInterfaceInfo g_implement_interface_info = {
(GInterfaceInitFunc) gtk_gadget_gizmo_init
};
g_type_add_interface_static (g_define_type_id, TYPE_GIZMO, &g_implement_interface_info);
}
g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
}
return g_define_type_id__volatile;
}

The only pieces which have to be manually provided are the definitions of the instance and class structure and the definitions of the instance and class init functions.

------------------------------------------------------------------------------


理解了加载与关联办法,其他代码看起来就简单了。关于dbus的进程间通讯的,也可以去dbus官网看一下
http://www.freedesktop.org/wiki/Software/dbus (国内访问不了)
头像
yq-ysy
论坛版主
帖子: 4451
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

自己编译安装IBus 1.1.0.20090225拼音输入法

#5

帖子 yq-ysy » 2020-01-06 17:21

《自己编译安装IBus 1.1.0.20090225拼音输入法》(2011-03-11 11:13:19)
转贴自cougar的博客 http://blog.sina.com.cn/s/blog_703f7fe80100qywb.html
虽然版本比较低,暂且留给未来的程序员,开发调试 ibus 时可以参考借鉴。

自己编译安装IBus 1.1.0.20090225拼音输入法

分享
分类: linux相关 2009-02-26 17:20
设置编译环境,也许能用到的依赖关系:

代码: 全选

$ sudo apt-get install python-enchant
$ sudo apt-get install python-gtk2-dev
$ sudo apt-get install libgtk2.0-dev
$ sudo apt-get install libdbus-1-dev libdbus-glib-1-dev
1.编译dubs-python:
http://dbus.freedesktop.org/releases/dbus-python/ 下载dbus-python 0.83源码编译,依赖libdbus-1-dev libdbus-glib-1-dev两个文件。
解压缩源代码,进入目录执行:

代码: 全选

./configure --prefix=/usr
make
sudo make install
2.编译ibus:
http://code.google.com/p/ibus/downloads/list 下载ibus 和你需要到输入法,解压缩,进入相应目录,执行

代码: 全选

./configure --prefix=/usr --with-gtk-im-module-dir=/usr/lib/gtk-2.0/2.10.0/immodules/
make
sudo make install
3.编译拼音输入法:
http://code.google.com/p/ibus/downloads/list 下载 ibus-pinyin,解压缩
http://code.google.com/p/scim-python/downloads/list 这里下载拼音输入法词库,复制到ibus-pinyin/engine/ ,不这么做的话程序也会启用wget到这里自动下载。
编译也只需要执行

代码: 全选

./configure --prefix=/usr
make
sudo make install
编译拼音词库索引时间稍长。

4.编译五笔输入法:(我没有安装其他输入法,没有测试这一步)
http://code.google.com/p/ibus/downloads/list 下载ibus-table包,解压缩,进入目录执行

代码: 全选

./configure --prefix=/usr --enable-wubi86 (或者--enable-wubi98 还有仓颉 二笔等,具体可先执行 ./configure --help查看)
make
sudo make install
5.测试(参考http://code.google.com/p/ibus/wiki/ReadMe 官方文档):

代码: 全选

Test ibus
Run ibus
# use ibus-setup to enable ibus and engines 使用ibus-setup启用ibus和引擎

代码: 全选

$ /usr/bin/ibus-setup
Run gnome, kde or old X applications 运行gnome,kde或旧的X应用程序

代码: 全选

# gtk application
$ GTK_IM_MODULE=ibus gedit
# kde application
$ QT_IM_MODULE=ibus kwrite
# 上面如果不行,可以再:
$ XMODIFIERS="@im=ibus" gedit

如果正常,可以把
export XMODIFIERS=@im=ibus
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
写入到 ~/.bashrc中就可以正常启动ibus了。

这一步我没有成功,我可以启动ibus-setup,而且ibus-daemon也确实在后台运行,但始终掉不出ibus输入法!
使用im-switch -c 切换输入法,可以看见ibus这一选项,但当进行选择是却提示请安装一下软件包:ibus.
这也许是因为我直接安装过ibus 0.1.1

以上参考:http://forum.ubuntu.org.cn/viewtopic.php?p=915368
(哈哈,本站的《ibus for 8.04 deb包 20080901版dbus-python 0.83以及编译方法(1016修订)》)
为了成功安装ibus,我继续探索,终于在参考另一篇文章 http://coolwanglu.blogspot.com/2008/11/ibus.html (国内无法访问)的基础上经过调整安装成功!

6.把ibus注册为gtk的输入法
编辑/usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules
在文件到最后添加两行:

代码: 全选

"/usr/lib/gtk-2.0/2.10.0/immodules/im-ibus.so"
"ibus" "ibus Input Method" "gtk20" "/usr/share/locale" "en_US"
这样在一些文本框里点右键就能找到ibus了
这一步根据自己的环境进行设置,我的系统是英文环境,所以是en_US
中文环境按照下面的方式设置:

代码: 全选

"/usr/lib/gtk-2.0/2.10.0/immodules/im-ibus.so"
"ibus" "ibus Input Method" "gtk20" "/usr/share/locale" "zh"
这一步对能否成功使用ibus影响不大,这一步只是为了右键点击文本框时在菜单中看到ibus。

7.注册给im-switch,替换掉scim或scim-bridge
1)
建立文件/etc/X11/xinit/xinput.d/ibus,内容为

代码: 全选

XIM=ibus
XIM_PROGRAM=/usr/bin/ibus
XIM_ARGS=""
GTK_IM_MODULE=ibus
2)

代码: 全选

 sudo update-alternatives --install /etc/X11/xinit/xinput.d/zh_CN xinput-zh_CN /etc/X11/xinit/xinput.d/ibus 50
3)

代码: 全选

im-switch -c,
然后选ibus那一项
原文是sudo im-switch -c,但我使用这个命令行是出现如下选项:
1 /etc/X11/xinit/xinput.d/default
2 /etc/X11/xinit/xinput.d/default-xim
3 /etc/X11/xinit/xinput.d/none
所以才用了im-switch -c来选择ibus.

8.重启ubuntu,登录就可以使用了!
原文为重新登录就可以了,我在重启Xwindow登录后没有成功!

折腾了一下午终于成功,主要的问题出在没有将ibus注册给im-switch,以至于无法选择ibus。
进行完所有是设置后没有重启耽误了时间!
重启读条时居然卡住了,再重启居然stuck ??.断电歇息了一会儿后再开机,一切OK.

把原文关于删除ibus输入法的段落也贴过来,以备不时之需.
9.需要删除engine时,除了删除/usr/share/ibus/engine 下的对应文件,如果设置了preload,还要去gconf里删除/desktop/ibus/general/preload_engines里的项目

10.用--prefix=/usr/local/(也就是不加--prefix)编译安装运行后,/usr/share/ibus/engine里会多出一个engine文件,我这里是wubi86.engine,然而make uninstall和用--prefix=/usr编译安装后这个文件里面的Icon字段仍然指向/usr/local,所以需要删除该文件再make install
头像
yq-ysy
论坛版主
帖子: 4451
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

ibus架构( 图)

#6

帖子 yq-ysy » 2020-01-06 20:40

转贴自: https://my.oschina.net/gschen/blog/133447

ibus
ibus的全称是intelligent input bus
同样我们也首先来看一下wikipedia是如何描述的:

The Intelligent Input Bus (IBus, pronounced as I-Bus) is an input method (IM) framework for multilingual input in Unix-like operating systems. It's called "Bus" because it has a bus-like architecture.

ibus是在类unix操作系统中是一个为了多语言输入的输入法框架,之所以叫做"bus”原因在于它是一个总线型的架构。
ibus的总线架构.png
<上图引用自http://2008.gnome.asia/static/upload/event_file/ibus-GNOME.pdf>(现已无法下载)

ibus是基于c/s的架构:
他有一个ibus-daemon的后台进程,管理所有的客户端;
所有的engines,panel,config modules和IM(Input Method) clients都是ibus-daemon的客户端;
ibus是基于dbus ipc协议的。
ibus的CS架构.png
<上图引用自http://2008.gnome.asia/static/upload/event_file/ibus-GNOME.pdf>(现已无法下载)

ibus的优势在于:
ibus使用dbus rpc进行通信,客户端可以使用任何一种语言去呵ibus交互;
ibus-daemon, engines, clients&UI这些所有的都运行在独立的进程中。
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Re: 刚刚才发现,其实ibus依然有人在维护,我们弄错网址了。

#7

帖子 Ping-Wu » 2020-01-09 1:54

ibus (输入引擎)当然还有人在维护,只是 ibus-pinyin (配合 ibus 输入引擎的一套中文拼音输入法)过去6年中只在一年前有一个 commit (牵涉到 python 3 compatibility)。据我所知,Ubuntu 官方已把 ibus-pinyin 定位为 "deprecated" (放弃维护)了。

也许10年之后我可以找到时间(如果还有这份兴致的话)用 python 来重写 ibus-pinyin。不过现在 ibus-rime 已经非常满足我的中文需要。ibus-libpinyin 提供的功能(最少我用到的),ibus-rime 都有也比较好用。但 ibus-libpinyin 品质,尤其是开发架构,实在太差了。ibus-libpinyin 没有人使用,品质就无法改善。品质差,更没有人会使用。就这样恶性循环。开发 Linux 桌面程序不愿意寻求 Ubuntu 使用者帮忙,根本就是闭门造车,甚至是自毁武功吗。
头像
yq-ysy
论坛版主
帖子: 4451
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

Re: 刚刚才发现,其实ibus依然有人在维护,我们弄错网址了。

#8

帖子 yq-ysy » 2020-01-09 9:37

Ping-Wu 写了: 2020-01-09 1:54 ibus-libpinyin 提供的功能(最少我用到的),ibus-rime 都有也比较好用。
我正在研究 Rime 制作自定义输入法的配置文件。
两年半前,我怎么没有发现它的文档?看网友说 Rime 改进了许多。
如果要实现我的XX输入法,看上去蛮复杂的,但似乎有希望。
(真能做出来的话,我多半已经变成 Rime 配置高手了。)
回复