我遇到了一个可重现的错误,这对我来说真的没有意义。希望有人更多地了解 Windows 下键盘输入的内部结构(我使用的是 Windows 7),并可以为我指出如何解决它的正确方向。就目前而言,我真的不知道应该从哪里开始寻找。
我的应用程序使用MouseKeyboardActivityMonitor库创建了一个全局键盘挂钩。这对我来说工作得很好,但我很快收到了使用不同键盘输入语言的人的错误报告。当他们写带有重音符号的字母时,例如 ë 和 ê,它们分别显示为 ¨¨e 和 ^^e。图书馆网站上也报告了此错误,但尚未解决。
为了尝试重现该错误,我在现有的“英语(美国)”旁边设置了另一种输入语言“荷兰语(比利时)”。经过一番玩弄后,我发现了以下内容:
当安装钩子的应用程序具有焦点并且语言设置为 'English (United States)' 时,不会发生该错误。在任何其他应用程序(例如记事本)中书写并使用“Dutch (Belgium)”来书写特殊字符工作。当安装钩子的应用程序具有焦点并且语言设置为“荷兰语(比利时)”时,确实会发生该错误。
我正在寻找有关两者如何相关的任何线索。也许我需要在键盘挂钩库中引入一些额外的检查?键盘挂钩的源代码可在线获得。