window: Use constant keycode offset of 8

The X11 compositor currently posts its key presses as keycode - 8; this
is due to X11 having a historical minimum keycode of 8, whereas evdev is
numbered starting from 1.  So while the KEY_* constants begin with
KEY_ESC at 1, the corresponding keycode in both X11 and the XKB keymaps
is 9.

window, on the other hand, was relying on xkb->min_key_code being 8 to
translate its keycodes back to useful values in the XKB 'evdev' keycode
map.  min_key_code may not always be 8, for restricted subsets of the
keycode map.

Perhaps not the best solution, but at least consistent.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Daniel Stone 13 years ago committed by Kristian Høgsberg
parent 9d4f030c0b
commit 0d5a509ae5
  1. 2
      clients/window.c

@ -1553,7 +1553,7 @@ input_handle_key(void *data, struct wl_input_device *input_device,
struct display *d = input->display;
uint32_t code, sym, level;
code = key + d->xkb->min_key_code;
code = key + 8;
if (!window || window->keyboard_device != input)
return;

Loading…
Cancel
Save