我使用 globalKeyboardHook 来检测某些键盘键。键盘是标准的英文 Microsoft 101 键。对于多种语言,我需要所有字母(无数字)和标点符号(句点逗号 [ ] + = _ - ' ; 和一些类似的。我不希望包含控制字符。
为了过滤我需要的键,我使用 char.Isletter || char.is 标点符号。令我惊讶的是,我发现使用keyboardGlobalHook 时,char.IsPunctuation不会返回标准标点符号(句点、逗号等)。似乎返回的 keyCodes 和 keyValues 与钩子不同。在没有钩子的简单测试程序中运行相同的 char.isPunctuation 时,它会返回正确的 (?) 标点符号列表,如下所示:
39 ''':
40 '(':
41 ')':
42 '*':
44 ',':
45 '-':
46 '.':
47 '/':
58 ':':
59 ';':
63 '?':
64 '@':
91 '[':
92 '\':
93 ']':
95 '_':
123 '{':
125 '}':
161 '¡':
171 '«':
173 '-':
183 '·':
187 '»':
191 '¿':
如何使用内置的 char.Is... 过滤器仅过滤我需要的键?(我自然可以列出我需要的所有键,但为此我需要运行全局钩子并按下每个键以确定返回的代码)。