将消息从SetWindowsHookEx
withWH_KEYBOARD_LL
转换为有用的按键表示的正确方法是什么?
我知道这很可能涉及理解本地键盘的映射。(注意:为了简单起见,我只考虑何时按下一个键,而不是何时释放它)
从广义上讲,似乎存在三种情况:
- 按下特殊键(Ctrl/Escape/Shift/Alt)
- 按下标准键(
A-Z
,0-9
等...请注意,a
两者A
都读作A
) - 一些难以定义的情况,如数字键盘和F1-F12
可以根据需要处理特殊键,并且有一些有用的查找System.Windows.Forms.Keys
但是如果我要(在英式英语键盘上)一个感叹号,它会被检测为Shift-Down1Shift up
由于在代码通过键盘“转换”层后,我的水平太低(我相信)无法获取代码,我很好奇我将如何正确解释它们。
至于我为什么要这样做。它一开始是为了给我编写的媒体播放器提供方便的快捷方式,它可以在任何地方工作,甚至在游戏内部(有些游戏似乎会拦截击键并阻止它们传播到操作系统)。实际上,只要是我使用该应用程序(仅限可能的用户),我实际上已经得到了足够的东西,但我的好奇心被激起了,如果我愿意,我该如何进一步发展。