从OnKeyDown覆盖,您可以编程方式确定将从其相应的e.Key值显示的字符(如果有)?

时间:2012-10-24 22:06:44

标签: wpf keyboard keyboard-shortcuts keycode onkeydown

OnKeyDown覆盖的不同计算机上,e.Key值不一定一致。例如,在我的Mac上,在Boot Camp下运行Win7-64时,反斜杠键报告为Key.OemQuote而不是Key.OemBackslash正如人们所期望的那样,考虑到甚至不在同一个键上,这没有任何意义。在一位同事的戴尔身上,它完全被报道为其他东西。

但是,在这两种情况下,键入时文本框中都会显示正确的反斜杠字符,因此操作系统显然知道该键与该字符串绑定的字符。

我们试图确定,如果给定特定系统上的键码,您是否可以获得该键所代表的相应字符(假设没有按下修饰符)。

注意:我已经知道OnPreviewTextInputOnTextInput事件处理的是输入的字符,但不是我要问的是什么。

特别询问一个以KeyCode作为参数的函数,如果要按下该键,则返回屏幕上显示的字符。

例如,在我的机器上,该函数将采用Key.OemQuote并返回反斜杠字符。传入Key.Control将返回null(因为单独按下Control时实际上没有任何内容。)

注意:我提出了另一个关于处理可能与此问题类似的不同密钥代码的问题,但这是一个非常具体的单独问题,涉及一个带有这样的代码并返回一个字符的函数,所以请不要将其标记为副本。事实并非如此。

1 个答案:

答案 0 :(得分:0)

我认为this thread中的答案适用。

同时查看MapVirtualKey PInvoke