-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 @@ -363,9 +363,10 @@ 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) { @@ -380,9 +381,10 @@ void Keyboard::mousePressEvent(QMouseEvent *e) } // Accent character support - if (unicode == 0xb4) { + //if (unicode == 0xb4) { + if (unicode == 0x2ca) { unicode = 0; if (shift || lock) { @@ -765,8 +767,15 @@ void Keyboard::mouseReleaseEvent(QMouseEvent*) shift = 0; // reset the shift pointer repaint(FALSE); } + if (ctrl && unicode != 0) { + + *ctrl = 0; + ctrl = 0; + repaint(FALSE); + + } /* * do not make the meta key release after being pressed * @@ -1014,11 +1023,11 @@ void Keyboard::loadKeyboardColors() { * how korean input works * * 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 * there are 27 echars. unicode position is at 11a8 - 11c2 @@ -1056,51 +1065,51 @@ 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; } @@ -1461,9 +1470,9 @@ void Keys::setKeysFromFile(const char * filename) { tmp >> d >> lower >> shift; baccentMap.insert(lower, shift); - qDebug ("Estoy aadiendo %i con %i", lower, shift); + qDebug ("Estoy aadiendo %i con %i", lower, shift); buf = t.readLine(); } // accent else if (buf.contains(QRegExp("^\\s*a\\s+[0-9a-fx]+\\s+[0-9a-fx]+\\s*$", FALSE, FALSE))) { |