# HG changeset patch # User Sam Lantinga # Date 1541023280 25200 # Node ID d9a16c76d8d1df409117ac19c4dfcf77b2096fd1 # Parent 0f9e74a94e62218b0a425cb9fd13d1d4201cb69a Fixed bug 4347 - Keyboard LEDs don't work on linux console Rainer Sabelka When using SLD2 on a Linux console with the KMS/DRM video backend and Linux evdev keyboard support, the caps lock, scroll lock, and num lock leds do not work. The attached patch adds ioctls for setting the LED state in SDL_evdev_kbd.c diff -r 0f9e74a94e62 -r d9a16c76d8d1 src/core/linux/SDL_evdev_kbd.c --- a/src/core/linux/SDL_evdev_kbd.c Wed Oct 31 10:18:05 2018 -0700 +++ b/src/core/linux/SDL_evdev_kbd.c Wed Oct 31 15:01:20 2018 -0700 @@ -510,17 +510,19 @@ static int vc_kbd_led(SDL_EVDEV_keyboard_state *kbd, int flag) { - return ((kbd->ledflagstate >> flag) & 1); + return (kbd->ledflagstate & flag) != 0; } static void set_vc_kbd_led(SDL_EVDEV_keyboard_state *kbd, int flag) { - kbd->ledflagstate |= 1 << flag; + kbd->ledflagstate |= flag; + ioctl(kbd->console_fd, KDSETLED, (unsigned long)(kbd->ledflagstate)); } static void clr_vc_kbd_led(SDL_EVDEV_keyboard_state *kbd, int flag) { - kbd->ledflagstate &= ~(1 << flag); + kbd->ledflagstate &= ~flag; + ioctl(kbd->console_fd, KDSETLED, (unsigned long)(kbd->ledflagstate)); } static void chg_vc_kbd_lock(SDL_EVDEV_keyboard_state *kbd, int flag) @@ -535,7 +537,8 @@ static void chg_vc_kbd_led(SDL_EVDEV_keyboard_state *kbd, int flag) { - kbd->ledflagstate ^= 1 << flag; + kbd->ledflagstate ^= flag; + ioctl(kbd->console_fd, KDSETLED, (unsigned long)(kbd->ledflagstate)); } /*