wl_backend: handle Ctrl+Alt+Fn for VT switching in standalone mode
Intercept XF86Switch_VT_N keysyms and call wlr_session_change_vt() to switch virtual terminals when running on DRM/KMS.
This commit is contained in:
parent
90cd607b1e
commit
0801fb7d86
|
|
@ -1667,6 +1667,17 @@ handle_keyboard_key(struct wl_listener *listener, void *data)
|
|||
uint32_t keycode = event->keycode + 8; /* evdev → XKB keycode */
|
||||
uint32_t modifiers = wlr_keyboard_get_modifiers(kb);
|
||||
|
||||
/* VT switching: Ctrl+Alt+Fn */
|
||||
if (wl_state.session && event->state == WL_KEYBOARD_KEY_STATE_PRESSED &&
|
||||
(modifiers & (WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT)) ==
|
||||
(WLR_MODIFIER_CTRL | WLR_MODIFIER_ALT)) {
|
||||
xkb_keysym_t sym = xkb_state_key_get_one_sym(kb->xkb_state, keycode);
|
||||
if (sym >= XKB_KEY_XF86Switch_VT_1 && sym <= XKB_KEY_XF86Switch_VT_12) {
|
||||
wlr_session_change_vt(wl_state.session, sym - XKB_KEY_XF86Switch_VT_1 + 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
|
||||
/* Try WM shortcut dispatch first */
|
||||
if (wWaylandKeyPress((unsigned int)keycode, (unsigned int)modifiers))
|
||||
|
|
|
|||
Loading…
Reference in New Issue