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