Telex · Simple Telex · VNI · VIQR
Đổi kiểu gõ tức thì. Hỗ trợ Quick Telex, w → ư, phím [ ] và kiểu đặt dấu cũ/mới.
Telex, Simple Telex, VNI và VIQR trên một lõi Rust nhỏ, thuần logic. Gõ thử bằng WASM trong trình duyệt, hoặc gọi API Python để tích hợp vào công cụ của bạn.
Engine chỉ giữ chuỗi phím thô của từ hiện tại rồi dựng lại từ đầu. Nhờ vậy dấu luôn đúng vị trí, kể cả khi gõ dấu trước hay sau.
Đổi kiểu gõ tức thì. Hỗ trợ Quick Telex, w → ư, phím [ ] và kiểu đặt dấu cũ/mới.
Từ Việt hợp lệ luôn thắng: mix → mĩ, too → tô. Gõ tiếng Anh bằng escape Telex (mixx → mix) hoặc chuyển chế độ Anh.
ko → không, vn → Việt Nam. Giữ đúng kiểu hoa/thường và tự viết hoa đầu câu nếu bật.
Terminal dùng preedit, Chrome chờ ack, Firefox tắt sửa từ cũ, game tắt bộ gõ. Cùng một engine, hành vi phù hợp từng app.
Gõ thêm dấu vào từ vừa xong: tiêng + s → tiếng. Backspace xoá đúng ký tự hiển thị và giữ dấu phần còn lại.
Rust core + C ABI cho Windows hook, IMK, Fcitx5/IBus, WASM cho web, Python làm oracle. Cùng một bộ golden test và conformance.
Mỗi phím đi qua Composer rồi trả về đúng một hành động: chèn, thay thế, preedit hoặc để hệ điều hành xử lý. Adapter chỉ việc áp Action — không chứa logic tiếng Việt.
// gõ: t i e e n g s
{
"type": "replace",
"delete_before": 3,
"insert": "ếng",
"pass_key": false
}
Playground chạy WASM ngay trong trình duyệt. API Python chạy bản oracle của dự án — cùng engine dùng để sinh bộ conformance cho bản Rust — nên bạn có thể kiểm tra, tự động hoá hoặc tích hợp mà không cần cài gì.
Hỗ trợ < Backspace, | Enter, ~ Escape. Không lưu nội dung bạn gõ.
# chuỗi phím thô → chữ Việt
curl -s https://key.vifast.org/api/type \
-H 'content-type: application/json' \
-d '{"text":"Tieengs Vieejt","method":"telex","tone":"new"}'
/api/charset chuyển Unicode, TCVN3, VNI-Windows, VISCII, VIQR, CP1258, NCR...Cùng chạy local-first, cùng mục tiêu tiếng Việt nhẹ và nhanh: một bên gõ thành chữ, một bên đọc thành tiếng.
Bộ gõ tiếng Việt nhỏ, nhanh, thuần logic trên lõi Rust.
Giọng đọc tiếng Việt non-autoregressive, ONNX CPU, 24 kHz.
Windows và Linux có tab Ứng dụng với picker app đang chạy; macOS có picker trong Cấu hình. Chọn app, đặt loại trừ hoặc override riêng, rồi lưu — không phải nhớ tên process.
Phù hợp để loại trừ game (Minecraft, Liên Minh…) hoặc app không muốn gõ tiếng Việt.
Danh sách app đang chạy được quét lại mỗi lần mở cửa sổ; bấm Quét nếu vừa mở thêm app.
firefox, code) hoặc nhập app id thủ công.Trên Linux, bấm X ẩn xuống khay nếu desktop có AppIndicator/StatusNotifier; thoát hẳn bằng menu tray. Nếu không thấy icon khay, tắt tùy chọn này trong Nâng cao. App profile/charset nâng cao vẫn dùng JSON.
Ảnh minh hoạ từ bản 0.1.2; bấm ảnh để mở lớn. Linux lấy app id từ tiến trình, vẫn có thể nhập tay hoặc dùng JSON.
Bản phát hành 0.1.2: Windows hook-only, macOS IMK, Linux IBus/Fcitx5, Android, iOS Simulator, Chrome/Edge và UEFI x86_64 demo. Mỗi tab có file tải, yêu cầu hệ thống và các bước cài chi tiết.
Hook-only một binary: Settings + tray + hook, không cần TSF, không cần Administrator.
Set-ExecutionPolicy -Scope Process Bypass
.\install.ps1Installer chép app vào %LOCALAPPDATA%\ViFastKey, thêm autostart và chạy hook nền. Không cần quyền Administrator.Win+Space chọn ENG. ViFastKey chỉ xử lý khi input source là English US; Vietnamese/Japanese sẽ pass-through.Tieengs Vieejt → Tiếng Việt. Alt+, đổi Việt/Anh; Ctrl+Shift+, mở Settings.Gõ bị đôi hoặc không gõ được: kiểm tra input source đang là English US (ENG), không phải Vietnamese; mở Settings → kiểm tra trạng thái hook.
Không thấy tray: chạy lại vifastkey-settings.exe hoặc kiểm tra Task Manager; menu tray → Thoát rồi mở lại.
Gỡ: chạy .\uninstall.ps1; config/macro trong %APPDATA%\ViFastKey được giữ lại.
Input method native cho Intel và Apple Silicon; preedit, menu Telex/Simple Telex/VNI, macro và app profile.
./install.sh trong thư mục vừa giải nén. Script copy app vào ~/Library/Input Methods và đăng ký input source.xattr -dr com.apple.quarantine "$HOME/Library/Input Methods/ViFastKey.app"Tieengs Vieejt → Tiếng Việt. Menu bar có Telex/VNI, Việt/Anh và Settings.Hỏi “Allow ViFastKey…” nhiều lần: mỗi lần build/cài lại, chữ ký ad-hoc đổi nên macOS coi là app mới. Xoá input source, chạy lại installer một lần, rồi đăng xuất/đăng nhập; sau đó đừng cài lại. Kiểm tra:
"$HOME/Library/Input Methods/ViFastKey.app/Contents/MacOS/ViFastKeyIM" --status
Phải thấy enabled=true. Nếu có crash report của ViFastKeyIM trong ~/Library/Logs/DiagnosticReports, gửi kèm khi báo lỗi.
“App is damaged” hoặc không mở: chạy lệnh xattr ở trên; hoặc System Settings → Privacy & Security → Open Anyway.
Không gõ được trong app: kiểm tra input source đang chọn ViFastKey; thử app khác (TextEdit) để loại trừ app đang chặn IMK.
Gỡ: xoá app trong ~/Library/Input Methods, xoá input source và logout/login.
Chỉ cài MỘT trong ba — IBus, Fcitx5 hoặc Wayland standalone — theo desktop đang dùng. Cài nhiều hơn sẽ tranh nhau xử lý phím, gõ đôi hoặc mất chữ.
tar -xzf vifastkey-ibus-linux.tar.gz
cd vifastkey-ibus
./install.shCần ibus, python3-gi, gir1.2-ibus-1.0 (Ubuntu/Debian).tar -xzf vifastkey-fcitx5-linux-x86_64.tar.gz
cd vifastkey-fcitx5
./install.shCần fcitx5 và frontend GTK/Qt tương ứng.zwp_input_method_v2:tar -xzf vifastkey-wayland-linux-x86_64.tar.gz
cd vifastkey-wayland
./install.shXem linux/wayland/README.md để biết giới hạn và cách chạy.ibus restart (IBus) rồi gõ thử.Không thấy ViFastKey: logout/login, chạy ibus restart hoặc khởi động lại Fcitx5; kiểm tra engine đã cài đúng user.
Gõ được ở app này nhưng không app khác: kiểm tra GTK_IM_MODULE/QT_IM_MODULE; app chạy XWayland có thể cần cấu hình riêng.
Thiếu thư viện Settings UI: cài libxkbcommon, libwayland, libx11, libgl1 theo distro.
IME Android đầy đủ, chạy local; bản APK debug chưa phát hành trên CH Play. Bản cập nhật 05/11/2026 (build 27): gõ sai rồi xoá hết từ + dấu cách sẽ khôi phục từ trước để sửa tiếp; ẩn rồi mở lại bàn phím về trang chữ (hoặc bàn phím số), không giữ trang ký tự đặc biệt. Vẫn có `replaceText()` trên Android 14+, fallback batch cho máy cũ/field dài, mặc định không gạch chân, chiều cao 100–145%, cài đặt nhanh, 1.121 emoji, hàng số Telex/VNI.
Tieengs Vieejt → Tiếng Việt; mở Settings của ViFastKey để đổi Telex/VNI, dấu cũ/mới.“App not installed”: gỡ bản cũ trước, kiểm tra dung lượng; APK hỗ trợ arm64/x86_64.
Không chuyển được bàn phím: bật ViFastKey trong On-screen keyboard, sau đó giữ phím cách hoặc dùng biểu tượng bàn phím.
Gõ không ra dấu: kiểm tra kiểu gõ trong Settings (Telex/VNI) và chế độ Việt/Anh.
Keyboard extension chạy trên iOS Simulator; chưa ký Apple Developer nên chưa cài lên iPhone thật.
Không thấy Simulator: cài runtime trong Xcode → Settings → Platforms; kiểm tra dung lượng ổ đĩa.
Không thấy bàn phím: Simulator Settings → General → Keyboard → Keyboards → Add New Keyboard; bật Full Keyboard Access nếu cần.
Extension MV3 dùng WASM, gõ tiếng Việt trong trình duyệt; không cần server.
chrome://extensions; Edge: edge://extensions.Tieengs Vieejt; bấm icon extension để đổi Việt/Anh hoặc Telex/VNI.Load unpacked lỗi: kiểm tra đã giải nén đúng thư mục có manifest.json, không chọn nhầm thư mục cha.
Không gõ được trên trang: reload trang sau khi cài; một số trang chặn extension hoặc dùng contenteditable đặc biệt.
Phát hành 05/11/2026 · v0.1.2 UEFI demo. Chạy trước khi OS boot: editor Telex/VNI, logo + URL trang chủ, GOP + font tiếng Việt nhúng và QR trong help.
EFI/BOOT. Kết quả đúng: \EFI\BOOT\BOOTX64.EFI.BOOTX64.EFI bằng key riêng và enroll cert). Bật USB boot, tắt Fast Boot/CSM nếu USB không hiện.Tieengs Vieejt → Tiếng Việt; thuowng → thương; dd → đ.F1 trợ giúp + QR trang chủ (F1 lần nữa hoặc Esc để đóng) · F2 Việt/Anh · F3 Telex/VNI · F10 thoát về boot menu · Backspace xoá phím thô.USB không hiện trong boot menu: kiểm tra FAT32, đúng đường dẫn \EFI\BOOT\BOOTX64.EFI, tắt Fast Boot/CSM, thử cổng USB 2.0.
Secure Boot violation: tắt Secure Boot hoặc ký file. Không dùng file từ nguồn không rõ.
Màn hình đen/không có GOP: firmware không cung cấp graphics output; thử máy khác hoặc QEMU/OVMF.
F10 quay về boot menu: đúng thiết kế; rút USB rồi khởi động lại máy.
Dùng engine trực tiếp trên desktop hoặc nhúng vào web; phù hợp để tích hợp, test và phát triển.
./vfk --demo
./vfk
./vfk --text "Tieengs Vieejt"vifastkey-wasm.zip, phục vụ bằng HTTP và mở trình duyệt:python3 -m http.server 8080 -d vifastkey-wasmpython/ hoặc deploy FastAPI theo deploy/vifastkey_web/README.md; playground trên trang này gọi engine Python qua /api/type.Báo lỗi, đề xuất tính năng hoặc góp ý nội dung. Nội dung và liên hệ chỉ admin xem, không hiển thị công khai. Xem các lỗi đã sửa gần đây ↗
Phản hồi từ người dùng và cách đã xử lý. Build là versionCode của APK Android; versionName vẫn là 0.1.2.
Đã sửa: Windows Settings ẩn khỏi taskbar/Alt+Tab và mở lại được từ tray; tab Ứng dụng hiển thị danh sách app đã cấu hình, bên dưới là app đang chạy (process + tên cửa sổ) để chọn thay vì gõ id; macOS có picker app đang chạy để thêm vào danh sách loại trừ; Linux có picker app đang chạy, app_id/icon dock khớp file .desktop và bấm X ẩn hẳn xuống khay thay vì kẹt trên dock/taskbar; menu bên trái có icon. Bản 0.1.2, Android build 27. Có ảnh minh hoạ trong mục Cấu hình theo app.
Đã sửa: engine giữ trạng thái soft-reset qua từ mới; xoá hết từ vừa gõ + dấu cách sẽ khôi phục từ trước (cả Preedit và Replace), sửa tiếp dấu/kiểu gõ bình thường.
Đã sửa: mỗi lần input view được mở lại đều reset về layout chữ (hoặc bàn phím số nếu field số), không giữ trang ký tự của phiên trước.
Đã sửa: Android 14+ dùng InputConnection.replaceText() thay cả range trong một lệnh; Android cũ hoặc field dài hơn 4096 ký tự fallback batch delete + commit.
Đã sửa: vào field/app mới tự reset về layout chữ (hoặc bàn phím số nếu field số); chỉ giữ layout đang dùng khi quay lại cùng field.
Đã sửa: gộp delete + commit vào batch edit, bỏ setComposingText/finish rỗng ở chế độ không gạch chân; suggestion/autocorrect cũng dùng batch.
Đã sửa: sửa trong engine/core: khôi phục khi phần còn lại là âm tiết Việt hợp lệ, không chỉ khi có trong từ điển common; áp dụng cho mọi UI.
Đã sửa: mặc định dùng Replace/commit, không gạch chân; bật “Hiện gạch chân chữ đang gõ” trong Cài đặt → Nâng cao nếu muốn preedit.
Đã sửa: build Android chạy lại vfk-jni từ core trước khi đóng APK; build 19 dùng native library mới thay vì .so cũ trong jniLibs.
Đã sửa: thêm chiều cao 100/115/130/145% trong Settings → Bàn phím; áp dụng cho layout chữ, ký tự, số, emoji và cả hàng số.
Đã sửa: thêm nút 4 ô ở thanh trên: đổi nhanh chiều cao, bật/tắt hàng số và mở Cài đặt đầy đủ; VNI vẫn khóa hàng số.
Đã sửa: thêm tùy chọn “Hiện hàng số 1–0 trên bàn phím chữ”: Telex mặc định tắt, có thể bật; VNI luôn bật và khóa tắt vì cần số để gõ dấu/âm.
Đã sửa: tùy chọn nằm trong Cài đặt → Nâng cao, mặc định tắt; bật nếu muốn tự quay về bàn phím chữ.
Đã sửa: Settings hiển thị “Phiên bản 0.1.0 · build 18”; versionCode vẫn là định danh chính thức, versionName giữ 0.1.0.
Đã sửa: tab emoji cao bằng layout hiện tại (chữ/ký tự/số, kể cả VNI); hàng “Hay dùng” co lại, lưới tự bù và vẫn lộ một phần hàng kế tiếp.
Đã sửa: khi app tự chốt vùng soạn thảo, IME chỉ finishComposingText và không chèn lại preedit; hết nhân đôi chữ.
Đã sửa: mở rộng lên 1.121 emoji: mặt, người, động vật, thiên nhiên, đồ ăn, du lịch, hoạt động, đồ vật, biểu tượng và cờ; vẫn lazy + hàng “Hay dùng”.
Đã sửa: bỏ hàng gợi ý trống khi ở tab emoji, hàng “Hay dùng” sát thanh trên; lưới luôn lộ một phần hàng kế tiếp kèm scrollbar.
Đã sửa: chỉ rung và phát âm thanh khi thực sự chọn emoji; cuộn không rung.
Đã sửa: hàng “Hay dùng” ở đầu bảng emoji, xếp theo tần suất và lần dùng gần nhất, lưu local; nhãn bên trái, các icon gợi ý bên phải.
Đã sửa: thanh Lưu cố định ở đáy màn hình, nút cam luôn hiển thị kèm ghi chú “Cấu hình áp dụng ngay sau khi lưu.”
Đã sửa: layout chữ tự thêm hàng số 1–0 khi chọn VNI để gõ dấu/âm VNI ngay, không cần mở ?123.
Đã sửa: popup biến thể mặc định số, kéo ngang để chọn dấu; phím không còn highlight sau khi chọn. Nút phẩy giữ nguyên vị trí, chỉ nhích dấu phẩy bên trong lên.
Đã sửa: thêm nút ✕, chạm ra ngoài hoặc chạm lại nút 📋 để đóng; panel nằm dưới thanh trên nên không che icon.
Đã sửa: chuyển sang GridView lazy, chỉ render ô đang nhìn thấy; hiện 3,5 hàng và scrollbar để thấy còn cuộn.
Đã sửa: xoá composing region thay vì commit lại preedit rỗng; Backspace cũng xoá được vùng bôi đen và tăng tốc khi giữ.
Đã sửa: Backspace xoá selection bằng một lần commit rỗng; giữ Backspace lặp nhanh dần 65ms → 22ms.
Đã sửa: phát hiện host đã xoá field thì xoá composition, không commit lại preedit vào ô nhập.
Đã sửa: phím lớn theo Gboard, bỏ hàng số khỏi layout chữ, tự Shift đầu câu, rung/âm thanh khi chạm phím.
Số liệu tổng hợp từ API Python, tự làm mới khi tải trang. Không lưu nội dung bạn gõ.
Đang tải…
“Khách ẩn danh” là ước lượng theo hash visitor/IP; không lưu nội dung gõ thử hay IP thô. Lượt tải chỉ đếm lúc bấm nút trên landing, không phải số file đã tải xong. Mở trang admin ↗
Tải trực tiếp từ GitHub Releases của vifast-oss/ViFastKey.
Đang tải…