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
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-01-23 07:58:04 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-01-23 07:58:04 +0400
commit3b71cab420c642df30d9f9addee166444ce5b85b (patch)
tree50b3a4dfc9fcbb9473e65d5ab7d78b67c38c423c /source/gameengine/BlenderRoutines
parentc02c2dfdd911fd1c92236e810f26da13f79cf8a5 (diff)
Fix T38110: GameEngine keyboard sensor ignores unicode characters
Diffstat (limited to 'source/gameengine/BlenderRoutines')
-rw-r--r--source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp9
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderInputDevice.h2
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.cpp3
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.h2
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp2
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.h2
6 files changed, 11 insertions, 9 deletions
diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
index 2b1c8a10cce..d136131e82f 100644
--- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
+++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
@@ -151,8 +151,9 @@ static int BL_KetsjiNextFrame(KX_KetsjiEngine *ketsjiengine, bContext *C, wmWind
while (wmEvent *event= (wmEvent *)win->queue.first) {
short val = 0;
//unsigned short event = 0; //XXX extern_qread(&val);
+ unsigned int unicode = event->utf8_buf[0] ? BLI_str_utf8_as_unicode(event->utf8_buf) : event->ascii;
- if (keyboarddevice->ConvertBlenderEvent(event->type,event->val))
+ if (keyboarddevice->ConvertBlenderEvent(event->type, event->val, unicode))
exitrequested = KX_EXIT_REQUEST_BLENDER_ESC;
/* Coordinate conversion... where
@@ -161,13 +162,13 @@ static int BL_KetsjiNextFrame(KX_KetsjiEngine *ketsjiengine, bContext *C, wmWind
if (event->type == MOUSEMOVE) {
/* Note, not nice! XXX 2.5 event hack */
val = event->x - ar->winrct.xmin;
- mousedevice->ConvertBlenderEvent(MOUSEX, val);
+ mousedevice->ConvertBlenderEvent(MOUSEX, val, 0);
val = ar->winy - (event->y - ar->winrct.ymin) - 1;
- mousedevice->ConvertBlenderEvent(MOUSEY, val);
+ mousedevice->ConvertBlenderEvent(MOUSEY, val, 0);
}
else {
- mousedevice->ConvertBlenderEvent(event->type,event->val);
+ mousedevice->ConvertBlenderEvent(event->type, event->val, 0);
}
BLI_remlink(&win->queue, event);
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderInputDevice.h b/source/gameengine/BlenderRoutines/KX_BlenderInputDevice.h
index 0ce479cad6f..a936f328545 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderInputDevice.h
+++ b/source/gameengine/BlenderRoutines/KX_BlenderInputDevice.h
@@ -69,7 +69,7 @@ public:
virtual bool IsPressed(SCA_IInputDevice::KX_EnumInputs inputcode)=0;
// virtual const SCA_InputEvent& GetEventValue(SCA_IInputDevice::KX_EnumInputs inputcode)=0;
- virtual bool ConvertBlenderEvent(unsigned short incode,short val)=0;
+ virtual bool ConvertBlenderEvent(unsigned short incode, short val, unsigned int unicode)=0;
#ifdef WITH_CXX_GUARDEDALLOC
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.cpp b/source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.cpp
index 5917ce40440..ea78d2d389e 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.cpp
@@ -91,7 +91,7 @@ void KX_BlenderKeyboardDevice::NextFrame()
* ConvertBlenderEvent translates blender keyboard events into ketsji kbd events
* extra event information is stored, like ramp-mode (just released/pressed)
*/
-bool KX_BlenderKeyboardDevice::ConvertBlenderEvent(unsigned short incode, short val)
+bool KX_BlenderKeyboardDevice::ConvertBlenderEvent(unsigned short incode, short val, unsigned int unicode)
{
bool result = false;
@@ -112,6 +112,7 @@ bool KX_BlenderKeyboardDevice::ConvertBlenderEvent(unsigned short incode, short
// todo: convert val ??
m_eventStatusTables[m_currentTable][kxevent].m_eventval = val ; //???
+ m_eventStatusTables[m_currentTable][kxevent].m_unicode = unicode;
switch (m_eventStatusTables[previousTable][kxevent].m_status)
{
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.h b/source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.h
index dec70203ecb..10a5b00937d 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.h
+++ b/source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.h
@@ -47,7 +47,7 @@ public:
virtual bool IsPressed(SCA_IInputDevice::KX_EnumInputs inputcode);
// virtual const SCA_InputEvent& GetEventValue(SCA_IInputDevice::KX_EnumInputs inputcode);
- virtual bool ConvertBlenderEvent(unsigned short incode,short val);
+ virtual bool ConvertBlenderEvent(unsigned short incode, short val, unsigned int unicode);
virtual void NextFrame();
virtual void HookEscape();
private:
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp b/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp
index 0cdc10264a5..9df06e83b92 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.cpp
@@ -108,7 +108,7 @@ void KX_BlenderMouseDevice::NextFrame()
* ConvertBlenderEvent translates blender mouse events into ketsji kbd events
* extra event information is stored, like ramp-mode (just released/pressed)
*/
-bool KX_BlenderMouseDevice::ConvertBlenderEvent(unsigned short incode, short val)
+bool KX_BlenderMouseDevice::ConvertBlenderEvent(unsigned short incode, short val, unsigned int unicode)
{
bool result = false;
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.h b/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.h
index 8746da83a81..04b78aff05c 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.h
+++ b/source/gameengine/BlenderRoutines/KX_BlenderMouseDevice.h
@@ -46,7 +46,7 @@ public:
virtual bool IsPressed(SCA_IInputDevice::KX_EnumInputs inputcode);
// virtual const SCA_InputEvent& GetEventValue(SCA_IInputDevice::KX_EnumInputs inputcode);
- virtual bool ConvertBlenderEvent(unsigned short incode,short val);
+ virtual bool ConvertBlenderEvent(unsigned short incode, short val, unsigned int unicode);
virtual void NextFrame();