100分求助,自制多媒体USB键盘的实现思路,帮顶有分

zenghuihong6 2009-05-07 09:32:20
先说下项目需求:
一个普通键盘,再集成一个键盘板,用单片机+FPGA仿照键盘协议发按键码,与计算机为USB接口或PS/2接口。计算机需要识别这些自定义键被按下,执行相应操作,并将执行结果通知键盘板的单片机。这部分硬件已实现,如果模拟基本按键码,如'A'、'B'、'c'等,都可以收到。

遇到的问题有两点:

(1)我目前是用键盘钩子来截获按键的,如果自定义的按键码为基本码,才能截获。若编码为多媒体按键码,如计算器、浏览器、搜索等,用USB连接则不能截获到,用PS/2接口则可以。想问下操作系统对这两种键盘的处理是否有所不同?是否用更底层的键盘驱动过滤程序可以截获?
(2)反向通信问题。根据我查的资料,无论是windows级的钩子技术,还是驱动级键盘过滤技术,都只能识别按键被按下。有没有方法能向键盘设备传递消息。操作系统肯定是可以的,PS/2协议里面,操作系统启动时有两次检测键盘过程,需要与键盘通信。问题是应用程序如何与之通信?

写了这么多,不知道讲清楚没有?恳请各位大虾不吝赐教!

...全文
269 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
baiju1839 2010-05-05
  • 打赏
  • 举报
回复
支持你的哦
yuling_xia 2010-04-27
  • 打赏
  • 举报
回复
我也是用全局钩子,也是USB键盘,一部分多媒体可以捕获。有几个捕获不到:快进/快退/TV/录制/音乐符号的那个还有就是一个大S图标的那个键。不知楼主的问题解决没有?可否告诉我你的解决方法?我的邮箱:pipix2004@163.com 谢谢
yuling_xia 2010-04-27
  • 打赏
  • 举报
回复
我也是用钩子,也是USB键盘,一部分多媒体可以捕获。有几个捕获不到:快进/快退/TV/录制/音乐符号的那个还有就是一个大S图标的那个键。不知楼主的问题解决没有?可否告诉我你的解决方法?我的邮箱:pipix2004@163.com 谢谢
zenghuihong6 2009-05-07
  • 打赏
  • 举报
回复
自己顶一下,困扰许久,郁闷中...
伤心的小水沟 2009-05-07
  • 打赏
  • 举报
回复




###########
wangk 2009-05-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zenghuihong6 的回复:]

(2)键盘驱动,有没有源码,或资料可以共享?
[/Quote]

以前的公司做过一个工业USB键盘的项目(是键盘,不是键盘过滤驱动),很遗憾只能提供一点思路。
zenghuihong6 2009-05-07
  • 打赏
  • 举报
回复
to wangk

(1)我用的是WH_KEYBOARD,马上用WH_KEYBOARD_LL试试
(2)键盘驱动,有没有源码,或资料可以共享?
wangk 2009-05-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 zenghuihong6 的帖子:]
(1)我目前是用键盘钩子来截获按键的,如果自定义的按键码为基本码,才能截获。若编码为多媒体按键码,如计算器、浏览器、搜索等,用USB连接则不能截获到,用PS/2接口则可以。想问下操作系统对这两种键盘的处理是否有所不同?是否用更底层的键盘驱动过滤程序可以截获?
(2)反向通信问题。根据我查的资料,无论是windows级的钩子技术,还是驱动级键盘过滤技术,都只能识别按键被按下。有没有方法能向键盘设备传递消息。操作系统肯定是可以的,PS/2协议里面,操作系统启动时有两次检测键盘过程,需要与键盘通信。问题是应用程序如何与之通信?
[/Quote]

1. 使用键盘过滤驱动是可以截获到按键的。
另外不用驱动应该也能截取到,WH_KEYBOARD_LL的钩子是可以截获到多媒体按键码的。不过USB的没试过,应该也没什么问题?

2.向键盘设备传递额外的数据消息,只能使用驱动了。
Win NT内核下,要对键盘所在的端口,或者数据通道写入数据只能使用驱动。
可以用应用程序通知驱动写入的方式。

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧