summaryrefslogtreecommitdiff
path: root/indra/llwindow/llkeyboardheadless.cpp
diff options
context:
space:
mode:
authorLogan Dethrow <log@lindenlab.com>2011-06-01 17:05:38 -0400
committerLogan Dethrow <log@lindenlab.com>2011-06-01 17:05:38 -0400
commit2662c4b679f0eb2745619dc4fd1dd79af65126f0 (patch)
treef27ba8675353676d91327fc606b005f0096b2fb9 /indra/llwindow/llkeyboardheadless.cpp
parent4b97f03b04e7df25e5b3622122f6d124d4a5f617 (diff)
parent2002a39e4db5ba96f4a0a7653f76a3cd55846a31 (diff)
Merge. Pulling fix for VWR-25862 into bigger cache tree.
Diffstat (limited to 'indra/llwindow/llkeyboardheadless.cpp')
-rw-r--r--indra/llwindow/llkeyboardheadless.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/indra/llwindow/llkeyboardheadless.cpp b/indra/llwindow/llkeyboardheadless.cpp
index 4dfaaed4e1..c87617c9ff 100644
--- a/indra/llwindow/llkeyboardheadless.cpp
+++ b/indra/llwindow/llkeyboardheadless.cpp
@@ -46,5 +46,28 @@ MASK LLKeyboardHeadless::currentMask(BOOL for_mouse_event)
{ return MASK_NONE; }
void LLKeyboardHeadless::scanKeyboard()
-{ }
+{
+ for (S32 key = 0; key < KEY_COUNT; key++)
+ {
+ // Generate callback if any event has occurred on this key this frame.
+ // Can't just test mKeyLevel, because this could be a slow frame and
+ // key might have gone down then up. JC
+ if (mKeyLevel[key] || mKeyDown[key] || mKeyUp[key])
+ {
+ mCurScanKey = key;
+ mCallbacks->handleScanKey(key, mKeyDown[key], mKeyUp[key], mKeyLevel[key]);
+ }
+ }
+
+ // Reset edges for next frame
+ for (S32 key = 0; key < KEY_COUNT; key++)
+ {
+ mKeyUp[key] = FALSE;
+ mKeyDown[key] = FALSE;
+ if (mKeyLevel[key])
+ {
+ mKeyLevelFrameCount[key]++;
+ }
+ }
+}