VN Telex Writer là một công cụ gọn nhẹ, nhanh chóng, chạy trên nền web, cho phép gõ tiếng Việt bằng phương pháp nhập Telex. Công cụ được thiết kế để hoàn toàn responsive, và có logic nâng cao để xử lý các tổ hợp nguyên âm phức tạp (như uowi -> ươi) thường gặp trong cách gõ tiếng Việt hiện đại.
Dự án này được triển khai trực tiếp trên GitHub Pages tại: VN Telex Writer
- Deploy một file duy nhất: Toàn bộ trình soạn thảo (HTML, CSS/Tailwind, và JavaScript Telex Engine) nằm gọn trong một file
index.htmlduy nhất, dễ dàng chỉnh sửa. - Telex Engine cải tiến: Áp dụng các quy tắc nâng cao, sửa các trường hợp đặc biệt như
cuowfiđể cho ra kết quả đúng làcười, đồng thời xử lý các nguyên âm ghép phức tạp. - Chuyển đổi theo thời gian thực: Tự động chuyển đổi đầu vào Telex sang ký tự tiếng Việt ngay khi bạn gõ trong phạm vi từ.
- Chuyển đổi giao diện: Hỗ trợ chế độ sáng và tối.
- Lựa chọn phông chữ: Cho phép người dùng chọn nhiều phông chữ hiện đại, dễ đọc.
- Chức năng sao chép: Dễ dàng sao chép văn bản đã chuyển đổi.
- Bật/Tắt Telex: Cho phép bật hoặc tắt bộ chuyển đổi Telex ngay lập tức.
Trình soạn thảo sử dụng phương pháp nhập Telex tiêu chuẩn. Hệ thống dựa vào các tổ hợp phím để nhập dấu thanh và biến đổi nguyên âm (dấu mũ, dấu ă, dấu ơ, dấu ư).
| Nguyên âm | Phím nhập | Ví dụ | Kết quả |
|---|---|---|---|
| ă | aw | bawn | băn |
| â | aa | laam | lâm |
| ê | ee | teen | tên |
| ô | oo | tooi | tôi |
| ơ | ow | mow | mơ |
| ư | uw hoặc w | tuw/tw | tư |
| đ | dd | ddieen | điên |
Dấu thanh được gõ ở cuối từ.
| Phím | Tên dấu | Phím nhập | Ví dụ | Kết quả |
|---|---|---|---|---|
| s | Sắc | s | tas | tá |
| f | Huyền | f | taf | tà |
| r | Hỏi | r | tar | tả |
| x | Ngã | x | tax | tã |
| j | Nặng | j | taj | tạ |
| z | Xóa dấu | z | táz | ta |
Chức năng cốt lõi nằm trong hàm JavaScript convertWordToVietnamese, sử dụng chuỗi các biểu thức chính quy và logic đặt nguyên âm ưu tiên để đảm bảo chuyển đổi chính xác.
Quá trình chuyển đổi diễn ra qua hai giai đoạn chính:
Giai đoạn này xử lý việc biến đổi nguyên âm cơ bản và phụ âm bằng các phím o, e, và w. Đặc biệt, engine áp dụng logic riêng để xử lý cụm nguyên âm phức tạp trước khi thay thế đơn giản.
| Loại quy tắc | Mẫu nhập | Nguyên âm xuất ra | Mục đích |
|---|---|---|---|
| Nguyên âm phức tạp | uo([a-zA-Z]*)w | ươ + nhóm | Sửa lỗi cuoiw. Chuyển đổi chuỗi phức tạp như uoiw thành ươi (ví dụ: tươi). |
| Cụm nguyên âm đặc biệt | uaw | ưa | Xử lý đúng cụm ua (ví dụ: quaw là ngoại lệ). |
| Nguyên âm cơ bản | aw, ow, uw | ă, ơ, ư | Chuyển đổi tiêu chuẩn cho ba nguyên âm chính. |
| Nguyên âm có mũ/Đ | aa, ee, oo, dd | â, ê, ô, đ | Chuyển đổi tiêu chuẩn cho nguyên âm có dấu mũ và phụ âm 'đ'. |
Sau khi biến đổi nguyên âm, engine kiểm tra ký tự cuối của từ để tìm phím dấu thanh (s, f, r, x, j). Nếu có, hàm applyTone sẽ được gọi, với logic thông minh để đặt dấu:
- Xác định nguyên âm: Tìm tất cả vị trí nguyên âm trong từ.
- Quy tắc một nguyên âm: Nếu chỉ có một nguyên âm (ví dụ:
lam), dấu được đặt tại đó (làm). - Quy tắc nguyên âm phức tạp: Với từ có hai hoặc nhiều nguyên âm (ví dụ:
hoan,tươi), logic xác định nguyên âm "chính" để đặt dấu, dựa trên quy tắc âm tiết mở/đóng.- Ví dụ (hai nguyên âm, âm tiết đóng): Trong
hoan, dấu thường đặt trên nguyên âm thứ hai (a) thànhhoán.
- Ví dụ (hai nguyên âm, âm tiết đóng): Trong
- Áp dụng dấu: Sử dụng CHAR_MAP (ví dụ:
aàáảãạ) để áp dụng dấu tương ứng với phím nhập (0=Huyền, 1=Sắc, 2=Hỏi, 3=Ngã, 4=Nặng).
Cách tiếp cận nhiều lớp này đảm bảo các chuỗi phức tạp được xử lý đúng trước khi áp dụng dấu, mang lại kết quả chính xác cao.
Để chạy VN Telex Writer trên máy cục bộ, hãy clone repository và mở file index.html trong trình duyệt.
git clone https://github.com/Astear17/VNTelexWriter.git
cd VNTelexWriter
open index.html