Keyboard Test
繁體中文

鍵盤鬼鍵測試

同時按住多個鍵,看瀏覽器實際收到哪些。找出會掉鍵的組合,並了解你的鍵盤是 6 鍵無衝突還是 N 鍵無衝突(NKRO)。

目前按住0
同時最多0
判定–
同時按住多個鍵。瀏覽器收到的每個鍵都會顯示在這裡,請拿這個數量和你按下的手指數比對。

要測試鍵盤鬼鍵,只要同時按住好幾個鍵,再比較被辨識的數量和你按下的手指數。瀏覽器收到的每個鍵都會顯示成下方方框中的一個標籤,所以少了一個標籤,就代表鍵盤丟掉了那個鍵。同時按下 10 個以上時,判定行會顯示「N 鍵無衝突(NKRO)」;6 到 9 個顯示「6 鍵無衝突或以上」;低於 6 個則顯示「無衝突能力有限」。

如何使用鍵盤鬼鍵測試

  1. 在頁面任意處點一下,讓頁面可以接收按鍵事件。
  2. 按住一組鍵。先從你實際會用到的開始:玩遊戲就按 W、A、S、D 加上 Shift 與空白鍵,用快速鍵就按 Ctrl、Shift 加一個字母。
  3. 看方框裡的內容。每個被按住的鍵都會以標籤顯示它的代碼,例如 KeyW 或 ShiftLeft,「目前按住」則顯示數量。把這個數量和你的手指數比對。
  4. 一次多加一個鍵,直到數字不再增加為止。「同時最多」會記住看過的最高數字,「最大組合」則列出是哪幾個鍵創下這個紀錄。
  5. 全部放開。你剛剛按的組合會被加到方框下方的最近組合清單,最新的在最上面,最多保留八筆,方便你回頭檢視哪些組合有效。

按「重設」可以清除計數器與清單。同時按住 Ctrl 或 Cmd 的按鍵會交給瀏覽器當成快速鍵處理,所以測試時請避開 Ctrl+W 這類組合。在 macOS 上,放開 Cmd 會清空整個組合,因為 Cmd 被按住期間,系統不會送出其他鍵的放開事件。

這項測試只顯示有送達的鍵。如果鍵盤默默丟掉組合中的第四個鍵,你按著四根手指,畫面上卻只有三個標籤,數量是 3。這個落差就是測試結果。

什麼是鍵盤鬼鍵?

鬼鍵是幾乎所有鍵盤的接線方式所帶來的副作用。控制器並不是一個鍵拉一條線,而是把開關排成由行與列組成的格狀矩陣,然後掃描:一次對一列供電,讀取哪幾行有回應。按下一個鍵,就會把它的行與列接通。以 104 鍵的鍵盤來說,只需要大約 20 條線,而不是 104 條。

當矩陣中構成矩形三個角的三個鍵同時被按下時,問題就出現了。電流從供電的那一列出發,經過第一個鍵到它的行,再沿著這一行經過第二個鍵到另一列,最後經過第三個鍵回到控制器正在讀取的行。從控制器的角度來看,矩形的第四個角也像是被按下了。那顆幻影鍵,就是鬼鍵。

這個矩形是由矩陣的接線方式決定的,不是由鍵帽在鍵盤上的位置決定,所以光看鍵盤的外觀,沒辦法預測哪些組合會出現鬼鍵。兩個緊鄰的鍵,內部可能在不同的行,兩個相隔很遠的鍵,卻可能共用同一行。這也是為什麼實務上的測試方法,就是直接按住你在意的那些組合。

鬼鍵、擋鍵與防鬼鍵

大多數鍵盤其實不會真的打出一個鬼鍵字元。韌體偵測到矩形條件之後,會拒絕回報任何新的鍵,直到那三個鍵中有一個放開為止。這稱為「擋鍵」(blocking),也是「同時按著另外兩個鍵時,某個鍵就沒反應」最常見的原因。從使用者的角度,鬼鍵和擋鍵的感覺一模一樣:少了一個鍵。

名詞按下有風險的組合時會發生什麼原因
鬼鍵(ghosting)回報了一個你沒按的多餘按鍵矩陣中矩形的三個鍵,接通了通往第四個鍵的路徑
擋鍵(blocking)第三或第四個鍵被忽略韌體偵測到矩形狀況,寧可丟掉按鍵,也不冒出鬼鍵
防鬼鍵(anti-ghosting)特定組合一定能辨識矩陣經過規劃或加了二極體,讓常見的遊戲按鍵區塊不會形成矩形
N 鍵無衝突(NKRO)不論什麼組合,每個鍵都能辨識每個開關都有二極體,擋住電流倒流經過其他的鍵

「防鬼鍵」是沒有固定定義的行銷用語,通常是指廠商保護了某一個範圍,一般是 WASD 周圍的字母、方向鍵、Shift、Ctrl 與空白鍵。這個範圍之外的鍵還是可能被擋。標榜「26 鍵防鬼鍵」的鍵盤,意思是某一組特定的 26 個鍵可以安全地一起按,並不是任選 26 個鍵都沒問題。

為什麼二極體能解決問題

鬼鍵的路徑,要靠電流倒著流過一個已按下的鍵,也就是從它的行流到它的列。每個開關串聯一顆二極體之後,電流只能單向通過,這條旁路就被切斷了。每個開關都有二極體,不論同時按下多少個其他鍵,每個鍵都能獨立讀取,鍵盤也就能提供真正的 N 鍵無衝突。

點三顆構成矩形三個角的鍵,例如 Q、W、A。

你按下的
0
鍵盤回報的
0
每顆鍵都在一條列線和一條行線的交叉點。控制器一次給一條列線通電、讀各行,找出哪些鍵被按下。

二極體一顆只要幾分錢,但每個鍵都要擺放與焊接,所以便宜的薄膜鍵盤通常會省掉,這也是 NKRO 以前只出現在昂貴機械鍵盤上的原因。如今許多中階機械鍵盤已經內建二極體。筆電鍵盤通常沒有,所以筆電鍵盤在保護範圍之外,往往按到三、四個鍵就會開始擋鍵。

無衝突:2KRO、6KRO 與 NKRO

無衝突(rollover)指的是鍵盤能同時辨識的按鍵數量。常見的規格如下:

  • 2KRO。 任意兩個鍵可以同時作用,第三個鍵視組合可能被擋掉。常見於基本的薄膜鍵盤。打字不受影響,但遊戲如果需要同時按前進、側移和跳躍,就會掉一個。
  • 6KRO。 最多六個一般按鍵加上修飾鍵可以同時辨識。這是基本 USB 鍵盤協定的上限,也是不需要驅動程式、各作業系統都支援的格式。對幾乎所有人都夠用,包括手指會重疊連打的快手。
  • NKRO。 沒有上限,不管同時按著什麼,每個鍵都能辨識。需要每個鍵都有二極體,以及一種把每個按鍵各用一個位元表示的 USB 報告格式,而不是六格的清單。

這項測試的判定行對應到上述規格:同時 10 個以上顯示為 N 鍵無衝突,因為 6KRO 的鍵盤不可能做到;6 到 9 個是 6 鍵無衝突或以上;少於 6 個則是無衝突能力有限。達到 6 個,並不能證明鍵盤的上限就是 6 個。請持續增加按鍵,直到數字不再增加;如果在你按更多鍵的情況下,一般按鍵剛好停在 6 個,你就找到 USB 的上限了。

為什麼 USB 鍵盤最多只能 6 個鍵

USB 規格定義了一種基本的鍵盤報告,稱為開機協定(boot protocol),讓鍵盤在 BIOS 與開機階段、任何驅動程式載入之前就能運作。這個報告是 8 個位元組:一個位元組用八個位元分別代表八個修飾鍵(左右 Shift、Ctrl、Alt 與 Win 或 Cmd 鍵),一個保留位元組,還有六個位元組,各存放一個被按下的按鍵代碼。第七個非修飾鍵根本沒有位置可以放。

NKRO 鍵盤的做法,是送出另一種報告格式,讓每個鍵各自占一個位元,或是分成多份報告送出。這在所有現代作業系統上都行得通,但有些鍵盤為了相容性,預設使用開機格式,要靠切換才會改成 NKRO,通常是說明書上列出的組合鍵,或廠商軟體裡的設定。藍牙鍵盤一般也使用六格的格式,所以標榜 NKRO 的無線鍵盤,可能只有接上傳輸線時才能做到。

修飾位元組也解釋了一個重要的細節:Shift、Ctrl、Alt 與 Win 或 Cmd 鍵不會占用六個欄位的任何一格。在一般的 6KRO 鍵盤上,你可以同時按住全部八個修飾鍵加六個字母。這項測試把修飾鍵也算進「目前按住」,因為瀏覽器把它們和其他鍵一樣回報,所以把修飾鍵算進去時,6KRO 鍵盤最多可以看到 14 個。

測試結果對你有什麼意義

  • 打字。 即使是打字很快的人,同一時間實際按下的鍵也很少超過三個。打字時遇到 2KRO 擋鍵並不常見,但在矩陣設計不好的鍵盤上,連打「str」或「the」這類組合時可能出現。如果你打字時會掉字,請在這裡測試那幾個字母。
  • 遊戲。 移動、衝刺、跳躍再加一個技能鍵,就是五、六個鍵。請測你實際的按鍵設定。如果鍵盤擋掉其中一個,就是「我按 R 之後角色就停住不動」的元兇。
  • 快速鍵。 在 USB 鍵盤上,Ctrl、Shift、Alt 加一個字母永遠安全,因為修飾鍵是另外傳送的。測試會顯示它們,但失敗的通常不是這類組合。
  • 節奏遊戲與模擬器。 這是真正的 NKRO 派得上用場的場合,因為可能需要同時按住十個鍵。

如果某個需要的組合掉了鍵,軟體層面沒有辦法解決,因為矩陣是實體的。選擇有兩個:把掉鍵的動作改綁到矩形之外的鍵,或換成每個鍵都有二極體的鍵盤。

相關的鍵盤測試

首頁的鍵盤測試會檢查每個鍵單獨按下時有沒有反應,並顯示「同時最多」計數器,但要找出哪些組合會失效,就是這個頁面的工作。如果是某個鍵感覺反應慢而不是沒反應,可以用鍵盤延遲測試測量反應速度,比較不同的鍵盤。如果你不確定 IntlBackslash 或 MetaRight 這類標籤指的是哪一個實體按鍵,在按鍵代碼查詢按一下,就能同時看到按鍵名稱、代碼與位置。Mac 使用者請留意上面說明的 Cmd 行為,並可使用Mac 鍵盤測試來看完整的 Mac 版型。

常見問題

怎麼測試鍵盤有沒有鬼鍵?

在頁面點一下,然後同時按住好幾個鍵。瀏覽器收到的每個鍵都會以標籤顯示在方框中,「目前按住」則顯示數量。如果數量比你按下的手指數少,就表示有鍵被丟掉了。請試試你實際會用到的組合,例如 W、A、Shift 和空白鍵,因為鬼鍵會不會發生,取決於哪些鍵共用同一排或同一列。

什麼是鍵盤鬼鍵?

鬼鍵(ghosting)是指鍵盤回報了一個你沒按的鍵,或是漏掉了你確實按下的鍵,原因是同時按下的幾個鍵在鍵盤內部矩陣中共用了行與列。在矩陣中按下矩形的三個角,第四個角看起來也像被按下了。多數鍵盤不會真的輸出那顆幻影鍵,而是直接把這個組合擋掉,所以實際上你注意到的,通常是少了一個鍵,而不是多出一個鍵。

防鬼鍵(anti-ghosting)是什麼意思?

防鬼鍵是指鍵盤在設計上,讓特定的組合(通常是玩家會一起按住的那幾個鍵)一定能正確辨識。它並不保證所有組合都有效。標榜防鬼鍵的鍵盤,在受保護的範圍之外還是可能掉鍵,所以直接測試你自己用的組合,比相信包裝盒上的說明更重要。

什麼是 N 鍵無衝突?

N 鍵無衝突(NKRO)的意思是:不論同時按住多少個鍵,每個鍵都會被辨識。這需要每個開關都配一顆二極體,讓控制器可以獨立讀取每個鍵。6 鍵無衝突則是最多六個一般按鍵加上修飾鍵可以同時辨識,這是基本 USB 鍵盤協定的上限,對打字來說已經綽綽有餘。

為什麼號稱支援 NKRO 的鍵盤,測試還是停在 6 個鍵?

許多鍵盤預設使用最多只回報六個鍵的相容模式,有些要靠組合鍵或廠商軟體的設定,才會切換成完整的 NKRO。藍牙鍵盤通常也只限六個鍵。如果你的鍵盤標示支援 NKRO,在這裡卻只到六個,請翻閱說明書,找找有沒有切換的方法。

Shift、Ctrl、Alt 會算進無衝突的上限嗎?

在標準的 USB 鍵盤上不會。修飾鍵是放在報告中另一個欄位傳送的,所以六個鍵的上限只適用於一般按鍵,修飾鍵另外計算。不過瀏覽器把修飾鍵和其他鍵一樣回報,所以這項測試會把修飾鍵算進「目前按住」,因此 Shift、Ctrl 加六個字母的組合會顯示成八個。

瀏覽器看得到鍵盤沒送出的鍵嗎?

看不到。鍵盤根本沒送出的鍵,作業系統和網頁都不會知道。測試顯示的是實際收到的內容,要和你按下的手指數對照,則由你自己數。「最大組合」那一行與最近組合的清單,會列出所有被辨識的鍵,方便你做這個比較。

更多鍵盤測試

以下每項測試都會針對鍵盤的某個面向做更深入的檢查。