diff --git a/input.c b/input.c index 8be6639d..06f5b731 100644 --- a/input.c +++ b/input.c @@ -1207,9 +1207,7 @@ kitty_kbd_protocol(struct seat *seat, struct terminal *term, case XKB_KEY_Page_Down: key = 6; final = '~'; break; case XKB_KEY_Home: key = 1; final = 'H'; break; case XKB_KEY_End: key = 1; final = 'F'; break; - //case XKB_KEY_Caps_Lock: key = 57358; final = 'u'; break; case XKB_KEY_Scroll_Lock: key = 57359; final = 'u'; break; - //case XKB_KEY_Num_Lock: key = 57360; final = 'u'; break; case XKB_KEY_Print: key = 57361; final = 'u'; break; case XKB_KEY_Pause: key = 57362; final = 'u'; break; case XKB_KEY_Menu: key = 57363; final = 'u'; break; @@ -1278,6 +1276,20 @@ kitty_kbd_protocol(struct seat *seat, struct terminal *term, case XKB_KEY_KP_Delete: key = 57426; final = 'u'; break; case XKB_KEY_KP_Begin: key = 1; final = 'E'; break; + case XKB_KEY_Caps_Lock: + if (seat->kbd.mod_caps == XKB_MOD_INVALID) { + key = 57358; + final = 'u'; + } + break; + + case XKB_KEY_Num_Lock: + if (seat->kbd.mod_num == XKB_MOD_INVALID) { + key = 57360; + final = 'u'; + } + break; + default: if (count > 0) { if (effective == 0) {