之前使用的一直都是ibus-sunpinyin中文输入法,但在使用的过程中发现很多的词组都找不到,比较麻烦,所以打算换一下ibus-googlepinyin输入法,还没用,也不知道具体的效果怎么样?不过之前windows系统中用的都是google-pinyin,一直以来都还是比较相信google的服务。本文将从一次安装ibus-googlepinyin拼音输入法的实践入手,探讨常用的输入法框架有哪些,并做一简单的介绍。
由于google官方未提供直接的rpm或其他的直接安装方式,所以只能自己编译源码然后安装。由于源码使用的是cmake进行项目管理的,所以我们需要先确定系统是否已经安装cmake。
scmi是一个输入法平台,在类posix的操作系统如linux和bsd中,它支持至少30种语言。它有一个非常清晰的架构,使用了一个简单但非常强大的编程接口,该接口为我们开发自己的输入法大大的节省了时间。
fcitx一个支持扩展的输入法框架。目前它支持linux和unix系统如freebsd。它有三个内置的输入法引擎,分别是拼音输入法, 区位输入法和table-based输入法。
ibus是在类unix操作系统中是一个为了多语言输入的输入法框架,之所以叫做bus”原因在于它是一个总线型的架构。
本文主要介绍了在linux系统中如何安装ibus-googlepinyin中文输入法,在成功安装google拼音输入法之后,并对目前常用的输入法框架做了简单的介绍。
因为工作原因要用linux,看了大家的经验,对于新手最容易上手的还是ubuntu,所以就下载安装了ubuntu,第一次用,表示:我们真是被Windows系统惯坏了,用ubuntu这种系统简直让人崩溃。安装完系统第一件事就是安装一个可以使用的汉语输入法了,查了一下目前中国比较大的输入法支持linux的也就搜狗了,所以选择安装搜狗输入法。凭良心讲,就冲这一点,搜狗输入法还是不错的。
在安装之前,我们要先了解一个事实,那就是linux下安装软件和Windows是非常不同的,并不是简单地双击安装包就可以安装了。linux很多软件都有自己的一个依赖源,如果不先安装好这些依赖源,你是无法成功安装软件的。那么搜狗输入法就需要依赖fcitx这个框架。
【fcitx是 (Free Chinese Input Toy for X) 的英文缩写,中文名为小企鹅输入法,是一个以 GPL 方式发布的输入法框架, 编写它的目是为桌面环境提供一个灵活的输入方案,彻底解决在GNU/Linux下没有一个好的中文输入法的问题。】
找了很多网上的经验,发现主流的安装方式都是这篇文章说的这样,但是,我亲身测试,发现并不能安装成功!!!
按道理到这里就该安装成功了,但是安装的过程还是提示缺少很多东西,切换到系统设置(桌面右上角”System Settings“)中的”Language Support“下,直接提示要使用命令:apt-get install -f. 当时并不知道这个是什么意思,后来查了一下才知道原来这个是安装所有依赖的意思,于是就重新打开终端窗口,输入了下面的命令:
成功安装了所有依赖,然后按照上面的第9步安装了搜狗输入法,这次应该是安装成功了,但是!发现还是没法用!
本来安装成功之后打开fcitx的配置,里面列表就应该会有搜狗输入的,但是并没有。后来捣鼓了半天,发现要按照下面这样设置才可以:
2. 点击左下角的+号,在打开的窗口中找到搜狗输入法Sogou pinyin点击Add添加进去
3. 这时就可以看到列表中有搜狗输入法了。这个时候再打开fcitx的配置窗口,点击左下角的+号再列表中选择搜狗输入法添加进来:
4. 添加成功了,吧搜狗输入法移动到第一的位置。看看你的桌面右上角输入法那个地方,是不是出现搜狗输入法了!
将鼠标点击要输入汉字的地方,点击一下,按 Ctrl + Space启动输入法,然后用鼠标在SCIM托盘上选择拼音输入法。
用户可以用PageUp,PageDown, 逗号(,)句号(.) 和 减号(-),等于号(=)翻页。
当用户输入一串拼音的时候,用户自己造的词会在候选词选择窗口里以高亮颜色显示,用户可一按Ctrl加上数字键,删除数字对用的词。
当用户输入的拼音在系统词典和用户词典无法找到匹配的词语时,输入法会自动为您创建一个可能的新词,这个自动生成的新词会以红色显示,提示您确认这个自动生成的词语是否正确。
用户只要输入字母 v 输入法将自动切换到英文输入模式,在这个临时的英文输入模式里,按回车键确认输入并返回中文输入模式,按ESC返回中文模式。
刚才思考了一下该从哪里说起比较好,因为我不想牵扯太多和主题无关的内容,否则一说就难以收住了,并且使得主题不突出,丧失了本文的初衷。但是考虑到大家水平差别很多,为了照顾大多数,因此我会把我觉得应该提到的东西简单说一下,能够让读者看完本文以后不仅知道如何做,还能理解为什么这么做。当然,由于本人水平有限,难免有的地方说的不对,欢迎大家指出,我会对本文做出修改,只要不人身攻击就好了,否则我会很难过的。为了避免重复,以及便于大家查询,本文将采用问答方式来组织,这些问题的编号依次增大,逐一说明了一些必须知道的知识点,在全部弄懂了以后,我想本文开始阐述的目的也就达到了。
个人觉得fcitx和scim是目前比较好的输入法,但是他们的特点不同,fcitx只能输入中文,而scim可以根据需要,利用不同的码表达到中英日…等等各种语言的输入问题。如果你只懂中文,或者只会输入英文&中文,那么我觉得fcitx是一个不错的选择,因为它漂亮,小巧,实用。如果你还需要输入日文或者其他语言,那么你因该安装scim。通过合理的配置,他能够让你像在windows里面一样,想输入什么语言就能输入什么语言,同一种语言想用什么输入法就用什么输入法。Scim的扩充性很强,而且比较稳定,我就是选择的scim,因为由于工作需要,我会涉及到日语的输入问题。除此以外还有其他各种输入法,目前的感觉只有一个字,差。所以不推荐使用,如果你有使用官方自带软件的嗜好,那我就没什么好说的了,不过输入法的选择不是主要,本文适合各种输入法。
如果有哪一行提示rpm: no packages given for erase那表示本身你的系统里面没有该输入法,不用担心,继续往下看就行了。
说明:rpm –qa是列出所有安装的rpm包,grep iiimf是选择出其中名字含有iiimf的那些包,xargs rpm –e的意思是把前面列出的这些包删除掉。Xargs的作用就是把前面通过 传过来的数据作为下面命令的参数。这就好比一个过滤器,首先是放着所有的安装包,然后grep以后,只留下了含有某些特定关键字的rpm包,然后通过xargs和rpm –e的组合运用,把剩下的这些含有某特定关键字的包删掉。这样就达到了删除该输入法及相关包的目的。下面的Chinput也是如此,在此不再重复。如果你还安装了其他输入法,比如你原来装的是fcitx,现在想装scim,那么你最好模仿上面的样子把fcitx删除,方法就是把iiimf的位置改成fcitx就可以了。
在安装新输入法之前,最好这样做一下,因为多种输入法同时存在一个系统中没有什么好处,你只可能去用一个,而且他们同时存在可能有的时候会出现问题,想想也知道,会互相竞争嘛。所以在此以后,你应该保证系统里面已经没有中文输入法了。通过类似以下方式验证:
很多人不知道输入法到底什么时候被load进来,不知道这个当然就不知道为什么有的时候呼不出输入法(因为可能根本没有调入)当然也不会知道如何配置能够符合自己的要求。
大家都知道,linux下面比较常用的有两个桌面系统,gnome和kde,这都无所谓,他们其实都是架在X系统之上的。简单的说X系统就是一个最核心,也是最底层的桌面系统,gnome也好,kde也罢,或者其他的什么fvwm之类的,都只不过是X系统和用户之间的另一层软件而已。所以要想达到不管使用什么桌面系统,都能调入输入法,就是要在X系统启动的时候,让输入法也启动起来,那么这样之后,无论你使用的是gnome还是kde或者其他什么桌面,都能够调入输入法。因为当轮到他们启动的时候,X系统已经启动好了,输入法已经被系统调入了。那么X系统又是如何启动的呢?让我们从startx开始说起。
无论你用什么桌面系统,都是通过startx启动的,那么startx究竟是什么呢?一个应用程序还是一个脚本文件?为什么它能够启动各种桌面系统,并且能够按照相应的配置文件来设置呢?带着疑问,我在console里面输入whereis startx.
在找到了存放startx的路径以后,用编辑器打开它发现原来是一个脚本文件。这个脚本文件的内容可能根据发行版不同,会有差异,如果你懂一些shell的语言,那么你可以尝试看看,不一定要全部看懂,但是你大致看过以后会发现最后有一个xinit的命令,然后跟着一些参数。我尝试在console下面输入xinit(注意,不要在图形界面下做此操作)
发现图形界面启动拉,但是很丑陋,什么功能都没有,鼠标可以动,还有一个可以输入命令的小窗口。怎么退出来?ctrl+alt+backspace. 原来如此,startx只是一个脚本,里面通过对一系列配置文件的分析设置,最终利用xinit命令启动图形界面。不管是kde还是gnome,都是在这个脚本中完成的。那么让我们再打开startx脚本看看里面还做了些什么。你仔细看看,会发现有一个东西很显眼,就是/etc/X11/xinit/xinitrc,这个xinitrc好像很眼熟,在配置输入法的其他贴中总是看到,这里出现了肯定是里面运行了这个脚本。再看其他的一些东西,其实都是利用shell配置出一个xinit启动的参数,用来配置桌面系统用的,不用管它。目前已知的就是startx的时候它会去执行一个/etc/X11/xinit/xinitrc的脚本,让我们打开来看看里面有什么。
打开一看,其中一段我觉得最有价值,是一个for循环,他依次执行了/etc/X11/xinit/xinitrc.d/下面的所有脚本。你可以耐心的找一下,一定可以发现。那么这个目录里面有些什么内容呢?有一个文件看名字就知道和输入相关,他叫xinput。等等,让我们理一下,是怎么从startx到xinput的。
首先是执行startx这个脚本文件,里面他会执行xinitrc这个脚本,然后xinitrc脚本里面有一个循环,依次执行了xinitrc.d/下面的所有脚本,其中有一个是和输入法相关的,叫xinput。OK, 我们继续,打开xinput看看。
这个文件里面的内容可能根据使用的版本不同会不一样,所以我很难描述,如果是RH9你会发现这个文件会去执行/etc/sysconfig/i18n,然后根据现有的环境变量,比如大家熟悉的LC_CTYPE来分别设置对应的XIM, XIM_PROGRAM, XMODIFIERS等。这3个环境变量的设置直接涉及到你使用的输入法。不管你用scim还是fcitx都会在他们的文档里面发现如何设置这3个变量,有的说在这个文件里面改,有的说在那个文件里面加,弄得人晕头转向,现在想想就简单了,无论对哪个文件修改,都只是为了设置他们。如果你是FC3,可能xinput里面内容不多,但是有一个for循环,去依次执行另外一个目录下面的脚本,那么你可以尝试去看看这个目录,以及对应的文件。我们的目的很明确,就是要在这个脚本执行完以后设置好XIM, XIM_PROGRAM, XMODIFIERS,这样你就可以使用输入法了。往往看到人问为什么呼不出输入法,问题就在这里,简单点说就是xinput执行完了以后并没有设置好这3个环境变量。
如果你知道怎么修改shell脚本,那么你可以加入适当的代码让它执行完后设置好这3个变量,比如我用的是scim。那么我让xinput执行完以后,环境变量变成:
在xinput的最后,会利用上面的这几个变量来启动对应的输入法。设置LC_CTYPE=”en_US.UTF8”会让我用英文系统,下面设置好XIM相关的变量,能够让我使用中文输入法。如果你实在不知道如何修改脚本,你就把上面的设置放在xinput文件的最开始,脚本里面的代码会判断该变量是否设置过,如果设置过了就不会修改。所以你必须放到最前方,不要放到脚本末尾,那样就没有意义了。
设置好以后,你可以在console下面执行这个脚本看看,. xinput(注意前面有一个点哦,然后一个空格,然后才是xinput)如果没有报错,那么你通过echo $XIM类似的方法查看上面的变量是否设置正确。如果没有问题,那么就startx启动看看能不能使用输入法。
应该就这么多,如果你发现有些地方可以输入中文,有些地方还是输入不了,那么你要去看看该输入法的文档,比如scim,你可能还需要执行gtk-query-immodules-2.0 /etc/gtk-2.0/gtk.immodules使其能够在gtk-2.0的程序中使用等等。剩下的就靠你自己去探索学习拉。

