Dlaczego myszka dwuklika?
Dlaczego myszki, nawet najdroższe, te bez optycznych switchy, prędzej czy później dopadnie problem dwukliku? Właściwie wielokliku, zjawisko w którym próba naciśnięcia przycisku kończy się jakby wielokrotnym jego naciśnięciem, a trzymanie przycisku wciśniętego niemożliwe. Znacząco utrudnia to pracę, albo nawet i ją uniemożliwia.
TLDR i streszczenie
Każde urządzenie mechaniczne w końcu się zużywa, myszki oszczędzają prąd, więc nie są robione zgodnie z dokumentacją podzespołów, jednak używają pomiarów producenta do prezentacji żywotności, do tego nie wykorzystują ich potencjału i kontroli błędów. „Zużyte” myszki z dwuklikiem/wieloklikiem można stosunkowo łatwo i tanio naprawić, albo nawet przerobić na ciche, jednak producenci bardzo chętnie to utrudniają. Kto nie ma cierpliwości i lutownicy, musi zmniejszyć polling rate i liczyć że wytrzyma choć chwilę dłużej.
Od początku
No więc zacznijmy od początku. Przycisk działa na zasadzie styku 2 blaszek, w urządzeniu zwanym mikroprzełącznikiem (microswitch), w 99% myszek to Omron D2FC-F-7N. Mikroprzełączniki te są dostępne w różnych wersjach, nie będę w nie wnikał, różnią się delikatnie zastosowanymi materiałami i budową, wprawny palec da radę nawet wyczuć różnicę między nimi. Wszystkie są ze sobą kompatybilne rozmiarem i układem, różnice są wyłącznie wewnątrz, choć również niewielkie.
Na powyższych zdjęciach oba przełączniki wizualnie różnią się jedynie oznaczeniem na obudowie, kolorem przycisku, nieco kształtem blaszki i tym, że razerowy ma uchwyt na blaszkę nieco z boku, nie wiem czy to wada fabryczna, czy zamierzone. Oba są produkcji japońskiej firmy Omron. Przełączniki mogą się też różnić zastosowanym materiałem, może być inna mieszanka metali, charakteryzująca się inną ścieralnością i odpornością na korozję.
Technicznie te mikroprzełączniki mają żywotność kilku milionów kliknięć (przykładowo przedstawiony Razer ma żywotność 50 milionów kliknięć), jednak często przekłada się na to to, jak jest przycisk traktowany i jak mysz jest zbudowana: niektóre konstrukcje mogą znacznie skrócić żywotność tego elementu przez słabe spasowanie elementów.
Jak każdy element mechaniczny, kiedyś się zużyje. OMRONy nie są tutaj wyjątkiem. Delikatna struktura blaszek się zużywa: materiał się odkształca, a pola stykowe często rysują, zwłaszcza w tańszych wariantach. Do tego fakt, że ich obudowy nie są hermetyczne, dostają się do wnętrza różne zanieczyszczenia i dochodzi z czasem do korozji materiału, który dodatkowo pogarsza parametry przewodzące materiału, a wytworzony nalot zdrapywany przez pracę mikroprzełącznika będzie dodatkowo powodował nierówności pogarszając pracę delikatnego mechanizmu.
Efekt wielokliku polega na tym, że styk nie jest pewny. Przy wciskaniu blaszka odgina się i odbija od docelowego styku, zrywając chwilowo połączenie. Dopiero po kilku nanosekundach, może milisekundzie styk jest pewniejszy. W przypadku nowych przełączników, ten "szum" jest krótki, w przypadku zużytych jest znacznie wydłużony. Do tego nawet wciśnięty przycisk może mieć pewien szum, jeśli blaszki ocierają o siebie, tworząc mikro-przerwania.
Nie jestem pewien co do stanu tych zużytych, prawdopodobnie nie są to te w najgorszym stanie jakie posiadam. Do badania mikroprzełączników użyję analizatora stanów logicznych z oprogramowaniem PulseView, stan niski to zwarcie, wysoki: rozwarcie.
Widać sporą różnicę pomiędzy nowym, a zużytym urządzeniem. Oba mają spory szum na NC, nie jest to problem, jednak szum na NO, który jest zwierany podczas naciśnięcia, jest zauważalnie większy na zużytym:
Podobnie różnicę można zauważyć podczas zwalniania przycisku:
Oprogramowanie sprzętowe (firmware) myszki filtruje to poprzez tzw. `debounce`, czyli reagowanie na zmianę dopiero po kilku milisekundach, gdy stan się nie zmienił, minimalizując ryzyko wysłania błędnego raportu (tak to się nazywa w nomenklaturze standardu HID) o kliknięciu.
Przełączniki optyczne są w lepszej pozycji: tutaj to fotoreceptor po prostu nasłuchuje źródła światła, mikroprzełącznik go mechanicznie zasłania. Nie ma tutaj żadnego szumu informacyjnego (tzn. jest, ale naprawdę pomijalny! To granica aktywacji fotoreceptora), przez co `debounce` nie jest potrzebny i można od razu bez strachu wysłać raport o kliknięciu. Tutaj to działa bez zarzutu i dopóki blaszki (tutaj niewiele się zmienia w budowie) mają swoją sprężystość, przełącznik może działać wielokrotnie dłużej niż przełącznik mechaniczny.
Mikroprzełączniki Kailh
Kaihl to chiński producent elektroniki i części elektronicznych, który również produkuje mikroprzełączniki kompatybilne z Omronami. Niestety te nie chcą zbyt sztywno siedzieć w moim breadboardzie, ale nie jest to większy problem. Chiński znaczy gorszy?
Przy moich testach miał nawet mniejsze szumy i czasy reakcji na NC niż znacznie droższy Omron (GM 8.0 to 4zł, Omron razerowy 6zł), tzn. jest bardziej stabilny w tym stanie. Przez przeźroczystą obudowę widać nieznacznie inną budowę, ale idea jest taka sama. Przy zbliżeniach na NO nie ma żadnych bardziej znaczących różnic.
Nie zauważyłem różnic pomiędzy Kailh GM 4.0 (czerwony) i GM 8.0 (czarno-przeźroczysty). Wg specyfikacji różnią się żywotnością. Dźwięk również jest różny, sugerując różne materiały, delikatne różnice w konstrukcji i różne naprężenia metali. W kolejności: Omron D2FC-F-7N, Omron D2FC-F-(K50M)-RZ, Kailh GM 4.0, Kailh GM 8.0
Tylko czy aby na pewno przełączniki optyczne byłyby jedynym rozwiązaniem?
Logitech MX518 Gaming Mouse to legendarny szczur, który przeżył wiele innych, dowodząc że żywotność na mechanicznych przełącznikach jest możliwa. Podobnie wiele innych starszych myszek niezbyt wysokiej półki. Jak?
Okazuje się że prawdopodobnie wszystkie myszki mają wady konstrukcyjne! Przyjrzyjmy się najpierw budowie MX518.
Poza optycznym sensorem kółka myszki, zamiast standardowego enkodera (co jest sporą zaletą, bo same mechaniczne enkodery też bywają problemem), rzuca się tu w oczy ta brązowa część ze scalakiem w antycznej obudowie DIP (krok pierwszy, zdjęcie trzecie), zamiast jakiś chipów STM32. Dlaczego to istotne? Ten scalak z informacji do jakich dotarłem, w przeciwieństwie do STM32, działa na napięciu (i logice opartym na nim) 5V. Do tego jest dedykowany do takiego rozwiązania oraz ma też pewne ograniczenia.
Zobaczmy teraz datasheet (dokumentacja techniczna) samego Omrona D2FC-F-7N. Podane parametry żywotności dotyczą zastosowania napięcia właśnie 5V i prądu aż 100mA! Są to parametry wysoce nierozsądne dla myszki, zwłaszcza prąd. Nie jestem pewien co do zastosowanego prądu w MX518 (jak wspomniałem napięcie tam wynosi 5V), ale w kilku myszkach których testowałem nie przekraczał 0,1mA przy 3.3V! Niższy prąd przy niższym napięciu przyczynia się nieco do parametrów żywotności, szum jest znacznie większy, gdy różnica potencjałów jest niższa.
Pamiętajmy że to bardzo drobne urządzenia, gdzie styk jest bardzo delikatny i drobne odkształcenia i mikrozarysowania mogą mieć kolosalne znaczenie dla jakości elementu. Inne parametry prądu niż te zalecane przez dokumentacje mogą powodować odstępstwa od podanych tam pomiarów żywotności. Większe znaczenie ma też wykonanie obudowy i mechanizmu przycisku, którego nierówny nacisk (kołysanie) na mikroprzełącznik z pewnością mają wpływ na jego żywotność.
Używany przeze mnie analizator stanów logicznych używa napięcia 3V i prądu 33µA (jeśli dobrze zmierzyłem), co może pomiary znacznie zaburzyć, zwłaszcza że testowany był układ znacznie prostszy niż rzeczywista myszka.
Co jeśli naprawimy prąd?
Podłączyłem zewnętrznie pull-up 5V (z USB) na rezystorze 220Ω (co daje ~23mA). Oczywiście na warsztat wziąłem jeden z zużytych Omronów. Rezultat? Trudno powiedzieć, nie potrafię przeprowadzić odtwarzalnych testów. Wydaje się być tylko lepiej, ale tylko wydaje. Może to być jakaś kondensacja napięcia, musiałbym to zbadać na oscyloskopie, którego nie mam. Jest więc to z grubsza fałszywy trop, choć może mieć znaczenie. Albo coś po prostu źle podłączyłem 🤷. Być może też stała praca w takich warunkach jest niekorzystna dla układu. Ślepa uliczka.
Myszki często też mają dodatkowe pasywne elementy na płytce pośredniczące między mikrokontrolerem a przełącznikiem, np. rezystory do pull-up („dostarczające” napięcia) i kondensatory wstępnie filtrujące szumy, te jednak nie mogą być zbyt duże, aby nie generować zbyt dużych opóźnień. Wszystko się koniec końców rozbija o to jak dany układ jest zaprojektowany. Niestety nie mam oscyloskopu żeby wykonać pomiary na żywym organizmie.
Częściowe i chwilowe rozwiązanie problemu
To, czym różnią się dzisiejsze myszki od starszych, z pewnością są układy scalone. Jak wspomniałem, MX518 Gaming Mouse był myszką zasilaną kontrolerem starego typu, prawdopodobnie stosunkowo wolnym. Wspomniałem wcześniej o ograniczeniach tego układu, chodziło mi konkretnie o niski tzw. polling rate, czyli próbkowanie wejść i raportowanie, wynoszący 100 do 200Hz. Obecnie myszki gamingowe szczycą się nawet wartościami 1000Hz i 2000Hz, a 250Hz i 500Hz to niemal standard. Wyjątkiem są myszki biurowe i "profesjonalne", jak Logitech MX Master 3, którego polling rate wynosi 125 lub 133Hz w zależności od metody połączenia.
Im niższy polling rate, tym mniej prawdopodobne że oprogramowanie zgłosi niechciane kliknięcie. Jeśli twoja mysz gamingowa zaczyna dwuklikać, okazuje się że najprostszym, najszybszym i najtańszym (bo też nic nie kosztującym) sposobem jest obniżenie polling rate! Dlatego też wspomniany MX Master 3 wytrzyma dłużej niż jakakolwiek gamingowa mysz przy takiej samej pracy.
Oczywiście ma to też swoje wady: 125‑hercowy polling rate znaczy że przy odświeżaniu monitora 144Hz ruch kursora nie będzie płynny, będą klatki, pomiędzy którymi nie będzie żadnego raportu co do zmiany pozycji kursora. Jest to efekt jednak bardzo trudny do zauważenia i osobiście nie miałem okazji się temu przyjrzeć. Prawdopodobnie mało kto, poza najbardziej zatwardziałymi graczami w ogóle zwróci na to uwagę.
Na grafice wyżej jest fragment dłuższego skoku przy 16MHz. Przy próbkowaniu 1kHz z dużym prawdopodobieństwem nie zostałby nawet zauważony. Myszki pracują na jeszcze niższym próbkowaniu.
Trwałe rozwiązanie sprzętowo-programowe
Mikroprzełącznik OMRON jest 3‑pinowy. Jeden pin "wejściowy", drugi NO (Normally Open, czyli niezwarty normalnie) i trzeci NC (Normally Connected, czyli normalnie zwarty)., co znaczy że daje potwierdzenie bycia wciśniętym oraz niewciśniętym. Dla oszczędności jednak w każdej myszce jaką badałem użyte były tylko pierwsze dwa, co znaczy że firmware nie miał jak potwierdzić że przycisk nie jest wciśnięty! Wspomniany MX518 również podłącza do procesora jedynie NO (świadczy o tym 8 przewodów wychodzących z tej płytki: VCC i GND dla optyki, 2 dla enkodera optycznego, przycisk lewy, prawy + 2 przechyły).
Oczywiście podłączenie pinu NC do procesora byłoby kosztowne energetycznie (spory problem dla myszek bezprzewodowych!), choć i tu da się pewne triki zastosować niwelujące to nawet i taka strata w przypadku myszek przewodowych nie byłaby problemem. Procesorom zabrakło nóżek? Nie wiem, choć się domyślam.
Z takim podziałem jednak, możliwe jest w prosty sposób znacznie szybsze i pewniejsze wywnioskowanie faktycznego stanu przycisku. Wracając do pierwszego przypadku, możemy zauważyć spory szum na NC, który może powstać w wyniku samego dotykania przycisku, nie można się na nim więc opierać jako jedyne źródło informacji, ponieważ stan tego styku jest zbyt niestabilny.
Z racji fizycznej budowy mikroprzełącznika, możliwe są tylko 3 stany wartości: NC złączony, NO rozłączony, NC i NO rozłączone i NC rozłączony i NO złączony. Stan w którym zarówno NC jak i NO są złączone jest wysoce nieprawdopodobny: wymaga mechanicznego zepsucia, nie tylko zużycia przełącznika. Podsumowując:
NC | NO | Akcja |
zwarty | rozwarty | Nie jest wciśnięty |
zwarty | zwarty | Krytyczne uszkodzenie |
rozwarty | rozwarty | Stan nieustalony |
rozwarty | zwarty | Jest wciśnięty |
Wciskając przycisk, najpierw zwalniany jest NC, przez chwilę oba piny są niezwarte z trzecim, następnie następuje zwarcie z NO. Przy zwalnianiu przycisku jest tak samo, ale w drugą stronę.
Na sprawnym mikroprzełączniku widzimy przebieg kliknięcia bardzo sprawnie: NC jest rozwierany, a po chwili zwiera się NO. W zależności od tempa w jakim naciskamy i intensywności, odległość pomiędzy pierwszym rozwarciem NC a ostatnim zwarciem NO może wynieść od 2ms do nawet 15ms! W zużytym czasy te mogą być znacznie dłuższe:
Oczywiście wszystko zależy od siły i szybkości naciśnięcia, jednak czas 37ms jest absurdalnie długi. Oczywiście udawało mi się uzyskiwać czasy nawet poniżej 10ms, ale na sprawnym nigdy te czasy nie wynosiły powyżej ~20ms, choćbym nie wiem jak próbował nacisnąć (choć tutaj to Omrony miały większy rozstrzał, Kailh GM 8.0 wydaje się reagować szybciej od razerowego mikroprzełącznika nie przekraczając 9ms!). Przyjrzyjmy się takiemu przypadkowi:
Po wciśnięciu przycisku (NC w stanie rozwartym, DŁUGO!) NO się zwiera, ale chwilę później rozwiera. Oprogramowanie myszki nie znając stanu NC może uznać że użytkownik zwolnił przycisk, by później wcisnąć go jeszcze raz! Znając stan NC i widząc że jest rozwarty, mógłby zignorować taką zmianę, czekając aż NC będzie zwarte. Jeszcze trudniejszym przykładem jest niepewny chwyt i drgania, które mogą spowodować coś takiego:
W takim przypadku oprogramowanie może (dla zaznaczonego z pewnością!) zaliczyć losowe wciśnięcia przycisku w trakcie jego trzymania!
Wykorzystując informację z zarówno NO jak i NC, możemy nie tylko wyeliminować fałszywe zdarzenia, ale i zredukować opóźnienia! Jeśli NC się zwiera, a NO jest rozwarty, to definitywnie znaczy że przycisk został wciśnięty. I na odwrót. W przypadku sprawnego Omrona, zysk był od 1 do 3ms, dla zużytego nawet 15ms.
Cichy Kailh Mute microswitch 6*6*7.3, czyli każda mysz może być cicha, jeśli masz lutownicę
Niemal każdą mysz można zmodyfikować, by była cicha. Za niecałą złotówkę można kupić przełączniki Kailh oznaczone jako 6*6*7.3. Mimo że są mniejsze i mają 2 piny, pasują do myszek. Mają znacznie prostszą budowę, a producent przewiduje żywotność 3 mln kliknięć:
Żywotność tu będzie głównie zależała od odporności na odkształcenia blaszki, nieco tylko wygiętej oraz szarej gumowej części. A jak wygląda jego działanie?
W przypadku nowego egzemplarza bez skaz. Nie ma potrzeby stosowania filtrów odszumiających, czy czekających na stabilizację. Nie posiadam jednak egzemplarza używanego, lecz tego torturowałem przez jakiś czas wciskając dość mocno, co zwykle natychmiastowo uszkadza standardowe mikroprzełączniki oparte o sprężynującą blaszkę. Nie udało mi się nawet balansować na granicy aktywacji przy wciśnięciu, jak ma to miejsce przy pomocy większości tańszych przełączników.
Czy warto wymienić? Być może, to spekulacja, ale wydaje mi się być trwalszy, trudniej je jednak zamontować prosto z racji znacznie cieńszych nóżek. Czy jest to możliwe? Oczywiście:
Kupiłem dwie myszy jako „uszkodzone”, właśnie z dwuklikiem, obie przeszły transplantacje switchy. Jeden szczur dostał nowe Omrony razerowe, drugi Kailhe Mute. Obie działają bez zarzutu. W przypadku cichego egzemplarza, musiałem luty poprawiać, bo nie siedział poprawnie za pierwszym razem, ale ostatecznie siedzi dobrze i nie ma żadnych konstrukcyjnych różnic, przycisk poprawnie siedzi i się naciska.
Cały zabieg nie trwał długo, niestety ucierpiały ślizgacze, które ze względów „estetycznych” (bo to przecież nie tak, że producent nie chce by klient sam naprawiał swój sprzęt) chronią mysz przed rozebraniem (z suszarką udało się je mniej odkształcić). Jak się używa cichego Razera? Dziwnie, jest zupełnie inne odczucie, nie ma charakterystycznego kliku, jest pewien przeskok, jednak nie wydaje się on tak gwałtowny jak przy Omronie. Przy normalnej pracy powinno to być kompletnie bez znaczenia, a mysz nie wydaje praktycznie żadnych odgłosów przy klikaniu (w tym modelu scroll to odrębna historia), więc polecam do użytku nocnego i biurowego.
Z pewnością ta operacja będzie czekać mój trackball Elecom HUGE, którego opiszę za jakiś czas. O ile lewy przycisk będzie wymieniany na Kailha GM 8.0, to przycisk "wstecz", używany jako scroll myszy dostanie wyciszonego Kailha.
Przełączniki mechaniczne klawiatur
Mechaniczne przełączniki stosowane w klawiaturach są niestety 2‑pinowe, jednak ich styki są zwykle pewniejsze, ze względu na pewniejsze ruchy palców. Nie ma tutaj takiej precyzji jak w mikroprzełącznikach przycisków myszy, jednak i tutaj da się zauważyć efekt:
Była to jednak próba dość wolnego przyciśnięcia, jednak przełącznik był nowy. Przy normalnych dynamicznych kliknięciach szumu nie ma, nawet przy próbkowaniu 16MHz. Żadna klawiatura skanuje jednak klawiszy z taką częstotliwością, żeby taki szum zauważyć, jednak w firmware'ach klawiatur t.j. ZMK stosuje się `debounce` o wartości 5ms, jak się okazuje niepotrzebnie długo, przynajmniej dla nowych switchy dobrej jakości. Czy z czasem się wyniki pogorszą? Trudno powiedzieć.
Podsumowanie
Jeśli masz drogiego szczura i zaczyna mu doskwierać dwu/wieloklik, nie wyrzucaj go. Jeśli to konfigurowalna mysz, sprawdź, czy możesz obniżyć polling rate i to zrób. Naprawdę 1000Hz to wielokrotnie więcej niż potrzebujesz. Jeśli to nie pomoże, to znaczy że padły podzespoły za niecałe 10zł. Trzeba jednak mieć suszarkę, lutownicę, odrobinę cyny i odsysacz cyny lub plecionkę do ściągania cyny. Całość nie powinna zająć dłużej niż 20 minut dla niezbyt wprawionej ręki, a mysz będzie chodzić jak nowa (o ile nie uszkodzimy ślizgaczy za bardzo). Nie polecam próbowania regeneracji, jest to bardzo delikatna część, łatwiej ją uszkodzić, a zwykle i tak nie pomaga.
Na to jak szybko przełącznik się zużyje ma też wpływ jakość wykonania obudowy i to, jak ona naciska na przełącznik, krzywe i nierównomierne rozłożenie sił z pewnością może osłabić konstrukcję.
Każde rozebranie myszki wiąże się również z odklejeniem ślizgaczy i ich odkształceniem. Do niektórych modeli można kupić zamienniki, lub ostatecznie: przykleić jakieś uniwersalne, tym razem nie zasłaniające śrub.
Robione przeze mnie pomiary były na urządzeniu niezbyt profesjonalnym, które jak wspomniałem, były dalekie od wymaganej specyfikacji testowanych komponentów (za niskie napięcie + za mały prąd). Brakuje mi oscyloskopu do zbadania pracy przełączników w praktyce, na działającym urządzeniu.
*Ceny mogą się różnić, są bardzo niestabilne czasy na tym rynku, ale może tym bardziej warto naprawiać stary sprzęt?