На внешней мыши для основной кнопки возвращается значение по умолчанию

Я левша, поэтому моя основная кнопка мыши установлена ​​на правую кнопку. Это отлично работает с кнопками моей сенсорной панели, и раньше оно отлично работало и с моей внешней Bluetooth-мышью. Но теперь внезапно, каждый раз, когда я подключаю внешнюю мышь, основная кнопка мыши остается левой, а основная кнопка тачпада остается правой. Я могу решить эту проблему, перейдя в «Настройки»> «Мышь и сенсорная панель»> «Основная кнопка» и установив для нее значение «Влево», а затем «Вправо». Конечно, я бы предпочел не делать это каждый раз при повторном подключении мыши. Есть предложения?

1
задан 13 October 2020 в 12:19

2 ответа

Я использую KVM-переключатель, поэтому после обновления каждый раз при переключении возникает одна и та же проблема.

На данный момент у меня есть этот быстрый и грязный сценарий. Запустите его в терминале от имени вошедшего в систему пользователя;

xinput list | grep Mouse | sed -nre 's/^.*\sid=([0-9]+)\s.*$/\1/p' | xargs -r -I '{}' echo xinput set-button-map {} 3 2 1

Надеюсь, что получится что-то получше, но пока должно быть полезно.

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

ОБНОВИТЬ/РЕДАКТИРОВАТЬ НИЖЕ

Теперь у меня есть более удобное решение, которое автоматизировано для каждого переключателя kvm, но это все еще хакерское/грязное решение, и я запускаю скрипт после входа в систему...

Настройте следующее для вашего идентификатора поставщика и идентификатора продукта на основе вывода lsusb. Где шестнадцатеричное число с двоеточием посередине — это {idvendor}:{idproduct} для вашей мыши. Кроме того, как добавляет flipjacob, настройте строку «Mouse» в операторе grep в соответствии с тем, что вы получаете от xinput.

Создайте файл (от имени root) /etc/udev/rules.d/80-force-left-handed-mouse-on-plugin-event.rules со следующим содержимым

ATTRS{idVendor}=="045e", ATTRS{idProduct}=="0047", ACTION=="bind", RUN+="/root/notify-mouse-plugged.sh"

Создайте сценарий, который он будет запускать (от имени root) /root/notify-mouse-plugged.sh.

#!/bin/bash

umask 0000
echo $ACTION >> /tmp/mouse-flag
date >> /tmp/mouse-flag

И, наконец, создайте сценарий для получения «уведомления» в контексте вошедшего в систему пользователя. Я запускаю это после входа в терминал и оставляю его там.

Сценарий прослушивателя $HOME/listen-for-mouse-plugged.sh.

#!/bin/bash

echo "" > /tmp/mouse-flag

tail -qfn 0 /tmp/mouse-flag 2>/dev/null | while read s
do
  #inotifywait -e create /tmp/mouse-flag
  echo reset mouse $s
  xinput list | grep Mouse | sed -nre 's/^.*\sid=([0-9]+)\s.*$/\1/p' | xargs -I '{}' xinput set-button-map {} 3 2 1

  #sleep 5
done

Он запускает цикл слушателя 3 раза для меня, но это не имеет большого значения для чего-то, что я надеюсь скоро выбросить.

4
ответ дан 29 October 2020 в 14:55

У меня была такая же проблема, и после долгих поисков это сработало для меня: Откройте «Настройки запускаемых приложений» и добавьте следующую команду

xmodmap -e "pointer = 3 2 1"

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

Запуск 20.10 - надеюсь, что эта ошибка будет исправлена ​​в ближайшее время.

2
ответ дан 13 November 2020 в 03:40

Другие вопросы по тегам:

Похожие вопросы: