author | Gareth Stockwell <gareth.stockwell@accenture.com> |
Fri, 22 Oct 2010 11:38:29 +0100 | |
branch | bug235_bringup_0 |
changeset 206 | c170e304623f |
parent 0 | 5d03bc08d59c |
permissions | -rw-r--r-- |
// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" // which accompanies this distribution, and is available // at the URL "http://www.eclipse.org/legal/epl-v10.html". // // Initial Contributors: // Nokia Corporation - initial contribution. // // Contributors: // // Description: // Emulte key presses on pointer events // // #include <e32std.h> #include <e32hal.h> #include "server.h" #include "EVENT.H" TInt WsKeyboardEmulator::iCurrentKeyDown; TBool WsKeyboardEmulator::iKeyIsDown=EFalse; void WsKeyboardEmulator::RawKeyEvent(TRawEvent::TType aType) { if (aType==TRawEvent::EKeyUp) iKeyIsDown=EFalse; else iKeyIsDown=ETrue; TRawEvent rawEvent; rawEvent.Set(aType,iCurrentKeyDown); TWindowServerEvent::ProcessRawEvent(rawEvent); } TBool WsKeyboardEmulator::PointerEvent(TPointerEvent::TType aPointerEventType,const TPoint &aPoint, TDblQue<TPointerKeyList> *aKeyList) { if (iKeyIsDown && (aPointerEventType==TPointerEvent::EButton1Up)) RawKeyEvent(TRawEvent::EKeyUp); else if (!aKeyList) return(EFalse); else { TPointerKeyList *pkl=NULL; for(TDblQueIter<TPointerKeyList> iter(*aKeyList);(pkl=iter++)!=NULL;) if (pkl->iRect.Contains(aPoint)) break; if (iKeyIsDown && aPointerEventType==TPointerEvent::EDrag && (!pkl || iCurrentKeyDown!=pkl->iScanCode)) RawKeyEvent(TRawEvent::EKeyUp); else if (pkl) { if (aPointerEventType==TPointerEvent::EButton1Down || (aPointerEventType==TPointerEvent::ESwitchOn && pkl->iActivatedByPointerSwitchOn)) { if (iKeyIsDown) RawKeyEvent(TRawEvent::EKeyUp); iCurrentKeyDown=pkl->iScanCode; RawKeyEvent(TRawEvent::EKeyDown); if (aPointerEventType==TPointerEvent::ESwitchOn) RawKeyEvent(TRawEvent::EKeyUp); } } else return(EFalse); } return(ETrue); }