Сохранение настроек xinput после выключения USB-мыши (при этом она все еще подключена)

Сохранение настроек xinput после выключения USB-мыши (при этом она все еще подключена)

Я хочу, чтобы настройки xinput для моей usb-мыши сохранялись после ее выключения и повторного включения. Как я могу отслеживать это событие?

Это не работает, так как я никогда не отключаю USB-приемник: Как сделать так, чтобы настройки xinput сохранялись после отключения и повторного подключения устройств, а также после выключения, перезагрузки и т. д.?

Насколько я понимаю, udev можно использовать для приложений обнаружения оборудования, но, похоже, он не способен обнаруживать изменения состояния устройства, например, приемника Logitech Unifying.

Я полагаю, что ключ к решению этой проблемы — успешно отслеживать события в Receiver и писать скрипт для выполнения команды xinput. Кто-нибудь знает, как обнаружить это событие? Solaar, конечно, может обнаружить это, но это не значит, что это просто для неопытного пользователя Linux.

Спасибо!

решение1

Я решил эту проблему, воспользовавшись предложением из другого поста в Unix Stack Exchange.

Вкратце, я запускаю фоновый скрипт оболочки, который каждые 2 секунды проверяет наличие изменений в поведении мыши и, когда он их находит, повторно запускает команду xinput.

Оригинальное (и более простое) решение опубликовано здесь:

https://unix.stackexchange.com/questions/332573/how-to-make-xinput-commands-permanent/340594#340594

Вот скрипт, который я запускаю ~/.xinitrc:

# Map mouse button 8 (top right) to button 2 (top left) and vice versa, run when changes to the mouse occur
while true; do
        NEW_MOUSEID=$(xinput | grep "Expert Mouse" | grep -o -E '[0-9]+' | head -n 1)
        if [ "$MOUSEID" != "$NEW_MOUSEID" ]; then
                MOUSEID=$NEW_MOUSEID
                if [ "$MOUSEID" != "" ]; then
                        xinput --set-button-map $MOUSEID 1 8 3 4 5 6 7 2 9 10 11 12
                fi
        fi
        sleep 2
done &

Базовая структура:

  • Следите за изменениями идентификатора USB-устройства от xinput каждые 2 секунды.
  • Если идентификатор мыши пустой, она не подключена, не запускайте xinput (если вы это сделаете, вы получите сообщение об ошибке)
  • Синтаксический анализ команды xinputвозвращает только идентификатор USB-устройства для мыши «Expert Mouse», например: «14».

Обратите внимание, что в исходном ответе предлагается отслеживать изменения lsusbи затем повторно запускать команду. Это работает так же хорошо.

Связанный контент