diff -r eede1356aa52 -r 0ba996a9b75d bluetoothengine/bthid/keyboard/src/keyboard.cpp --- a/bluetoothengine/bthid/keyboard/src/keyboard.cpp Thu Jul 15 18:50:18 2010 +0300 +++ b/bluetoothengine/bthid/keyboard/src/keyboard.cpp Thu Aug 19 10:05:41 2010 +0300 @@ -25,6 +25,7 @@ #include #include #include +#include #include "hidtranslate.h" #include "finder.h" @@ -1188,17 +1189,6 @@ TRACE_INFO( (_L("[HID]\tCHidKeyboardDriver::WindowGroupForKeyEvent: type %d, kc 0x%08x, sc 0x%08x, mod 0x%06x, rep %d]"), aType, aKeyEvent.iCode, aKeyEvent.iScanCode, aKeyEvent.iModifiers, aKeyEvent.iRepeats)); - _LIT(KBackDrop, "*EiksrvBackdrop*"); - - if (EStdKeyApplication0 == aKeyEvent.iScanCode && (EEventKeyDown == aType - || EEventKeyUp == aType)) - { - // Application key up/down events go to the Eikon server - // Use this old way for application key - TInt result = iWsSession.FindWindowGroupIdentifier(0, KBackDrop); //This was in A2.x __EIKON_SERVER_NAME - DBG(if (KErrNotFound == result) RDebug::Print(_L("[HID]\tCHidKeyboardDriver::WindowGroupForKeyEvent(): BackDropWindowGroup Name not found!"))); - return result; - } if (EKeyDevice2 == aKeyEvent.iCode && EEventKey == aType) { @@ -1379,7 +1369,33 @@ void CHidKeyboardDriver::LaunchApplicationL(TInt aAppUid) { TRACE_INFO( (_L("[HID]\tCHidKeyboardDriver::LaunchApplication: UID 0x%08x"), aAppUid)); - + + //KeyLock or phone auto lock is on, refuse to continue + if (iKeyLock.IsKeyLockEnabled()) + { + TRACE_INFO( _L("[HID]\tCHidKeyboardDriver::LaunchApplicationL() SKIPPED BECAUSE OF KEYLOCK")); + return; + } + + TInt devLockStatus( EAutolockStatusUninitialized ); + TInt err = RProperty::Get( KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, devLockStatus ); + + if (!err) + { + if ( EAutolockOff != devLockStatus && EAutolockStatusUninitialized != devLockStatus) + { + //Auto lock is on, refuse to continue + TRACE_INFO( _L("[HID]\tCHidKeyboardDriver::LaunchApplicationL() SKIPPED BECAUSE OF AUTO LOCK")); + return; + } + } + else + { + //failed to get AUTO LOCK status + TRACE_INFO( _L("[HID]\tCHidKeyboardDriver::LaunchApplicationL() SKIPPED BECAUSE OF FAILED TO GET AUTO LOCK STATUS")); + return; + } + TApaTaskList taskList(iWsSession); TUid uid = TUid::Uid(aAppUid); TApaTask task = taskList.FindApp(uid); @@ -1465,6 +1481,8 @@ // fall through case EStdKeyF8: // fall through + case EStdKeyApplication0: + // fall through case EStdKeyApplication2: // fall through case EStdKeyApplication3: @@ -1916,16 +1934,41 @@ else if (aIsKeyDown && iKeyLock.IsKeyLockEnabled()) { - TRACE_INFO((_L("[HID]\tESC >>> DISBALE KEY LOCK DOWN"))); + TInt devLockStatus( EAutolockStatusUninitialized ); + TInt err = RProperty::Get( KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, devLockStatus ); - iKeyLock.DisableKeyLock(); + if (!err) + { + if (EAutolockOff == devLockStatus || EAutolockStatusUninitialized == devLockStatus) + { + TRACE_INFO((_L("[HID]\tESC >>> AUTO LOCK IS OFF, DISBALE KEY LOCK DOWN "))); + iKeyLock.DisableKeyLock(); + ret = ETrue; + iNavKeyDown = (iNavKeyDown | EEsc); + } + else + { + TRACE_INFO((_L("[HID]\tESC >>> AUTO LOCK IS ON, DISBALE KEY LOCK DOWN SKIPPED"))); + } + } + else + { + TRACE_INFO((_L("[HID]\tESC >>> FAILED to get AUTO LOCK status, DISBALE KEY LOCK DOWN SKIPPED"))); + } - ret = ETrue; - iNavKeyDown = (iNavKeyDown | EEsc); } break; } + case EStdKeyApplication0: + { + TRACE_INFO((_L("[HID]\tAPPLICATION KEY(Alt+Tab) >>> TSW"))); + + // Dedicated Application key + scancode = EStdKeyApplication0; + isMmKey = ETrue; + break; + } case EStdKeyF8: // fall through case EStdKeyApplication2: