forked from cafeberry/cafeberry
fix: ugh
This commit is contained in:
@@ -987,25 +987,83 @@ void UIController::handleKeyPress(unsigned int iPad, unsigned int key)
|
||||
released = InputManager.ButtonReleased(iPad,key); // Toggle
|
||||
|
||||
#ifdef _WINDOWS64
|
||||
// Keyboard menu input for player 0
|
||||
if (iPad == 0)
|
||||
{
|
||||
bool kbDown = false, kbPressed = false, kbReleased = false;
|
||||
switch(key)
|
||||
int vk = 0;
|
||||
switch (key)
|
||||
{
|
||||
case ACTION_MENU_UP: kbDown = g_KBMInput.IsKeyDown(VK_UP); kbPressed = g_KBMInput.IsKeyPressed(VK_UP); kbReleased = g_KBMInput.IsKeyReleased(VK_UP); break;
|
||||
case ACTION_MENU_DOWN: kbDown = g_KBMInput.IsKeyDown(VK_DOWN); kbPressed = g_KBMInput.IsKeyPressed(VK_DOWN); kbReleased = g_KBMInput.IsKeyReleased(VK_DOWN); break;
|
||||
case ACTION_MENU_LEFT: kbDown = g_KBMInput.IsKeyDown(VK_LEFT); kbPressed = g_KBMInput.IsKeyPressed(VK_LEFT); kbReleased = g_KBMInput.IsKeyReleased(VK_LEFT); break;
|
||||
case ACTION_MENU_RIGHT: kbDown = g_KBMInput.IsKeyDown(VK_RIGHT); kbPressed = g_KBMInput.IsKeyPressed(VK_RIGHT); kbReleased = g_KBMInput.IsKeyReleased(VK_RIGHT); break;
|
||||
case ACTION_MENU_OK: kbDown = g_KBMInput.IsKeyDown(VK_RETURN); kbPressed = g_KBMInput.IsKeyPressed(VK_RETURN); kbReleased = g_KBMInput.IsKeyReleased(VK_RETURN); break;
|
||||
case ACTION_MENU_A: kbDown = g_KBMInput.IsKeyDown(VK_RETURN); kbPressed = g_KBMInput.IsKeyPressed(VK_RETURN); kbReleased = g_KBMInput.IsKeyReleased(VK_RETURN); break;
|
||||
case ACTION_MENU_CANCEL: kbDown = g_KBMInput.IsKeyDown(VK_ESCAPE); kbPressed = g_KBMInput.IsKeyPressed(VK_ESCAPE); kbReleased = g_KBMInput.IsKeyReleased(VK_ESCAPE); break;
|
||||
case ACTION_MENU_B: kbDown = g_KBMInput.IsKeyDown(VK_ESCAPE); kbPressed = g_KBMInput.IsKeyPressed(VK_ESCAPE); kbReleased = g_KBMInput.IsKeyReleased(VK_ESCAPE); break;
|
||||
case ACTION_MENU_PAUSEMENU: kbDown = g_KBMInput.IsKeyDown(VK_ESCAPE); kbPressed = g_KBMInput.IsKeyPressed(VK_ESCAPE); kbReleased = g_KBMInput.IsKeyReleased(VK_ESCAPE); break;
|
||||
case ACTION_MENU_OK: case ACTION_MENU_A: vk = VK_RETURN; break;
|
||||
case ACTION_MENU_CANCEL: case ACTION_MENU_B: vk = VK_ESCAPE; break;
|
||||
case ACTION_MENU_UP: vk = VK_UP; break;
|
||||
case ACTION_MENU_DOWN: vk = VK_DOWN; break;
|
||||
case ACTION_MENU_LEFT: vk = VK_LEFT; break;
|
||||
case ACTION_MENU_RIGHT: vk = VK_RIGHT; break;
|
||||
case ACTION_MENU_X: vk = 'R'; break;
|
||||
case ACTION_MENU_Y: vk = VK_TAB; break;
|
||||
case ACTION_MENU_LEFT_SCROLL: vk = 'Q'; break;
|
||||
case ACTION_MENU_RIGHT_SCROLL: vk = 'E'; break;
|
||||
case ACTION_MENU_PAGEUP: vk = VK_PRIOR; break;
|
||||
case ACTION_MENU_PAGEDOWN: vk = VK_NEXT; break;
|
||||
}
|
||||
if (vk != 0)
|
||||
{
|
||||
if (g_KBMInput.IsKeyPressed(vk)) { pressed = true; down = true; }
|
||||
if (g_KBMInput.IsKeyReleased(vk)) { released = true; down = false; }
|
||||
if (!pressed && !released && g_KBMInput.IsKeyDown(vk)) { down = true; }
|
||||
}
|
||||
|
||||
if ((key == ACTION_MENU_OK || key == ACTION_MENU_A) && !g_KBMInput.IsMouseGrabbed())
|
||||
{
|
||||
if (m_mouseDraggingSliderId < 0 && !m_mouseClickConsumedByScene)
|
||||
{
|
||||
if (g_KBMInput.IsMouseButtonPressed(KeyboardMouseInput::MOUSE_LEFT)) { pressed = true; down = true; }
|
||||
if (g_KBMInput.IsMouseButtonReleased(KeyboardMouseInput::MOUSE_LEFT)) { released = true; down = false; }
|
||||
if (!pressed && !released && g_KBMInput.IsMouseButtonDown(KeyboardMouseInput::MOUSE_LEFT)) { down = true; }
|
||||
}
|
||||
}
|
||||
|
||||
// Right click → ACTION_MENU_X (pick up half stack in inventory)
|
||||
if (key == ACTION_MENU_X && !g_KBMInput.IsMouseGrabbed())
|
||||
{
|
||||
if (g_KBMInput.IsMouseButtonPressed(KeyboardMouseInput::MOUSE_RIGHT)) { pressed = true; down = true; }
|
||||
if (g_KBMInput.IsMouseButtonReleased(KeyboardMouseInput::MOUSE_RIGHT)) { released = true; down = false; }
|
||||
if (!pressed && !released && g_KBMInput.IsMouseButtonDown(KeyboardMouseInput::MOUSE_RIGHT)) { down = true; }
|
||||
}
|
||||
|
||||
// Scroll wheel for list scrolling — only consume the wheel value when the
|
||||
// action key actually matches, so the other direction isn't lost.
|
||||
if (!g_KBMInput.IsMouseGrabbed() && (key == ACTION_MENU_OTHER_STICK_UP || key == ACTION_MENU_OTHER_STICK_DOWN))
|
||||
{
|
||||
int wheel = g_KBMInput.PeekMouseWheel();
|
||||
if (key == ACTION_MENU_OTHER_STICK_UP && wheel > 0)
|
||||
{
|
||||
g_KBMInput.ConsumeMouseWheel();
|
||||
pressed = true;
|
||||
down = true;
|
||||
}
|
||||
else if (key == ACTION_MENU_OTHER_STICK_DOWN && wheel < 0)
|
||||
{
|
||||
g_KBMInput.ConsumeMouseWheel();
|
||||
pressed = true;
|
||||
down = true;
|
||||
}
|
||||
|
||||
// Remap scroll wheel to navigation actions. Use LEFT/RIGHT when
|
||||
// hovering a horizontal list (e.g. TexturePackList), UP/DOWN otherwise.
|
||||
if (pressed && g_KBMInput.IsKBMActive())
|
||||
{
|
||||
UIScene* pTopScene = GetTopScene(0); // using 0 as default pad for KBM
|
||||
bool isJoinMenu = pTopScene && pTopScene->getSceneType() == eUIScene_JoinMenu;
|
||||
|
||||
if (!isJoinMenu)
|
||||
{
|
||||
if (m_bMouseHoverHorizontalList)
|
||||
key = (key == ACTION_MENU_OTHER_STICK_UP) ? ACTION_MENU_LEFT : ACTION_MENU_RIGHT;
|
||||
else
|
||||
key = (key == ACTION_MENU_OTHER_STICK_UP) ? ACTION_MENU_UP : ACTION_MENU_DOWN;
|
||||
}
|
||||
}
|
||||
}
|
||||
pressed = pressed || kbPressed;
|
||||
released = released || kbReleased;
|
||||
down = down || kbDown;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user