Switch VT on Ctrl+Alt+F<n>

Only works when switching to fbcon for now. We need to stop
page-flipping when the DRM FD is paused to support switching to another
compositor.

References: https://github.com/Plagman/gamescope/issues/6
This commit is contained in:
Simon Ser 2020-05-12 11:13:20 +02:00
parent 16d74b8e15
commit dced8a88da
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48

View file

@ -134,6 +134,15 @@ static void wlserver_handle_key(struct wl_listener *listener, void *data)
struct wlserver_keyboard *keyboard = wl_container_of( listener, keyboard, key ); struct wlserver_keyboard *keyboard = wl_container_of( listener, keyboard, key );
struct wlr_event_keyboard_key *event = data; struct wlr_event_keyboard_key *event = data;
xkb_keycode_t keycode = event->keycode + 8;
xkb_keysym_t keysym = xkb_state_key_get_one_sym(keyboard->device->keyboard->xkb_state, keycode);
if (wlserver.wlr.session && event->state == WLR_KEY_PRESSED && keysym >= XKB_KEY_XF86Switch_VT_1 && keysym <= XKB_KEY_XF86Switch_VT_12) {
unsigned vt = keysym - XKB_KEY_XF86Switch_VT_1 + 1;
wlr_session_change_vt(wlserver.wlr.session, vt);
return;
}
wlr_seat_set_keyboard( wlserver.wlr.seat, keyboard->device); wlr_seat_set_keyboard( wlserver.wlr.seat, keyboard->device);
wlr_seat_keyboard_notify_key( wlserver.wlr.seat, event->time_msec, event->keycode, event->state ); wlr_seat_keyboard_notify_key( wlserver.wlr.seat, event->time_msec, event->keycode, event->state );
} }