之前經常使用不同 微控制器 改裝其他裝置成能夠發送 USB鍵盤訊號
在下發現一款看似操作簡單的 USB鍵盤模組,嘗試了解運作原理及測試自製鍵盤的可行性
外觀
HR8201鍵盤模組 的 正面
HR8201鍵盤模組 的 背面
HR8201鍵盤模組 提供顯示 Num Lock 、 Caps Lock 及 Scroll Lock 狀態 的 LED
亮著即啟用設定
而且 HR8201鍵盤模組 是能夠即時回應電腦的 Num Lock 、 Caps Lock 及 Scroll Lock 狀態
HR8201 能夠將訊號 轉換成 USB鍵盤按鍵訊號
操作
HR8201模組 有 兩組引腳,分別是 C0 至 C19 及 R0 至 R7
可以將 R 當作 列 (Row), C 當作 欄 (Column), 當 R 及 C 連接時,便會發送 對應按鍵的USB訊號
能以矩陣的形式排列按鈕連接 R 及 C 來發送 USB訊號
雖然網上有一些對照表,但有一些內容比較含糊,因此在下同樣親自測試效果
並重新製作對照表,方便理解
R0 | R1 | R2 | R3 | R4 | R5 | R6 | R7 | |
---|---|---|---|---|---|---|---|---|
C0 | ||||||||
C1 | ||||||||
C2 | ||||||||
C3 | ||||||||
C4 | ||||||||
C5 | ||||||||
C6 | ||||||||
C7 | ||||||||
C8 | ||||||||
C9 | ||||||||
C10 | ||||||||
C11 | ||||||||
C12 | ||||||||
C13 | ||||||||
C14 | ||||||||
C15 | ||||||||
C16 | ||||||||
C17 | ||||||||
C18 | ||||||||
C19 |
在下將不同效果(在下判斷)的以不同顏色區分,方便檢視:
- 控制字元
- 標點符號
- 數字
- 英文字母
- 修飾鍵
- 數字鍵盤字元
- 功能字元
- Fn鍵
- 多媒體功能
- 網頁瀏覽器功能
- 系統功能
- 保留功能
補充資料
測試後發現有一些重覆功能的按鍵和組合鍵操作
基本上,重覆功能的按鍵不影響操作,但組合鍵的操作在不同作業系統或硬件並不一致或有效
例如,R3,C7 的 Ctrl O 在一般 *nix 和 Windows 中可以開啟檔案,但在 Mac OS 上卻無法使用
此外,多媒體功能 、 系統功能 及 網頁瀏覽器功能 在不同作業系統或硬件未必有相應的實作
在下發現 多媒體功能 及 網頁瀏覽器功能 在 Mac OS 上完全無法使用,而 系統功能 僅部分有效
在下主要在 Linux 上進行測試,除了 多媒體功能 的 Rec 、 Rew 和 FF 外,基本上所有功能都能正常操作
包括 保留用途 的 Non-Conv 、 Conv 、 Kana Mode 等
(但只是能夠偵測對應的 USB訊號 ,並非有實際操作效果,只是 Linux 可以任意修改按鍵映射,令這些按鍵能設定成其他功能)
不過, R7,C15 的訊號在 Linux 、 Windows 和 Mac OS 中完全無法測試到功能
另外,在下測試 Num Lock 、 Caps Lock 及 Scroll Lock 時發現只有 Windows 能夠切換 3種Lock 的狀態
Linux 無法切換 Scroll Lock 的狀態, Scroll Lock 的功能則變成無效果
而 Mac OS 則只能切換 Caps Lock 的狀態, Num Lock 的功能變成無效果, Scroll Lock 的功能則變成降低熒幕亮度
HR8201引腳
在下以為 HR8201 是一款常見的 USB鍵盤訊號晶片,不過在下卻找不到相關資料,因此在下嘗試查找引腳的功能
鬼鍵問題
在下發現這款 HR8201模組 當連接的線路有重疊時,會出現按鍵操作不正常
在網上尋找資料時指這種情況稱為 鬼鍵 (Ghosting) ,而且找到的資料主要是與電競相關的內容
由於電腦鍵盤的按鍵數量接近100個,製作及使用一款超過 100支 GPIO引腳的晶片將會非常昂貴
晶片的體積也會增加,且引腳數量多會使手焊的難度提高
因此,通常會將按鈕設計成矩陣排列,並運用 多路復用技術 (Multiplexing) 以節省 GPIO引腳 使用數量
以 HR8201 為例,R 和 C 引腳總共 28支 GPIO引腳 就能發送出 160個USB訊號
模擬 R0,C0 按鈕被按下的情況
只有一個訊號不會有鬼鍵問題
模擬 R0,C0 和 R1,C0 按鈕被按下的情況
只有一條共通的發送線路,不會出現鬼鍵問題
模擬 R0,C0 及 R1,C0 按鈕 按下的情況
只有一條共通的接收線路,同樣不會有鬼鍵問題
模擬 R0,C0 和 R1,C1 按鈕被按下的情況
由於發送和接收的線路都是分開的,因此同樣不會出現鬼鍵問題
模擬 R0,C1 和 R1,C0 按鈕被按下的情況
由於發送和接收的線路都是分開的,因此同樣不會出現鬼鍵問題
模擬 R0,C0 、 R0,C1 和 R1,C0 按鈕被按下的情況
通常當同時 按下超過3個按鈕,而且 這3個按鈕 都在同一組矩陣中,就會出現鬼鍵問題
在模擬中,雖然 R1,C1 按鈕並未被按下,但按下 這3個按鈕 會使 R1,C1 的線路接通,導致系統接收到來自 R1,C1 的訊號
這種情況下,即使未按下 R1,C1 按鈕,系統會認為 R1,C1 按鈕被按下,這就是所謂的 鬼鍵
要解決鬼鍵問題,需要在每個按鈕的前面或後面加上 二極體 (Diode) 以防止訊號逆流
雖然 二極體 不是很貴的電子零件,但需要再次設計電路板線路,還要焊接與按鈕數量相同 的 二極體
因此這類 防鬼鍵 (Anti-Ghosting) 鍵盤會比較昂貴
總結
HR8201模組 並不是特別裝置,使用方法亦很簡單,只需要使用跳線將 R 及 C 連接便可以操作
但在下卻無法在網上找到規格文件,另外在下亦找不到單獨售賣的 HR8201晶片,只有 HR8201模組
不過 HR8201模組 已經將 R 及 C 引腳保留,而且還提供 USB 連接,讓使用者自行設計自己的鍵盤,都算方便
不明白你的意思
回覆刪除