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

15

Я создал следующий файл ~/.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 загружается, и все волшебное начало работать. Я ничего не менял, кроме добавления каких-то эхо, и теперь он работает, и я снова вернул свои изменения и снова перезапустил. Самое странное, что я когда-либо видел.

Одна вещь, которую я поняла, - это то, что часть "Xpod Lock Caps Lock to Escape" всегда работала. Это было просто сбой обмена Delete / Menu. Я оставлю этот вопрос открытым, если у кого-то другая проблема, так как я действительно не знаю, почему проблема остановлена.

    
задан Matthew Pirocchi 14.10.2010 в 17:31
источник

5 ответов

10

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

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

    
ответ дан turbo 21.11.2010 в 02:20
2

Вот, возможно, лучший ответ: Ссылка

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

    
ответ дан Robert Massaioli 15.10.2010 в 07:02
2

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

Попробуйте запустить:

$ xmodmap ~/.Xmodmap

Это должно вызвать ошибку, если она есть.

    
ответ дан gpmcadam 22.03.2011 в 20:14
2

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

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

  • ~ / .Xmodmap only
  • ~ / .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, либо xkb перезаписывал их.

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

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

Я не собирался сначала добавлять файл .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 или выбрать другое имя файла!). Выйдите из системы и вернитесь.

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

Другим решением было бы забыть 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 ).

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

    
ответ дан Ring Ø 22.10.2017 в 12:03
0

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

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

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

    
ответ дан greguti 08.07.2013 в 11:54