Что такое фантомные нажатия клавиатура

Обновлено: 04.05.2024

Расшифруем эти аббревиатуры:

KRO – (Key Rollover) Количество одновременных нажатий клавиш.

6KRO – (6-Key Rollover) 6 одновременных нажатий клавиш.

NKRO – неограниченное количество одновременных нажатий клавиш.

Ghosting – «фантомное нажатие». Подача сигнала с клавиши, которой вы не касались.

Разберемся как фиксируются и передаются нажатия клавиш в различных клавиатурах и как это устроено.


Логично, что данная реализация сложная и дорога в производстве, виной тому, в основном, физические ограничения микроконтроллеров, на базе которых строятся клавиатуры. Дело в том, что с увеличением количества выводов у микроконтроллеров и программируемых логических микросхем растёт и их размер, что, в свою очередь, влечёт за собой рост энергопотребления, возможностей, но главное — цены. В итоге, вы можете выбрать либо дешёвый чип с небольшой производительностью, но с малым количеством входов и выходов, либо более мощную микросхему, производительность которой, однако, сильно превышает ваши требования. Но только этот мощный чип будет обладать достаточным количеством выводов, чтобы подключить каждую кнопку клавиатуры.

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


В случае, если вы нажимаете, S + H и захотите нажать третью клавишу в другом ряду, контроллер уже не может сказать, какая из линий была замкнута и в лучшем случае не обнаружит одно из трёх нажатий, а в худшем, из-за особенностей разводки, определит ещё какое нибудь лишнее, которое вы не совершали.

Давайте посмотрим, что случится, если нажать несколько кнопок, находящихся одновременно в одной строке и в одном столбце.


Пример фантомного нажатия

На рисунке три кнопки нажаты одновременно. Две из них находятся в столбце «C2», и две — в строке «Rm». Это значит, что одна из нажатых кнопок делит строку с другой нажатой кнопкой, а столбец — с третьей нажатой кнопкой. Именно в такой ситуации и происходит фантомное нажатие. Представьте, что в данный момент мы опрашиваем столбец «C1» (то есть, он придавлен к земле — находится в состоянии «0»). Такой характерный аккорд нажатых кнопок приводит к следующему: даже несмотря на то, что левая верхняя кнопка не нажата, строка «R2» находится в состоянии «0», потому что она придавлена к земле столбцом «C1» (находящемся в «0») через три нажатые кнопки. В результате клавиатурный контроллер считывает левую верхнюю кнопку, как «нажатую», вне зависимости от того, нажата она на самом деле или нет. Описанная ситуация называется фантомным нажатием (ghosting), потому что некоторые комбинации одновременно нажатых кнопок вызывают фантомное срабатывание других кнопок (ghost keypresses), хотя физически эти другие кнопки и не нажаты.

Можно поймать момент возникновения фантомного нажатия и заблокировать его. Обычный человек не в состоянии одновременно нажать или отпустить две клавиши с идеальной точностью. Поэтому, сканируя матрицу достаточно быстро, мы можем предположить, что между двумя проходами по матрице изменить своё состояние может не больше одной кнопки. В таком случае, контроллер принимает одиночные нажатия и следит за возникновением ситуаций, когда между проходами матрицы оказываются нажатыми две кнопки или более. Учитывая, что сканирование матрицы происходит со скоростью, при которой штатное возникновение таких ситуаций крайне маловероятно, можно заключить, что одна из только что нажатых кнопок — призрак. Поэтому контроллер должен проигнорировать все эти нажатия. Кроме того, безопаснее сразу не сообщать компьютеру об изменениях статуса клавиатуры — сначала имеет смысл подождать, пока все эти срабатывания не пропадут.

Есть и другой подход. Можно выявить ситуацию, когда срабатывает «третья» кнопка, и заблокировать как это нажатие, так и все последующие. Блокировку не снимать до тех пор, пока фантомное срабатывание не пропадёт, и ситуация опять не станет нормальной. Для реализации этого подхода программа должна помнить, какие именно кнопки сейчас нажаты (а обычно она это помнит и так), чтобы отклонять последующие срабатывания кнопок, в строках и в столбцах которых уже зафиксированы одновременные нажатия. Если написать программу с умом, то блокироваться будут только проблемные срабатывания, а все последующие будут приниматься как обычно — кроме тех, что снова нарушат правила. Раз контроллер отвергает нажатие каждой кнопки, уже имеющей одновременные срабатывания в своей строке и столбце, то выходит, что в зависимости от статуса одних кнопок, другие могут не регистрироваться вообще. Эта ситуация широко известна как блокирование (jamming). То есть кнопки, которые препятствуют одновременным срабатываниям других кнопок, получается, «блокируют» часть клавиатуры.

С точки зрения пользователя, можно одновременно нажать все кнопки из одного столбца (не нажимая кнопок из другого), но одновременно нажать все кнопки из одной строки можно только в том случае, если в столбце у каждой из этих кнопок зафиксировано не более одного срабатывания. То же самое относится и к нажатию кнопок из одного столбца — дополнительные срабатывания фиксируются только в том случае, если кнопки находятся в строках, которые «не заняты».

Люди часто путают «фантомное срабатывание» и «блокирование срабатывания» («ghosting» и «jamming»)

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

Решается подобное поведение различными хитростями в области разводки: наиболее популярные сочетания размещаются на разных линиях, функциональным клавишам, которые часто являются элементами хоткеев, назначаются отдельные линии. Разводка остается достаточно простой, но в недорогих клавиатурах редко встречается 5+KRO — обычно дело ограничивается 3-4 одновременно зажатыми клавишами.

Сейчас эта дешёвая система почти полностью вытеснена более сложной, «открытой» матрицей, однако, экземпляры до сих пор встречаются.

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

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

Но микроконтроллер работает с такой скоростью, что успевает посчитать эти всплески как устойчивые состояния. Решить эту проблему можно аппаратно, с помощью RS триггера, так и программно — внеся небольшую задержку перед следующим опросом кнопки. Задержка подбирается такой, чтобы дребезг успел прекратиться к ее окончанию.

Про PS/2 или что было до USB

Самым распространенным разъемом для подключения мыши и клавиатуры до USB был PS/2. Впервые он появился в 1987 году на компьютерах IBM PS/2. Скорость передачи данных — от 80 до 300 Кб/с и зависит от производительности подключенного устройства и программного драйвера.

Из шести контактов в разъёме используется четыре: тактовые импульсы, данные, питание, общий.

  • Pin 4 — Питание, +5 В. Используется для подачи питания на подключаемое устройство.
  • Pin 3 — Земля/Корпус. Общий вывод для питания.
  • Pin 5 — CLK — синхронизация (Clock). Включается при передаче данных мышью.
  • Pin 1 — Data, передаваемые данные.

В настоящее время подавляющее большинство изготавливаемых компьютерных мышей и клавиатур имеют разъем USB, современные материнские платы не имеют разъёма PS/2 или имеют только один разъём, хоть ещё и можно встретить материнские платы с этим разъемом, это скорее уже редкость. Современные ноутбуки и ультрабуки вовсе не имеют внешних разъемов PS/2. Также у PS/2 наблюдается ряд недостатков таких как проблемы с Plug’n’Play и неудобство самого разъема.

Сами устройства ввода генерировали прерывание и отправляли информацию о нажатых кнопках или перемещении курсора. И тут хоть стучи по клавиатуре палкой, если всё разведено грамотно, и rollover не упирается в аппаратные возможности клавиатуры — клавиатура отправит всё, что прочитает контроллер.

NKRO на USB

И так мы разобрались, что PS/2 разъем практически вышел из употребления, давайте посмотрим как обстоят дела с популярным USB.

Для работы клавиатур через USB до загрузки системы (BIOS / UEFI) используется стандартный HID-драйвер (human interface device), который был разработан для максимально широкой поддержки клавиатур и USB-хостов. Класс USB HID описывает устройства таким образом, чтобы стандартная реализация USB-хоста и USB-устройства могли взаимодействовать без установки специальных драйверов.

Обычная клавиатура (с поддержкой USB HID) использует выходной (исходящий от USB-хоста) поток данных (endpoint USB-стека) для получения информации о состоянии индикаторов (Num / Caps / Scroll Lock), и входной поток (исходящий от клавиатуры, «входящий» для USB-хоста) для отправки информации о нажатых клавишах.

Если следовать наиболее строгой спецификации USB HID v1.11, которая поддерживает режим USB Boot (и позволяет использовать USB-клавиатуру для входа в BIOS и работы в нём), то клавиатура будет отправлять прерывания на CPU каждый раз, как USB-хост будет опрашивать её, вне зависимости от того, изменилось её состояние или нет. Таким образом «эмулируется» работа PS/2 клавиатур минимальными издержками.

В данном случае клавиатура работает по стандарту USB 1.1 (иногда 2.0) Low-speed, а частота опроса порта составляет 100 Гц. В данном режиме максимальная длина пакета на USB равна 8 байтам, а отправляются они раз в 10 мс. Один из байтов зарезервирован, так что на работу клавиатуры остаётся 7 байт, т.е. количество достаточное, чтобы закодировать нажатие любой клавиши-модификатора и еще шести других.

Получится, кто клавиатура работает в режиме 6-KRO, и он является стандартным для большинства USB-клавиатур. Сделать меньше — можно, больше — только с нарушением спецификации USB HID. Уже после загрузки система может увеличить частоту опроса USB-порта, загрузить драйвер, который позволит работать с мультимедийными клавишами и макросам.

Обходы ограничений USB HID, собственно, встречаются двух видов. В первом случае клавиатура обнаруживается фирменным ПО, переводится в какой-нибудь специальный режим и отправляет данные с контроллера напрямую в драйвер, а тот уже общается с системой. Минус такого решения — увеличивается т.н. input lag: задержка ввода.

Второе решение подкупает своей простотой и бесхитростностью, но по сути является костылём:


Клавиатура просто представляется в системе несколькими HID-устройствами, каждое из которых имеет свои 6KRO. Таким методом пользуются популярные производители периферии такие как Logitech, A4tech, Cougar и SteelSeries.

Кардинальное решение матричных проблем

Если вы еще раз взглянете на картинку про фантомные нажатия, то сможете заметить, что во всём виновата правая нижняя кнопка.

А ведь эта кнопка — единственная, через которую ток в данной ситуации течёт «вверх». Так что, если мы не хотим, чтобы текущие «вверх» токи мешали нам нормально считывать матрицу, то давайте введем диоды, чтобы ток мог идти по столбцам строго сверху вниз, втекая в выходы микроконтроллера.

К сожалению, сэкономить тут не получится — придётся ставить по диоду на каждую кнопку. Если же говорить о полярности, то вы уже должны были разобраться, что в данном конкретном случае диоды должны пропускать ток «сверху вниз», то есть их катоды («кончики стрелок») должны смотреть на выходы микроконтроллера (столбцы), тогда как аноды должны быть обращены ко входам (строкам).


Итоговая матрица

Не имеет значения, с какой стороны кнопки располагать диод; главное — соблюсти верную полярность. Просто запомните, что в данном случае ток всегда будет течь от входов к выходам. К слову, если входы подтянуты к питанию, а выходы — в режиме ОС, то так происходить будет всегда.

При данном подходе получается, что ток всегда будет течь «вправо вниз», и это исключает появление замкнутых токовых контуров при одновременном нажатии нескольких кнопок. Кроме того, эта конструкция — единственная, которая может обеспечить клавиатуре полный NKRO. Вдобавок, нелишним будет упомянуть (хотя это и кажется очевидным), что проблема отсутствия у выходов микроконтроллера режима ОС решается теперь автоматически. Диоды, установленные последовательно с каждой кнопкой, избавляют выходы от замыкания.

Существуют моды проделанные энтузиастами по установке диодов в механические клавиатуры:

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

Игровые клавиатуры обладают рядом характеристик, которых обычно не хватает обычным клавиатурам, и среди них есть технология защиты от ореолов, которую мы часто видим выражением английского термина «N-Key Rollover». Эта технология, как мы объясним ниже, может иметь несколько уровней эффективности и выражается переменной перед «сменой ключа», поскольку не все производители могут реализовать ее одинаковым образом. В любом случае, мы собираемся начать с самого начала, то есть с объяснения того, что такое фантомный хостинг, чего, как вы уже догадались из названия этой технологии, мы всегда будем избегать.

Технология защиты от привидений в игровых клавиатурах

Что такое ореолы и почему они возникают?

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

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

Чтобы упростить внутреннюю схему клавиатуры, клавиши подключены к сетке, известной как матрица. Контроллер клавиатуры по очереди подает ток к каждому столбцу в матрице и проверяет, какие строки излучают ток; это указывает, какие пересечения сетки внутри столбца являются замкнутыми переключателями (которые были нажаты), и двоение происходит, когда ток течет в противоположном направлении вокруг матрицы, и заставляет строку излучать ток, когда этого не должно быть.

Ghosting matriz teclado

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

Вкратце, ореолы - это эффект, который из-за конструкции матрицы клавиатуры может вызвать клавиши, которые не были нажаты для регистрации ; В свою очередь, блокирование это средство, позволяющее избежать появления ореолов, но на самом деле это так называемое ореол, поскольку его эффект заключается в том, что клавиатура не может обнаруживать одновременные нажатия клавиш (что, в свою очередь, является средством от ореола).

Как работает технология защиты от привидений?

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

Matriz Teclado Portatil

Чтобы объяснить уровень или способность матрицы поддерживать одновременное нажатие клавиш, у нас есть термин " Key Rollover «. Например, клавиатура с 10-клавишной технологией защиты от одновременного нажатия клавиш означает, что она поддерживает одновременное нажатие до 10 клавиш до достижения уровня блокировки, в то время как 5-клавишная клавиатура с одновременным нажатием клавиш поддерживает одновременное нажатие только 5 клавиш. время, прежде чем мы дойдем до этого. Мы также можем видеть эти сокращенные термины как 10KRO или 5KRO в случае этих двух примеров, которые мы поместили.

Конечно, у нас также есть игровые клавиатуры с более продвинутыми матрицами, которые достигают столь -называемый N-Key Rollover , сокращенно NKRO . Этот термин относится к клавиатурам, матрица которых ни в коем случае не страдает от эффекта ореола или блокировки и, следовательно, позволяет вам нажимать столько клавиш одновременно, сколько вы хотите, регистрируя их все в том же порядке, в котором они были нажаты. Очевидно, что это как раз самая желанная вещь в игровой клавиатуре, поскольку она позволяет нам постоянно удерживать столько клавиш, сколько нам нужно, без блокировки.

Как проверить ореолы на клавиатуре

Когда вы используете клавиатуру для игр, вы, очевидно, не хотите, чтобы она имела ореолы (кейлоггер, который вы не нажимали) или сбой при нажатии различных комбинаций клавиш. Представьте, что вы играете в шутер от первого лица и продвигаетесь по диагонали (например, клавиши W + D) во время спринта (клавиша SHIFT) и хотите прыгнуть (клавиша пробела). Если на вашей клавиатуре нет технологии защиты от привидений, при нажатии четвертой клавиши произойдет сбой, и, следовательно, ваш персонаж не будет прыгать.


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

Ejemplo Anti-Ghosting

Не так давно у меня появилась (около 6 месяцев назад) столь замечательная механическая клавиатура в состоянии "Уася как новая, бабушка 1 день пользовалась", и в принципе себя полностью оправдывала. Но во время зимней сессии одна из трех, столь нужных клавиш "V" для студента начала вставлять в два раза больше текста. С вполне резонным вопросом "Какого так?" я полез в Гугль и узнал что свичи в данной клавиатуре исключают любую возможность ложных срабатываний. Не найдя каких либо решений и Razer Green Switch в продаже было решено попытаться восстановить их.

Устранение фантомных срабатываний Razer Blackwidow Ultimate Razer, Blackwidow, Ложные нажатия, Green switch, Залипание клавиш, Клавиатура, Ремонт техники, Длиннопост

1) Необходимые инструменты

Устранение фантомных срабатываний Razer Blackwidow Ultimate Razer, Blackwidow, Ложные нажатия, Green switch, Залипание клавиш, Клавиатура, Ремонт техники, Длиннопост

2) Разборка

Процедура довольно простая, откручиваем 6 винтов по периметру.

Устранение фантомных срабатываний Razer Blackwidow Ultimate Razer, Blackwidow, Ложные нажатия, Green switch, Залипание клавиш, Клавиатура, Ремонт техники, Длиннопост

Проходимся по краям картой, снимаем клепки. Затем откручиваем еще 8 винтов крепящие плату клавиатуры к основанию.

Устранение фантомных срабатываний Razer Blackwidow Ultimate Razer, Blackwidow, Ложные нажатия, Green switch, Залипание клавиш, Клавиатура, Ремонт техники, Длиннопост

Устранение фантомных срабатываний Razer Blackwidow Ultimate Razer, Blackwidow, Ложные нажатия, Green switch, Залипание клавиш, Клавиатура, Ремонт техники, Длиннопост

3) Переходим к выпаиванию свичей

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

Устранение фантомных срабатываний Razer Blackwidow Ultimate Razer, Blackwidow, Ложные нажатия, Green switch, Залипание клавиш, Клавиатура, Ремонт техники, Длиннопост

Устранение фантомных срабатываний Razer Blackwidow Ultimate Razer, Blackwidow, Ложные нажатия, Green switch, Залипание клавиш, Клавиатура, Ремонт техники, Длиннопост

4) Выпаиваем еще один рабочий свитч из доп кнопок (m1 - m5) и меняем с больным.

5) Теперь переходим к ремонту свитча

Устранение фантомных срабатываний Razer Blackwidow Ultimate Razer, Blackwidow, Ложные нажатия, Green switch, Залипание клавиш, Клавиатура, Ремонт техники, Длиннопост

Поддеваем с обоих сторон ушки креплений и снимаем верхнюю часть

Устранение фантомных срабатываний Razer Blackwidow Ultimate Razer, Blackwidow, Ложные нажатия, Green switch, Залипание клавиш, Клавиатура, Ремонт техники, Длиннопост

И вуаля, свитч разобран.

Устранение фантомных срабатываний Razer Blackwidow Ultimate Razer, Blackwidow, Ложные нажатия, Green switch, Залипание клавиш, Клавиатура, Ремонт техники, Длиннопост

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

Устранение фантомных срабатываний Razer Blackwidow Ultimate Razer, Blackwidow, Ложные нажатия, Green switch, Залипание клавиш, Клавиатура, Ремонт техники, Длиннопост

Устранение фантомных срабатываний Razer Blackwidow Ultimate Razer, Blackwidow, Ложные нажатия, Green switch, Залипание клавиш, Клавиатура, Ремонт техники, Длиннопост

За шакалов говорим спасибо Xperia Z3.


Сообщество Ремонтёров

6.1K поста 35.4K подписчиков

Правила сообщества

К публикации допускаются только тематические статьи с тегом "Ремонт техники".

В сообществе строго запрещено и карается баном всего две вещи:

В остальном действуют базовые правила Пикабу.

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

Точно так же начали задваиваться клавиши. Точно так же нагуглил решение на зарубежных форумах из разряда ленивых и "потенциально" вредных:

1. Отключить клаву. (Не просто выключить компьютер, а полностью отключить усб!)

2. Залить в нажатую клавишу изопропилового спирта(из пипетки, в разумных количествах).

3. Понажимать на нее.

4. Оставить сохнуть день.

5. Включить, пробовать. Поначалу клавиша вообще может не работать, но после разрабатывания(частого нажатия) начинает работать как положено и без задваивания.

Не первый раз так делаю с задваиванием на Разере.

Хз почему работает - но работает. Люди на форумах объясняют задваивание тем что клавиши просто загрязняются.

Жду кода клава окончательно сдохнет чтобы купить новую. И это уже будет точно не Разер. Хотя она неубиваемая какая-то =\ Очень часто на нее воду лил. Даю высохнуть - работает.

Кстати, на Разере еще дико раздражает что при выключенном компьютере если заденешь любую клавишу - включается подсветка которую не выключить пока не включишь-выключишь компьютер. Это так спать ушел, нечаянно задев клавишу. и ночник таинственного зеленого цвета тебе обеспечен.

Жила-была мышь, и звали её Defender MM-525. Стойко тянула она свою мышиную лямку — на ссылки кликала, страницы прокручивала, курсор перемещала. Но однажды случилась беда — вместо одного клика она стала делать два, а то и больше. Бывало, захочешь приостановить видео на ютубе — а оно вместо этого на весь экран открывается. Или выделяешь текст — а в последний момент выделение сбрасывается. Понятно, что дальше так продолжаться не могло.




Что же делать? Интернет предлагает такие варианты:

  • Использовать программные средства фильтрации лишних кликов. Но это не решение проблемы, а лишь борьба с симптомами, к тому же только под Windows, так что этот вариант я отмёл.
  • Подогнутьпружинумикровыключателя.
  • Кое-кто даже грешит на клавиатуру. Я даже ради приличия проверил — результат ожидаемо отрицательный.
  • Большинство же советует просто заменить микровыключатель. Что я и сделал, поставив кнопку от старой мышки.

Но радость моя была недолгой — через несколько дней двойной клик вернулся. Пораскинув мозгами, я решил, что дело в механических вибрациях, и наклеил под кнопку толстый скотч. И снова это помогло лишь на несколько дней. Стало ясно, что надо искать радикальное решение. А для этого надо сначала понять, что происходит.

Как обычно делаются кнопки у цифровой электроники? Приблизительно так:

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

Но если вход у процессора идеальный, то выключатель таковым при всём уважении считать не получится. Когда выключатель замыкается — это означает, что один кусок металла соприкасается с другим куском металла. Но между состояниями «выключено» и «включено» есть тот неловкий момент, когда эти два куска соприкасаются едва-едва. И если сейчас контакт есть, то через микросекунду он может пропасть, а затем снова восстановиться. А порой и вовсе один контакт ударяется об другой и по законам Ньютона отскакивает от него, а то и несколько раз. Что подумает мама процессор? Правильно — он подумает, что выключатель включили, выключили, включили, выключили, включили, выключили и т. п. Хотя «на самом деле» его включили всего один раз. Это явление даже имеет своё название — дребезг контактов.

Постойте, ничего не напоминает? Ах да, аналогичный случай как раз произошёл с нашей мышкой! Значит, наша рабочая гипотеза будет в том, что разработчики мышки либо вовсе не вспоминали про возможность дребезга, либо их старания по борьбе с ним были тщетны. И нам придётся побороться с этим врагом за них.

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


Именно этим мы и займёмся.

Вот она — наша кнопка:


А это она же, но без крышки:


Подпишем номера контактов для удобства:


Принцип работы налицо — в состоянии покоя замкнуты контакты 1 и 3, при нажатии кнопки на некоторое время все контакты размыкаются, а затем замыкаются контакты 1 и 2. При отжатии происходит всё то же в обратном порядке.

Вскрыли мы кнопку не для того, чтобы что-то подгибать, а для того, чтобы воочию увидеть, как она работает, а если повезёт, то и посмотреть на дребезг. А поможет нам в этом фотоаппарат Samsung WB2000 и объектив И96У. Упомянутый аппарат умеет снимать видео с частотой 1000 кадров в секунду. Правда, не ахти как, но, как говорится, чем богаты.

Сложнейшая установка для высокоскоростной съёмки:


И, собственно, кино:

Как видим, контакт успевает пролететь всё положенное расстояние за пять кадров (сиречь 5 миллисекунд), и никакого видимого дребезга не наблюдается. Возможно, дребезг можно было бы увидеть на осциллограмме, но, к сожалению, я вспомнил о том, что у меня есть осциллограф, только тогда, когда мышь была уже собрана. Но так или иначе понятно, что характерное время дребезга явно меньше, чем минимальное время клика, и что граница между ними проходит приблизительно на пяти миллисекундах.

Лирическое отступление. Как бы я сделал мышь, если бы у меня был выключатель вышеприведённой конструкции? А вот так:


Но доблестные разработчики мыши, как мы сейчас увидим, не ищут лёгких путей.

Измерим наш выключатель мультиметром. Во-первых, находим, что ни один из контактов не закорочен на питание. Ну да ладно. В состоянии покоя на втором контакте 2,5 вольта питания, на остальных — ноль. В нажатом состоянии на всех контактах ноль. Это говорит о том, что разработчики не пошли по моему пути, и входом процессора, видимо, служит второй контакт, а третий контакт вовсе не используется. Но самое смешное — после отжатия кнопки ноль на втором контакте сохраняется ещё пять секунд! К сожалению, механизм работы и преимущества такого решения и мотивация разработчиков остаются для меня тайной. Надеюсь, кто-то из сведущих людей меня просветит.

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

Паять конденсатор будем между контактами 1 и 2. А для измерения эффекта воспользуемся скриптом наподобие вот такого, слегка его подправив так, чтобы он реагировал как на отжатие, так и на нажатие кнопки, и убрав искусственные ограничения по времени.

Конденсатор в 0,1 мкФ даёт время клика 600 мс. То есть как бы быстро мы ни жали, кнопка «отлипнет» не ранее чем через 0,6 секунды. Это многовато. Методом линейной экстраполяции предполагаем, что 3,3 нФ дадут время в 20 мс. Паяем — и видим время около 100 мс. Но это время включает в себя и время собственно движения пальцем, и без конденсатора оно ненамного меньше. Перепробовав ещё несколько номиналов, я решил остановиться на 3,3 нФ.

Поскольку SMD-конденсаторов не было, пришлось паять ногастый:


На этом, собственно, всё. Мышь была успешно собрана и продолжает свою нехитрую, но ответственную службу. Надеюсь, вышеприведённый рецепт будет полезен не только моей мышке.

УПД: Совсем забыл. Есть ещё один бич мышиных кнопок, так и не всплывший в обсуждении, пока я не вспомнил. Ощущается это так — на кнопку приходится давить с большей силой, клик уже не такой чёткий, как раньше, и порой кнопка подаёт сигнал об отжатии, пока она нажата. А разгадка одна — та пластмасска, которая давит на выключатель, может со временем стираться, тогда в ней образуется такое красивое углубление, которое и не даёт кнопке нажиматься до конца. Лечится это просто — надо эту пластмасску либо доработать напильником, чтобы она вновь стала плоской и параллельной кнопке, либо приклеить к ней тонкую плоскую пластмасску в тех же целях.

Также может показаться, что я против методов, «альтернативных» описанному в статье, однако это не так. Но каждый метод имеет свою сферу применения. Коли мышь сделана так, что малейший дребезг воспринимается как нажатие — вы так и будете каждую неделю чистить контакты и/или менять выключатель.

УПД2: Оказалось, что не всё так просто. Читайте продолжение истории!

Читайте также: