如何确定PHYSICAL键?

时间:2011-02-14 15:37:42

标签: vb.net

我想挂钩键盘并在按下特定物理键时进行一些操作(在vb.net中)。

我在网上找到了几个优秀的键盘钩子dll,但是有一个问题:钩子dll找到按键的键码,而不是按下什么物理键。

所以,例如,在美国键盘上,如果我按下Right-Shif键左侧的键,我会看到e.keycode:191(OemQuestion),在意大利语键盘中,我看到e.keycode 189( OemMinus)。

这意味着如果我将代码“189”放入My.Settings中,意大利用户可以看到必须按下我想要的键,美国用户看到另一个键按下以执行相同的操作,因为它在键盘上OemMinus键不在Right-Shift键的左侧。

现在的问题是:如何明确地确定键盘键?我必须在My.Settings中放入什么来确定特定的物理键,对于所有键盘语言都是如此?

2 个答案:

答案 0 :(得分:0)

我不认为你应该用所谓的“物理”键来实现它。基本上你必须知道从keycode到存在的每个keyboard layout的“物理”键的映射,包括自定义键盘布局(你不知道)。

因此我建议你喜欢其他人;使用键码(例如键盘上的符号)而不是键盘上的键位置(你称之为“物理键”)。

答案 1 :(得分:0)

我想你需要亲自插入键盘的按键开关才能执行此操作。我记得,键盘只发送键码,这些键码可能与电路板上的按键开关的物理位置有任何相似之处。例如,参见The Old New Thing的this post