Re: 请问如何让按 / - + = 保持英文半角符号

0 views
Skip to first unread message

Jiahua Huang

unread,
Sep 14, 2008, 5:31:25 AM9/14/08
to ibus-user
On 9/14/08, Huahua <jhuang...@gmail.com> wrote:
> 请问 ibus 能不能让中文状态下
> 按 / - + = 输入英文半角符号,
> 而不是全角的 / - + =
>
> 谢谢

现在 ibus 切换到半角后,是所有字符都变成半角,

而我想要 fcitx 那种 / - + = 是半角,
同时 ,。?" " 、 这些中文标点是全角


谢谢

Huahua

unread,
Sep 14, 2008, 5:28:25 AM9/14/08
to ibus-user

Huang Peng

unread,
Sep 14, 2008, 9:26:19 AM9/14/08
to ibus...@googlegroups.com


2008/9/14 Jiahua Huang <jhuang...@gmail.com>

半角自然符号都是半角,你所说的情况比较特殊,如果实现可能会引起混乱。

Jiahua Huang

unread,
Sep 14, 2008, 10:24:36 AM9/14/08
to ibus...@googlegroups.com
On 9/14/08, Huang Peng <shawn....@gmail.com> wrote:
>
> 半角自然符号都是半角,你所说的情况比较特殊,如果实现可能会引起混乱。
>

主要是因为写中文的时候,
/-+= 多需要的都是半角符号,
而 ,。?《》 这些需要的是全角符号。

所以觉得 fcitx 默认在全角时例外 /-+= 的做法比较方便。


我自己 ibus-pinyin 用这个脏的修改

diff --git a/engine/pinyin.py b/engine/pinyin.py
index 3e7e203..2ccdd72 100644
--- a/engine/pinyin.py
+++ b/engine/pinyin.py
@@ -558,6 +558,9 @@ class PinYinEngine(ibus.EngineBase):
if not self.__is_input_english():
return u"\u300b"

+ elif c in u"/-+=":
+ return c
+
return ibus.unichar_half_to_full(c)

def __english_mode_process_key_event(self, key):

Huang Peng

unread,
Sep 14, 2008, 10:42:46 AM9/14/08
to ibus...@googlegroups.com


2008/9/14 Jiahua Huang <jhuang...@gmail.com>

On 9/14/08, Huang Peng <shawn....@gmail.com> wrote:
>
> 半角自然符号都是半角,你所说的情况比较特殊,如果实现可能会引起混乱。
>

主要是因为写中文的时候,
/-+= 多需要的都是半角符号,
而 ,。?《》 这些需要的是全角符号。

所以觉得 fcitx 默认在全角时例外 /-+= 的做法比较方便。


我自己 ibus-pinyin 用这个脏的修改

diff --git a/engine/pinyin.py b/engine/pinyin.py
index 3e7e203..2ccdd72 100644
--- a/engine/pinyin.py
+++ b/engine/pinyin.py
@@ -558,6 +558,9 @@ class PinYinEngine(ibus.EngineBase):
            if not self.__is_input_english():
                return u"\u300b"

+        elif c in u"/-+=":
+            return c
+

我觉得如果需要改的话,也要通过增加配置项目来控制。如果简单的改为"/-+="都用半角,是必习惯输入全角"/-+="会有意见。希望你能提供增加配置项目来控制的patch。 :)



Jiahua Huang

unread,
Sep 14, 2008, 1:15:31 PM9/14/08
to ibus...@googlegroups.com
On 9/14/08, Huang Peng <shawn....@gmail.com> wrote:
> 我觉得如果需要改的话,也要通过增加配置项目来控制。如果简单的改为"/-+="都用半角,是必习惯输入全角"/-+="会有意见。希望你能提供增加配置项目来控制的patch。
> :)
>

赏月回来,交 patch ~

Screenshot-拼音设置.png
ibus-pinyin-half_puncts.patch

Huang Peng

unread,
Sep 14, 2008, 2:57:49 PM9/14/08
to ibus...@googlegroups.com


2008/9/15 Jiahua Huang <jhuang...@gmail.com>
多谢你的patch,已经提交到库里了,我在你的patch上稍微做了一点儿修改,把默认值由"/-+="改为了"+-*/=%"。
请大家更新测试一下啊吧。

Jiahua Huang

unread,
Sep 14, 2008, 8:09:32 PM9/14/08
to ibus...@googlegroups.com
On 9/15/08, Huang Peng <shawn....@gmail.com> wrote:
> 把默认值由"/-+="改为了"+-*/=%"。
> 请大家更新测试一下啊吧。
>

谢谢

跑题下,
有些奇怪我这儿 setup/setup.glade 的 diff 会那么长那么诡异,
是 glade-3 版本差异的原因,
还是说 Huang Peng 手工编辑的 .glade 呀?

Jiahua Huang

unread,
Sep 14, 2008, 8:37:01 PM9/14/08
to ibus...@googlegroups.com
orz,昨晚回来迷迷糊糊地敲错字……


diff --git a/engine/pinyin.py b/engine/pinyin.py
index e05d06a..813eaeb 100644
--- a/engine/pinyin.py
+++ b/engine/pinyin.py
@@ -1099,9 +1099,9 @@ class PinYinEngine(ibus.EngineBase):
elif key == "/engine/PinYin/AutoCommit":
PinYinEngine.__auto_commit = \
bus.config_get_value("/engine/PinYin/AutoCommit",
PinYinEngine.__auto_commit)
- elif key == "/engine/PinYin/HalfPnctuations":
+ elif key == "/engine/PinYin/HalfPunctuations":
PinYinEngine.__half_puncts = \
-
bus.config_get_value("/engine/PinYin/HalfPnctuations",
PinYinEngine.__half_puncts)
+
bus.config_get_value("/engine/PinYin/HalfPunctuations",
PinYinEngine.__half_puncts)
else:
print "Unknow key(%s)" % key

nEO (a.k.a. gentoo.cn)

unread,
Sep 14, 2008, 9:28:11 PM9/14/08
to ibus...@googlegroups.com
2008/9/15 Jiahua Huang <jhuang...@gmail.com>:

我也遇到了这个问题, 很诡异, 给scim-python做的patch也是变了那么多, 似乎是glade版本的问题.
--
I'm the one, powered by nEO
-----------------------------------------
http://loveumyriad.72pines.com

Huang Peng

unread,
Sep 14, 2008, 9:43:34 PM9/14/08
to ibus...@googlegroups.com
可能是glade版本的问题。我用的是glade 3。

2008/9/15 nEO (a.k.a. gentoo.cn) <gentoo.cn@gmail.com>

Jiahua Huang

unread,
Sep 15, 2008, 12:08:09 AM9/15/08
to ibus...@googlegroups.com

恩,我昨晚敲错了 HalfPunctuations 和 HalfPnctuations

在 CONFIG_VALUE_CHANGED()里是
"/engine/PinYin/HalfPnctuations"
而 CONFIG_RELOADED() 里是
"/engine/PinYin/HalfPunctuations"


两个不一致

Huang Peng

unread,
Sep 15, 2008, 12:22:10 AM9/15/08
to ibus...@googlegroups.com
已经修好了。 :)

Jiahua Huang

unread,
Sep 15, 2008, 2:35:56 AM9/15/08
to ibus...@googlegroups.com
On 9/15/08, Huang Peng <shawn....@gmail.com> wrote:
> 已经修好了。 :)
>

赞~

Reply all
Reply to author
Forward
0 new messages