// Латинский алфавит в HEX представлении const String key_values[26] = { "51", // Code51 - q "57", // Code57 - w "45", // Code45 - e "52", // Code52 - r "54", // Code54 - t "59", // Code59 - y "55", // Code55 - u "49", // Code49 - i "4F", // Code4F - o "50", // Code50 - p "41", // Code41 - a "53", // Code53 - s "44", // Code44 - d "46", // Code46 - f "47", // Code47 - g "48", // Code48 - h "4A", // Code4A - j "4B", // Code4B - k "4C", // Code4C - l "5A", // Code5A - z "58", // Code58 - x "43", // Code43 - c "56", // Code56 - v "42", // Code42 - b "4E", // Code4E - n "4D" // Code4D - m }; // Сдвиг в алфавите для каждого из трёх "дисков". // Обязан быть в отрезке [0; 25], так как полный круг // возвращает значение обратно в 0. // Таким образом, при конфигурации { 1, 2, 5 } и // нажатой ' d ' сначала произойдёт сдвиг на 1, ' d ' // станет ' f ', потом на 2, ' f ' станет ' h ', // в конце ещё сдвиг на 5 и ' h ' станет ' x '. const size_t key_shifts[3] = { 1, 2, 5 }; // Соединение на коммутационной панели struct Plug { size_t left_index = 0; size_t right_index = 0; }; // Все соединения коммутационной панели. // Для примера всего 2, но может быть до 13 const Plug plugboard[2] = { {0, 1}, // ' q ' <- -> ' w ' {4, 10} // ' t ' <- -> ' a ' };