plugins/consoles/win32cons/src/keymappings.cpp
author Tom Sutcliffe <thomas.sutcliffe@accenture.com>
Sun, 17 Oct 2010 18:43:12 +0100
changeset 86 849a0b46c767
parent 0 7f656887cf89
permissions -rw-r--r--
Fixed lots of issues with installing a low-caps version of fshell from SIS file. * Fixed issue in CCommandFactory whereby some APIs like GetCommandInfoL could trigger allocations on the wrong heap or signals to the wrong thread. The symptoms were often seen as a crash in the which_00 thread when running ciftest. * Lots of build fixes for when FSHELL_PROTECTED_UIDS isn't defined and when all capabilities aren't available. * Added new platform.mmh macro FSHELL_OPEN_SIGNED. * Open signing of fshell SIS files is now supported for production S60 handsets. Build fshell with the FSHELL_OPEN_SIGNED macro defined (and without defining FSHELL_CAP_ALL or FSHELL_PROTECTED_UIDS) in your platform.mmh and submit \epoc32\fshell\fshell.unsigned.sis to https://www.symbiansigned.com/app/page/public/openSignedOnline.do . The following commands are not available when using Open Signing due to Platform Security restrictions: fdb; kerninfo; chunkinfo; svrinfo; objinfo; sudo; fsck; localdrive; ramdefrag; readmem; reboot; setcritical; setpriority. Others such as chkdeps, e32header, ps, and fshell itself will run but in a restricted capacity (for example, fshell will no longer allow you to modify files in the \sys\bin directory). * Removed commands objinfo, svrinfo, chunkinfo, readmem, fsck completely when memory access isn't present - previously they would still appear in the help but would give an error if you tried to run them.

// keymappings.cpp
// 
// Copyright (c) 2010 Accenture. All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the "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:
// Accenture - Initial contribution
//


#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <e32keys.h>
#include <e32def.h>
#include "keymappings.h"


static const TKeyMapping KKeyMapping[] =
	{
	{ VK_ESCAPE, EKeyEscape },
	{ VK_LEFT, EKeyLeftArrow },
	{ VK_UP, EKeyUpArrow },
	{ VK_RIGHT, EKeyRightArrow },
	{ VK_DOWN, EKeyDownArrow },
	{ VK_HOME, EKeyHome },
	{ VK_END, EKeyEnd },
	{ VK_PRIOR, EKeyPageUp },
	{ VK_NEXT, EKeyPageDown },
	{ VK_PAUSE, EKeyPause },
	{ VK_PRINT, EKeyPrintScreen },
	{ VK_INSERT, EKeyInsert },
	{ VK_DELETE, EKeyDelete },
	{ VK_CAPITAL, EKeyCapsLock },
	{ VK_NUMLOCK, EKeyNumLock },
	{ VK_SCROLL, EKeyScrollLock },
	{ VK_F1, EKeyF1 },
	{ VK_F2, EKeyF2 },
	{ VK_F3, EKeyF3 },
	{ VK_F4, EKeyF4 },
	{ VK_F5, EKeyF5 },
	{ VK_F6, EKeyF6 },
	{ VK_F7, EKeyF7 },
	{ VK_F8, EKeyF8 },
	{ VK_F9, EKeyF9 },
	{ VK_F10, EKeyF10 },
	{ VK_F11, EKeyF11 },
	{ VK_F12, EKeyF12 },
	{ VK_F13, EKeyF13 },
	{ VK_F14, EKeyF14 },
	{ VK_F15, EKeyF15 },
	{ VK_F16, EKeyF16 },
	{ VK_F17, EKeyF17 },
	{ VK_F18, EKeyF18 },
	{ VK_F19, EKeyF19 },
	{ VK_F20, EKeyF20 },
	{ VK_F21, EKeyF21 },
	{ VK_F22, EKeyF22 },
	{ VK_F23, EKeyF23 },
	{ VK_F24, EKeyF24 },
	};
	
TKeyCode GetSymbianKeyCode(int aWindowsKeyCode)
	{
	for (int i=0; i<sizeof(KKeyMapping) / sizeof(TKeyMapping); ++i)
		{
		if (KKeyMapping[i].iWindowsKey == aWindowsKeyCode) return KKeyMapping[i].iSymbianKey;
		}
	return EKeyNull;
	}
	
TUint GetSymbianModifiers(TUint aWindowsModifiers)
	{
	TUint32 symMod = 0;
	if (aWindowsModifiers & CAPSLOCK_ON) symMod |= EModifierCapsLock;
	if (aWindowsModifiers & LEFT_ALT_PRESSED) symMod |= EModifierLeftAlt | EModifierAlt;
	if (aWindowsModifiers & LEFT_CTRL_PRESSED) symMod |= EModifierLeftCtrl | EModifierCtrl;
	if (aWindowsModifiers & NUMLOCK_ON) symMod |= EModifierNumLock;
	if (aWindowsModifiers & RIGHT_ALT_PRESSED) symMod |= EModifierRightAlt | EModifierAlt;
	if (aWindowsModifiers & RIGHT_CTRL_PRESSED) symMod |= EModifierLeftAlt | EModifierCtrl;
	if (aWindowsModifiers & SCROLLLOCK_ON) symMod |= EModifierScrollLock;
	if (aWindowsModifiers & SHIFT_PRESSED) symMod |= EModifierShift;
	return symMod;	
	}