鍵盤原理大解密

相信讀者一定遇過在鍵盤上輸入時,按鍵壓下不動會先出現1個字元,然後停頓一下就霹靂趴啦連續輸出相同字元的情況。舉例來說,先開啟文字檔案後壓下A鍵,這時文件上會先出現1個A,不到1秒鐘,就會出現連續A的字元輸出,如AAAAAA……,直到手離開按鍵才停止。
不知道有讀者想過這是為什麼嗎?這次我們就來認識鍵盤送訊號的處理過程。

認識Repeat Delay與Repeat Rate
首先介紹2個專有名詞:重複輸入的延遲時間(Repeat Delay,又稱為Typematic Delay)與重複速度(Repeat Rate,又稱為Typematic Rate),先了解名詞定義才能理解後面的原理與設定。
Repeat Delay是按鍵一直被壓下時,所送出第1個按下的字元訊號,並且在持續壓按相同按鍵不放開的狀態下,到第2次送出的按鍵訊號之間所經過的時間。Repeat Rate是經過Repeat Delay之後,每秒輸出多少字元的速率,單位通常會以Chars / Sec(字元/秒)為主。由於將這兩種數值降到最低,會讓鍵盤在同一個時段中輸出更多字元,有些使用者就將這些設定稱為鍵盤靈敏度。

電競使用效果佳
每個人打字輸入的習慣都不同,有些人壓下按鍵輸入之後就立即放開按鍵,有的人放開按鍵的時間較慢。如果這時Repeat Delay時間太短,就會馬上連發,造成打字上的困擾。
縮短時間雖然在文書處理上可能會是個反效果,但是在遊戲時可就完全不一樣。只要按鍵的反應稍微比對方快一些些時,就能比對手先搶到好時機。當雙方實力相同時,時間便是勝負關鍵。目前在遊戲時,影響最大的會是賽車遊戲、勁舞團、俄羅斯方塊等。

有些產品可以讓你調整Repeat Delay與Repeat Rate。


PS/2、USB工作略有不同
電腦要與鍵盤溝通橋樑是透過鍵盤控制器(Keyboard Controller),每當使用者按下一個按鍵時,鍵盤就會送出一個掃描碼(scancode)給鍵盤控制器,經由鍵盤控制器翻譯後再發出中斷給CPU接收處理,它的優先權高過其他裝置。一般鍵盤控制器都是Intel 8042微控制器,而且已經整合在南橋中,無法直接在主機板上看到。
依照IBM技術參考手冊中,對於PS/2鍵盤的Command Set命令集,提供許多鍵盤指令。可以利用硬體的驅動程式或透過8042微控制器來對鍵盤下指令更改Repeat Delay與Repeat Rate。PS/2介面與USB介面的差別是訊號的送出與接收情形不同,以下將個別討論。

以上為IBM技術參考手冊中PS/2更改Repeat Rate指令表。


USB介面方便取勝
上述內容是以PS/2為主,在鍵盤壓下按鍵時才送出訊號給電腦,由CPU處理事件。但在USB運作下是電腦端會不斷地主動詢問(Polling)鍵盤是否有訊號要送出,並一直持續執行此動作。兩者相較之下,USB會佔用較多處理器的資源,不過在目前處理器處理效能一直提升的前提下,對系統的影響微乎其微,一般人也難以感受出差異。系統中USB的詢問頻率預設值為125Hz,意即每8ms電腦處理器就會偵測一次鍵盤是否有改變訊號。
目前已經有偵測頻率達到1000Hz的鍵盤上市,意即每1ms就詢問一次鍵盤,不過如果處理器效能不夠,實際上也不會達到這個水準。對於滑鼠來說最為明顯,都是同一款1000Hz的滑鼠在不同電腦處理器上跑出來的數值會不一樣,效能差的電腦數據就很不穩定。此處的詢問頻率(Polling Rate)與鍵盤的Repeat Rate是不同的,請不要將這兩種搞混。
USB是新的介面,雖然對於鍵盤來說不見得是最好的選擇,但是它最方便。目前USB的產品越來越多,也能提供較多電量,而PS/2的產品只會變更少。許多主機板的PS/2介面只剩1埠,也有些主機板根本沒有支援PS/2。