![Сложное переназначение клавиатуры в Linux](https://rvso.com/image/1554877/%D0%A1%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B5%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D0%B0%D1%82%D1%83%D1%80%D1%8B%20%D0%B2%20Linux.png)
Вот еще один вопрос о переназначении клавиш в современных дистрибутивах Linux.
Фон:
Я был пользователем Mac в течение последних шести лет и пользователем Linux в течение ~20 лет. Это вызвало две проблемы:
- Кодирование на шведской клавиатуре Mac ужасно, поэтому мне пришлось использовать американскую раскладку во время кодирования.
- Постоянное переключение раскладок клавиатуры на Linux и Mac
На Mac я внес некоторые изменения в американскую раскладку, чтобы получить доступ к шведским символам (å, ä, ö). Чтобы получить эти символы на шведской клавиатуре, обычно есть три клавиши справа от клавиатуры. Я переназначил их с помощью Ukelele, чтобы они обычно работали как на американской раскладке, но при нажатии "alt" (или "alt+shift") я получаю шведские символы. Через некоторое время привыкания это работает очень хорошо.
Во-вторых, пользователи Linux довольно часто переназначают клавиши ctrl-win-alt так, чтобы клавиша win действовала как вторая клавиша ctrl. Это делает большинство сочетаний клавиш одинаковыми на Mac и Linux. Для этого есть настройка в GNOME (или GNOME Tweaks): "Ctrl сопоставлен с Win и обычными клавишами Ctrl".
Но порядок все еще не тот же, что на клавиатуре Mac: на Mac есть "control option command", а на клавиатуре PC есть "ctrl win alt". В GNOME Tweaks есть еще одна опция: "Alt is swapped with Win". К сожалению, GNOME Tweaks допускает только одну из этих опций.
Итак, вот полная перепланировка, которую я хочу (на основе макета США):
- Alt + "[" => å
- Alt + Shift + "['"=> Å
- Alt + "'" => ä
- Alt + Shift + "'" => Ä
- Alt + ";" => ö
- Alt + Shift + ";" => Ö
- Левый Ctrl => Левый Ctrl
- Левая Win => Левый Alt
- Левый Alt => Левый Ctrl
К сожалению, похоже, существует множество вариантов того, как этого добиться, и все они довольно сложны в реализации, поэтому я был бы признателен за любую помощь в этом вопросе!
(На Mac я смог сделать это с помощью Ukelele, графического инструмента для создания раскладки клавиатуры, которая затем устанавливается, чтобы я мог переключаться на нее так же легко, как переключаться между американской и шведской раскладкой. Очень здорово.)
Обновлять:
Я решил проблему с Ctrl/Alt/Win. Я создал новый файл (в моем случае с именем "jomag") и поместил его в "/usr/share/X11/xkb/symbols/":
partial modifier_keys
xkb_symbols "jomag" {
key <LALT> { [ Control_L, Control_L ] };
key <LWIN> { [ Alt_L, Alt_L ] };
modifier_map Control { <LALT>, <LWIN> };
};
Я также добавил строку в /usr/share/X11/xkb/rules/evdev:
! option = symbols
jomag:jomag = +jomag(jomag) <--- this one
Хотя я не уверен, что это было необходимо.
Я обнаружил, что лучший способ загрузить его — использовать setxkbmap:
setxkbmap -option jomag:jomag
Для перезагрузки запустите с пустой опцией:
setxkbmap -option
setxkbmap -option jomag:jomag