Sen Việt Sen Việt (VieLotusIM) Hồ sơ Kỹ thuật & Thực nghiệm v2.0.0
0 Global Hooks
Không bẫy phím ngầm · 0 Accessibility (macOS), 0 Full Access (iOS), 0 Hook (Win/Linux)
100.00% (9.091)
Độ chính xác bộ kiểm thử chính có ngữ cảnh (Telex & VNI)
97.33% · 182/182
Đối xứng hai chiều (365/375) & bảo toàn 100% đường gõ Việt duy nhất
< 0.2 ms (p99)
Độ trễ xử lý qua 250.000 phím liên tục (lõi Swift 6 đa nền tảng)
§1 / 06 · EMPIRICAL SPECIMEN

Nghiên cứu và thiết kế bộ gõ tiếng Việt theo giao thức bàn phím gốc đa nền tảng

Sen Việt (VieLotusIM) lấy hệ sinh thái Apple (macOS, iOS, iPadOS) làm kiến trúc tham chiếu trọng tâm bằng ngôn ngữ Pure Swift 6, đồng thời vận hành đồng nhất cùng một lõi ngôn ngữ trên Windows, Linux và Android. Dự án tập trung giải quyết hai bài toán kỹ thuật: (1) thay thế cơ chế bẫy phím ngầm đòi quyền nhạy cảm bằng kênh nhập liệu chính thống của từng hệ điều hành, và (2) xử lý điểm mù từ vựng khi các từ tiếng Anh thông dụng như turn bị biến thành âm vô nghĩa "tủn", hoặc last thành "lát".

Mô phỏng đối chiếu 4 ca biên ngôn ngữ & bộ đệm
Chuỗi phím vật lý đầu vào: Từ tiếng Anh bị biến thành âm vô nghĩa (turn → tủn)
Bộ lọc chỉ kiểm tra khuôn ghép vần (Phonotactic-only)
tủn

Các bộ gõ hiện nay khôi phục được từ sai cấu trúc vần (như window), nhưng với "turn", tổ hợp t-u-n đúng khuôn phụ âm – nguyên âm nên bị biến thành âm vô nghĩa "tủn".

Trọng tài từ vựng & ngữ cảnh (Sen Việt)
turn

Đối chiếu từ điển âm tiết thực tế thay vì chỉ ghép vần cơ học: nhận diện "tủn" không phải từ tiếng Việt có nghĩa độc lập nên tự trả về ngay "turn".

Nguồn đối chiếu: BENCHMARK_REPORT.md · Ca kiểm thử đơn vị: SmartBilingualDetectorTests.swift (turn, last, list, best, cost, rest) · Tự kiểm chứng: ./Binaries/VieLotusCLI --benchmark
§2 / 06 · PUBLISHED DISTRIBUTIONS & VERIFIED ENVIRONMENTS

Danh mục nền tảng đã phát hành, dòng máy kiểm chứng & liên kết chính thức

Cùng một lõi trạng thái Pure Swift 6 (VieLotusCore & VieLotusCAPI) đã được biên dịch, đóng gói và xuất bản chính thức trên 5 hệ điều hành máy tính và di động. Bảng dưới đây tổng hợp giao thức hệ thống, phần cứng đã đo kiểm và đường dẫn tải/kho ứng dụng chính thức của từng nền tảng.

Hệ điều hành & Giao thức Dòng máy & Kiến trúc CPU đã kiểm thử Môi trường & Ứng dụng xác thực Kênh phát hành & URL chính thức
macOS 13 – 15
InputMethodKit
Ventura, Sonoma, Sequoia
Apple Silicon (M1 / M2 / M3 / M4 — MacBook Air/Pro, Mac mini, iMac, Mac Studio) & Intel (x86_64) Safari, Notes, Xcode, Office; Chrome, Arc, VS Code, Cursor, Slack, Notion, Zalo; Terminal, iTerm2, Ghostty, Kitty, Alacritty, Warp
brew install stevedat/tap/vielotus
Windows 10 / 11
Win32 TSF COM
21H2, 22H2, 23H2, 24H2
Intel / AMD (x64) & ARM64 (Snapdragon X Elite/Plus, Surface Pro ARM, Parallels trên Mac M-series) WinUI 3 / UWP (Windows 11 Notepad, Windows Terminal, Windows Search, Edge) & Win32 (Office 365, Chrome, VS Code, Zalo PC)
Linux (Debian / Ubuntu)
IBus & Fcitx5
Ubuntu 22.04/24.04, Debian 12, Mint, Fedora, Arch
x86_64 (amd64 PC/Laptop) & ARM64 (aarch64 — Raspberry Pi 4/5, máy trạm ARM) X11 & Wayland (GNOME, KDE Plasma); Firefox, Chromium, VS Code, LibreOffice, GNOME Terminal, Konsole, Ghostty
curl -fsSL https://stevedat.github.io/VieLotus-IM/install.sh | sh
iOS & iPadOS 16 – 18
UIInputViewController
0 Full Access · 100% Offline
iPhone (XS → 16 Pro Max) & iPad (iPad Air, mini, iPad Pro M1–M4) Bàn phím cảm ứng 60/120Hz (hỗ trợ gõ lướt Glide Typing) & bàn phím cứng Magic Keyboard / Bluetooth
Android 8.0 – 15
InputMethodService
API 26+ · JNI C-ABI
arm64-v8a, armeabi-v7a, x86_64 (Samsung Galaxy Phone/Tab/DeX, Google Pixel, Xiaomi, OPPO) Bàn phím ảo cảm ứng & bàn phím cơ vật lý rời kết nối qua USB / Bluetooth (chế độ điện thoại, tablet & Samsung DeX)
Tài liệu hướng dẫn kích hoạt từng bước sau khi cài đặt: Hướng dẫn Kích hoạt & Khắc phục sự cố (macOS, Windows, Linux, iOS, Android) · COMPATIBILITY.md
§3 / 06 · SYSTEM BOUNDARY & TRADE-OFF ANALYSIS

Kiến trúc giao thức gốc (không bẫy phím ngầm) và ba sự đánh đổi thẳng thắn

Nhiều bộ gõ tiếng Việt truyền thống hoạt động bằng cách cài bẫy sự kiện phím ở tầng hệ thống (đòi quyền Accessibility trên macOS, cài Keyboard Hook trên Windows, hoặc yêu cầu Full Access trên di động). Sen Việt chọn hướng tiếp cận chuẩn mực của từng nền tảng — lấy hệ sinh thái Apple làm chuẩn tham chiếu và áp dụng tương đương trên Windows, Linux, Android.

Ranh giới quyền & Riêng tư
Cơ chế Hook Can thiệp sự kiện phím toàn cục: yêu cầu quyền Accessibility / Input Monitoring (CGEventTap) trên macOS, cài SetWindowsHookEx (WH_KEYBOARD_LL) trên Windows, hoặc đòi quyền Full Access trên iOS/Android.
Sen Việt Vận hành 100% qua khung dịch vụ bàn phím chính thống (InputMethodKit trên macOS, UIInputViewController 0 Full Access trên iOS/iPadOS, Win32 TSF trên Windows, IBus/Fcitx5 trên Linux, InputMethodService trên Android) với 0 kết nối mạng.
Nguồn: Apple InputMethodKit · Microsoft Win32 TSF · iOS UIInputViewController · grep -rn "CGEvent" Sources/ (0 hit)
Cơ chế đồng bộ văn bản
Cơ chế Hook Để chữ thô lọt vào ô nhập rồi bắn chuỗi phím Xóa (Backspace) giả lập tốc độ cao — dễ đua lệnh (race condition) với gợi ý tự động trên trình duyệt và làm hỏng lịch sử hoàn tác Undo.
Sen Việt Thay thế nguyên tử theo vùng chọn (insertText:replacementRange: trên macOS, ITfEditSession trên Windows TSF, SurroundingText trên Linux) hoặc phiên ghép vần chuẩn W3C (Marked Text / Composition), giữ nguyên lịch sử Cmd+Z / Ctrl+Z.
Độ ổn định & Cô lập bảo mật
Cơ chế Hook Trên macOS, khi cập nhật bản mới làm đổi chữ ký (csreq), hạt nhân TCC âm thầm hủy phím giả lập dù công tắc quyền vẫn báo bật; trên Linux Wayland hoặc ứng dụng quyền cao của Windows, cơ chế chặn phím toàn cục bị hệ điều hành cô lập.
Sen Việt Đăng ký làm dịch vụ bàn phím hợp lệ của hệ điều hành nên không bao giờ bị lỗi kẹt quyền TCC trên macOS, tương thích tự nhiên với cơ chế cô lập cửa sổ của Linux Wayland và ứng dụng UWP/WinUI 3 trên Windows 11.
Ba sự đánh đổi kỹ thuật khi tuân thủ tuyệt đối giao thức gốc của hệ điều hành
1. Nét gạch chân tạm thời trên trình duyệt & Electron: Trên các khung ứng dụng gốc hỗ trợ thay thế tại chỗ (như AppKit/Safari/Office trên macOS hay Win32 trên Windows), Sen Việt đổi dấu trực tiếp không gạch chân. Riêng trên trình duyệt Chromium, Electron, VS Code, Zalo, từ đang gõ hiển thị nét gạch chân mảnh chuẩn W3C (nhấn Space là tự tắt) nhằm triệt tiêu 100% lỗi lặp chữ (t-ti-tiếng) và nhảy con trỏ do xung đột Virtual DOM.
2. Hợp tác thay vì cưỡng bức khung nhập liệu tự vẽ: Với các phần mềm đồ họa/game tự vẽ ô nhập chữ không cung cấp tọa độ con trỏ cho hệ điều hành, Sen Việt tự lùi về chế độ ghép vần tiêu chuẩn thay vì bắn phím Backspace giả lập mù vào màn hình. Đổi lại, bộ gõ đảm bảo không bao giờ xóa nhầm văn bản nằm ngoài âm tiết đang gõ.
3. Kích hoạt qua trình quản lý bàn phím của hệ điều hành: Vì không tự ý chiếm quyền điều khiển bàn phím ngầm, ở lần cài đặt đầu tiên trên thiết bị mới, người dùng chủ động bật Sen Việt trong phần quản lý bàn phím của từng hệ điều hành (Input Sources trên macOS, Settings → Keyboard trên iOS/Android, hoặc chuyển bằng Win+Space / Super+Space trên Windows & Linux).
§4 / 06 · LINGUISTIC ARBITRATION & BENCHMARK VERIFICATION

Ba bài toán cốt lõi trong lõi ngôn ngữ & Ma trận kiểm định đối xứng (9.091 ca)

Bên cạnh ranh giới an toàn với hệ điều hành, lõi ngôn ngữ phải phân xử chính xác sự va chạm giữa các từ tiếng Anh thông dụng và các âm tiết tiếng Việt hợp lệ mà không làm mất từ của bên nào.

1. Giải quyết điểm mù của cơ chế tự khôi phục tiếng Anh (turn, last, rest)
9.091 ca (100%) · 365/375 (97.33%)

Các bộ gõ hiện đại đều khôi phục tốt những từ sai quy tắc ghép vần (như window). Nhưng chúng thất bại ở 3 nhóm: (1) Từ như turn (t-u-r-n) tạo ra "tủn" đúng khuôn phụ âm – nguyên âm nên bị bỏ lọt dù "tủn" không có nghĩa; (2) Từ như last (l-a-s-t), best, cost, list có phím s nằm giữa từ bị biến thành "lát", "bét", "cót", "lít" — trong khi Sen Việt trả thẳng về last (còn gõ tiếng Việt l-a-t-s vẫn ra lát); (3) Từ trùng khít đường gõ duy nhất của tiếng Việt như rest / rét, if / ì, as / á.

Công bố đối xứng hai chiều: Khi có ngữ cảnh tiếng Anh đi trước, Sen Việt đạt 100.00% (9.091 / 9.091 ca, gồm 1.049/1.049 ca lưỡng nghĩa). Khi phát lại chính bộ từ đó ở trạng thái độc lập không có ngữ cảnh tiếng Anh, bộ gõ giữ đúng 97.33% (365 / 375) cho tiếng Việt và bảo toàn tuyệt đối 100.00% (182 / 182 — 0 tổn thất) các âm tiết tiếng Việt chỉ có duy nhất một đường bấm phím.

2. Thích ứng 4 chế độ hiển thị & khóa biên UTF-16
ClientAdapter · typing-modes.yml

Khung soạn thảo gốc (AppKit/Win32), trình duyệt (Chromium/Electron) và GPU Terminal (Ghostty, Kitty, Alacritty, Claude Code) xử lý bộ đệm văn bản hoàn toàn khác nhau. Sen Việt tự động phân loại ứng dụng sang 4 chế độ (Direct Replacement, Marked Text, Terminal Direct phát byte DEL \u{7F}, Passthrough) và cho phép cộng đồng tùy chỉnh quy tắc qua tệp cấu hình mở typing-modes.yml mà không cần biên dịch lại.

3. Một lõi Swift 6 thuần khiết cho cả 5 hệ điều hành
p99 < 200 µs · 26 hàm C-ABI

Toàn bộ máy trạng thái (InputSessionManager), bộ tách âm 5 tầng và trọng tài ngữ cảnh nằm trong thư viện độc lập VieLotusCore, kết nối trực tiếp với macOS/iOS và xuất cầu nối C-ABI không sao chép (vielotus.h) cho Windows TSF, Linux IBus/Fcitx5 và Android JNI. Dữ liệu gợi ý từ ghép cá nhân chỉ lưu trên RAM (tối đa 512 mục, tự rã sau 14 ngày, không ghi ổ cứng).

Nguồn: ARCHITECTURE.md §9–§11 (Performance & C-ABI) · ./Binaries/VieLotusCLI --stress (250.000 keys)

Bảng tổng hợp kết quả kiểm định hồi quy (9.091 ca)

Nhóm đo kiểm (Metric Bucket) Điều kiện thực thi & Ý nghĩa thực nghiệm Kết quả đo
Bộ kiểm thử chính (5 nhóm có ngữ cảnh) Biến đổi âm tiết Việt (400), giữ từ tiếng Anh (362), hủy dấu cuối từ (67), khôi phục từ thô (7.213) và phân giải từ lưỡng nghĩa có ngữ cảnh (1.049) 9.091 / 9.091 (100.00%)
Đối xứng hai chiều (ambiguous_both_sides) 375 từ trùng phím viết thường chạy lặp lại ở cả 2 chiều: đúng tiếng Anh khi có ngữ cảnh VÀ đúng tiếng Việt khi gõ độc lập (vn_survives_collision) 365 / 375 (97.33%)
Đường gõ tiếng Việt duy nhất (whitelist_safe = never) Các âm tiết tiếng Việt chỉ có duy nhất một chuỗi phím Telex/VNI để tạo thành (0 tổn thất bắt buộc bởi VNCollisionRatchetTests) 182 / 182 (100.00%)
Độ trễ đuôi p99 & Thông lượng (250.000 phím) Thời gian xử lý 99% số lần gõ phím liên tục qua bài kiểm thử chịu tải (--stress) trên Apple Silicon < 200 µs (> 40.000 keys/s)
§5 / 06 · UPSTREAM CONTRIBUTIONS & PRIOR ART TRACEABILITY

Sổ cái đóng góp mã nguồn ngược dòng (Upstream PRs) & Đối chiếu học thuật

Nghiên cứu kỹ thuật chỉ bền vững khi có tính kế thừa và đóng góp ngược lại cho cộng đồng. Khi phát hiện các lỗi biên trong quá trình kiểm thử chéo, nhóm phát triển gửi trực tiếp bản vá (Pull Request) kèm bộ unit test về các kho mã nguồn cùng hệ sinh thái để có thể truy vết minh bạch.

A. Danh mục Pull Request & Đặc tả kỹ thuật đóng góp ngược dòng (Traceable PR Ledger)

Mã PR / Đặc tả Kho mã nguồn (Repository) Phân tích căn nguyên (Root-Cause) & Bản vá Vector kiểm chứng & Trace
PR #133 ↗ ptrinh/viettelex
Swift · macOS InputMethodKit
Khắc phục lỗi mất đồng bộ trạng thái âm tiết sau khi đã gán thanh điệu, chuẩn hóa quy tắc tách âm tiết liên tiếp V-C-V và hoàn tác dấu Telex khi gõ vượt quá âm tiết đóng. dduowcj + u
vieetj + u
Xem diff & unit tests
PR #20 ↗ uvie-project/uvie-rs
Rust · Core Engine FSM
Sửa lỗi lệch máy trạng thái hữu hạn (FSM) trong lõi Rust khi nhập tiếp nguyên âm sau âm tiết đã mang dấu nặng/sắc, ngăn hiện tượng nhảy ký tự và rớt dấu thanh. dduowcj + u
vieetj + u
Xem diff & unit tests
PR #25 ↗ uvie-project/uvie-mac
Swift · IMKInputController
Đồng bộ hóa vùng đệm markedText / insertText ở tầng macOS shell với lõi uvie-rs khi chuyển tiếp âm tiết liên hoàn, khắc phục lỗi nuốt ký tự cuối từ. IMKInputController
Xem diff & unit tests
Open Spec ↗ stevedat/VieLotus-IM
YAML & Markdown · MIT
Công bố mở cơ sở dữ liệu phân loại chế độ hiển thị theo Bundle ID (typing-modes.yml) và tài liệu phân tích cơ chế TCC csreq / AXSecureTextField để các bộ gõ dùng chung. typing-modes.yml
COMPATIBILITY.md

B. Đối chiếu & Tri ân các công trình nền tảng trong hệ sinh thái (Foundational Prior Art)

Dự án & Tác giả Giấy phép Di sản kỹ thuật & Giá trị tham chiếu học thuật
UniKey
Phạm Kim Long
GNU GPL Đặt nền móng cho máy trạng thái âm tiết tiếng Việt, quy tắc đặt dấu thanh và chuẩn mã hóa tiếng Việt trên máy tính cá nhân.
OpenKey
Mai Vũ Tuyên
GNU GPLv3 Tham chiếu cấu trúc ánh xạ bảng mã di sản (TCVN3, VNI Windows, Unicode tổ hợp) và ma trận kiểm tra hình vị âm tiết.
Bamboo Engine
Lương Thanh Lam
GNU GPLv3 Tham chiếu các heuristic phân rã cấu trúc âm tiết tiếng Việt trên Linux (IBus) và xử lý xóa ký tự phía trước.
VietTelex
Phil Trịnh
MIT License Tư liệu thực nghiệm về hành vi của Apple InputMethodKit, nhận diện AXSecureTextField và cấu trúc bộ kiểm thử hồi quy 9.091 ca.
UVie (uvie-rs / uvie-mac)
UVie Project
MIT License Kiến trúc tách biệt lõi xử lý ngôn ngữ (Rust) và vỏ giao tiếp InputMethodKit (Swift), cùng hợp tác kiểm thử chéo các ca biên V-C-V.
XKey & PHTV
xmannv · Phạm Hùng Tiến
MIT / AGPLv3 Tham chiếu tư duy chẩn đoán luồng phím thời gian thực và ghi chép tương thích ứng dụng đặc thù (TeXstudio, JetBrains, Claude Code CLI).
Hồ sơ pháp lý & ghi nhận bản quyền đầy đủ: THIRD_PARTY_NOTICES.md
§6 / 06 · RESEARCH & ENGINEERING ROADMAP

Lộ trình nghiên cứu & phát triển kỹ thuật

Triển khai theo thứ tự ưu tiên: độ chính xác đối xứng của lõi ngôn ngữ, tính chuẩn mực với giao thức hệ điều hành, và khả năng kiểm chứng độc lập trên cả 5 nền tảng.

Giai đoạn 1 · Đã xuất bản (v1.1.x)
Lõi ngôn ngữ đối xứng & Phát hành 5 hệ điều hành
  • Hoàn thiện lõi gõ tự do & phân giải song ngữ đối xứng (9.091 ca có ngữ cảnh đạt 100.00%, đối xứng 97.33% trên 365/375 ca, bảo toàn 182/182 đường gõ duy nhất).
  • Phát hành chính thức trên cả 5 nền tảng: macOS (.pkg / Homebrew), Windows 10/11 TSF (x64 & ARM64), Linux (Snap Store & .deb), iOS/iPadOS (App Store) và Android (Google Play).
  • Công bố kiến trúc Open-Core kèm công cụ kiểm chứng dòng lệnh độc lập VieLotusCLI.
Giai đoạn 2 · Đang triển khai
Mở rộng quy tắc tương thích & Hợp tác Upstream
  • Mở rộng cơ sở dữ liệu quy tắc ứng dụng (typing-modes.yml) để cộng đồng bổ sung cấu hình tương thích cho các phần mềm chuyên ngành mà không cần biên dịch lại.
  • Tinh chỉnh sâu chế độ nhập liệu cho các GPU Terminal, trình soạn thảo LaTeX và công cụ AI CLI thế hệ mới (Ghostty, Kitty, WezTerm, Claude Code).
  • Tiếp tục đóng góp các bản vá lỗi biên âm vị học và bộ ca kiểm thử ngược dòng (Upstream PRs) cho hệ sinh thái bộ gõ mở.
Giai đoạn 3 · Nghiên cứu tiếp theo
Mô hình thích nghi cục bộ trên RAM & Cử chỉ 120Hz
  • Hoàn thiện mô hình gợi ý từ ghép thích nghi theo văn phong cá nhân vận hành thuần trên RAM (tối đa 512 mục, tự rã sau 14 ngày, 0 ghi ổ cứng).
  • Nâng cấp thuật toán giải mã quỹ đạo gõ lướt (Glide Typing) 120Hz trên màn hình cảm ứng iOS, iPadOS và Android.
  • Mở rộng công cụ quan sát sự kiện độc lập (VieLotusLab) phục vụ gỡ lỗi giao thức nhập liệu đa nền tảng.