libpinyin / ibus-libpinyin

GNU General Public License v3.0
627 stars 90 forks source link

Fix space #382

Closed fingera closed 1 year ago

fingera commented 2 years ago

这里什么都没做应该返回FALSE吧? 如果是TRUE导致m_prev_pressed_key等于IBUS_VoidSymbol 对于习惯用Ctrl+space来切换输入法的 中文切换英文的时候有输入的时候无法成功

        if (m_prev_pressed_key == keyval) {
            if (PinyinConfig::instance ().mainSwitch () == accel) {
                triggered = TRUE;
            }
        }
epico commented 2 years ago

请问这个 patch 修正了哪个 bug?

fingera commented 2 years ago

请问这个 patch 修正了哪个 bug?

环境 UBUNTU最新版本 切换输入法设置 Control + Space (这是很多人的习惯)

  1. 切换为中文开始输入一些文字但是没有提交
  2. 突然发现当前是想输入英文的 然后直接切换切换不了

我昨天晚上分析了一下,理解可能没有到位 PhoneticEditor::processSpace 的时候因为有控制键按下了 所以返回TRUE了(但是什么都没干也没commit?) 会导致 m_prev_pressed_key 等于 IBUS_VoidSymbol 处理快捷键的时候会判断 m_prev_pressed_key == keyval 按下SPACE这里不会触发 所以没有正确产生切换

epico commented 2 years ago

请问您用的是哪个桌面环境啊?我在 GNOME 里边测试正常。

fingera commented 2 years ago

就是UBUNTU默认的GNOME, 但是pinyin版本也是他自带的 难道最新版本没有这个问题 设置切换输入法是 CTRL + SPACE 吗? 先切换为拼音输入 然后打几个字留在框里 然后切换英文 如果没有字的话可能if (!m_text) 这里返回FALSE了

epico commented 2 years ago

请在 gnome-control-center 中设置 ibus 切换快捷键,ibus 的切换快捷键优先级比 ibus-libpinyin 优先级要高,修改 ibus-libpinyin 代码好像不会影响 ibus 的切换快捷键。

我在 Fedora 36 的测试结果是这样的,如果 Ubuntu 的测试结果不一样,欢迎讨论。

fingera commented 1 year ago

image 只能通过这里设置吧?

大概就是刚开始装可能没注意装成英文了,然后再安装的pinyin

你可以在UBUNTU试试毕竟用的人多一点

你那里为啥要返回TRUE哈,和上一句一样返回FALSE不好吗,毕竟确实没有实际做提交

fingera commented 1 year ago

知道用哪个了,居然有两个设置快捷键的地方

fingera commented 1 year ago

@epico 用ibus的切换 切换的时候已经输入的会丢弃 :<

epico commented 1 year ago

是的,目前 ibus-libpinyin 并不支持在切换输入法时,提交当前输入的内容。

fingera commented 1 year ago

用我截图的切换看起来可以将字母提交 通过控制中心里的切换不可以