[鼠标] 鼠标连点的成因与解决方式

楼主: 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作为范例

(上图的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   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