“OEM”键在System.Windows.Forms.Keys枚举中是什么?

24

我的朋友遇到了一个问题,他不知道如何将“Ctrl + +”设置为ToolStripMenuItem的快捷键。我指出,可以使用Keys.OemPlus键,并且需要设置快捷键的显示字符串,但是Keys枚举让我感到困惑。

这些“OEM”键是怎么回事?我做了一些搜索,似乎是因为这些键仅受Win2k或更高版本支持,但这看起来很荒谬,因为我确信人们在Win2k之前数十年就已经在使用加号键了。为什么没有“OemEquals”呢?是否还有其他完全不存在于Keys枚举中的键?

我主要想知道为什么存在这些特殊命名的值,但是我也很想听听其他问题的讨论。如果我的键盘上加号符位于等号符上方,并且使用Keys.OemPlus和检查Shift修饰键是否被按下是判断Ctrl +=是否被点击的可行方法吗?是否还有其他被省略的键?

请注意,这不是一个WPF问题,尽管System.Windows.Forms.KeysSystem.Windows.Input.Key枚举看起来相同(尽管Key根据Framework Design Guidelines的规定命名不正确;))

2个回答

32

它们是在Windows API中引入的,与WPF无关。

首先,这些是键码,而不是字符码:它们标识键盘上的一个按键,而不是字符 - 例如,“A”字符通常是通过按住SHIFT键或开启大写锁定并按下A键生成的。

OEM键是随着本地键盘而变化的键。美国键盘有方括号和花括号,德国键盘有变音符。

之所以称为“OEM”,是因为键盘的原始设备制造商负责定义其功能。


2
我认为各种媒体功能键也是OEM按键。 - Matthew Olenik
所以例如对于Oem3,即反引号```键,这是否意味着它在非美国键盘上不常见,因此它不会成为Key.BackTick,但只要我使用美国布局,它应该始终代表反引号键? - Simon_Weaver
@Simon_Weaver 是的,正确。切换布局可以有不同的键和符号表示“Oem3”。此外,软件可以读取按键上未按下 Shift 键时的符号,并将其显示为“Ctrl + ...”,以便用户知道它在键盘上代表哪个键。 - Liggliluff

-3
OEM 意思是“原始设备制造商”(或者相对接近的意思)。我认为这是 WPF 试图成为某种程度上平台中立的尝试。不过这只是我的个人看法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接