2025-07-10

試用 HR8201 USB鍵盤模組

之前經常使用不同 微控制器 改裝其他裝置成能夠發送 USB鍵盤訊號
在下發現一款看似操作簡單的 USB鍵盤模組,嘗試了解運作原理及測試自製鍵盤的可行性

外觀

HR8201鍵盤模組 的 正面

HR8201鍵盤模組 的 背面

HR8201鍵盤模組 提供顯示 Num LockCaps LockScroll 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 Pause Prev Stop Play Right Ctrl Next Left Ctrl F5
C1 Q Tab A Esc Z Non Conv ` 1
C2 W Caps Lock S < X \ Conv F1 2
C3 E F3 D F4 C Kana Mode F2 3
C4 R T F G V B 5 4
C5 U Y J H M N 6 7
C6 I ] K F6 , Intl Ro = 8
C7 O F7 L Left Ctrl O . Menu F8 9
C8 7 4 1 Num Lock Arrow Down Delete Power
C9 Intl Yen Back Space \ F11 Enter F12 F9 F10
C10 Scroll Lock Left Alt F4 Vol- Left Alt Vol+ Right Alt Mute Print Screen
C11 P [ ; ' \ / - 0
C12 Screen Lock Left Meta Left Ctrl C Rec Rew FF Eject F10
C13 Lang 2 Left Ctrl V Right Meta 00 000 Left Ctrl S F2 Lang 1
C14 Control Panel Email Home Back ward For ward Cancel Re fresh Book mark
C15 User Home Calcu- lator Arrow Up Arrow Down Arrow Left Arrow Right Web Browser
C16 Wake Up Left Shift Right Shift System Find Left Alt Tab Left Ctrl P F1 Fn
C17 + , Ent Arrow Up Left Ctrl X Arrow Left Home End
C18 9 6 3 . * - Page Up Page Down
C19 8 5 2 0 / Arrow Right Insert Sleep

在下將不同效果(在下判斷)的以不同顏色區分,方便檢視:

  • 控制字元
  • 標點符號
  • 數字
  • 英文字母
  • 修飾鍵
  • 數字鍵盤字元
  • 功能字元
  • Fn鍵
  • 多媒體功能
  • 網頁瀏覽器功能
  • 系統功能
  • 保留功能

補充資料

測試後發現有一些重覆功能的按鍵和組合鍵操作
基本上,重覆功能的按鍵不影響操作,但組合鍵的操作在不同作業系統或硬件並不一致或有效
例如,R3,C7 的 Ctrl O 在一般 *nix 和 Windows 中可以開啟檔案,但在 Mac OS 上卻無法使用
此外,多媒體功能系統功能網頁瀏覽器功能 在不同作業系統或硬件未必有相應的實作
在下發現 多媒體功能 及 網頁瀏覽器功能 在 Mac OS 上完全無法使用,而 系統功能 僅部分有效

在下主要在 Linux 上進行測試,除了 多媒體功能 的 RecRewFF 外,基本上所有功能都能正常操作
包括 保留用途 的 Non-ConvConvKana 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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 VBUS UNKNOWN D- D+ UNKNOWN UNKNOWN GND UNKNOWN UNKNOWN UNKNOWN UNKNOWN NUM LED CAPS LED SCROLL LED C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 UNKNOWN UNKNOWN C19 C18 C17 C16 C15 C14 C13 C12 C11 C10 UNKNOWN UNKNOWN UNKNOWN UNKNOWN R7 R6 R5 R4 R3 R2 R1 R0
鬼鍵問題

在下發現這款 HR8201模組 當連接的線路有重疊時,會出現按鍵操作不正常
在網上尋找資料時指這種情況稱為 鬼鍵 (Ghosting) ,而且找到的資料主要是與電競相關的內容

R0 R1 C0 C1

由於電腦鍵盤的按鍵數量接近100個,製作及使用一款超過 100支 GPIO引腳的晶片將會非常昂貴
晶片的體積也會增加,且引腳數量多會使手焊的難度提高
因此,通常會將按鈕設計成矩陣排列,並運用 多路復用技術 (Multiplexing) 以節省 GPIO引腳 使用數量
以 HR8201 為例,R 和 C 引腳總共 28支 GPIO引腳 就能發送出 160個USB訊號

R0 R1 C0 C1

模擬 R0,C0 按鈕被按下的情況
只有一個訊號不會有鬼鍵問題

R0 R1 C0 C1

模擬 R0,C0 和 R1,C0 按鈕被按下的情況
只有一條共通的發送線路,不會出現鬼鍵問題

R0 R1 C0 C1

模擬 R0,C0 及 R1,C0 按鈕 按下的情況
只有一條共通的接收線路,同樣不會有鬼鍵問題

R0 R1 C0 C1

模擬 R0,C0 和 R1,C1 按鈕被按下的情況
由於發送和接收的線路都是分開的,因此同樣不會出現鬼鍵問題

R0 R1 C0 C1

模擬 R0,C1 和 R1,C0 按鈕被按下的情況
由於發送和接收的線路都是分開的,因此同樣不會出現鬼鍵問題

R0 R1 C0 C1

模擬 R0,C0 、 R0,C1 和 R1,C0 按鈕被按下的情況
通常當同時 按下超過3個按鈕,而且 這3個按鈕 都在同一組矩陣中,就會出現鬼鍵問題
在模擬中,雖然 R1,C1 按鈕並未被按下,但按下 這3個按鈕 會使 R1,C1 的線路接通,導致系統接收到來自 R1,C1 的訊號
這種情況下,即使未按下 R1,C1 按鈕,系統會認為 R1,C1 按鈕被按下,這就是所謂的 鬼鍵

R0 R1 C0 C1

要解決鬼鍵問題,需要在每個按鈕的前面或後面加上 二極體 (Diode) 以防止訊號逆流
雖然 二極體 不是很貴的電子零件,但需要再次設計電路板線路,還要焊接與按鈕數量相同 的 二極體
因此這類 防鬼鍵 (Anti-Ghosting) 鍵盤會比較昂貴

總結

HR8201模組 並不是特別裝置,使用方法亦很簡單,只需要使用跳線將 R 及 C 連接便可以操作
但在下卻無法在網上找到規格文件,另外在下亦找不到單獨售賣的 HR8201晶片,只有 HR8201模組
不過 HR8201模組 已經將 R 及 C 引腳保留,而且還提供 USB 連接,讓使用者自行設計自己的鍵盤,都算方便

參考資料

1 則留言 :