帶自定義鍵的遊戲鍵盤
許多電腦和遊戲愛好者使用特殊的鍵盤。這些鍵盤的一個共同特徵是許多自定義鍵,這些鍵旨在綁定到特定於遊戲和軟體的特殊命令。
用於編輯和創建這些自定義鍵觸發的命令的軟體幾乎總是在 windows 中
EX:Tt Esports 挑戰者軟體Challnger Pro Gaming
使用 Wine 執行軟體時,無法定位鍵盤或其他設備,因此無法對鍵綁定進行程式。
對於大多數鍵盤,自定義鍵預設綁定為
ctrl+c
andctrl+v
。因此,System Settings
只要使用者嘗試使用這些命令,使用 設置這些鍵就會覆蓋。這個問題有什麼可能的解決方案,有沒有辦法讓 Wine 檢測硬體或者有另一種方法來設置自定義鍵?
找到解決方案對 Linux 社區非常有幫助,因為在開發或使用專用軟體時可以使用自定義密鑰。
我的鍵盤是 HID 鍵盤,使用
hid-generic
.對於預設情況下未設置的鍵,除了
evtest
它們返回的三個預設值外,沒有註冊任何內容Event: time 1488397338.016750, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0 Event: time 1488397338.016750, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0
xev
只註冊預置為ctrl+c的按鍵,如2次按鍵,預設未設置的按鍵不註冊我確實有一個 Windows 系統,我可以在其中嗅探 USB 協議。但是我該怎麼做呢?
這可能需要幾個步驟/迭代,並且問答格式不太合適。如果您遇到困難,請用更多資訊更新您的問題,並在對此答案的評論中聯繫我。那我會編輯我的答案。
從描述中聽起來,特殊鍵到鍵事件的映射是在鍵盤中完成的,因此程式必須在鍵盤中進行,而不是在驅動程序中進行。
有各種適用於 Windows 的開源 USB 嗅探器,例如usbpcap或較舊的usbsnoop,google 可能會找到更多,以及如何使用它們的教程。
原則上,您需要在使用程式軟體對具有不同按鍵順序的不同特殊按鍵進行程式時記錄通信。然後查看數據包,比較它們,看看哪些字節會因不同的特殊密鑰或程式序列而改變。
libusb
猜猜協議,在 Linux 上使用自己編寫的程序重放它。由於您的鍵盤是 HID,而且 HID 是高度標準化的,因此我們可以提供一些幫助。熟悉HID 文件(或至少查找您需要的那些部分)。每個 HID 設備都帶有一個描述符,描述符根據 HID 標準描述了與設備的所有可能互動。如果鍵盤是這樣程式的,如果沒有太多的“vendor-specific”欄位,我們可以直接猜測協議。
您可以通過兩種方式讀取描述符。
(1) 如果您的核心已
debugfs
啟用,則以 root 身份執行mount -t debugfs none /sys/kernel/debug cat /sys/kernel/debug/hid/device_id/rdesc
device_id
如果你的鍵盤,id 在哪裡。這會將原始描述符顯示為十六進製字節,以及核心如何解析它。如果核心解析不夠,嘗試hidrd轉換原始描述符。(2) 設備上的問題
HIDIOCGRDESCSIZE
和HIDIOCGRDESC
ioctlshidraw
(查找dmesg
以查找您的鍵盤)。Linux 核心原始碼中的samples/hidraw/hid-example.c
解釋瞭如何做到這一點,或使用現成的工具,如usbhid-dump。理想情況下,您會看到一些與程式相關的功能或輸出描述。如果太多描述的欄位不清楚或標記為“供應商特定”,您可能仍然需要窺探軟體工具。