claude-code-vietnamese-fix
v2.0.1
Published
Fix Vietnamese IME input (Unikey/Telex) for Claude Code CLI — supports npm and native binary
Maintainers
Readme
claude-code-vietnamese-fix
Fix Vietnamese input (Telex/VNI) for Claude Code CLI — supports npm and native binary (WinGet/direct download).
The Problem
Vietnamese users cannot type in Claude Code CLI. Characters get duplicated or garbled.
Expected: tôi → Actual: toôooi
Vietnamese IME (Unikey, OpenKey, EVKey) embeds \x7f (DEL) chars in input strings. Claude Code's input handler inserts the entire string as-is, causing duplicate/garbled output.
Quick Start
npx claude-code-vietnamese-fixThen restart Claude Code.
Other install options
# Install globally
npm install -g claude-code-vietnamese-fix
claude-code-vietnamese-fix
# Clone and run
git clone https://github.com/tvtdev94/claude-code-vietnamese-fix.git
cd claude-code-vietnamese-fix
node patch-vietnamese-ime.jsHow it works
The patch intercepts the existing \x7f detection point in Claude Code's input handler. It strips \x7f chars, inserts remaining chars one-by-one into the cursor state, then applies the final state atomically.
Works for both:
- npm install — patches
cli.jsdirectly - Native binary (WinGet, direct download) — patches the embedded JS inside the Bun binary
Commands
| Command | Description |
|---------|-------------|
| npx claude-code-vietnamese-fix | Auto-detect and patch (creates backup) |
| npx claude-code-vietnamese-fix --status | Show patch/backup/hook status |
| npx claude-code-vietnamese-fix --restore | Restore original from backup |
| npx claude-code-vietnamese-fix --silent | Patch silently (no output if already patched) |
| npx claude-code-vietnamese-fix --dry-run | Test patch without saving |
| npx claude-code-vietnamese-fix -f <path> | Specify target file manually |
| npx claude-code-vietnamese-fix -o <path> | Write patched output to a new file |
Auto-patch After Updates
Claude Code updates overwrite the patch. Add a SessionStart hook to auto-patch on every session:
~/.claude/settings.json:
{
"hooks": {
"SessionStart": [
{
"matcher": "startup|resume|clear|compact",
"hooks": [
{
"type": "command",
"command": "npx claude-code-vietnamese-fix --silent"
}
]
}
]
}
}The script is idempotent — safe to run on every session start.
Restore
npx claude-code-vietnamese-fix --restoreCompatibility
| Item | Status | |------|--------| | Windows 10/11 | ✅ | | macOS | ✅ | | Linux | ✅ | | Unikey (Telex/VNI/VIQR) | ✅ | | OpenKey / EVKey | ✅ | | npm global install | ✅ | | NVM for Windows | ✅ | | Bun global install | ✅ | | Native binary (WinGet) | ✅ | | Native binary (macOS/Linux) | ✅ | | Claude Code v2.x | ✅ |
Related
- Issue #3961 — Unicode Input Handling Fails for Vietnamese Characters
- Issue #7989 — Error typing Vietnamese Telex
- Issue #10429 — Vietnamese Input Not Working
