コード例 #1
0
ファイル: RawInput.cpp プロジェクト: Drejn/ppsspp
	void ProcessKeyboard(RAWINPUT *raw, bool foreground) {
		if (menuActive && UpdateMenuActive()) {
			// Ignore keyboard input while a menu is active, it's probably interacting with the menu.
			return;
		}

		KeyInput key;
		key.deviceId = DEVICE_ID_KEYBOARD;

		if (raw->data.keyboard.Message == WM_KEYDOWN || raw->data.keyboard.Message == WM_SYSKEYDOWN) {
			key.flags = KEY_DOWN;
			key.keyCode = windowsTransTable[GetTrueVKey(raw->data.keyboard)];

			if (key.keyCode) {
				NativeKey(key);
				keyboardKeysDown.insert(key.keyCode);
			}
		} else if (raw->data.keyboard.Message == WM_KEYUP) {
			key.flags = KEY_UP;
			key.keyCode = windowsTransTable[GetTrueVKey(raw->data.keyboard)];

			if (key.keyCode) {
				NativeKey(key);

				auto keyDown = std::find(keyboardKeysDown.begin(), keyboardKeysDown.end(), key.keyCode);
				if (keyDown != keyboardKeysDown.end())
					keyboardKeysDown.erase(keyDown);
			}
		}
	}
コード例 #2
0
ファイル: RawInput.cpp プロジェクト: Drejn/ppsspp
	void ProcessMouse(RAWINPUT *raw, bool foreground) {
		if (menuActive && UpdateMenuActive()) {
			// Ignore mouse input while a menu is active, it's probably interacting with the menu.
			return;
		}

		KeyInput key;
		key.deviceId = DEVICE_ID_MOUSE;

		mouseDeltaX += raw->data.mouse.lLastX;
		mouseDeltaY += raw->data.mouse.lLastY;

		if (raw->data.mouse.usButtonFlags & RI_MOUSE_RIGHT_BUTTON_DOWN) {
			key.flags = KEY_DOWN;
			key.keyCode = windowsTransTable[VK_RBUTTON];
			NativeKey(key);
		} else if (raw->data.mouse.usButtonFlags & RI_MOUSE_RIGHT_BUTTON_UP) {
			key.flags = KEY_UP;
			key.keyCode = windowsTransTable[VK_RBUTTON];
			NativeKey(key);
		}

		// TODO : Smooth and translate to an axis every frame.
		// NativeAxis()
	}
コード例 #3
0
ファイル: RawInput.cpp プロジェクト: njh08d/ppsspp
	void ProcessMouse(HWND hWnd, RAWINPUT *raw, bool foreground) {
		if (menuActive && UpdateMenuActive()) {
			// Ignore mouse input while a menu is active, it's probably interacting with the menu.
			return;
		}

		TouchInput touch;
		touch.id = 0;
		touch.flags = TOUCH_MOVE;
		touch.x = input_state.pointer_x[0];
		touch.y = input_state.pointer_y[0];

		KeyInput key;
		key.deviceId = DEVICE_ID_MOUSE;

		mouseDeltaX += raw->data.mouse.lLastX;
		mouseDeltaY += raw->data.mouse.lLastY;

		if (raw->data.mouse.usButtonFlags & RI_MOUSE_RIGHT_BUTTON_DOWN) {
			key.flags = KEY_DOWN;
			key.keyCode = windowsTransTable[VK_RBUTTON];
			NativeTouch(touch);
			if (MouseInWindow(hWnd)) {
				NativeKey(key);
			}
			mouseRightDown = true;
		} else if (raw->data.mouse.usButtonFlags & RI_MOUSE_RIGHT_BUTTON_UP) {
			key.flags = KEY_UP;
			key.keyCode = windowsTransTable[VK_RBUTTON];
			NativeTouch(touch);
			if (MouseInWindow(hWnd)) {
				if (!mouseRightDown) {
					// This means they were focused outside, and right clicked inside.
					// Seems intentional, so send a down first.
					key.flags = KEY_DOWN;
					NativeKey(key);
					key.flags = KEY_UP;
					NativeKey(key);
				} else {
					NativeKey(key);
				}
			}
			mouseRightDown = false;
		}

		// TODO : Smooth and translate to an axis every frame.
		// NativeAxis()
	}
コード例 #4
0
ファイル: RawInput.cpp プロジェクト: Drejn/ppsspp
	void NotifyMenu() {
		UpdateMenuActive();
	}