예제 #1
0
void
KeyDlg::ExecFrame()
{
    int         key      = 0;
    int         shift    = 0;
    int         joy      = 0;
    Joystick*   joystick = Joystick::GetInstance();

    if (joystick) joystick->Acquire();

    for (int i = 0; i < 256; i++) {
        int vk = KeyMap::GetMappableVKey(i);

        if (vk >= KEY_JOY_1 && vk <= KEY_JOY_16) {
            if (joystick && joystick->KeyDown(vk))
                joy = vk;
        }

        else if (vk >= KEY_POV_0_UP && vk <= KEY_POV_3_RIGHT) {
            if (joystick && joystick->KeyDown(vk))
                joy = vk;
        }

        else if (GetAsyncKeyState(vk)) {
            if (vk == VK_SHIFT || vk == VK_MENU)
                shift = vk;
            else
                key = vk;
        }
    }

    if (key) {
        key_key = key;
        key_shift = shift;

        new_key->SetText(KeyMap::DescribeKey(key, shift, joy));
    }

    else if (joy) {
        key_joy = joy;
        new_key->SetText(KeyMap::DescribeKey(key, shift, joy));
    }
}
예제 #2
0
void
JoyDlg::ExecFrame()
{
	if (selected_axis >= 0 && selected_axis < 4) {
		Joystick* joystick = Joystick::GetInstance();
		if (joystick) {
			joystick->Acquire();

			int delta = 1000;

			for (int i = 0; i < 8; i++) {
				int a = Joystick::ReadRawAxis(i + KEY_JOY_AXIS_X);

				int d = a - samples[i];
				if (d < 0) d = -d;

				if (d > delta && samples[i] < 1e6) {
					delta       = d;
					sample_axis = i;
				}

				samples[i] = a;
			}

			Button* b = axis_button[selected_axis];

			if (sample_axis >= 0) {
				b->SetText(Game::GetText(joy_axis_names[sample_axis]));
				map_axis[selected_axis] = sample_axis;
			}

			else
			b->SetText(Game::GetText("JoyDlg.select"));
		}
	}
}