📄 actionmap.cc
字号:
{
static const char *argv[2];
argv[0] = smBreakTable[i].consoleFunction;
argv[1] = Con::getFloatArg(value);
Con::execute(2,argv);
}
}
else if(smBreakTable[i].breakConsoleCommand)
{
Con::evaluate(smBreakTable[i].breakConsoleCommand);
dFree(smBreakTable[i].breakConsoleCommand);
}
smBreakTable.erase(i);
return true;
}
}
return false;
}
//------------------------------------------------------------------------------
bool ActionMap::handleEvent(const InputEvent* pEvent)
{
// Interate through the ActionMapSet until we get a map that
// handles the event or we run out of maps...
//
SimSet* pActionMapSet = Sim::getActiveActionMapSet();
AssertFatal(pActionMapSet && pActionMapSet->size() != 0,
"error, no ActiveMapSet or no global action map...");
for (SimSet::iterator itr = pActionMapSet->end() - 1;
itr > pActionMapSet->begin(); itr--) {
ActionMap* pMap = static_cast<ActionMap*>(*itr);
if (pMap->processAction(pEvent) == true)
return true;
}
return false;
}
//------------------------------------------------------------------------------
bool ActionMap::handleEventGlobal(const InputEvent* pEvent)
{
// Interate through the ActionMapSet until we get a map that
// handles the event or we run out of maps...
//
SimSet* pActionMapSet = Sim::getActiveActionMapSet();
AssertFatal(pActionMapSet && pActionMapSet->size() != 0,
"error, no ActiveMapSet or no global action map...");
return ((ActionMap*)pActionMapSet->first())->processAction(pEvent);
}
//------------------------------------------------------------------------------
//-------------------------------------- Console stuff
//------------------------------------------------------------------------------
ConsoleMethod( ActionMap, bind, void, 5, 10, "actionMap.bind( device, action, [modifier spec, mod...], command )" )
{
object->processBind( argc - 2, argv + 2 );
}
//------------------------------------------------------------------------------
ConsoleMethod( ActionMap, bindCmd, void, 6, 6, "actionMap.bindCmd( device, action, makeCmd, breakCmd )" )
{
argc;
object->processBindCmd( argv[2], argv[3], argv[4], argv[5] );
}
//------------------------------------------------------------------------------
ConsoleMethod( ActionMap, unbind, void, 4, 4, "actionMap.unbind( device, action )" )
{
argc;
object->processUnbind( argv[2], argv[3] );
}
//------------------------------------------------------------------------------
ConsoleMethod( ActionMap, save, void, 2, 4, "actionMap.save( [fileName], [append] )" )
{
const char* fileName = argc > 2 ? argv[2] : NULL;
bool append = argc > 3 ? dAtob(argv[3]) : false;
char buffer[1024];
if(fileName)
{
if(Con::expandScriptFilename(buffer, sizeof(buffer), fileName))
fileName = buffer;
}
object->dumpActionMap( fileName, append );
}
//------------------------------------------------------------------------------
ConsoleMethod( ActionMap, push, void, 2, 2, "actionMap.push()" )
{
argc; argv;
SimSet* pActionMapSet = Sim::getActiveActionMapSet();
pActionMapSet->pushObject( object );
}
//------------------------------------------------------------------------------
ConsoleMethod( ActionMap, pop, void, 2, 2, "actionMap.pop()" )
{
argc; argv;
SimSet* pActionMapSet = Sim::getActiveActionMapSet();
pActionMapSet->removeObject( object );
}
//------------------------------------------------------------------------------
ConsoleMethod( ActionMap, getBinding, const char*, 3, 3, "actionMap.getBinding( command )" )
{
argc;
return( object->getBinding( argv[2] ) );
}
//------------------------------------------------------------------------------
ConsoleMethod( ActionMap, getCommand, const char*, 4, 4, "actionMap.getCommand( device, action )" )
{
argc;
return( object->getCommand( argv[2], argv[3] ) );
}
//------------------------------------------------------------------------------
ConsoleMethod( ActionMap, isInverted, bool, 4, 4, "actionMap.isInverted( device, action )" )
{
argc;
return( object->isInverted( argv[2], argv[3] ) );
}
//------------------------------------------------------------------------------
ConsoleMethod( ActionMap, getScale, F32, 4, 4, "actionMap.getScale( device, action )" )
{
argc;
return( object->getScale( argv[2], argv[3] ) );
}
//------------------------------------------------------------------------------
ConsoleMethod( ActionMap, getDeadZone, const char*, 4, 4, "actionMap.getDeadZone( device, action )" )
{
argc;
return( object->getDeadZone( argv[2], argv[3] ) );
}
//------------------------------------------------------------------------------
//-------------------------------------- Key code to string mapping
// TODO: Add most obvious aliases...
//
CodeMapping gVirtualMap[] =
{
//-------------------------------------- KEYBOARD EVENTS
//
{ "backspace", SI_KEY, KEY_BACKSPACE },
{ "tab", SI_KEY, KEY_TAB },
{ "return", SI_KEY, KEY_RETURN },
{ "enter", SI_KEY, KEY_RETURN },
{ "shift", SI_KEY, KEY_SHIFT },
{ "ctrl", SI_KEY, KEY_CONTROL },
{ "alt", SI_KEY, KEY_ALT },
{ "pause", SI_KEY, KEY_PAUSE },
{ "capslock", SI_KEY, KEY_CAPSLOCK },
{ "escape", SI_KEY, KEY_ESCAPE },
#ifdef TGE_RPG
{ "esc", SI_KEY, KEY_ESCAPE },
#endif
{ "space", SI_KEY, KEY_SPACE },
{ "pagedown", SI_KEY, KEY_PAGE_DOWN },
{ "pageup", SI_KEY, KEY_PAGE_UP },
{ "end", SI_KEY, KEY_END },
{ "home", SI_KEY, KEY_HOME },
{ "left", SI_KEY, KEY_LEFT },
{ "up", SI_KEY, KEY_UP },
{ "right", SI_KEY, KEY_RIGHT },
{ "down", SI_KEY, KEY_DOWN },
{ "print", SI_KEY, KEY_PRINT },
{ "insert", SI_KEY, KEY_INSERT },
{ "delete", SI_KEY, KEY_DELETE },
{ "help", SI_KEY, KEY_HELP },
{ "win_lwindow", SI_KEY, KEY_WIN_LWINDOW },
{ "win_rwindow", SI_KEY, KEY_WIN_RWINDOW },
{ "win_apps", SI_KEY, KEY_WIN_APPS },
{ "cmd", SI_KEY, KEY_ALT },
{ "opt", SI_KEY, KEY_MAC_OPT },
{ "lopt", SI_KEY, KEY_MAC_LOPT },
{ "ropt", SI_KEY, KEY_MAC_ROPT },
{ "numpad0", SI_KEY, KEY_NUMPAD0 },
{ "numpad1", SI_KEY, KEY_NUMPAD1 },
{ "numpad2", SI_KEY, KEY_NUMPAD2 },
{ "numpad3", SI_KEY, KEY_NUMPAD3 },
{ "numpad4", SI_KEY, KEY_NUMPAD4 },
{ "numpad5", SI_KEY, KEY_NUMPAD5 },
{ "numpad6", SI_KEY, KEY_NUMPAD6 },
{ "numpad7", SI_KEY, KEY_NUMPAD7 },
{ "numpad8", SI_KEY, KEY_NUMPAD8 },
{ "numpad9", SI_KEY, KEY_NUMPAD9 },
{ "numpadmult", SI_KEY, KEY_MULTIPLY },
{ "numpadadd", SI_KEY, KEY_ADD },
{ "numpadsep", SI_KEY, KEY_SEPARATOR },
{ "numpadminus", SI_KEY, KEY_SUBTRACT },
{ "numpaddecimal", SI_KEY, KEY_DECIMAL },
{ "numpaddivide", SI_KEY, KEY_DIVIDE },
{ "numpadenter", SI_KEY, KEY_NUMPADENTER },
{ "f1", SI_KEY, KEY_F1 },
{ "f2", SI_KEY, KEY_F2 },
{ "f3", SI_KEY, KEY_F3 },
{ "f4", SI_KEY, KEY_F4 },
{ "f5", SI_KEY, KEY_F5 },
{ "f6", SI_KEY, KEY_F6 },
{ "f7", SI_KEY, KEY_F7 },
{ "f8", SI_KEY, KEY_F8 },
{ "f9", SI_KEY, KEY_F9 },
{ "f10", SI_KEY, KEY_F10 },
{ "f11", SI_KEY, KEY_F11 },
{ "f12", SI_KEY, KEY_F12 },
{ "f13", SI_KEY, KEY_F13 },
{ "f14", SI_KEY, KEY_F14 },
{ "f15", SI_KEY, KEY_F15 },
{ "f16", SI_KEY, KEY_F16 },
{ "f17", SI_KEY, KEY_F17 },
{ "f18", SI_KEY, KEY_F18 },
{ "f19", SI_KEY, KEY_F19 },
{ "f20", SI_KEY, KEY_F20 },
{ "f21", SI_KEY, KEY_F21 },
{ "f22", SI_KEY, KEY_F22 },
{ "f23", SI_KEY, KEY_F23 },
{ "f24", SI_KEY, KEY_F24 },
{ "numlock", SI_KEY, KEY_NUMLOCK },
{ "scrolllock", SI_KEY, KEY_SCROLLLOCK },
{ "lshift", SI_KEY, KEY_LSHIFT },
{ "rshift", SI_KEY, KEY_RSHIFT },
{ "lcontrol", SI_KEY, KEY_LCONTROL },
{ "rcontrol", SI_KEY, KEY_RCONTROL },
{ "lalt", SI_KEY, KEY_LALT },
{ "ralt", SI_KEY, KEY_RALT },
{ "tilde", SI_KEY, KEY_TILDE },
{ "minus", SI_KEY, KEY_MINUS },
{ "equals", SI_KEY, KEY_EQUALS },
{ "lbracket", SI_KEY, KEY_LBRACKET },
{ "rbracket", SI_KEY, KEY_RBRACKET },
{ "backslash", SI_KEY, KEY_BACKSLASH },
{ "semicolon", SI_KEY, KEY_SEMICOLON },
{ "apostrophe", SI_KEY, KEY_APOSTROPHE },
{ "comma", SI_KEY, KEY_COMMA },
{ "period", SI_KEY, KEY_PERIOD },
{ "slash", SI_KEY, KEY_SLASH },
{ "lessthan", SI_KEY, KEY_OEM_102 },
//-------------------------------------- BUTTON EVENTS
// Joystick/Mouse buttons
{ "button0", SI_BUTTON, KEY_BUTTON0 },
{ "button1", SI_BUTTON, KEY_BUTTON1 },
{ "button2", SI_BUTTON, KEY_BUTTON2 },
{ "button3", SI_BUTTON, KEY_BUTTON3 },
{ "button4", SI_BUTTON, KEY_BUTTON4 },
{ "button5", SI_BUTTON, KEY_BUTTON5 },
{ "button6", SI_BUTTON, KEY_BUTTON6 },
{ "button7", SI_BUTTON, KEY_BUTTON7 },
{ "button8", SI_BUTTON, KEY_BUTTON8 },
{ "button9", SI_BUTTON, KEY_BUTTON9 },
{ "button10", SI_BUTTON, KEY_BUTTON10 },
{ "button11", SI_BUTTON, KEY_BUTTON11 },
{ "button12", SI_BUTTON, KEY_BUTTON12 },
{ "button13", SI_BUTTON, KEY_BUTTON13 },
{ "button14", SI_BUTTON, KEY_BUTTON14 },
{ "button15", SI_BUTTON, KEY_BUTTON15 },
{ "button16", SI_BUTTON, KEY_BUTTON16 },
{ "button17", SI_BUTTON, KEY_BUTTON17 },
{ "button18", SI_BUTTON, KEY_BUTTON18 },
{ "button19", SI_BUTTON, KEY_BUTTON19 },
{ "button20", SI_BUTTON, KEY_BUTTON20 },
{ "button21", SI_BUTTON, KEY_BUTTON21 },
{ "button22", SI_BUTTON, KEY_BUTTON22 },
{ "button23", SI_BUTTON, KEY_BUTTON23 },
{ "button24", SI_BUTTON, KEY_BUTTON24 },
{ "button25", SI_BUTTON, KEY_BUTTON25 },
{ "button26", SI_BUTTON, KEY_BUTTON26 },
{ "button27", SI_BUTTON, KEY_BUTTON27 },
{ "button28", SI_BUTTON, KEY_BUTTON28 },
{ "button29", SI_BUTTON, KEY_BUTTON29 },
{ "button30", SI_BUTTON, KEY_BUTTON30 },
{ "button31", SI_BUTTON, KEY_BUTTON31 },
//-------------------------------------- MOVE EVENTS
// Mouse/Joystick axes:
{ "xaxis", SI_MOVE, SI_XAXIS },
{ "yaxis", SI_MOVE, SI_YAXIS },
{ "zaxis", SI_MOVE, SI_ZAXIS },
{ "rxaxis", SI_MOVE, SI_RXAXIS },
{ "ryaxis", SI_MOVE, SI_RYAXIS },
{ "rzaxis", SI_MOVE, SI_RZAXIS },
{ "slider", SI_MOVE, SI_SLIDER },
//-------------------------------------- POV EVENTS
// Joystick POV:
{ "xpov", SI_POV, SI_XPOV },
{ "ypov", SI_POV, SI_YPOV },
{ "upov", SI_POV, SI_UPOV },
{ "dpov", SI_POV, SI_DPOV },
{ "lpov", SI_POV, SI_LPOV },
{ "rpov", SI_POV, SI_RPOV },
{ "xpov2", SI_POV, SI_XPOV2 },
{ "ypov2", SI_POV, SI_YPOV2 },
{ "upov2", SI_POV, SI_UPOV2 },
{ "dpov2", SI_POV, SI_DPOV2 },
{ "lpov2", SI_POV, SI_LPOV2 },
{ "rpov2", SI_POV, SI_RPOV2 },
//-------------------------------------- MISCELLANEOUS EVENTS
//
{ "anykey", SI_KEY, KEY_ANYKEY },
{ "nomatch", SI_UNKNOWN, 0xFFFFFFFF }
};
AsciiMapping gAsciiMap[] =
{
//--- KEYBOARD EVENTS
//
{ "space", 0x0020 },
//{ "exclamation", 0x0021 },
{ "doublequote", 0x0022 },
//{ "pound", 0x0023 },
//{ "ampersand", 0x0026 },
{ "apostrophe", 0x0027 },
//{ "lparen", 0x0028 },
//{ "rparen", 0x0029 },
{ "comma", 0x002c },
{ "minus", 0x002d },
{ "period", 0x002e },
//{ "slash", 0x002f },
//{ "colon", 0x003a },
//{ "semicolon", 0x003b },
//{ "lessthan", 0x003c },
//{ "equals", 0x003d },
//{ "morethan", 0x003e },
//{ "lbracket", 0x005b },
{ "backslash", 0x005c },
//{ "rbracket", 0x005d },
//{ "circumflex", 0x005e },
//{ "underscore", 0x005f },
{ "grave", 0x0060 },
//{ "tilde", 0x007e },
//{ "vertbar", 0x007c },
//{ "exclamdown", 0x00a1 },
//{ "cent", 0x00a2 },
//{ "sterling", 0x00a3 },
//{ "currency", 0x00a4 },
//{ "brokenbar", 0x00a6 },
//{ "ring", 0x00b0 },
//{ "plusminus", 0x00b1 },
{ "super2", 0x00b2 },
{ "super3", 0x00b3 },
{ "acute", 0x00b4 },
//{ "mu", 0x00b5 },
//{ "ordmasculine", 0x00ba },
//{ "questiondown", 0x00bf },
//{ "gemandbls", 0x00df },
//{ "agrave", 0x00e0 },
//{ "aacute", 0x00e1 },
//{ "acircumflex", 0x00e2 },
//{ "atilde", 0x00e3 },
//{ "adieresis", 0x00e4 },
//{ "aring", 0x00e5 },
//{ "ae", 0x00e6 },
//{ "ccedille", 0x00e7 },
//{ "egrave", 0x00e8 },
//{ "eacute", 0x00e9 },
//{ "ecircumflex", 0x00ea },
//{ "edieresis", 0x00eb },
//{ "igrave", 0x00ec },
//{ "iacute", 0x00ed },
//{ "icircumflex", 0x00ee },
//{ "idieresis", 0x00ef },
//{ "ntilde", 0x00f1 },
//{ "ograve", 0x00f2 },
//{ "oacute", 0x00f3 },
//{ "ocircumflex", 0x00f4 },
//{ "otilde", 0x00f5 },
//{ "odieresis", 0x00f6 },
//{ "divide", 0x00f7 },
//{ "oslash", 0x00f8 },
//{ "ugrave", 0x00f9 },
//{ "uacute", 0x00fa },
//{ "ucircumflex", 0x00fb },
//{ "udieresis", 0x00fc },
//{ "ygrave", 0x00fd },
//{ "thorn", 0x00fe },
//{ "ydieresis", 0x00ff },
{ "nomatch", 0xFFFF }
};
////Device Event Types
//#define SI_UNKNOWN 0x01
//#define SI_BUTTON 0x02
//#define SI_POV 0x03
//#define SI_XPOV 0x04
//#define SI_YPOV 0x05
//#define SI_UPOV 0x06
//#define SI_DPOV 0x07
//#define SI_LPOV 0x08
//#define SI_RPOV 0x09
//#define SI_KEY 0x0A
//#define SI_XAXIS 0x0B
//#define SI_YAXIS 0x0C
//#define SI_ZAXIS 0x0D
//#define SI_RXAXIS 0x0E
//#define SI_RYAXIS 0x0F
//#define SI_RZAXIS 0x10
//#define SI_SLIDER 0x11
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -