Сложное переназначение клавиатуры в Linux

Сложное переназначение клавиатуры в Linux

Вот еще один вопрос о переназначении клавиш в современных дистрибутивах 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

Связанный контент