From 1e689ae57a08484366cf8c4467777be33509f488 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 8 Apr 2003 20:39:47 +0000 Subject: [PATCH] Added support for key modifiers to osgProducer::EventAdapter. --- src/osgProducer/EventAdapter.cpp | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/osgProducer/EventAdapter.cpp b/src/osgProducer/EventAdapter.cpp index c425b3545..4bf6066d2 100644 --- a/src/osgProducer/EventAdapter.cpp +++ b/src/osgProducer/EventAdapter.cpp @@ -159,6 +159,35 @@ void EventAdapter::adaptKeyPress( double time, Producer::KeySymbol key) _eventType = KEYDOWN; _time = time; _key = key; + + switch(key) + { + case(KEY_Shift_L): _s_modKeyMask = MODKEY_LEFT_SHIFT | _s_modKeyMask; break; + case(KEY_Shift_R): _s_modKeyMask = MODKEY_RIGHT_SHIFT | _s_modKeyMask; break; + case(KEY_Control_L): _s_modKeyMask = MODKEY_LEFT_CTRL | _s_modKeyMask; break; + case(KEY_Control_R): _s_modKeyMask = MODKEY_RIGHT_CTRL | _s_modKeyMask; break; + case(KEY_Meta_L): _s_modKeyMask = MODKEY_LEFT_META | _s_modKeyMask; break; + case(KEY_Meta_R): _s_modKeyMask = MODKEY_RIGHT_META | _s_modKeyMask; break; + case(KEY_Alt_L): _s_modKeyMask = MODKEY_LEFT_ALT | _s_modKeyMask; break; + case(KEY_Alt_R): _s_modKeyMask = MODKEY_LEFT_ALT | _s_modKeyMask; break; + + case(KEY_Caps_Lock): + { + if ((_s_modKeyMask & MODKEY_CAPS_LOCK)!=0) + _s_modKeyMask = ~MODKEY_CAPS_LOCK & _s_modKeyMask; + else + _s_modKeyMask = MODKEY_CAPS_LOCK | _s_modKeyMask; + break; + } + case(KEY_Num_Lock): + { + if ((_s_modKeyMask & MODKEY_NUM_LOCK)!=0) + _s_modKeyMask = ~MODKEY_NUM_LOCK & _s_modKeyMask; + else + _s_modKeyMask = MODKEY_NUM_LOCK | _s_modKeyMask; + break; + } + } copyStaticVariables(); } @@ -170,6 +199,18 @@ void EventAdapter::adaptKeyRelease( double time, Producer::KeySymbol key) _time = time; _key = key; + switch(key) + { + case(KEY_Shift_L): _s_modKeyMask = ~MODKEY_LEFT_SHIFT & _s_modKeyMask; break; + case(KEY_Shift_R): _s_modKeyMask = ~MODKEY_RIGHT_SHIFT & _s_modKeyMask; break; + case(KEY_Control_L): _s_modKeyMask = ~MODKEY_LEFT_CTRL & _s_modKeyMask; break; + case(KEY_Control_R): _s_modKeyMask = ~MODKEY_RIGHT_CTRL & _s_modKeyMask; break; + case(KEY_Meta_L): _s_modKeyMask = ~MODKEY_LEFT_META & _s_modKeyMask; break; + case(KEY_Meta_R): _s_modKeyMask = ~MODKEY_RIGHT_META & _s_modKeyMask; break; + case(KEY_Alt_L): _s_modKeyMask = ~MODKEY_LEFT_ALT & _s_modKeyMask; break; + case(KEY_Alt_R): _s_modKeyMask = ~MODKEY_LEFT_ALT & _s_modKeyMask; break; + } + copyStaticVariables(); }