мышь иногда дважды щелкает, когда я нажимаю один раз


40

У меня есть проблема, которая становится кошмаром, поскольку я думаю, что было бы проще просто полностью отказаться от Ubuntu и попробовать что-то еще. У меня есть ПК HP под управлением Ubuntu 12.04. Когда я щелкаю левой кнопкой мыши, иногда дважды (возможно, в 50% случаев).

До сих пор это приводило к: случайной отправке незаконченных электронных писем, случайному выделению и удалению вещей, которые я не хотел удалять, при написании электронных писем ( очень неприятно), случайному удалению двух вкладок браузера вместо одной (несколько раз) и (в некотором смысле самое раздражающее) очень разочаровывающий опыт конечного пользователя при попытке перемещения окон на рабочем столе или вырезания и вставки из окна терминала. Слава богу, Alt- F7- но я не хочу, чтобы узнать сочетание клавиш для каждой программы я использую, а также для операционной системы (и не будучи в состоянии копировать-вставить это большая потеря для меня).

Я не единственный человек с этой проблемой, но поиск в Google указывает на то, что для этого может быть несколько причин; ни одно из исправлений, которые я прочитал онлайн, не сработало для меня. Позвольте мне пройти через все, включая исправления, которые сработали для других людей, но не для меня. Ох, у меня есть оптическая мышь HP.

  • Это не сломанная мышь. Я попробовал две мыши в моей системе - обе демонстрируют проблему. Обе эти мыши отлично работают на моем домашнем ноутбуке, также работающем под управлением Ubuntu 12.04.

  • Мой /etc/X11/xorg.confвсего несколько строк и не имеет раздела «InputDevice».

  • У меня нет пакета hald или пакета hal.

  • Это началось около недели назад, и, кажется, не становится лучше или хуже.

  • В отчаянии я просто обновился до 12.10, но это не устранило проблему, и теперь я использую дистрибутив, который не является LTS (и, следовательно, не идеален для меня: - \)

Но это делает мою систему очень сложной в использовании.

Возможно важное обновление : я попытался провести некоторые исследования с xev. Мне кажется, что у этих мышей плохая связь - это часто встречается? Я могу удерживать кнопку мыши, а затем получить (щелчок мыши) (пауза) (отпускание мыши) (очень очень короткая пауза) (щелчок мыши) (пауза) (отпускание мыши) (очень очень короткая пауза) (щелчок мыши) и т. Д. Интересно, скажут ли, например, другие операционные системы: «Вы не можете отпустить, а затем снова щелкнуть в течение 0,05 секунды, так что это должно быть сбой, и я буду считать, что кнопка не была отпущена». Могу ли я сказать Ubuntu игнорировать события release-and-then-reclick-почти мгновенно ??

Это похоже на проблему с мышью. Может быть, я должен выкопать более новую мышь? Я только попробовал очень старые


Вы сообщили об этом как об ошибке на панели запуска?
Алвар

Вы можете вспомнить, что произошло неделю назад, когда все это началось?
Hytromo

То, что произошло неделю назад, это именно то, что происходит каждую неделю - я просто нажимаю «установить обновления» и иногда «перезагрузить компьютер, чтобы завершить установку». Эта система прямо из коробки - я думаю, что единственными пакетами, которые я установил, кроме тех, которые есть по умолчанию, были те немногие, которые мне были нужны для запуска sparkleshare.
Кевин Баззард

@ Alvar: кажется, на панели запуска путаница по поводу этой ошибки. У меня общее впечатление, что у некоторых людей возникает эта проблема, и проблема в том, что у них сломана мышь, у некоторых людей возникает эта проблема, и проблема в драйвере Logitech, а у некоторых эта проблема возникает, а проблема в другом. Я постараюсь сообщить об этом и уменьшить шум ...
Кевин Баззард

Я столкнулся с проблемой, которая, как мне показалось, была сломанной мышью в сочетании с жестами Firefox, но оказалось, что боковые кнопки мыши делают «Firefox Back»
Matija Nalis

Ответы:


47

Хорошо, после тщательного тестирования с использованием xev на зараженной машине и переключения между разными мышами на разных системах, я думаю, что я решил эту проблему. Конечно YMMV.

Мое решение: это сломанная мышь.

Точнее говоря, разъем, активируемый при нажатии, устарел или загрязнен или что-то в этом роде, а иногда при удерживании кнопки соединение устанавливается, а затем на мгновение разрывается, а затем снова устанавливается, вызывая двойной щелчок.


Возражение: Но мышь работает нормально, когда я подключаю ее к своей машине с Windows!

Счетчик: Разве не было бы просто вставить в драйвер или ОС следующую строку псевдокода: «если пользователь щелкает мышью и затем щелкает ее снова в течение 0,05 секунды, то это, вероятно, грязный соединитель, так что давайте просто игнорируй это ". Таким образом, не возможно ли, что если вы переключите свою мышь на другой компьютер, работающий под управлением другой ОС и / или использующий другой драйвер на другом оборудовании (даже с той же ОС, вы вполне могли бы использовать другое оборудование, верно?), Вы могли бы получить разные результаты ?

Возражение: Но я попробовал другую старую мышь, и она показала ту же проблему!

Счетчик: удивительно, как две старые мыши из одной компании могут сломаться одинаково, а? И вы никогда не замечали, потому что вторая старая мышь, которую вы попробовали, не показала проблем при подключении к другому оборудованию (см. Предыдущий счетчик).


Если вы действительно не верите, что ваша мышь сломана, проверьте это:

$ xev

а затем найдите квадрат с черным фоном, щелкните по нему и посмотрите результат. Вы определенно всегда получаете один чистый «щелчок» и ничего больше? Я часто получал чистый щелчок, но иногда «отскок» (щелчок без щелчка). Возможно, даже лучше:

$ xev | grep ButtonRelease

Теперь вставьте мышь в квадрат с черным контуром (или в любом месте в этом окне) и нажмите и отмените щелчок 20 раз. Вы должны получать строку «ButtonRelease» каждый раз, когда отпускаете кнопку, и никогда иначе. Я иногда получал один, когда нажимал.

Кошмар окончен.


У меня есть две идентичные мыши, с которыми я недавно заметил неожиданный щелчок, и я не уверен, что оба просто «изнашивались» в течение одной недели. Ваш xevтест не дал мне ничего необычного, но мне интересно, есть ли что-то еще?
Том Броссман

Правильно - я очень подозрительно относился к двум мышам, и ни одна из них не работала на одной машине, а обе работали на другой. Я почти уверен, что есть люди, которые верят, что действительно существует проблема, отличная от «мыши сломаны и ОС не компенсирует это так же, как другие ОС». С другой стороны, я определенно спрыгнул с корабля этим утром - моя система снова работает, и на прошлой неделе я был убежден, что проблема с мышью не может быть, но для меня это действительно было.
Кевин Баззард

2
Со мной я провел 5-10 минут, играя с Xev и наблюдая за выходом. Постоянное нажатие и снятие кликов и т. Д. И т. Д., А затем просто случайное получение неожиданных кликов, когда я не щелкал. Позвольте мне также сказать, что просмотр вывода xev в окне терминала 80x24 может быть очень вводящим в заблуждение, потому что «unclick-click» может привести к тому, что xev выдаст всю страницу, полную информации, и если unclick-click произойдет достаточно быстро (что было в моем случае), тогда вы можете даже не заметить вывод xev, потому что он почти идентичен предыдущей странице.
Кевин Баззард

7
Еще лучше xev | awk '/ButtonRelease/ {print $1,i++}'.
Ареколек

Для меня это проявилось как «кнопка 3» (правая кнопка мыши), периодически посылающая сигнал, когда я прокручиваю колесо мыши. Bizarre.
карбокатион

9

Обслуживание дзен и мыши. Кажется, у многих возникают проблемы с двойным щелчком мыши, когда применяется один щелчок. Кнопка мыши представляет собой микровыключатель. Факт жизни состоит в том, что контакты переключателя отскакивают. Они на самом деле не подпрыгивают, но тереть. Мы будем называть это отказов в любом случае. По какой-то причине программисты сбросили мяч на этом. Для установления контактов перед чтением должна быть применена достаточная продолжительность цикла ожидания. По поводу ничего и на примере одного моего решения было разместить конденсатор через контакты переключателя. Я использовал колпачок 0,1 мкФ ни по какой другой причине, за исключением того, что у меня был колпачок небольшого размера, который бы идеально подходил для мыши. Я не делал каких-либо причудливых анализов времени пребывания, постоянных времени или уровней принятия решений, чтобы найти оптимальное значение. Различные модели будут иметь разные параметры в любом случае.

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

Чтобы применить мод. Найдите конденсатор небольших физических размеров, который поместится внутри корпуса мыши. Я использовал 0.1uF, потому что у меня был один, и это хорошее число, но другие значения, вероятно, будут работать, но не слишком большие или слишком маленькие. То, что слишком велико или мало, является предметом эксперимента. Слишком большой может повлиять на предполагаемые двойные клики, слишком малый не приведет к желаемому эффекту. Я припаял одну ногу кепки в удобном месте, где она не выходила из-под внутренней структуры мыши, на медной стороне платы, к плоскости 0 вольт (земная плоскость, если хотите), я подключил другая часть колпачка к переключателю активна с небольшим количеством тонкого провода. Я использовал переработанный компонент с короткими ногами. У нового, вероятно, будет достаточно длинных ног, чтобы добраться туда, где это необходимо. Для этой работы вам понадобится подходящий паяльник с тонким наконечником.

Если вы не знаете конденсаторы. Конденсатор емкостью 0,1 мкФ может быть обозначен как 0,1 мкФ, или 104, или 100 нФ, или иметь коричнево-черные желтые полосы. Поверхностный тип установки также будет хорошим выбором. Зацепите его несколькими нитями тонкой проволоки. Мог бы приклеить его к плате подключения стороной вверх.

У меня есть план B, который я могу попробовать в следующий раз или если текущий план в конечном итоге потерпит неудачу. Отключение микровыключателя для тактильного мембранного переключателя, установленного на плате SPST, должно решить проблему. Это тип переключателей, используемых в клавиатурах и клавиатурах, и не имеют этой проблемы. Нога печатает это не что иное как микровыключатель. Имеется переключатель высотой 7 мм, который входит на ту же высоту, что и существующий микровыключатель. Меньший переключатель должен быть расположен на правильной высоте. Согните ножки под прямым углом к ​​корпусу переключателя и приклейте его к плате так, чтобы привод совпадал с положением, занимаемым приводом микропереключателя. Кнопка мыши должна попасть в нужное место. Соедините контакты переключателя каким-нибудь тонким проводом, и все должно быть хорошо в теории.


5
Хотя ваш ответ на 100% правильный, это сайт по вопросам программного обеспечения, а не вопрос оборудования. Поэтому, пожалуйста: 1 / добавьте респектабельное предупреждение о том, что вы даете решение HW для решения проблемы SW, 2 / сократите свой ответ 3 / Добавьте несколько ссылок на рисунки о том, как это сделать 4 / Это мкФ, а не мкФ.
Fabby

@Fabby Ваши предложения (1) и (3) превосходны, но не так сильно с (2), а (3) мелочны / не нужны. Также кажется немного странным. Вы должны стараться быть дружелюбным к новым пользователям! :)

@Joe 1 / Посмотрите на upvotes для комментариев. 2 / Да, это стиль телеграммы без каких-либо тонкостей, так что могло бы быть и лучше. В свою защиту: я ворлонец , а не человек, и я все еще работаю над своей эмпатией ... ;-)
Fabby

9

Я собрал патч xserver-xorg-input-evdevдля Ubuntu 14.10. Я использовал инструкции из http://blog.guntram.de/?p=16 (патч можно найти здесь и здесь ) и руководство по сборке Debian.

Вот мои заметки о создании пакета.

#!/bin/bash
# http://blog.guntram.de/?p=16
#

apt-get build-dep xserver-xorg-input-evdev

dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg"

wget --output-document=evdev-debounce.patch http://blog.guntram.de/?ddownload=20
apt-get source xserver-xorg-input-evdev

cd xserver-xorg-input-evdev-*

$dquilt new debounce.patch
$dquilt add include/evdev-properties.h src/Makefile.am src/debounce.c src/evdev.c src/evdev.h src/debounce.c
patch -p1 <../evdev-debounce.patch

$dquilt refresh
$dquilt header -e

debuild -us -uc -b
cd ..

sudo dpkg -i xserver-xorg-input-evdev_*.deb
  • Хорошие новости: это сработало.
  • Плохая новость: это не всегда помогает. Мой контакт с кнопкой мыши был настолько плох, что потребовалась задержка в 200 мс, что не давало мне дважды щелкнуть мышью. Еще одна прыгающая мышь начала работать нормально.

edit : Спасибо @MatijaNalis, шаги получения патча могут быть:

wget https://aur.archlinux.org/packages/xf/xf86-input-evdev-debounce/xf86-input-evdev-debounce.tar.gz
tar xzf xf86-input-evdev-debounce.tar.gz
# ...
patch -p1 < ../xf86-input-evdev-debounce/debounce.patch

1
скрипт требует изменения - «dquilt new» пропускает «$», «patch» должен быть после «$ dquilt add» и до «$ dquilt refresh», а патч на blog.guntram.de стар, нужно использовать другой от aur .archlinux.org. "apt-get build-dep xserver-xorg-input-evdev" также следует добавить. Также следует использовать переменные среды quilt вместо (неуказанных) конфигурационных файлов - wiki.debian.org/UsingQuilt . В противном случае, выглядит как отличный обходной путь для сломанной мыши ...
Матия Налис

3
В libinput 1.9 была добавлена ​​функция устранения неполадок ( unix.stackexchange.com/a/451864/116842 ).
Жером

5

Проблема, объясненная Джеком Гансле, здесь: http://www.eng.utah.edu/~cs5780/debouncing.pdf
- фильтрация отказов контактов. Программное обеспечение должно присутствовать в любом приложении, от простых одноплатных компьютеров до операционных систем, в той или иной форме.

https://www.google.se/?gfe_rd=cr&safe=off#q=%2Bcontact+%2Bbounce+%2Bsoftware&safe=off

По мере старения контактов / кнопок эффект ухудшается. WD40 может быть не лучшим спреем для электроники, есть и другие, более подходящие. Google "Контактный спрей".


4

У меня была проблема с дополнительным нажатием кнопки дважды. Как я уже сопоставил xbindkeys(см. Как я могу назначить действия для всех моих кнопок мыши? Для получения дополнительной информации об этом), мое решение изменило запись в ~/.xbindkeysrcследующем:

"if [ ! -e /dev/shm/button ]; then touch /dev/shm/button; /usr/bin/xte 'keydown Control_L' 'key Page_Down' 'keyup Control_L'; sleep 0.2; rm  /dev/shm/button; fi"
b:7

Это создает «файл блокировки» для каждого нажатия кнопки /dev/shm/(которое, я надеюсь, находится в оперативной памяти) и удаляет его через 0,2 секунды. И xteкоманда должна быть выполнена по щелчку мыши и не должна выполняться дважды за 0,2 секунды.

(Просто подумал, что поделюсь своим решением на тот случай, если кто-нибудь захочет скопировать или исправить его.)


Это отличное решение для случаев, когда мышь отправляет непрерывный поток событий ButtonPress / ButtonRelease, но вы хотите преобразовать его в одно событие. Это происходит, например, с помощью кнопок мыши Bluetooth и колесика наклона.
Лев Алексеев

2

Существует программная ошибка, и по состоянию на июнь 2014 года ее не исправили. Это не происходит на всех моделях мышей. Мои мыши Logitech в порядке, но большинство других не справляются, что бы вы ни делали. Это для RHEL, CentOS и Ubuntu. Все мыши работают на чистых окнах, но такая же проблема есть в KVM

Пока нет решения, разработчики знают об этом.

Приветствия. Дон.


1
Не могли бы вы добавить ссылку на ошибку и немного рассказать об этом?
Оли


1
Как видно из других ответов (и отчета об ошибке), это на самом деле не ошибка, а скорее отсутствующая функция. По умолчанию Windows отменяет фильтрацию на мышах, а Linux - нет.
Хюлле

1

Спрей WD40 - волшебство для многих проблем, включая колесо громкости в наушниках с шумом rac rac rac, а также для устранения этой проблемы щелчков мыши…

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


1

В моем случае это была аппаратная или, точнее, какая-то механическая проблема с микропереключателем кнопки мыши.

У меня была эта проблема с двумя мышами: старой Logitech m-uv69 и другой мышью, которую я купил около года назад, и мне удалось отремонтировать обе из них без особых усилий. Вот что я сделал:

  • снял верхнюю крышку мыши
  • Прямо быстро нажал микропереключатель маленькую кнопку много раз

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.