[問題] keyboard hid 通訊
小弟使用vc++ 在windows 10 64bit平台上
寫一個可以接受usb鍵盤按下與彈起event的程式
由於我的usb鍵盤是特殊製造的3*5鍵盤
所以使用的HID Usage ID全部都是保留未使用的(0xE8到0xFFFF)
例如 此特殊鍵盤的第一個鍵
HID Usage ID是0xE8 第二個鍵是0xE9
其餘依此類推
問題是 我發現使用raw input的api 只能接收到正常的鍵盤訊號(例如a鍵 0x04)
保留未使用的HID Usage ID一律接收不到.
接下來我嘗試使用hidapi (http://www.signal11.us/oss/hidapi/)
這個更慘
雖然可以辨識鍵盤 但是接收不到鍵盤output的任何訊號
主要程式碼是
handle = hid_open(0x056E, 0x0811, NULL); //前一個是VID,後一個是PID
res = hid_read(handle, buf, sizeof(buf)); //blocking-mode
然後就block在hid_read了,我也試過hid_set_nonblocking(handle, 1);
但也收不到訊號..
後來我改用mac os x 10.10 完全同樣的程式碼 竟然可以接收到鍵盤的訊號!
不知道各位有何種解法可以讓我的windows 10收到usb keyboard訊號
謝謝各位!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.136.217.112
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1446795832.A.858.html
推
11/06 15:57, , 1F
11/06 15:57, 1F
推
11/06 16:13, , 2F
11/06 16:13, 2F
→
11/06 16:14, , 3F
11/06 16:14, 3F
→
11/06 16:16, , 4F
11/06 16:16, 4F
這是廠商給我的鍵盤 應該不是arduino
他接上去的時候 不需要特別的驅動程式
windows偵測到就是一般鍵盤 hid keyboard device
結果我發現 hidapi在mac os x上竟然可以偵測到鍵盤的動作
即使是保留未使用的HID Usage ID也可以偵測到!
看來是windows的問題? 這要怎麼解決呢?
※ 編輯: sbshank (220.136.217.112), 11/06/2015 16:45:03
※ 編輯: sbshank (220.136.217.112), 11/06/2015 16:46:04
推
11/06 17:56, , 5F
11/06 17:56, 5F
→
11/06 17:59, , 6F
11/06 17:59, 6F
→
11/06 17:59, , 7F
11/06 17:59, 7F
可是我還是希望它仍是一台keyboard
(我這台鍵盤可以隨時更換任一鍵的HID Usage ID )
不知道有沒有辦法在HID Keyboard Device仍可以攔截其訊號?
我用usblyzer之類的usb分析工具 可以成功攔截他傳進來的訊號耶
例如這是當我把HID Usage ID設為0x04(也就是鍵盤A)的訊號
http://i.stack.imgur.com/fCGoE.png

這個則是保留未使用ID 0xE8的訊號
http://i.stack.imgur.com/olw9D.png

※ 編輯: sbshank (140.112.71.183), 11/06/2015 20:25:24
※ 編輯: sbshank (140.112.71.183), 11/06/2015 20:25:55
推
11/06 21:08, , 8F
11/06 21:08, 8F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章