wayland: Respect keymap repeat information
xkb has a function to tell us whether a key should be repeated or not. Lets use that information.
This commit is contained in:
@ -963,12 +963,14 @@ deliver_key_event(GdkWaylandDeviceData *device,
|
|||||||
{
|
{
|
||||||
GdkEvent *event;
|
GdkEvent *event;
|
||||||
struct xkb_state *xkb_state;
|
struct xkb_state *xkb_state;
|
||||||
|
struct xkb_keymap *xkb_keymap;
|
||||||
GdkKeymap *keymap;
|
GdkKeymap *keymap;
|
||||||
xkb_keysym_t sym;
|
xkb_keysym_t sym;
|
||||||
guint delay, interval;
|
guint delay, interval;
|
||||||
|
|
||||||
keymap = device->keymap;
|
keymap = device->keymap;
|
||||||
xkb_state = _gdk_wayland_keymap_get_xkb_state (keymap);
|
xkb_state = _gdk_wayland_keymap_get_xkb_state (keymap);
|
||||||
|
xkb_keymap = _gdk_wayland_keymap_get_xkb_keymap (keymap);
|
||||||
|
|
||||||
sym = xkb_state_key_get_one_sym (xkb_state, key);
|
sym = xkb_state_key_get_one_sym (xkb_state, key);
|
||||||
|
|
||||||
@ -996,6 +998,9 @@ deliver_key_event(GdkWaylandDeviceData *device,
|
|||||||
event->key.hardware_keycode, event->key.keyval,
|
event->key.hardware_keycode, event->key.keyval,
|
||||||
event->key.string, event->key.state));
|
event->key.string, event->key.state));
|
||||||
|
|
||||||
|
if (!xkb_keymap_key_repeats (xkb_keymap, key))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (!get_key_repeat (device, &delay, &interval))
|
if (!get_key_repeat (device, &delay, &interval))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
@ -52,6 +52,7 @@ GdkKeymap *_gdk_wayland_keymap_new (void);
|
|||||||
GdkKeymap *_gdk_wayland_keymap_new_from_fd (uint32_t format,
|
GdkKeymap *_gdk_wayland_keymap_new_from_fd (uint32_t format,
|
||||||
uint32_t fd, uint32_t size);
|
uint32_t fd, uint32_t size);
|
||||||
struct xkb_state *_gdk_wayland_keymap_get_xkb_state (GdkKeymap *keymap);
|
struct xkb_state *_gdk_wayland_keymap_get_xkb_state (GdkKeymap *keymap);
|
||||||
|
struct xkb_keymap *_gdk_wayland_keymap_get_xkb_keymap (GdkKeymap *keymap);
|
||||||
|
|
||||||
void _gdk_wayland_display_finalize_cursors (GdkWaylandDisplay *display);
|
void _gdk_wayland_display_finalize_cursors (GdkWaylandDisplay *display);
|
||||||
void _gdk_wayland_display_update_cursors (GdkWaylandDisplay *display,
|
void _gdk_wayland_display_update_cursors (GdkWaylandDisplay *display,
|
||||||
|
Reference in New Issue
Block a user