# 問題描述

ErgoKB 在 Chrome 進行 Remap 時,選擇 HID 裝置後出現 Could not open 錯誤訊息。

# 環境

  • OS: EndeavourOS
  • 鍵盤: ErgoKB Phoenix v2 分離式人體工學機械鍵盤

# Diagnosis

查看 HID 裝置權限,全部都只有 root 才有讀寫權限,應該是權限問題(這邊看不出每個 HID 是什麼裝置)

ls -l /dev/hidraw*
crw------- 1 root root 243, 0  29 12:50 /dev/hidraw0
crw------- 1 root root 243, 1  29 12:50 /dev/hidraw1
crw------- 1 root root 243, 2  29 12:50 /dev/hidraw2
crw------- 1 root root 243, 3  29 12:50 /dev/hidraw3

# Solution

查看裝置 VID, PID, 得知 VID/PID 為 1209:2304

lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 004: ID 8087:0029 Intel Corp. AX200 Bluetooth
Bus 001 Device 007: ID 1209:2304 Generic Phoenix-v2
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

建立裝置專用 rule 檔案 /etc/udev/rules.d/99-ergokb.rules

寫入設定

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", \
  ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2304", MODE="0666"

說明:

  • VID/PID 為剛剛查詢到的 1209:2304
  • MODE="0666" 設定裝置權限為 rw-rw-rw- ,允許所有使用者讀寫
  • 原本裝置權限是 crw------- (600) ,只有 root 可以存取
  • 改為 0666 後,一般使用者(包含 Chrome)也能存取 HID 裝置

重新載入設定

sudo udevadm control --reload-rules  # 重新載入 udev 規則檔案
sudo udevadm trigger                  # 觸發事件,將新規則應用到現有設備
  • udevadm control --reload-rules :重新讀取 /etc/udev/rules.d/ 目錄下的所有規則檔案
  • udevadm trigger :觸發 udev 事件,讓系統重新掃描所有設備並套用新規則

執行完後 如果還是不行我勸你鍵盤拔掉重插啦,重新開啟 remap 頁面即可正常使用。 🎉

對了,如果在 Linux OS, 這篇就有可能遇到這個問題;Node.JS 控制 USB 繼電器