From: n3rdopolis Date: Fri, 6 Jun 2025 03:49:53 +0000 (-0400) Subject: ply-input-device: Reboot when users press Ctrl+Alt+Delete X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6a32765ae8eb55f10fb823f57baf6d89162bb521;p=thirdparty%2Fplymouth.git ply-input-device: Reboot when users press Ctrl+Alt+Delete --- diff --git a/src/libply-splash-core/ply-input-device.c b/src/libply-splash-core/ply-input-device.c index 643ac34a..d10033c9 100644 --- a/src/libply-splash-core/ply-input-device.c +++ b/src/libply-splash-core/ply-input-device.c @@ -119,6 +119,9 @@ apply_key_to_input_buffer (ply_input_device_t *input_device, int keycode, ply_buffer_t *input_buffer) { + xkb_mod_index_t control_mask = (UINT32_C (1) << xkb_keymap_mod_get_index (input_device->keymap, XKB_MOD_NAME_CTRL)); + xkb_mod_index_t alt_mask = (UINT32_C (1) << xkb_keymap_mod_get_index (input_device->keymap, XKB_MOD_NAME_ALT)); + ssize_t character_size; bool was_compose_sequence; @@ -141,6 +144,13 @@ apply_key_to_input_buffer (ply_input_device_t *input_device, case XKB_KEY_NoSymbol: break; default: + if (symbol == XKB_KEY_Delete) { + xkb_mod_mask_t mods_depressed = xkb_state_serialize_mods (input_device->keyboard_state, XKB_STATE_DEPRESSED); + if (mods_depressed == (control_mask | alt_mask)) { + kill (1, SIGINT); + } + } + character_size = xkb_state_key_get_utf8 (input_device->keyboard_state, keycode, NULL, 0); if (character_size > 0) {