Почему мой файл ~ / .Xmodmap не загружается при входе в систему?

Я создал следующий ~/.Xmodmap файл согласно этого ответа .

keysym Delete = Menu
keysym Menu = Delete

clear Lock
keycode 0x42 = Escape

Другими словами, поменяйте местами Delete и Menu и сделайте Caps Lock дополнительным Escape.

В следующий раз, когда я вошел в систему, Ubuntu спросила меня, хочу ли я загрузить ~/.Xmodmap, как ожидалось. Я загрузил его, но ничего не произошло (ни тогда, ни при последующих входах в систему). Если я запускаю xmodmap ~/.Xmodmap вручную, он работает как положено.

Я знаю, что это работало в начале бета-версии 10.10, но это не помогло в моей новой версии 10.10. Я не пробовал ничего раньше 10.10. Любые идеи?

Редактировать: Я поместил несколько отладочных операторов в /etc/gdm/Xsession, чтобы убедиться, что ~/.Xmodmap загружается, и все волшебным образом начало работать. Я ничего не изменил, кроме добавления эха, и он все еще работает, когда я отменил свои изменения и перезапустил снова. Самое странное, что я когда-либо видел.

Одна вещь, которую я понял, заключается в том, что часть «перетаскивания Caps Lock to Escape» в Xmodmap всегда работала. Это был просто обмен Удалить / Меню, который не удался. Я оставлю этот вопрос открытым, на случай, если у кого-то еще возникнет такая же проблема, поскольку я на самом деле не знаю, почему проблема прекратилась.

16
задан 31 October 2017 в 10:03

6 ответов

Вот, возможно, лучший ответ: http://cweiske.de/howto/xmodmap/ar01s06.html

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

0
ответ дан 31 October 2017 в 10:03

Возможно, у вас есть синтаксическая ошибка в вашем файле ~/.Xmodmap?

Попробуйте выполнить:

$ xmodmap ~/.Xmodmap

.

0
ответ дан 31 October 2017 в 10:03

Опоздал на вечеринку, но это также сводило меня с ума; и, как бы я ни был упрям, сдаться было невозможно.

В основном это то, что я пытался (как мой пользователь или root, если необходимо)

  • ~ / .Xmodmap only
  • ~ / .xsession, ~ / .xsessionrc [ 1135]
  • ~ / .gnomerc
  • ~ / .xprofile
  • ~ / .xinitrc
  • /etc/X11/Xsession.d/myscript
  • ] /usr/share/X11/xorg.conf.d/ ( файлы конфигурации, не касались его )

(На самом деле, добавление команды xmodmap в [ 116] работал, но он требует запуска терминала каждый раз после входа в систему)

Несколько лет назад (?), xkb был выбран для работы с отображением и настройкой ключей (взаимодействие с X), но [ 118] может также запросить изменения, связанные с ключом X, после того, как xkb выполнил свою работу во время инициализации X-сессии.

Проблема в том, когда должны произойти эти настройки xmodmap?
Кажется, эти файлы были обработаны слишком рано, и либо X не был готов принять изменения xmodmap, либо xkb перезапишет их.

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

Решение, которое, кажется, работает

[ 1147] Первоначально я не стремился добавить файл .desktop (простого однострочного сценария должно быть достаточно), но это работает, так что вот оно.
Решение исходит из Как переназначить или поменять специальные клавиши клавиатуры в Linux? «Решение 1»

В основном создайте файл ~/.config/autostart/my-xmodmap.desktop и поместите в него:

[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
[ 1149] замените me на ваше имя пользователя (обратите внимание, что я не удосужился попробовать ~/ или $HOME, которые могут одинаково хорошо работать вместо /home/me, и полный путь xmodmap, скорее всего, не нужен ..) .) и добавьте бит exec

chmod +x ~/.config/autostart/my-xmodmap.desktop

В этом случае команды xmodmap должны быть в файле ~/.Xmodmap (или использовать опцию -e, или выбрать другое имя файла!). Выйдите из системы и вернитесь обратно.

Обратите внимание, что вы можете создать стартовую программу из «Startup Applications».

Другим решением было бы забыть xmodmap и научиться настраивать xkb!

Редактировать (снова)

Иногда, может быть, 25% входов в систему, xmodmap все еще кажется не работающим - пока команда фактически выполняется (трекер это доказывает). Единственный вывод, к которому я мог бы прийти в это время, состоит в том, что процесс xkb действительно запаздывает в процессе входа в систему и может завершиться после выполнения xmodmap. Выглядит как состояние гонки ... Итак, наконец, я изменил строку файла exec для рабочего стола автозапуска на

Exec=$HOME/bin/mystart &

(обратите внимание на &) mystart - это скрипт в новом каталоге [ 1125] Я создал, который содержит

#!/bin/bash    
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run

и

chmod u+x ~/bin/mystart

Сценарий спит 5 секунд, прежде чем запустить xmodmap, и отслеживает его запуск (в файле /tmp/xmodmap-has-run). [+1157]

Надеюсь, это все!

0
ответ дан 31 October 2017 в 10:03

Я знаю, что это глупо, но в качестве обходного пути вы могли бы просто запустить xmodmap ~/.Xmodmap.

Также вы можете проверить /etc/gdm/Xsession для строки usermodmap="$HOME/.Xmodmap" и, если ее там нет, просто добавьте ее в конец файла. Если вы единственный пользователь системы, просто внесите свои изменения в /etc/X11/Xmodmap.

0
ответ дан 31 October 2017 в 10:03

У меня была та же странная проблема, когда я пытался запустить свой Xmodmap при входе в сеанс (ubuntu 13.04). Я наконец-то заставил его работать с файлом .xinitrc в моей домашней папке, куда я положил свою команду, но с абсолютными путями к ней, а именно:

/ usr / bin / xmodmap /home/MYNAME/.Xmodmap

Затем мне пришлось перезагрузить компьютер (не просто заново), чтобы он был выполнен.

0
ответ дан 31 October 2017 в 10:03

К сожалению, это похоже на (очень) давнюю проблему, и это просто потому, что после Gnome 3.6 поддержка xmodmap была прекращена.

Это обсуждается в Переназначение ключей в GNOME3.8 с помощью xmodmap? и Ошибка 873656 — файл .Xmodmap не загружается Gnome 3.x .

Решение состоит в том, чтобы перейти на xkb. Небольшая помощь содержится в комментарии 29 во второй ссылке.

3
ответ дан 13 July 2020 в 21:24

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

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