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.