2009-02-24 403 views
19

一位朋友在计算如何将“Ctrl + +”分配为ToolStripMenuItem的快捷键时遇到了困难。我指出Keys.OemPlus键可以工作,并且快捷键的显示字符串需要设置,但Keys枚举使我困惑。什么是System.Windows.Forms.Keys枚举中的“OEM”键?

这些“OEM”键的处理方式是什么?我已经做了一些搜索,看起来好像是因为密钥只在Win2k或更高版本中被支持,但是这看起来很荒谬,因为我确定人们在Win2k之前几十年一直使用加号密钥。为什么没有“OemEquals”? Keys枚举中是否还有其他键完全没有?

我主要在寻找答案,为什么这些特殊值的存在,但我很想听听其他问题的讨论。假设由于加号位于键盘上等号的顶部,使用Keys.OemPlus并检查Shift修饰键可以判断Ctrl + =是否被点击,这是否安全?是否还有其他键被省略?

注意这是不是一个WPF的问题,虽然System.Windows.Forms.KeysSystem.Windows.Input.Key枚举看起来相同(虽然Key根据框架设计指南错误命名;))

回答

25

它们是与Windows API一起引入的,它们并不特定于WPF。

首先,这些是KEY代码,而不是字符代码:它们标识键盘上的键而不是字符 - 例如, 'A'字符通常通过按住A键同时按住SHIFT键或使CAPS LOCK处于活动状态来生成。

OEM键与本地键盘不同的键。美国键盘有支架和支架的地方,德国键盘有变音器。

它们被称为“OEM”,因为原始设备制造商(键盘的)负责定义其功能。

+2

我相信各种媒体密钥也是OEM密钥。 – 2010-01-01 19:48:57

1

OEM的意思是“原始设备制造商”(或比较接近的东西)。我认为这是对WPF的一个尝试,在某种程度上是平台中立的。这只是一个意见。