예제 #1
0
파일: clc_api.cpp 프로젝트: fre2003/l3220
void CCmdCtl_i::AssignKeyCmd(U32 iVKey, U32 iKeyMode, CMD_ID CmdId)
{
  int mod = 0; 
  int cmd = 0;
  
  if(iKeyMode == VK_CONTROL)
    mod = SCMOD_CTRL;
  if(iKeyMode == VK_MENU)
    mod = SCMOD_ALT;
  if(iKeyMode == VK_SHIFT)
    mod = SCMOD_SHIFT;
  
  if(CmdId == CMD_NEWLINE)
    cmd = SCI_NEWLINE;
  if(CmdId == CMD_NULL)
    cmd = SCI_NULL;
  if(CmdId == CMD_COPY)
    cmd = SCI_COPY;
  if(CmdId == CMD_PASTE)
    cmd = SCI_PASTE;
  
  AssignKey(iVKey, mod, cmd);
}
void PIN_GameControllerManager::AddGameController(int joy_index)
{
    printf("Checking joystick #%d...\n",joy_index);
    printf("Name: %s\n",SDL_JoystickNameForIndex(joy_index));

    if(SDL_IsGameController(joy_index))
    {
        printf("This joystick is a gamecontroller. Adding to controller pool...\n");
        printf("Game controller name: %s\n",SDL_GameControllerNameForIndex(joy_index));

        PIN_GameControllerEntry* newEntry = CreateGameControllerEntry();

        SDL_GameController* ctrl =  SDL_GameControllerOpen(joy_index);
        SDL_Joystick* joy = SDL_GameControllerGetJoystick(ctrl);

        SDL_JoystickGUID joyGUID = SDL_JoystickGetGUID(joy);
        char strGUID[PIN_BUFFER_SIZE];
        SDL_JoystickGetGUIDString(joyGUID,strGUID, PIN_BUFFER_SIZE);

        printf("Controller GUID: %s\n",strGUID);
        SDL_JoystickID joyID  = SDL_JoystickInstanceID(joy);
        if(joyID < 0)
        {
            printf("Error: %s\n",SDL_GetError());
            delete newEntry;
            return;
        }
        else
        {
            newEntry->ControllerID = joyID + PIN_ID_JOYSTICK;
        }

        newEntry->Controller = ctrl;
        newEntry->Joystick = joy;

        newEntry->AxisDeadZone = 8000;

        newEntry->GlobalKeys[PIN_GK_UP]     = BuildComboSet(newEntry,SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_DPAD_UP));
        newEntry->GlobalKeys[PIN_GK_DOWN]   = BuildComboSet(newEntry,SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_DPAD_DOWN));
        newEntry->GlobalKeys[PIN_GK_LEFT]   = BuildComboSet(newEntry,SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_DPAD_LEFT));
        newEntry->GlobalKeys[PIN_GK_RIGHT]  = BuildComboSet(newEntry,SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_DPAD_RIGHT));
        newEntry->GlobalKeys[PIN_GK_ENTER]  = BuildComboSet(newEntry,SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_A));
        newEntry->GlobalKeys[PIN_GK_BACK]   = BuildComboSet(newEntry,SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_B));

        PIN_KeyList lstDef = _controlType->DEFAULT_KEYS;

        printf("Setting control type definitions...\n");

        AssignKey(newEntry, &(newEntry->GlobalKeys),PIN_GK_UP,lstDef,PIN_KEY_UP);
        AssignKey(newEntry, &(newEntry->GlobalKeys),PIN_GK_DOWN,lstDef,PIN_KEY_DOWN);
        AssignKey(newEntry, &(newEntry->GlobalKeys),PIN_GK_LEFT,lstDef,PIN_KEY_LEFT);
        AssignKey(newEntry, &(newEntry->GlobalKeys),PIN_GK_RIGHT,lstDef,PIN_KEY_RIGHT);
        AssignKey(newEntry, &(newEntry->GlobalKeys),PIN_GK_ENTER,lstDef,PIN_KEY_ENTER);
        AssignKey(newEntry, &(newEntry->GlobalKeys),PIN_GK_BACK,lstDef,PIN_KEY_BACK);

        for(PIN_MappingList::iterator it = _mappingList->begin(); it!= _mappingList->end(); ++it)
        {
            PIN_Mapping* m = *it;
            if(boost::equals(m->GUID,strGUID))
            {
                printf("Setting mapping-specific definitions...\n");
                printf("Mapping name: '%s'\n",m->NAME);

                PIN_KeyList m_keys = m->DEFAULT_KEYS;

                newEntry->SourceMapping = m;

                newEntry->AxisDeadZone = m->DEADZONE;

                AssignKey(newEntry, &(newEntry->GlobalKeys),PIN_GK_UP,m_keys,PIN_KEY_UP);
                AssignKey(newEntry, &(newEntry->GlobalKeys),PIN_GK_DOWN,m_keys,PIN_KEY_DOWN);
                AssignKey(newEntry, &(newEntry->GlobalKeys),PIN_GK_LEFT,m_keys,PIN_KEY_LEFT);
                AssignKey(newEntry, &(newEntry->GlobalKeys),PIN_GK_RIGHT,m_keys,PIN_KEY_RIGHT);
                AssignKey(newEntry, &(newEntry->GlobalKeys),PIN_GK_ENTER,m_keys,PIN_KEY_ENTER);
                AssignKey(newEntry, &(newEntry->GlobalKeys),PIN_GK_BACK,m_keys,PIN_KEY_BACK);

                break;
            }
        }

        if(_currentGameMode != NULL)
        {
            UpdateControllerGameMode(newEntry);
        }

        //_controllerList.push_back(newEntry);
        AddController(newEntry);
    }
    else
    {
        printf("This joystick is NOT a gamecontroller. It can't be used.\n");
    }
}
예제 #3
0
파일: clc_api.cpp 프로젝트: fre2003/l3220
void CCmdCtl_i::Init()
{
  // clear all text styles
  SendMessage(SCI_CLEARDOCUMENTSTYLE, 0, 0);

  // set the number of styling bits to 7 - the asp/html views need a lot of styling - default is 5
  // If you leave the default you will see twiggle lines instead of ASP code
  SendMessage(SCI_SETSTYLEBITS, 5, 0);
  
  // set the display for indetation guides to on - this displays virtical dotted lines from the beginning of 
  // a code block to the end of the block
  //SendMessage(SCI_SETINDENTATIONGUIDES, TRUE, 0);

  // set tabwidth to 4
  SendMessage(SCI_SETTABWIDTH,4,0);

  // set the caret blinking time to 500 milliseconds
  SendMessage(SCI_SETCARETPERIOD,500,0);

  // source folding section  
  SendMessage(SCI_STYLESETFORE, STYLE_DEFAULT, (LPARAM) GetSysColor(COLOR_WINDOWTEXT)); // default text color
  SendMessage(SCI_STYLESETBACK, STYLE_DEFAULT, (LPARAM) GetSysColor(COLOR_WINDOW)); // default window color

  // set the forground color for some styles
  SendMessage(SCI_STYLESETFORE, 0, RGB(0,0,0));
  SendMessage(SCI_STYLESETFORE, 2, RGB(0,64,0));
  SendMessage(SCI_STYLESETFORE, 5, RGB(0,0,255));
  SendMessage(SCI_STYLESETFORE, 6, RGB(200,20,0));
  SendMessage(SCI_STYLESETFORE, 9, RGB(0,0,255));
  SendMessage(SCI_STYLESETFORE, 10, RGB(255,0,64));
  SendMessage(SCI_STYLESETFORE, 11, RGB(0,0,0));
  
  // set the backgroundcolor of brace highlights
  SendMessage(SCI_STYLESETBACK, STYLE_BRACELIGHT, RGB(0,255,0));
  
  // set end of line mode to CRLF
  // SendMessage(SCI_CONVERTEOLS, SC_EOL_LF, 0); //  
  SendMessage(SCI_SETEOLMODE, SC_EOL_LF, 0);
  //SendMessage(SCI_SETVIEWEOL, TRUE, 0);
  
  SendMessage(SCI_SETSELFORE,0,0);
  SendMessage(SCI_SETSELBACK,TRUE,RGB(0xC0,0xC0,0xC0)); // use a default value...
  
  SendMessage(SCI_SETCARETFORE,GetSysColor(COLOR_WINDOWTEXT),0); // default value
  SendMessage(SCI_SETCARETLINEVISIBLE,FALSE,0);
  
  // set markersymbol for marker type 0 - bookmark
  // define a set of markers to displa folding symbols
  SendMessage(SCI_MARKERDEFINE, SC_MARKNUM_FOLDEROPEN, SC_MARK_MINUS);
  SendMessage(SCI_MARKERDEFINE, SC_MARKNUM_FOLDER,     SC_MARK_PLUS);
  SendMessage(SCI_MARKERDEFINE, SC_MARKNUM_FOLDERSUB,  SC_MARK_EMPTY);
  SendMessage(SCI_MARKERDEFINE, SC_MARKNUM_FOLDERTAIL, SC_MARK_EMPTY);
  SendMessage(SCI_MARKERDEFINE, SC_MARKNUM_FOLDEREND,  SC_MARK_EMPTY);
  SendMessage(SCI_MARKERDEFINE, SC_MARKNUM_FOLDEROPENMID, SC_MARK_EMPTY);
  SendMessage(SCI_MARKERDEFINE, SC_MARKNUM_FOLDERMIDTAIL, SC_MARK_EMPTY);
  
  SendMessage(SCI_SETEDGEMODE, EDGE_NONE, 0);
  SendMessage(SCI_SETINDENT,0,0);
  
  //SendMessage(SCI_SETCARETSTICKY,TRUE,0);
  SendMessage(SCI_SETCARETWIDTH,2,0);
  //SendMessage(SCI_WRAPCOUNT, 2);
  
  //SendMessage(SCI_MARKERDEFINE, 0, SC_MARK_CIRCLE);
  // display all margins
  //SetDisplayLinenumbers(TRUE);
  //SetDisplayFolding(TRUE);
  SetDisplaySelection(TRUE);
  
  // Dont use popup menu.
  SendMessage(SCI_USEPOPUP, 0);
  SendMessage(SCI_SETREADONLY, FALSE);

  SendMessage(SCI_SETVSCROLLBAR, TRUE);
  SendMessage(SCI_SETHSCROLLBAR, FALSE);
  
    // allow notifications for folding actions
  SendMessage(SCI_SETMODEVENTMASK, SC_MOD_INSERTTEXT|SC_MOD_DELETETEXT, 0);
  //   SendMessage(SCI_SETMODEVENTMASK, SC_MOD_CHANGEFOLD|SC_MOD_INSERTTEXT|SC_MOD_DELETETEXT, 0);
  // make the folding margin sensitive to folding events = if you click into the margin you get a notification event
  SendMessage(SCI_SETMARGINSENSITIVEN, 2, TRUE);
    
  SendMessage(SCI_SETMODEVENTMASK, /* SC_MODEVENTMASKALL */ SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT, 0);
  
  SendMessage(SCI_USEPOPUP, FALSE, 0);
  
  SendMessage(SCI_ASSIGNCMDKEY, (SCK_NEXT + (SCMOD_CTRL << 16)), SCI_PARADOWN);
  SendMessage(SCI_ASSIGNCMDKEY, (SCK_PRIOR + (SCMOD_CTRL << 16)), SCI_PARAUP);
  SendMessage(SCI_ASSIGNCMDKEY, (SCK_NEXT + ((SCMOD_CTRL | SCMOD_SHIFT) << 16)), SCI_PARADOWNEXTEND);
  SendMessage(SCI_ASSIGNCMDKEY, (SCK_PRIOR + ((SCMOD_CTRL | SCMOD_SHIFT) << 16)), SCI_PARAUPEXTEND);
  
  SendMessage(SCI_ASSIGNCMDKEY, (SCK_HOME + (0 << 16)), SCI_VCHOMEWRAP);
  SendMessage(SCI_ASSIGNCMDKEY, (SCK_END + (0 << 16)), SCI_LINEENDWRAP);
  SendMessage(SCI_ASSIGNCMDKEY, (SCK_HOME + (SCMOD_SHIFT << 16)), SCI_VCHOMEWRAPEXTEND);
  SendMessage(SCI_ASSIGNCMDKEY, (SCK_END + (SCMOD_SHIFT << 16)), SCI_LINEENDWRAPEXTEND);
  
  SendMessage(SCI_CMD_MODE,TRUE,0);
  SetCtrlCharMode(TRUE);
  
  AssignKey('C', SCMOD_CTRL, SCI_NULL);
  AssignKey('V', SCMOD_CTRL, SCI_NULL);
  
  // Nonprinting characters
  ShowPrintCharacter(FALSE, FALSE);
    
  SendMessage(SCI_SETUNDOCOLLECTION,0);
  SendMessage(SCI_EMPTYUNDOBUFFER);
  
  //SendMessage(SCI_ASSIGNCMDKEY, ('c' + (SCMOD_CTRL << 16)), SCI_COPY);
  //SendMessage(SCI_SETCODEPAGE,  SC_CP_UTF8, 0);
}
예제 #4
0
void SDLKeyboard::KeyboardInit()
{
    memset(&m_keyBuffer, 0, static_cast<size_t>(KC_LAST));

    AssignKey(KC_BACKSPACE   , SDLK_BACKSPACE   );
    AssignKey(KC_TAB         , SDLK_TAB         );
    AssignKey(KC_CLEAR       , SDLK_CLEAR       );
    AssignKey(KC_RETURN      , SDLK_RETURN      );
    AssignKey(KC_PAUSE       , SDLK_PAUSE       );
    AssignKey(KC_ESCAPE      , SDLK_ESCAPE      );
    AssignKey(KC_SPACE       , SDLK_SPACE       );
    AssignKey(KC_EXCLAIM     , SDLK_EXCLAIM     );
    AssignKey(KC_QUOTEDBL    , SDLK_QUOTEDBL    );
    AssignKey(KC_HASH        , SDLK_HASH        );
    AssignKey(KC_DOLLAR      , SDLK_DOLLAR      );
    AssignKey(KC_AMPERSAND   , SDLK_AMPERSAND   );
    AssignKey(KC_QUOTE       , SDLK_QUOTE       );
    AssignKey(KC_LEFTPAREN   , SDLK_LEFTPAREN   );
    AssignKey(KC_RIGHTPAREN  , SDLK_RIGHTPAREN  );
    AssignKey(KC_ASTERISK    , SDLK_ASTERISK    );
    AssignKey(KC_PLUS        , SDLK_PLUS        );
    AssignKey(KC_COMMA       , SDLK_COMMA       );
    AssignKey(KC_MINUS       , SDLK_MINUS       );
    AssignKey(KC_PERIOD      , SDLK_PERIOD      );
    AssignKey(KC_SLASH       , SDLK_SLASH       );
    AssignKey(KC_0           , SDLK_0           );
    AssignKey(KC_1           , SDLK_1           );
    AssignKey(KC_2           , SDLK_2           );
    AssignKey(KC_3           , SDLK_3           );
    AssignKey(KC_4           , SDLK_4           );
    AssignKey(KC_5           , SDLK_5           );
    AssignKey(KC_6           , SDLK_6           );
    AssignKey(KC_7           , SDLK_7           );
    AssignKey(KC_8           , SDLK_8           );
    AssignKey(KC_9           , SDLK_9           );
    AssignKey(KC_COLON       , SDLK_COLON       );
    AssignKey(KC_SEMICOLON   , SDLK_SEMICOLON   );
    AssignKey(KC_LESS        , SDLK_LESS        );
    AssignKey(KC_EQUALS      , SDLK_EQUALS      );
    AssignKey(KC_GREATER     , SDLK_GREATER     );
    AssignKey(KC_QUESTION    , SDLK_QUESTION    );
    AssignKey(KC_AT          , SDLK_AT          );
    AssignKey(KC_LEFTBRACKET , SDLK_LEFTBRACKET );
    AssignKey(KC_BACKSLASH   , SDLK_BACKSLASH   );
    AssignKey(KC_RIGHTBRACKET, SDLK_RIGHTBRACKET);
    AssignKey(KC_CARET       , SDLK_CARET       );
    AssignKey(KC_UNDERSCORE  , SDLK_UNDERSCORE  );
    AssignKey(KC_BACKQUOTE   , SDLK_BACKQUOTE   );
    AssignKey(KC_A           , SDLK_a           );
    AssignKey(KC_B           , SDLK_b           );
    AssignKey(KC_C           , SDLK_c           );
    AssignKey(KC_D           , SDLK_d           );
    AssignKey(KC_E           , SDLK_e           );
    AssignKey(KC_F           , SDLK_f           );
    AssignKey(KC_G           , SDLK_g           );
    AssignKey(KC_H           , SDLK_h           );
    AssignKey(KC_I           , SDLK_i           );
    AssignKey(KC_J           , SDLK_j           );
    AssignKey(KC_K           , SDLK_k           );
    AssignKey(KC_L           , SDLK_l           );
    AssignKey(KC_M           , SDLK_m           );
    AssignKey(KC_N           , SDLK_n           );
    AssignKey(KC_O           , SDLK_o           );
    AssignKey(KC_P           , SDLK_p           );
    AssignKey(KC_Q           , SDLK_q           );
    AssignKey(KC_R           , SDLK_r           );
    AssignKey(KC_S           , SDLK_s           );
    AssignKey(KC_T           , SDLK_t           );
    AssignKey(KC_U           , SDLK_u           );
    AssignKey(KC_V           , SDLK_v           );
    AssignKey(KC_W           , SDLK_w           );
    AssignKey(KC_X           , SDLK_x           );
    AssignKey(KC_Y           , SDLK_y           );
    AssignKey(KC_Z           , SDLK_z           );
    AssignKey(KC_DELETE      , SDLK_DELETE      );
    AssignKey(KC_KP0         , SDLK_KP0         );
    AssignKey(KC_KP1         , SDLK_KP1         );
    AssignKey(KC_KP2         , SDLK_KP2         );
    AssignKey(KC_KP3         , SDLK_KP3         );
    AssignKey(KC_KP4         , SDLK_KP4         );
    AssignKey(KC_KP5         , SDLK_KP5         );
    AssignKey(KC_KP6         , SDLK_KP6         );
    AssignKey(KC_KP7         , SDLK_KP7         );
    AssignKey(KC_KP8         , SDLK_KP8         );
    AssignKey(KC_KP9         , SDLK_KP9         );
    AssignKey(KC_KP_PERIOD   , SDLK_KP_PERIOD   );
    AssignKey(KC_KP_DIVIDE   , SDLK_KP_DIVIDE   );
    AssignKey(KC_KP_MULTIPLY , SDLK_KP_MULTIPLY );
    AssignKey(KC_KP_MINUS    , SDLK_KP_MINUS    );
    AssignKey(KC_KP_PLUS     , SDLK_KP_PLUS     );
    AssignKey(KC_KP_ENTER    , SDLK_KP_ENTER    );
    AssignKey(KC_KP_EQUALS   , SDLK_KP_EQUALS   ); 
    AssignKey(KC_UP          , SDLK_UP          );
    AssignKey(KC_DOWN        , SDLK_DOWN        );
    AssignKey(KC_RIGHT       , SDLK_RIGHT       );
    AssignKey(KC_LEFT        , SDLK_LEFT        );
    AssignKey(KC_INSERT      , SDLK_INSERT      );
    AssignKey(KC_HOME        , SDLK_HOME        );
    AssignKey(KC_END         , SDLK_END         );
    AssignKey(KC_PAGEUP      , SDLK_PAGEUP      );
    AssignKey(KC_PAGEDOWN    , SDLK_PAGEDOWN    );
    AssignKey(KC_F1          , SDLK_F1          );
    AssignKey(KC_F2          , SDLK_F2          );
    AssignKey(KC_F3          , SDLK_F3          );
    AssignKey(KC_F4          , SDLK_F4          );
    AssignKey(KC_F5          , SDLK_F5          );
    AssignKey(KC_F6          , SDLK_F6          );
    AssignKey(KC_F7          , SDLK_F7          );
    AssignKey(KC_F8          , SDLK_F8          );
    AssignKey(KC_F9          , SDLK_F9          );
    AssignKey(KC_F10         , SDLK_F10         );
    AssignKey(KC_F11         , SDLK_F11         );
    AssignKey(KC_F12         , SDLK_F12         );
    AssignKey(KC_F13         , SDLK_F13         );
    AssignKey(KC_F14         , SDLK_F14         );
    AssignKey(KC_F15         , SDLK_F15         );
    AssignKey(KC_NUMLOCK     , SDLK_NUMLOCK     );
    AssignKey(KC_CAPSLOCK    , SDLK_CAPSLOCK    );
    AssignKey(KC_SCROLLOCK   , SDLK_SCROLLOCK   );
    AssignKey(KC_RSHIFT      , SDLK_RSHIFT      );
    AssignKey(KC_LSHIFT      , SDLK_LSHIFT      );
    AssignKey(KC_RCTRL       , SDLK_RCTRL       );
    AssignKey(KC_LCTRL       , SDLK_LCTRL       );
    AssignKey(KC_RALT        , SDLK_RALT        );
    AssignKey(KC_LALT        , SDLK_LALT        );
    AssignKey(KC_RMETA       , SDLK_RMETA       );
    AssignKey(KC_LMETA       , SDLK_LMETA       );
    AssignKey(KC_LSUPER      , SDLK_LSUPER      );
    AssignKey(KC_RSUPER      , SDLK_RSUPER      );
    AssignKey(KC_MODE        , SDLK_MODE        );
    AssignKey(KC_COMPOSE     , SDLK_COMPOSE     );
    AssignKey(KC_HELP        , SDLK_HELP        );
    AssignKey(KC_PRINT       , SDLK_PRINT       );
    AssignKey(KC_SYSREQ      , SDLK_SYSREQ      );
    AssignKey(KC_BREAK       , SDLK_BREAK       );
    AssignKey(KC_MENU        , SDLK_MENU        );
    AssignKey(KC_POWER       , SDLK_POWER       );
    AssignKey(KC_EURO        , SDLK_EURO        );
    AssignKey(KC_UNDO        , SDLK_UNDO        );
}
예제 #5
0
PIN_KeyboardManager::PIN_KeyboardManager(PIN_ControlType* controlType, PIN_MappingList* mappingList, PIN_ControllerBaseList* masterControllerList)
    : PIN_ManagerBase(controlType, mappingList, masterControllerList)
{
    std::string strKeyList("\\b(?:");

    bool firstItem = true;
    for(int x = SDL_SCANCODE_A; x <= SDL_SCANCODE_SLEEP; x++)
    {
        PIN_String strScanCode = SDL_GetScancodeName((SDL_Scancode)x);
        if(!boost::equals(strScanCode,""))
        {
            if(!firstItem)
            {
                strKeyList += "|";
            }
            else
            {
                firstItem = false;
            }
            std::string strCode(strScanCode);
            strCode = PAUX_Extensors::regex_escape(strCode);
            strKeyList+= "(?:" + strCode + ")";
        }
    }
    strKeyList+=")\\b";

    _keyListRegex = boost::regex(strKeyList,boost::regex::perl|boost::regex::icase);

    PIN_KeyList lstDef = controlType->DEFAULT_KEYS;

    if(_mappingList->size() == 0)
    {
        printf("No keyboard mappings. Assuming 1 controller.\n");

        PIN_KeyboardController* ctrl = CreateKeyboardController();
        ctrl->GlobalKeys[PIN_GK_UP]     = BuildComboSet(SDL_GetScancodeName(SDL_SCANCODE_UP));
        ctrl->GlobalKeys[PIN_GK_DOWN]   = BuildComboSet(SDL_GetScancodeName(SDL_SCANCODE_DOWN));
        ctrl->GlobalKeys[PIN_GK_LEFT]   = BuildComboSet(SDL_GetScancodeName(SDL_SCANCODE_LEFT));
        ctrl->GlobalKeys[PIN_GK_RIGHT]  = BuildComboSet(SDL_GetScancodeName(SDL_SCANCODE_RIGHT));
        ctrl->GlobalKeys[PIN_GK_ENTER]  = BuildComboSet(SDL_GetScancodeName(SDL_SCANCODE_RETURN));
        ctrl->GlobalKeys[PIN_GK_BACK]   = BuildComboSet(SDL_GetScancodeName(SDL_SCANCODE_BACKSPACE));

		printf("Setting control type definitions...\n");
		AssignKey(&(ctrl->GlobalKeys),PIN_GK_UP,lstDef,PIN_KEY_UP);
        AssignKey(&(ctrl->GlobalKeys),PIN_GK_DOWN,lstDef,PIN_KEY_DOWN);
        AssignKey(&(ctrl->GlobalKeys),PIN_GK_LEFT,lstDef,PIN_KEY_LEFT);
        AssignKey(&(ctrl->GlobalKeys),PIN_GK_RIGHT,lstDef,PIN_KEY_RIGHT);
        AssignKey(&(ctrl->GlobalKeys),PIN_GK_ENTER,lstDef,PIN_KEY_ENTER);
        AssignKey(&(ctrl->GlobalKeys),PIN_GK_BACK,lstDef,PIN_KEY_BACK);

		AddController(ctrl);
        printf("Done.\n");
    }
    else
    {
        PIN_MappingList::iterator it;
        for(it = _mappingList->begin(); it!=_mappingList->end(); ++it)
        {
            PIN_Mapping* m = *it;
            PIN_KeyList m_keys = m->DEFAULT_KEYS;

            PIN_KeyboardController* ctrl = CreateKeyboardController();

            printf("Creating controller ID 0x%xl for '%s'...\n",ctrl->ControllerID, m->NAME);

            ctrl->SourceMapping = m;

            ctrl->GlobalKeys[PIN_GK_UP]     = BuildComboSet(SDL_GetScancodeName(SDL_SCANCODE_UP));
            ctrl->GlobalKeys[PIN_GK_DOWN]   = BuildComboSet(SDL_GetScancodeName(SDL_SCANCODE_DOWN));
            ctrl->GlobalKeys[PIN_GK_LEFT]   = BuildComboSet(SDL_GetScancodeName(SDL_SCANCODE_LEFT));
            ctrl->GlobalKeys[PIN_GK_RIGHT]  = BuildComboSet(SDL_GetScancodeName(SDL_SCANCODE_RIGHT));
            ctrl->GlobalKeys[PIN_GK_ENTER]  = BuildComboSet(SDL_GetScancodeName(SDL_SCANCODE_RETURN));
            ctrl->GlobalKeys[PIN_GK_BACK]   = BuildComboSet(SDL_GetScancodeName(SDL_SCANCODE_BACKSPACE));

			printf("Setting control type definitions...\n");

			AssignKey(&(ctrl->GlobalKeys),PIN_GK_UP,lstDef,PIN_KEY_UP);
			AssignKey(&(ctrl->GlobalKeys),PIN_GK_DOWN,lstDef,PIN_KEY_DOWN);
			AssignKey(&(ctrl->GlobalKeys),PIN_GK_LEFT,lstDef,PIN_KEY_LEFT);
			AssignKey(&(ctrl->GlobalKeys),PIN_GK_RIGHT,lstDef,PIN_KEY_RIGHT);
			AssignKey(&(ctrl->GlobalKeys),PIN_GK_ENTER,lstDef,PIN_KEY_ENTER);
			AssignKey(&(ctrl->GlobalKeys),PIN_GK_BACK,lstDef,PIN_KEY_BACK);

            printf("Setting mapping-specific definitions...\n");
            AssignKey(&(ctrl->GlobalKeys),PIN_GK_UP,m_keys,PIN_KEY_UP);
            AssignKey(&(ctrl->GlobalKeys),PIN_GK_DOWN,m_keys,PIN_KEY_DOWN);
            AssignKey(&(ctrl->GlobalKeys),PIN_GK_LEFT,m_keys,PIN_KEY_LEFT);
            AssignKey(&(ctrl->GlobalKeys),PIN_GK_RIGHT,m_keys,PIN_KEY_RIGHT);
            AssignKey(&(ctrl->GlobalKeys),PIN_GK_ENTER,m_keys,PIN_KEY_ENTER);
            AssignKey(&(ctrl->GlobalKeys),PIN_GK_BACK,m_keys,PIN_KEY_BACK);

            AddController(ctrl);
        }
    }
}