小企鹅的键盘怎么自定义?
用惯了双拼,安装了linux之后,还想用双拼。不过,在安装了小企鹅输入法(是最新版)之后,发现小企鹅的双拼,不是我惯用的中文之星双拼,它们的键位很多不同。
我试图记住这新的键位,但是,还是经常搞混。
人脑不是电脑,那个过去键位的记忆,“删除”又来,非常顽强,超出我所预料。
如果,能自定义键盘,那该多么美好啊。可是,我不会。
谁懂行,请不吝赐教。
谢谢。 ~/.fcitx/config 这个文件中有,但不知道是否是你要地. 这个文件,[程序]
#区域设置=zh_CN
显示字体=*
显示字体大小=18
是否使用AA字体=1
[输出]
数字后跟半角符号=1
Enter键行为=2
分号输入英文=1
大写字母输入英文=1
联想方式禁止翻页=1
[界面]
候选词个数=5
是否使用3D界面=2
是否自动隐藏输入条=1
主窗口隐藏模式=1
是否光标跟随=1
光标色=92 210 131
主窗口背景色=230 230 230
主窗口线条色=255 0 0
输入窗背景色=240 240 240
输入窗线条色=100 200 255
输入窗箭头色=255 150 255
输入窗用户输入色=0 0 255
输入窗提示色=255 0 0
输入窗序号色=200 0 0
输入窗第一个候选字色=0 150 100
#该颜色值只用于拼音中的用户自造词
输入窗用户词组色=0 0 255
输入窗提示编码色=100 100 255
#五笔、拼音的单字/系统词组均使用该颜色
输入窗其它文本色=0 0 0
#除了“中英文快速切换键”外,其它的热键均可设置为两个,中间用空格分隔
[热键]
打开/关闭输入法=CTRL_SPACE
#中英文快速切换键 可以设置为L_CTRL R_CTRL L_SHIFT R_SHIFT
中英文快速切换键=L_CTRL
GBK支持=CTRL_M
联想支持=CTRL_L
全半角=SHIFT_SPACE
中文标点=ALT_SPACE
上一页=- ,
下一页== .
第二三候选词选择键=SHIFT
[五笔]
五笔四键自动上屏=1
自动调整五笔顺序=0
提示词库中已有的词组=0
五笔精确匹配=0
提示五笔编码=1
使用Z输入拼音=1
Z模糊匹配=1
增加五笔词组=CTRL_8
调整五笔顺序=CTRL_6
删除五笔词组=CTRL_7
[二笔]
向前翻页=[
向后翻页=]
[拼音]
使用全拼=0
拼音自动组词=1
保存自动组词=0
增加拼音常用字=CTRL_8
删除拼音常用字=CTRL_7
删除拼音用户词组=CTRL_DELETE
#重码调整方式说明:0-->不调整1-->快速调整2-->按频率调整
拼音单字重码调整方式=2
拼音词组重码调整方式=1
拼音常用词重码调整方式=0
是否模糊an和ang=0
是否模糊en和eng=0
是否模糊ian和iang=0
是否模糊in和ing=0
是否模糊ou和u=0
是否模糊uan和uang=0
是否模糊c和ch=0
是否模糊f和h=0
是否模糊l和n=0
是否模糊s和sh=0
是否模糊z和zh=0 请指示具体。 我不知道你想改什么,
fcitx 就提供了两文件在 ~/.fcitx
一个 config 就是上面这个
一个 profile 似乎没有键位设置。
// 我要的,看起来是下面这个,这是我已经改过来的,但是它不起作用。我不知道还差在哪里,请继续帮助。
文件为/root/.Trash/fcitx-2.0.2/src/sp.c
#include <stdio.h>
#include <sys/stat.h>
#include <limits.h>
#include <ctype.h>
#include "main.h"
#include "sp.h"
#include "pyMapTable.h"
#include "pyParser.h"
#include "MainWindow.h"
SP_C SPMap_C[] = {
{"in", 'l'}
,
{"jan", 'j'}
,
{"iang", 'h'}
,
{"iao", 'k'}
,
{"un", 'z'}
,
{"an", 'f'}
,
{"ang", 'g'}
,
{"en", 'r'}
,
{"ei", 'w'}
,
{"ie", 'm'}
,
{"ao", 'd'}
,
{"uan", 'c'}
,
{"ue", 'x'}
,
{"iu", 'n'}
,
{"ong", 'y'}
,
{"ai", 's'}
,
{"er", 'q'}
,
{"ing", 'q'}
,
{"uai", 'x'}
,
{"ia", 'b'}
,
{"uang", 'h'}
,
{"iong", 'y'}
,
{"en", 'r'}
,
{"ao", 'd'}
,
{"eng", 't'}
,
{"ui", 'v'}
,
{"ou", 'p'}
,
{"ua","b"}
,
{"v","v"
,
{"uo", 'o'}
,
{"eng", 't'}
,
{"\0", '\0'}
};
SP_S SPMap_S[] = {
{"sh", 'i'}
,
{"ch", 'u'}
,
{"zh", 'v'}
,
{"\0", '\0'}
};
Bool bSP_UseSemicolon = False;
Bool bSP = False;
char cNonS = 'o';
void LoadSPData (void)
{
FILE *fp;
char strPath;
char str, strS, *pstr;
int i;
strcpy (strPath, (char *) getenv ("HOME"));
strcat (strPath, "/.fcitx/");
if (access (strPath, 0))
mkdir (strPath, S_IRWXU);
strcat (strPath, "sp.dat");
fp = fopen (strPath, "rt");
if (!fp)
return;
while (1) {
if (!fgets (str, 20, fp))
break;
i = strlen (str) - 1;
while (str == ' ' || str == '\n')
str = '\0';
pstr = str;
if (*pstr == ' ' || *pstr == '\t')
pstr++;
if (!strlen (pstr) || pstr == '#')
continue;
if (pstr == '=') //是零声母设置
cNonS = tolower (pstr);
else {
i = 0;
while (pstr) {
if (pstr == '=') {
strncpy (strS, pstr, i);
strS = '\0';
pstr += i;
i = GetSPIndexQP_S (strS);
if (i != -1)
SPMap_S.cJP = tolower (pstr);
else {
i = GetSPIndexQP_C (strS);
if (i != -1)
SPMap_C.cJP = tolower (pstr);
}
break;
}
i++;
}
}
}
fclose (fp);
//下面判断是否使用了';'
i = 0;
while (SPMap_C.strQP) {
if (SPMap_C.cJP == ';')
bSP_UseSemicolon = True;
}
if (!bSP_UseSemicolon) {
i = 0;
while (SPMap_S.strQP) {
if (SPMap_S.cJP == ';')
bSP_UseSemicolon = True;
}
}
if (!bSP_UseSemicolon) {
if (cNonS == ';')
bSP_UseSemicolon = True;
}
}
/*
* 将一个全拼转换为双拼
* strQP只能是一个标准的全拼,本函数不检查错误
*/
/*void QP2SP (char *strQP, char *strSP)
{
//IsConsonant
int iIndex;
strSP = '\0';
//"ang"是唯一一个可单独使用、长为3的拼音,单独处理
if (!strcmp (strQP, "ang")) {
strSP = cNonS;
strSP = SPMap_C.cJP;
return;
}
if (strlen (strQP) == 1) {
strSP = cNonS;
strSP = *strQP;
return;
}
if (strlen (strQP) == 2) {
iIndex = GetSPIndexQP_C (strQP);
if (iIndex == -1)
strcpy (strSP, strQP);
else {
strSP = cNonS;
strSP = SPMap_C.cJP;
}
return;
}
iIndex = IsSyllabary (strQP, True);
strQP += strlen (syllabaryMapTable.strPY);
if (*strQP) {
if (strlen (syllabaryMapTable.strPY) == 1)
strSP = syllabaryMapTable.strPY;
else
strSP = SPMap_S.strPY)].cJP;
if (strlen (strQP) == 1)
strSP = strQP;
else
strSP = SPMap_C.cJP;
}
else {
strSP = cNonS;
strSP = SPMap_C.strPY)].cJP;
}
}
*/
/*
* 此处只转换单个双拼,并且不检查错误
*/
void SP2QP (char *strSP, char *strQP)
{
int iIndex1 = 0, iIndex2 = 0;
char strTmp;
char str_QP;
strTmp = '\0';
strQP = '\0';
if (strSP != cNonS) {
iIndex1 = GetSPIndexJP_S (*strSP);
if (iIndex1 == -1) {
strTmp = strSP;
strcat (strQP, strTmp);
}
else
strcat (strQP, SPMap_S.strQP);
}
else if (!strSP)
strcpy (strQP, strSP);
if (strSP) {
iIndex2 = -1;
while (1) {
iIndex2 = GetSPIndexJP_C (strSP, iIndex2 + 1);
if (iIndex2 == -1) {
strTmp = strSP;
strcat (strQP, strTmp);
break;
}
strcpy (str_QP, strQP);
strcat (strQP, SPMap_C.strQP);
if (FindPYFAIndex (strQP, False) != -1)
break;
strcpy (strQP, str_QP);
}
}
if (FindPYFAIndex (strQP, False) != -1)
iIndex2 = 0; //这只是将iIndex2置为非-1,以免后面的判断
strTmp = strSP;
strTmp = '\0';
if ((iIndex1 == -1 && !(IsSyllabary (strTmp, 0))) || iIndex2 == -1) {
iIndex1 = FindPYFAIndex (strSP, False);
if (iIndex1 != -1)
strcpy (strQP, strSP);
}
}
int GetSPIndexQP_S (char *str)
{
int i;
i = 0;
while (SPMap_S.strQP) {
if (!strcmp (str, SPMap_S.strQP))
return i;
i++;
}
return -1;
}
int GetSPIndexQP_C (char *str)
{
int i;
i = 0;
while (SPMap_C.strQP) {
if (!strcmp (str, SPMap_C.strQP))
return i;
i++;
}
return -1;
}
int GetSPIndexJP_S (char c)
{
int i;
i = 0;
while (SPMap_S.strQP) {
if (c == SPMap_S.cJP)
return i;
i++;
}
return -1;
}
int GetSPIndexJP_C (char c, int iStart)
{
int i;
i = iStart;
while (SPMap_C.strQP) {
if (c == SPMap_C.cJP)
return i;
i++;
}
return -1;
}
void SwitchSP (void)
{
bSP = !bSP;
DisplayMainWindow ();
if (bSP)
LoadSPData ();
} 我只是改了键位,别的看不懂,未动。
现在,当我用双拼的时候,并不依我改变的键位出字,还是老样子。
页:
[1]