Посмотрел я описание подключения 7004 к эмулятору. Детально я, конечно, не вникал, но мне показалось, что таблица соответствия кодов ASCII сканкодам клавиатуры прописывается где-то в инишниках.
Добавлю. Я надеялся, что Патрон сделал, пусть, не КЦГД-шную клавиатуру, но, хотя бы КСМ-ную. Ага, два раза. На этой 7004 сделано нечто, похожее на 15ИЭ-00-013. Нет, я понимаю, у человека любимый дисплей и всё такое, но чем ему КСМ не угодил?
- - - Добавлено - - -
Впрочем, если я не ошибся и таблица действительно прописана в инишниках, то, детально вникнув в нее, можно сделать и КСМ-овскую клавиатуру, и, может быть и КЦГД-шную...
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
Только для тех клавиш, коды которых не изменяются при нажатии <Shift> и <Ctrl>.
У LK201 не только буквенные клавиши не совпадают с МС7004, но и те клавиши со скобками и знаками, которые рядом с буквенными. Чтобы сделать адаптер для LK201 - нужно правильно переделать несколько таблиц сканкодов:
Код:#define U(x) x+0200 //////////////////////// const byte MS7004_Converter::LAT_to_ASCII[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', ';', // 270..277 '1', 'j', 'f', 'q', '_', '2', 'c', 'y', // 300..307 '^', U(37), '/', '3', 'u', 'w', 's', 0, // 310..317 '4', 'k', 'a', 'm', ' ', 0, '5', 'e', // 320..327 'p', 'i', 0, '6', 'n', 'r', 't', 0, // 330..337 '7', 'g', 'o', 'x', 0, '8', '[', 'l', // 340..347 'b', 0, '9', ']', 'd', '@', 0, '0', // 350..357 'z', U(38), 'v', ',', 0, U(39), 'h', '.', // 360..367 0, '-', ':', '\\', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::LAT_FKS_to_ASCII[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', ';', // 270..277 '1', 'J', 'F', 'Q', '_', '2', 'C', 'Y', // 300..307 '^', U(37), '/', '3', 'U', 'W', 'S', 0, // 310..317 '4', 'K', 'A', 'M', ' ', 0, '5', 'E', // 320..327 'P', 'I', 0, '6', 'N', 'R', 'T', 0, // 330..337 '7', 'G', 'O', 'X', 0, '8', '[', 'L', // 340..347 'B', 0, '9', ']', 'D', '@', 0, '0', // 350..357 'Z', U(38), 'V', ',', 0, U(39), 'H', '.', // 360..367 0, '-', ':', '\\', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::LAT_Shift_to_ASCII[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', '+', // 270..277 '!', 'J', 'F', 'Q', '_', '"', 'C', 'Y', // 300..307 '~', U(37), '?', '#', 'U', 'W', 'S', 0, // 310..317 '$', 'K', 'A', 'M', ' ', 0, '%', 'E', // 320..327 'P', 'I', 0, '&', 'N', 'R', 'T', 0, // 330..337 '\'', 'G', 'O', 'X', 0, '(', '{', 'L', // 340..347 'B', 0, ')', '}', 'D', '`', 0, '0', // 350..357 'Z', U(38), 'V', '<', 0, U(39), 'H', '>', // 360..367 0, '=', '*', '|', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::LAT_FKS_Shift_to_ASCII[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', '+', // 270..277 '!', 'j', 'f', 'q', '_', '"', 'c', 'y', // 300..307 '~', U(37), '?', '#', 'u', 'w', 's', 0, // 310..317 '$', 'k', 'a', 'm', ' ', 0, '%', 'e', // 320..327 'p', 'i', 0, '&', 'n', 'r', 't', 0, // 330..337 '\'', 'g', 'o', 'x', 0, '(', '{', 'l', // 340..347 'b', 0, ')', '}', 'd', '`', 0, '0', // 350..357 'z', U(38), 'v', '<', 0, U(39), 'h', '>', // 360..367 0, '=', '*', '|', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::RUS_to_ASCII[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', ';', // 270..277 '1', 'J', 'F', 'Q', '_', '2', 'C', 'Y', // 300..307 '^', U(37), '/', '3', 'U', 'W', 'S', 0, // 310..317 '4', 'K', 'A', 'M', ' ', 0, '5', 'E', // 320..327 'P', 'I', 0, '6', 'N', 'R', 'T', 0, // 330..337 '7', 'G', 'O', 'X', 0, '8', '[', 'L', // 340..347 'B', 0, '9', ']', 'D', '@', 0, '0', // 350..357 'Z', U(38), 'V', ',', 0, U(39), 'H', '.', // 360..367 0, '-', ':', '\\', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::RUS_FKS_to_ASCII[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', ';', // 270..277 '1', 'j', 'f', 'q', '_', '2', 'c', 'y', // 300..307 '~', U(37), '/', '3', 'u', 'w', 's', 0, // 310..317 '4', 'k', 'a', 'm', ' ', 0, '5', 'e', // 320..327 'p', 'i', 0, '6', 'n', 'r', 't', 0, // 330..337 '7', 'g', 'o', 'x', 0, '8', '{', 'l', // 340..347 'b', 0, '9', '}', 'd', '`', 0, '0', // 350..357 'z', U(38), 'v', ',', 0, U(39), 'h', '.', // 360..367 0, '-', ':', '|', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::RUS_Shift_to_ASCII[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', '+', // 270..277 '!', 'j', 'f', 'q', '_', '"', 'c', 'y', // 300..307 '~', U(37), '?', '#', 'u', 'w', 's', 0, // 310..317 '$', 'k', 'a', 'm', ' ', 0, '%', 'e', // 320..327 'p', 'i', 0, '&', 'n', 'r', 't', 0, // 330..337 '\'', 'g', 'o', 'x', 0, '(', '{', 'l', // 340..347 'b', 0, ')', '}', 'd', '`', 0, '0', // 350..357 'z', U(38), 'v', '<', 0, U(39), 'h', '>', // 360..367 0, '=', '*', '|', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::RUS_FKS_Shift_to_ASCII[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', '+', // 270..277 '!', 'J', 'F', 'Q', '_', '"', 'C', 'Y', // 300..307 '^', U(37), '?', '#', 'U', 'W', 'S', 0, // 310..317 '$', 'K', 'A', 'M', ' ', 0, '%', 'E', // 320..327 'P', 'I', 0, '&', 'N', 'R', 'T', 0, // 330..337 '\'', 'G', 'O', 'X', 0, '(', '[', 'L', // 340..347 'B', 0, ')', ']', 'D', '@', 0, '0', // 350..357 'Z', U(38), 'V', '<', 0, U(39), 'H', '>', // 360..367 0, '=', '*', '\\', U(40), U(41), 0, 0, // 370..377 };
Radon17 (03.10.2022)
.
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_16.10.22_18-03
Изменения:
1. Объекту MS7004_Converter добавлен параметр LK201_Mode со значением по-умолчанию 0. Пример - в файле конфигурации MS7004_Converter.cfg. Для подключения клавиатуры LK201 - значение параметра нужно изменить на 1:
...Код:[MS7004_Converter.ini] LK201_Mode = 1
На данный момент таблицы сканкодов следующие:
Если какие-то клавиши обрабатываются неправильно - сообщайте.Код:#define U(x) x+0200 //////////////////////// const byte MS7004_Converter::LAT_to_ASCII[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', ';', // 270..277 '1', 'j', 'f', 'q', '_', '2', 'c', 'y', // 300..307 '^', U(37), '/', '3', 'u', 'w', 's', 0, // 310..317 '4', 'k', 'a', 'm', ' ', 0, '5', 'e', // 320..327 'p', 'i', 0, '6', 'n', 'r', 't', 0, // 330..337 '7', 'g', 'o', 'x', 0, '8', '[', 'l', // 340..347 'b', 0, '9', ']', 'd', '@', 0, '0', // 350..357 'z', U(38), 'v', ',', 0, U(39), 'h', '.', // 360..367 0, '-', ':', '\\', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::LAT_to_ASCII_LK201[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', '`', // 270..277 '1', 'q', 'a', 'z', '_', '2', 'w', 's', // 300..307 'x', '<', '/', '3', 'e', 'd', 'c', 0, // 310..317 '4', 'r', 'f', 'v', ' ', 0, '5', 't', // 320..327 'g', 'b', 0, '6', 'y', 'h', 'n', 0, // 330..337 '7', 'u', 'j', 'm', 0, '8', 'i', 'k', // 340..347 ',', 0, '9', 'o', 'l', '.', 0, '0', // 350..357 'p', U(38), ';', '/', 0, '=', ']', '\\', // 360..367 0, '-', '[', '\'', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::LAT_FKS_to_ASCII[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', ';', // 270..277 '1', 'J', 'F', 'Q', '_', '2', 'C', 'Y', // 300..307 '^', U(37), '/', '3', 'U', 'W', 'S', 0, // 310..317 '4', 'K', 'A', 'M', ' ', 0, '5', 'E', // 320..327 'P', 'I', 0, '6', 'N', 'R', 'T', 0, // 330..337 '7', 'G', 'O', 'X', 0, '8', '[', 'L', // 340..347 'B', 0, '9', ']', 'D', '@', 0, '0', // 350..357 'Z', U(38), 'V', ',', 0, U(39), 'H', '.', // 360..367 0, '-', ':', '\\', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::LAT_FKS_to_ASCII_LK201[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', '`', // 270..277 '1', 'Q', 'A', 'Z', '_', '2', 'W', 'S', // 300..307 'X', '<', '/', '3', 'E', 'D', 'C', 0, // 310..317 '4', 'R', 'F', 'V', ' ', 0, '5', 'T', // 320..327 'G', 'B', 0, '6', 'Y', 'H', 'N', 0, // 330..337 '7', 'U', 'J', 'M', 0, '8', 'I', 'K', // 340..347 ',', 0, '9', 'O', 'L', '.', 0, '0', // 350..357 'P', U(38), ';', '/', 0, '=', ']', '\\', // 360..367 0, '-', '[', '\'', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::LAT_Shift_to_ASCII[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', '+', // 270..277 '!', 'J', 'F', 'Q', '_', '"', 'C', 'Y', // 300..307 '~', U(37), '?', '#', 'U', 'W', 'S', 0, // 310..317 '$', 'K', 'A', 'M', ' ', 0, '%', 'E', // 320..327 'P', 'I', 0, '&', 'N', 'R', 'T', 0, // 330..337 '\'', 'G', 'O', 'X', 0, '(', '{', 'L', // 340..347 'B', 0, ')', '}', 'D', '`', 0, '0', // 350..357 'Z', U(38), 'V', '<', 0, U(39), 'H', '>', // 360..367 0, '=', '*', '|', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::LAT_Shift_to_ASCII_LK201[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', '~', // 270..277 '!', 'Q', 'A', 'Z', '_', '@', 'W', 'S', // 300..307 'X', '>', '?', '#', 'E', 'D', 'C', 0, // 310..317 '$', 'R', 'F', 'V', ' ', 0, '%', 'T', // 320..327 'G', 'B', 0, '^', 'Y', 'H', 'N', 0, // 330..337 '&', 'U', 'J', 'M', 0, '*', 'I', 'K', // 340..347 ',', 0, '(', 'O', 'L', '.', 0, ')', // 350..357 'P', U(38), ':', '?', 0, '+', '}', '|', // 360..367 0, '_', '{', '"', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::LAT_FKS_Shift_to_ASCII[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', '+', // 270..277 '!', 'j', 'f', 'q', '_', '"', 'c', 'y', // 300..307 '~', U(37), '?', '#', 'u', 'w', 's', 0, // 310..317 '$', 'k', 'a', 'm', ' ', 0, '%', 'e', // 320..327 'p', 'i', 0, '&', 'n', 'r', 't', 0, // 330..337 '\'', 'g', 'o', 'x', 0, '(', '{', 'l', // 340..347 'b', 0, ')', '}', 'd', '`', 0, '0', // 350..357 'z', U(38), 'v', '<', 0, U(39), 'h', '>', // 360..367 0, '=', '*', '|', U(40), U(41), 0, 0, // 370..377 }; const byte MS7004_Converter::LAT_FKS_Shift_to_ASCII_LK201[] = { 0, 0, 0, 0, 0, 0, 0, 0, // 000..007 0, 0, 0, 0, 0, 0, 0, 0, // 010..017 0, 0, 0, 0, 0, 0, 0, 0, // 020..027 0, 0, 0, 0, 0, 0, 0, 0, // 030..037 0, 0, 0, 0, 0, 0, 0, 0, // 040..047 0, 0, 0, 0, 0, 0, 0, 0, // 050..057 0, 0, 0, 0, 0, 0, 0, 0, // 060..067 0, 0, 0, 0, 0, 0, 0, 0, // 070..077 0, 0, 0, 0, 0, 0, 0, 0, // 100..107 0, 0, 0, 0, 0, 0, 0, 0, // 110..117 0, 0, 0, 0, 0, 0, U(77), U(2), // 120..127 U(3), U(4), U(5), 0, 0, 0, 0, 0, // 130..137 0, 0, 0, 0, U(6), U(7), U(8), U(9), // 140..147 U(10), 0, 0, 0, 0, 0, 0, 0, // 150..157 0, U(11), U(12), U(13), U(14), 0, 0, 0, // 160..167 0, 0, 0, 0, U(15), U(16), 0, 0, // 170..177 U(17), U(18), U(19), U(20), 0, 0, 0, 0, // 200..207 0, 0, U(21), U(22), U(23), U(24), U(25), U(26), // 210..217 0, 0, U(50), 0, U(61), U(60), U(51), U(52), // 220..227 U(53), U(54), U(55), U(56), U(63), U(57), U(58), U(59), // 230..237 U(62), U(27), U(28), U(29), U(30), 0, 0, U(31), // 240..247 U(32), U(33), U(34), 0, 0, 0, U(73), U(72), // 250..257 U(74), U(76), U(75), U(71), U(70), 0, 0, 0, // 260..267 0, 0, 0, 0, U(35), U(36), '\t', '~', // 270..277 '!', 'q', 'a', 'z', '_', '@', 'w', 's', // 300..307 'x', '>', '?', '#', 'e', 'd', 'c', 0, // 310..317 '$', 'r', 'f', 'v', ' ', 0, '%', 't', // 320..327 'g', 'b', 0, '^', 'y', 'h', 'n', 0, // 330..337 '&', 'u', 'j', 'm', 0, '*', 'i', 'k', // 340..347 ',', 0, '(', 'o', 'l', '.', 0, ')', // 350..357 'p', U(38), ':', '?', 0, '+', '}', '|', // 360..367 0, '_', '{', '"', U(40), U(41), 0, 0, // 370..377 };
Последний раз редактировалось Patron; 16.10.2022 в 18:20.
Patron, Проверяю. Всё работает, но вместо L выводится D. Сама D работает нормально.
На моей LK201 D выдаёт код 205 (8), а L - 236 (8).
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Релиз эмулятора обновлён. Исправлена ошибка - при замене таблицы скан-кодов МС7004 для LK201 была пропущена буква "L".
Последний раз редактировалось Patron; 16.10.2022 в 18:24.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)