Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-02-06 02:13:10 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-02-06 02:13:10 +0400
commit3937ec7d11996438c2c6bd65d1d88f72431b1d52 (patch)
treee0a2104d51f1a44de88047a0e9d17d8492b343b1 /intern
parent11d5a2d2eba127e2f8502e570addb08c22cbb9c1 (diff)
parent8f3170a17c270dd8a02f9b3bf2a971a65cab67ae (diff)
svn merge ^/trunk/blender -r43887:43918
Diffstat (limited to 'intern')
-rw-r--r--intern/ghost/intern/GHOST_SystemWin32.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp
index 9cae2c27e65..98c4785797d 100644
--- a/intern/ghost/intern/GHOST_SystemWin32.cpp
+++ b/intern/ghost/intern/GHOST_SystemWin32.cpp
@@ -717,10 +717,11 @@ GHOST_EventKey* GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, RAWINP
if (key != GHOST_kKeyUnknown) {
char utf8_char[6] = {0} ;
+ char ascii = 0;
wchar_t utf16[2]={0};
- BYTE state[256];
- GetKeyboardState((PBYTE)state);
+ BYTE state[256] ={0};
+ GetKeyboardState(state);
if(ToUnicodeEx(vk, 0, state, utf16, 2, 0, system->m_keylayout))
WideCharToMultiByte(CP_UTF8, 0,
@@ -728,9 +729,14 @@ GHOST_EventKey* GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, RAWINP
(LPSTR) utf8_char, 5,
NULL,NULL); else *utf8_char = 0;
- if(!keyDown) utf8_char[0] = '\0';
- event = new GHOST_EventKey(system->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, (*utf8_char & 0x80)?'?':*utf8_char, utf8_char);
+
+ if(!keyDown) {utf8_char[0] = '\0'; ascii='\0';}
+ else ascii = utf8_char[0]& 0x80?'?':utf8_char[0];
+
+ if(0x80&state[VK_MENU]) utf8_char[0]='\0';
+
+ event = new GHOST_EventKey(system->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, ascii, utf8_char);
#ifdef GHOST_DEBUG
std::cout << ascii << std::endl;