guides

Text Expander for Chinese, Japanese & Korean (CJK + IME)

chinesejapanesekoreancjkimetext-expanderkeyboardnon-latin
Share:

Text Expander for Chinese, Japanese & Korean (CJK)

Quick answer: Chinese, Japanese, and Korean are typed through an Input Method Editor (IME) — you type phonetic or shape-based keystrokes that compose into characters before they land in the text field. As-you-type (inline) expanders watch the application keystroke stream, which sees nothing useful while text is still in the IME's composition buffer, so inline expansion cannot fire reliably for CJK. Lightning Assist detects CJK input and automatically switches to Hotkey Mode: you type your snippet's abbreviation, press a configured shortcut, and it expands — on Windows, macOS, and Linux. This is an input-architecture constraint, not a bug, and it's the same reason most text expanders quietly do nothing on a Chinese or Japanese keyboard.

If you've tried a text expander with a CJK keyboard and it "just didn't do anything," this guide explains exactly why, and how to get reliable expansion.

Why CJK Is Different: the IME Composition Buffer

On a Latin keyboard, what you press is what lands in the text field. On a CJK keyboard there's an extra stage in between — the IME:

  • Chinese: you type Pinyin (e.g. nihao) or a shape code (Wubi, Cangjie), the IME shows candidate characters, and you pick one — 你好 — which is what finally appears.
  • Japanese: you type romaji (konnichiwa) → the IME converts to kana (こんにちは) → optionally to kanji, then you commit.
  • Korean: Hangul jamo are composed into syllable blocks (안녕하세요) as you type.

Until you commit, that text lives in the IME's composition buffer and has not been delivered to the application. A text expander that watches the application-level keystroke stream sees the raw phonetic keys, not the composed characters, and often nothing at all during composition. There is no reliable way to fire inline expansion through an IME — this is a fundamental constraint of how CJK input works, the same on every operating system.

This is exactly why generic expanders fail on CJK. It's a documented, unresolved problem in popular tools: the open-source expander espanso, for example, has a long-standing open issue where Chinese-character triggers typed through the macOS Chinese IME simply never fire, while English triggers on the same machine work fine.

How Lightning Assist Handles CJK: Hotkey Mode

Instead of fighting the IME, Lightning Assist detects CJK input and routes it to Hotkey Mode automatically — no configuration:

  1. You type your snippet's abbreviation (an ASCII abbreviation, or committed CJK text — whatever you set the trigger to).
  2. You press your configured global hotkey.
  3. Lightning Assist reads the finished text and replaces it with the full expansion.

Because the expansion is triggered after text is committed — by a deliberate shortcut, not by intercepting composition — it works no matter how your IME composes characters, and it works in any application: browsers, chat apps, Word, terminals, IDEs. You set the hotkey once, and every CJK snippet uses it.

The app also seeds a native example greeting per language when it detects your layout, so onboarding shows you something you can actually type:

Language Native greeting demo
Chinese (简体/繁體) 你好
Japanese こんにちは
Korean 안녕하세요

Chinese (Simplified & Traditional)

Whether you type with Pinyin, Wubi, Cangjie, or Zhuyin/Bopomofo, the composition-buffer problem is the same, so Chinese uses Hotkey Mode. Create your trigger — a short abbreviation or a committed Chinese phrase — type it, and press your hotkey. Lightning Assist stores and expands full Unicode, so your expansions can be any mix of 汉字, punctuation, emoji, and Latin text.

A practical setup: keep triggers short and easy to type between IME commits (a two- or three-letter ASCII abbreviation like zn is often the least friction), and let the expansion carry the long Chinese content.

Japanese

Japanese mixes hiragana, katakana, and kanji through romaji-kana-kanji conversion. Because the conversion step lives in the IME, inline detection isn't reliable — Japanese uses Hotkey Mode. Your triggers and expansions can be any combination of かな, 漢字, and Latin, and the expansion fires the instant you press your hotkey after typing the trigger.

Korean

Hangul is composed from jamo into syllable blocks as you type, again inside the IME. Korean uses Hotkey Mode: type your trigger, press the shortcut, and the snippet — 한글, Latin, or mixed — expands in place.

Setting Up CJK Snippets

Step 1 — Install. Try Lightning Assist free for 14 days — no credit card. Native on Windows, macOS, and Linux.

Step 2 — Set your expansion hotkey. In settings, choose the shortcut you'll press to expand a snippet. You set it once; it applies to every snippet.

Step 3 — Create your triggers. Add your most-used phrases. Keep the trigger short and distinctive. It can be an ASCII abbreviation (fast to type without switching out of your IME) or committed CJK text — your choice.

Step 4 — Type the trigger, then press your hotkey. In any app, type the trigger and press the shortcut. The snippet replaces it instantly.

Comparing Text Expander Options for CJK

Lightning Assist TextExpander Espanso
Reliable CJK (Chinese/Japanese/Korean) expansion Yes — auto-detects IME input, routes to Hotkey Mode Not documented for desktop CJK trigger behavior Broken — open issue: Chinese IME triggers don't fire
Automatic IME-aware mode routing Yes No No (manual YAML)
Windows Yes Yes Yes
macOS Yes Yes Yes
Linux Yes No Yes
Full Unicode snippet content Yes Yes Yes
Voice-to-text (incl. CJK) Yes (AI Credits) No No
AI writing commands Yes (AI Credits) No No

TextExpander has no native Linux app and does not document CJK trigger behavior for desktop. Espanso is free and cross-platform but has an open, unresolved issue where Chinese-character triggers via the IME don't fire, and it has no automatic per-keyboard mode routing — everything is configured by hand in YAML. Lightning Assist is the one that detects IME input and switches to the mode that actually works, across all three operating systems.

Voice Typing in Chinese, Japanese & Korean

If snippets aren't enough, Lightning Assist also includes push-to-talk voice-to-text: hold a hotkey, speak, and your words are typed into the active app. The transcription is multilingual and handles Chinese, Japanese, and Korean, so you can dictate instead of composing through the IME when it's faster. Voice mode is independent of keyboard layout and works even on the free tier (AI Speech features use AI Credits, purchased separately).

Pricing

Lightning Assist Premium is $5.99/month for unlimited snippets, folders, and team sharing, with a 14-day free trial and no credit card required. Promo code LIFETIME50 locks in $2.99/month. See all plan details.

AI features (AI Chat, AI Commands, AI Enhance) require Premium and consume AI Credits purchased separately. Push-to-talk voice-to-text (AI Speech) works on the free tier too, using AI Credits.

Frequently Asked Questions

Why doesn't inline (as-you-type) expansion work with my Chinese/Japanese/Korean IME?

Because your text is still in the IME's composition buffer while you type — it hasn't been delivered to the application yet, so an as-you-type engine can't read it reliably. Rather than fire unpredictably, Lightning Assist uses Hotkey Mode for CJK: you type the trigger and press a shortcut to expand it. This works consistently across every IME and application.

Can my triggers and expansions be in Chinese/Japanese/Korean characters?

Yes. Lightning Assist supports full Unicode in both the trigger and the expansion, so you can use 汉字, かな/漢字, or 한글 freely — mixed with Latin, punctuation, and emoji. Many users still prefer a short ASCII abbreviation as the trigger because it's quick to type without leaving the IME.

Does it work in every app — chat, browser, IDE, terminal?

Yes. Lightning Assist is a native desktop app that operates at the OS level, so expansion works in every text field in every application, not just a browser. It is not a browser extension.

Does Lightning Assist detect that I'm using a CJK keyboard automatically?

Yes. It reads your active input source locally and switches to Hotkey Mode for CJK on its own — there's nothing to configure beyond choosing your hotkey once.

Is there a free trial?

Yes — 14 days, no credit card required. Download here.

Related Guides

Sources