C# 带OEM键的WPF键手势

C# 带OEM键的WPF键手势,c#,wpf,input,C#,Wpf,Input,OEM键取决于键盘,没关系。我试图实现的是VisualStudio为一些快捷方式所做的工作 要关注SolutionExplorer,我的快捷键是CTRL+ç(我使用的是巴西键盘) 因此,我用Key.Oem1创建了一个keypostation,快捷方式工作正常,但是WPF在InputGestureText中显示CTRL+Oem1。我想显示绑定到Oem1键的实际字符 var gesture = new KeyGesture(Key.Oem1, ModifierKeys.Control); var t

OEM键取决于键盘,没关系。我试图实现的是VisualStudio为一些快捷方式所做的工作

要关注SolutionExplorer,我的快捷键是CTRL+ç(我使用的是巴西键盘)

因此,我用
Key.Oem1
创建了一个
keypostation
,快捷方式工作正常,但是WPF在
InputGestureText
中显示CTRL+Oem1。我想显示绑定到Oem1键的实际字符

var gesture = new KeyGesture(Key.Oem1, ModifierKeys.Control);
var text = gesture.GetDisplayStringForCulture(new CultureInfo("pt-BR"));
//'text' is CTRL+Oem1 and should be CTRL+ç

我怎样才能得到真实的角色?我确实找到了,但它使用WinForm键枚举。

只需使用使用WinForm键枚举的代码段中的代码即可。它只是使用这些值与修改器键状态进行比较,而您并不关心这些布尔值输出。所以,把代码撕掉,你就不需要WinForm引用了。不过,这个代码片段假设输入了一个虚拟键代码。keyspirate会给你这个吗?
WinAPI.ToUnicode((uint)键,0,keyboardState,buf,256,0)WinForms密钥枚举值与WPF密钥枚举值不同。我从来没有说过它们不是。该函数将虚拟密钥代码作为uint,而不是WinForm枚举类型。因此,只需使用KeyInterop类转换WPF密钥->虚拟密钥代码: