A macOS input method that replicates the native input experience — a
system-look candidate window, built-in input methods (currently Array 行列),
and user extension through external JavaScript engines and drop-in .cin
tables.
The JavaScript engine contract is cross-platform: the same engine folder
runs unmodified on the Linux host, a fcitx5 addon in fcitx5/.
macos/— the macOS input method: InputMethodKit host, candidate window, Settings UI, and build systemfcitx5/— the Linux input method: fcitx5 addon, QuickJS engine host, and build systemengines/— cross-platform JavaScript engines and the engine contract (README.md, mirrored in TypeScript byutils/MacishType.d.ts)runtime/— the JavaScript runtime bootstrap every host loads before an enginescripts/— the shared external-resources pipeline;make prepareon either platform downloads the pinned data tables intotables/at the repo root (gitignored)artwork/— archival originals of the app icon, kept for reference
- Installing or developing on macOS:
macos/README.md - Installing or developing on Linux:
fcitx5/README.md(note:fcitx5/needs the quickjs-ng submodule — clone with--recurse-submodules) - Writing an engine:
engines/README.md
Data tables downloaded and bundled by make prepare (each upstream's license, if any, ships alongside its data):
- Associated-phrase and per-character frequency tables — derived from the phrase corpus of McBopomofo, under its MIT License.
- Symbol-name table — derived from Unicode CLDR annotations, under the Unicode License.
- Array30 code tables — derived from gontera/array30, under its license for use by third-party input methods.
See LICENSE.