void LoadConfig() { FILE *f; char str[256]; bool have_user_setting = false; if (!conf) conf = new PADconf; conf->init(); const std::string iniFile(s_strIniPath + "OnePAD.ini"); f = fopen(iniFile.c_str(), "r"); if (f == NULL) { printf("OnePAD: failed to load ini %s\n", iniFile.c_str()); SaveConfig(); //save and return return; } u32 value; if (fscanf(f, "log = %d\n", &value) == 0) return; conf->log = value; if (fscanf(f, "options = %d\n", &value) == 0) return; conf->options = value; if (fscanf(f, "mouse_sensibility = %d\n", &value) == 0) return; conf->sensibility = value; if (fscanf(f, "joy_pad_map = %d\n", &value) == 0) return; conf->joyid_map = value; if (fscanf(f, "ff_intensity = %d\n", &value) == 0) return; conf->ff_intensity = value; for (int pad = 0; pad < 2; pad++) { for (int key = 0; key < MAX_KEYS; key++) { sprintf(str, "[%d][%d] = 0x%%x\n", pad, key); u32 temp = 0; if (fscanf(f, str, &temp) == 0) temp = 0; set_key(pad, key, temp); if (temp && pad == 0) have_user_setting = true; } } u32 pad; u32 keysym; u32 index; while( fscanf(f, "PAD %d:KEYSYM 0x%x = %d\n", &pad, &keysym, &index) != EOF ) { set_keyboad_key(pad, keysym, index); if(pad == 0) have_user_setting = true; } fclose(f); if (!have_user_setting) DefaultKeyboardValues(); }
void config_key(int pad, int key) { bool captured = false; u32 key_pressed = 0; // save the joystick states UpdateJoysticks(); while (!captured) { vector<JoystickInfo*>::iterator itjoy; if (PollX11KeyboardMouseEvent(key_pressed)) { // special case for keyboard/mouse to handle multiple keys // Note: key_pressed == 0 when ESC is hit to abort the capture if (key_pressed > 0) set_keyboad_key(pad, key_pressed, key); captured = true; break; } SDL_JoystickUpdate(); itjoy = s_vjoysticks.begin(); while ((itjoy != s_vjoysticks.end()) && (!captured)) { if ((*itjoy)->PollButtons(key_pressed)) { set_key(pad, key, key_pressed); captured = true; break; } if ((*itjoy)->PollAxes(key_pressed)) { set_key(pad, key, key_pressed); captured = true; break; } if ((*itjoy)->PollHats(key_pressed)) { set_key(pad, key, key_pressed); captured = true; break; } itjoy++; } } PAD_LOG("%s\n", KeyName(pad, key).c_str()); }
void Dialog::config_key(int pad, int key) { bool captured = false; u32 key_pressed = 0; // I don't have any guarantee that not-yet-pressed state is egual to released state GamePad::UpdateReleaseState(); while (!captured) { vector<GamePad *>::iterator itjoy; if (PollX11KeyboardMouseEvent(key_pressed)) { // special case for keyboard/mouse to handle multiple keys // Note: key_pressed == 0 when ESC is hit to abort the capture if (key_pressed > 0) { clear_key(pad, key); set_keyboad_key(pad, key_pressed, key); m_simulatedKeys[pad][key] = key_pressed; m_map_images[pad][key_pressed] = key; } captured = true; } else { GamePad::UpdateGamePadState(); itjoy = s_vgamePad.begin(); while ((itjoy != s_vgamePad.end()) && (!captured)) { if ((*itjoy)->PollButtons(key_pressed)) { clear_key(pad, key); set_key(pad, key, key_pressed); m_map_images[pad][key_pressed] = key; captured = true; } else if ((*itjoy)->PollAxes(key_pressed)) { clear_key(pad, key); set_key(pad, key, key_pressed); m_map_images[pad][key_pressed] = key; captured = true; } else if ((*itjoy)->PollHats(key_pressed)) { clear_key(pad, key); set_key(pad, key, key_pressed); m_map_images[pad][key_pressed] = key; captured = true; } ++itjoy; } } } m_bt_gamepad[pad][key]->SetLabel( KeyName(pad, key, m_simulatedKeys[pad][key]).c_str()); }
void DefaultKeyboardValues() { set_keyboad_key(0, SDLK_a, PAD_L2); set_keyboad_key(0, SDLK_SEMICOLON, PAD_R2); set_keyboad_key(0, SDLK_w, PAD_L1); set_keyboad_key(0, SDLK_p, PAD_R1); set_keyboad_key(0, SDLK_i, PAD_TRIANGLE); set_keyboad_key(0, SDLK_l, PAD_CIRCLE); set_keyboad_key(0, SDLK_k, PAD_CROSS); set_keyboad_key(0, SDLK_j, PAD_SQUARE); set_keyboad_key(0, SDLK_v, PAD_SELECT); set_keyboad_key(0, SDLK_n, PAD_START); set_keyboad_key(0, SDLK_e, PAD_UP); set_keyboad_key(0, SDLK_f, PAD_RIGHT); set_keyboad_key(0, SDLK_d, PAD_DOWN); set_keyboad_key(0, SDLK_s, PAD_LEFT); }