Немецкий умляут с ключом Windows + a/o/u/s

Я использую американскую раскладку клавиатуры, но иногда должен вводить немецкие умляуты. До сих пор я использовал.Xmodmap с определениями как это

keycode 133 = Mode_switch NoSymbol Mode_switch
keycode  38 = a A adiaeresis Adiaeresis aacute Aacute
keycode  39 = s S ssharp ssharp ssharp section

где я могу достигнуть умляутов и резкого s через ключ Windows плюс a/o/u/s. Как я могу достигнуть точно (действительно привык к нему...) то же поведение с новой xkb системой (файл конфигурации /usr/share/X11/xkb/symbols/pc). Это выглядит еще более сложным, чем Xmodmap.

Я ценил бы любую справку.

0
задан 18 October 2018 в 02:57

1 ответ

После некоторых неудачных попыток добавить мой собственный локальный файл xkb / symbols (см. https://askubuntu.com/a/896298/883344 и https://askubuntu.com/a / 896297/883344 ), я обратился за решением к https://stackoverflow.com/a/45042841/3852630 . Запустив

% setxkbmap -query

, я вижу, что мой текущий макет - us. Я копирую этот макет в свой собственный файл и делаю копию

% mkdir $HOME/XKB
% cd $HOME/XKB
% xkbcomp -xkb $DISPLAY us.xkb
% cp us.xkb us-altgr-umlaut.xkb

и модифицирую копию, как показано здесь

% diff us.xkb us-altgr-umlaut.xkb
1224,1225c1224,1225
<         type= "ALPHABETIC",
<         symbols[Group1]= [               u,               U ]
---
>         type= "FOUR_LEVEL_ALPHABETIC",
>         symbols[Group1]= [               u,               U,      udiaeresis,      Udiaeresis ]
1232,1233c1232,1233
<         type= "ALPHABETIC",
<         symbols[Group1]= [               o,               O ]
---
>         type= "FOUR_LEVEL_ALPHABETIC",
>         symbols[Group1]= [               o,               O,      odiaeresis,      Odiaeresis ]
1244,1245c1244,1245
<         type= "ALPHABETIC",
<         symbols[Group1]= [               a,               A ]
---
>         type= "FOUR_LEVEL_ALPHABETIC",
>         symbols[Group1]= [               a,               A,      adiaeresis,      Adiaeresis ]
1248,1249c1248,1249
<         type= "ALPHABETIC",
<         symbols[Group1]= [               s,               S ]
---
>         type= "FOUR_LEVEL_SEMIALPHABETIC",
>         symbols[Group1]= [               s,               S,          ssharp,          ssharp ]

Я написал небольшой скрипт оболочки, который находится где-то в моем поиске путь, содержащий строку

xkbcomp -w 0 $HOME/XKB/us-altgr-umlaut.xkb $DISPLAY

Всякий раз, когда я хочу переключиться на свой макет с немецкими умлаутами, я запускаю этот скрипт. Я переключаюсь обратно к отображению клавиатуры по умолчанию с помощью

setxkbmap us

Как упоминалось в моем комментарии выше, теперь я использую AltGr для переключения / o / u / s на ä / ö / ü / ß (решил перепрограммировать мой мозг использовать AltGr вместо ключа Windows, который, кажется, имеет особое значение в рабочем столе Gnome 3). Как описано в https://blog.florianheinle.de/englische-tastatur-umlaute (на немецком языке), AltGr можно использовать для переключения, запустив gnome-tweaks, затем перейдя к Keyboard&Mouse -> Additional Layout Options -> Key to choose the 3rd level и выбрав right alt.

Альтернативой, конечно, является изменение файла us в /usr/share/X11/xkb/symbols, но это может быть перезаписано при следующем обновлении. В любом случае, это будет diff между новым файлом us и старым (с тем же именем):

26c26
<     key <AD07> {  [     u,    U, udiaeresis, Udiaeresis ] };
---
>     key <AD07> {  [     u,    U       ]   };
28c28
<     key <AD09> {  [     o,    O, odiaeresis, Odiaeresis ] };
---
>     key <AD09> {  [     o,    O       ]   };
33,34c33,34
<     key <AC01> {  [     a,    A, adiaeresis, Adiaeresis ] };
<     key <AC02> {  [     s,    S, ssharp, ssharp ] };
---
>     key <AC01> {  [     a,    A       ]   };
>     key <AC02> {  [     s,    S       ]   };
1
ответ дан 27 October 2019 в 07:46

Другие вопросы по тегам:

Похожие вопросы: