x11: add XKB protocol keymap and state creation support
authorRan Benita <ran234@gmail.com>
Sat, 20 Jul 2013 20:21:44 +0000 (23:21 +0300)
committerRan Benita <ran234@gmail.com>
Sun, 2 Feb 2014 09:16:40 +0000 (11:16 +0200)
commiteb34825560edf570d883d3e52a8fe657c17b3d9c
treedc1d7d3dba0acc6a07ccbbf297093c9ea08ce3f5
parentddbefda383cccbf8d537b30471fc2ce893826d35
x11: add XKB protocol keymap and state creation support

These are function to create an xkb_keymap directly from XKB requests
to the X server. This opens up the possibility for X clients to use
xcb + xcb-xkb + xkbcommon as a proper replacement for Xlib + xkbfile for
keyboard support.

The X11 support must be enabled with --enable-x11 for now.
The functions are in xkbcommon/xkbcommon-x11.h. It depends on a recent
libxcb with xkb enabled. The functions are in a new libxkbcommon-x11.so,
with a new pkg-config file, etc. so that the packages may be split, and
libxkbcommon.so itself remains dependency-free.

Why not just use the RMLVO that the server puts in the _XKB_RULES_NAMES
property? This does not account for custom keymaps, on-the-fly keymap
modifications, remote clients, etc., so is not a proper solution in
practice. Also, some servers don't even set it. Now, the client just
needs to recreate the keymap in response to a change in the server's
keymap (as Xlib clients do with XRefreshKeyboardMapping() and friends).

Signed-off-by: Ran Benita <ran234@gmail.com>
Makefile.am
configure.ac
src/utils.h
src/x11/keymap.c [new file with mode: 0644]
src/x11/state.c [new file with mode: 0644]
src/x11/util.c [new file with mode: 0644]
src/x11/x11-priv.h [new file with mode: 0644]
xkbcommon-x11-uninstalled.pc.in [new file with mode: 0644]
xkbcommon-x11.pc.in [new file with mode: 0644]
xkbcommon/xkbcommon-x11.h [new file with mode: 0644]