mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-23 06:15:38 +00:00
Qt: Fix default arrow key binding on MacOS
This commit is contained in:
parent
f80ead6a21
commit
a3f6930072
|
@ -517,5 +517,22 @@ const char* InputManager::ConvertHostKeyboardCodeToIcon(u32 code)
|
||||||
|
|
||||||
u32 QtUtils::KeyEventToCode(const QKeyEvent* ev)
|
u32 QtUtils::KeyEventToCode(const QKeyEvent* ev)
|
||||||
{
|
{
|
||||||
return static_cast<u32>(ev->key()) | (static_cast<u32>(ev->modifiers()) & static_cast<u32>(Qt::KeypadModifier));
|
int key = ev->key();
|
||||||
|
Qt::KeyboardModifiers modifiers = ev->modifiers();
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
|
// On macOS, Qt applies the Keypad modifier regardless of whether the arrow keys, or numpad was pressed.
|
||||||
|
// The only way to differentiate between the keypad and the arrow keys is by the text.
|
||||||
|
// Hopefully some keyboard layouts don't change the numpad positioning...
|
||||||
|
if (modifiers & Qt::KeypadModifier && key >= Qt::Key_Insert && key <= Qt::Key_PageDown)
|
||||||
|
{
|
||||||
|
if (ev->text().isEmpty())
|
||||||
|
{
|
||||||
|
// Drop the modifier, because it's probably not actually a numpad push.
|
||||||
|
modifiers &= ~Qt::KeypadModifier;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return static_cast<u32>(key) | (static_cast<u32>(modifiers) & static_cast<u32>(Qt::KeypadModifier));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue