fcitx / fcitx5

maybe a new fcitx.
1.59k stars 118 forks source link

Fcitx5 can't work in steam and dota2 #442

Closed cathaysia closed 2 years ago

cathaysia commented 2 years ago

Enverment: SDL_IM_MODULE=fcitx fedora 35

As the title said, fcitx5 can't work in steam and dota2, I search this question and find it seems this bug come from SDL2, so I open a issue: https://github.com/libsdl-org/SDL/issues/5124

Recently, a archlinux developer contact me for solve this bug. I used the system's libSDL2-2.0.so.0 instead of the ones that came with Steam. But it can't work still.

Then the friend point this maybe cause by fedora's packager, so he send me a binary and I use it do a test. But it still can not work.

So I am here to ask help of you. Did you have some suggestions about this?

wengxt commented 2 years ago

nothing work in steam, except big picture mode. 图片

as for dota2, it works here, though pop up position may not be correct. 图片 图片

wengxt commented 2 years ago

There was a bug in SDL2 that may prevent it from working properly (though the bug was originally introduced by me unfortunately) I fixed recently in SDL https://github.com/libsdl-org/SDL/pull/5056/commits/6e0db3159dcc9c55d8ed023a2fe62e80c607ca98

Also, I'm also aware that steam may not have up to date SDL, so I also tried to workaround the SDL bug in fcitx 5. https://github.com/fcitx/fcitx5/commit/1e7cf7e7c508d75e17966bd869ff50dcffa40852 As long as you're using fcitx 5.0.11+, you should be good.

cathaysia commented 2 years ago

I' using fcitx5 5.0.12, and I retest this. It works surely. But not so perfect. That means when I get into dota2, then press Ctrl+Shift, I can't using fcitx5 still, then I need switch to other program (such krunner), and switch to Chinese input method, then switch dota2.

One solution for me is using Ctrl + Space to enable fcitx5. But I don't know why I can't use Ctrl + Shift, which can work in other program.

wengxt commented 2 years ago

The issue is that SDL doesn't send key release event to input method. Pure modifier hotkey like Ctrl+Shift require key release event to work.

wengxt commented 2 years ago

I wrote a PR for SDL to fix it: https://github.com/libsdl-org/SDL/pull/5281 .