为什么反斜杠键在WPF下被报告为OemQuote?

为什么反斜杠键在WPF下被报告为OemQuote?,wpf,keyboard,key,keyboard-shortcuts,Wpf,Keyboard,Key,Keyboard Shortcuts,在我们的WPF应用程序中,我们想知道为什么我们的CTRL反斜杠键盘快捷键没有启动。编写了一个快速测试应用程序来记录按下的键,并且在OnKeyDown覆盖中,e.key被报告为OemQuote而不是OemBackslash 更糟糕的是,在其他人的机器上(也有美国键盘和美国布局,但制造商不同),他们得到的e.Key值完全不同 是的,我知道这就是“Oem”的意思,但难道所有的Oem不应该知道反斜杠是什么,并始终如一地对待它吗 如果没有,在哪种情况下,您应该如何为不同机器的键盘快捷键分配反斜杠 现在我知

在我们的WPF应用程序中,我们想知道为什么我们的
CTRL反斜杠
键盘快捷键没有启动。编写了一个快速测试应用程序来记录按下的键,并且在
OnKeyDown
覆盖中,
e.key
被报告为
OemQuote
而不是
OemBackslash

更糟糕的是,在其他人的机器上(也有美国键盘和美国布局,但制造商不同),他们得到的
e.Key
值完全不同

是的,我知道这就是“Oem”的意思,但难道所有的Oem不应该知道反斜杠是什么,并始终如一地对待它吗

如果没有,在哪种情况下,您应该如何为不同机器的键盘快捷键分配
反斜杠

现在我知道操作系统知道它是反斜杠,因为在两台机器上,正确的值都被输入到文本框中,所以很明显操作系统(通过我假设的驱动程序)知道它映射到什么,但我不能相信我不能基于反斜杠创建快捷方式,并期望它在不同的机器和配置上可靠地工作


这对我来说太疯狂了!救命

Oem5是正常的虚拟密钥代码0xdc。在你的问题中没有暗示为什么你的键盘不是这样。按键在键盘上的物理位置变化很大,这使得它通常不是快捷键的好选择。千万不要假设虚拟键与键入键或键本身的标题匹配,但你必须稍微假设一下。毕竟,这是键盘快捷键必须使用的代码,因为它们是基于键的,而不是基于字符的,即使对于用户来说,快捷键是基于字符的,而不是基于键的。你不是说CTRL-0xDC,而是说CTRL退格。如果这并不总是映射到OemBackspace,那么他们就不应该给它起这样的名字,因为它会误导人。首先为什么要命名它?无论如何,我认为我的解决方案将是查找哪个键由退格表示,pinvoking win32api,然后在InitCommands语句中手动映射它。这可能有用。不,你不能说Ctrl+反斜杠。您的日本客户必须按Ctrl+Yen。你在和25年来打字机布局和文化的演变作斗争。你见过打字机吗?顺便说一句,你为什么一直在谈论退格?你刚刚证明了我的观点。如果是日元,那么它就不应该被称为反斜杠,如果你是根据你必须告诉用户的内容来设置键盘快捷键,那么他们就不应该使用按键代码,而应该使用字符。退格显然是一个打字错误。@Aybe-嗯,“没人”是一个很强的称呼,我每天都用键盘,键盘上还有键。它是旧的。他不容易被说服,是吗:)