2016-03-02 35 views
1

我很困惑WM_KEY*消息序列,當我按下和釋放Alt鍵鍵(這是知道的虛擬鍵碼爲VK_MENU)。 當按下右Alt鍵關鍵我得到的消息:奇怪的Windows消息序列同時按下VK_MENU(Alt鍵)

WM_KEYDOWN with wParam == 0x11 (VK_CONTROL) 
WM_KEYDOWN with wParam == 0x12 (VK_MENU) 

兩個消息一個接一個,當我釋放該鍵(右Alt鍵)我得到:

WM_KEYUP with wParam == 0x11 (VK_CONTROL) 
WM_KEYUP with wParam == 0x12 (VK_MENU) 

我寧可期待:

WM_KEYDOWN with wParam == 0x12 (VK_MENU) 
WM_KEYUP with wParam == 0x12 (VK_MENU) 

爲什麼有VK_CONTROL參與消息序列是否完全沒有被觸摸?有沒有解釋?

編輯:有人將此標記爲Why do I get two messages on Alt being pressed?的副本。是的,我同意這是一個重複,但不知何故,當我試圖尋找答案給予關鍵字如VK_CONTROL,VK_MENU,WM_KEYDOWN,Alt等,我找不到任何有用的東西。也不是每個鍵盤上的權利Alt被標記爲AltGr取決於位置(只有OS鍵盤設置很重要),所以它也是一個關鍵字,你可能有問題想弄清楚尋找。所以我認爲以其他方式解釋是很好的。

+5

你是波蘭人,波蘭的標準鍵盤佈局有一個AltGr鍵。位於其他鍵盤具有右Alt鍵的位置。 [閱讀本文](https://en.wikipedia.org/wiki/AltGr_key#Control_.2B_Alt_as_a_substitute)。 –

+0

@HansPassant值得回答。 –

+1

有人波蘭人應該寫這個答案。我沒有這樣的鍵盤,所以只能猜測這是潛在的問題。 OP是一個很好的候選人。 –

回答

2

只是爲了使stackoverflow.com清除我重寫了一個答案Hans Passant誰把他的答案作爲評論。
我可以證實,一些鍵盤佈局Alt鍵(右)行爲就像推在一起Alt鍵 + Ctrl鍵。同樣在我使用的鍵盤之一Alt(右)被標記爲AltGr什麼是詳細描述here
我也可以確認將鍵盤佈局改爲例如。美國本土(非國際)導致只有那些產生事件

WM_KEYDOWN with wParam == 0x12 (VK_MENU) 
WM_KEYUP with wParam == 0x12 (VK_MENU) 

事件產生。
非常感謝Hans Passant