4 * Copyright (C) 2005-2013 Team XBMC
7 * This Program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
12 * This Program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with XBMC; see the file COPYING. If not, see
19 * <http://www.gnu.org/licenses/>.
23 #if (defined HAVE_CONFIG_H) && (!defined TARGET_WINDOWS)
26 #include <xkbcommon/xkbcommon.h>
27 #include "utils/log.h"
28 #include "DynamicDll.h"
33 virtual ~IDllXKBCommon() {}
35 virtual struct xkb_context * xkb_context_new(enum xkb_context_flags) = 0;
36 virtual void xkb_context_unref(struct xkb_context *) = 0;
37 virtual struct xkb_keymap * xkb_keymap_new_from_string(struct xkb_context *,
39 enum xkb_keymap_format,
40 enum xkb_keymap_compile_flags) = 0;
41 virtual struct xkb_keymap * xkb_keymap_new_from_names(struct xkb_context *,
42 const struct xkb_rule_names *,
43 enum xkb_keymap_compile_flags) = 0;
44 virtual xkb_mod_index_t xkb_keymap_mod_get_index(struct xkb_keymap *,
46 virtual void xkb_keymap_unref(struct xkb_keymap *) = 0;
47 virtual struct xkb_state * xkb_state_new(struct xkb_keymap *) = 0;
48 virtual xkb_mod_mask_t xkb_state_serialize_mods(struct xkb_state *,
49 enum xkb_state_component) = 0;
50 virtual enum xkb_state_component xkb_state_update_mask (struct xkb_state *,
56 xkb_layout_index_t) = 0;
57 virtual uint32_t xkb_state_key_get_syms(struct xkb_state *,
59 const xkb_keysym_t **) = 0;
60 virtual void xkb_state_unref(struct xkb_state *) = 0;
63 class DllXKBCommon : public DllDynamic, public IDllXKBCommon
65 DECLARE_DLL_WRAPPER(DllXKBCommon, DLL_PATH_XKBCOMMON)
67 DEFINE_METHOD1(struct xkb_context *, xkb_context_new, (enum xkb_context_flags p1));
68 DEFINE_METHOD1(void, xkb_context_unref, (struct xkb_context *p1));
69 DEFINE_METHOD4(struct xkb_keymap *, xkb_keymap_new_from_string, (struct xkb_context *p1, const char *p2, enum xkb_keymap_format p3, enum xkb_keymap_compile_flags p4));
70 DEFINE_METHOD3(struct xkb_keymap *, xkb_keymap_new_from_names, (struct xkb_context *p1, const struct xkb_rule_names *p2, enum xkb_keymap_compile_flags p3));
71 DEFINE_METHOD2(xkb_mod_index_t, xkb_keymap_mod_get_index, (struct xkb_keymap *p1, const char *p2));
72 DEFINE_METHOD1(void, xkb_keymap_unref, (struct xkb_keymap *p1));
73 DEFINE_METHOD1(struct xkb_state *, xkb_state_new, (struct xkb_keymap *p1));
74 DEFINE_METHOD2(xkb_mod_mask_t, xkb_state_serialize_mods, (struct xkb_state *p1, enum xkb_state_component p2));
75 DEFINE_METHOD7(enum xkb_state_component, xkb_state_update_mask, (struct xkb_state *p1, xkb_mod_mask_t p2, xkb_mod_mask_t p3, xkb_mod_mask_t p4, xkb_layout_index_t p5, xkb_layout_index_t p6, xkb_layout_index_t p7));
76 DEFINE_METHOD3(uint32_t, xkb_state_key_get_syms, (struct xkb_state *p1, uint32_t p2, const xkb_keysym_t **p3));
77 DEFINE_METHOD1(void, xkb_state_unref, (struct xkb_state *p1));
79 BEGIN_METHOD_RESOLVE()
80 RESOLVE_METHOD(xkb_context_new)
81 RESOLVE_METHOD(xkb_context_unref)
82 RESOLVE_METHOD(xkb_keymap_new_from_string)
83 RESOLVE_METHOD(xkb_keymap_new_from_names)
84 RESOLVE_METHOD(xkb_keymap_mod_get_index)
85 RESOLVE_METHOD(xkb_keymap_unref)
86 RESOLVE_METHOD(xkb_state_new)
87 RESOLVE_METHOD(xkb_state_serialize_mods)
88 RESOLVE_METHOD(xkb_state_update_mask)
89 RESOLVE_METHOD(xkb_state_key_get_syms)
90 RESOLVE_METHOD(xkb_state_unref)