59 lines
1.7 KiB
C
59 lines
1.7 KiB
C
|
// Латинский алфавит в 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 '
|
|||
|
};
|