Openbox перезаписывает конфигурацию xmodmap

Я настраиваю openbox на своем ноутбуке под управлением Linux Mint 13. Я хочу, чтобы мой ключ Caps Lock стал дополнительным ключом управления. Я установил необходимые настройки в файл ~/.Xmodmap и проверил его, выполнив

 xmodmap ~/.Xmodmap 

Он работает правильно.

Однако, когда я переписываю сеанс openbox, этих ключевых изменений нет. Запуск вышеуказанной команды xmodmap ее снова работать, но я хочу, чтобы она автоматически выполнялась при запуске.

Интересно, что я добавил команду test zenity как ~/.config/openbox/autostart файле ~/.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 который переписывает мои изменения.

Далее, немного googling познакомил меня с командой setxkbmap , которая, очевидно, также может сделать то же самое. Я также заменил этот исполняемый файл, аналогично xmodmap выше. И я получил преступную команду!

 setxkbmap -option terminate:ctrl_alt_bksp 

Я понятия не имею, что это делает, но после запуска xmodmap ~/.Xmodmap (который применил мои настройки правильно), если я запустил xmodmap ~/.Xmodmap выше команду, мои изменения будут сброшены! Редактировать : Это действительно забавно. Просто команда setxkbmap без каких-либо аргументов, с радостью перезаписывает мои изменения командой xmodmap ~/.Xmodmap .

Теперь у меня есть две вещи, которые нужно выяснить, где этот setxkbmap запущен и почему и как это исправить. Я все еще расследую, но могу серьезно использовать какую-то помощь 🙂

Обновление 2

К черту xmodmap . Я не могу понять, откуда setxkbmap , но я решил использовать команду setxkbmap чтобы сделать мой Caps Lock в качестве Ctrl.

 setxkbmap -option ctrl:nocaps 

Незадолго до запуска openbox. Работает блестяще. Ключ блокировки кнопок остается действующим как клавиша 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 & 

Насколько мне известно, это не имеет ничего общего с клавиатурой. Кроме того, вот сценарий, который запускает мой сеанс: (Run by lightdm)

 #!/bin/bash setxkbmap -option ctrl:nocaps exec openbox-session 

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

Я нашел преступника, используя трюк замены setxkbmap скриптом, однако я также добавил ps -AF --forest чтобы идентифицировать вызывающего абонента setxkbmap.

Не зная сценарий автозапуска, моя ставка заключается в том, что вы не используете правильный синтаксис, позволяя командам работать в фоновом режиме с помощью амперсанда ( & ).

Попробуйте отредактировать файл .config/openbox/autostart чтобы он выглядел так:

 # Run the system-wide support stuff #. $GLOBALAUTOSTART # Programs to launch at startup # Programs that will run after Openbox has started (sleep 1 && xmodmap ~/.Xmodmap ) & 

Если вы сомневаетесь, посмотрите в wiki openbox и посмотрите, как все примеры имеют & после каждой записи.

http://openbox.org/wiki/Help:Autostart