-rw-r--r-- | inputmethods/multikey/keyboard.cpp | 57 |
1 files changed, 33 insertions, 24 deletions
diff --git a/inputmethods/multikey/keyboard.cpp b/inputmethods/multikey/keyboard.cpp index de3aa52..08318bd 100644 --- a/inputmethods/multikey/keyboard.cpp +++ b/inputmethods/multikey/keyboard.cpp @@ -364,7 +364,8 @@ void Keyboard::mousePressEvent(QMouseEvent *e) // Back accent character support - if (unicode == 0x60) { + //if (unicode == 0x60) { // the keys from 2c6 ~ 2cf should be used instead of the ascii one + if (unicode == 0x2cb) { unicode = 0; if (shift || lock) { @@ -381,7 +382,8 @@ void Keyboard::mousePressEvent(QMouseEvent *e) // Accent character support - if (unicode == 0xb4) { + //if (unicode == 0xb4) { + if (unicode == 0x2ca) { unicode = 0; if (shift || lock) { @@ -766,6 +768,13 @@ void Keyboard::mouseReleaseEvent(QMouseEvent*) repaint(FALSE); } + if (ctrl && unicode != 0) { + + *ctrl = 0; + ctrl = 0; + repaint(FALSE); + + } /* * do not make the meta key release after being pressed @@ -1015,9 +1024,9 @@ void Keyboard::loadKeyboardColors() { * * all following chars means unicode char value and are in hex * - * = schar (start char) - * = mchar (middle char) - * = echar (end char) + * 초음 = schar (start char) + * 중음 = mchar (middle char) + * 끝음 = echar (end char) * * there are 19 schars. unicode position is at 1100 - 1112 * there are 21 mchars. unicode position is at 1161 - 1175 @@ -1057,49 +1066,49 @@ ushort Keyboard::parseKoreanInput (ushort c) { } else { // must figure out what the echar is - if (echar == 0x11a8) { // + if (echar == 0x11a8) { // ㄱ - if (c == 0x1100) echar = 0x11a9; // + - else if (c == 0x1109) echar = 0x11aa; // + + if (c == 0x1100) echar = 0x11a9; // ㄱ + ㄱ + else if (c == 0x1109) echar = 0x11aa; // ㄱ + ㅅ else { schar = c; mchar = 0; echar = 0; return c; } - } else if (echar == 0x11ab) { // + } else if (echar == 0x11ab) { // ㄴ - if (c == 0x110c) echar = 0x11ac; // + - else if (c == 0x1112) echar = 0x11ad; // + + if (c == 0x110c) echar = 0x11ac; // ㄴ + ㅈ + else if (c == 0x1112) echar = 0x11ad; // ㄴ + ㅎ else { schar = c; mchar = 0; echar = 0; return c; } - } else if (echar == 0x11af) { // + } else if (echar == 0x11af) { // ㄹ - if (c == 0x1100) echar = 0x11b0; // + - else if (c == 0x1106) echar = 0x11b1; // + - else if (c == 0x1107) echar = 0x11b2; // + - else if (c == 0x1109) echar = 0x11b3; // + - else if (c == 0x1110) echar = 0x11b4; // + - else if (c == 0x1111) echar = 0x11b5; // + - else if (c == 0x1112) echar = 0x11b6; // + + if (c == 0x1100) echar = 0x11b0; // ㄹ + ㄱ + else if (c == 0x1106) echar = 0x11b1; // ㄹ + ㅁ + else if (c == 0x1107) echar = 0x11b2; // ㄹ + ㅂ + else if (c == 0x1109) echar = 0x11b3; // ㄹ + ㅅ + else if (c == 0x1110) echar = 0x11b4; // ㄹ + ㅌ + else if (c == 0x1111) echar = 0x11b5; // ㄹ + ㅍ + else if (c == 0x1112) echar = 0x11b6; // ㄹ + ㅎ else { schar = c; mchar = 0; echar = 0; return c; } - } else if (echar == 0x11b8) { // + } else if (echar == 0x11b8) { // ㅂ - if (c == 0x1109) echar = 0x11b9; // + + if (c == 0x1109) echar = 0x11b9; // ㅂ + ㅅ else { schar = c; mchar = 0; echar = 0; return c; } - } else if (echar == 0x11ba) { // + } else if (echar == 0x11ba) { // ㅅ - if (c == 0x1109) echar = 0x11bb; // + + if (c == 0x1109) echar = 0x11bb; // ㅅ + ㅅ else { schar = c; mchar = 0; echar = 0; return c; @@ -1462,7 +1471,7 @@ void Keys::setKeysFromFile(const char * filename) { baccentMap.insert(lower, shift); - qDebug ("Estoy aadiendo %i con %i", lower, shift); + qDebug ("Estoy aadiendo %i con %i", lower, shift); buf = t.readLine(); } // accent |