-
Xây dựng hàm chuyển xâu
strtừ bảng mãcharsetAsang bảng mãcharsetB:Glib::ustring convertCharset (Glib::ustring str, CharSet charsetA, CharSet charsetB).-
CharSetlà alias củaguint, mỗi bảng mã nhận một số nguyên dương duy nhất làm ID. -
Tại hàm
processKey, xâu và ký tự input (strvàchtương ứng) sẽ được xử lý thông qua trình tự:- Convert
strsang UTF-8. - Convert ký tự
chsang UTF-8. - Xử lý
strvàchsau khi đã convert, thu được kết quả. - Convert kết quả sang bảng mã output và trả kết quả về.
- Convert
-
-
Nâng cao: cân nhắc và đo đạc thêm về việc xử lý trực tiếp ký tự trong bảng mã mà người dùng sử dụng, không thông qua bước convert:
-
Khi đó các hằng liên quan đến ký tự sẽ có thêm một chỉ số ID của bảng mã, chẳng hạn:
Vowels[CHARSET_UTF8]là danh sách nguyên âm trong bảng mã UTF-8,Vowels[CHARSET_TCVN3]là danh sách nguyên âm trong bảng mã TCVN 3, ... -
Các hàm xử lý ký tự và từ cũng nhận thêm tham số ID của bảng mã.
-
Key1 Transformation1
Key2 Transformation2
...
Trong đó Key là phím người sử dụng nhấn để có được phép biến đổi
Transformation. File mô tả có thể có dòng trắng. Mỗi cặp Key và
Transformation ngăn cách với nhau ít nhất một dấu cách.
Key là ký tự trong bảng chữ cái tiếng Anh, hoặc chữ số, hoặc một trong số
các ký tự đặc biệt: ( ) [ ] { } < > / | \ ! + = ? # . , ; : ~ @ ^ ` & % $.
Phép biến đổi Transformation được quy ước là một trong các ký tự sau:
-
Thêm mũ (hat)
a^, biến a thành â, A thành Â.o^, biến o thành ô, O thành Ô.e^, biến e thành ê, E thành Ê.
-
Thêm sừng (horn):
o+, biến o thành ơ, O thành Ơ.u+, biến u thành ư, U thành Ư.
-
Thêm dấu ă (breve):
v, biến a thành ă, A thành Ă. -
Thêm thanh ngang (bar) cho chữ cái
dvàD:-, biến d thành đ, D thành Đ. -
Thêm dấu huyền (grave):
\\ -
Thêm dấu sắc (acute):
/ -
Thêm dấu hỏi (hook):
? -
Thêm dấu ngã (tilde):
~ -
Thêm dấu nặng (dot):
. -
Xóa dấu:
_
Ví dụ: nội dung của file mô tả kiểu gõ Simple Telex:
a a^
o o^
e e^
w o+
w u+
w v
d -
f \
s /
r ?
x ~
j .
z _
Ghi chú: Để thêm dấu cho một đoạn text, cần tìm từ cuối cùng của text, chẳng hạn "nànố", "mèovàng", ...
"[kiểu mới](http://vi.wikipedia.org/wiki/Quy_tắc_đặt_dấu_thanh_trong_tiếng_Việt#Ki.E1.BB.83u_m.E1.BB.9Bi)"?
cmpitg: không hỗ trợ, không ủng hộ cách bỏ dấu "kiểu mới". Để giữ gìn sự trong sáng của tiếng việt.
Ví dụ:
- "mecf" thành "mèc" hay "mecf"?
- "mecfwee" thành "mecfê" hay "mecfwee"?