【问题标题】:What are the "OEM" keys in the System.Windows.Forms.Keys enumeration?System.Windows.Forms.Keys 枚举中的“OEM”键是什么?
【发布时间】:2020-05-04 02:56:44
【问题描述】:

一位朋友不知道如何将“Ctrl + +”指定为ToolStripMenuItem 的快捷键。我指出Keys.OemPlus 键可以工作并且需要设置快捷方式的显示字符串,但Keys 枚举让我感到困惑。

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

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

请注意,这不是 WPF 问题,尽管System.Windows.Forms.KeysSystem.Windows.Input.Key 枚举看起来相同(尽管根据框架设计指南Key 的名称不正确;))

【问题讨论】:

    标签: .net keyboard


    【解决方案1】:

    它们是随 Windows API 引入的,并非特定于 WPF。

    首先,这些是 KEY 代码,而不是字符代码:它们标识键盘上的键,而不是字符 - 例如“A”字符通常是通过在按住 SHIFT 键的同时按下 A 键或激活 CAPS LOCK 来生成的。

    OEM 键因本地键盘而异的键。美式键盘有括号和大括号,德式键盘有变音符号。

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

    【讨论】:

    • 我相信各种媒体密钥也是OEM密钥。
    • 所以例如 Oem3 是反勾号 ``` 关键是说它在非美国键盘上并不常见,所以它不会是 Key.BackTick 但只要因为我使用的是美国布局,所以它应该始终代表反勾键?
    • @Simon_Weaver 是的,正确。切换布局可以有不同的键和符号代表Oem3。此外,该软件可以读取键上未移位的符号并将其显示为“Ctrl + ...”,以便用户知道它在键盘上代表什么键
    【解决方案2】:

    OEM 是指“原始设备制造商”(或相对接近的名称)。我认为这是 WPF 方面的一种尝试,它在某种程度上是平台中立的。不过,这只是一种意见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-09
      • 2018-10-13
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多