2

После нескольких дней исследований я обнаружил, что в Ubuntu /etc/gdm/Xsession выполняется вместо /etc/X11/Xsession . Хотя оба запускают скрипты в /etc/X11/Xsession.d .

Я определил /etc/X11/Xmodmap и создал скрипт подключения в /etc/X11/Xsession.d/40load-xmodmap , но загруженный xmodmap теряется после 99x11-common_start .

Коды отладки:

/etc/X11/Xseesion:
...
for file in Xsession.d/*; do
  . $file

  echo The current xmodmap is: 
  xmodmap
done
...

Напечатанный xmodmap показывает, что 40load-xmodmap работает очень хорошо, но определенные ключевые моды будут потеряны после запуска рабочего стола.

Наконец, я определил xmodmap в пользовательском каталоге ~/.Xmodmap , на этот раз, когда сеанс запускается, всплывающее окно предлагает мне включить Xmodmap. Итак, я думаю, может быть, рабочий стол GNOME сбрасывает xmodmap?

1 ответ1

3

Во-первых, вы должны знать, что есть два интерфейса для настройки клавиатуры под X:

  • Xmodmap: традиционный, простой, ограниченный.
  • XKB: современный, сложный, мощный.

Вы можете определить раскладку клавиатуры в /etc/X11/xorg.conf с помощью устройства kbd . (Похоже, страница руководства по какой-то причине не входит в настоящий дистрибутив.) Если вы этого не сделаете, применяются настройки из /etc/default/console-setup .

Если ваш менеджер дисплеев - Gdm, он загружает настройки XKB и xmodmap (смотрите /etc/gdm/Xsession) из /etc/X11/Xkbmap и /etc/X11/Xmodmap соответственно. Другие менеджеры дисплеев оставляют ваши настройки без изменений.

Когда вы входите в систему, среда рабочего стола может переопределять ваши настройки своими собственными настройками. Если вы используете стандартную среду Ubuntu, посмотрите этот вопрос.

Я рекомендую выбирать встроенную раскладку, которая соответствует вашей клавиатуре, в качестве раскладки системы, используя графический интерфейс Ubuntu Keyboard Preferences и нажимая «Применить для всей системы», и отдельно сохраняя ваши личные настройки в ~/.xmodmap или ~/.xkbmap .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .