Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cute-jumper/fcitx-remote-for-windows

A fake fcitx-remote for Windows
https://github.com/cute-jumper/fcitx-remote-for-windows

Last synced: about 2 months ago
JSON representation

A fake fcitx-remote for Windows

Awesome Lists containing this project

README

        

#+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:
1. =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=.
2. =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.