![[Image]](http://vnoss.net/bantin/18/img/xvnkb.png)
Đây là tóm tắt các bước để thêm một bảng mã mới cho xvnkb. Sau đây lấy ví dụ là bảng mã BKHCM2.
$ uvconv -f viqr -t bkhcm2 viqr.h > bkhcm2.hTrong file mới bkhcm2.h, chỉnh *VIQR[] thành *BKHCM2[].
inline void VKChangeCharset(int id)
{
static char **cmap[] = { TCVN, VNI, VIQR, VISCII, VPS, UTF8, BKHCM2 };
vk_charmap = cmap[vk_charset = (id % 7)];
VKClearBuffer();
}
typedef enum {
VKC_TCVN, VKC_VNI, VKC_VIQR, VKC_VISCII, VKC_VPS, VKC_UTF8, VKC_BKHCM2
} vk_charsets;
vk_rcinfo vk_copts[] = {
{"tcvn", &vk_charset, VKC_TCVN},
{"vni", &vk_charset, VKC_VNI},
{"viqr", &vk_charset, VKC_VIQR},
{"viscii", &vk_charset, VKC_VISCII},
{"vps", &vk_charset, VKC_VPS},
{"utf8", &vk_charset, VKC_UTF8},
{"bkhcm2", &vk_charset, VKC_BKHCM2},
{0}
};
{ 0, 0, "Unicode", 3, &vk_charset, VKC_UTF8 },
{ 0, 0, "Tcvn3", 3, &vk_charset, VKC_TCVN },
{ 0, 0, "Vni", 3, &vk_charset, VKC_VNI },
{ 0, 0, "Viqr", 3, &vk_charset, VKC_VIQR },
{ 0, 0, "Viscii", 3, &vk_charset, VKC_VISCII },
{ 0, 0, "Vps", 3, &vk_charset, VKC_VPS },
{ 0, 0, "BKHCM2", 3, &vk_charset, VKC_BKHCM2 },
{ 0, 0, "Interface", 0 },
{ 0, 0, "English", 4, &vk_interface, VK_ENGLISH },
{ 0, 0, "Vietnamese", 4, &vk_interface, VK_VIETNAMESE },
cho cả tiếng Anh và tiếng Việt.