| 
							- //-----------------------------------------------------------------------------
 - // Project     : SDK Core
 - //
 - // Category    : SDK Core Interfaces
 - // Filename    : pluginterfaces/base/keycodes.h
 - // Created by  : Steinberg, 01/2004
 - // Description : Key Code Definitions
 - //
 - //-----------------------------------------------------------------------------
 - // This file is part of a Steinberg SDK. It is subject to the license terms
 - // in the LICENSE file found in the top-level directory of this distribution
 - // and at www.steinberg.net/sdklicenses. 
 - // No part of the SDK, including this file, may be copied, modified, propagated,
 - // or distributed except according to the terms contained in the LICENSE file.
 - //-----------------------------------------------------------------------------
 - 
 - #pragma once
 - 
 - #include "pluginterfaces/base/ftypes.h"
 - 
 - namespace Steinberg {
 - //------------------------------------------------------------------------------
 - /** Virtual Key Codes.
 - OS-independent enumeration of virtual keycodes.
 - */
 - //------------------------------------------------------------------------------
 - enum VirtualKeyCodes
 - {
 - 	KEY_BACK = 1,
 - 	KEY_TAB,
 - 	KEY_CLEAR,
 - 	KEY_RETURN,
 - 	KEY_PAUSE,
 - 	KEY_ESCAPE,
 - 	KEY_SPACE,
 - 	KEY_NEXT,
 - 	KEY_END,
 - 	KEY_HOME,
 - 
 - 	KEY_LEFT,
 - 	KEY_UP,
 - 	KEY_RIGHT,
 - 	KEY_DOWN,
 - 	KEY_PAGEUP,
 - 	KEY_PAGEDOWN,
 - 
 - 	KEY_SELECT,
 - 	KEY_PRINT,
 - 	KEY_ENTER,
 - 	KEY_SNAPSHOT,
 - 	KEY_INSERT,
 - 	KEY_DELETE,
 - 	KEY_HELP,
 - 	KEY_NUMPAD0,
 - 	KEY_NUMPAD1,
 - 	KEY_NUMPAD2,
 - 	KEY_NUMPAD3,
 - 	KEY_NUMPAD4,
 - 	KEY_NUMPAD5,
 - 	KEY_NUMPAD6,
 - 	KEY_NUMPAD7,
 - 	KEY_NUMPAD8,
 - 	KEY_NUMPAD9,
 - 	KEY_MULTIPLY,
 - 	KEY_ADD,
 - 	KEY_SEPARATOR,
 - 	KEY_SUBTRACT,
 - 	KEY_DECIMAL,
 - 	KEY_DIVIDE,
 - 	KEY_F1,
 - 	KEY_F2,
 - 	KEY_F3,
 - 	KEY_F4,
 - 	KEY_F5,
 - 	KEY_F6,
 - 	KEY_F7,
 - 	KEY_F8,
 - 	KEY_F9,
 - 	KEY_F10,
 - 	KEY_F11,
 - 	KEY_F12,
 - 	KEY_NUMLOCK,
 - 	KEY_SCROLL,
 - 
 - 	KEY_SHIFT,
 - 	KEY_CONTROL,
 - 	KEY_ALT,
 - 
 - 	KEY_EQUALS,				// only occurs on a Mac
 - 	KEY_CONTEXTMENU,		// Windows only
 - 
 - 	// multimedia keys
 - 	KEY_MEDIA_PLAY,
 - 	KEY_MEDIA_STOP,
 - 	KEY_MEDIA_PREV,
 - 	KEY_MEDIA_NEXT,
 - 	KEY_VOLUME_UP,
 - 	KEY_VOLUME_DOWN,
 - 
 - 	KEY_F13,
 - 	KEY_F14,
 - 	KEY_F15,
 - 	KEY_F16,
 - 	KEY_F17,
 - 	KEY_F18,
 - 	KEY_F19,
 - 
 - 	VKEY_FIRST_CODE = KEY_BACK,
 - 	VKEY_LAST_CODE = KEY_F19,
 - 
 - 	VKEY_FIRST_ASCII = 128
 - 	/*
 - 	 KEY_0 - KEY_9 are the same as ASCII '0' - '9' (0x30 - 0x39) + FIRST_ASCII
 - 	 KEY_A - KEY_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) + FIRST_ASCII
 - 	*/
 - };
 - 
 - //------------------------------------------------------------------------------
 - inline tchar VirtualKeyCodeToChar (uint8 vKey)
 - {
 - 	if (vKey >= VKEY_FIRST_ASCII)
 - 		return (tchar)(vKey - VKEY_FIRST_ASCII + 0x30);
 - 	else if (vKey == KEY_SPACE)
 - 		return ' ';
 - 	return 0;
 - }
 - 
 - //------------------------------------------------------------------------------
 - inline uint8 CharToVirtualKeyCode (tchar character)
 - {
 - 	if ((character >= 0x30 && character <= 0x39) || (character >= 0x41 && character <= 0x5A))
 - 		return (uint8)(character - 0x30 + VKEY_FIRST_ASCII);
 - 	if (character == ' ')
 - 		return (uint8)KEY_SPACE;
 - 	return 0;
 - }
 - 
 - //------------------------------------------------------------------------------
 - enum KeyModifier
 - {
 - 	kShiftKey     = 1 << 0, ///< same on both PC and Mac
 - 	kAlternateKey = 1 << 1, ///< same on both PC and Mac
 - 	kCommandKey   = 1 << 2, ///< windows ctrl key; mac cmd key (apple button)
 - 	kControlKey   = 1 << 3  ///< windows: not assigned, mac: ctrl key
 - };
 - 
 - //------------------------------------------------------------------------
 - struct KeyCode
 - {
 - 	tchar character;
 - 	uint8 virt;
 - 	uint8 modifier;
 - 
 - 	explicit KeyCode (tchar character = 0, uint8 virt = 0, uint8 modifier = 0)
 - 	: character (character), virt (virt), modifier (modifier)
 - 	{
 - 	}
 - };
 - 
 - //------------------------------------------------------------------------
 - } // namespace Steinberg
 
 
  |