qxkbcommon: fix isKeypad

This amends a34e81ab8be6445877e040b1afb85deeaa725f86 .

The previous range comparison doesn't work since XKB_KEY_KP_9 is 0xffb9
while XKB_KEY_KP_Equal is 0xffbd. Change to an explicit switch.

Pick-to: 6.5 6.2 5.15
Change-Id: I3a340bac61fb074eef505ef9b06300a6468877f1
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Liang Qi <liang.qi@qt.io>
(cherry picked from commit daa5f7bd5f3951e459f10666a8001c8a0076e827)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 56247e4a327308b0314ef19cb29396d0bd0d71e0)
This commit is contained in:
Yifan Zhu 2024-03-11 09:08:25 -07:00 committed by Qt Cherry-pick Bot
parent 282f30ab09
commit eb82e4437a

View File

@ -63,7 +63,46 @@ public:
return sym >= 0x20 && sym <= 0xff;
}
static bool isKeypad(xkb_keysym_t sym) {
return sym >= XKB_KEY_KP_Space && sym <= XKB_KEY_KP_9;
switch (sym) {
case XKB_KEY_KP_Space:
case XKB_KEY_KP_Tab:
case XKB_KEY_KP_Enter:
case XKB_KEY_KP_F1:
case XKB_KEY_KP_F2:
case XKB_KEY_KP_F3:
case XKB_KEY_KP_F4:
case XKB_KEY_KP_Home:
case XKB_KEY_KP_Left:
case XKB_KEY_KP_Up:
case XKB_KEY_KP_Right:
case XKB_KEY_KP_Down:
case XKB_KEY_KP_Prior:
case XKB_KEY_KP_Next:
case XKB_KEY_KP_End:
case XKB_KEY_KP_Begin:
case XKB_KEY_KP_Insert:
case XKB_KEY_KP_Delete:
case XKB_KEY_KP_Equal:
case XKB_KEY_KP_Multiply:
case XKB_KEY_KP_Add:
case XKB_KEY_KP_Separator:
case XKB_KEY_KP_Subtract:
case XKB_KEY_KP_Decimal:
case XKB_KEY_KP_Divide:
case XKB_KEY_KP_0:
case XKB_KEY_KP_1:
case XKB_KEY_KP_2:
case XKB_KEY_KP_3:
case XKB_KEY_KP_4:
case XKB_KEY_KP_5:
case XKB_KEY_KP_6:
case XKB_KEY_KP_7:
case XKB_KEY_KP_8:
case XKB_KEY_KP_9:
return true;
default:
return false;
}
}
static void setXkbContext(QPlatformInputContext *inputContext, struct xkb_context *context);