Я хотел бы, чтобы вы объяснили внутренний механизм «Параметры раскладки клавиатуры» с точки зрения переназначения сканкод
, ключевой код
, или же ключевой символ
. Я говорю о панели управления GUI «Параметры раскладки клавиатуры». Меня особенно интересует Ubuntu MATE 20.04.
В Ubuntu MATE 20.04 «Параметры раскладки клавиатуры» находятся в «Центре управления», как показано ниже. В «Параметры раскладки клавиатуры» меня особенно интересуют «Ctrl сопоставляется с Win и обычными клавишами Ctrl» и «Поменять местами левый Win с левым Ctrl».
Центр управления > Оборудование >
Клавиатура > вкладка «Макет» > «Параметры...» >
Параметры раскладки клавиатуры
Поведение клавиши Alt/Win
(o) Ctrl отображается на Win и обычные клавиши Ctrl
Позиция Ctrl
[v] Поменять местами левый Win с левым Ctrl
В Linux существует три уровня идентификации ключей — сканкод, код ключа и символ ключа. Скан-код — это самый низкий уровень, который клавиатура отправляет на компьютер. Ключевой код среднего уровня. Keysym - это самый высокий уровень.
Скан-коды более тесно связаны с позициями на клавиатуре, чем с буквами, напечатанными на клавишах. Например, клавиша, на которой напечатана буква Y на американской клавиатуре, имеет букву Z на европейской клавиатуре. Однако скан-код всегда один и тот же, независимо от того, напечатана ли на клавише буква Y на клавиатуре США или буква Z на европейской клавиатуре.
Обычно в Linux существует два уровня сопоставления: сопоставление кода сканирования с кодом клавиши и сопоставление кода клавиши с символом клавиши. Таким образом, обычно в Linux переназначение клавиш означает либо изменение сопоставления кода сканирования с кодом клавиши, либо изменение сопоставления кода клавиши с символом клавиши.
Однако в MS Windows дела обстоят иначе, чем в Linux. Если я правильно помню, в Windows отсутствует keysym. Тем не менее, скан-код также является самым низким уровнем в Windows. В Windows переназначение клавиш не означает изменение сопоставления скан-кода с кодом клавиши, а означает создание дополнительного сопоставления скан-кода с скан-кодом.
Я хотел бы знать, реализованы ли «Параметры раскладки клавиатуры» в Ubuntu MATE 20.04 как:
модификация сопоставления скан-кода с кодом клавиши
модификация сопоставления кода клавиши с символом клавиши
создание дополнительного отображения из сканкода в сканкод
или что-то другое (объясните)
Как указано выше, меня особенно интересуют «Ctrl сопоставлен с Win и обычными клавишами Ctrl» и «Поменять местами левый Win с левым Ctrl».