summaryrefslogtreecommitdiff
path: root/src/keymap.h
diff options
context:
space:
mode:
authorRan Benita <ran234@gmail.com>2012-11-11 00:22:46 +0200
committerRan Benita <ran234@gmail.com>2012-11-11 00:32:16 +0200
commit60bd92021b63ecd3f8396704c841a0bf0fdab72b (patch)
tree65163ad722b934323a02a6eac51ebe6b0a37cc9b /src/keymap.h
parent324d4dbd99f5fb409e8466165481fe2d56c8eb8c (diff)
downloadxorg-lib-libxkbcommon-60bd92021b63ecd3f8396704c841a0bf0fdab72b.tar.gz
keymap: wrap the layout parameter if it is out of range for the key
The functions num_levels_for_key() and get_syms_by_level() have a 'layout' parameter. Currently it is expected that this value is always legal for the key, as determined by num_layouts_for_key(). However, there are legitimate use cases for passing an out-of-range layout there, most probably passing the effective layout, and expecting to get the keysyms/levels for just this layout. So we wrap it just as we do in the xkb_state_* functions. This is also useful for stuff like this: http://developer.gnome.org/gdk/stable/gdk-Keyboard-Handling.html#gdk-keymap-lookup-key If this behavior is not desired, the user has the option to check against num_layouts_for_key herself. https://bugs.freedesktop.org/show_bug.cgi?id=56866 Reported-by: Gatis Paeglis <gatis.paeglis@digia.com> Signed-off-by: Ran Benita <ran234@gmail.com>
Diffstat (limited to 'src/keymap.h')
-rw-r--r--src/keymap.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/keymap.h b/src/keymap.h
index 483ee90..cb035b0 100644
--- a/src/keymap.h
+++ b/src/keymap.h
@@ -427,4 +427,10 @@ xkb_keymap_new(struct xkb_context *ctx,
enum xkb_keymap_format format,
enum xkb_keymap_compile_flags);
+xkb_layout_index_t
+wrap_group_into_range(int32_t group,
+ xkb_layout_index_t num_groups,
+ enum xkb_range_exceed_type out_of_range_group_action,
+ xkb_layout_index_t out_of_range_group_number);
+
#endif