Rémi Bernon (@rbernon) commented about dlls/winewayland.drv/wayland_keyboard.c:
input.ki.wScan = (scan & 0x300) ? scan + 0xdf00 : scan; input.ki.dwFlags = KEYEVENTF_SCANCODE; if (scan & ~0xff) input.ki.dwFlags |= KEYEVENTF_EXTENDEDKEY; + /* these keys are extended despite not having an extended scan code */ + else switch (key) + { + case KEY_NUMLOCK: + case KEY_RIGHTSHIFT: + input.ki.dwFlags |= KEYEVENTF_EXTENDEDKEY; + break; + default: break; + }
I think driver should only need to care about sending some normalized scancodes to wineserver, and the rest of native behavior be implemented over that. So, this probably would better be done in wineserver or win32u, and it would benefit all drivers at once. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11105#note_142594