Да про русскую и речи никакой нет, это вы начали.
Вид для печати
Посмотрел я описание подключения 7004 к эмулятору. Детально я, конечно, не вникал, но мне показалось, что таблица соответствия кодов ASCII сканкодам клавиатуры прописывается где-то в инишниках.
Добавлю. Я надеялся, что Патрон сделал, пусть, не КЦГД-шную клавиатуру, но, хотя бы КСМ-ную. Ага, два раза. На этой 7004 сделано нечто, похожее на 15ИЭ-00-013. Нет, я понимаю, у человека любимый дисплей и всё такое, но чем ему КСМ не угодил?
- - - Добавлено - - -
Впрочем, если я не ошибся и таблица действительно прописана в инишниках, то, детально вникнув в нее, можно сделать и КСМ-овскую клавиатуру, и, может быть и КЦГД-шную...
Только для тех клавиш, коды которых не изменяются при нажатии <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
};
.
Обновилась текущая сборка "эмулятора ДВК": 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, Проверяю. Всё работает, но вместо L выводится D. Сама D работает нормально.
На моей LK201 D выдаёт код 205 (8), а L - 236 (8).
Надоел переходник, обжал/спаял отдельный кабель. Сделал его подлиннее.
https://pic.maxiol.com/thumbs2/16652...1008155731.jpg
Релиз эмулятора обновлён. Исправлена ошибка - при замене таблицы скан-кодов МС7004 для LK201 была пропущена буква "L".