LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 714|回复: 4

Yuking及Tram兄,能解释一下fcitx中的一data structure

[复制链接]
发表于 2003-4-27 21:16:34 | 显示全部楼层 |阅读模式
我想把fcitx的快捷键XK_Control_L换成XK_Shift_R,因为Control对于Emac太重要了.

以经替换了了xim.c中的XK_Control_L和ControlMask,和keycode=37的地方. 现在可以使用Shift_R和Space开关输入法了,可是,发现这个Shift_R并不完全等同替换之前的Contrl_L
我该怎么进一步的修改,才能彻底让Shift_R替换Control_L ??
下面这个书局解构,没看明白怎么回事,老大能帮忙解释一下码,
这些数字是怎么个规律阿
谢谢,两位老大!!

/* ***********************************************************
* Data structures
* *********************************************************** */
enum KEY_STATE {
    KEY_NONE = 0,
    KEY_SHIFT_COMP = 1,
    KEY_CAPSLOCK = 2,
    KEY_CTRL_COMP = 4,
    KEY_ALT_COMP = 8,
    KEY_CTRL_ALT = 12,
    KEY_NUMLOCK = 16,
    KEY_SCROLLLOCK = 128
};
发表于 2003-4-27 22:58:57 | 显示全部楼层
这是一个枚举,后面加上的数字是为了区分不同控制键的组合。比如
ctrl+shift=5
不会和其他的键相混淆。
你改了什么地方?
/* Trigger Keys List */
static XIMTriggerKey Trigger_Keys[] = {
    {XK_space, ControlMask, ControlMask},
//    {XK_Shift_L, ControlMask, ControlMask},
    {0L, 0L, 0L}
};

/*
* 为了区分ctrl+shift
*/
static XIMTriggerKey Ctrl_Shift[] = {
    {XK_Shift_L, ControlMask, ControlMask},
    {0L, 0L, 0L}
};
如果是改打开输入法的快捷键,应该是改这里。在xim.c上面。我还是不太懂,呵呵。
 楼主| 发表于 2003-4-27 23:21:34 | 显示全部楼层
谢谢斑竹!!
是啊这两个地方我都改了,并且里面用到的两个判断键码control_L的地方也改成shift_R的了,//基本上可以用了,就是原来的按control快速切换中英文, 修改之后的 Shift_R似乎不能完成.基本能用就行,有时间,再改它
呵呵,,谢谢老大
发表于 2003-4-28 10:59:55 | 显示全部楼层

--

fcitx在键盘控制上写得比较乱,用ctrl切换的功能是单独处理的,在xim.c中的MyForwardEventHandler函数中
 楼主| 发表于 2003-4-28 11:22:39 | 显示全部楼层
好的,辛苦了,老大.
BOW!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表