Пример #1
0
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();
}
Пример #2
0
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());
}
Пример #3
0
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());
}
Пример #4
0
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);
}