static void keyboard_handle_key(void *data, struct wl_keyboard *keyboard, uint32_t serial, uint32_t time, uint32_t key, uint32_t state) { (void)serial; (void)time; (void)keyboard; int value = 1; gfx_ctx_wayland_data_t *wl = (gfx_ctx_wayland_data_t*)data; if (state == WL_KEYBOARD_KEY_STATE_PRESSED) { BIT_SET(wl->input.key_state, key); value = 1; } else if (state == WL_KEYBOARD_KEY_STATE_RELEASED) { BIT_CLEAR(wl->input.key_state, key); value = 0; } #ifdef HAVE_XKBCOMMON if (handle_xkb(key, value) == 0) return; #endif input_keyboard_event(value, rarch_keysym_lut[key], 0, 0, RETRO_DEVICE_KEYBOARD); }
void udev_handle_keyboard(void *data, const struct input_event *event, udev_input_device_t *dev) { bool key_handled = false; switch (event->type) { case EV_KEY: if (event->value) BIT_SET(udev_key_state, event->code); else BIT_CLEAR(udev_key_state, event->code); #ifdef HAVE_XKBCOMMON if (handle_xkb(event->code, event->value) == 0) return; #endif input_keyboard_event(event->value, input_keymaps_translate_keysym_to_rk(event->code), 0, 0, RETRO_DEVICE_KEYBOARD); break; default: break; } }
static void udev_handle_keyboard(udev_input_t *udev, const struct input_event *event, struct input_device *dev) { switch (event->type) { case EV_KEY: if (event->value) BIT_SET(udev->key_state, event->code); else BIT_CLEAR(udev->key_state, event->code); #ifdef HAVE_XKBCOMMON handle_xkb(udev->xkb_state, udev->mod_map_idx, udev->mod_map_bit, event->code, event->value); #endif break; default: break; } }