fcitx / fcitx5-rime

223 stars 22 forks source link

组合键Meta没有被识别?(Meta键是指Win键或Command键) #12

Closed sxqsfun closed 4 years ago

sxqsfun commented 4 years ago

在 Idea和emacs编辑器 中绑定了 Meta+Shift+j 快捷键。rime 没有识别Meta,只识别了 Shift+j,输出了 大写的 J。 更改快捷键为 Meta + j 后,只识别了 j,输出 小写 j。 我尝试切换成其他输入法,快捷键能正常使用。 Ctrl 和 Alt 都是正常的,只有 Meta键不能识别。(Meta键指Win键或Command键)

wengxt commented 4 years ago

正相反,反而是正常識別了。rime 自己把它處理成輸入了。建議彙報給 rime。

證據 default.custom.yaml :

patch:
  switcher/hotkeys:
    - Super+grave

按下 super grave 就可以觸發這個菜單,證明 rime 正確識別了這個按鍵。

sxqsfun commented 4 years ago

我查到 ibus-rime 有同样的issues,且已经有修复。(ignore super modifier) 我参照它修改的代码,找到并注释 fcitx5-rime/src/rimestate.cpp 的第 63和65行。重新编译后 Super快捷键(即Win或Command键)能正常使用了。 因为我不会c++,我并不知道会不会对其他功能有影响……

    if (states.test(KeyState::Super)) {
       // states.unset(KeyState::Super);
        // IBus uses virtual super mask.
       // states |= KeyState::Super2;
    }
wengxt commented 4 years ago

你这样会导致无法识别在 rime 里面配置的 super。

sxqsfun commented 4 years ago

今天重装了系统(manjaro+kde),发现组合键Super(即Win或Command键)已经可以正常使用了(应该是新版本修复了这个问题)。非常感谢你的回答🙏🏻️……

-------------2021.03.23 更新----------------------------- 今天切换到小鹤双拼方案,还是出现了组合键不识别的问题。经排查,和输入方案中配置的 engine 有关。 注释掉 recognizer 后,组合键能正常使用。

  engine:
    processors:
      - ascii_composer
      #- recognizer
      ......