键盘过滤器驱动程序。扫码-> VK_??? (OEM 特定)
Keyboard Filter Driver. Scan Code -> VK_??? (OEM Specific)
前言(虚构的。所以有人不会问'你想做什么?):
我有一个 Win32 C++ 应用程序。
此应用程序想知道用户何时想通过 Ctrl+Esc 打开开始菜单
当然,Ctrl+Esc 是从操作系统触发的,因此应用程序永远看不到它。
我看过Windows Virtual Keys。
我看到有很多 OEM 特定的 VK
(0x92-0x96,0xE0,0xE9-0xF5,..)
所以我的想法是:
键盘过滤器驱动程序。
当我的应用程序获得焦点时,它会告诉键盘过滤器驱动程序。
当我的驱动程序看到 Ctrl 已关闭并且 Esc 已关闭时(并且我的应用程序具有焦点):
-- 吞下 Esc 并将其替换为将生成 VK_0x92(特定于 OEM)的扫描码。
因为我吞下了Esc,操作系统再也看不到Ctr+Esc
然后我的应用程序将看到 VK_0x92 并知道用户想要打开开始菜单并执行一些操作。
我的问题是我如何 'muck' 我的驱动程序中的输入 (KEYBOARD_INPUT_DATA) 才能发表意见
VK_0x92 出现在我的应用程序中?
提前感谢您的指点。
一切都与键盘布局有关。
Microsoft Keyboard Layout Creator (MKLC) 不支持我需要做的事情。
参见:Keyboard Layout Samples.
我发现示例非常古老且难以通读。显然美国和德国键盘样本不是最新的。
我编写了一个程序,通过指向特定布局(例如 KBDUS.dll)来为键盘布局创建 Visual Studio 项目。我生成源代码 .vxcproj,...然后我进行修改并构建它。
安装布局完全是另一回事。我在多个地方要求 Microsoft 发布 MKLC 生成的 .MSI 中包含的 CustomAction Dll 的源代码,但无济于事。
前言(虚构的。所以有人不会问'你想做什么?): 我有一个 Win32 C++ 应用程序。 此应用程序想知道用户何时想通过 Ctrl+Esc 打开开始菜单 当然,Ctrl+Esc 是从操作系统触发的,因此应用程序永远看不到它。
我看过Windows Virtual Keys。 我看到有很多 OEM 特定的 VK (0x92-0x96,0xE0,0xE9-0xF5,..)
所以我的想法是:
键盘过滤器驱动程序。 当我的应用程序获得焦点时,它会告诉键盘过滤器驱动程序。 当我的驱动程序看到 Ctrl 已关闭并且 Esc 已关闭时(并且我的应用程序具有焦点): -- 吞下 Esc 并将其替换为将生成 VK_0x92(特定于 OEM)的扫描码。
因为我吞下了Esc,操作系统再也看不到Ctr+Esc
然后我的应用程序将看到 VK_0x92 并知道用户想要打开开始菜单并执行一些操作。
我的问题是我如何 'muck' 我的驱动程序中的输入 (KEYBOARD_INPUT_DATA) 才能发表意见 VK_0x92 出现在我的应用程序中?
提前感谢您的指点。
一切都与键盘布局有关。 Microsoft Keyboard Layout Creator (MKLC) 不支持我需要做的事情。 参见:Keyboard Layout Samples.
我发现示例非常古老且难以通读。显然美国和德国键盘样本不是最新的。
我编写了一个程序,通过指向特定布局(例如 KBDUS.dll)来为键盘布局创建 Visual Studio 项目。我生成源代码 .vxcproj,...然后我进行修改并构建它。
安装布局完全是另一回事。我在多个地方要求 Microsoft 发布 MKLC 生成的 .MSI 中包含的 CustomAction Dll 的源代码,但无济于事。