Alexandros Frantzis (@afrantzis) commented about dlls/winewayland.drv/wayland_keyboard.c:
static void keyboard_handle_repeat_info(void *data, struct wl_keyboard *wl_keyboard, int rate, int delay) {
- FIXME("rate=%d delay=%d stub!\n", rate, delay);
- TRACE("rate=%d delay=%d\n", rate, delay);
- /* Handle non-negative rate values, ignore invalid (negative) values. A
* rate of 0 disables repeat. */
- rate = max(0, min(80, rate)) * 400 / 1000 - 1;
- delay = max(0, min(3, round(delay / 250.0) - 1));
- NtUserSystemParametersInfo(SPI_SETKEYBOARDSPEED, rate, NULL, 0);
- NtUserSystemParametersInfo(SPI_SETKEYBOARDDELAY, delay, NULL, 0);
- NtUserCallOneParam(rate > 0, NtUserCallOneParam_SetKeyboardAutoRepeat);
In the new code the `rate` variable is overwritten by the SPI speed, so on the lower edge of the wayland range rates (<5) the above doesn't work as expected.
Is this meant to interact with the -1 value from the current rate calculation?