fcitx-remote-for-windows
fcitx-remote-for-windows copied to clipboard
A fake fcitx-remote for Windows
#+TITLE: fcitx-remote-for-windows
This is a fake =fcitx-remote= for Windows so that it can be used by [[https://github.com/cute-jumper/fcitx.el][fcitx.el]]. Inspired by [[https://github.com/CodeFalling/fcitx-remote-for-osx/][fcitx-remote-for-osx]].
For Vim users: This program might also be able to be used by =fcitx.vim=. I haven't tested it and I probably won't since I don't use Vim myself. If you're interested, help me out by submitting PRs or reporting issues.
-
Build Instructions ** Build by Yourself You can change the key combination to toggle the input method if you build the program by yourself.
In current code, =ALT+SHIFT= is set as the default key combination to toggle the input method.
This project is built from Visual Studio 2013. Import the project into Visual Studio and build the executable file.
** Use pre-built releases You can download the pre-built releases in the GitHub project homepage. Two versions available:
- Use =ALT+SHIFT= as the toggle key: [[https://github.com/cute-jumper/fcitx-remote-for-windows/releases/download/alt-shift/fcitx-remote.exe][download link]]
- Use =WIN+SPACE= as the toggle key: [[https://github.com/cute-jumper/fcitx-remote-for-windows/releases/download/win-space/fcitx-remote.exe][download link]]
Choose the one that fits you.
-
Windows Setup This program toggles the input method by simulating =ALT+SHIFT= or =WIN+SPACE= keys, which means you need to make sure you can use =ALT+SHIFT= or =WIN+SPACE= to switch between English and Chinese input method.
-
Emacs Setup If you're using =WIN+SPACE= to toggle the input method, add the following settings to your =init.el= so that =WIN+SPACE= can be handled by the Windows instead of Emacs:
#+BEGIN_SRC elisp (setq w32-pass-lwindow-to-system nil) (setq w32-lwindow-modifier 'super) #+END_SRC
Also, make sure =fcitx-remote= is in your =PATH= and =exec-path=. If not, use the following code in your =init.el=:
#+BEGIN_SRC elisp (let ((fcitx-path "C:/path/to/fcitx-remote")) (setenv "PATH" (concat fcitx-path ";" (getenv "PATH"))) (add-to-list 'exec-path fcitx-path)) #+END_SRC
-
Problems Currently this program works great, but still has some minor problems:
- =SendInput= can't guarantee the keyboard input sequence it has sent to be processed before it returns. In some sense, it is not fully /synchronized/ (please correct me if I'm wrong). Therefore, sometimes if you're typing really fast, the input method may not be closed before your next input. I noticed this when I tested the =prefix-keys= feature of =fcitx.el=.
- =ALT+SHIFT= or =WIN+SPACE= is not configurable right now.
-
TODO TODO
- Better implementation instead of using =SendInput=.
- Make the toggle key (=ALT+SHIFT= or =WIN+SPACE=) configurable.
- Support more command line options. Currently only =-c= and =-o= are supported. =fcitx-remote= will print the status in all the other cases. The current approach is already enough to make =fcitx.el= work properly.
- Check Vim plugin compatibility: help needed, since I don't use Vim myself.