| font | ||
| gtk | ||
| map | ||
| xim | ||
| .gitignore | ||
| dat.h | ||
| dict.c | ||
| fn.h | ||
| font.c | ||
| hash.c | ||
| ipc.h | ||
| main.c | ||
| Makefile | ||
| README.md | ||
| run.sh | ||
| srv.c | ||
| stb_truetype.h | ||
| str.c | ||
| strans.c | ||
| win.c | ||
strans
An input method daemon for CJK text entry on X11.
Inspired by 9front's ktrans. Threads communicate via CSP channels.
Dependencies
- plan9port
- gtk+-3.0 (optional, for GTK IM module)
Build
make
cd xim && make # XIM adapter
cd gtk && make docker && make install # GTK IM module
Run
./strans map font &
For XIM apps:
./xim/strans-xim &
XMODIFIERS=@im=strans xterm
For GTK apps:
GTK_IM_MODULE=strans gedit
Usage
Switch input modes with Ctrl + key:
N Hiragana
K Katakana
S Hangul
T English
V Vietnamese (Telex)
E Emoji
Type romanized input. Select candidates with 1-9 or arrow keys. Tab or Enter to commit.
Architecture
Four threads communicate via CSP channels:
- imthread: keystroke processing, transliteration
- dictthread: dictionary lookup
- drawthread: preedit window rendering
- srvthread: IPC via unix socket
Adapters (strans-xim, im-strans.so) bridge X11/GTK events.
Files
strans.c input method engine
dict.c dictionary queries
win.c xcb window management
font.c truetype rendering (stb_truetype)
map/ transliteration tables
font/ bundled CJK fonts