Openbox замінює конфігурацію xmodmap


9

Я встановлюю openbox на своєму ноутбуці під управлінням Linux Mint 13. Я хочу, щоб моя клавіша Caps Lock діяла як додаткова клавіша управління. Я помістив потрібні налаштування у свій ~/.Xmodmapфайл і перевірив це, запустивши

xmodmap ~/.Xmodmap

Працює правильно.

Однак, коли я переходжу на свою сесію openbox, цих ключових змін немає. Запуск вищевказаної xmodmapкоманди змушує її працювати знову, але я хочу, щоб вона сталася автоматично при запуску.

Що цікаво, це те, що я додав тестову zenityкоманду як наступну до свого ~/.config/openbox/autostartфайлу

zenity --info --text=Hello

Це створює невелике діалогове вікно і закривається лише після закриття діалогового вікна.

Тепер, коли я переходжу на свій сеанс openbox, Caps Lock виконує функцію клавіші Ctrl, поки діалогове вікно зенності не закриється. Після закриття цього діалогового вікна 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

ви, ймовірно, використовуєте якусь конфігурацію клавіатури, наприклад, виберіть розкладку клавіатури або щось подібне, що скасовує застосовані зміни
Ульріх Дангел,

Єдине інше місце, з яким я налаштовувався на налаштування клавіатури, - це вікно налаштувань розкладки графічного інтерфейсу GUI, де я змінив клавішу блокування шапок, щоб вона діяла як додатковий ctrl. Це прекрасно працює, в DE-кориці, моє блокування шапки працює як ctrl навіть після переробки. Я думаю, що конфігурація була лише корицею, але я не впевнений.
Шрікант Шарат

як ви додаєте команду в сценарій автозапуску?
pedrosaurio

Чи можете ви опублікувати свій autostartфайл?
pedrosaurio

Відповіді:


1

У мене була подібна проблема. Виявилося, що це спричинено ibus. Я просто його видалив, оскільки мені не потрібні його послуги.

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


0

Не знаючи вашого сценарію автоматичного запуску, я заперечую, що ви не використовуєте належного синтаксису, дозволяючи командам працювати у фоновому режимі за допомогою ampersand ( &).

Спробуйте відредагувати .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 ) &

Якщо ви сумніваєтесь, загляньте у вікі openbox і подивіться, як усі приклади мають &після кожного запису.

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


Мій файл автозапуску порожній. У моєму xmodmap ~/.Xmodmapфайлі, який я мав у цьому файлі (без &, здавалося, не потрібно). Я дзвонив xmodmap(і зараз setxkbmap) у сценарії, що починає мою сесію openbox. Незадовго до запуску exec openbox-sessionя запускаю setxkbmapкоманду.
Шрікант Шарат

Крім того, додавання sleep 1затримки таким чином, що xmodmapзастосовує зміни після того, як все інше завантажується, хоча працює більшу частину часу, не змушує мене відчувати себе занадто впевненим у вирішенні рішення. Я вважаю за краще не робити цього, якщо у мене є альтернативи.
Шрікант Шарат

Ви можете уникнути очевидно всіх коментарів та sleepкоманди, тим не менш, &це потрібно після кожного запису, інакше всі програми після першого запису взагалі не будуть працювати.
pedrosaurio

Так, якщо його тривалий додаток / процес, не додавання &дозволу зробить це блокуванням. Я використовував цю поведінку разом з zenityкомандою, щоб встановити, що xmodmapзміни змінюються після autostart закінчення. Мій автозапуск зараз набирає обертів і за мить вставить його у запитання. Однак це не має нічого спільного з клавіатурою.
Шрікант Шарат

І без команди сну зміни, внесені змін xmodmap, перезаписуються, як тільки файл автозапуску закінчується.
Шрікант Шарат
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.