Code Monkey home page Code Monkey logo

Comments (17)

HollowMan6 avatar HollowMan6 commented on July 30, 2024 1

抱歉,对于1之前的承诺,因为我注意到在切换窗口调用_onWindowChanged()时,似乎可能是因为程序之间焦点的变化,即使强制调用显示指示框,还是会出现不稳定的情况,即指示器有时候会显示,有时候不显示,或者一闪而过。所以v76版只增加了启用指示器自动显示时延的功能,这个功能没添加。

对于2之前的承诺:#15 (comment) 自动维护对应单模式输入法的托盘指示字符,用于使用键盘布局时不提示,并增加相应功能开启选项。

from customize-ibus.

HollowMan6 avatar HollowMan6 commented on July 30, 2024
  1. 很好的想法,后续我可以增加一个选项仅当切换窗口时指示,配合仅当切换输入源指示使用就可以实现您说的目标了。另外增加一个启用指示器自动显示时延,防止频繁指示。

对于“当前活动窗口”的范围可以进一步缩小到“当前操作的输入框”的话,暂时不了解输入框相关API,不太清楚是否存在以及是否可以实现,后续有时间研究。

  1. 目前的话我认为如果用户自始至终如您提到的只使用zh 键盘布局(无输入法)打字,就没有必要将指示器功能开启了。一般用户的行为应该是切换到某个特定的输入法,然后改变输入状态,而且一般特定输入法都会提供英文输入这种情况,那么这种情况应该就能正确指示了。

如果按照您说的想法,将选项包含所有已经添加的输入法和布局,而且我认为这种情况下得是多选的形式,如果这样操作起来有些麻烦,似乎不够智能;而且现在IBus的GJS接口似乎只提供了获取输入法引擎的方法,未提供获取输入法内部输入状态的方法,所以您的想法目前来看无法实现。

  1. 没注意到这个现象,我这里都是正常的,以下是在chrome下使用ibus-libpinyin输入,和gedit下表现一样正常:
    Peek 2021-10-30 12-37
    其他程序也表现类似,不知道您是在什么程序中发现此异常的。

目前的话程序逻辑是只要是输入指针发生了移动(监听 IBus "set-cursor-location" 事件)时就会进行判断,如果当输入法面板打开时指示器就会关闭。您说的这种情况唯一的可能性就是您所述的程序在输入时没触发 IBus "set-cursor-location" 事件,这可能涉及到上游问题了。

from customize-ibus.

HollowMan6 avatar HollowMan6 commented on July 30, 2024

对于2,我注意到只要当托盘图标中显示的字符只是菜单中输入法列表每项右侧的字符时,一般都是单模式输入法 2021-10-30 13-27-06屏幕截图
所以后续根据GNOME源码 https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/main/js/ui/status/keyboard.js#L891 ,程序就可以自动维护对应单模式输入法的托盘指示字符,就可以正常判断是否是键盘布局了!

from customize-ibus.

wsxy162 avatar wsxy162 commented on July 30, 2024

第3点,我说的是 gedit 表现跟其他程序不一样。未启用“仅当输入英文时指示”选项,输入中文时,指示器没有弹出,但输入英文或空格时又出来了。
Peek 2021-10-30 23-31

from customize-ibus.

wsxy162 avatar wsxy162 commented on July 30, 2024

第1点,添加的“启用指示器自动显示时延”不好用。原本问题是,没有接换输入法、没有切换窗口时,同个指示状态不要频繁显示。但添加的这个延迟,会屏蔽掉延时期间指示状态发生变化的情况。个人认为这个选项没有解决问题,也没有其他使用场景,不应该添加进去。

from customize-ibus.

HollowMan6 avatar HollowMan6 commented on July 30, 2024

第3点,我说的是 gedit 表现跟其他程序不一样。未启用“仅当输入英文时指示”选项,输入中文时,指示器没有弹出,但输入空格时又出来了。 Peek 2021-10-30 23-31

是的,这就是正确表现,指示器的工作原理已经解释过,如果当输入法面板打开时指示器就会关闭。至于你说的gedit 表现跟其他程序不一样,不好意思我没看出来哪里有不一样。这是Chrome的:

GIF 2021-10-31 0-02-48

输入中文时,指示器没有弹出,这也符合常理,毕竟这时候已经能看到输入面板了,那肯定是输入中文了,不需要指示了。输入空格以及标点时时又出来,是因为这时候没有输入面板了。

from customize-ibus.

wsxy162 avatar wsxy162 commented on July 30, 2024

这是我在 gnome-terminal 上测试的表现,输入中文时也会不断弹出指示器:
Peek 2021-10-31 00-07

我只测试了一些程序,只有 gedit 表现不同。

from customize-ibus.

HollowMan6 avatar HollowMan6 commented on July 30, 2024

第1点,添加的“启用指示器自动显示时延”不好用。原本问题是,没有接换输入法、没有切换窗口时,同个指示状态不要频繁显示。但添加的这个延迟,会屏蔽掉延时期间指示状态发生变化的情况。

您说的但添加的这个延迟,会屏蔽掉延时期间指示状态发生变化的情况 ,我已经在程序中注明了 当输入源状态发生变化时会立刻显示,不受时延影响,抱歉前面回复的时候没和您说明。

之前所说的切换窗口时指示遇到了一些技术问题,如果可能的话会尽量解决。

from customize-ibus.

wsxy162 avatar wsxy162 commented on July 30, 2024

当输入源状态发生变化时会立刻显示,不受时延影响

我自己测试,不能实现这个功能。这里我一直切换输入法,但指示器弹不出来:

Peek 2021-10-31 00-18

from customize-ibus.

HollowMan6 avatar HollowMan6 commented on July 30, 2024

这是我在 gnome-terminal 上测试的表现,输入中文时也会不断弹出指示器: Peek 2021-10-31 00-07

我只测试了一些程序,只有 gedit 表现不同。

原来您说的是这个,这个的话我觉得有一种可能就是在gedit下输入法面板关闭的时候没有触发"set-cursor-location"事件,但是这种可能性比较低。

更有可能的原因就应该是同这里了 #15 (comment)
,应该是gedit的有关问题,可能是gedit在输入法面板输入完成时直接切换到他程序输入框本身,焦点切换问题导致指示器也因为失去焦点关闭了

from customize-ibus.

HollowMan6 avatar HollowMan6 commented on July 30, 2024

当输入源状态发生变化时会立刻显示,不受时延影响

我自己测试,不能实现这个功能。这里我一直接换输入法,但指示器弹不出来:

Peek 2021-10-31 00-18

您一般是用zh和ibus-libpinyin的中文是吧,刚刚看了一下确实是没考虑到这种使用情形。如果您一直在ibus-libpinyin下,使用Shift键直接切换,也可以输入英文的:)。

当然后面会加上这种情况,考虑同时监听ibus engine变化情况。

from customize-ibus.

wsxy162 avatar wsxy162 commented on July 30, 2024

是的,这就是正确表现,指示器的工作原理已经解释过,如果当输入法面板打开时指示器就会关闭。

这是正确表现的话,那反而 gedit 是表现正常的(我测试了 gnome-web 也是这个正常行为),我测试的其他程序:firefox、telegram-desktop、gnome-terminal、nautilus……就表现不正常,输入法模块不一致吗?

from customize-ibus.

HollowMan6 avatar HollowMan6 commented on July 30, 2024

是的,这就是正确表现,指示器的工作原理已经解释过,如果当输入法面板打开时指示器就会关闭。

这是正确表现的话,那反而 gedit 是表现正常的(我测试了 gnome-web 也是这个正常行为),我测试的其他程序:

不好意思,之前忽略了输入完成中文指示继续弹出的情况,理解有误。gedit应该是不正确的。

gedit不正确表现猜想刚刚已经回复: #15 (comment)
应该和输入法模块不一致无关。

from customize-ibus.

wsxy162 avatar wsxy162 commented on July 30, 2024

嗯,大家输入习惯和环境不同,很容易忽略一些情况。

from customize-ibus.

HollowMan6 avatar HollowMan6 commented on July 30, 2024

那今晚先这样了,我得去睡觉了,时间不早了,还有问题的话明天早上起床后回复。😀

from customize-ibus.

HollowMan6 avatar HollowMan6 commented on July 30, 2024

Peek 2021-10-31 12-28
v77 切换窗口和ibus engine时做到了立刻显示指示器,但是我注意到目前对于切换窗口立刻显示有一些小问题,但是没有太多影响使用:

  1. 当从其他窗口切换到gedit有的时候不会显示指示器,这应该和之前输入完成在gedit上中文指示不能继续弹出的情况类似。
  2. 再从1的情形切换到其他窗口(有可能,无法一直复现),输入字符时可能会有一次不遵循延迟出现,后面才会继续正常遵循延迟出现。

另外我还测试了在gedit下指示器出现那种情况是否因为是失去焦点关闭了,结果发现似乎与指示器失去焦点关闭无关,那应该是gedit或者ibus或者输入法的问题了,应该还是在gedit下输入法面板关闭的时候没有触发"set-cursor-location"事件,而没有触发的原因也可能是ibus与gedit焦点争夺的问题,当然以上只是推测,我并非gedit开发者,也有可能是其他原因。

另外之前忘说了,我决定不将zh加入英文输入法的托盘指示字符,因为zh也可以是注音输入(zhuyin(m17n)),这时候输入的并非英文。

如果您希望在您的输入习惯下正确定义英文输入,建议将zh替换为en(英语(美国))键盘布局来达到目的,谢谢!

from customize-ibus.

wsxy162 avatar wsxy162 commented on July 30, 2024

from customize-ibus.

Related Issues (16)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.