Поздно на вечеринку, но это сводило меня с ума также; и, как бы я ни был упрям, сдаваться нельзя.
В основном это то, что я пытался (как мой пользователь или root, если это необходимо)
- Только ~ / .Xmodmap
- ~ / .xsession, ~ / .xsessionrc
- ~ / .Gnomerc
- ~ / .Xprofile
- ~ / .Xinitrc
- /etc/X11/Xsession.d/myscript
- /usr/share/X11/xorg.conf.d/ ( файлы конфигурации, не трогали его )
(Собственно, добавление xmodmap
команды в ~/.bashrc
работало, но для этого требуется запускать терминал каждый раз после входа в систему)
Несколько лет назад (?) xkb
Был выбран для работы с сопоставлением и настройкой ключей (взаимодействием с X), но xmodmap
мог также запросить изменения, связанные с ключами, в X после того, как он xkb
выполнил свою работу во время инициализации сеанса X.
Проблема в том, когда должны произойти эти настройки xmodmap?
Это , кажется , эти файлы выше обрабатывается слишком рано в процессе, и либо X не был готов принять Xmodmap изменения или Х бы переписать их.
Примечание: я добавил некоторое «отслеживание» к этим файлам, чтобы убедиться, что они действительно запущены в какое-то время!
Решение, которое, кажется, работает
.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
замените его 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
это скрипт в новом каталоге, который bin
я создал, который содержит
#!/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
).
Надеюсь, это все!