2QL2H4REDZT46FI3LQ4RYEMQYZBNBK3IC3KH3XERAJU3NCZWMNYQC L4X3HG56S4DS7QJTLMLP47BGCPF2TM5XRUFEN56BTWYJICBYUUEAC QL6IFEPOHHUDBY2SGUZNNIRTDSZOSRJIHJKVU54LZSGTPTFPM2UAC IH7QAHDQUTGT7KS2IP7SLDHYDEDX4BCQ4KDRYKIGV5Y477X3ZABQC S7RXJJZG4IEIVLPHEWFT5M2T3SRRO5US5SYBPXSYSWJJLXAKNNPAC E7UO6NRGXFDMBU3BSJYRDNOA3Y7VHD7NWPHI5PHCPHQF6ZNOPZLQC 7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC D425ND7AT3F7QJ3CCSESMVDOC3J5C5P32M5SJDBHECZJXLHNQ2FAC J6OSBEBQXZR5JZ5TOCCUPELBPUVEQULGCXURXLPY7WFYTDEQOU2AC JLUWRE5FNOBBXIPF2HQELX2JGECPHXFVSUCNSU27O2335NGJ7KMAC 7JQD43QS55Q2YI6OQ6BGVAHSHKQHI3TKD6PXIKYKJZXOVOWFHMWAC ZOOCZQBGZ4PCOU54EPPUPWNOIFWCM5RMZ4EFL2WFR7LFJTAMHZGAC 6LVZRZGDURMWBUBXHFGV4HGB7L5M2FKCYGJCAU3X2PK74VJQ6RCAC TZP6PT5SUMQJO4YUGALUU3R4RYQREDLZXWAOKD6N3QDROICWHRBAC 2ZRKX4A24W4WNSLJNPKP3FWB3Y3UCYLWWESTC65P45BQFSJKS4PQC O5JVMDEEKP334BAYMJ6HHXROW4X4WC24JHCYZTKJRQE5UGYXV7YQC 7XCGFU3GX4TQXZBOU7GFAQ62EEOTVRNWFYQGI3XULFPSUKDZ2EYAC RDEYLQVXEGPQXXDILJAIJ67TYZ2YHUO5WRWQTEIOPMJGT7EAKASQC FNGIZYDU5274CDE27IONZBA4JMXI4SQXEDIVTMVESK7A44XIJ7FAC 6XZIQSMIVP2GZ5S3UCKEVNDSLTHSQEVSXLV4UIFF3G3SRCGJPXYAC Y2BB47FLZ2TQKPOULIZCKQKCCX75DT7HEPPEJOURE26OD6VD6ZUAC keyboard->modifiers.notify = keypressmod;wl_signal_add(&device->keyboard->events.modifiers, &keyboard->modifiers);keyboard->key.notify = keypress;wl_signal_add(&device->keyboard->events.key, &keyboard->key);
kb->modifiers.notify = keypressmod;wl_signal_add(&device->keyboard->events.modifiers, &kb->modifiers);kb->key.notify = keypress;wl_signal_add(&device->keyboard->events.key, &kb->key);
uint32_t mods = wlr_keyboard_get_modifiers(keyboard->device->keyboard);if (event->state == WLR_KEY_PRESSED) {/* On _press_, attempt to process a compositor keybinding. */for (int i = 0; i < nsyms; i++) {
uint32_t mods = wlr_keyboard_get_modifiers(kb->device->keyboard);/* On _press_, attempt to process a compositor keybinding. */if (event->state == WLR_KEY_PRESSED)for (int i = 0; i < nsyms; i++)
if (!c) {/* If there's no client under the cursor, set the cursor image to a* default. This is what makes the cursor image appear when you move it* around the screen, not over any clients. */
/* If there's no client under the cursor, set the cursor image to a* default. This is what makes the cursor image appear when you move it* around the screen, not over any clients. */if (!c)
Client *c = xytoclient(cursor->x, cursor->y,&surface, &sx, &sy);if (!c) {
Client *c = xytoclient(cursor->x, cursor->y, &surface, &sx, &sy);if (!c)
Client *c = xytoclient(cursor->x, cursor->y,&surface, &sx, &sy);if (!c) {
Client *c = xytoclient(cursor->x, cursor->y, &surface, &sx, &sy);if (!c)
* actually has pointer focus first. */if (focused_client == event->seat_client) {/* Once we've vetted the client, we can tell the cursor to use the* provided surface as the cursor image. It will set the hardware cursor* on the output that it's currently on and continue to do so as the* cursor moves between outputs. */
* actually has pointer focus first. If so, we can tell the cursor to* use the provided surface as the cursor image. It will set the* hardware cursor on the output that it's currently on and continue to* do so as the cursor moves between outputs. */if (event->seat_client == seat->pointer_state.focused_client)