2012.09.21 17:19

USB 鍵盤最多只能同時輸出6鍵?多鍵輸出鍵盤訊號探討

ADVERTISEMENT

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

USB也能同時超過6鍵輸出

鍵盤常見的介面為PS/2與USB,而這2種介面的原理、傳輸方式、內容都不相同。以PS/2來說,不管玩家按下多少按鍵,只要內部訊號處理得當,並且都能辨識出來的話,就可以全數輸出。因此,就會有專有名詞N-Key Rollover()出現,即是無論按下任意數量的鍵都能全部輸出,此時的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,不過要超過此限制並部是難事。

ADVERTISEMENT

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

模擬多把鍵盤或重新定義

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

ADVERTISEMENT

至於重新定義方面,則是打破遵守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鍵盤多鍵輸出的主流方式。

ADVERTISEMENT

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

延伸閱讀:

ADVERTISEMENT

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

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

ADVERTISEMENT