Handle NumPad events when NumLock is disabled
PR <https://github.com/Genymobile/scrcpy/pull/1188>
Fixes <https://github.com/Genymobile/scrcpy/issues/1048>
@@ -94,6 +94,23 @@ convert_keycode(SDL_Keycode from, enum android_keycode *to, uint16_t mod,
MAP(SDLK_UP, AKEYCODE_DPAD_UP);
}
+ if (!(mod & (KMOD_NUM | KMOD_SHIFT))) {
+ // Handle Numpad events when Num Lock is disabled
+ // If SHIFT is pressed, a text event will be sent instead
+ switch(from) {
+ MAP(SDLK_KP_0, AKEYCODE_INSERT);
+ MAP(SDLK_KP_1, AKEYCODE_MOVE_END);
+ MAP(SDLK_KP_2, AKEYCODE_DPAD_DOWN);
+ MAP(SDLK_KP_3, AKEYCODE_PAGE_DOWN);
+ MAP(SDLK_KP_4, AKEYCODE_DPAD_LEFT);
+ MAP(SDLK_KP_6, AKEYCODE_DPAD_RIGHT);
+ MAP(SDLK_KP_7, AKEYCODE_MOVE_HOME);
+ MAP(SDLK_KP_8, AKEYCODE_DPAD_UP);
+ MAP(SDLK_KP_9, AKEYCODE_PAGE_UP);
+ MAP(SDLK_KP_PERIOD, AKEYCODE_FORWARD_DEL);
+ }
+ }
+
if (prefer_text) {
// do not forward alpha and space key events
return false;
