PTT評價

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

看板Key_Mou_Pad標題[滑鼠] 滑鼠連點的成因與解決方式作者
dream4magi
(dream4magi)
時間推噓42 推:42 噓:0 →:26

大家好
講到滑鼠連點大部分人應該直接聯想到羅技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

站內信~


--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.80.79 (臺灣)
PTT 網址
※ 編輯: dream4magi (119.14.80.79 臺灣), 07/08/2020 19:58:45

kanetakusan07/08 19:59

a96308520007/08 20:00好文,推一個,請受我一拜

a58524andy07/08 20:02推 觀念正確 解說淺白

afuu07/08 20:05推!學習了

mrlucas889107/08 20:17推 雖然我還是一樣手殘不會換

dichenfong07/08 20:29大師

NCKUchemRx07/08 20:42推推推 學到很多知識!!

xbgskg07/08 20:54濾波電容是橘色的嗎?

是喔,就是照片中橘色三顆

ping87022407/08 21:100.7RC是指數函數的ln(2)*RC=0.693嗎,電路學忘一半了

在下是資訊人,電子學這部份只是略懂,公式自然是記不住... 需要用到的時候現在網上很多計算機,看一下圖表差不多0.7RC,差不多就好XD

ping87022407/08 21:10,另外記得數位電路防彈跳我印象中記得最簡單的方式

ping87022407/08 21:10是用Flip flop

這種方式應該是要在設計電路時就要加上去

ping87022407/08 21:14回xbg大,像樓主橘色那個常見的大部分都是陶瓷電容,

ping87022407/08 21:14電子材料行買就有了很便宜

qwe1927237507/08 21:17

kiwi0307/08 21:38推 手邊剛好有一個可以換

一次買一包只用到幾顆也不划算,看看有沒有廢電器拆一拆零件回收使用XD

winiel55907/08 21:53強 推個~

ayuhb07/08 22:21那ASUS換微動開關是多餘的?只需要加電容就好了?

我個人看法:ASUS可換微動的意義在於體驗不同手感,並且微動除了連點之外也是有其 他損壞情況的

kidla07/08 22:48請問羅技 G PRO WIRELESS 做微動或電容 是不是不好拆換

查了一下網上的拆解圖,這之微動是在子板上,換微動是OK的,但加電容不是這麼容易 因為微動電路板正下方整個包覆起來了,或許可以在子板上找地方加,但就不是如文中 這麼單純

kidla07/08 22:48謝謝 先推大神

wuliou07/08 22:55不在產業界 不過通常開關debounce都是做在MCU上用程式寫

wuliou07/08 22:56硬體要後續調整太麻煩了

做再韌體裡面當然是最便宜 彈性又大 但製造商不做 我們也只能動硬體部份了

dsa3519707/08 23:07gpw一根螺絲起子就搞定

twosheep060307/09 00:12從沒想過用濾波電容這招XD

sgouki07/09 01:29GPW某次的韌體更新,就屬於辦法一?

韌體更新還有其他更可能的原因,個人覺得並不包含這次討論的部份,羅技慣犯了.. 沒理由相信他這次從良XD

sgouki07/09 03:36主要是好奇,它這個韌體更新的說明是:改善點按防彈跳演算法

sgouki07/09 03:36;看到樓主的文,才猜想是不是和辦法一是同一種?

那就看看這支滑鼠之後有沒有連點的情況就知道了,微動有做debounce的話可以撐 至少數倍時間。

enyaw521507/09 08:32推推 學習新知

lovinlover07/09 09:23連點我還以為首推蛇蛇... 改來研究怎麼加工我的DA了

iwillbehere07/09 10:06

Salcea07/09 10:31蛇蛇拿去換了微動多撐了好久

換微動時多加一顆電容會撐到天荒地老喔XD 怕維修師傅給你白眼就是了 讓他之後沒生意

AliasKuo07/09 13:18最好的方法就是不要買羅技

這已經是整個生態的問題了,不是只有羅技而已,只是羅技市佔高,自然批評聲音更多

pennymarkfox07/09 14:17可我覺得鍵盤也是消秏品耶...

你確定不是換換病或是松鼠症嗎?XD

※ 編輯: dream4magi (119.14.80.79 臺灣), 07/09/2020 15:13:00

Knuckleslee07/09 15:26debounce當然是滑鼠MCU的標配

Knuckleslee07/09 15:27不然今天碰到的就不會是2連點,是5到10連點

Knuckleslee07/09 15:27會認為鍵盤壽命較長也會包含開關數量分攤壽命的影響

其時說雙擊只是一種簡單的說法,因為雙擊在OS內是一種特定滑鼠事件,事實上在發生 當下,就算是三擊或是十擊,也只會觸發滑鼠雙擊事件。如滑鼠內MCU有做debounce, 連雙擊都不該發生了。還是是一種有做,但(故意?)做得不夠好?

※ 編輯: dream4magi (119.14.80.79 臺灣), 07/09/2020 15:41:10

Knuckleslee07/09 15:49也有可能是interval設得比較短,來換取更好的操作性

Knuckleslee07/09 15:49另外usb的1ms polling rate也能濾掉一些過快的連發

Knuckleslee07/09 15:49在這種狀況下發生雙擊,微動的狀態真的已經不太好了

我再找時間來用硬體直接串滑鼠的訊號腳位,不經過微動開關,來計算如果MCU有做 debounce,那麼debounce time是多少。

sgouki07/09 16:37查了國外官網的原文說明:Improves Click Debouncing

sgouki07/09 16:37Algorithm

sgouki07/09 16:37,看起來和樓主的辦法一好像是類似,推測是羅技在高階有這麼

sgouki07/09 16:37做?

Knuckleslee07/09 16:45舉個例子,我最近拆過的便宜軌跡球,主控是EM84510

Knuckleslee07/09 16:45datasheet直接記載了debounce interval 12ms

這算是現成的滑鼠控制解決方案,大廠會有自己的一套方案,自由度是更大的,不過這也 或許能說明常有人說某廠滑鼠連點,但雜牌滑鼠卻活得長長久久...

※ 編輯: dream4magi (119.14.80.79 臺灣), 07/09/2020 17:18:02

foulhouse07/09 18:29如果用光微動或光磁微動的滑鼠應該就不用除跳了吧

lolikung07/09 19:02解彈跳MCU一定是有處理過啦

waroz07/09 19:30原來還有這招,之前為了換微動麻煩還自己改插拔ww

ttjerry020407/10 03:55長姿勢

spadesA07/10 04:07期待中鍵改微動開關教學 以前都沒想過這問題

spadesA07/10 04:08壞掉都直接丟給原廠~~

steven80030807/10 08:48ㄏㄠˇㄇㄥˇㄛ

Saren07/10 13:54抓0.5個vdd是少了點 通常是0.7個vdd, 用0.85RC時間比較精確

flashseal07/10 13:57先推 下次連點時 再來看看

Saren07/10 13:59不對 應該1.1RC左右就到0.7個Vdd了 因為1RC~=0.63Vdd

0.7Vdd的確是比較保險

show63207/10 14:35謝謝 學到觀念了

s291007/10 14:47推,謝分享!

Sirine07/10 18:40微動真的出事 並電容也沒用啦 乖乖換微動吧

我從沒反對換微動阿XD

※ 編輯: dream4magi (119.14.80.79 臺灣), 07/10/2020 20:08:59

iloserSD07/10 22:17

rocker1232107/11 09:01

xam07/11 09:52MCU作debounce會有精確度限制,sample rate又要解析度兩倍

xam07/11 09:54如果要精確不誤報,又要提升效率,MCU就要更快的版本..

lee2811907/11 12:44

i3MQJ07/12 00:48長知識了

bearinwhite07/12 11:40快推 不然人家以為我們看不懂!

pp68803907/12 15:06深度文,推

pp68803907/12 15:07這篇應該入精華XD

gn0188110607/14 04:39下次加看看 直接焊在微動的兩腳上囉?

gn0188110607/14 04:40比較靠近白鍵的兩隻腳