Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

反馈:指示器行为 #15

Closed
wsxy162 opened this issue Oct 29, 2021 · 17 comments
Closed

反馈:指示器行为 #15

wsxy162 opened this issue Oct 29, 2021 · 17 comments
Assignees
Labels
enhancement New feature or request v76 https://github.com/openSUSE/Customize-IBus/releases/tag/v76 v77 https://github.com/openSUSE/Customize-IBus/releases/tag/v77

Comments

@wsxy162
Copy link

wsxy162 commented Oct 29, 2021

  1. 现有的指示器(扩展版本 75)会在聚焦点变化时立刻显示,在进行连续键盘打字或者在终端的命令行自动滚屏的情况下,这个指示器就会频繁跳出。

我的想法是,如果光标焦点一直存在于当前活动窗口内,在未切换输入法时就不要继续弹出指示器,或者设定一个弹出静默期。如果更细致的话,“当前活动窗口”的范围可以进一步缩小到“当前操作的输入框”。

  1. “仅当输入英文时指示”这个选项,我使用 zh 键盘布局(无输入法)打字时不会定义为英文输入,我想 CJK 的键盘布局在不使用输入法时输入的都是英文。而且限定在英文的选项用途不够广泛,可以的话把英文改成可选项,选项包含所有已经添加的输入法和布局。

  2. 指示器在 gedit 上的表现跟其他程序上的不同。如果输入法已经切换到中文(ibus-libpinyin)上,在其他程序上打字会一直弹出指示器,在 gedit 上打字就不会弹出。

@wsxy162 wsxy162 added the enhancement New feature or request label Oct 29, 2021
@HollowMan6
Copy link
Member

HollowMan6 commented Oct 30, 2021

  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" 事件,这可能涉及到上游问题了。

@HollowMan6
Copy link
Member

HollowMan6 commented Oct 30, 2021

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

HollowMan6 added a commit that referenced this issue Oct 30, 2021
and a show delay for input source indicator. #15

Signed-off-by: Hollow Man <hollowman@hollowman.ml>
HollowMan6 added a commit that referenced this issue Oct 30, 2021
using single mode IME. #15

Signed-off-by: Hollow Man <hollowman@hollowman.ml>
@HollowMan6
Copy link
Member

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

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

@HollowMan6 HollowMan6 added the v76 https://github.com/openSUSE/Customize-IBus/releases/tag/v76 label Oct 30, 2021
@wsxy162
Copy link
Author

wsxy162 commented Oct 30, 2021

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

@wsxy162
Copy link
Author

wsxy162 commented Oct 30, 2021

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

@HollowMan6
Copy link
Member

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

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

GIF 2021-10-31 0-02-48

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

@wsxy162
Copy link
Author

wsxy162 commented Oct 30, 2021

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

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

@HollowMan6
Copy link
Member

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

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

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

@wsxy162
Copy link
Author

wsxy162 commented Oct 30, 2021

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

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

Peek 2021-10-31 00-18

@HollowMan6
Copy link
Member

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

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

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

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

@HollowMan6
Copy link
Member

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

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

Peek 2021-10-31 00-18

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

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

@wsxy162
Copy link
Author

wsxy162 commented Oct 30, 2021

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

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

@HollowMan6
Copy link
Member

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

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

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

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

@wsxy162
Copy link
Author

wsxy162 commented Oct 30, 2021

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

@HollowMan6
Copy link
Member

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

@HollowMan6 HollowMan6 added the v77 https://github.com/openSUSE/Customize-IBus/releases/tag/v77 label Oct 31, 2021
@HollowMan6
Copy link
Member

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(英语(美国))键盘布局来达到目的,谢谢!

@wsxy162
Copy link
Author

wsxy162 commented Oct 31, 2021 via email

HollowMan6 referenced this issue Nov 6, 2021
…showing delay is enabled

Signed-off-by: Hollow Man <hollowman@hollowman.ml>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request v76 https://github.com/openSUSE/Customize-IBus/releases/tag/v76 v77 https://github.com/openSUSE/Customize-IBus/releases/tag/v77
Projects
None yet
Development

No branches or pull requests

2 participants