阅读:1537回复:4
USB键盘?
我想将USB键盘多媒体键的功能修改,学着用DriverStudio写了个filter程序。但我搞不懂应该这么把需要的键分析出来然后替换掉。
I.ReadSize()和I.BufferedReadDest()读出来的好象并不是按下的按键数和键盘送过来的键值呀,究竟这么回事?请指教。 |
|
最新喜欢:![]() |
沙发#
发布于:2003-09-30 17:40
我用http://www.sysinternals.com上面的Ctrl2cap Keyboard Filter试过,Ctrl2Cap确实能抓到按标准键,但我不知道它是否能抓到多媒体按键?
在Ctrl2Cap中,Irp->AssociatedIrp.SystemBuffer 返回了键盘缓冲区的地址,而Irp->IoStatus.Information 返回了整个缓冲区的大小。把Ctrl键替换成Caps Lock键,确实没问题。 但DriverStudio中的I.ReadSize()返回值为9,看起来是象USB传过来的数据数量,总共9个BYTE,第1个BYTE是ID,后面8个BYTE是USD HID键值。按理I.ReadSize()应该返回值跟Irp->IoStatus.Information是一样的,但程序走起来并不是那么回事。而I.BufferedReadDest()的返回值为0,根本没有指到相应的9个数据的缓冲区。 请帮忙分析一下? |
|
板凳#
发布于:2003-10-01 23:55
一般USB键盘的多媒体键盘的键值的发送端点是ENDPOINT2,而通用标准键发送是通过ENDPOINT1发送的。其实你可以用HID法去读ENDPOINT2的数据,再作处理的。这样就不会读到标准键 盘。
|
|
地板#
发布于:2003-10-03 15:44
这个问题与ENDPOINT无关。 对应不同ENDPOINT的驱动在INF文件中可指定。
请高手多多关注,多多帮忙。 |
|
地下室#
发布于:2003-10-08 16:58
up
|
|