mirror of
https://github.com/libretro/RetroArch
synced 2025-03-01 16:13:40 +00:00
Fix keyboard events missing RETROKMOD_NUMLOCK or RETROKMOD_SCROLLOCK
- Add missing numlock mod to dinput - Add missing scrolllock mod to x11 - Add missing capslock, numlock, scrolllock and meta mods to android - Add missing scrolllock mod to sdl - Add missing capslock, numlock, scrolllock and meta mods to switch - Add missing numlock mod to winraw - Add missing numlock mod to uwp
This commit is contained in:
parent
cc92ac7577
commit
e7c6d1df84
@ -987,6 +987,8 @@ static LRESULT CALLBACK wnd_proc_common(
|
|||||||
mod |= RETROKMOD_CAPSLOCK;
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
if (GetKeyState(VK_SCROLL) & 0x81)
|
if (GetKeyState(VK_SCROLL) & 0x81)
|
||||||
mod |= RETROKMOD_SCROLLOCK;
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (GetKeyState(VK_NUMLOCK) & 0x81)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
||||||
mod |= RETROKMOD_META;
|
mod |= RETROKMOD_META;
|
||||||
|
|
||||||
@ -1111,6 +1113,8 @@ static LRESULT CALLBACK wnd_proc_common_internal(HWND hwnd,
|
|||||||
mod |= RETROKMOD_CAPSLOCK;
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
if (GetKeyState(VK_SCROLL) & 0x81)
|
if (GetKeyState(VK_SCROLL) & 0x81)
|
||||||
mod |= RETROKMOD_SCROLLOCK;
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (GetKeyState(VK_NUMLOCK) & 0x81)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
||||||
mod |= RETROKMOD_META;
|
mod |= RETROKMOD_META;
|
||||||
|
|
||||||
@ -1369,6 +1373,8 @@ static LRESULT CALLBACK wnd_proc_common_dinput_internal(HWND hwnd,
|
|||||||
mod |= RETROKMOD_CAPSLOCK;
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
if (GetKeyState(VK_SCROLL) & 0x81)
|
if (GetKeyState(VK_SCROLL) & 0x81)
|
||||||
mod |= RETROKMOD_SCROLLOCK;
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (GetKeyState(VK_NUMLOCK) & 0x81)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
||||||
mod |= RETROKMOD_META;
|
mod |= RETROKMOD_META;
|
||||||
|
|
||||||
|
@ -595,6 +595,8 @@ static void x11_handle_key_event(unsigned keycode, XEvent *event,
|
|||||||
mod |= RETROKMOD_ALT;
|
mod |= RETROKMOD_ALT;
|
||||||
if (state & Mod2Mask)
|
if (state & Mod2Mask)
|
||||||
mod |= RETROKMOD_NUMLOCK;
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
|
if (state & Mod3Mask)
|
||||||
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
if (state & Mod4Mask)
|
if (state & Mod4Mask)
|
||||||
mod |= RETROKMOD_META;
|
mod |= RETROKMOD_META;
|
||||||
|
|
||||||
|
@ -875,6 +875,14 @@ static INLINE void android_input_poll_event_type_keyboard(
|
|||||||
mod |= RETROKMOD_CTRL;
|
mod |= RETROKMOD_CTRL;
|
||||||
if (meta & AMETA_SHIFT_ON)
|
if (meta & AMETA_SHIFT_ON)
|
||||||
mod |= RETROKMOD_SHIFT;
|
mod |= RETROKMOD_SHIFT;
|
||||||
|
if (meta & AMETA_CAPS_LOCK_ON)
|
||||||
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
|
if (meta & AMETA_NUM_LOCK_ON)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
|
if (meta & AMETA_SCROLL_LOCK_ON)
|
||||||
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (meta & AMETA_META_ON)
|
||||||
|
mod |= RETROKMOD_META;
|
||||||
|
|
||||||
input_keyboard_event(keydown, keyboardcode,
|
input_keyboard_event(keydown, keyboardcode,
|
||||||
keyboardcode, mod, RETRO_DEVICE_KEYBOARD);
|
keyboardcode, mod, RETRO_DEVICE_KEYBOARD);
|
||||||
|
@ -199,6 +199,26 @@ static void *dinput_init(const char *joypad_driver)
|
|||||||
return di;
|
return di;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint16_t dinput_get_active_keyboard_mods()
|
||||||
|
{
|
||||||
|
uint16_t mod = 0;
|
||||||
|
if (GetKeyState(VK_SHIFT) & 0x80)
|
||||||
|
mod |= RETROKMOD_SHIFT;
|
||||||
|
if (GetKeyState(VK_CONTROL) & 0x80)
|
||||||
|
mod |= RETROKMOD_CTRL;
|
||||||
|
if (GetKeyState(VK_MENU) & 0x80)
|
||||||
|
mod |= RETROKMOD_ALT;
|
||||||
|
if (GetKeyState(VK_CAPITAL) & 0x81)
|
||||||
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
|
if (GetKeyState(VK_SCROLL) & 0x81)
|
||||||
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (GetKeyState(VK_NUMLOCK) & 0x81)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
|
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
||||||
|
mod |= RETROKMOD_META;
|
||||||
|
return mod;
|
||||||
|
}
|
||||||
|
|
||||||
static void dinput_keyboard_mods(struct dinput_input *di, int mod)
|
static void dinput_keyboard_mods(struct dinput_input *di, int mod)
|
||||||
{
|
{
|
||||||
switch (mod)
|
switch (mod)
|
||||||
@ -212,7 +232,8 @@ static void dinput_keyboard_mods(struct dinput_input *di, int mod)
|
|||||||
|| (!vk_shift_l && (di->flags & DINP_FLAG_SHIFT_L)))
|
|| (!vk_shift_l && (di->flags & DINP_FLAG_SHIFT_L)))
|
||||||
{
|
{
|
||||||
input_keyboard_event(vk_shift_l, RETROK_LSHIFT,
|
input_keyboard_event(vk_shift_l, RETROK_LSHIFT,
|
||||||
0, RETROKMOD_SHIFT, RETRO_DEVICE_KEYBOARD);
|
0, dinput_get_active_keyboard_mods() | RETROKMOD_SHIFT,
|
||||||
|
RETRO_DEVICE_KEYBOARD);
|
||||||
if (di->flags & DINP_FLAG_SHIFT_L)
|
if (di->flags & DINP_FLAG_SHIFT_L)
|
||||||
di->flags &= ~DINP_FLAG_SHIFT_L;
|
di->flags &= ~DINP_FLAG_SHIFT_L;
|
||||||
else
|
else
|
||||||
@ -223,7 +244,8 @@ static void dinput_keyboard_mods(struct dinput_input *di, int mod)
|
|||||||
|| (!vk_shift_r && (di->flags & DINP_FLAG_SHIFT_R)))
|
|| (!vk_shift_r && (di->flags & DINP_FLAG_SHIFT_R)))
|
||||||
{
|
{
|
||||||
input_keyboard_event(vk_shift_r, RETROK_RSHIFT,
|
input_keyboard_event(vk_shift_r, RETROK_RSHIFT,
|
||||||
0, RETROKMOD_SHIFT, RETRO_DEVICE_KEYBOARD);
|
0, dinput_get_active_keyboard_mods() | RETROKMOD_SHIFT,
|
||||||
|
RETRO_DEVICE_KEYBOARD);
|
||||||
if (di->flags & DINP_FLAG_SHIFT_R)
|
if (di->flags & DINP_FLAG_SHIFT_R)
|
||||||
di->flags &= ~DINP_FLAG_SHIFT_R;
|
di->flags &= ~DINP_FLAG_SHIFT_R;
|
||||||
else
|
else
|
||||||
@ -246,7 +268,8 @@ static void dinput_keyboard_mods(struct dinput_input *di, int mod)
|
|||||||
else if (!vk_alt_l && (di->flags & DINP_FLAG_ALT_L))
|
else if (!vk_alt_l && (di->flags & DINP_FLAG_ALT_L))
|
||||||
{
|
{
|
||||||
input_keyboard_event(vk_alt_l, RETROK_LALT,
|
input_keyboard_event(vk_alt_l, RETROK_LALT,
|
||||||
0, RETROKMOD_ALT, RETRO_DEVICE_KEYBOARD);
|
0, dinput_get_active_keyboard_mods() | RETROKMOD_ALT,
|
||||||
|
RETRO_DEVICE_KEYBOARD);
|
||||||
if (di->flags & DINP_FLAG_ALT_L)
|
if (di->flags & DINP_FLAG_ALT_L)
|
||||||
di->flags &= ~DINP_FLAG_ALT_L;
|
di->flags &= ~DINP_FLAG_ALT_L;
|
||||||
else
|
else
|
||||||
|
@ -442,6 +442,11 @@ static void sdl_input_poll(void *data)
|
|||||||
if (event.key.keysym.mod & KMOD_CAPS)
|
if (event.key.keysym.mod & KMOD_CAPS)
|
||||||
mod |= RETROKMOD_CAPSLOCK;
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
|
|
||||||
|
/* KMOD_SCROLL was added in SDL 2.0.18, use the raw number
|
||||||
|
to stay backwards compatible with older versions */
|
||||||
|
if (event.key.keysym.mod & 0x8000 /*KMOD_SCROLL*/)
|
||||||
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
|
||||||
input_keyboard_event(event.type == SDL_KEYDOWN, code, code, mod,
|
input_keyboard_event(event.type == SDL_KEYDOWN, code, code, mod,
|
||||||
RETRO_DEVICE_KEYBOARD);
|
RETRO_DEVICE_KEYBOARD);
|
||||||
}
|
}
|
||||||
|
@ -210,12 +210,20 @@ static void switch_input_poll(void *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
hidGetKeyboardStates(&kbd_state, 1);
|
hidGetKeyboardStates(&kbd_state, 1);
|
||||||
if (hidKeyboardStateGetKey(&kbd_state, HidKeyboardKey_LeftAlt) || hidKeyboardStateGetKey(&kbd_state, HidKeyboardKey_RightAlt))
|
if (kbd_state.modifiers & (HidKeyboardModifier_LeftAlt | HidKeyboardModifier_RightAlt))
|
||||||
mod |= RETROKMOD_ALT;
|
mod |= RETROKMOD_ALT;
|
||||||
if (hidKeyboardStateGetKey(&kbd_state, HidKeyboardKey_LeftControl) || hidKeyboardStateGetKey(&kbd_state, HidKeyboardKey_RightControl))
|
if (kbd_state.modifiers & HidKeyboardModifier_Control)
|
||||||
mod |= RETROKMOD_CTRL;
|
mod |= RETROKMOD_CTRL;
|
||||||
if (hidKeyboardStateGetKey(&kbd_state, HidKeyboardKey_LeftShift) || hidKeyboardStateGetKey(&kbd_state, HidKeyboardKey_RightShift))
|
if (kbd_state.modifiers & HidKeyboardModifier_Shift)
|
||||||
mod |= RETROKMOD_SHIFT;
|
mod |= RETROKMOD_SHIFT;
|
||||||
|
if (kbd_state.modifiers & HidKeyboardModifier_Gui)
|
||||||
|
mod |= RETROKMOD_META;
|
||||||
|
if (kbd_state.modifiers & HidKeyboardModifier_CapsLock)
|
||||||
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
|
if (kbd_state.modifiers & HidKeyboardModifier_ScrollLock)
|
||||||
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (kbd_state.modifiers & HidKeyboardModifier_NumLock)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
|
|
||||||
for (i = 0; i < SWITCH_NUM_SCANCODES; i++)
|
for (i = 0; i < SWITCH_NUM_SCANCODES; i++)
|
||||||
{
|
{
|
||||||
|
@ -581,6 +581,8 @@ static LRESULT CALLBACK winraw_callback(
|
|||||||
mod |= RETROKMOD_CAPSLOCK;
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
if (GetKeyState(VK_SCROLL) & 0x81)
|
if (GetKeyState(VK_SCROLL) & 0x81)
|
||||||
mod |= RETROKMOD_SCROLLOCK;
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if (GetKeyState(VK_NUMLOCK) & 0x81)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
|
||||||
mod |= RETROKMOD_META;
|
mod |= RETROKMOD_META;
|
||||||
|
|
||||||
|
@ -636,6 +636,8 @@ void App::OnAcceleratorKey(CoreDispatcher^ sender, AcceleratorKeyEventArgs^ args
|
|||||||
mod |= RETROKMOD_CAPSLOCK;
|
mod |= RETROKMOD_CAPSLOCK;
|
||||||
if ((window->GetKeyState(VirtualKey::Scroll) & CoreVirtualKeyStates::Locked) == CoreVirtualKeyStates::Locked)
|
if ((window->GetKeyState(VirtualKey::Scroll) & CoreVirtualKeyStates::Locked) == CoreVirtualKeyStates::Locked)
|
||||||
mod |= RETROKMOD_SCROLLOCK;
|
mod |= RETROKMOD_SCROLLOCK;
|
||||||
|
if ((window->GetKeyState(VirtualKey::NumberKeyLock) & CoreVirtualKeyStates::Locked) == CoreVirtualKeyStates::Locked)
|
||||||
|
mod |= RETROKMOD_NUMLOCK;
|
||||||
if ((window->GetKeyState(VirtualKey::LeftWindows) & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down ||
|
if ((window->GetKeyState(VirtualKey::LeftWindows) & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down ||
|
||||||
(window->GetKeyState(VirtualKey::RightWindows) & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down)
|
(window->GetKeyState(VirtualKey::RightWindows) & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down)
|
||||||
mod |= RETROKMOD_META;
|
mod |= RETROKMOD_META;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user