Я создал следующий ~/.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 всегда работала. Это был просто обмен Удалить / Меню, который не удался. Я оставлю этот вопрос открытым, на случай, если у кого-то еще возникнет такая же проблема, поскольку я на самом деле не знаю, почему проблема прекратилась.
Вот, возможно, лучший ответ: http://cweiske.de/howto/xmodmap/ar01s06.html
Возможно, вам придется немного подправить его, чтобы работать для вас, но инструкции все есть.
Возможно, у вас есть синтаксическая ошибка в вашем файле ~/.Xmodmap
?
Попробуйте выполнить:
$ xmodmap ~/.Xmodmap
.
Опоздал на вечеринку, но это также сводило меня с ума; и, как бы я ни был упрям, сдаться было невозможно.
В основном это то, что я пытался (как мой пользователь или root, если необходимо)
(На самом деле, добавление команды xmodmap
в [ 116] работал, но он требует запуска терминала каждый раз после входа в систему)
Несколько лет назад (?), xkb
был выбран для работы с отображением и настройкой ключей (взаимодействие с X), но [ 118] может также запросить изменения, связанные с ключом X, после того, как xkb
выполнил свою работу во время инициализации X-сессии.
Проблема в том, когда должны произойти эти настройки xmodmap?
Кажется, эти файлы были обработаны слишком рано, и либо X не был готов принять изменения xmodmap, либо xkb перезапишет их.
Примечание. Я добавил некоторое «отслеживание» к этим файлам, чтобы убедиться, что они действительно выполняются в какое-то время! sup>
Решение, которое, кажется, работает
[ 1147] Первоначально я не стремился добавить файл.desktop
(простого однострочного сценария должно быть достаточно), но это работает, так что вот оно.
В основном создайте файл ~/.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]
Надеюсь, это все!
Я знаю, что это глупо, но в качестве обходного пути вы могли бы просто запустить xmodmap ~/.Xmodmap
.
Также вы можете проверить /etc/gdm/Xsession
для строки usermodmap="$HOME/.Xmodmap"
и, если ее там нет, просто добавьте ее в конец файла. Если вы единственный пользователь системы, просто внесите свои изменения в /etc/X11/Xmodmap
.
У меня была та же странная проблема, когда я пытался запустить свой Xmodmap при входе в сеанс (ubuntu 13.04). Я наконец-то заставил его работать с файлом .xinitrc в моей домашней папке, куда я положил свою команду, но с абсолютными путями к ней, а именно:
/ usr / bin / xmodmap /home/MYNAME/.Xmodmap
Затем мне пришлось перезагрузить компьютер (не просто заново), чтобы он был выполнен.
К сожалению, это похоже на (очень) давнюю проблему, и это просто потому, что после Gnome 3.6 поддержка xmodmap
была прекращена.
Это обсуждается в Переназначение ключей в GNOME3.8 с помощью xmodmap? и Ошибка 873656 — файл .Xmodmap не загружается Gnome 3.x .
Решение состоит в том, чтобы перейти на xkb
. Небольшая помощь содержится в комментарии 29 во второй ссылке.