mirror of
https://github.com/labwc/labwc.git
synced 2025-11-04 13:30:07 -05:00
parent
238fab1518
commit
5f0c2d75b5
1 changed files with 30 additions and 1 deletions
|
|
@ -1,6 +1,20 @@
|
||||||
|
#include <wlr/backend/multi.h>
|
||||||
|
#include <wlr/backend/session.h>
|
||||||
#include "common/log.h"
|
#include "common/log.h"
|
||||||
#include "labwc.h"
|
#include "labwc.h"
|
||||||
|
|
||||||
|
static void
|
||||||
|
change_vt(struct server *server, unsigned int vt)
|
||||||
|
{
|
||||||
|
if (!wlr_backend_is_multi(server->backend)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
struct wlr_session *session = wlr_backend_get_session(server->backend);
|
||||||
|
if (session) {
|
||||||
|
wlr_session_change_vt(session, vt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
keyboard_modifiers_notify(struct wl_listener *listener, void *data)
|
keyboard_modifiers_notify(struct wl_listener *listener, void *data)
|
||||||
{
|
{
|
||||||
|
|
@ -63,6 +77,10 @@ keyboard_key_notify(struct wl_listener *listener, void *data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < nsyms; i++) {
|
||||||
|
printf("m=%d; s=%d\n", modifiers, syms[i]);
|
||||||
|
}
|
||||||
|
|
||||||
/* Handle compositor key bindings */
|
/* Handle compositor key bindings */
|
||||||
if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
|
if (event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
|
||||||
for (int i = 0; i < nsyms; i++) {
|
for (int i = 0; i < nsyms; i++) {
|
||||||
|
|
@ -70,8 +88,19 @@ keyboard_key_notify(struct wl_listener *listener, void *data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Catch C-A-F1 to C-A-F12 to change tty */
|
||||||
|
if (!handled && event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
|
||||||
|
for (int i = 0; i < nsyms; i++) {
|
||||||
|
unsigned int vt = syms[i] - XKB_KEY_XF86Switch_VT_1 + 1;
|
||||||
|
if (vt >= 1 && vt <= 12) {
|
||||||
|
change_vt(server, vt);
|
||||||
|
handled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Otherwise, pass it to the client. */
|
||||||
if (!handled) {
|
if (!handled) {
|
||||||
/* Otherwise, we pass it along to the client. */
|
|
||||||
wlr_seat_set_keyboard(wlr_seat, device);
|
wlr_seat_set_keyboard(wlr_seat, device);
|
||||||
wlr_seat_keyboard_notify_key(wlr_seat, event->time_msec,
|
wlr_seat_keyboard_notify_key(wlr_seat, event->time_msec,
|
||||||
event->keycode, event->state);
|
event->keycode, event->state);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue