X11Keymaps vi

From Apache OpenOffice Wiki
Jump to: navigation, search

Trang này bằng tiếng: Anh

Tôi không thể gõ tiếng Việt trong X11

Đáp ứng nhanh: bạn cần phải tạo một sơ đồ phím riêng.

Đáp ứng thân thiện với người dùng: thực sự dễ sửa, đừng lo, đọc tiếp nhé...

Bố trí bàn phím (keyboard layout) Unicode cho ngôn ngữ đã chọn, mà hoạt động được trong giao diện người dùng đồ họa Mac OSX chính, lúc bây giờ không hoạt động được trong hệ thống cửa sổ X11, hoặc trong những chương trình bạn muốn chạy dưới X11. Bạn đã bật những bố trí bàn phím hệ thống (tùy chọn "Use the system keyboard layout") trong tùy thích Preferences của X11. Bạn có thể gõ các chữ cần bấm chỉ một phím. Nhưng mà những « phím chết » mà bình thường thêm dấu vào âm, chỉ nhập dấu cách thôi.

Vì lý do nào, X11 không đọc được bố trí bàn phím Unicode OSX. Khi nó nên đọc « phím chết », nó chỉ đọc « dấu cách ». Tùy nhiên, chúng ta có khả năng báo nó làm gì. Công cụ hữu ích trong trường hợp này là một chương trình nhỏ tên xmodmap (có sẵn trên hệ thống, không cần cài đặt thêm).

xmodmap, như tiền tố « x » ngụ ý, chạy dưới X11. Đừng thử chạy nó trong thiết bị cuối Terminal, trong trình bao bình thường. Nó sẽ hiển thị thông điệp lỗi về việc thử mở cửa sổ. Nó cần thiết hệ thống cửa sổ X11.

Trong X11, hãy chọn bố trí bàn phím đã muốn (v.d. tiếng Việt, bố trí có sẵn hay bố trí thêm được cài đặt từ gói trên trang này trong trình đơn gõ Input Menu (bên phải thanh trình đơn ở đầu màn hình, hiển thị cờ của ngôn ngữ hiện thời hoạt động: nếu trình đơn này không hiển thị, mở tùy thích hệ thống System Preferences, mở phần quốc tế International, chọn thanh Input Menu và đánh dấu trong hộp chọn bên dưới "Show Input Menu in menubar"). Sau đó, chạy lệnh:

xmodmap -pke > tên_bố_trí.map

lúc đó thay thế một tên nhận diện bố trí bạn mới hoạt động (v.d. TCVN, Viet_VNI). Bạn có thể muốn tạo vài bố trí như vậy, thì cần phải có khả năng phân biệt chúng.

Không có kết xuất trong cửa sổ X11, nhưng bạn mới tạo một tập tin tên, v.d. « viet_tcvn.map » trong thư mục người dùng chính (~). (Đây là thư mục có tên người dùng của bạn. Tất cả các thiết lập và tập tin riêng của bạn nằm dưới thư mục này. Hãy xem nó là nhánh riêng của cây máy tính. :) )

Tôi đã dùng tên tập tin « vietnamese_tcvn », vì tôi sử dụng bố trí bàn phím "Vietnamese-TCVN".

Vậy lúc bây giờ bạn có một tập tin liệt kê mọi phím hoạt động trên bố trí hiện thời. (Khi chuyển đổi bố trí và chạy lại cùng lệnh, có tạo danh sách các phím của bố trí đó.) Hãy mở nó trong chương trình soạn thảo văn bản (v.d. TextEdit). Bạn thấy rằng mỗi phím có mã phím (keycode) duy nhất, và các phím không nhất thiết theo cùng một thứ tự của bàn phím vật lý của máy tính. Tuy nhiên, thường bạn có thể nhận diện mỗi phím với ký tự gõ. Chưa chắc về phím nào, hãy gõ lệnh xev trong cửa sổ X11, rồi bấm bất cứ phím nào. xev hiển thị thông tin về mỗi cú bấm phím. Chẳng hạn, khi tôi bấm phím chết cho dấu huyền (`), xev xuất:

KeyPress event, serial 22, synthetic NO, window 0xc00001,
    root 0x57, subw 0x0, time 148597384, (1,193), root:(21,257),
    state 0x0, keycode 31 (keysym 0xfe50, dead_grave), same_screen YES,
    XLookupString gives 1 bytes: (60) "`"
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: True

Trong kết xuất này, bạn thậy "dead_grave" (phím chết, dấu huyền), và "keycode 31" (mã phím là 31). Bấm bất cứ phím nào, để thấy thông tin tương ứng về nó. Rất có thể là bạn tìm biết các phím chết không hoạt động được. Lúc đó, tôi cũng vậy.

Ghi chú : xev báo bạn biết về toàn bộ hoạt động của bàn phím. Bạn gõ tiếp, cuộn hay sử dụng con chuột thì nó xuất thông tin về hết ! Gõ lệnh hủy bỏ tiến trình Ctrl-C để thoát khỏi xev.

Lúc này, bạn xem sơ đồ phím (v.d. "viet_tcvn.map"). Tìm mã phím (keycode) của mỗi phím nên hoạt động như là phím chết (nhập dấu phụ). Bên cạnh mã phím có gì vậy? Trong mẫu thí dụ này, bố trí TCVN, cho phím chết gõ dấu huyền (phím 5), thông tin nền là:

keycode 31 = dead_grave dead_grave 5 percent

(mã phím 31 = phím chết dấu huyền, phím chết dấu huyền, số 5, dấu phần trăm)

nhưng không phải. Nó là:

keycode  31 = space NoSymbol 5 percent

(mã phím 31 = dấu cách, không ký hiệu, số 5, dấu phần trăm)

và đó là lý do tôi gõ dấu cách thay cho dấu huyền.

Mỗi sơ đồ phím hiển thị thông tin theo mẫu này:

keycode xx = chuẩn phím_dài option phím_dài-option

vì thế phím số 5 có thông tin:

keycode  31 = space NoSymbol 5 percent

sẽ gõ dấu cách khi được bấm một lần, không gì khi được bấm cùng với phím dài, số 5 khi được bấm cùng với phím Option, và dấu phần trăm khi được bấm cùng với cả hai phím dài và phím Option. Có ích khi hiểu mẫu này, để sửa đổi bố trí, tạo bố trí riêng.:)

Hãy xem sơ đồ phím và nhận diện mã nhận diện của mỗi phím chết. Rất có thể bạn thấy chúng không nhập dấu phụ. Đó là lý do phím chết không hoạt động được khi bạn dùng bàn phím. Hệ thống cửa sổ X11 đọc sơ đồ phím này khi nó mở. Hiện thời, nó không nhận thông tin đúng.

Cho nó thông tin đúng như thế nào?

Chúng ta tạo sơ đồ phím riêng. :)

Không cần xác định mọi phím, chỉ những phím hiện thời không gõ đúng, và phím khác ASCII trong bố trí đó. Cần phải xác định các phím khác ASCII vì sơ đồ phím này thật sẽ thay thế bố trí bàn phím đã chọn cho ngôn ngữ này. Vậy chúng ta cần phải xác định ký tự nào không nằm trên bàn phím mặc định.

Bàn phím mặc định phụ thuộc vào miền địa phương đã chọn. Xem thư mục:

/usr/X11R6/lib/X11/locale

(Các miền địa phương cho X11 nằm trong thư mục này. Lệnh locale -a trong thiết bị cuối sẽ liệt kê mọi miền địa phương nằm trên hệ thống, không phải chỉ trong X11.)

Có một miền địa phương Mac OSX cho ngôn ngữ của bạn thì bạn rất có thể không có vấn đề này. (Hiện thời không có miền địa phương UTF-8 cho tiếng Việt. Tôi cố gắng tạo một điều. Khi tạo được, tôi sẽ thêm liên kết vào bài đây.) Không có miền địa phương cho ngôn ngữ thì bạn cần phải xác định điều gần nhất, để làm miền địa phương cơ bản cho những ký tự thêm bạn sẽ chèn vào sơ đồ phím mới. Vì thế bạn nên chọn một miền địa phương tồn tại cũng dùng chữ viết của ngôn ngữ bạn, và chứa càng nhiều ký tự của nó càng có thể.

Vì OSX chưa có miền địa phương UTF-8 cho tiếng Việt, tôi chọn miền địa phương en_US.UTF-8 mà dùng cùng một chữ viết (Ro-manh) với tiếng Việt.

Để xem những ký tự nào có sẵn, hãy thấy bên trong miền địa phương mặc định mới chọn, tìm một tập tin tên "Compose". Nó sẽ liệt kê mọi ký tự có thể trong miền địa phương đó. Trong miền địa phương UTF-8 có rất nhiều ! Để tìm dễ hơn, mở tập tin Compose trong trình soạn thảo văn bản, và tìm chuỗi « dead_ », hay tên của ký tự nào cần tìm.

Một khi chọn miền địa phương mặc định thích hợp nhất cho cơ bản của ngôn ngữ bạn muốn gõ, bạn cũng có khả năng chọn bố trí bàn phím đó trong trình đơn gõ Input Menu và chạy lệnh (trong X11):

xmodmap -pke > miền_mặc_định.map

(chọn tên tập tin thích hợp), để liệt kê mọi ký tự có sẵn. Bằng cách đó, bạn biết những ký tự bình thường sẽ được gõ nếu bạn dùng bố trí đó.

Bây giờ chúng ta sẵn sàng tạo sơ đồ riêng, sơ đồ bổ trợ cho điều mặc định. Hãy mở một tài liệu văn bản (v.d. trong TextEdit), và ghi mã nhận diện thứ nhất bạn muốn thay đổi. Trong trường hợp của tôi, đó là:

keycode 31 =

Sau đó, chọn (từ tập tin Compose) những ký tự bạn muốn nó nhập. Tôi gõ :

keycode 31 = dead_grave dead_grave 5 percent

để làm cho nó nhập dấu huyền khi được bấm một lần hay cùng với phím dài. Do đó tôi có thể sử dụng nó khi gõ cả chữ thường lẫn chữ hoa.

Tuy nhiên, tôi không muốn mất khả năng truy cập số 5 hay dấu phần trăm. Vậy tôi chèn hai ký tự này trong vị trí Optionphím_dài-Option riêng từng cái. Sửa xong thì lưu tập tin như là « sơ_đồ_riêng » hay thích hợp. Mã phím đã được thay đổi.

Lúc này, trước khi bạn sửa đổi các mã phím khác, hãy thử ra. Trong X11, chạy lệnh:

xmodmap sơ_đồ_riêng

rồi thử gõ bằng phím đó. Nó gõ được không? Nó nên gõ được. :)

Trở về tập tin « sơ_đồ_riêng », và ghi chi tiết cho những phím khác bạn muốn thay đổi.

Chạy lệnh:

xmodmap sơ_đồ_riêng

một lần nữa, để thử ra.

Bạn sẽ cũng thấy rằng việc bật sơ đồ mới trong xmodmap đã tắt ký tự nào trong bố trí đã chọn, mà không được đại diện bằng bàn phím mặc định, trong trường hợp của tôi là bàn phím tiếng Anh (Úc).

Trong trường hợp của tôi, có vài nguyên âm gõ bằng một lần bấm phím (ă, â, ê, ô, ư, ơ), ký tự đ, và dấu đồng ₫, cả không còn hoạt động lại. Không có sao : tôi thêm chúng vào sơ đồ phím.

Để diễn tả ký tự, bạn có thể sử dụng hoặc mô tả trong tập tin Compose của miền địa phương mặc định, hoặc mã Unicode. Cũng có thể tìm mã Unicode của bất cứ ký tự nào, bằng chương trình miễn phí Unicode Checker: chỉ gõ ký tự vào cửa sổ và nó sẽ hiển thị toàn bộ thông tin Unicode về nó (ghi chú : gỡ bỏ dấu cộng thì « U+20AB » trở thành « U20AB »). Unicode Checker rất hữu ích để tìm thông tin Unicode, và chuyển đổi giữa những định dạng khác nhau (cũng có một số mục trong trình đơn Services).

Đây là sơ đồ phím hoàn hoàn cho bố trí tiếng Việt của tôi:

keycode  18 = U20AB plus equal plus
keycode  26 = abreve Abreve 1 exclam
keycode  27 = acircumflex Acircumflex 2 at
keycode  28 = ecircumflex Ecircumflex 3 numbersign
keycode  29 = ocircumflex Ocircumflex 4 dollar
keycode 30 = dead_hook dead_hook 6 asciicircum
keycode 31 = dead_grave dead_grave 5 percent
keycode 33 = dead_belowdot dead_belowdot 9 parenleft
keycode 34 = dead_tilde dead_tilde 7 ampersand
keycode 36 = dead_acute dead_acute 8 asterisk
keycode 37 = dstroke Dstroke 0 parenright
keycode 38 = U01A1 U01A0 bracketright braceright
keycode 41 = U01B0 U01AF bracketleft braceleft

Sơ đồ này thì bật năm phím chết, các nguyên âm bị thiếu, đ, ₫, và cùng với phím Option và phím dài và Option, các ký tự được thay thế bằng những ký tự đó: những ký tự con số và dấu chấm câu.

Mô tả tiếng Anh của ký tự
mô tả v.d. tiếng Việt
circumflex â dấu mũ
dead chết
hook dấu hỏi
grave è dấu huyền
belowdot dấu nặng
tilde ĩ dấu ngã
acute dấu sắc
stroke đ gạch đè

Bây giờ bạn biết cách sửa đổi sơ đồ phím: có thể bạn muốn thêm một số ký tự hữu ích vào những vị trí Option and phím dài-Option. (Cũng có thể dùng NoSymbol để điền vào nơi trống). Khả năng sửa đổi sơ đồ phím có ích để tránh trường hợp cần phải chuyển đổi bố trí. Trong GUI OSX chính, bạn cũng có thể sửa đổi bố trí OSX bằng ứng dụng tên Ukelele.

Cũng không cần chạy lệnh:

xmodmap sơ_đồ_riêng

mỗi lần bạn mở X11. Để tự động chạy nó mỗi lần mở X11, gõ lệnh này vào cửa sổ X11:

cat sơ_đồ_riêng >> ~/.Xmodmap

Lệnh này tạo một tập tin tên ".Xmodmap", mà chứa sơ đồ riêng của bạn. X11 sẽ đọc nó mỗi lần nó mở. Để thay đổi ứng xử này, chỉ cần mở tập tin ".Xmodmap" và sửa chi tiết.

Cám ơn Jun. T và Tom Gewecke của Diễn đàn UNIX Apple đã giúp đỡ.

Personal tools