ferrari2000 发表于 2015-1-20 14:29:26

求助 : 用Arduino來模擬電腦鍵盤無法在MS-DOS下使用

依照Arduino精華內的Arduino学习笔记A11 - Arduino模拟电脑键盘(基于AVR-USB的USB-HID设备)這篇來製作,
在Windows 7及CentOS下皆可正常使用,唯獨在MS-DOS下完全不行。
(因為某些程式的因素必須使用MS-DOS的環境)
有人遇過這樣的狀況嗎??這是原本library的限制還是有其他的問題??
求大神協助~~謝謝~~

zoologist 发表于 2015-1-20 15:21:36

好像是 usb键盘有两种模式,其中一个是post一个是os。

回头我查一下资料。

avr2015 发表于 2015-1-20 17:32:33

CMOS BIOS里面 USB Legacy 设置为 Enable 了吗?

zoologist 发表于 2015-1-20 18:13:44

\UsbKeyboard.h 中提到了不支持 Boot Protocol。 我也不知道为什么。不支持这个的话 post中是肯定进不了setup的,估计dos也一样。

/* We use a simplifed keyboard report descriptor which does not support the
* boot protocol. We don't allow setting status LEDs and but we do allow
* simultaneous key presses.
* The report descriptor has been created with usb.org's "HID Descriptor Tool"
* which can be downloaded from http://www.usb.org/developers/hidpage/.
* Redundant entries (such as LOGICAL_MINIMUM and USAGE_PAGE) have been omitted
* for the second INPUT item.
*/

关于这个地方还有资料描述如下

三、与USB HID设备有关的描述符
HID设备的描述符除了5个USB的标准描述符(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符,见百合电子工作室的另一篇文章:USB开发基础--USB命令(请求)和USB描述符)外,还包括3个HID设备类特定描述符:HID描述符、报告描述符、实体描述符。
除了HID的三个特定描述符组成对HID设备的解释外,5个标准描述符中与HID设备有关的部分有:
设备描述符中bDeviceClass、bDeviceSubClass和bDeviceProtocol三个字段的值必须为零。
接口描述符中bInterfaceClass的值必须为0x03,bInterfaceSubClass的值为0或1,为1表示HID设备符是一个启动设备(Boot Device,一般对PC机而言才有意义,意思是BIOS启动时能识别并使用您的HID设备,且只有标准鼠标或键盘类设备才能成为Boot Device。如果为0则只有在操作系统启动后才能识别并使用您的HID设备)。

ferrari2000 发表于 2015-1-20 18:18:04

我使用一般的鍵盤在MS-DOS下操作是正常的,不像是BIOS設定的問題。

在Arduino.cc上也有人遇到相同的問題。
http://forum.arduino.cc/index.php?topic=239150.0
上面是說可能要修改HID.cpp
不過要怎麼修改我還在嘗試中....
页: [1]
查看完整版本: 求助 : 用Arduino來模擬電腦鍵盤無法在MS-DOS下使用