有没有办法以编程方式找出计算机的键盘类型(即键位于何处,以及哪些位置存在哪些额外的键)?
如果键盘非常不标准,可以接受一点误差,但一般来说,重点是构建一个屏幕上类似键盘的应用程序,可以高精度地在屏幕上动态绘制键盘布局。
答案 0 :(得分:3)
连接到计算机时,键盘会向操作系统发送“扫描码”。在Windows上,扫描代码然后被转换为虚拟键(键盘的硬件独立映射),然后转换为真实字符。
Windows API的MapVirtualKeyEx()
功能允许您在扫描代码,虚拟键和字符之间进行转换。它也应该能够告诉你密钥是否不存在。
与GetKeyboardLayout()
一起告诉你哪个keybaord在任何时间点都处于活动状态(键盘布局对于不同的运行应用程序可能不同),它应该允许你构建一个非常精确的键盘图。
keyboard input section of the MSDN
我将补充说,所有键盘的布局几乎相同。虽然无法知道密钥的物理位置,但您可以从扫描代码和自己键盘的基本知识中猜出。
答案 1 :(得分:2)
键盘无法告诉Windows其物理布局是什么样的机制。使用Windows版本的屏幕键盘osk.exe很容易看到。它似乎能够猜测机器的形状因子(笔记本电脑与台式机),但在我的笔记本电脑上它与键盘的布局不匹配。
使用osk.exe布局作为模板,这样任何人都不会抱怨你的不匹配。