A0a0397eea3a47ff6121042d7873568b 鍵盤的鍵位處理有內部訊號處理及訊號輸出共2個部分;內部訊號是指鍵盤能辨識的按鍵數,接著則是外在最多能有多少按鍵輸出。不過以往支援多鍵輸出的鍵盤不多,趁著最近各家廠商投入此技術,來測試驗證一下 USB 封包內容是否相同!

USB也能同時超過6鍵輸出

鍵盤常見的介面為PS/2與USB,而這2種介面的原理、傳輸方式、內容都不相同。以PS/2來說,不管玩家按下多少按鍵,只要內部訊號處理得當,並且都能辨識出來的話,就可以全數輸出。因此,就會有專有名詞N-Key Rollover(NKRO)出現,即是無論按下任意數量的鍵都能全部輸出,此時的N已代表全數按鍵,因此也沒有所謂的Full N-Key Rollover。只是一般夠過鍵盤矩陣(Keyboard Martix)所設計出來的鍵盤,只能說2-Key Rollover而已,只有特別設計才能達到N-Key Rollover。

不過當介面轉換到USB時,就會受到USB HID(Human Interface Devices)規範限制,對於壓下的訊號按鍵每一次的封包為8 Bytes,其中2 Bytes 為Modifier Keys與Reserved保留鍵,其他6Bytes才會被我們常用的主鍵位訊號輸出,因此才會有玩家說USB鍵盤最多只能同時輸出6鍵,就被稱為6-Key Rollover,不過要超過此限制並部是難事。

以原始USB HID限制,每次只能送出8Bytes,其中6Bytes為我們常使用的主鍵位區訊號。

模擬多把鍵盤或重新定義

除了特殊遊戲或者環境下,否則6鍵同時輸出的需求極少,不過至今仍有廠商在研發克服的方法。目前常見的方式有2種:模擬與重新定義。如果要遵守USB HID限制的話,1把鍵盤就最多只能6鍵輸出,那我們只要利用鍵盤晶片讓電腦在只有把1把鍵盤安裝的情形下,誤認為是同時有多把鍵盤連接。這時便會將1把鍵盤的不同按鍵,分給模擬出的鍵盤來送出訊號,達到超過6鍵的訊號。原本鍵盤限制的6顆鍵數量就能串聯起來,而重複的Modifier Keys與Reserved Keys位置也可以再重新定義新按鍵送出,造成可以同時多鍵輸出。

至於重新定義方面,則是打破遵守USB HID的思維,重新定義每個按鍵的訊號,原本的8Bytes的訊號,能分成64bits來表達,每個bit代表1個按鍵就能達到最多64鍵輸出的目的。透過模擬方式,甚至不透過8Bytes的方法就能讓USB鍵盤也能擁有N-Key Rollover。

驗證方面,以i-rocks KR-6421與Ducky龍年版6-Key Rollover模式來測試,按下A鍵透過USB封包軟體Bus Hound 6.01可以看出有送出包含十六進位「04」的ID名稱。但當把Ducky龍年版轉成N-Key Rollover模式,就沒看到「04」的封包數值。

由此可見Ducky龍年版,是透過更改USB按鍵定義的方式來克服6鍵輸出。不過重新定義的部分,如果韌體不好,反而可能會造成系統錯亂,因此玩家買到鍵盤還是要先測看看才行,否則就選擇可以自由接換訊號輸出模式的鍵盤為主。目前除了Ducky,CM Storm也有採用類似方式,相信之後這會是USB鍵盤多鍵輸出的主流方式。

透過USB封包軟體軟體,可以看到Ducky龍年版突破6鍵限制的方法,就是變動USB的按鍵定義。

延伸閱讀:

鍵盤有沒有 NKRO ?微軟幫你測

本文同步刊載於電腦王雜誌
 

歡迎加入電腦王雜誌粉絲團

使用 Facebook 留言

5b07a7a48af3d6c21a472fed761e68a0?size=48&default=wavatar
2.  英國人 (發表於 2012年9月21日 21:06)
最好的方式還是整把鍵盤加焊 Diode 上去
dodo
5.  dodo (發表於 2012年9月23日 03:05)
這篇錯字頗多!!
--可以自由"接"換訊號輸出模式的鍵盤為主
老貓 iqmore
6.  老貓 iqmore (發表於 2012年9月23日 11:47)
※ 引述《英國人》的留言:
> 最好的方式還是整把鍵盤加焊 Diode 上去

加上二極體跟USB超過6鍵輸出是兩回事唷,
如果沒有特別處理,加上二極體後USB還是受限在6鍵

※ 引述《dodo》的留言:
> 這篇錯字頗多!!
> --可以自由"接"換訊號輸出模式的鍵盤為主

感謝揪錯,只是這篇是來自於電腦王文章,在出刊前都已訂正修改
只是T客邦上稿是以最原始電子檔直接上稿,
如果沒有經過核對校正,有錯字只能說是正常的。
而且目前我也沒權限可以訂正...Orz

發表回應

謹慎發言,尊重彼此。按此展開留言規則