Colemak cho người gõ tiếng Việt: Telex, VNI, Unikey
Đổi sang Colemak hay Colemak-DH mà vẫn gõ Telex, VNI: cách thử Unikey, EVKey, OpenKey, macOS, ibus-bamboo và fcitx5-unikey, phím dấu nằm ở đâu, và vì sao VNI không đổi chỗ.
Chuyển sang Colemak thì Telex và VNI còn dùng được không?
Người gõ tiếng Việt chuyển sang Colemak vẫn có thể giữ Telex hoặc VNI, với một điều kiện: bộ gõ phải đọc chữ mà layout Colemak tạo ra, không đọc vị trí phím theo QWERTY. Trang của Unikey, trang của EVKey và README của OpenKey đều không nói gì về Colemak, nên bạn cần tự thử bằng một từ mẫu. VNI có một lợi thế rõ ràng: phần dấu của VNI nằm trên hàng số, và hàng số trên Colemak và Colemak-DH không đổi.
Mỗi hệ điều hành có một điểm dễ hỏng riêng. Trên Windows, đó là xung đột giữa hai chương trình cùng bắt phím. Trên macOS, đó là câu hỏi nguồn nhập tiếng Việt có giữ layout Colemak hay không. Trên Linux, đó là ibus hoặc fcitx5 có tự đặt lại layout về US hay không.
Phần cài Colemak trên Linux đã có trong hướng dẫn chuyển sang Colemak trên Linux. Thời gian làm quen có trong bài về chuyện học Colemak mất bao lâu. Phần dưới đây chỉ nói về bộ gõ tiếng Việt.
Bộ gõ tiếng Việt đọc chữ hay đọc vị trí phím?
Mỗi lần bạn nhấn phím, hệ điều hành nhận một mã cho biết phím vật lý nào được nhấn. Sau đó layout đang bật đổi mã này thành một chữ. Trên Colemak, phím nằm ở chỗ chữ D của QWERTY sinh ra chữ s. Bộ gõ Telex cần thấy chữ s thì mới thêm dấu sắc.
Một bộ gõ đọc chữ sẽ thấy s và thêm dấu sắc, đúng ý bạn. Một bộ gõ đọc vị trí phím sẽ thấy phím D của QWERTY, nên nó xử lý như chữ d. Kết quả là dấu đặt sai hoặc chữ lạ xuất hiện, dù layout đã bật đúng. Trang Windows của colemak.com cũng cảnh báo rằng một số ứng dụng, ví dụ VMware và một số game, đọc thẳng scancode (mã quét phím) và bỏ qua layout.
Mã nguồn và tài liệu cho thấy mỗi bộ gõ ở một mức chắc chắn khác nhau:
- ibus-bamboo lấy chữ từ giá trị
keyValmà ibus đưa vào (rune(keyVal)trongengine_preedit.go). Đó là chữ, không phải mã phím. Giá trị này do ibus đưa sang, nên layout phải đúng ngay từ tầng ibus. - fcitx5-unikey đưa ký hiệu phím (keysym)
keyEvent.rawKey().sym()vào engine Unikey và không đọc keycode. Ký hiệu này đến từ layout mà fcitx5 đang áp dụng cho nhóm bộ gõ. - OpenKey cho Windows đọc
vkCode(virtual-key code, mã phím ảo) từ một keyboard hook mức thấp. Bảng mã phím ảo của Microsoft không nói mã của phím chữ có đi theo layout đang bật hay không, nên tài liệu chưa cho câu trả lời. - OpenKey cho macOS có một tùy chọn tương thích layout riêng cho Telex. Việc cần thêm tùy chọn này gợi ý rằng khi tắt nó, OpenKey xử lý theo vị trí phím. Pull request không nói thẳng điều đó, nên đây là suy luận.
- Unikey và EVKey không có tài liệu nào về chuyện này trong các trang chính thức.
Từ mẫu để thử
Bật Colemak, bật bộ gõ, mở một trình soạn văn bản đơn giản rồi gõ các chữ cái theo Colemak. Đừng nhìn chữ QWERTY in trên phím.
- Telex: gõ
dduwowcj. Kết quả đúng là “được”. - Telex: gõ
Vieetj Nam. Kết quả đúng là “Việt Nam”. - VNI: gõ
d9u7o7c5. Kết quả đúng là “được”.
Nếu ra đúng chữ, bộ gõ đọc chữ của layout, và bạn có thể dùng tiếp. Nếu ra chữ lộn xộn, bộ gõ đang đọc vị trí phím, hoặc một chương trình khác đã đổi layout về US. Các phần dưới đây chỉ cách phân biệt hai trường hợp này trên từng hệ điều hành.
Windows: cài Colemak kiểu nào để Unikey, EVKey và OpenKey chạy ổn?
Windows không có sẵn Colemak. Danh sách bàn phím mặc định của Windows trên Microsoft Learn có US, các biến thể US-Dvorak, US-International và Vietnamese, nhưng không có Colemak. Bạn có hai cách cài.
- Layout của hệ điều hành. Tải bộ cài từ colemak.com rồi chạy
setup.exe. Trang này ghi hỗ trợ Windows 2000 đến Windows 10. Trang không ghi Windows 11, nên trên Windows 11 hãy tự kiểm tra sau khi cài. Muốn gỡ, xóa layout trong cài đặt rồi chạy lạisetup.exe. - Chương trình bắt phím. colemak.com cũng liệt kê bản AutoHotkey, bản sửa registry, bản portable chạy được mà không cần quyền quản trị, và EPKL. EPKL là bản kế nhiệm của PKL (Portable Keyboard Layout), nằm trong bộ “DreymaR's Big Bag of Keyboard Tricks” và được dựng trên AutoHotkey.
Vì sao Unikey và PKL hay xung đột?
README của EPKL viết rằng chạy EPKL cùng các chương trình đổi phím khác có thể gặp vấn đề vì “hook competition”, tức hai chương trình tranh nhau bắt phím ở cùng một tầng. Bộ gõ tiếng Việt cũng có thể là chương trình bắt phím. Theo mã nguồn, OpenKey cho Windows cài một keyboard hook mức thấp. EVKey cho bạn chọn giữa cơ chế keyboard hook và cơ chế IME (input method editor, bộ soạn phương thức nhập).
Thread “Vietnamese Colemak” trên diễn đàn Colemak, mở ngày 09/04/2018, ghi lại đúng trường hợp này. Một ghi chú của người dùng tên IceDryst, được trích trong thread, viết rằng ở Windows gần như ai cũng dùng Unikey, và Unikey không chạy tốt với PKL, kèm câu hỏi “keyboard hook trouble?”. Thread không bao giờ xác nhận nguyên nhân. DreymaR, người làm EPKL, khi đó viết rằng PKL chưa hỗ trợ Telex và không cùng chạy được với Unikey. Đây là thông tin năm 2018. Nó không phải kết quả thử với Unikey 4.6 hay EPKL hiện nay.
Cách an toàn hơn là cài Colemak bằng setup.exe như một layout của hệ điều hành. Khi đó chỉ còn bộ gõ tiếng Việt bắt phím, nên không còn hai hook tranh nhau. Chỉ dùng EPKL khi bạn không có quyền quản trị, và khi đó hãy thử kỹ bằng từ mẫu ở trên.
Từng bộ gõ trên Windows
- Unikey. Trang tải ghi UniKey 4.6 RC2 là bản mới nhất, với bản dựng 230919 cho 32-bit và 64-bit, và 250531 cho ARM64. Unikey hỗ trợ Telex, VNI và VIQR. Không trang nào của Unikey nói về Colemak hay layout khác QWERTY, nên hãy gõ thử.
- EVKey. Vào tháng 10/2026, trang chủ EVKey liệt kê bản Windows v6.0.5. Trên Windows, bạn chọn được cơ chế keyboard hook hoặc IME. Nếu Telex sai ở một chế độ, hãy thử chế độ còn lại bằng cùng từ mẫu.
- OpenKey. README bản Windows ghi hỗ trợ từ Windows Vista trở lên và mặc định chạy với quyền Administrator. Mã nguồn đọc
vkCoderồi gửi chữ tiếng Việt ra dưới dạng sự kiện Unicode. Chưa có tài liệu nào cho biết cách này có theo Colemak hay không. - Bộ gõ có sẵn của Windows. Khi thêm tiếng Việt, Windows cài sẵn bộ gõ Vietnamese Telex. Bộ gõ theo số (Vietnamese Number Key-based, tức VNI) phải thêm riêng. Trang của Microsoft về bộ gõ tiếng Việt không nói gì về cách chúng làm việc với một layout bên thứ ba như Colemak.
macOS: nguồn nhập tiếng Việt có giữ Colemak không?
Theo trang của dự án UniKey, Apple đã tích hợp engine UniKey vào macOS từ Mac OS X Leopard, ra năm 2007. Trang đó cũng nói kiểu Simple Telex của macOS chạy trên engine UniKey. Đây là lời của dự án UniKey. Trang trợ giúp của Apple không nêu tên các nguồn nhập tiếng Việt.
Bạn thêm nguồn nhập ở System Settings > Keyboard > Text Input > Edit. Nếu macOS của bạn dùng giao diện tiếng Việt, tên các mục sẽ khác.
Câu hỏi quan trọng nhất là: khi chuyển sang nguồn nhập tiếng Việt, bàn phím còn là Colemak hay quay về QWERTY? Apple không có trang nào trả lời câu này. Cách kiểm tra là mở Keyboard Viewer. Theo Apple, công cụ này hiển thị layout bàn phím của nguồn nhập hiện tại. Chuyển qua lại giữa Colemak và nguồn tiếng Việt, rồi xem các chữ trên Keyboard Viewer có đổi chỗ không. Sau đó gõ thử dduwowcj.
Nếu nguồn nhập có sẵn không giữ được Colemak, OpenKey cho macOS là phương án có tài liệu rõ nhất. Pull request #166, được merge ngày 17/01/2021, thêm vào tab System một tùy chọn tương thích layout. Mô tả ghi rõ tùy chọn này chỉ hỗ trợ Telex. Tác giả đã thử trên Dvorak, Colemak và một layout Dvorak tự tạo bằng Ukelele. Không có thông tin cho biết tùy chọn này còn trong bản OpenKey hiện tại hay không, nên hãy kiểm tra trong bản bạn cài. Nếu bạn gõ VNI, tùy chọn này không áp dụng.
Linux: ibus-bamboo và fcitx5-unikey có giữ được Colemak không?
Trên Linux, cả hai bộ gõ phổ biến đều làm việc với chữ, không với mã phím. Vì vậy câu hỏi thật sự là khung bộ gõ (ibus hoặc fcitx5) có giữ layout Colemak hay đổi nó về US.
ibus-bamboo
README của ibus-bamboo nói dự án đã đứng lại khá lâu và có thể không được bảo trì nữa. Chính README đề nghị dùng fcitx5-unikey thay thế, vì nó gần như đủ tính năng và hỗ trợ Wayland tốt hơn. Nếu bạn vẫn dùng ibus-bamboo, đây là lệnh cài trên Ubuntu theo README:
sudo add-apt-repository ppa:bamboo-engine/ibus-bamboo
sudo apt-get update
sudo apt-get install ibus ibus-bamboo --install-recommends
ibus restartREADME tiếp tục đặt nguồn nhập của GNOME bằng gsettings, với layout us thuần. Đó là chỗ người dùng Colemak cần sửa. Thay 'us' bằng mã biến thể Colemak, giống cách bài hướng dẫn Linux ở trên dùng us+colemak:
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+colemak'), ('ibus', 'Bamboo')]"
gsettings get org.gnome.desktop.input-sources sourcesVới Colemak-DH, biến thể XKB tên là colemak_dh. README không nói cách thay này là đủ, nên sau đó hãy gõ thử từ mẫu.
Tiếp theo, mở ibus-setup và vào tab Advanced. Tùy chọn “Use system keyboard layout” quyết định ai giữ layout. Theo man page của ibus-setup, khi bật tùy chọn này, ibus dùng keymap của hệ thống và không để engine nào đổi nó. Khi tắt, ibus gọi setxkbmap để đặt keymap của engine đang chọn, đè lên keymap hệ thống. Vì vậy, với Colemak, hãy bật tùy chọn này.
Cũng cần chọn đúng engine. Trong data/bamboo.xml, engine Bamboo khai báo layout default, còn engine Bamboo::Us và BambooUs khai báo layout us. Lệnh dconf trong README nạp sẵn cả BambooUs lẫn Bamboo. Theo cách man page mô tả, khi tùy chọn trên đang tắt, chọn Bamboo::Us hoặc BambooUs sẽ khiến ibus đặt keymap us. Hãy dùng Bamboo.
Người dùng đã gặp đúng lỗi này. Issue #47 của ibus-bamboo, mở tháng 6/2019, là một người dùng Ubuntu 18.04 với Colemak: bộ gõ cứ quay về QWERTY, và sau mỗi lần khởi động họ phải chạy lại setxkbmap us -variant colemak. Thread kết thúc mà không có bản sửa được xác nhận. Đó là chuyện năm 2019 trên X11, không phải kết quả với bản hiện tại.
Trên phiên X11, setxkbmap -query cho biết layout và variant đang bật. Nếu lệnh báo không mở được display, bạn đang ở phiên Wayland, và layout là cài đặt của compositor.
fcitx5-unikey
Trên Ubuntu 24.04, fcitx5-unikey có trong kho gói:
sudo apt install fcitx5-unikeyfcitx5-unikey có các kiểu gõ Telex, VNI, VIQR và MS Vietnamese. Engine không khai báo layout riêng, nên layout đến từ nhóm bộ gõ (input method group) của Fcitx 5. Trong công cụ cấu hình Fcitx 5, mục Input Method, đặt layout của nhóm là Colemak hoặc Colemak-DH. Tên mục có thể khác một chút tùy phiên bản.
Trên Wayland, cách làm phụ thuộc vào desktop. Trang Wayland của Fcitx 5 ghi rằng Wayland không có cách chung để đặt layout XKB cho compositor, và layout do Fcitx quản lý hiện chỉ chạy trên KDE Plasma và GNOME. Với các desktop khác, tài liệu đưa ra một cách để nó chạy “tạm được”: layout của nhóm bộ gõ phải giống layout bạn đã đặt cho compositor. Khi đó Fcitx coi hai layout là một và bỏ qua bước chuyển đổi phím. Theo trang khái niệm cơ bản của Fcitx, khi layout đang dùng khác layout hệ thống, Fcitx áp dụng bản dịch XKB của riêng nó. Vì vậy, nếu desktop của bạn không phải KDE Plasma hay GNOME, hãy đặt Colemak ở cả hai nơi: trong cài đặt bàn phím của compositor và trong nhóm bộ gõ của Fcitx 5. Trên KDE Plasma và GNOME, Fcitx tự quản lý được layout, nên đặt Colemak cho nhóm bộ gõ là bước chính. Dù dùng desktop nào, hãy gõ thử từ mẫu sau đó.
Phím dấu Telex nằm ở đâu trên Colemak và Colemak-DH?
Vị trí dưới đây đếm từ trái sang, trên ba hàng chữ: hàng trên, hàng cơ sở (hàng đặt ngón tay khi nghỉ) và hàng dưới. Colemak-DH ở đây là bản DHm cho bàn phím ANSI thường. Vị trí lấy từ keymap console Colemak của dự án kbd và từ file xmodmap của dự án Colemak-DH.
Năm phím dấu thanh của Telex:
s(sắc): QWERTY ở hàng cơ sở, phím thứ 2. Colemak và Colemak-DH ở hàng cơ sở, phím thứ 3, chỗ chữ D của QWERTY.f(huyền): QWERTY ở hàng cơ sở, phím thứ 4. Colemak và Colemak-DH ở hàng trên, phím thứ 3, chỗ chữ E của QWERTY.r(hỏi): QWERTY ở hàng trên, phím thứ 4. Colemak và Colemak-DH ở hàng cơ sở, phím thứ 2, chỗ chữ S của QWERTY.x(ngã): QWERTY và Colemak ở hàng dưới, phím thứ 2, không đổi. Colemak-DH ANSI đưa nó sang phím thứ 1, chỗ chữ Z của QWERTY. Bản matrix của Colemak-DH giữ nó ở phím thứ 2.j(nặng): QWERTY ở hàng cơ sở, phím thứ 7. Colemak và Colemak-DH ở hàng trên, phím thứ 6, chỗ chữ Y của QWERTY.
Các phím tạo chữ và bỏ dấu:
a(choaathành â,awthành ă): hàng cơ sở, phím thứ 1, trên cả ba layout.e(choeethành ê): QWERTY ở hàng trên, phím thứ 3. Colemak và Colemak-DH ở hàng cơ sở, phím thứ 8, chỗ chữ K của QWERTY.o(chooothành ô,owthành ơ): QWERTY ở hàng trên, phím thứ 9. Colemak và Colemak-DH ở hàng cơ sở, phím thứ 10, chỗ dấu chấm phẩy của QWERTY.d(choddthành đ): QWERTY ở hàng cơ sở, phím thứ 3. Colemak ở hàng cơ sở, phím thứ 5, chỗ chữ G. Colemak-DH ANSI đưa nó xuống hàng dưới, phím thứ 3, chỗ chữ C. Bản matrix đặt nó ở hàng dưới, phím thứ 4.w(dấu móc và dấu trăng): hàng trên, phím thứ 2, trên cả ba layout.u(chouwthành ư): QWERTY ở hàng trên, phím thứ 7. Colemak và Colemak-DH ở hàng trên, phím thứ 8.z(bỏ dấu): QWERTY và Colemak ở hàng dưới, phím thứ 1. Colemak-DH ANSI đưa nó sang hàng dưới, phím thứ 5, chỗ chữ B, vì bàn phím ANSI không có phím thừa bên phải Shift trái.
Từ danh sách này có hai điều đáng chú ý. Thứ nhất, Colemak đổi chỗ các phím dấu thanh. Trên QWERTY, s, f và j nằm ở hàng cơ sở. Trên Colemak, chỉ s và r nằm ở đó, còn f và j lên hàng trên. Phản xạ Telex bạn đã có sẽ phải học lại cho cả năm dấu, trừ dấu ngã trên Colemak thường.
Thứ hai, các nguyên âm gõ đôi gần hàng cơ sở hơn. Trên QWERTY, e và o ở hàng trên. Trên Colemak, a, e, o và d đều ở hàng cơ sở. Colemak-DH chỉ khác ở chỗ d xuống hàng dưới. Một chữ gõ đôi như ee vẫn là một phím nhấn hai lần trên mọi layout, nên layout chỉ đổi hàng của phím đó, không đổi việc phải nhấn hai lần.
Vì sao VNI là lựa chọn hợp lý khi chuyển sang Colemak?
VNI đặt toàn bộ dấu lên hàng số. Theo hướng dẫn của Unikey: 1 là sắc, 2 là huyền, 3 là hỏi, 4 là ngã, 5 là nặng, 6 là dấu mũ (â, ê, ô), 7 là dấu móc (ư, ơ), 8 là dấu trăng (ă), d9 là đ, và 0 bỏ dấu. Bộ gõ VNI có sẵn của Windows dùng cùng cách: a8 thành ă, a6 thành â, d9 thành đ.
Hàng số trên Colemak và Colemak-DH vẫn là 1 đến 0 như QWERTY. Vì vậy phần dấu của VNI không phải học lại khi đổi layout. Bạn chỉ học lại các chữ cái, việc mà mọi người chuyển sang Colemak đều phải làm.
Có hai giới hạn. Các chữ gốc của VNI như a, e, o, u và d vẫn đổi chỗ theo layout. Và một bộ gõ đọc vị trí phím vẫn làm sai chữ cái, dù dấu bằng số vẫn đúng. Cho nên VNI giảm phần phải học lại, nhưng không thay được bước gõ thử.
Nếu bạn đang gõ Telex và định chuyển sang Colemak, hãy cân nhắc học VNI cùng lúc. Bạn sẽ chỉ học lại một thứ, là chữ cái, thay vì học lại cả chữ cái lẫn năm phím dấu. Đổi lại, bạn phải với lên hàng số thường xuyên hơn.
Nên chọn Colemak hay Colemak-DH nếu gõ Telex?
Dự án Colemak-DH cho biết vào tháng 5/2017, họ đổi chỗ M và K trên bàn phím so le thường, tạo ra bản DHk với K ở hàng cơ sở. Đến tháng 10/2020, dự án đổi lại. Bản dùng ở đây là DHm, với M ở hàng cơ sở. Nếu gặp tài liệu cũ nói về DHk, đó là lý do.
Với Telex, khác biệt giữa hai bản nằm ở d, x và z. Colemak giữ dd ở hàng cơ sở. Colemak-DH đưa d xuống hàng dưới và chuyển x, z sang chỗ khác. Phần còn lại của Telex nằm ở cùng vị trí trên cả hai. Lý do chọn DH nằm ở các phím không liên quan đến tiếng Việt, và bài giải thích Colemak-DH trình bày điều đó. Nếu bạn còn phân vân giữa các layout lớn, hãy đọc so sánh Colemak, Dvorak và QWERTY trước.
Trang chủ colemak.com nói chỉ có 2 phím đổi tay so với QWERTY. Năm phím dấu Telex không đổi tay, nhưng phần lớn chúng vẫn đổi chỗ, như danh sách ở trên cho thấy.
Quy trình kiểm tra sau khi đổi layout
- Cài Colemak như một layout của hệ điều hành, không qua chương trình bắt phím, nếu bạn có quyền quản trị.
- Bật bộ gõ tiếng Việt và gõ
dduwowcjtrong một trình soạn văn bản đơn giản. - Nếu ra “được”, gõ thêm một đoạn dài có đủ năm dấu để chắc chắn.
- Nếu ra chữ lộn xộn, kiểm tra xem layout có bị đổi về US không: Keyboard Viewer trên macOS,
setxkbmap -queryhoặcgsettings gettrên Linux, biểu tượng ngôn ngữ trên thanh tác vụ của Windows. - Nếu layout vẫn là Colemak mà chữ vẫn sai, bộ gõ đang đọc vị trí phím. Đổi bộ gõ, đổi chế độ (như hook và IME của EVKey), hoặc chuyển sang VNI.
- Khởi động lại máy rồi thử lần nữa. Người dùng trong issue #47 của ibus-bamboo chỉ thấy lỗi quay lại sau mỗi lần khởi động.
FAQ
Unikey có chạy được trên bàn phím Colemak không?
Không trang nào của Unikey nói về Colemak, nên chỉ có cách gõ thử. Cài Colemak bằng setup.exe của colemak.com để nó là layout của Windows, bật Unikey, rồi gõ dduwowcj. Nếu ra “được”, Unikey đang đọc chữ của layout. Thread diễn đàn Colemak năm 2018 cho biết Unikey không chạy tốt cùng PKL, nên tránh dùng PKL hoặc EPKL cùng Unikey nếu có thể.
Vì sao Telex ra chữ sai sau khi đổi sang Colemak?
Có hai nguyên nhân thường gặp. Hoặc bộ gõ đọc vị trí phím theo QWERTY thay vì đọc chữ của layout. Hoặc một chương trình khác đã đổi layout về US khi bộ gõ bật. Trên Linux, ibus có thể gây ra trường hợp thứ hai: theo man page, khi tùy chọn “Use system keyboard layout” tắt, ibus gọi setxkbmap để đặt keymap của engine đang chọn, đè lên keymap hệ thống. Kiểm tra layout đang bật trước, rồi mới kết luận về bộ gõ.
Có nên chuyển từ Telex sang VNI khi học Colemak?
Đó là một lựa chọn hợp lý. VNI đặt dấu trên hàng số, và hàng số không đổi trên Colemak và Colemak-DH, nên bạn chỉ phải học lại chữ cái. Với Telex, bạn phải học lại vị trí của các phím dấu s, f, r, j, vì chúng đều đổi chỗ trên Colemak. Trên Colemak-DH ANSI, cả x cũng đổi chỗ. Đổi lại, VNI bắt bạn với lên hàng số nhiều hơn.
Bộ gõ tiếng Việt nào trên Linux hợp với Colemak?
fcitx5-unikey là lựa chọn an toàn hơn hiện nay. Nó đọc ký hiệu phím chứ không đọc mã phím, và chính README của ibus-bamboo khuyên dùng nó vì ibus-bamboo đã đứng lại. Đặt layout Colemak cho nhóm bộ gõ trong Fcitx 5. Trên Wayland với desktop không phải KDE Plasma hay GNOME, đặt cùng layout đó cho compositor. Nếu dùng ibus-bamboo, chọn engine Bamboo và bật “Use system keyboard layout” trong ibus-setup.