2012.08.14 11:10

什麼是 N-key 與按鍵衝突?原理說明、改善技術、選購注意完全解析

ADVERTISEMENT

USB HID限制6+2鍵

PS/2按鍵壓下與放開,是分Make Code與Break Code送出,而USB介面下則完全不同。依據USB HID(Human Interface Devices)規範,它是將正在壓下的按鍵訊號送出,沒有壓下按鍵的訊號就不送出。壓下的訊號按鍵每一次的封包為8 Bytes,其中2 Bytes 為Modifier Keys與Reserved保留鍵。

Modifier Keys為1Byte即8 bit,每一個bit可以記錄Shift、Ctrl、Alt、Windows鍵,左右側各有1顆鍵共8鍵。Reserved保留鍵可以做為Caps Lock、Number Lock、Scroll Lock等等鍵使用。扣除Modifier Keys與Reserved Keys之後,其他按鍵最多只有6鍵可以輸出。

USB鍵盤按鍵定義

▲由USB HID 1.11中可以明確看到USB鍵盤使用8 Bytes。

▲Reserved Keys保留鍵可以讓廠商做為多種用途。

▲Modifier Keys每1個bit各代表著不同按鍵訊號。

▲其他按鍵的訊號送出的定義也與Scan Codes Tables Set 2不同,USB有自己的一套查表,詳細可以查詢USB HID Uasage Tables。

訊號先進先出不打結

在USB HID中,我們真正可以使用的按鍵只有6鍵。如果按下超過6鍵,或者送出Ghost Key時,鍵盤便會送出錯誤訊息而停止。有些廠商在這裡的處理方式為採用FIFO(First In First Out,先進先出),當已經滿6顆訊號時,再讀取使用者新輸入的第7鍵訊號,就捨棄原本的第1鍵訊號,持續保持同時6鍵輸出。

ADVERTISEMENT

▲USB按鍵送出範例:此範例以4 Bytes封包送出鍵盤訊號,其中1 Byte保留給Modifier Keys使用。如果鍵盤沒有動作時(None),送出的封包訊號與前一次相同。

解開HID封印可行

USB HID只是對USB設備設立的規範,USB裝置也能照著自己的規則走,所以USB鍵盤同時輸出6鍵還是可行,在這分享幾種USB鍵盤突破限制的方法。只是這些方法都需要付出額外的成本,早期鍵盤幾乎都是遵守USB HID規範,所以才會有許多人認為多鍵輸出在USB介面下是不可能的任務。

ADVERTISEMENT

模擬多把鍵盤

但其實仍有辦法遵守USB HID規範,又能突破限制。最簡單的方法,就是利用鍵盤晶片,讓電腦在使用1把鍵盤情形下,誤認為同時連接多把鍵盤。就能將鍵盤按鍵,透過模擬的鍵盤分送訊號。原本限制的6顆鍵就能串聯起來,而重複的Modifier Keys與Reserved Keys位置,也能重新定義新按鍵送出,達成多顆鍵同時輸出。

此種方法穩定性較高,造成系統誤判的機率較低,許多鍵盤都採用這種方式。不過每多模擬1把鍵盤,至少就需要多1顆晶片,還要將晶片互接連接並將訊號分配控制,成本也隨之增加。通常採用此方法時會猜測玩家的按鍵需求,而非無上限地模擬鍵盤。

ADVERTISEMENT

▲由作業系統的裝置管理員中,可以觀察到微軟SideWinder X4鍵盤模擬出2把鍵盤。

更改按鍵定義宣告

USB鍵盤變數宣告中,原本每Byte是代表著不同按鍵,但是可依需要重新宣告變數。每一個Byte分開成8 bits來計算,每1個bit各代表著1個按鍵,所以總共可以代表8個按鍵訊號。延伸至USB鍵盤原本8 Byte的訊號資料中,就可以代表著64顆鍵。搭配模擬多把鍵盤方式,只要模擬出第2把鍵盤就能有128個訊號,可滿足鍵盤全鍵輸出的需求。此種方法可以很容易在USB介面下達到全鍵輸出,打破介面的限制。

穩定性最重要

鍵盤相關的技術每年都會進步,要達到一樣的目標會有許多種技術,使用時通常也不會採用單一種方法,而是混合搭配。筆者無法針對每一種方法都加以詳細介紹,只能將比較常見的方法提出來討論研究。

ADVERTISEMENT

雖然有些方法可以達到超過6鍵以上輸出,但是無法保證在每台電腦都能正常輸出。透過USB HUB等連接器時,鍵盤通常發生問題的機會較高。最後在市場鋪貨的鍵盤,多數都是將問題發生率降到最低,或者已有其他的配套方式可使用。無論如何,能夠讓玩家順利輸出鍵盤訊號才會是最重要的。

土砲自己的NKRO鍵盤

當然如果要靠自己力量,土砲出一把N-Key Rollover鍵盤不是難事。內部電路比較好去掌握,介面部分則較為複雜不易更動。國外有玩家自行購買二極體,然後再焊接於PCB電路板上,將鍵盤矩陣的電路加上跳線再加以改造,使得每個按鍵都能獨立送出訊號。這位玩家使用型號為1N4148的二極體,有興趣你也可以試試。

國外玩家做法

圖片來源網頁:

▲圓圈代表按鍵,此圖為製作的重點。將按鍵獨立出來,並且焊上二極體。部分按鍵電路可依需要另外連接線路。

▲真正電路板上的按鍵訊號很複雜,判斷上不容易。首先要將按鍵獨立出來,所以部分電路板上需要先截斷電路。 

▲然後再焊上二極體,與連接跳線。

▲全部完成後就製作出一把N-Key Rollover鍵盤。

(後面還有更多鍵盤功能的介紹!)

ADVERTISEMENT