spiegel-keyman/linux/mcompile/keymap/deadkey.cpp
2024-02-20 17:16:31 +01:00

492 lines
25 KiB
C++
Executable file

#include "keymap.h"
#include "deadkey.h"
v_dw_1D createLine(std::wstring first, std::wstring second, KMX_DWORD number, std::wstring nameresult) {
v_dw_1D line;
line.push_back(convertNamesTo_DWORD_Value(first));
line.push_back(convertNamesTo_DWORD_Value(second));
//line.push_back(convertNamesTo_DWORD_Value(nameresult));
line.push_back(number);
return line;
}
std::vector<DeadKey*> create_alDead() {
std::vector<DeadKey*> alDead;
v_dw_2D dk_ComposeTable;
create_DKTable(dk_ComposeTable);
for( int i=0; i < (int) dk_ComposeTable.size()-1; i++) {
DeadKey *dk2 = new DeadKey(dk_ComposeTable[i][0]);
for ( int j=0; j< (int) dk_ComposeTable.size();j++) {
if(( dk_ComposeTable[i][0] == dk_ComposeTable[j][0]) && (IsKeymanUsedChar(dk_ComposeTable[j][1])))
dk2->KMX_AddDeadKeyRow(dk_ComposeTable[j][1],dk_ComposeTable[j][2]);
}
alDead.push_back(dk2);
}
return alDead;
}
void refine_alDead(KMX_WCHAR dk, std::vector<DeadKey*> &dkVec, std::vector<DeadKey*> *p_All_Vec) {
if( dk == 0)
return;
for (int j=0; j < (int) (*p_All_Vec).size()-1;j++) {
if( dk == (*p_All_Vec)[j]->KMX_GetDeadCharacter()) {
if(! found_dk_inVector(dk, dkVec)) {
dkVec.push_back((*p_All_Vec)[j]);
return;
}
else return;
}
}
}
bool found_dk_inVector(KMX_WCHAR dk, std::vector<DeadKey*> &dkVec) {
int i=0;
if( dkVec.size() > 0) {
do {
if( dk == dkVec[i]->KMX_GetDeadCharacter())
return true;
i++;
} while (i < (int) dkVec.size());
}
return false;
}
void sort_alDead(std::vector<DeadKey*> &small_Vec, std::vector<DeadKey*> *p_All_Vec) {
std::vector<DeadKey*> small_sorted;
int Vsmall_size;
int i = 0;
do {
int j = 0;
Vsmall_size= small_Vec.size();
do {
if((*p_All_Vec)[i]->KMX_DeadCharacter() == small_Vec[j]->KMX_DeadCharacter()) {
small_sorted.push_back(small_Vec[j]);
small_Vec.erase(std::next(small_Vec.begin()+j-1));
Vsmall_size--;
}
j++;
} while (j < Vsmall_size);
i++;
} while ((i < (int) (*p_All_Vec).size()) && (Vsmall_size>0));
small_Vec = small_sorted;
}
bool find_dk_combinations_for_specific_dk(v_dw_2D * p_dk_ComposeTable, v_dw_2D &dk_SingleTable, KMX_DWORD dk) {
v_dw_1D line;
for ( int i =0; i< (int) (*p_dk_ComposeTable).size(); i++) {
if (((*p_dk_ComposeTable)[i][0] == dk) && (IsKeymanUsedChar((*p_dk_ComposeTable)[i][1]))) {
line.push_back((*p_dk_ComposeTable)[i][0]);
line.push_back((*p_dk_ComposeTable)[i][1]);
line.push_back((*p_dk_ComposeTable)[i][2]);
dk_SingleTable.push_back(line);
line.clear();
}
}
if( dk_SingleTable.size()>0)
return true;
else
return false;
}
KMX_DWORD KMX_changeKeynameToCapital(KMX_DWORD KVal, KMX_DWORD &shift, GdkKeymap* keymap) {
guint Keyval = (guint) KVal;
GdkKeymapKey* keys;
gint n_keys;
KMX_DWORD Cap = (KMX_DWORD) gdk_keyval_to_upper (KVal);
if( Keyval !=0) {
gdk_keymap_get_entries_for_keyval(keymap, Keyval, &keys, &n_keys);
for (int i = 0; i < n_keys; i++) {
if (keys[i].group == 0) {
shift = keys[i].level;
return Cap;
}
}
}
return Cap;
}
// _S2 DESIGN NEEDED is this the right place to get dk from? if not where are they stored?
void create_DKTable(v_dw_2D & dk_ComposeTable) {
//create a 2D-Vector which contains data for ALL existing deadkey combinations on a Linux Keyboard:
//dk_ComposeTable[i][0] : First (e.g. dead_circumflex)
//dk_ComposeTable[i][1] : Second (e.g. a)
//dk_ComposeTable[i][3] : Unicode-Value (e.g. 0x00E2)
//values taken from: https://help.ubuntu.com/community/GtkDeadKeyTable#Latin
v_dw_1D line;
line = createLine(L"dead_circumflex", L"a", 0x00E2, L"small A with circumflex");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"A", 0x00C2, L"capital A with circumflex");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"e", 0x00EA, L"small E with circumflex");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"E", 0x00CA, L"capital E with circumflex");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"i", 0x00EE, L"small I with circumflex");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"I", 0x00CE, L"capital I with circumflex");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"o", 0x00F4, L"small O with circumflex");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"O", 0x00D4, L"capital O with circumflex");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"u", 0x00FB, L"small U with circumflex");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"U", 0x00DB, L"capital U with circumflex");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"a", 0x00E1, L"small A with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"A", 0x00C1, L"capital A with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"c", 0x0107, L"small C with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"C", 0x0106, L"capital C with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"e", 0x00E9, L"small E with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"E", 0x00C9, L"capital E with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"i", 0x00ED, L"small I with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"I", 0x00CD, L"capital I with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"l", 0x013A, L"small L with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"L", 0x0139, L"capital L with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"n", 0x0144, L"small N with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"N", 0x0143, L"capital N with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"o", 0x00F3, L"small O with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"O", 0x00D3, L"capital O with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"r", 0x0155, L"small R with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"R", 0x0154, L"capital R with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"s", 0x015B, L"small S with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"S", 0x015A, L"capital S with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"u", 0x00FA, L"small U with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"U", 0x00DA, L"capital U with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"y", 0x00FD, L"small Y with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"Y", 0x00DD, L"capital Y with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"z", 0x017A, L"small Z with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"Z", 0x0179, L"capital Z with acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_grave", L"a", 0x00E0, L"small A with grave");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_grave", L"A", 0x00C0, L"capital A with grave");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_grave", L"e", 0x00E8, L"small E with grave");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_grave", L"E", 0x00C8, L"capital E with grave");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_grave", L"i", 0x00EC, L"small I with grave");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_grave", L"I", 0x00CC, L"capital I with grave");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_grave", L"o", 0x00F2, L"small O with grave");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_grave", L"O", 0x00D2, L"capital O with grave");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_grave", L"u", 0x00F9, L"small U with grave");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_grave", L"U", 0x00D9, L"capital U with grave");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"a", 0x00E3, L"small A with tilde");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"A", 0x00C3, L"capital A with tilde");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"i", 0x0129, L"small I with tilde");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"I", 0x0128, L"capital I with tilde");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"n", 0x00F1, L"small N with tilde");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"N", 0x00D1, L"capital N with tilde");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"o", 0x00F5, L"small O with tilde");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"O", 0x00D5, L"capital O with tilde");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"u", 0x0169, L"small U with tilde");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"U", 0x0168, L"capital U with tilde");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_macron", L"a", 0x0101, L"small A with macron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_macron", L"A", 0x0100, L"capital A with macron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_macron", L"e", 0x0113, L"small E with macron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_macron", L"E", 0x0112, L"capital E with macron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_macron", L"i", 0x012B, L"small I with macron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_macron", L"I", 0x012A, L"capital I with macron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_macron", L"o", 0x014D, L"small O with macron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_macron", L"O", 0x014C, L"capital O with macron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_macron", L"u", 0x016B, L"small U with macron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_macron", L"U", 0x016A, L"capital U with macron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_breve", L"a", 0x0103, L"small A with breve");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_breve", L"A", 0x0102, L"capital A with breve");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_breve", L"g", 0x011F, L"small G with breve");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_breve", L"G", 0x011E, L"capital G with breve");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovedot", L"e", 0x0117, L"small E with dot above");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovedot", L"E", 0x0116, L"capital E with dot above");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovedot", L"i", 0x0131, L"small DOTLESS_I");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovedot", L"I", 0x0130, L"capital I with dot above");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovedot", L"z", 0x017C, L"small Z with dot above");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovedot", L"Z", 0x017B, L"capital Z with dot above");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"a", 0x00E4, L"small A with diaeresis");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"A", 0x00C4, L"capital A with diaeresis");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"e", 0x00EB, L"small E with diaeresis");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"E", 0x00CB, L"capital E with diaeresis");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"i", 0x00EF, L"small I with diaeresis");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"I", 0x00CF, L"capital I with diaeresis");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"o", 0x00F6, L"small O with diaeresis");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"O", 0x00D6, L"capital O with diaeresis");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"u", 0x00FC, L"small U with diaeresis");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"U", 0x00DC, L"capital U with diaeresis");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"y", 0x00FF, L"small Y with diaeresis");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"Y", 0x0178, L"capital Y with diaeresis");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovering", L"a", 0x00E5, L"small A with ring above");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovering", L"A", 0x00C5, L"capital A with ring above");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovering", L"u", 0x016F, L"small U with ring above");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovering", L"U", 0x016E, L"capital U with ring above");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_doubleacute", L"o", 0x0151, L"small O with double acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_doubleacute", L"O", 0x0150, L"capital O with double acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_doubleacute", L"u", 0x0171, L"small U with double acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_doubleacute", L"U", 0x0170, L"capital U with double acute");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"c", 0x010D, L"small C with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"C", 0x010C, L"capital C with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"d", 0x010F, L"small D with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"D", 0x010E, L"capital D with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"e", 0x011B, L"small E with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"E", 0x011A, L"capital E with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"l", 0x013E, L"small L with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"L", 0x013D, L"capital L with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"n", 0x0148, L"small N with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"N", 0x0147, L"capital N with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"r", 0x0159, L"small R with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"R", 0x0158, L"capital R with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"s", 0x0161, L"small S with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"S", 0x0160, L"capital S with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"t", 0x0165, L"small T with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"T", 0x0164, L"capital T with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"z", 0x017E, L"small Z with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"Z", 0x017D, L"capital Z with caron");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"c", 0x00E7, L"small C with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"C", 0x00C7, L"capital C with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"g", 0x0123, L"small G with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"G", 0x0122, L"capital G with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"k", 0x0137, L"small K with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"K", 0x0136, L"capital K with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"l", 0x013C, L"small L with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"L", 0x013B, L"capital L with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"n", 0x0146, L"small N with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"N", 0x0145, L"capital N with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"r", 0x0157, L"small R with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"R", 0x0156, L"capital R with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"s", 0x015F, L"small S with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"S", 0x015E, L"capital S with cedilla");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_ogonek", L"a", 0x0105, L"small A with ogonek");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_ogonek", L"A", 0x0104, L"capital A with ogonek");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_ogonek", L"e", 0x0119, L"small E with ogonek");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_ogonek", L"E", 0x0118, L"capital E with ogonek");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_ogonek", L"i", 0x012F, L"small I with ogonek");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_ogonek", L"I", 0x012E, L"capital I with ogonek");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_ogonek", L"u", 0x0173, L"small U with ogonek");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_ogonek", L"U", 0x0172, L"capital U with ogonek");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"space", 0x005E, L"CIRCUMFLEX_ACCENT");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"space", 0x0027, L"APOSTROPHE");
dk_ComposeTable.push_back(line); line.clear();
/*line = createLine(L"dead_acute", L"space", 0x00B4, L"ACUTE_ACCENT"); // _S2 ToDo remove - just for testing
dk_ComposeTable.push_back(line); line.clear();*/
line = createLine(L"dead_grave", L"space", 0x0060, L"GRAVE_ACCENT");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_breve", L"space", 0x02D8, L"BREVE");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovedot", L"space", 0x02D9, L"DOT_ABOVE");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovering", L"space", 0x02DA, L"RING_ABOVE");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_doubleacute", L"space", 0x02DD, L"DOUBLE_ACUTE_ACCENT");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"space", 0x02C7, L"CARON");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"space", 0x00B8, L"CEDILLA");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_ogonek", L"space", 0x02DB, L"OGONEK");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"space", 0x007E, L"TILDE");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_breve", L"dead_breve", 0x02D8, L"BREVE");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovedot", L"abovedot", 0x02D9, L"DOT_ABOVE");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovedot", L"dead_abovedot", 0x02D9, L"DOT_ABOVE");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_abovering", L"dead_abovering", 0x02DA, L"RING_ABOVE");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"apostrophe", 0x00B4, L"ACUTE_ACCENT");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"acute", 0x00B4, L"ACUTE_ACCENT");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_acute", L"dead_acute", 0x00B4, L"ACUTE_ACCENT");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_doubleacute", L"dead_doubleacute", 0x02DD, L"DOUBLE_ACUTE_ACCENT");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"caron", 0x02C7, L"CARON");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_caron", L"dead_caron", 0x02C7, L"CARON");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"comma", 0x00B8, L"CEDILLA");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"cedilla", 0x00B8, L"CEDILLA");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_cedilla", L"dead_cedilla", 0x00B8, L"CEDILLA");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"minus", 0x00AF, L"MACRON");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"asciicircum", 0x005E, L"CIRCUMFLEX_ACCENT");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"underscore", 0x00AF, L"MACRON");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_circumflex", L"dead_circumflex", 0x005E, L"CIRCUMFLEX_ACCENT");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"quotedbl", 0x00A8, L"DIAERESIS");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"diaeresis", 0x00A8, L"DIAERESIS");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_diaeresis", L"dead_diaeresis", 0x00A8, L"DIAERESIS");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_grave", L"grave", 0x0060, L"GRAVE_ACCENT");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_grave", L"dead_grave", 0x0060, L"GRAVE_ACCENT");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_macron", L"macron", 0x00AF, L"MACRON");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_macron", L"dead_macron", 0x00AF, L"MACRON");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_ogonek", L"ogonek", 0x02DB, L"OGONEK");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_ogonek", L"dead_ogonek", 0x02DB, L"OGONEK");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"asciitilde", 0x007E, L"TILDE");
dk_ComposeTable.push_back(line); line.clear();
line = createLine(L"dead_tilde", L"dead_tilde", 0x007E, L"TILDE");
dk_ComposeTable.push_back(line); line.clear();
}