鍵盤無衝與鬼鍵:你的鍵盤到底能識別幾個鍵
按住四個鍵卻只出來三個,鍵盤並沒有壞——它只是在按自己的佈線能力行事。搞懂無衝,就能解釋為什麼同一塊鍵盤打字絲滑,一進遊戲卻丟鍵,以及這件事到底值不值得動手解決。
不確定是哪臺裝置在出問題?先從輸入裝置故障判定 這個總綱頁開始:它把症狀對應到該做的那一項測試,再帶你走到修、換或退。
鍵盤為什麼會丟鍵
鍵盤不是一張由獨立軸體組成的網格,而是一個矩陣:橫豎兩組導線,每個鍵坐在一個交叉點上。控制晶片逐行掃描,靠哪些交叉點導通來推斷哪些鍵被按下了。這個設計省下了幾百根導線,代價也只有一個——某些三鍵組合下,電路根本分不清到底按下了哪幾個鍵。於是鍵盤要麼報出一個沒人按過的鍵(鬼鍵),要麼乾脆不報其中一個真實按下的鍵(阻斷)。
廠商用二極體壓制這個問題,每個軸體一顆,讓每個鍵在電氣上都能被區分開——這就是宣傳裡「防鬼鍵」的真正含義。它不是額外焊上去的功能,而是一筆元器件成本;這也是便宜鍵盤和好鍵盤表現不一樣的原因。
6KRO 和 NKRO 到底是什麼
無衝說的就是一把鍵盤能同時上報多少個鍵。NKRO 是每個鍵都算,實際上沒有上限。6KRO(六鍵無衝)是 USB 的標準行為:HID 引導協議給按鍵分配了六個位元組,所以用通用驅動的鍵盤能上報六個同時按下的鍵,外加修飾鍵。在大多數系統上,一塊普通的 6KRO 鍵盤夠用了——人只有十根手指,而且通常有兩根正按在 Shift 或 Ctrl 上。標稱 NKRO 的鍵盤一般靠自定義驅動或者切換上報協議來實現,這也是為什麼有些 NKRO 鍵盤換個 USB 介面、換個作業系統,表現就不一樣。
測出你的鍵盤有幾分本事
開啟免費的鍵盤測試,用裡面的無衝計數器。按住一個鍵,看數字往上漲,一個一個加;然後全部按住,看計數和你用了幾根手指對不對得上。接著試遊戲裡真正要緊的組合:W、A、Shift 和空格一起按,再加一個換彈鍵。如果數字卡住了,或者某個一直按著的鍵始終不出現,那你找到的是設計上的行為邊界,不是故障。
注意,測試報告的是到達瀏覽器的東西,而遊戲看到的正是這個。四個鍵按住,瀏覽器顯示出四個,那你就沒什麼要修的。
怎麼看結果
數字卡在二,是廉價薄膜鍵盤的典型表現,對需要多個同時輸入的遊戲來說確實是個限制。卡在六,通常說明這塊板子是 6KRO,屬於正常表現。現在的機械鍵盤和遊戲鍵盤,一般你物理上能按住的鍵都能上報。修飾鍵通常不受這個限制,所以「Ctrl + Alt + Shift 加兩個字母」這種有檔案記錄的組合,能在一塊連五個普通鍵都勉強的鍵盤上順利識別出來,並不奇怪。
問題不在鍵盤的時候
責怪板子之前,先把常見的冒牌嫌疑排除掉。KVM 切換器、無源 USB hub 或者沒供電的延長線,負載一上來就可能漏報告;把鍵盤直接插在主機上測。在 Windows 上,檢查輔助功能設定裡的 Filter Keys 和 Sticky Keys 是不是關著——它們會改變同時按鍵的解讀方式,是「我的鍵盤按不下三個鍵」這類抱怨的常見原因,而問題其實跟硬體毫無關係。無線鍵盤電量低也會漏報告,換掉電池重測。最後,如果問題只在某一個遊戲裡出現,那要審的是遊戲:有些引擎每幀只讀一次輸入狀態,確實識別不了很短的點按。
如果鍵盤真的丟鍵,這些辦法管用
如果計數器確認確實有上限,而這個月又不想換鍵盤,那局面往往還能救。鬼鍵和阻斷跟具體的行列有關,不是隨機的,所以會失敗的組合是可以預測的:一旦你知道按住 W、A 和空格會擋住第四個鍵,就可以把這個第四個動作挪到鍵盤另一個位置上去——滑鼠側鍵、小鍵盤上的鍵,或者 WASD 鍵區之外的字母。不花一分錢,而且真管用。
另一個免費的槓桿在作業系統裡。在 Windows 上關掉 Filter Keys 和 Sticky Keys,多鍵同時按下就恢復正常;把鍵盤從 USB hub 挪到直連線口,也能消掉一整類漏報告。如果你正在挑替換的鍵盤,而且同時按鍵對你很重要,那就問無衝數字,別問防鬼鍵的標章;並且優先選標明全鍵無衝(N-key rollover)的,而不是靠一個模式切換開關的——後者插到不同機器上表現會不一樣。
一定要測你在意的那個準確組合,而不是隨手抓幾個鍵,因為出問題的鍵組取決於被佔用的行和列在哪裡交叉。一塊能扛住七個任意鍵的鍵盤,照樣可能擋住你遊戲裡用的那一個四鍵組合,反過來也一樣常見。按住真實組合,看著計數器,如果數字和你用的手指數量一致,那鍵盤就沒擋在你和想要的輸入之間。
值得換鍵盤嗎
如果你的板子卡在兩個鍵,而你玩的遊戲需要三個以上同時輸入——衝刺加閃避時的射擊遊戲、帶 Shift 和手剎的競速、密集和絃的音遊——那答案是值得,這個上限是真實存在的,也值得花錢解決。如果卡在六,換一把你感覺不出任何區別。唯一不值得做的,是去追「防鬼鍵」這個標章:有意義的規格是你自己花一分鐘就能用無衝測試量出來的無衝表現,而不是盒子上的那句話。
常見問題
我的鍵盤是 6KRO,這算問題嗎?
通常不是。六個同時按下的鍵外加修飾鍵,夠應付正常打字和大多數遊戲。只有當你需要同時按住超過六個普通鍵時,它才成了限制——即使在競技遊戲裡,這種情況也不多。
鬼鍵和阻斷有什麼區別?
鬼鍵是指鍵盤報出一個你從沒按過的鍵,因為矩陣分不清這個組合;阻斷則是它乾脆不報你正按著的某個鍵。兩者都源自同一套佈線設計,也都靠每鍵一顆二極體治好。
軟體能修好鬼鍵嗎?
不能。這個上限是電氣層面的,固化在鍵盤矩陣裡。軟體可以改鍵位,卻沒法讓硬體分辨電路本身都分不開的輸入。
為什麼只有某一個遊戲裡會丟鍵?
有些遊戲每幀取樣一次輸入,識別不了很短的點按;有些還會在此之上再套一層自己的按鍵處理。如果瀏覽器裡的無衝計數器把你按住的每個鍵都記下來了,那問題就不在鍵盤。