diff --git a/README.md b/README.md index 54965db..6c128eb 100644 --- a/README.md +++ b/README.md @@ -20,10 +20,6 @@ Install the QtCore, QtGui and QtWidgets libraries and build headers, along with The above will place the qteletextmaker executable in the same directory as the source, type `./qteletextmaker` in the terminal to launch. Optionally, type `make install` afterwards to place the executable into /usr/local/bin. ## Current limitations -At the moment QTeletextMaker is in pre-alpha status so many features are not finished yet. The most-often encountered limitations are detailed here. - -Keymapping between ASCII and Teletext character sets is not yet implemented e.g. in English pressing the hash key will type a pound sign instead, and in other languages the square and curly brackets keys need to be pressed to obtain the accented characters. - The following X/26 enhancement triplets are not rendered by the editor, although the list is fully aware of them. - Invocation of Objects from POP and GPOP pages. - DRCS characters. diff --git a/keymap.h b/keymap.h new file mode 100644 index 0000000..b8fb63c --- /dev/null +++ b/keymap.h @@ -0,0 +1,545 @@ +/* + * Copyright (C) 2020, 2021 Gavin MacGregor + * + * This file is part of QTeletextMaker. + * + * QTeletextMaker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * QTeletextMaker is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with QTeletextMaker. If not, see . + */ + +#ifndef KEYMAP_H +#define KEYMAP_H + +#include + +static const QMap keymapping[24] = { + // Only used by X/26 enhancements, not directly by keyboard + { // 0 Latin G0 + }, + + { // 1 Cyrillic G0 1 Serbian/Croatian + { 0x0427, 0x40 }, // Ч CYRILLIC CAPITAL LETTER CHE + { 0x0410, 0x41 }, // А CYRILLIC CAPITAL LETTER A + { 0x0411, 0x42 }, // Б CYRILLIC CAPITAL LETTER BE + { 0x0426, 0x43 }, // Ц CYRILLIC CAPITAL LETTER TSE + { 0x0414, 0x44 }, // Д CYRILLIC CAPITAL LETTER DE + { 0x0415, 0x45 }, // Е CYRILLIC CAPITAL LETTER IE + { 0x0424, 0x46 }, // Ф CYRILLIC CAPITAL LETTER EF + { 0x0413, 0x47 }, // Г CYRILLIC CAPITAL LETTER GHE + { 0x0425, 0x48 }, // Х CYRILLIC CAPITAL LETTER HA + { 0x0418, 0x49 }, // И CYRILLIC CAPITAL LETTER I + { 0x0408, 0x4a }, // Ј CYRILLIC CAPITAL LETTER JE + { 0x041a, 0x4b }, // К CYRILLIC CAPITAL LETTER KA + { 0x041b, 0x4c }, // Л CYRILLIC CAPITAL LETTER EL + { 0x041c, 0x4d }, // М CYRILLIC CAPITAL LETTER EM + { 0x041d, 0x4e }, // Н CYRILLIC CAPITAL LETTER EN + { 0x041e, 0x4f }, // О CYRILLIC CAPITAL LETTER O + { 0x041f, 0x50 }, // П CYRILLIC CAPITAL LETTER PE + { 0x040c, 0x51 }, // Ќ CYRILLIC CAPITAL LETTER KJE + { 0x0420, 0x52 }, // Р CYRILLIC CAPITAL LETTER ER + { 0x0421, 0x53 }, // С CYRILLIC CAPITAL LETTER ES + { 0x0422, 0x54 }, // Т CYRILLIC CAPITAL LETTER TE + { 0x0423, 0x55 }, // У CYRILLIC CAPITAL LETTER U + { 0x0412, 0x56 }, // В CYRILLIC CAPITAL LETTER VE + { 0x0403, 0x57 }, // Ѓ CYRILLIC CAPITAL LETTER GJE + { 0x0409, 0x58 }, // Љ CYRILLIC CAPITAL LETTER LJE + { 0x040a, 0x59 }, // Њ CYRILLIC CAPITAL LETTER NJE + { 0x0417, 0x5a }, // З CYRILLIC CAPITAL LETTER ZE + { 0x040b, 0x5b }, // Ћ CYRILLIC CAPITAL LETTER TSHE + { 0x0416, 0x5c }, // Ж CYRILLIC CAPITAL LETTER ZHE + { 0x0402, 0x5d }, // Ђ CYRILLIC CAPITAL LETTER DJE + { 0x0428, 0x5e }, // Ш CYRILLIC CAPITAL LETTER SHA + { 0x040f, 0x5f }, // Џ CYRILLIC CAPITAL LETTER DZHE + { 0x0447, 0x60 }, // ч CYRILLIC SMALL LETTER CHE + { 0x0430, 0x61 }, // а CYRILLIC SMALL LETTER A + { 0x0431, 0x62 }, // б CYRILLIC SMALL LETTER BE + { 0x0446, 0x63 }, // ц CYRILLIC SMALL LETTER TSE + { 0x0434, 0x64 }, // д CYRILLIC SMALL LETTER DE + { 0x0435, 0x65 }, // е CYRILLIC SMALL LETTER IE + { 0x0444, 0x66 }, // ф CYRILLIC SMALL LETTER EF + { 0x0433, 0x67 }, // г CYRILLIC SMALL LETTER GHE + { 0x0445, 0x68 }, // х CYRILLIC SMALL LETTER HA + { 0x0438, 0x69 }, // и CYRILLIC SMALL LETTER I + { 0x0458, 0x6a }, // ј CYRILLIC SMALL LETTER JE + { 0x043a, 0x6b }, // к CYRILLIC SMALL LETTER KA + { 0x043b, 0x6c }, // л CYRILLIC SMALL LETTER EL + { 0x043c, 0x6d }, // м CYRILLIC SMALL LETTER EM + { 0x043d, 0x6e }, // н CYRILLIC SMALL LETTER EN + { 0x043e, 0x6f }, // о CYRILLIC SMALL LETTER O + { 0x043f, 0x70 }, // п CYRILLIC SMALL LETTER PE + { 0x045c, 0x71 }, // ќ CYRILLIC SMALL LETTER KJE + { 0x0440, 0x72 }, // р CYRILLIC SMALL LETTER ER + { 0x0441, 0x73 }, // с CYRILLIC SMALL LETTER ES + { 0x0442, 0x74 }, // т CYRILLIC SMALL LETTER TE + { 0x0443, 0x75 }, // у CYRILLIC SMALL LETTER U + { 0x0432, 0x76 }, // в CYRILLIC SMALL LETTER VE + { 0x0453, 0x77 }, // ѓ CYRILLIC SMALL LETTER GJE + { 0x0459, 0x78 }, // љ CYRILLIC SMALL LETTER LJE + { 0x045a, 0x79 }, // њ CYRILLIC SMALL LETTER NJE + { 0x0437, 0x7a }, // з CYRILLIC SMALL LETTER ZE + { 0x045b, 0x7b }, // ћ CYRILLIC SMALL LETTER TSHE + { 0x0436, 0x7c }, // ж CYRILLIC SMALL LETTER ZHE + { 0x0452, 0x7d }, // ђ CYRILLIC SMALL LETTER DJE + { 0x0448, 0x7e } // ш CYRILLIC SMALL LETTER SHA + }, + + { // 2 Cyrillic G0 2 Russian/Bulgarian + { 0x044b, 0x26 }, // ы CYRILLIC SMALL LETTER YERU + { 0x042e, 0x40 }, // Ю CYRILLIC CAPITAL LETTER YU + { 0x0410, 0x41 }, // А CYRILLIC CAPITAL LETTER A + { 0x0411, 0x42 }, // Б CYRILLIC CAPITAL LETTER BE + { 0x0426, 0x43 }, // Ц CYRILLIC CAPITAL LETTER TSE + { 0x0414, 0x44 }, // Д CYRILLIC CAPITAL LETTER DE + { 0x0415, 0x45 }, // Е CYRILLIC CAPITAL LETTER IE + { 0x0424, 0x46 }, // Ф CYRILLIC CAPITAL LETTER EF + { 0x0413, 0x47 }, // Г CYRILLIC CAPITAL LETTER GHE + { 0x0425, 0x48 }, // Х CYRILLIC CAPITAL LETTER HA + { 0x0418, 0x49 }, // И CYRILLIC CAPITAL LETTER I + { 0x0419, 0x4a }, // Й CYRILLIC CAPITAL LETTER SHORT I + { 0x041a, 0x4b }, // К CYRILLIC CAPITAL LETTER KA + { 0x041b, 0x4c }, // Л CYRILLIC CAPITAL LETTER EL + { 0x041c, 0x4d }, // М CYRILLIC CAPITAL LETTER EM + { 0x041d, 0x4e }, // Н CYRILLIC CAPITAL LETTER EN + { 0x041e, 0x4f }, // О CYRILLIC CAPITAL LETTER O + { 0x041f, 0x50 }, // П CYRILLIC CAPITAL LETTER PE + { 0x042f, 0x51 }, // Я CYRILLIC CAPITAL LETTER YA + { 0x0420, 0x52 }, // Р CYRILLIC CAPITAL LETTER ER + { 0x0421, 0x53 }, // С CYRILLIC CAPITAL LETTER ES + { 0x0422, 0x54 }, // Т CYRILLIC CAPITAL LETTER TE + { 0x0423, 0x55 }, // У CYRILLIC CAPITAL LETTER U + { 0x0416, 0x56 }, // Ж CYRILLIC CAPITAL LETTER ZHE + { 0x0412, 0x57 }, // В CYRILLIC CAPITAL LETTER VE + { 0x042c, 0x58 }, // Ь CYRILLIC CAPITAL LETTER SOFT SIGN + { 0x042a, 0x59 }, // Ъ CYRILLIC CAPITAL LETTER HARD SIGN + { 0x0417, 0x5a }, // З CYRILLIC CAPITAL LETTER ZE + { 0x0428, 0x5b }, // Ш CYRILLIC CAPITAL LETTER SHA + { 0x042d, 0x5c }, // Э CYRILLIC CAPITAL LETTER E + { 0x0429, 0x5d }, // Щ CYRILLIC CAPITAL LETTER SHCHA + { 0x0427, 0x5e }, // Ч CYRILLIC CAPITAL LETTER CHE + { 0x042b, 0x5f }, // Ы CYRILLIC CAPITAL LETTER YERU + { 0x044e, 0x60 }, // ю CYRILLIC SMALL LETTER YU + { 0x0430, 0x61 }, // а CYRILLIC SMALL LETTER A + { 0x0431, 0x62 }, // б CYRILLIC SMALL LETTER BE + { 0x0446, 0x63 }, // ц CYRILLIC SMALL LETTER TSE + { 0x0434, 0x64 }, // д CYRILLIC SMALL LETTER DE + { 0x0435, 0x65 }, // е CYRILLIC SMALL LETTER IE + { 0x0444, 0x66 }, // ф CYRILLIC SMALL LETTER EF + { 0x0433, 0x67 }, // г CYRILLIC SMALL LETTER GHE + { 0x0445, 0x68 }, // х CYRILLIC SMALL LETTER HA + { 0x0438, 0x69 }, // и CYRILLIC SMALL LETTER I + { 0x0439, 0x6a }, // й CYRILLIC SMALL LETTER SHORT I + { 0x043a, 0x6b }, // к CYRILLIC SMALL LETTER KA + { 0x043b, 0x6c }, // л CYRILLIC SMALL LETTER EL + { 0x043c, 0x6d }, // м CYRILLIC SMALL LETTER EM + { 0x043d, 0x6e }, // н CYRILLIC SMALL LETTER EN + { 0x043e, 0x6f }, // о CYRILLIC SMALL LETTER O + { 0x043f, 0x70 }, // п CYRILLIC SMALL LETTER PE + { 0x044f, 0x71 }, // я CYRILLIC SMALL LETTER YA + { 0x0440, 0x72 }, // р CYRILLIC SMALL LETTER ER + { 0x0441, 0x73 }, // с CYRILLIC SMALL LETTER ES + { 0x0442, 0x74 }, // т CYRILLIC SMALL LETTER TE + { 0x0443, 0x75 }, // у CYRILLIC SMALL LETTER U + { 0x0436, 0x76 }, // ж CYRILLIC SMALL LETTER ZHE + { 0x0432, 0x77 }, // в CYRILLIC SMALL LETTER VE + { 0x044c, 0x78 }, // ь CYRILLIC SMALL LETTER SOFT SIGN + { 0x044a, 0x79 }, // ъ CYRILLIC SMALL LETTER HARD SIGN + { 0x0437, 0x7a }, // з CYRILLIC SMALL LETTER ZE + { 0x0448, 0x7b }, // ш CYRILLIC SMALL LETTER SHA + { 0x044d, 0x7c }, // э CYRILLIC SMALL LETTER E + { 0x0449, 0x7d }, // щ CYRILLIC SMALL LETTER SHCHA + { 0x0447, 0x7e } // ч CYRILLIC SMALL LETTER CHE + }, + + { // 3 Cyrillic G0 3 Ukranian + { 0x0457, 0x26 }, // ї CYRILLIC SMALL LETTER YI + { 0x042e, 0x40 }, // Ю CYRILLIC CAPITAL LETTER YU + { 0x0410, 0x41 }, // А CYRILLIC CAPITAL LETTER A + { 0x0411, 0x42 }, // Б CYRILLIC CAPITAL LETTER BE + { 0x0426, 0x43 }, // Ц CYRILLIC CAPITAL LETTER TSE + { 0x0414, 0x44 }, // Д CYRILLIC CAPITAL LETTER DE + { 0x0415, 0x45 }, // Е CYRILLIC CAPITAL LETTER IE + { 0x0424, 0x46 }, // Ф CYRILLIC CAPITAL LETTER EF + { 0x0413, 0x47 }, // Г CYRILLIC CAPITAL LETTER GHE + { 0x0425, 0x48 }, // Х CYRILLIC CAPITAL LETTER HA + { 0x0418, 0x49 }, // И CYRILLIC CAPITAL LETTER I + { 0x0419, 0x4a }, // Й CYRILLIC CAPITAL LETTER SHORT I + { 0x041a, 0x4b }, // К CYRILLIC CAPITAL LETTER KA + { 0x041b, 0x4c }, // Л CYRILLIC CAPITAL LETTER EL + { 0x041c, 0x4d }, // М CYRILLIC CAPITAL LETTER EM + { 0x041d, 0x4e }, // Н CYRILLIC CAPITAL LETTER EN + { 0x041e, 0x4f }, // О CYRILLIC CAPITAL LETTER O + { 0x041f, 0x50 }, // П CYRILLIC CAPITAL LETTER PE + { 0x042f, 0x51 }, // Я CYRILLIC CAPITAL LETTER YA + { 0x0420, 0x52 }, // Р CYRILLIC CAPITAL LETTER ER + { 0x0421, 0x53 }, // С CYRILLIC CAPITAL LETTER ES + { 0x0422, 0x54 }, // Т CYRILLIC CAPITAL LETTER TE + { 0x0423, 0x55 }, // У CYRILLIC CAPITAL LETTER U + { 0x0416, 0x56 }, // Ж CYRILLIC CAPITAL LETTER ZHE + { 0x0412, 0x57 }, // В CYRILLIC CAPITAL LETTER VE + { 0x042c, 0x58 }, // Ь CYRILLIC CAPITAL LETTER SOFT SIGN + { 0x0406, 0x59 }, // І CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I + { 0x0417, 0x5a }, // З CYRILLIC CAPITAL LETTER ZE + { 0x0428, 0x5b }, // Ш CYRILLIC CAPITAL LETTER SHA + { 0x0404, 0x5c }, // Є CYRILLIC CAPITAL LETTER UKRAINIAN IE + { 0x0429, 0x5d }, // Щ CYRILLIC CAPITAL LETTER SHCHA + { 0x0427, 0x5e }, // Ч CYRILLIC CAPITAL LETTER CHE + { 0x0407, 0x5f }, // Ї CYRILLIC CAPITAL LETTER YI + { 0x044e, 0x60 }, // ю CYRILLIC SMALL LETTER YU + { 0x0430, 0x61 }, // а CYRILLIC SMALL LETTER A + { 0x0431, 0x62 }, // б CYRILLIC SMALL LETTER BE + { 0x0446, 0x63 }, // ц CYRILLIC SMALL LETTER TSE + { 0x0434, 0x64 }, // д CYRILLIC SMALL LETTER DE + { 0x0435, 0x65 }, // е CYRILLIC SMALL LETTER IE + { 0x0444, 0x66 }, // ф CYRILLIC SMALL LETTER EF + { 0x0433, 0x67 }, // г CYRILLIC SMALL LETTER GHE + { 0x0445, 0x68 }, // х CYRILLIC SMALL LETTER HA + { 0x0438, 0x69 }, // и CYRILLIC SMALL LETTER I + { 0x0439, 0x6a }, // й CYRILLIC SMALL LETTER SHORT I + { 0x043a, 0x6b }, // к CYRILLIC SMALL LETTER KA + { 0x043b, 0x6c }, // л CYRILLIC SMALL LETTER EL + { 0x043c, 0x6d }, // м CYRILLIC SMALL LETTER EM + { 0x043d, 0x6e }, // н CYRILLIC SMALL LETTER EN + { 0x043e, 0x6f }, // о CYRILLIC SMALL LETTER O + { 0x043f, 0x70 }, // п CYRILLIC SMALL LETTER PE + { 0x044f, 0x71 }, // я CYRILLIC SMALL LETTER YA + { 0x0440, 0x72 }, // р CYRILLIC SMALL LETTER ER + { 0x0441, 0x73 }, // с CYRILLIC SMALL LETTER ES + { 0x0442, 0x74 }, // т CYRILLIC SMALL LETTER TE + { 0x0443, 0x75 }, // у CYRILLIC SMALL LETTER U + { 0x0436, 0x76 }, // ж CYRILLIC SMALL LETTER ZHE + { 0x0432, 0x77 }, // в CYRILLIC SMALL LETTER VE + { 0x044c, 0x78 }, // ь CYRILLIC SMALL LETTER SOFT SIGN + { 0x0456, 0x79 }, // і CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + { 0x0437, 0x7a }, // з CYRILLIC SMALL LETTER ZE + { 0x0448, 0x7b }, // ш CYRILLIC SMALL LETTER SHA + { 0x0454, 0x7c }, // є CYRILLIC SMALL LETTER UKRAINIAN IE + { 0x0449, 0x7d }, // щ CYRILLIC SMALL LETTER SHCHA + { 0x0447, 0x7e } // ч CYRILLIC SMALL LETTER CHE + }, + + { // 4 Greek + { 0x0390, 0x40 }, // ΐ GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + { 0x0391, 0x41 }, // Α GREEK CAPITAL LETTER ALPHA + { 0x0392, 0x42 }, // Β GREEK CAPITAL LETTER BETA + { 0x0393, 0x43 }, // Γ GREEK CAPITAL LETTER GAMMA + { 0x0394, 0x44 }, // Δ GREEK CAPITAL LETTER DELTA + { 0x0395, 0x45 }, // Ε GREEK CAPITAL LETTER EPSILON + { 0x0396, 0x46 }, // Ζ GREEK CAPITAL LETTER ZETA + { 0x0397, 0x47 }, // Η GREEK CAPITAL LETTER ETA + { 0x0398, 0x48 }, // Θ GREEK CAPITAL LETTER THETA + { 0x0399, 0x49 }, // Ι GREEK CAPITAL LETTER IOTA + { 0x039a, 0x4a }, // Κ GREEK CAPITAL LETTER KAPPA + { 0x039b, 0x4b }, // Λ GREEK CAPITAL LETTER LAMBDA + { 0x039c, 0x4c }, // Μ GREEK CAPITAL LETTER MU + { 0x039d, 0x4d }, // Ν GREEK CAPITAL LETTER NU + { 0x039e, 0x4e }, // Ξ GREEK CAPITAL LETTER XI + { 0x039f, 0x4f }, // Ο GREEK CAPITAL LETTER OMICRON + { 0x03a0, 0x50 }, // Π GREEK CAPITAL LETTER PI + { 0x03a1, 0x51 }, // Ρ GREEK CAPITAL LETTER RHO + { 0x03a3, 0x53 }, // Σ GREEK CAPITAL LETTER SIGMA + { 0x03a4, 0x54 }, // Τ GREEK CAPITAL LETTER TAU + { 0x03a5, 0x55 }, // Υ GREEK CAPITAL LETTER UPSILON + { 0x03a6, 0x56 }, // Φ GREEK CAPITAL LETTER PHI + { 0x03a7, 0x57 }, // Χ GREEK CAPITAL LETTER CHI + { 0x03a8, 0x58 }, // Ψ GREEK CAPITAL LETTER PSI + { 0x03a9, 0x59 }, // Ω GREEK CAPITAL LETTER OMEGA + { 0x03aa, 0x5a }, // Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA + { 0x03ab, 0x5b }, // Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA + { 0x03ac, 0x5c }, // ά GREEK SMALL LETTER ALPHA WITH TONOS + { 0x03ad, 0x5d }, // έ GREEK SMALL LETTER EPSILON WITH TONOS + { 0x03ae, 0x5e }, // ή GREEK SMALL LETTER ETA WITH TONOS + { 0x03af, 0x5f }, // ί GREEK SMALL LETTER IOTO WITH TONOS + { 0x03b0, 0x60 }, // ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + { 0x03b1, 0x61 }, // α GREEK SMALL LETTER ALPHA + { 0x03b2, 0x62 }, // β GREEK SMALL LETTER BETA + { 0x03b3, 0x63 }, // γ GREEK SMALL LETTER GAMMA + { 0x03b4, 0x64 }, // δ GREEK SMALL LETTER DELTA + { 0x03b5, 0x65 }, // ε GREEK SMALL LETTER EPSILON + { 0x03b6, 0x66 }, // ζ GREEK SMALL LETTER ZETA + { 0x03b7, 0x67 }, // η GREEK SMALL LETTER ETA + { 0x03b8, 0x68 }, // θ GREEK SMALL LETTER THETA + { 0x03b9, 0x69 }, // ι GREEK SMALL LETTER IOTA + { 0x03ba, 0x6a }, // κ GREEK SMALL LETTER KAPPA + { 0x03bb, 0x6b }, // λ GREEK SMALL LETTER LAMBDA + { 0x03bc, 0x6c }, // μ GREEK SMALL LETTER MU + { 0x03bd, 0x6d }, // ν GREEK SMALL LETTER NU + { 0x03be, 0x6e }, // ξ GREEK SMALL LETTER XI + { 0x03bf, 0x6f }, // ο GREEK SMALL LETTER OMICRON + { 0x03c0, 0x70 }, // π GREEK SMALL LETTER PI + { 0x03c1, 0x71 }, // ρ GREEK SMALL LETTER RHO + { 0x03c2, 0x72 }, // ς GREEK SMALL LETTER FINAL SIGMA + { 0x03c3, 0x73 }, // σ GREEK SMALL LETTER SIGMA + { 0x03c4, 0x74 }, // τ GREEK SMALL LETTER TAU + { 0x03c5, 0x75 }, // υ GREEK SMALL LETTER UPSILON + { 0x03c6, 0x76 }, // φ GREEK SMALL LETTER PHI + { 0x03c7, 0x77 }, // χ GREEK SMALL LETTER CHI + { 0x03c8, 0x78 }, // ψ GREEK SMALL LETTER PSI + { 0x03c9, 0x79 }, // ω GREEK SMALL LETTER OMEGA + { 0x03ca, 0x7a }, // ϊ GREEK SMALL LETTER IOTA WITH DIALYTIKA + { 0x03cb, 0x7b }, // ϋ GREEK SMALL LETTER UPSILON WITH DIALYTIKA + { 0x03cc, 0x7c }, // ό GREEK SMALL LETTER OMICRON WITH TONOS + { 0x03cd, 0x7d }, // ύ GREEK SMALL LETTER UPSILON WITH TONOS + { 0x03ce, 0x7e } // ώ GREEK SMALL LETTER OMEGA WITH TONOS + }, + + { // TODO 5 Arabic G0 + }, + + { // 6 Hebrew G0 + { 0x05d0, 0x60 }, // א HEBREW LETTER ALEF + { 0x05d1, 0x61 }, // ב HEBREW LETTER BET + { 0x05d2, 0x62 }, // ג HEBREW LETTER GIMEL + { 0x05d3, 0x63 }, // ד HEBREW LETTER DALET + { 0x05d4, 0x64 }, // ה HEBREW LETTER HE + { 0x05d5, 0x65 }, // ו HEBREW LETTER VAV + { 0x05d6, 0x66 }, // ז HEBREW LETTER ZAYIN + { 0x05d7, 0x67 }, // ח HEBREW LETTER HET + { 0x05d8, 0x68 }, // ט HEBREW LETTER TET + { 0x05d9, 0x69 }, // י HEBREW LETTER YOD + { 0x05da, 0x6a }, // ך HEBREW LETTER FINAL KAF + { 0x05db, 0x6b }, // כ HEBREW LETTER KAF + { 0x05dc, 0x6c }, // ל HEBREW LETTER LAMED + { 0x05dd, 0x6d }, // ם HEBREW LETTER FINAL MEM + { 0x05de, 0x6e }, // מ HEBREW LETTER MEM + { 0x05df, 0x6f }, // ן HEBREW LETTER FINAL NUN + { 0x05e0, 0x70 }, // נ HEBREW LETTER NUN + { 0x05e1, 0x71 }, // ס HEBREW LETTER SAMEKH + { 0x05e2, 0x72 }, // ע HEBREW LETTER AYIN + { 0x05e3, 0x73 }, // ף HEBREW LETTER FINAL PE + { 0x05e4, 0x74 }, // פ HEBREW LETTER PE + { 0x05e5, 0x75 }, // ץ HEBREW LETTER FINAL TSADI + { 0x05e6, 0x76 }, // צ HEBREW LETTER TSADI + { 0x05e7, 0x77 }, // ק HEBREW LETTER QOF + { 0x05e8, 0x78 }, // ר HEBREW LETTER RESH + { 0x05e9, 0x79 }, // ש HEBREW LETTER SHIN + { 0x05ea, 0x7a }, // ת HEBREW LETTER TAV + { 0x20aa, 0x7b }, // ₪ NEW SHEQEL SIGN + { 0x00be, 0x7d }, // ½ VULGAR FRACTION THREE QUARTERS + { 0x00f7, 0x7e } // ÷ DIVISION SIGN + }, + + // Only used by X/26 enhancements, not directly by keyboard + { // 7 Latin G2 + }, + { // 8 Cyrillic G2 + }, + { // 9 Greek G2 + }, + { // 10 Arabic G2 + }, + + { // 11 Czech/Slovak + { 0x016f, 0x24 }, // ů LATIN SMALL LETTER U WITH RING ABOVE + { 0x010d, 0x40 }, // č LATIN SMALL LETTER C WITH CARON + { 0x0165, 0x5b }, // ť LATIN SMALL LETTER T WITH CARON + { 0x017e, 0x5c }, // ž LATIN SMALL LETTER Z WITH CARON + { 0x00fd, 0x5d }, // ý LATIN SMALL LETTER Y WITH ACUTE + { 0x00ed, 0x5e }, // í LATIN SMALL LETTER I WITH ACUTE + { 0x0159, 0x5f }, // ř LATIN SMALL LETTER R WITH CARON + { 0x00e9, 0x60 }, // é LATIN SMALL LETTER E WITH ACUTE + { 0x00e1, 0x7b }, // á LATIN SMALL LETTER A WITH ACUTE + { 0x011b, 0x7c }, // ě LATIN SMALL LETTER E WITH CARON + { 0x00fa, 0x7d }, // ú LATIN SMALL LETTER U WITH ACUTE + { 0x0161, 0x7e } // š LATIN SMALL LETTER S WITH CARON + }, + + { // 12 English + { 0x00a3, 0x23 }, // £ POUND SIGN + { 0x0023, 0x5f }, // # NUMBER SIGN + { 0x005f, 0x60 }, // ─ LOW LINE - rendered as U+2500 BOX DRAWINGS LIGHT HORIZONTAL + + { 0x00bc, 0x7b }, // ¼ VULGAR FRACTION ONE QUARTER + { 0x00bd, 0x5c }, // ½ VULGAR FRACTION ONE HALF + { 0x00be, 0x7b }, // ½ VULGAR FRACTION THREE QUARTERS + { 0x00f7, 0x7e } // ÷ DIVISION SIGN + }, + + { // 13 Estonian + { 0x00f5, 0x24 }, // õ LATIN SMALL LETTER O WITH TILDE + { 0x0160, 0x40 }, // Š LATIN CAPITAL LETTER S WITH CARON + { 0x00c4, 0x5b }, // Ä LATIN CAPITAL LETTER A WITH DIAERESIS + { 0x00d6, 0x5c }, // Ö LATIN CAPITAL LETTER O WITH DIAERESIS + { 0x017d, 0x5d }, // Ž LATIN CAPITAL LETTER Z WITH CARON + { 0x00dc, 0x5e }, // Ü LATIN CAPITAL LETTER U WITH DIAERESIS + { 0x00d5, 0x5f }, // Õ LATIN CAPITAL LETTER O WITH TILDE + { 0x0161, 0x60 }, // š LATIN SMALL LETTER S WITH CARON + { 0x00e4, 0x7b }, // ä LATIN SMALL LETTER A WITH DIAERESIS + { 0x00f6, 0x7c }, // ö LATIN SMALL LETTER O WITH DIAERESIS + { 0x017e, 0x7d }, // ž LATIN SMALL LETTER Z WITH CARON + { 0x00fc, 0x7e } // ü LATIN SMALL LETTER U WITH DIAERESIS + }, + + { // 14 French - aze qsd wxc + { 0x00e9, 0x23 }, // é LATIN SMALL LETTER E WITH ACUTE + { 0x00ef, 0x24 }, // ï LATIN SMALL LETTER I WITH DIAERESIS + { 0x00e0, 0x40 }, // à LATIN SMALL LETTER A WITH GRAVE + { 0x00eb, 0x5b }, // ë LATIN SMALL LETTER E WITH DIAERESIS + { 0x00ea, 0x5c }, // ê LATIN SMALL LETTER E WITH CIRCUMFLEX + { 0x00f9, 0x5d }, // ù LATIN SMALL LETTER U WITH GRAVE + { 0x00ee, 0x5e }, // î LATIN SMALL LETTER I WITH CIRCUMFLEX + { 0x0023, 0x5f }, // # NUMBER SIGN + { 0x00e8, 0x60 }, // è LATIN SMALL LETTER E WITH GRAVE + { 0x00e2, 0x7b }, // â LATIN SMALL LETTER A WITH CIRCUMFLEX + { 0x00f4, 0x7c }, // ô LATIN SMALL LETTER O WITH CIRCUMFLEX + { 0x00fb, 0x7d }, // û LATIN SMALL LETTER U WITH CIRCUMFLEX + { 0x00e7, 0x7e } // ç LATIN SMALL LETTER C WITH CEDILLA + }, + + { // 15 German + { 0x00a7, 0x40 }, // § SECTION SIGN + { 0x00c4, 0x5b }, // Ä LATIN CAPITAL LETTER A WITH DIAERESIS + { 0x00d6, 0x5c }, // Ö LATIN CAPITAL LETTER O WITH DIAERESIS + { 0x00dc, 0x5d }, // Ü LATIN CAPITAL LETTER U WITH DIAERESIS + { 0x00b0, 0x60 }, // ° DEGREE SIGN + { 0x00e4, 0x7b }, // ä LATIN SMALL LETTER A WITH DIAERESIS + { 0x00f6, 0x7c }, // ö LATIN SMALL LETTER O WITH DIAERESIS + { 0x00fc, 0x7d }, // ü LATIN SMALL LETTER U WITH DIAERESIS + { 0x00df, 0x7e } // ß LATIN SMALL LETTER SHARP S + }, + + { // 16 Italian + { 0x00a3, 0x23 }, // £ POUND SIGN + { 0x00e9, 0x40 }, // é LATIN SMALL LETTER E WITH ACUTE + { 0x00b0, 0x5b }, // ° DEGREE SIGN + { 0x00e7, 0x5c }, // ç LATIN SMALL LETTER C WITH CEDILLA + { 0x0023, 0x5f }, // # NUMBER SIGN + { 0x00f9, 0x60 }, // ù LATIN SMALL LETTER U WITH GRAVE + { 0x00e0, 0x7b }, // à LATIN SMALL LETTER A WITH GRAVE + { 0x00f2, 0x7c }, // ò LATIN SMALL LETTER O WITH GRAVE + { 0x00e8, 0x7d }, // è LATIN SMALL LETTER E WITH GRAVE + { 0x00ec, 0x7e } // ì LATIN SMALL LETTER I WITH GRAVE + }, + + { // 17 Lettish/Lithuanian + { 0x0160, 0x40 }, // Š LATIN CAPITAL LETTER S WITH CARON + { 0x0117, 0x5b }, // ė LATIN SMALL LETTER E WITH DOT ABOVE + { 0x0119, 0x5c }, // ę LATIN SMALL LETTER E WITH OGONEK + { 0x017d, 0x5d }, // Ž LATIN CAPITAL LETTER Z WITH CARON + { 0x010d, 0x5e }, // č LATIN SMALL LETTER C WITH CARON + { 0x016b, 0x5f }, // ū LATIN SMALL LETTER U WITH MACRON + { 0x0161, 0x60 }, // š LATIN SMALL LETTER S WITH CARON + { 0x0105, 0x7b }, // ą LATIN SMALL LETTER A WITH OGONEK + { 0x0173, 0x7c }, // ų LATIN SMALL LETTER U WITH OGONEK + { 0x017e, 0x7d }, // ž LATIN SMALL LETTER Z WITH CARON + { 0x012f, 0x7e } // į LATIN SMALL LETTER I WITH OGONEK + }, + + { // 18 Polish + { 0x0144, 0x24 }, // ń LATIN SMALL LETTER N WITH ACUTE + { 0x0105, 0x40 }, // ą LATIN SMALL LETTER A WITH OGONEK + { 0x017b, 0x5b }, // Ż LATIN CAPITAL LETTER Z WITH DOT ABOVE - rendered as U+01B5 ...WITH STROKE + { 0x015a, 0x5c }, // Ś LATIN CAPITAL LETTER S WITH ACUTE + { 0x0141, 0x5d }, // Ł LATIN CAPITAL LETTER L WITH STROKE + { 0x0107, 0x5e }, // ć LATIN SMALL LETTER C WITH ACUTE + { 0x00f3, 0x5f }, // ó LATIN SMALL LETTER O WITH ACUTE + { 0x0119, 0x60 }, // ę LATIN SMALL LETTER E WITH OGONEK + { 0x017c, 0x7b }, // ż LATIN SMALL LETTER Z WITH DOT ABOVE + { 0x015b, 0x7c }, // ś LATIN SMALL LETTER S WITH ACUTE + { 0x0142, 0x7d }, // ł LATIN SMALL LETTER L WITH STROKE + { 0x017a, 0x7e } // ź LATIN SMALL LETTER Z WITH ACUTE + }, + + { // 19 Portuguese/Spanish + { 0x00e7, 0x23 }, // ç LATIN SMALL LETTER C WITH CEDILLA + { 0x00a1, 0x40 }, // ¡ INVERTED EXCLAMATION MARK + { 0x00e1, 0x5b }, // á LATIN SMALL LETTER A WITH ACUTE + { 0x00e9, 0x5c }, // é LATIN SMALL LETTER E WITH ACUTE + { 0x00ed, 0x5d }, // í LATIN SMALL LETTER I WITH ACUTE + { 0x00f3, 0x5e }, // ó LATIN SMALL LETTER O WITH ACUTE + { 0x00fa, 0x5f }, // ú LATIN SMALL LETTER U WITH ACUTE + { 0x00bf, 0x60 }, // ¿ INVERTED QUESTION MARK + { 0x00fc, 0x7b }, // ü LATIN SMALL LETTER U WITH DIAERESIS + { 0x00f1, 0x7c }, // ñ LATIN SMALL LETTER N WITH TILDE + { 0x00e8, 0x7d }, // è LATIN SMALL LETTER E WITH GRAVE + { 0x00e0, 0x7e } // à LATIN SMALL LETTER A WITH GRAVE + }, + + { // 20 Rumanian + { 0x00a4, 0x24 }, // ¤ CURRENCY SIGN + { 0x021a, 0x40 }, // Ț LATIN CAPITAL LETTER T WITH COMMA BELOW + { 0x00c2, 0x5b }, // Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX + { 0x0218, 0x5c }, // Ș LATIN CAPITAL LETTER S WITH COMMA BELOW + { 0x0102, 0x5d }, // Ă LATIN CAPITAL LETTER A WITH BREVE + { 0x00c3, 0x5e }, // Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX + { 0x0131, 0x5f }, // ı LATIN SMALL LETTER DOTLESS I + { 0x021b, 0x60 }, // ț LATIN SMALL LETTER T WITH COMMA BELOW + { 0x00e2, 0x7b }, // â LATIN SMALL LETTER A WITH CIRCUMFLEX + { 0x0219, 0x7c }, // ș LATIN SMALL LETTER S WITH COMMA BELOW + { 0x0103, 0x7d }, // ă LATIN SMALL LETTER A WITH BREVE + { 0x00ee, 0x7e } // î LATIN SMALL LETTER I WITH CIRCUMFLEX + }, + + { // 21 Serbian/Croatian/Slovenian + { 0x00cb, 0x24 }, // Ë LATIN CAPITAL LETTER E WITH DIAERESIS + { 0x010c, 0x40 }, // Č LATIN CAPITAL LETTER C WITH CARON + { 0x0106, 0x5b }, // Ć LATIN CAPITAL LETTER C WITH ACUTE + { 0x017d, 0x5c }, // Ž LATIN CAPITAL LETTER Z WITH CARON + { 0x0110, 0x5d }, // Đ LATIN CAPITAL LETTER D WITH STROKE + { 0x0160, 0x5e }, // Š LATIN CAPITAL LETTER S WITH CARON + { 0x00eb, 0x5f }, // ë LATIN SMALL LETTER E WITH DIAERESIS + { 0x010d, 0x60 }, // č LATIN SMALL LETTER C WITH CARON + { 0x0107, 0x7b }, // ć LATIN SMALL LETTER C WITH ACUTE + { 0x017e, 0x7c }, // ž LATIN SMALL LETTER Z WITH CARON + { 0x0111, 0x7d }, // đ LATIN SMALL LETTER D WITH STROKE + { 0x0161, 0x7e } // š LATIN SMALL LETTER S WITH CARON + }, + + { // 22 Swedish/Finnish/Hungarian + { 0x00a4, 0x24 }, // ¤ CURRENCY SIGN + { 0x00c9, 0x40 }, // É LATIN CAPITAL LETTER E WITH ACUTE + { 0x00c4, 0x5b }, // Ä LATIN CAPITAL LETTER A WITH DIAERESIS + { 0x00d6, 0x5c }, // Ö LATIN CAPITAL LETTER O WITH DIAERESIS + { 0x00c5, 0x5d }, // Å LATIN CAPITAL LETTER A WITH RING ABOVE + { 0x00dc, 0x5e }, // Ü LATIN CAPITAL LETTER U WITH DIAERESIS + { 0x00e9, 0x60 }, // é LATIN SMALL LETTER E WITH ACUTE + { 0x00e4, 0x7b }, // ä LATIN SMALL LETTER A WITH DIAERESIS + { 0x00f6, 0x7c }, // ö LATIN SMALL LETTER O WITH DIAERESIS + { 0x00e5, 0x7d }, // å LATIN SMALL LETTER A WITH RING ABOVE + { 0x00fc, 0x7e } // ü LATIN SMALL LETTER U WITH DIAERESIS + }, + + { // 23 Turkish + { 0x20ba, 0x23 }, // ₺ TURKISH LIRA SIGN + { 0x011f, 0x24 }, // ğ LATIN SMALL LETTER G WITH BREVE + { 0x0130, 0x40 }, // İ LATIN CAPITAL LETTER I WITH DOT ABOVE + { 0x015e, 0x5b }, // Ş LATIN CAPITAL LETTER S WITH CEDILLA + { 0x00d6, 0x5c }, // Ö LATIN CAPITAL LETTER O WITH DIAERESIS + { 0x00c7, 0x5d }, // Ç LATIN CAPITAL LETTER C WITH CEDILLA + { 0x00dc, 0x5e }, // Ü LATIN CAPITAL LETTER U WITH DIAERESIS + { 0x011e, 0x5f }, // Ğ LATIN CAPITAL LETTER G WITH BREVE + { 0x0131, 0x60 }, // ı LATIN SMALL LETTER DOTLESS I + { 0x015f, 0x7b }, // ş LATIN SMALL LETTER S WITH CEDILLA + { 0x00f6, 0x7c }, // ö LATIN SMALL LETTER O WITH DIAERESIS + { 0x00e7, 0x7d }, // ç LATIN SMALL LETTER C WITH CEDILLA + { 0x00fc, 0x7e } // ü LATIN SMALL LETTER U WITH DIAERESIS + } +}; + + +// Native scan codes to toggle mosaic bits - different platforms have different scan codes! +// Order is top left, top right, middle left, middle right, bottom left, bottom right, +// invert, set all, clear all + +#ifdef Q_OS_UNIX +static constexpr quint32 mosaicNativeScanCodes[9] = { + 0x18, 0x19, 0x26, 0x27, 0x34, 0x35, 0x1b, 0x29, 0x36 +}; +#elif defined(Q_OS_WIN) +static constexpr quint32 mosaicNativeScanCodes[9] = { + 0x10, 0x11, 0x1e, 0x1f, 0x2c, 0x2d, 0x13, 0x21, 0x2e +}; +#else +#define QTTM_NONATIVESCANCODES +#endif + +#endif diff --git a/mainwidget.cpp b/mainwidget.cpp index 63ff529..b4f9fd0 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -34,6 +34,7 @@ #include "mainwidget.h" #include "document.h" +#include "keymap.h" #include "levelonecommands.h" #include "levelonepage.h" #include "render.h" @@ -43,6 +44,7 @@ TeletextWidget::TeletextWidget(QFrame *parent) : QFrame(parent) { this->resize(QSize(480, 250)); this->setAttribute(Qt::WA_NoSystemBackground); + this->setAttribute(Qt::WA_InputMethodEnabled, true); m_teletextDocument = new TeletextDocument(); m_levelOnePage = m_teletextDocument->currentSubPage(); m_pageRender.setTeletextPage(m_levelOnePage); @@ -66,6 +68,17 @@ TeletextWidget::~TeletextWidget() delete m_teletextDocument; } +// Re-implemented so compose/dead keys work properly +void TeletextWidget::inputMethodEvent(QInputMethodEvent* event) +{ + if (!event->commitString().isEmpty()) { + QKeyEvent keyEvent(QEvent::KeyPress, 0, Qt::NoModifier, event->commitString()); + + keyPressEvent(&keyEvent); + } + event->accept(); +} + void TeletextWidget::subPageSelected() { m_levelOnePage = m_teletextDocument->currentSubPage(); @@ -223,55 +236,96 @@ void TeletextWidget::changeSize() void TeletextWidget::keyPressEvent(QKeyEvent *event) { if (event->key() < 0x01000000) { - char keyPressed = *qPrintable(event->text()); -// if (attributes[cursorRow][cursorColumn].mosaics && (keyPressed < 0x40 || keyPressed > 0x5f) && (((keyPressed >= '1' && keyPressed <= '9') && (event->modifiers() & Qt::KeypadModifier)) || (keyPressed >= 'a' && keyPressed <= 'z'))) { - if (m_pageRender.level1MosaicAttribute(m_teletextDocument->cursorRow(), m_teletextDocument->cursorColumn()) && (keyPressed < 0x40 || keyPressed > 0x5f) && (((keyPressed >= '1' && keyPressed <= '9') && (event->modifiers() & Qt::KeypadModifier)) || (keyPressed >= 'a' && keyPressed <= 'z'))) { - if (!(m_levelOnePage->character(m_teletextDocument->cursorRow(), m_teletextDocument->cursorColumn()) & 0x20)) - setCharacter(0x20); - switch (event->key()) { - case Qt::Key_Q: - case Qt::Key_7: - toggleCharacterBit(0x01); // Top left - break; - case Qt::Key_W: - case Qt::Key_8: - toggleCharacterBit(0x02); // Top right - break; - case Qt::Key_A: - case Qt::Key_4: - toggleCharacterBit(0x04); // Middle left - break; - case Qt::Key_S: - case Qt::Key_5: - toggleCharacterBit(0x08); // Middle right - break; - case Qt::Key_Z: - case Qt::Key_1: - toggleCharacterBit(0x10); // Bottom left - break; - case Qt::Key_X: - case Qt::Key_2: - toggleCharacterBit(0x40); // Bottom right - break; - case Qt::Key_R: - case Qt::Key_9: - toggleCharacterBit(0x5f); // Invert - break; - case Qt::Key_F: - case Qt::Key_6: - toggleCharacterBit(0x7f); // Set all - break; - case Qt::Key_C: - case Qt::Key_3: - toggleCharacterBit(0x20); // Clear all - break; + // A character-typing key was pressed + // Try to keymap it, if not keymapped then plain ASCII code (may be) returned + char mappedKeyPress = keymapping[m_pageRender.level1CharSet(m_teletextDocument->cursorRow(), m_teletextDocument->cursorColumn())].value(event->text().at(0), *qPrintable(event->text())); + // If outside ASCII map then the character can't be represented by current Level 1 character set + // Map it to block character so it doesn't need to be inserted-between later on + if (mappedKeyPress & 0x80) + mappedKeyPress = 0x7f; + if (m_pageRender.level1MosaicAttribute(m_teletextDocument->cursorRow(), m_teletextDocument->cursorColumn()) && (mappedKeyPress < 0x40 || mappedKeyPress > 0x5f)) { + // We're on a mosaic and a blast-through character was NOT pressed + if (event->key() >= Qt::Key_1 && event->key() <= Qt::Key_9 && event->modifiers() & Qt::KeypadModifier) { + switch (event->key()) { + case Qt::Key_7: + toggleCharacterBit(0x01); // Top left + break; + case Qt::Key_8: + toggleCharacterBit(0x02); // Top right + break; + case Qt::Key_4: + toggleCharacterBit(0x04); // Middle left + break; + case Qt::Key_5: + toggleCharacterBit(0x08); // Middle right + break; + case Qt::Key_1: + toggleCharacterBit(0x10); // Bottom left + break; + case Qt::Key_2: + toggleCharacterBit(0x40); // Bottom right + break; + case Qt::Key_9: + toggleCharacterBit(0x5f); // Invert + break; + case Qt::Key_6: + toggleCharacterBit(0x7f); // Set all + break; + case Qt::Key_3: + toggleCharacterBit(0x20); // Clear all + break; + } + return; } + if (event->key() == Qt::Key_Space) { + setCharacter(0x20); + return; + } + + // This macro is defined in keymap.h if no native scan codes are defined + // for the platform we are compiling on +#ifndef QTTM_NONATIVESCANCODES + if (event->nativeScanCode() > 1) { + switch (event->nativeScanCode()) { + case mosaicNativeScanCodes[0]: + toggleCharacterBit(0x01); // Top left + break; + case mosaicNativeScanCodes[1]: + toggleCharacterBit(0x02); // Top right + break; + case mosaicNativeScanCodes[2]: + toggleCharacterBit(0x04); // Middle left + break; + case mosaicNativeScanCodes[3]: + toggleCharacterBit(0x08); // Middle right + break; + case mosaicNativeScanCodes[4]: + toggleCharacterBit(0x10); // Bottom left + break; + case mosaicNativeScanCodes[5]: + toggleCharacterBit(0x40); // Bottom right + break; + case mosaicNativeScanCodes[6]: + toggleCharacterBit(0x5f); // Invert + break; + case mosaicNativeScanCodes[7]: + toggleCharacterBit(0x7f); // Set all + break; + case mosaicNativeScanCodes[8]: + toggleCharacterBit(0x20); // Clear all + break; + } + return; + } else + qDebug("nativeScanCode not usable! Please use numeric keypad to toggle mosaic bits."); +#else + qDebug("nativeScanCode was not compiled in! Please use numeric keypad to toggle mosaic bits."); +#endif + + // TODO some contingency plan if nativeScanCode didn't work? return; } - if (keyPressed == 0x20) - setCharacter((event->modifiers() & Qt::ShiftModifier) ? 0x7f : 0x20); - else - setCharacter(keyPressed); + setCharacter(mappedKeyPress); return; } switch (event->key()) { diff --git a/mainwidget.h b/mainwidget.h index 30d5da9..99e248e 100644 --- a/mainwidget.h +++ b/mainwidget.h @@ -47,6 +47,8 @@ public: QSize sizeHint() { return QSize(480+(pageRender()->leftSidePanelColumns()+pageRender()->rightSidePanelColumns())*12, 250); } + void inputMethodEvent(QInputMethodEvent *); + TeletextDocument* document() const { return m_teletextDocument; } TeletextPageRender *pageRender() { return &m_pageRender; } diff --git a/qteletextmaker.pro b/qteletextmaker.pro index 7cab281..c0b01ed 100644 --- a/qteletextmaker.pro +++ b/qteletextmaker.pro @@ -2,6 +2,7 @@ QT += widgets requires(qtConfig(filedialog)) HEADERS = document.h \ + keymap.h \ levelonecommands.h \ levelonepage.h \ loadsave.h \