gpt4 book ai didi

.net - 解释 SetWindowsHookEx/WH_KEYBOARD_LL 的正确逻辑

转载 作者:行者123 更新时间:2023-12-04 04:47:59 26 4
gpt4 key购买 nike

SetWindowsHookEx 转换消息的正确方法是什么?与 WH_KEYBOARD_LL 变成按下键的有用表示?

我知道这很可能涉及理解本地键盘的映射。 (注意:为了简单起见,我只考虑何时按下一个键,而不是何时释放它)

从广义上讲,似乎存在三种情况:

  • 按下特殊键 (Ctrl/Escape/Shift/Alt)
  • 按下标准键( A-Z0-9 等...请注意 aA 都读作 A )
  • 一些难以定义的情况,例如数字键盘和 F1-F12

  • 特殊键可以根据需要处理, System.Windows.Forms.Keys 中有一些有用的查找

    但如果我要(在英式英语键盘上)一个感叹号,它会被检测为 Shift-Down1Shift up

    由于在代码通过键盘“转换”层后,我的水平太低(我相信)无法获取代码,我很好奇我将如何正确解释它们。

    至于我为什么要这样做。它一开始是为了给我编写的媒体播放器提供方便的快捷方式,它可以在任何地方工作,甚至在游戏内部(有些游戏似乎会拦截击键并阻止它们传播到操作系统)。实际上,只要是我使用该应用程序(仅可能的用户),我实际上已经得到了足够的东西,但是我的好奇心被激起了,如果我愿意,我该如何进一步发展。

    最佳答案

    根据语言(及其死键的使用),这可能非常复杂。 ToAsciiEx适用于简单的情况,但如果涉及死键或 IME,事情很快就会变得非常复杂。

    Michael Kaplan's blog有一系列关于键盘布局和 Keyboard Layout Creator 的文章。 ,这是一个用于创建键盘布局的工具(将键映射到字符的最简单方法)。当一组击键映射到单个字符时,使用键盘布局创建器。在这些情况下,可以进行映射,但是当需要多个键来确定一个字符时,它会变得有些棘手。

    日语、中文或韩语等语言没有从击键到字符的单一映射。对于这些语言,需要输入法编辑器;这些通常使用 Text Services Framework ,这是一组广泛的 API,输入法编辑器(和其他文本服务,如手写识别和语音识别)使用它与应用程序通信以确定从击键到字符的映射。因为使用 IME 从击键到字符的映射是由代码定义的,所以低级键盘 Hook 通常根本无法执行这种映射。

    关于.net - 解释 SetWindowsHookEx/WH_KEYBOARD_LL 的正确逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17901828/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com