Я устанавливаю openbox на моем ноутбуке под управлением Linux Mint 13. Я хочу, чтобы мой ключ Caps Lock действовал как дополнительный управляющий ключ. Я поместил необходимые настройки в свой ~/.Xmodmapфайл и проверил его, запустив
xmodmap ~/.Xmodmap
Работает правильно.
Однако, когда я перехожу в сеанс openbox, эти ключевые изменения отсутствуют. Запуск вышеуказанной xmodmapкоманды заставляет ее работать снова, но я хочу, чтобы это происходило автоматически при запуске.
Что интересно, я добавил тестовую zenityкоманду в свой ~/.config/openbox/autostartфайл как следующую
zenity --info --text=Hello
Это создает маленькое диалоговое окно и выходит только после закрытия диалога.
Теперь, когда я перехожу на сеанс openbox, Caps Lock действует как клавиша Ctrl, пока не закроется диалоговое окно zenity. Как только этот диалог закрывается, Caps Lock возвращается к своему поведению по умолчанию.
Я не нашел ничего об этом с Google, поэтому я прошу помощи здесь. Ребята, у вас есть идеи, что может пойти не так?
Обновить:
Я пытался понять это, и в своих экспериментах я скопировал свой /usr/bin/xmodmapфайл /usr/bin/xmodmap_и заменил /usr/bin/xmodmapфайл следующим скриптом bash
#!/bin/bash
{
echo '-------'
date
echo xmodmap "$@"
} >> ~/xmodmap-calls
exec /usr/bin/xmodmap_ "$@"
Поэтому каждый раз, когда в системе запускается какой-нибудь чертов скрипт xmodmap, я узнаю об этом.
После этого я перезагружаюсь и нахожу только одну запись в моем ~/xmodmap-callsфайле, которая является моей ~/.Xmodmap, и которая ожидается. Итак, я решил, xmodmapчто это не переписывает мои изменения.
Затем, немного погуглив, познакомил меня с setxkbmapкомандой, которая, очевидно, тоже может делать то же самое. Я также заменил этот исполняемый файл, аналогично xmodmap выше. И я получил команду преступника!
setxkbmap -option terminate:ctrl_alt_bksp
Я понятия не имею, что это делает, но после запуска xmodmap ~/.Xmodmap(при котором мои настройки были применены правильно), если я запускаю указанную выше команду, мои изменения сбрасываются! Изменить : это оказывается очень смешно. Просто setxkbmapкоманда без каких-либо аргументов, радостно перезаписывает мои изменения xmodmap ~/.Xmodmapкомандой.
Теперь у меня есть две вещи, чтобы выяснить, откуда это setxkbmapзапускается и почему и как это исправить. Я все еще расследую, но могу серьезно помочь :)
Обновление 2
К черту xmodmap. Я не могу понять, откуда setxkbmapвызывается, но я нашел способ использовать setxkbmapкоманду, чтобы заставить мой Caps Lock вести себя как Ctrl.
setxkbmap -option ctrl:nocaps
Просто перед запуском openbox. Работает великолепно. Клавиша Caps Lock продолжает действовать как клавиша Ctrl. xmodmapникогда не запускается
Я оставлю этот вопрос открытым, чтобы кто-то, кто знает эти вещи, мог дать некоторое представление. Кроме того, для людей, которые сталкиваются с этим после меня :)
Обновление 3
Вот содержимое моего .config/openbox/autostart, в соответствии с просьбой pedrosaurio.
#!/bin/bash
# Set the wallpaper.
feh --bg-scale /wall.png
# Set default brightness.
xbacklight -time 1 '=40'
# Compositing.
xcompmgr &
# The panel.
tint2 &
# Start a terminal too.
roxterm &
Насколько я могу судить, это не имеет ничего общего с клавиатурой. Кроме того, вот сценарий, который запускает мою сессию: (Запуск от lightdm)
#!/bin/bash
setxkbmap -option ctrl:nocaps
exec openbox-session
autostartфайл?