Some days ago, I added a little option to Fcitx, which is called: “Use first input method as inactive state”. What does that mean? Actually that’s how I make Fcitx more like a system input method framework.
Fcitx have three state in the past, called: “Close”, “Inactive”, and “Active”. “Close” is the default state of Fcitx, which means Fcitx will not RECEIVE any key from program, in spite of the trigger key (Which by default is CTRL + SPACE). When trigger key is used, then Fcitx will goes to Active state, so it will receive key from program, and you can compose with your favorite input method. You can switch betwen inactive and active with switch key, which by default is “Left Ctrl”.
When “Use first input method as inactive state” is enabled, close state will be never used (in spite of some special case, like fcitx-fbterm, since fbterm must totally control the state change.), and you can assign your first input method to inactive state, and trigger key and switch key will have the same behavior.
This option will become useful with fcitx-keyboard. Since fcitx-keyboard’s function can replace the “Close” State. For example, if you are simply a Chinese Pinyin User, you can add “English (US)” and Pinyin to your input method list. Then you can just use it as before, but you can also use the extra feature provides by fcitx-keyboard easily. You don’t need to bother extra keyboard configuration, just gives everything to fcitx.
Another benefit is you can use some special switch key as your trigger key. Due to some implement limitation, you cannot configure a hotkey contains only combination keys (ctrl, alt shift).
I just cannot make this option by default right now, since Fcitx is not default component on most system, enable it by default but without proper configuration, it might take more effort to make things work. But I recommend you to give it a try. Or if any distribution interested in using fcitx as a default system component, you can do some specific patch to “config.desc” to reset the default value.