向量偏移 · 接點彈跳實驗
鍵帽下有一小段回音
你在信件裡按下一次 K。手指感到一次落下,畫面也只該多一個字母。可是手指和畫面之間,並不是一條直接的線:鍵帽推動開關,金屬接點改變電路,鍵盤控制器反覆讀取狀態,韌體最後才決定要不要送出一個按鍵事件。
這段路通常短到無法察覺。它仍然做了一件重要的事:把不完全乾淨的物理動作,整理成電腦能相信的一次輸入。
向下捲動,把幾毫秒放大
一次按下,不是一條乾淨的邊
機械開關裡的接點碰在一起時,不一定從「分開」直接停在「接通」。金屬與彈性結構可能讓接點短暫彈開、再碰合,於是電路會在穩定前多次切換。這叫接點彈跳。
彈跳維持多久沒有一個能套用所有開關的答案。TI 的應用資料把機械接點的一般情況寫成數百微秒到數十毫秒;QMK 文件也提醒,開關種類、老化程度,甚至按壓方式都可能改變穩定時間。另一方面,CHERRY MX2A Black 的資料表列出典型彈跳時間小於 1 毫秒。這些數字不是互相衝突,而是在說:不同結構要用自己的量測與規格回答。
掃描器把回音聽得很清楚
鍵盤通常把開關排成列與行。控制器快速輪流掃描這張矩陣,讀出某個位置此刻是 0 還是 1,再和上一次結果比較。這樣做可以用較少的接腳管理許多按鍵,也讓韌體知道哪一個位置剛剛改變。
問題是,數位電路的反應比接點回彈快得多。對手指而言,那只是一次幾乎瞬間完成的按壓;對掃描器而言,卻可能是一串「接通、斷開、接通」。如果韌體照單全收,同一次按壓就可能被送成不只一個事件。
同一次按壓,留下多個變化
快,讓微小回彈變得重要
數位電路沒有誤聽。它只是忠實讀到了物理接點留下的每一次變化。真正的問題是:哪一些變化屬於同一次動作?
去彈跳不是刪除,而是判斷
鍵盤需要一道去彈跳程序。硬體可以用電阻、電容與具有遲滯的電路平滑訊號;韌體也可以在每次矩陣掃描後,依時間與狀態決定哪些變化算數。兩種方法的共同目標不是讓接點真的停止彈跳,而是不讓後面的系統把回音當成新的指令。
因此,去彈跳真正要回答的是:第一次看到變化時就相信,還是等它維持穩定後再相信?
兩種相信方式
第一次變化立刻回報
QMK 把一類策略稱為 eager。它看到第一次變化就立刻回報,接著在設定的時間內忽略後續變化。這種做法把按下的回應放在前面,但 QMK 也明確指出,立即型策略不等同於抗雜訊;如果第一次變化本身就是短暫干擾,立刻相信也會立刻收下它。
連續穩定後才回報
另一類策略稱為 defer。它在讀值改變後開始等待,只有當訊號在設定時間內不再變動,才送出事件。這種做法能把反覆變化留在等待窗裡,也比較能拒絕雜訊;代價是確認時間會往後移。QMK 的預設去彈跳時間是 5 毫秒,但那是特定韌體的預設,不是所有鍵盤共同遵守的自然常數。
等更久,不一定更可靠
把等待窗拉長,確實能包住更久的彈跳;它也會讓 defer 型策略更晚回報。把等待窗縮短,回報可能更快;如果接點尚未穩定,後續邊緣就可能逃出窗口。真正的設計還要同時考慮掃描速度、開關特性、雜訊、按下與放開是否採同一規則,以及計時器是整把鍵盤共用、每列共用,還是每一鍵獨立。
所以,「零延遲」和「永不連點」不是只靠一個數字就能同時保證的兩個願望。較新的開關可以用材料與結構縮短典型彈跳時間,韌體也能用不同演算法分配速度與抗雜訊;最後仍要用實際硬體與使用情境驗證。
DEFER 示意 · 選擇連續不變的等待時間
所有波形、事件數與時間點都是本文的固定示意,用來比較窗口;不是特定鍵盤的量測報告。
那一個 K,是一次判決
回到信件裡的 K。手指只負責把鍵帽壓下,接點負責留下有些顫動的原始訊號,控制器與韌體則負責判斷哪些變化屬於同一次動作。畫面上那個乾淨的字母,不是因為鍵帽底下從未混亂,而是因為鍵盤沒有把每一次混亂都交給電腦。
可靠的輸入不是假裝物理世界只有 0 和 1。可靠,是在 0 和 1 來回顫動的短短幾毫秒裡,知道什麼時候才值得相信。
資料來源與事實邊界
- QMK Firmware,Contact bounce / contact chatter
接點彈跳、軟體去彈跳與 eager/defer、global/per-row/per-key 策略。 - QMK Firmware,How a Keyboard Matrix Works
鍵盤矩陣的列、行與掃描方式。 - Texas Instruments,Debounce a Switch 與 UltraLow-Power Supply Voltage Supervisor Family TPS383x 第 3.6 節:機械接點彈跳、數位邏輯誤判與硬體去彈跳。
- CHERRY,CHERRY MX2A Black 官方資料表下載頁
該型號的典型彈跳時間小於 1 毫秒;本文不把此規格外推到其他開關。
本文互動波形與 1/5/12 毫秒窗口皆為理解機制而作的示意,不是特定鍵盤的量測結果。QMK 的 5 毫秒是該韌體預設值,不是所有鍵盤的統一標準;CHERRY 數字只描述指定型號。