通过 InputSimulator C# 转发一系列扫描码

Forwarding a sequence of scancodes via InputSimulator C#

我在扫描码以及如何将它们转换为虚拟键码和 ASCII 方面遇到了挑战。

我正在使用 Interception/Oblita 库检索来自条形码扫描仪的所有扫描码。 常规笔画击键,如 "A"“!”而不是通过 InputSimulator 库转发的问题 (Link: https://www.nuget.org/packages/InputSimulator/)

尝试使用丹麦语键盘布局转发 ¨ 或 ` 等特殊字符时出现问题。

我在输入 ¨ (Keydown) 时收到这些扫描码

56 82 79 77 72

应该对应L-Alt + 0168 但是当转换为虚拟键时,我得到了这个结果:L-ALT + INSERT + END + RIGHT + UP

我使用来自 user32 dll 的 MapVirtualKey 映射键,扫描码和 maptype = 1 (MAPVK_VSC_TO_VK)

如何才能正确映射它们以便获得 Alt 组合键?是因为我需要使用另一种 p-invoke 方法进行映射吗?

经过长时间的反复试验,我似乎解决了这个问题。 在拦截库中有一个 "Send" 方法,用于转发捕获的击键 - 我不知道为什么我以前没有使用过这个方法,因为它解决了转换问题。