[滑鼠] 滑鼠連點的成因與解決方式

作者: dream4magi (dream4magi)   2020-07-08 19:54:13
大家好
講到滑鼠連點大部分人應該直接聯想到羅技XD
我們今天來探討一下連點的成因 跟一些解決方法
連點的發生是因為兩個觸點快速接觸(或說撞擊)後又互相彈開 然後又再度接合
所以導致兩次判定觸發
在微動開關使用久了之後內部彈力減弱
所以這個抑制彈開的力量變小了 進而產生
簡單的說就是開關的彈跳
在進入正題之前有一點我想先讓一些非電子領域的人理解
那就是這種彈跳是非常常見的 很正常的
要全然歸罪於微動開關並不合理
所以因應此現象 自然有對應的作為
也就是debounce(去抖動)
方法基本上分為兩種
1.軟體(包含韌體)
2.硬體
那為什麼明明有解決方法
在滑鼠界卻還是遍地雙擊呢?
我必須懷疑這是一個陰謀 (或是說一種生態)
長久以來大部分人都把滑鼠看作是消耗品
這或許是硬體廠商刻意塑造的
舉個例子 同是周邊的機械鍵盤就不這麼像消耗品了不是嗎?
以下是軟體(韌體)的解法:
以機械鍵盤的軸來說好了
如青軸綠軸這種有聲段落軸來說
其過段落點後所發出的click聲響
其實來自於內部白色塑膠零件彈開
造成兩邊觸點以極快速度撞擊而發出聲音(並不是塑膠發出的聲音)
這種速度(與重量 鍵盤軸的動片重量比滑鼠微動大得多)下 彈跳是可預期的
那為什麼沒有發生"雙擊"?
原因在於在鍵盤的韌體內有做debounce
近期ducky不是有推出一個可以讓使用者自行修改debounce time的功能嗎?
就是那個東西
debounce time的意義是
例如debounce time設為5ms
那個同一個按鍵在5ms內如果觸發了兩次或以上
除第一次之外其他都會被視為彈跳 進而忽略掉
同理 滑鼠也是可以做的 且不會增加硬體成本
(只是不做而已)
所以常看到有些人質疑羅技應該用更好的微動開關
其實放錯重點
羅技連不花錢的方案都不採用了...
我們不是硬體製造商 沒辦法決定要做或是不做
所以無法從軟體下手
接下來介紹硬體的解法
不是要說換新微動開關喔XD
這方法非常簡單
就只是在微動開關上有作用的兩隻腳之間加上濾波電容
(就是比較靠近微動上白點點的那兩隻腳 或是藍點點 紅點點 黃金點點)
電容的大小 0.1uF(104) ~ 1uF(105)都OK
形式的話 有腳的陶瓷電容 或是 SMD 1206貼片陶瓷電容 都很合適
(羅技的話推薦有腳的陶瓷電容
因為羅技滑鼠在微動開關下 電路板後 塑膠底殼下通常都設計有支撐柱 必須要閃過)
以下是M585作為範例
https://imgur.com/53ygcIy
(上圖的M585我另外有把中鍵輕觸開關 改微動開關,有機會再另外分享 :)
就這樣 完工
有興趣的人可以拿一隻連點的滑鼠作實驗
沒意外的話可以撐到下一次換換病發作為止...
加上濾波電容是很常見debounce的方式
以下自問自答一些問題:
Q1:加上電容後滑鼠的按鍵觸發時機會不會受影響?
A1:按下時(MouseDown)不會 ,放開(MouseUp)的時間會延後特定時間(Q2)
Q2:會影響多少時間?
A2:以電容充電至1/2電壓的時間約為0.7RC來計算
滑鼠內MCU內部的上拉電阻以30K歐姆計算
電容以0.1uF來說
0.7*30*0.1= 2.1 ms = 每秒點擊上限470次
電容以1uF來說
0.7*30*1 = 21 ms = 每秒點擊上限47次
(註:以平凡人的手速都沒問題的 你如果超越加藤鷹 或是高橋名人的話就當我沒說...)
加電容的方式只對"連點"這種現象有效
其他例如點擊沒反應
或是持續按住滑鼠 卻會中斷
這種因接點本身所產生的問題都沒效
大概就分享到這邊
台北市如果有想做試驗可以拿來幫你免費加電容
(但不幫換微動喔XD)
滑鼠構造太複雜的請自行先拆好XD
站內信~
作者: kanetakusan   2020-07-08 19:59:00
作者: a963085200 (阿峰)   2020-07-08 20:00:00
好文,推一個,請受我一拜
作者: a58524andy (a58524andy)   2020-07-08 20:02:00
推 觀念正確 解說淺白
作者: afuu (平凡)   2020-07-08 20:05:00
推!學習了
作者: mrlucas8891 (小拉達守羌)   2020-07-08 20:17:00
推 雖然我還是一樣手殘不會換
作者: dichenfong (S級英雄第一位 唬爛超人)   2020-07-08 20:29:00
大師
作者: NCKUchemRx (天才夢)   2020-07-08 20:42:00
推推推 學到很多知識!!
作者: xbgskg (BCE)   2020-07-08 20:54:00
濾波電容是橘色的嗎?
作者: ping870224   2020-07-08 21:10:00
0.7RC是指數函數的ln(2)*RC=0.693嗎,電路學忘一半了,另外記得數位電路防彈跳我印象中記得最簡單的方式是用Flip flop回xbg大,像樓主橘色那個常見的大部分都是陶瓷電容,電子材料行買就有了很便宜
作者: qwe19272375 (魯蛇下士)   2020-07-08 21:17:00
作者: kiwi03 ( )   2020-07-08 21:38:00
推 手邊剛好有一個可以換
作者: winiel559 (大漢天威)   2020-07-08 21:53:00
強 推個~
作者: ayuhb (ayuhb)   2020-07-08 22:21:00
那ASUS換微動開關是多餘的?只需要加電容就好了?
作者: kidla (我喜歡鋼琴)   2020-07-08 22:48:00
請問羅技 G PRO WIRELESS 做微動或電容 是不是不好拆換謝謝 先推大神
作者: wuliou (wuliou)   2020-07-08 22:55:00
不在產業界 不過通常開關debounce都是做在MCU上用程式寫硬體要後續調整太麻煩了
作者: dsa35197   2020-07-08 23:07:00
gpw一根螺絲起子就搞定
作者: twosheep0603 (兩羊)   2020-07-09 00:12:00
從沒想過用濾波電容這招XD
作者: sgouki (musashi)   2020-07-09 01:29:00
GPW某次的韌體更新,就屬於辦法一?主要是好奇,它這個韌體更新的說明是:改善點按防彈跳演算法;看到樓主的文,才猜想是不是和辦法一是同一種?
作者: enyaw5215 (U2)   2020-07-09 08:32:00
推推 學習新知
作者: lovinlover (Lovin Lover)   2020-07-09 09:23:00
連點我還以為首推蛇蛇... 改來研究怎麼加工我的DA了
作者: iwillbehere (FromNow321)   2020-07-09 10:06:00
作者: Salcea (5457)   2020-07-09 10:31:00
蛇蛇拿去換了微動多撐了好久
作者: AliasKuo (郭)   2020-07-09 13:18:00
最好的方法就是不要買羅技
作者: pennymarkfox (潘尼老狐狸)   2020-07-09 14:17:00
可我覺得鍵盤也是消秏品耶...
作者: Knuckleslee (Knuckles)   2020-07-09 15:26:00
debounce當然是滑鼠MCU的標配不然今天碰到的就不會是2連點,是5到10連點會認為鍵盤壽命較長也會包含開關數量分攤壽命的影響也有可能是interval設得比較短,來換取更好的操作性另外usb的1ms polling rate也能濾掉一些過快的連發在這種狀況下發生雙擊,微動的狀態真的已經不太好了
作者: sgouki (musashi)   2020-07-09 16:37:00
查了國外官網的原文說明:Improves Click DebouncingAlgorithm,看起來和樓主的辦法一好像是類似,推測是羅技在高階有這麼做?
作者: Knuckleslee (Knuckles)   2020-07-09 16:45:00
舉個例子,我最近拆過的便宜軌跡球,主控是EM84510datasheet直接記載了debounce interval 12ms
作者: foulhouse (舞房將軍)   2020-07-09 18:29:00
如果用光微動或光磁微動的滑鼠應該就不用除跳了吧
作者: lolikung (幹麼查我?)   2020-07-09 19:02:00
解彈跳MCU一定是有處理過啦
作者: waroz (沃君)   2020-07-09 19:30:00
原來還有這招,之前為了換微動麻煩還自己改插拔ww
作者: ttjerry0204 (大ㄟ)   2020-07-10 03:55:00
長姿勢
作者: spadesA (spadesA)   2020-07-10 04:07:00
期待中鍵改微動開關教學 以前都沒想過這問題壞掉都直接丟給原廠~~
作者: steven800308 (旅神Traveler)   2020-07-10 08:48:00
ㄏㄠˇㄇㄥˇㄛ
作者: Saren (Saren)   2020-07-10 13:54:00
抓0.5個vdd是少了點 通常是0.7個vdd, 用0.85RC時間比較精確
作者: flashseal (十字路口的美少男要爆(b))   2020-07-10 13:57:00
先推 下次連點時 再來看看
作者: Saren (Saren)   2020-07-10 13:59:00
不對 應該1.1RC左右就到0.7個Vdd了 因為1RC~=0.63Vdd
作者: show632 (我很溫暖)   2020-07-10 14:35:00
謝謝 學到觀念了
作者: s2910 (99%純金打造)   2020-07-10 14:47:00
推,謝分享!
作者: Sirine (シリネ )   2020-07-10 18:40:00
微動真的出事 並電容也沒用啦 乖乖換微動吧
作者: iloserSD (紳士)   2020-07-10 22:17:00
作者: rocker12321 (唷呵呵)   2020-07-11 09:01:00
作者: xam (聽說)   2020-07-11 09:52:00
MCU作debounce會有精確度限制,sample rate又要解析度兩倍如果要精確不誤報,又要提升效率,MCU就要更快的版本..
作者: lee28119 (德莫尼克)   2020-07-11 12:44:00
作者: i3MQJ (再開進隧道 風聲蕭蕭)   2020-07-12 00:48:00
長知識了
作者: bearinwhite (等等你聽我解釋!!)   2020-07-12 11:40:00
快推 不然人家以為我們看不懂!
作者: pp688039 (仲夏)   2020-07-12 15:06:00
深度文,推這篇應該入精華XD
作者: gn01881106 (Master_Lai P)   2020-07-14 04:39:00
下次加看看 直接焊在微動的兩腳上囉?比較靠近白鍵的兩隻腳

Links booklink

Contact Us: admin [ a t ] ucptt.com