У меня на Dell Latitude такая раскладка клавиатуры
Это действительно изматывает мое снаряжение, что Home
и End
клавиши сопоставлены с составным Fn
ключом. Так что мне удалось поменяться PageUp
с Home
и PageDown
с End
, добавив это к /usr/share/X11/xkb/symbols/de
(на самом деле, это немецкий вариант)
xkb_symbols "basic" {
...
key <HOME> { [ Prior ] };
key <PGUP> { [ Home ] };
key <END> { [ Next ] };
key <PGDN> { [ End ] };
...
}
Работает как и ожидалось. Однако довольно часто я переключаюсь между своим ноутбуком как таковым и рабочим столом с док-станцией и полноценной клавиатурой, и этот хак раздражает.
Манипуляции с файлами символов xkb требуют перезагрузки (или, по крайней мере, перезапуска среды рабочего стола). Есть ли возможность переключить поведение во время выполнения? Может быть, даже автоматизировано, как хук udev, видящий док-станцию USB-C?
решение1
Вы можете переключаться между раскладками с помощью setxkbmap
. Например, я использую раскладку Дворака, применил ваши изменения к своей локальной
/usr/share/X11/xkb/symbols/de
и переключился на немецкую раскладку:
setxkbmap de
Я проверил, работает ли PGUP как Home, работает. Затем я переключился обратно на dvorak:
setxkbmap dvorak
Если вы хотите переключиться между исходным макетом и вашим пользовательским макетом, я думаю, лучший способ — удалить 4 строки, которые вы показали в своем вопросе, из исходного de
файла макета и создать новый файл пользовательского макета, скажем, /usr/share/X11/xkb/symbols/de-modified с добавленными изменениями. Для переключения между 2 макетами не потребуется перезагрузка и перезапуск X:
setxkbmap de # PGUP wouldn't work as home
setxkbmap de-modified # PGUP would work as home