2009-02-24 129 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的一個嘗試,在某種程度上是平臺中立的。這只是一個意見。