LINUX.ORG.RU

Перестали применяться настройки клавиатуры в lxhotkey для DasKeyboard (скроллинг колесиком громкости)

 , , ,


0

1

Решил сделать прокрутку вверх-вниз с помощью колесика громкости на клавиатуре DasKeyboard. Делал вчера вот так:

Как в Linux настроить скроллинг с помощью регулятора громкости на клавиатуре DasKeyboard

И вчера все работало. Я, довольный, выключил компьютер.

Сегодня включаю компьютер - прокрутка не работает. Полез смотреть настройки кнопок XF86AudioRaiseVolume и XF86AudioLowerVolume в lxhotkey. Они есть. Но прокрутка не работает. Удалил эти два действия, создал заново, перечитал конфигурацию через openbox --reconfigure. Не работает.

Полез в файл ~/.config/openbox/lxde-rc.xml, нашел там код:

<keyboard>
    ...
    <keybind key='XF86AudioLowerVolume'>
        <action name='Execute'>
            <command>/usr/bin/xvkbd -no-jump-pointer -xsendevent -text &apos;\[Up]&apos;</command>
        </action>
    </keybind>
    <keybind key='XF86AudioRaiseVolume'>
        <action name='Execute'>
            <command>/usr/bin/xvkbd -no-jump-pointer -xsendevent -text &apos;\[Down]&apos;</command>
        </action>
    </keybind>
</keyboard>

Вижу, что команды есть, вопрос только в апострофах. Я не знаю, преобразуются ли & apos ; в обычные апострофы при выполнении команды. В каком виде вчера прописались опции в lxde-rc.xml, когда прокрутка работала, я не знаю.

Поэтому на всякий случай попробовал заменить прямо в xml-файле & apos ; на обычный апостроф '. Вроде как для XML апострофы в содержимом тегов недопустимы, но я попробовал. Конфигурация openbox перегрузилась без ошибок. Но прокрутка не заработала.

Вот теперь незнаю куда еще надо копать, чтобы заработала прокрутка так, как это получилось вчера.

★★★★★

для твоих целей я использую xbindkeys.
При кнопке я вызываю не команду, а скрипт
пример xbindkeysrc:

/полный путь/voldown.sh
  XF86AudioLowerVolume


Ну а в скрипте пиши, что хочется.

По второму твоему вопросу. От своего пользователя запусти скрипт в
терминале. Если он отрабатывает, ура. Всё будет работать.

naked_joe
()
Ответ на: комментарий от naked_joe

При кнопке я вызываю не команду, а скрипт

Понял. Я тоже сделал два скрипта, чтоб с амперсантами не заморачиваться. В скриптах прописал логирование в файл. Если просто запустить первый или второй скрипт от моего пользователя, то в файле лога появляются записи, скрипт работает.

Удалил старые действия в lxhotkey, сделал новые с вызовом скрипта. И они нифига не работают, и лог не пополняется.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от naked_joe

И да, логу верить нельзя. Тыкай посторочно в терминале. Вдруг твой скрипт наткнется на отсутствие привилегий (самый распостраненный вариант, второй - синтаксическая ошибка)

naked_joe
()
Ответ на: комментарий от naked_joe

Сделай в обход LX. Та штука работает надежно. https://wiki.archlinux.org/index.php/Xbindkeys

Нифига она не работает. Она не видит ни нажатие клавиш при вращении регулятора, ни нажатие кнопки Mute. Я проверяю так:

xbindkeys --key

При кручении регулятора и нажатии Mute ничего не происходит. А все другие клавиши видятся.

Как это исправить?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

killall xbindkeys. У меня всё показывает, если ты не не запустил программу в фон. Прибей, потом запускай с ключем -k и жми свои кнопки. Нижнюю строку копируй в пустой xbindkeysrc, а выше ставь свой скрипт. Потом запускай. Заработало? Ставь в автозапуск.

naked_joe
()

Брось костыли, родина дала тебе ногиudev!

anonymous
()

А что изменилось со вчера? Приложение другое?

Предположение. xvkbd может посылать эти сообщения, да вот только новые тулкиты фильтруют синтетические сообщения через XSendEvent. Типа безопасность. Все же хотели безопасности? Хотели. Вот и пообрубали. GTK+2, например, еще реагировал, а GTK+3 уже игнорирует. Короче, попробуй без SendEvent. Это значит, что событие пойдет через XTEST. И вот с "-no-jump-pointer" тоже надо глянуть. Там ремарка в man про XTEST есть.

Если используется XTEST, то события получает окно, которое имеет фокус.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)

Не факт, конечно, что в этом проблема (если раньше работало, но на ровном месте с этим же приложением не работает), но вот надо пока напрямую попробовать из командной строки, а то вдруг у тебя конфиг неправильный? Посмотри, что в xev шлет.

Вот по теме, когда XSendEvent не работал:

XSendEvent эмуляция кнопок мыши

Firefox в полноэкранном режиме

XSendEvent эмуляция кнопок мыши

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)

Еще можно попробовать xmodmap, если тебе от этой ручки PgUp/PgDown нужен, а не громкость.

Zubok ★★★★★
()

А завтра ты перейдешь на вяленого и все опять сломается.

evdev и uinput, все остальное - от лукавого. По крайней мере пока libInput не разродился кастомными ремапперами.

t184256 ★★★★★
()
Ответ на: комментарий от naked_joe

В общем, я не знаю что произошло, но сегодня опять работает, причем теперь через ~/.xbindkeysrc (в lxhotkey сочетания, естественно, убраны).

И xbindkeys --key теперь ловит вращение колесика, но видимо он показывает перемапленную им же клавишу:

$ xbindkeys --key
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
    m:0x0 + c:116
    Down

Единственное на что грешу, что фраза в арчвики:


After you made a change, execute xbindkeys --poll-rc to reload the configuration file and apply the changes.


не соответствует действительности, и иксы таки надо перегружать.

Xintrea ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.