|
请教关于VUSB (AVRUSB) 模拟USB键盘的知识,从官方直接下载的程序不能直接用啊
AVRUSB KEYBOARD的官方下载在这里 http://www.obdev.at/products/vusb/hidkeys.html
实际运行时,发现发送的USB按键都是按下就不弹起来了,比如按下A,它就一直发送A, 直到按下B时才停止发送A并发送B, 相当于只有按键按下事件,这是怎么回事啊? 问题出在descriptor, report还是其它? 相关代码如下(我略有改动,没有改动架构):
#define MOD_CONTROL_LEFT (1<<0)
#define MOD_SHIFT_LEFT (1<<1)
#define MOD_ALT_LEFT (1<<2)
#define MOD_GUI_LEFT (1<<3)
#define MOD_CONTROL_RIGHT (1<<4)
#define MOD_SHIFT_RIGHT (1<<5)
#define MOD_ALT_RIGHT (1<<6)
#define MOD_GUI_RIGHT (1<<7)
#define MOD_NOMOD (0) //stephenadded
#define KEY_A 4
#define KEY_B 5
#define KEY_C 6
#define KEY_D 7
#define KEY_E 8
#define KEY_F 9
#define KEY_G 10
...
...
PROGMEM char usbHidReportDescriptor[35] = { /* USB report descriptor */
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x06, // USAGE (Keyboard)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x07, // USAGE_PAGE (Keyboard)
0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl)
0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1)
0x95, 0x08, // REPORT_COUNT (8)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x01, // REPORT_COUNT (1)
0x75, 0x08, // REPORT_SIZE (8)
0x25, 0x65, // LOGICAL_MAXIMUM (101)
0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))
0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application)
0x81, 0x00, // INPUT (Data,Ary,Abs)
0xc0 // END_COLLECTION
};
static const uchar keyReport[NUM_KEYS + 1][2] PROGMEM = {
/* none */ {0, 0}, /* no key pressed */
/* 1 */ {MOD_NOMOD, KEY_A},
/* 2 */ {MOD_NOMOD, KEY_B},
/* 3 */ {MOD_NOMOD, KEY_C},
/* 4 */ {MOD_NOMOD, KEY_D},
/* 5 */ {MOD_NOMOD, KEY_E},
/* 6 */ {MOD_NOMOD, KEY_F},
/* 7 */ {MOD_NOMOD, KEY_G},
/* 8 */ {MOD_NOMOD, KEY_H},
/* 9 */ {MOD_NOMOD, KEY_I},
/* 10 */ {MOD_NOMOD, KEY_J},
/* 11 */ {MOD_NOMOD, KEY_K},
/* 12 */ {MOD_SHIFT_LEFT, KEY_L},
/* 13 */ {MOD_SHIFT_LEFT, KEY_M},
/* 14 */ {MOD_SHIFT_LEFT, KEY_N},
/* 15 */ {MOD_SHIFT_LEFT, KEY_O},
/* 16 */ {MOD_SHIFT_LEFT, KEY_P},
/* 17 */ {MOD_SHIFT_LEFT, KEY_Q},
};
从官方网站下载的USB KEYBOARD代码包ourdev_462073.zip(文件大小:144K) (原文件名:HIDKeys.2007-03-29.zip) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|