- Similar refactor on XKB
This commit is contained in:
@@ -22,4 +22,4 @@ add_compile_options("-mxsave" "-Wall" "-Wextra" "-pedantic" "-Werror")
|
||||
|
||||
set(FENNEC_PRIVATE_LINK_OPTIONS "-nostdlib" "-fno-exceptions" "-fno-rtti" "-fdiagnostics-all-candidates")
|
||||
|
||||
list(APPEND FENNEC_COMPILE_DEFINITIONS _GLIBCXX_INCLUDE_NEXT_C_HEADERS FENNEC_COMPILER_GCC=1 FENNEC_NO_INLINE=[[gnu::noinline]])
|
||||
list(APPEND FENNEC_COMPILE_DEFINITIONS _GLIBCXX_INCLUDE_NEXT_C_HEADERS=1 FENNEC_COMPILER_GCC=1 FENNEC_NO_INLINE=[[gnu::noinline]])
|
||||
@@ -96,7 +96,6 @@ macro(fennec_check_wayland)
|
||||
|
||||
fennec_add_sources(
|
||||
# Dynamic Library Files
|
||||
include/fennec/platform/linux/wayland/lib/fwd.h
|
||||
include/fennec/platform/linux/wayland/lib/sym.h
|
||||
include/fennec/platform/linux/wayland/lib/wayland.h
|
||||
include/fennec/platform/linux/wayland/lib/loader.h source/platform/linux/wayland/lib/loader.cpp
|
||||
|
||||
@@ -43,9 +43,8 @@ macro(fennec_check_xkb)
|
||||
|
||||
fennec_add_sources(
|
||||
# Dynamic Library Files
|
||||
include/fennec/platform/linux/xkb/lib/fwd.h
|
||||
include/fennec/platform/linux/xkb/lib/sym.h
|
||||
include/fennec/platform/linux/xkb/lib/xkbcommon.h
|
||||
include/fennec/platform/linux/xkb/lib/xkb.h
|
||||
include/fennec/platform/linux/xkb/lib/loader.h source/platform/linux/xkb/lib/loader.cpp
|
||||
|
||||
# Fennec files
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#define __PTRDIFF_TYPE__ ptrdiff_t
|
||||
#endif
|
||||
|
||||
#include <math.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#define FENNEC_PLATFORM_LINUX_WAYLAND_DISPLAY_H
|
||||
|
||||
#include <fennec/platform/interface/display.h>
|
||||
#include <fennec/platform/linux/wayland/lib/fwd.h>
|
||||
#include <fennec/platform/linux/wayland/lib/wayland.h>
|
||||
|
||||
namespace fennec
|
||||
{
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
// =====================================================================================================================
|
||||
// fennec, a free and open source game engine
|
||||
// Copyright © 2025 Medusa Slockbower
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
// =====================================================================================================================
|
||||
|
||||
#ifndef FENNEC_PLATFORM_LINUX_WAYLAND_LIB_FWD_H
|
||||
#define FENNEC_PLATFORM_LINUX_WAYLAND_LIB_FWD_H
|
||||
|
||||
/*
|
||||
* Copyright © 2008 Kristian Høgsberg
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial
|
||||
* portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <fennec/lang/types.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
struct wl_object;
|
||||
struct wl_proxy;
|
||||
struct wl_display;
|
||||
struct wl_event_queue;
|
||||
struct wl_buffer;
|
||||
struct wl_callback;
|
||||
struct wl_compositor;
|
||||
struct wl_data_device;
|
||||
struct wl_data_device_manager;
|
||||
struct wl_data_offer;
|
||||
struct wl_data_source;
|
||||
struct wl_keyboard;
|
||||
struct wl_output;
|
||||
struct wl_pointer;
|
||||
struct wl_region;
|
||||
struct wl_registry;
|
||||
struct wl_seat;
|
||||
struct wl_shell;
|
||||
struct wl_shell_surface;
|
||||
struct wl_shm;
|
||||
struct wl_shm_pool;
|
||||
struct wl_subcompositor;
|
||||
struct wl_subsurface;
|
||||
struct wl_surface;
|
||||
struct wl_touch;
|
||||
|
||||
struct wl_egl_window;
|
||||
struct wl_surface;
|
||||
|
||||
typedef int32_t wl_fixed_t;
|
||||
|
||||
#define WL_PRINTF(x, y) __attribute__((__format__(__printf__, x, y)))
|
||||
typedef void (*wl_log_func_t)(const char *fmt, va_list args) WL_PRINTF(1, 0);
|
||||
|
||||
#define WL_MARSHAL_FLAG_DESTROY (1 << 0)
|
||||
|
||||
#endif // FENNEC_PLATFORM_LINUX_WAYLAND_LIB_FWD_H
|
||||
@@ -17,32 +17,6 @@
|
||||
// =====================================================================================================================
|
||||
|
||||
#include <fennec/lang/types.h>
|
||||
#include <fennec/platform/linux/wayland/lib/fwd.h>
|
||||
|
||||
/*
|
||||
* Copyright © 2008 Kristian Høgsberg
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial
|
||||
* portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef FENNEC_LIB
|
||||
#define FENNEC_LIB(...)
|
||||
|
||||
@@ -19,14 +19,14 @@
|
||||
#ifndef FENNEC_PLATFORM_LINUX_WAYLAND_LIB_WAYLAND_CLIENT_H
|
||||
#define FENNEC_PLATFORM_LINUX_WAYLAND_LIB_WAYLAND_CLIENT_H
|
||||
|
||||
#include <wayland-client-core.h>
|
||||
|
||||
#define FENNEC_LIB(name) extern "C" bool FENNEC_HAS_LIB_##name;
|
||||
#define FENNEC_SYMBOL(ret, fn, ...) using WAYLAND_sym_##fn = ret(*)(__VA_ARGS__); \
|
||||
extern "C" WAYLAND_sym_##fn WAYLAND_##fn;
|
||||
#define FENNEC_GLOBAL(type, name) extern "C" type* WAYLAND_##name;
|
||||
#include <fennec/platform/linux/wayland/lib/sym.h>
|
||||
|
||||
#include <wayland-client-core.h>
|
||||
|
||||
#define wl_proxy_marshal WAYLAND_wl_proxy_marshal
|
||||
#define wl_proxy_marshal_flags WAYLAND_wl_proxy_marshal_flags
|
||||
#define wl_proxy_create WAYLAND_wl_proxy_create
|
||||
|
||||
@@ -1,215 +0,0 @@
|
||||
// =====================================================================================================================
|
||||
// fennec, a free and open source game engine
|
||||
// Copyright © 2025 Medusa Slockbower
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
// =====================================================================================================================
|
||||
|
||||
#ifndef FENNEC_PLATFORM_LINUX_XKB_LIB_FWD_H
|
||||
#define FENNEC_PLATFORM_LINUX_XKB_LIB_FWD_H
|
||||
|
||||
#include <fennec/lang/types.h>
|
||||
|
||||
/*
|
||||
* Copyright © 2009-2012 Daniel Stone
|
||||
* Copyright © 2012 Intel Corporation
|
||||
* Copyright © 2012 Ran Benita
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Author: Daniel Stone <daniel@fooishbar.org>
|
||||
*/
|
||||
|
||||
struct xkb_context;
|
||||
struct xkb_keymap;
|
||||
struct xkb_state;
|
||||
struct xkb_rule_names;
|
||||
|
||||
typedef uint32_t xkb_keycode_t;
|
||||
typedef uint32_t xkb_keysym_t;
|
||||
typedef uint32_t xkb_layout_index_t;
|
||||
typedef uint32_t xkb_layout_mask_t;
|
||||
typedef uint32_t xkb_level_index_t;
|
||||
typedef uint32_t xkb_mod_index_t;
|
||||
typedef uint32_t xkb_mod_mask_t;
|
||||
typedef uint32_t xkb_led_index_t;
|
||||
typedef uint32_t xkb_led_mask_t;
|
||||
|
||||
/**
|
||||
* The iterator used by xkb_keymap_key_for_each().
|
||||
*
|
||||
* @sa xkb_keymap_key_for_each
|
||||
* @memberof xkb_keymap
|
||||
* @since 0.3.1
|
||||
*/
|
||||
typedef void
|
||||
(*xkb_keymap_key_iter_t)(struct xkb_keymap *keymap, xkb_keycode_t key,
|
||||
void *data);
|
||||
|
||||
/** Flags for xkb_keysym_from_name(). */
|
||||
enum xkb_keysym_flags {
|
||||
/** Do not apply any flags. */
|
||||
XKB_KEYSYM_NO_FLAGS = 0,
|
||||
/** Find keysym by case-insensitive search. */
|
||||
XKB_KEYSYM_CASE_INSENSITIVE = (1 << 0)
|
||||
};
|
||||
|
||||
/** Flags for context creation. */
|
||||
enum xkb_context_flags {
|
||||
/** Do not apply any context flags. */
|
||||
XKB_CONTEXT_NO_FLAGS = 0,
|
||||
/** Create this context with an empty include path. */
|
||||
XKB_CONTEXT_NO_DEFAULT_INCLUDES = (1 << 0),
|
||||
/**
|
||||
* Don't take RMLVO names from the environment.
|
||||
*
|
||||
* @since 0.3.0
|
||||
*/
|
||||
XKB_CONTEXT_NO_ENVIRONMENT_NAMES = (1 << 1),
|
||||
/**
|
||||
* Disable the use of secure_getenv for this context, so that privileged
|
||||
* processes can use environment variables. Client uses at their own risk.
|
||||
*
|
||||
* @since 1.5.0
|
||||
*/
|
||||
XKB_CONTEXT_NO_SECURE_GETENV = (1 << 2)
|
||||
};
|
||||
|
||||
/** Specifies a logging level. */
|
||||
enum xkb_log_level {
|
||||
XKB_LOG_LEVEL_CRITICAL = 10, /**< Log critical internal errors only. */
|
||||
XKB_LOG_LEVEL_ERROR = 20, /**< Log all errors. */
|
||||
XKB_LOG_LEVEL_WARNING = 30, /**< Log warnings and errors. */
|
||||
XKB_LOG_LEVEL_INFO = 40, /**< Log information, warnings, and errors. */
|
||||
XKB_LOG_LEVEL_DEBUG = 50 /**< Log everything. */
|
||||
};
|
||||
|
||||
/** Flags for keymap compilation. */
|
||||
enum xkb_keymap_compile_flags {
|
||||
/** Do not apply any flags. */
|
||||
XKB_KEYMAP_COMPILE_NO_FLAGS = 0
|
||||
};
|
||||
|
||||
/** The possible keymap formats. */
|
||||
enum xkb_keymap_format {
|
||||
/** The current/classic XKB text format, as generated by xkbcomp -xkb. */
|
||||
XKB_KEYMAP_FORMAT_TEXT_V1 = 1
|
||||
};
|
||||
|
||||
/** Specifies the direction of the key (press / release). */
|
||||
enum xkb_key_direction {
|
||||
XKB_KEY_UP, /**< The key was released. */
|
||||
XKB_KEY_DOWN /**< The key was pressed. */
|
||||
};
|
||||
|
||||
/**
|
||||
* Modifier and layout types for state objects. This enum is bitmaskable,
|
||||
* e.g. (XKB_STATE_MODS_DEPRESSED | XKB_STATE_MODS_LATCHED) is valid to
|
||||
* exclude locked modifiers.
|
||||
*
|
||||
* In XKB, the DEPRESSED components are also known as 'base'.
|
||||
*/
|
||||
enum xkb_state_component {
|
||||
/** Depressed modifiers, i.e. a key is physically holding them. */
|
||||
XKB_STATE_MODS_DEPRESSED = (1 << 0),
|
||||
/** Latched modifiers, i.e. will be unset after the next non-modifier
|
||||
* key press. */
|
||||
XKB_STATE_MODS_LATCHED = (1 << 1),
|
||||
/** Locked modifiers, i.e. will be unset after the key provoking the
|
||||
* lock has been pressed again. */
|
||||
XKB_STATE_MODS_LOCKED = (1 << 2),
|
||||
/** Effective modifiers, i.e. currently active and affect key
|
||||
* processing (derived from the other state components).
|
||||
* Use this unless you explicitly care how the state came about. */
|
||||
XKB_STATE_MODS_EFFECTIVE = (1 << 3),
|
||||
/** Depressed layout, i.e. a key is physically holding it. */
|
||||
XKB_STATE_LAYOUT_DEPRESSED = (1 << 4),
|
||||
/** Latched layout, i.e. will be unset after the next non-modifier
|
||||
* key press. */
|
||||
XKB_STATE_LAYOUT_LATCHED = (1 << 5),
|
||||
/** Locked layout, i.e. will be unset after the key provoking the lock
|
||||
* has been pressed again. */
|
||||
XKB_STATE_LAYOUT_LOCKED = (1 << 6),
|
||||
/** Effective layout, i.e. currently active and affects key processing
|
||||
* (derived from the other state components).
|
||||
* Use this unless you explicitly care how the state came about. */
|
||||
XKB_STATE_LAYOUT_EFFECTIVE = (1 << 7),
|
||||
/** LEDs (derived from the other state components). */
|
||||
XKB_STATE_LEDS = (1 << 8)
|
||||
};
|
||||
|
||||
/**
|
||||
* Match flags for xkb_state_mod_indices_are_active() and
|
||||
* xkb_state_mod_names_are_active(), specifying the conditions for a
|
||||
* successful match. XKB_STATE_MATCH_NON_EXCLUSIVE is bitmaskable with
|
||||
* the other modes.
|
||||
*/
|
||||
enum xkb_state_match {
|
||||
/** Returns true if any of the modifiers are active. */
|
||||
XKB_STATE_MATCH_ANY = (1 << 0),
|
||||
/** Returns true if all of the modifiers are active. */
|
||||
XKB_STATE_MATCH_ALL = (1 << 1),
|
||||
/** Makes matching non-exclusive, i.e. will not return false if a
|
||||
* modifier not specified in the arguments is active. */
|
||||
XKB_STATE_MATCH_NON_EXCLUSIVE = (1 << 16)
|
||||
};
|
||||
|
||||
enum xkb_consumed_mode {
|
||||
/**
|
||||
* This is the mode defined in the XKB specification and used by libX11.
|
||||
*
|
||||
* A modifier is consumed if and only if it *may affect* key translation.
|
||||
*
|
||||
* For example, if `Control+Alt+<Backspace>` produces some assigned keysym,
|
||||
* then when pressing just `<Backspace>`, `Control` and `Alt` are consumed,
|
||||
* even though they are not active, since if they *were* active they would
|
||||
* have affected key translation.
|
||||
*/
|
||||
XKB_CONSUMED_MODE_XKB,
|
||||
/**
|
||||
* This is the mode used by the GTK+ toolkit.
|
||||
*
|
||||
* The mode consists of the following two independent heuristics:
|
||||
*
|
||||
* - The currently active set of modifiers, excluding modifiers which do
|
||||
* not affect the key (as described for @ref XKB_CONSUMED_MODE_XKB), are
|
||||
* considered consumed, if the keysyms produced when all of them are
|
||||
* active are different from the keysyms produced when no modifiers are
|
||||
* active.
|
||||
*
|
||||
* - A single modifier is considered consumed if the keysyms produced for
|
||||
* the key when it is the only active modifier are different from the
|
||||
* keysyms produced when no modifiers are active.
|
||||
*/
|
||||
XKB_CONSUMED_MODE_GTK
|
||||
};
|
||||
|
||||
#endif // FENNEC_PLATFORM_LINUX_XKB_LIB_FWD_H
|
||||
@@ -44,7 +44,6 @@
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <fennec/platform/linux/xkb/lib/fwd.h>
|
||||
|
||||
#ifndef FENNEC_LIB
|
||||
#define FENNEC_LIB(...)
|
||||
@@ -60,82 +59,85 @@
|
||||
|
||||
FENNEC_LIB(XKB);
|
||||
|
||||
FENNEC_SYMBOL(int, xkb_keysym_get_name, xkb_keysym_t keysym, char *buffer, size_t size);
|
||||
FENNEC_SYMBOL(xkb_keysym_t, xkb_keysym_from_name, const char *name, enum xkb_keysym_flags flags);
|
||||
FENNEC_SYMBOL(int, xkb_keysym_to_utf8, xkb_keysym_t keysym, char *buffer, size_t size);
|
||||
FENNEC_SYMBOL(uint32_t, xkb_keysym_to_utf32, xkb_keysym_t keysym);
|
||||
FENNEC_SYMBOL(xkb_keysym_t, xkb_utf32_to_keysym, uint32_t ucs);
|
||||
FENNEC_SYMBOL(xkb_keysym_t, xkb_keysym_to_upper, xkb_keysym_t ks);
|
||||
FENNEC_SYMBOL(xkb_keysym_t, xkb_keysym_to_lower, xkb_keysym_t ks);
|
||||
FENNEC_SYMBOL(struct xkb_context*, xkb_context_new, enum xkb_context_flags flags);
|
||||
FENNEC_SYMBOL(struct xkb_context*, xkb_context_ref, struct xkb_context *context);
|
||||
FENNEC_SYMBOL(void, xkb_context_unref, struct xkb_context *context);
|
||||
FENNEC_SYMBOL(void, xkb_context_set_user_data, struct xkb_context *context, void *user_data);
|
||||
FENNEC_SYMBOL(void*, xkb_context_get_user_data, struct xkb_context *context);
|
||||
FENNEC_SYMBOL(int, xkb_context_include_path_append, struct xkb_context *context, const char *path);
|
||||
FENNEC_SYMBOL(int, xkb_context_include_path_append_default, struct xkb_context *context);
|
||||
FENNEC_SYMBOL(int, xkb_context_include_path_reset_defaults, struct xkb_context *context);
|
||||
FENNEC_SYMBOL(void, xkb_context_include_path_clear, struct xkb_context *context);
|
||||
FENNEC_SYMBOL(unsigned int, xkb_context_num_include_paths, struct xkb_context *context);
|
||||
FENNEC_SYMBOL(const char*, xkb_context_include_path_get, struct xkb_context *context, unsigned int index);
|
||||
FENNEC_SYMBOL(void, xkb_context_set_log_level, struct xkb_context *context, enum xkb_log_level level);
|
||||
FENNEC_SYMBOL(enum xkb_log_level, xkb_context_get_log_level, struct xkb_context *context);
|
||||
FENNEC_SYMBOL(void, xkb_context_set_log_verbosity, struct xkb_context *context, int verbosity);
|
||||
FENNEC_SYMBOL(int, xkb_context_get_log_verbosity, struct xkb_context *context);
|
||||
FENNEC_SYMBOL(void, xkb_context_set_log_fn, struct xkb_context *context, void (*log_fn)(struct xkb_context *context, enum xkb_log_level level, const char *format, va_list args));
|
||||
FENNEC_SYMBOL(struct xkb_keymap*, xkb_keymap_new_from_names, struct xkb_context *context, const struct xkb_rule_names *names, enum xkb_keymap_compile_flags flags);
|
||||
FENNEC_SYMBOL(struct xkb_keymap*, xkb_keymap_new_from_file, struct xkb_context *context, FILE *file, enum xkb_keymap_format format, enum xkb_keymap_compile_flags flags);
|
||||
FENNEC_SYMBOL(struct xkb_keymap*, xkb_keymap_new_from_string, struct xkb_context *context, const char *string, enum xkb_keymap_format format, enum xkb_keymap_compile_flags flags);
|
||||
FENNEC_SYMBOL(struct xkb_keymap*, xkb_keymap_new_from_buffer, struct xkb_context *context, const char *buffer, size_t length, enum xkb_keymap_format format, enum xkb_keymap_compile_flags flags);
|
||||
FENNEC_SYMBOL(struct xkb_keymap*, xkb_keymap_ref, struct xkb_keymap *keymap);
|
||||
FENNEC_SYMBOL(void, xkb_keymap_unref, struct xkb_keymap *keymap);
|
||||
FENNEC_SYMBOL(char*, xkb_keymap_get_as_string, struct xkb_keymap *keymap, enum xkb_keymap_format format);
|
||||
FENNEC_SYMBOL(xkb_keycode_t, xkb_keymap_min_keycode, struct xkb_keymap *keymap);
|
||||
FENNEC_SYMBOL(xkb_keycode_t, xkb_keymap_max_keycode, struct xkb_keymap *keymap);
|
||||
FENNEC_SYMBOL(void, xkb_keymap_key_for_each, struct xkb_keymap *keymap, xkb_keymap_key_iter_t iter, void *data);
|
||||
FENNEC_SYMBOL(const char*, xkb_keymap_key_get_name, struct xkb_keymap *keymap, xkb_keycode_t key);
|
||||
FENNEC_SYMBOL(xkb_keycode_t, xkb_keymap_key_by_name, struct xkb_keymap *keymap, const char *name);
|
||||
FENNEC_SYMBOL(xkb_mod_index_t, xkb_keymap_num_mods, struct xkb_keymap *keymap);
|
||||
FENNEC_SYMBOL(const char*, xkb_keymap_mod_get_name, struct xkb_keymap *keymap, xkb_mod_index_t idx);
|
||||
FENNEC_SYMBOL(xkb_mod_index_t, xkb_keymap_mod_get_index, struct xkb_keymap *keymap, const char *name);
|
||||
FENNEC_SYMBOL(xkb_layout_index_t, xkb_keymap_num_layouts, struct xkb_keymap *keymap);
|
||||
FENNEC_SYMBOL(const char*, xkb_keymap_layout_get_name, struct xkb_keymap *keymap, xkb_layout_index_t idx);
|
||||
FENNEC_SYMBOL(xkb_layout_index_t, xkb_keymap_layout_get_index, struct xkb_keymap *keymap, const char *name);
|
||||
FENNEC_SYMBOL(xkb_led_index_t, xkb_keymap_num_leds, struct xkb_keymap *keymap);
|
||||
FENNEC_SYMBOL(const char*, xkb_keymap_led_get_name, struct xkb_keymap *keymap, xkb_led_index_t idx);
|
||||
FENNEC_SYMBOL(xkb_led_index_t, xkb_keymap_led_get_index, struct xkb_keymap *keymap, const char *name);
|
||||
FENNEC_SYMBOL(xkb_layout_index_t, xkb_keymap_num_layouts_for_key, struct xkb_keymap *keymap, xkb_keycode_t key);
|
||||
FENNEC_SYMBOL(xkb_level_index_t, xkb_keymap_num_levels_for_key, struct xkb_keymap *keymap, xkb_keycode_t key, xkb_layout_index_t layout);
|
||||
FENNEC_SYMBOL(size_t, xkb_keymap_key_get_mods_for_level, struct xkb_keymap *keymap, xkb_keycode_t key, xkb_layout_index_t layout, xkb_level_index_t level, xkb_mod_mask_t *masks_out, size_t masks_size);
|
||||
FENNEC_SYMBOL(int, xkb_keymap_key_get_syms_by_level, struct xkb_keymap *keymap, xkb_keycode_t key, xkb_layout_index_t layout, xkb_level_index_t level, const xkb_keysym_t **syms_out);
|
||||
FENNEC_SYMBOL(int, xkb_keymap_key_repeats, struct xkb_keymap *keymap, xkb_keycode_t key);
|
||||
FENNEC_SYMBOL(struct xkb_state*, xkb_state_new, struct xkb_keymap *keymap);
|
||||
FENNEC_SYMBOL(struct xkb_state*, xkb_state_ref, struct xkb_state *state);
|
||||
FENNEC_SYMBOL(void, xkb_state_unref, struct xkb_state *state);
|
||||
FENNEC_SYMBOL(struct xkb_keymap*, xkb_state_get_keymap, struct xkb_state *state);
|
||||
FENNEC_SYMBOL(enum xkb_state_component, xkb_state_update_key, struct xkb_state *state, xkb_keycode_t key, enum xkb_key_direction direction);
|
||||
FENNEC_SYMBOL(enum xkb_state_component, xkb_state_update_mask, struct xkb_state *state, xkb_mod_mask_t depressed_mods, xkb_mod_mask_t latched_mods, xkb_mod_mask_t locked_mods, xkb_layout_index_t depressed_layout, xkb_layout_index_t latched_layout, xkb_layout_index_t locked_layout);
|
||||
FENNEC_SYMBOL(int, xkb_state_key_get_syms, struct xkb_state *state, xkb_keycode_t key, const xkb_keysym_t **syms_out);
|
||||
FENNEC_SYMBOL(int, xkb_state_key_get_utf8, struct xkb_state *state, xkb_keycode_t key, char *buffer, size_t size);
|
||||
FENNEC_SYMBOL(uint32_t, xkb_state_key_get_utf32, struct xkb_state *state, xkb_keycode_t key);
|
||||
FENNEC_SYMBOL(xkb_keysym_t, xkb_state_key_get_one_sym, struct xkb_state *state, xkb_keycode_t key);
|
||||
FENNEC_SYMBOL(xkb_layout_index_t, xkb_state_key_get_layout, struct xkb_state *state, xkb_keycode_t key);
|
||||
FENNEC_SYMBOL(xkb_level_index_t, xkb_state_key_get_level, struct xkb_state *state, xkb_keycode_t key, xkb_layout_index_t layout);
|
||||
FENNEC_SYMBOL(xkb_mod_mask_t, xkb_state_serialize_mods, struct xkb_state *state, enum xkb_state_component components);
|
||||
FENNEC_SYMBOL(xkb_layout_index_t, xkb_state_serialize_layout, struct xkb_state *state, enum xkb_state_component components);
|
||||
FENNEC_SYMBOL(int, xkb_state_mod_name_is_active, struct xkb_state *state, const char *name, enum xkb_state_component type);
|
||||
FENNEC_SYMBOL(int, xkb_state_mod_names_are_active, struct xkb_state *state, enum xkb_state_component type, enum xkb_state_match match, ...);
|
||||
FENNEC_SYMBOL(int, xkb_state_mod_index_is_active, struct xkb_state *state, xkb_mod_index_t idx, enum xkb_state_component type);
|
||||
FENNEC_SYMBOL(int, xkb_state_mod_indices_are_active, struct xkb_state *state, enum xkb_state_component type, enum xkb_state_match match, ...);
|
||||
FENNEC_SYMBOL(xkb_mod_mask_t, xkb_state_key_get_consumed_mods2, struct xkb_state *state, xkb_keycode_t key, enum xkb_consumed_mode mode);
|
||||
FENNEC_SYMBOL(xkb_mod_mask_t, xkb_state_key_get_consumed_mods, struct xkb_state *state, xkb_keycode_t key);
|
||||
FENNEC_SYMBOL(int, xkb_state_mod_index_is_consumed2, struct xkb_state *state, xkb_keycode_t key, xkb_mod_index_t idx, enum xkb_consumed_mode mode);
|
||||
FENNEC_SYMBOL(int, xkb_state_mod_index_is_consumed, struct xkb_state *state, xkb_keycode_t key, xkb_mod_index_t idx);
|
||||
FENNEC_SYMBOL(xkb_mod_mask_t, xkb_state_mod_mask_remove_consumed, struct xkb_state *state, xkb_keycode_t key, xkb_mod_mask_t mask);
|
||||
FENNEC_SYMBOL(int, xkb_state_layout_name_is_active, struct xkb_state *state, const char *name, enum xkb_state_component type);
|
||||
FENNEC_SYMBOL(int, xkb_state_layout_index_is_active, struct xkb_state *state, xkb_layout_index_t idx, enum xkb_state_component type);
|
||||
FENNEC_SYMBOL(int, xkb_state_led_name_is_active, struct xkb_state *state, const char *name);
|
||||
FENNEC_SYMBOL(int, xkb_state_led_index_is_active, struct xkb_state *state, xkb_led_index_t idx);
|
||||
FENNEC_SYMBOL(int, xkb_keysym_get_name, xkb_keysym_t, char*, size_t);
|
||||
FENNEC_SYMBOL(xkb_keysym_t, xkb_keysym_from_name, const char*, enum xkb_keysym_flags);
|
||||
FENNEC_SYMBOL(int, xkb_keysym_to_utf8, xkb_keysym_t, char*, size_t);
|
||||
FENNEC_SYMBOL(uint32_t, xkb_keysym_to_utf32, xkb_keysym_t);
|
||||
FENNEC_SYMBOL(xkb_keysym_t, xkb_utf32_to_keysym, uint32_t);
|
||||
FENNEC_SYMBOL(xkb_keysym_t, xkb_keysym_to_upper, xkb_keysym_t);
|
||||
FENNEC_SYMBOL(xkb_keysym_t, xkb_keysym_to_lower, xkb_keysym_t);
|
||||
|
||||
FENNEC_SYMBOL(struct xkb_context*, xkb_context_new, enum xkb_context_flags);
|
||||
FENNEC_SYMBOL(struct xkb_context*, xkb_context_ref, struct xkb_context*);
|
||||
FENNEC_SYMBOL(void, xkb_context_unref, struct xkb_context*);
|
||||
FENNEC_SYMBOL(void, xkb_context_set_user_data, struct xkb_context*, void*);
|
||||
FENNEC_SYMBOL(void*, xkb_context_get_user_data, struct xkb_context*);
|
||||
FENNEC_SYMBOL(int, xkb_context_include_path_append, struct xkb_context*, const char*);
|
||||
FENNEC_SYMBOL(int, xkb_context_include_path_append_default, struct xkb_context*);
|
||||
FENNEC_SYMBOL(int, xkb_context_include_path_reset_defaults, struct xkb_context*);
|
||||
FENNEC_SYMBOL(void, xkb_context_include_path_clear, struct xkb_context*);
|
||||
FENNEC_SYMBOL(unsigned int, xkb_context_num_include_paths, struct xkb_context*);
|
||||
FENNEC_SYMBOL(const char*, xkb_context_include_path_get, struct xkb_context*, unsigned int);
|
||||
FENNEC_SYMBOL(void, xkb_context_set_log_level, struct xkb_context*, enum xkb_log_level);
|
||||
FENNEC_SYMBOL(enum xkb_log_level, xkb_context_get_log_level, struct xkb_context*);
|
||||
FENNEC_SYMBOL(void, xkb_context_set_log_verbosity, struct xkb_context*, int);
|
||||
FENNEC_SYMBOL(int, xkb_context_get_log_verbosity, struct xkb_context*);
|
||||
FENNEC_SYMBOL(void, xkb_context_set_log_fn, struct xkb_context*, void (*)(struct xkb_context*, enum xkb_log_level, const char*, va_list));
|
||||
|
||||
FENNEC_SYMBOL(struct xkb_keymap*, xkb_keymap_new_from_names, struct xkb_context*, const struct xkb_rule_names*, enum xkb_keymap_compile_flags);
|
||||
FENNEC_SYMBOL(struct xkb_keymap*, xkb_keymap_new_from_file, struct xkb_context*, FILE*, enum xkb_keymap_format, enum xkb_keymap_compile_flags);
|
||||
FENNEC_SYMBOL(struct xkb_keymap*, xkb_keymap_new_from_string, struct xkb_context*, const char*, enum xkb_keymap_format, enum xkb_keymap_compile_flags);
|
||||
FENNEC_SYMBOL(struct xkb_keymap*, xkb_keymap_new_from_buffer, struct xkb_context*, const char*, size_t, enum xkb_keymap_format, enum xkb_keymap_compile_flags);
|
||||
FENNEC_SYMBOL(struct xkb_keymap*, xkb_keymap_ref, struct xkb_keymap*);
|
||||
FENNEC_SYMBOL(void, xkb_keymap_unref, struct xkb_keymap*);
|
||||
FENNEC_SYMBOL(char*, xkb_keymap_get_as_string, struct xkb_keymap*, enum xkb_keymap_format);
|
||||
FENNEC_SYMBOL(xkb_keycode_t, xkb_keymap_min_keycode, struct xkb_keymap*);
|
||||
FENNEC_SYMBOL(xkb_keycode_t, xkb_keymap_max_keycode, struct xkb_keymap*);
|
||||
FENNEC_SYMBOL(void, xkb_keymap_key_for_each, struct xkb_keymap*, xkb_keymap_key_iter_t, void*);
|
||||
FENNEC_SYMBOL(const char*, xkb_keymap_key_get_name, struct xkb_keymap*, xkb_keycode_t);
|
||||
FENNEC_SYMBOL(xkb_keycode_t, xkb_keymap_key_by_name, struct xkb_keymap*, const char*);
|
||||
FENNEC_SYMBOL(xkb_mod_index_t, xkb_keymap_num_mods, struct xkb_keymap*);
|
||||
FENNEC_SYMBOL(const char*, xkb_keymap_mod_get_name, struct xkb_keymap*, xkb_mod_index_t);
|
||||
FENNEC_SYMBOL(xkb_mod_index_t, xkb_keymap_mod_get_index, struct xkb_keymap*, const char*);
|
||||
FENNEC_SYMBOL(xkb_layout_index_t, xkb_keymap_num_layouts, struct xkb_keymap*);
|
||||
FENNEC_SYMBOL(const char*, xkb_keymap_layout_get_name, struct xkb_keymap*, xkb_layout_index_t);
|
||||
FENNEC_SYMBOL(xkb_layout_index_t, xkb_keymap_layout_get_index, struct xkb_keymap*, const char*);
|
||||
FENNEC_SYMBOL(xkb_led_index_t, xkb_keymap_num_leds, struct xkb_keymap*);
|
||||
FENNEC_SYMBOL(const char*, xkb_keymap_led_get_name, struct xkb_keymap*, xkb_led_index_t);
|
||||
FENNEC_SYMBOL(xkb_led_index_t, xkb_keymap_led_get_index, struct xkb_keymap*, const char*);
|
||||
FENNEC_SYMBOL(xkb_layout_index_t, xkb_keymap_num_layouts_for_key, struct xkb_keymap*, xkb_keycode_t);
|
||||
FENNEC_SYMBOL(xkb_level_index_t, xkb_keymap_num_levels_for_key, struct xkb_keymap*, xkb_keycode_t, xkb_layout_index_t);
|
||||
FENNEC_SYMBOL(size_t, xkb_keymap_key_get_mods_for_level, struct xkb_keymap*, xkb_keycode_t, xkb_layout_index_t, xkb_level_index_t, xkb_mod_mask_t*, size_t);
|
||||
FENNEC_SYMBOL(int, xkb_keymap_key_get_syms_by_level, struct xkb_keymap*, xkb_keycode_t, xkb_layout_index_t, xkb_level_index_t, const xkb_keysym_t**);
|
||||
FENNEC_SYMBOL(int, xkb_keymap_key_repeats, struct xkb_keymap*, xkb_keycode_t);
|
||||
|
||||
FENNEC_SYMBOL(struct xkb_state*, xkb_state_new, struct xkb_keymap*);
|
||||
FENNEC_SYMBOL(struct xkb_state*, xkb_state_ref, struct xkb_state*);
|
||||
FENNEC_SYMBOL(void, xkb_state_unref, struct xkb_state*);
|
||||
FENNEC_SYMBOL(struct xkb_keymap*, xkb_state_get_keymap, struct xkb_state*);
|
||||
FENNEC_SYMBOL(enum xkb_state_component, xkb_state_update_key, struct xkb_state*, xkb_keycode_t, enum xkb_key_direction);
|
||||
FENNEC_SYMBOL(enum xkb_state_component, xkb_state_update_mask, struct xkb_state*, xkb_mod_mask_t, xkb_mod_mask_t, xkb_mod_mask_t, xkb_layout_index_t, xkb_layout_index_t, xkb_layout_index_t);
|
||||
FENNEC_SYMBOL(int, xkb_state_key_get_syms, struct xkb_state*, xkb_keycode_t, const xkb_keysym_t**);
|
||||
FENNEC_SYMBOL(int, xkb_state_key_get_utf8, struct xkb_state*, xkb_keycode_t, char*, size_t);
|
||||
FENNEC_SYMBOL(uint32_t, xkb_state_key_get_utf32, struct xkb_state*, xkb_keycode_t);
|
||||
FENNEC_SYMBOL(xkb_keysym_t, xkb_state_key_get_one_sym, struct xkb_state*, xkb_keycode_t);
|
||||
FENNEC_SYMBOL(xkb_layout_index_t, xkb_state_key_get_layout, struct xkb_state*, xkb_keycode_t);
|
||||
FENNEC_SYMBOL(xkb_level_index_t, xkb_state_key_get_level, struct xkb_state*, xkb_keycode_t, xkb_layout_index_t);
|
||||
FENNEC_SYMBOL(xkb_mod_mask_t, xkb_state_serialize_mods, struct xkb_state*, enum xkb_state_component);
|
||||
FENNEC_SYMBOL(xkb_layout_index_t, xkb_state_serialize_layout, struct xkb_state*, enum xkb_state_component);
|
||||
FENNEC_SYMBOL(int, xkb_state_mod_name_is_active, struct xkb_state*, const char*, enum xkb_state_component);
|
||||
FENNEC_SYMBOL(int, xkb_state_mod_names_are_active, struct xkb_state*, enum xkb_state_component, enum xkb_state_match, ...);
|
||||
FENNEC_SYMBOL(int, xkb_state_mod_index_is_active, struct xkb_state*, xkb_mod_index_t, enum xkb_state_component);
|
||||
FENNEC_SYMBOL(int, xkb_state_mod_indices_are_active, struct xkb_state*, enum xkb_state_component, enum xkb_state_match, ...);
|
||||
FENNEC_SYMBOL(xkb_mod_mask_t, xkb_state_key_get_consumed_mods2, struct xkb_state*, xkb_keycode_t, enum xkb_consumed_mode);
|
||||
FENNEC_SYMBOL(xkb_mod_mask_t, xkb_state_key_get_consumed_mods, struct xkb_state*, xkb_keycode_t);
|
||||
FENNEC_SYMBOL(int, xkb_state_mod_index_is_consumed2, struct xkb_state*, xkb_keycode_t, xkb_mod_index_t, enum xkb_consumed_mode);
|
||||
FENNEC_SYMBOL(int, xkb_state_mod_index_is_consumed, struct xkb_state*, xkb_keycode_t, xkb_mod_index_t);
|
||||
FENNEC_SYMBOL(xkb_mod_mask_t, xkb_state_mod_mask_remove_consumed, struct xkb_state*, xkb_keycode_t, xkb_mod_mask_t);
|
||||
FENNEC_SYMBOL(int, xkb_state_layout_name_is_active, struct xkb_state*, const char*, enum xkb_state_component);
|
||||
FENNEC_SYMBOL(int, xkb_state_layout_index_is_active, struct xkb_state*, xkb_layout_index_t, enum xkb_state_component);
|
||||
FENNEC_SYMBOL(int, xkb_state_led_name_is_active, struct xkb_state*, const char*);
|
||||
FENNEC_SYMBOL(int, xkb_state_led_index_is_active, struct xkb_state*, xkb_led_index_t);
|
||||
|
||||
#undef FENNEC_LIB
|
||||
#undef FENNEC_SYMBOL
|
||||
|
||||
110
include/fennec/platform/linux/xkb/lib/xkb.h
Normal file
110
include/fennec/platform/linux/xkb/lib/xkb.h
Normal file
@@ -0,0 +1,110 @@
|
||||
// =====================================================================================================================
|
||||
// fennec, a free and open source game engine
|
||||
// Copyright © 2025 Medusa Slockbower
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
// =====================================================================================================================
|
||||
|
||||
#ifndef FENNEC_PLATFORM_LINUX_XKB_LIB_XKB_H
|
||||
#define FENNEC_PLATFORM_LINUX_XKB_LIB_XKB_H
|
||||
|
||||
#include <xkbcommon/xkbcommon.h>
|
||||
|
||||
#define FENNEC_LIB(name) extern bool FENNEC_HAS_LIB_##name;
|
||||
#define FENNEC_SYMBOL(ret, fn, ...) using XKB_sym_##fn = ret(*)(__VA_ARGS__); \
|
||||
extern XKB_sym_##fn XKB_##fn;
|
||||
#define FENNEC_GLOBAL(type, name) extern type* XKB_##name;
|
||||
#include <fennec/platform/linux/xkb/lib/sym.h>
|
||||
|
||||
#define xkb_keysym_get_name XKB_xkb_keysym_get_name
|
||||
#define xkb_keysym_from_name XKB_xkb_keysym_from_name
|
||||
#define xkb_keysym_to_utf8 XKB_xkb_keysym_to_utf8
|
||||
#define xkb_keysym_to_utf32 XKB_xkb_keysym_to_utf32
|
||||
#define xkb_utf32_to_keysym XKB_xkb_utf32_to_keysym
|
||||
#define xkb_keysym_to_upper XKB_xkb_keysym_to_upper
|
||||
#define xkb_keysym_to_lower XKB_xkb_keysym_to_lower
|
||||
|
||||
#define xkb_context_new XKB_xkb_context_new
|
||||
#define xkb_context_ref XKB_xkb_context_ref
|
||||
#define xkb_context_unref XKB_xkb_context_unref
|
||||
#define xkb_context_set_user_data XKB_xkb_context_set_user_data
|
||||
#define xkb_context_get_user_data XKB_xkb_context_get_user_data
|
||||
#define xkb_context_include_path_append XKB_xkb_context_include_path_append
|
||||
#define xkb_context_include_path_append_default XKB_xkb_context_include_path_append_default
|
||||
#define xkb_context_include_path_reset_defaults XKB_xkb_context_include_path_reset_defaults
|
||||
#define xkb_context_include_path_clear XKB_xkb_context_include_path_clear
|
||||
#define xkb_context_num_include_paths XKB_xkb_context_num_include_paths
|
||||
#define xkb_context_include_path_get XKB_xkb_context_include_path_get
|
||||
#define xkb_context_set_log_level XKB_xkb_context_set_log_level
|
||||
#define xkb_context_get_log_level XKB_xkb_context_get_log_level
|
||||
#define xkb_context_set_log_verbosity XKB_xkb_context_set_log_verbosity
|
||||
#define xkb_context_get_log_verbosity XKB_xkb_context_get_log_verbosity
|
||||
#define xkb_context_set_log_fn XKB_xkb_context_set_log_fn
|
||||
|
||||
#define xkb_keymap_new_from_names XKB_xkb_keymap_new_from_names
|
||||
#define xkb_keymap_new_from_file XKB_xkb_keymap_new_from_file
|
||||
#define xkb_keymap_new_from_string XKB_xkb_keymap_new_from_string
|
||||
#define xkb_keymap_new_from_buffer XKB_xkb_keymap_new_from_buffer
|
||||
#define xkb_keymap_ref XKB_xkb_keymap_ref
|
||||
#define xkb_keymap_unref XKB_xkb_keymap_unref
|
||||
#define xkb_keymap_get_as_string XKB_xkb_keymap_get_as_string
|
||||
#define xkb_keymap_min_keycode XKB_xkb_keymap_min_keycode
|
||||
#define xkb_keymap_max_keycode XKB_xkb_keymap_max_keycode
|
||||
#define xkb_keymap_key_for_each XKB_xkb_keymap_key_for_each
|
||||
#define xkb_keymap_key_get_name XKB_xkb_keymap_key_get_name
|
||||
#define xkb_keymap_key_by_name XKB_xkb_keymap_key_by_name
|
||||
#define xkb_keymap_num_mods XKB_xkb_keymap_num_mods
|
||||
#define xkb_keymap_mod_get_name XKB_xkb_keymap_mod_get_name
|
||||
#define xkb_keymap_mod_get_index XKB_xkb_keymap_mod_get_index
|
||||
#define xkb_keymap_num_layouts XKB_xkb_keymap_num_layouts
|
||||
#define xkb_keymap_layout_get_name XKB_xkb_keymap_layout_get_name
|
||||
#define xkb_keymap_layout_get_index XKB_xkb_keymap_layout_get_index
|
||||
#define xkb_keymap_num_leds XKB_xkb_keymap_num_leds
|
||||
#define xkb_keymap_led_get_name XKB_xkb_keymap_led_get_name
|
||||
#define xkb_keymap_led_get_index XKB_xkb_keymap_led_get_index
|
||||
#define xkb_keymap_num_layouts_for_key XKB_xkb_keymap_num_layouts_for_key
|
||||
#define xkb_keymap_num_levels_for_key XKB_xkb_keymap_num_levels_for_key
|
||||
#define xkb_keymap_key_get_mods_for_level XKB_xkb_keymap_key_get_mods_for_level
|
||||
#define xkb_keymap_key_get_syms_by_level XKB_xkb_keymap_key_get_syms_by_level
|
||||
#define xkb_keymap_key_repeats XKB_xkb_keymap_key_repeats
|
||||
|
||||
#define xkb_state_new XKB_xkb_state_new
|
||||
#define xkb_state_ref XKB_xkb_state_ref
|
||||
#define xkb_state_unref XKB_xkb_state_unref
|
||||
#define xkb_state_get_keymap XKB_xkb_state_get_keymap
|
||||
#define xkb_state_update_key XKB_xkb_state_update_key
|
||||
#define xkb_state_update_mask XKB_xkb_state_update_mask
|
||||
#define xkb_state_key_get_syms XKB_xkb_state_key_get_syms
|
||||
#define xkb_state_key_get_utf8 XKB_xkb_state_key_get_utf8
|
||||
#define xkb_state_key_get_utf32 XKB_xkb_state_key_get_utf32
|
||||
#define xkb_state_key_get_one_sym XKB_xkb_state_key_get_one_sym
|
||||
#define xkb_state_key_get_layout XKB_xkb_state_key_get_layout
|
||||
#define xkb_state_key_get_level XKB_xkb_state_key_get_level
|
||||
#define xkb_state_serialize_mods XKB_xkb_state_serialize_mods
|
||||
#define xkb_state_serialize_layout XKB_xkb_state_serialize_layout
|
||||
#define xkb_state_mod_name_is_active XKB_xkb_state_mod_name_is_active
|
||||
#define xkb_state_mod_names_are_active XKB_xkb_state_mod_names_are_active
|
||||
#define xkb_state_mod_index_is_active XKB_xkb_state_mod_index_is_active
|
||||
#define xkb_state_mod_indices_are_active XKB_xkb_state_mod_indices_are_active
|
||||
#define xkb_state_key_get_consumed_mods2 XKB_xkb_state_key_get_consumed_mods2
|
||||
#define xkb_state_key_get_consumed_mods XKB_xkb_state_key_get_consumed_mods
|
||||
#define xkb_state_mod_index_is_consumed2 XKB_xkb_state_mod_index_is_consumed2
|
||||
#define xkb_state_mod_index_is_consumed XKB_xkb_state_mod_index_is_consumed
|
||||
#define xkb_state_mod_mask_remove_consumed XKB_xkb_state_mod_mask_remove_consumed
|
||||
#define xkb_state_layout_name_is_active XKB_xkb_state_layout_name_is_active
|
||||
#define xkb_state_layout_index_is_active XKB_xkb_state_layout_index_is_active
|
||||
#define xkb_state_led_name_is_active XKB_xkb_state_led_name_is_active
|
||||
#define xkb_state_led_index_is_active XKB_xkb_state_led_index_is_active
|
||||
|
||||
#endif // FENNEC_PLATFORM_LINUX_XKB_LIB_XKB_H
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,45 +0,0 @@
|
||||
/*
|
||||
* Copyright © 2012 Intel Corporation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Author: Daniel Stone <daniel@fooishbar.org>
|
||||
*/
|
||||
|
||||
#ifndef _XKBCOMMON_NAMES_H
|
||||
#define _XKBCOMMON_NAMES_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief Predefined names for common modifiers and LEDs.
|
||||
*/
|
||||
|
||||
#define XKB_MOD_NAME_SHIFT "Shift"
|
||||
#define XKB_MOD_NAME_CAPS "Lock"
|
||||
#define XKB_MOD_NAME_CTRL "Control"
|
||||
#define XKB_MOD_NAME_ALT "Mod1"
|
||||
#define XKB_MOD_NAME_NUM "Mod2"
|
||||
#define XKB_MOD_NAME_LOGO "Mod4"
|
||||
|
||||
#define XKB_LED_NAME_CAPS "Caps Lock"
|
||||
#define XKB_LED_NAME_NUM "Num Lock"
|
||||
#define XKB_LED_NAME_SCROLL "Scroll Lock"
|
||||
|
||||
#endif
|
||||
@@ -1,157 +0,0 @@
|
||||
// =====================================================================================================================
|
||||
// fennec, a free and open source game engine
|
||||
// Copyright © 2025 Medusa Slockbower
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
// =====================================================================================================================
|
||||
|
||||
#ifndef FENNEC_PLATFORM_LINUX_XKB_LIB_XKBCOMMON_H
|
||||
#define FENNEC_PLATFORM_LINUX_XKB_LIB_XKBCOMMON_H
|
||||
|
||||
#define FENNEC_LIB(name) extern bool FENNEC_HAS_LIB_##name;
|
||||
#define FENNEC_SYMBOL(ret, fn, ...) using sym_##fn = ret(*)(__VA_ARGS__); \
|
||||
extern sym_##fn fn;
|
||||
#define FENNEC_GLOBAL(type, name) extern type* name;
|
||||
#include <fennec/platform/linux/xkb/lib/sym.h>
|
||||
|
||||
/*
|
||||
* Copyright © 2009-2012 Daniel Stone
|
||||
* Copyright © 2012 Intel Corporation
|
||||
* Copyright © 2012 Ran Benita
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the next
|
||||
* paragraph) shall be included in all copies or substantial portions of the
|
||||
* Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Author: Daniel Stone <daniel@fooishbar.org>
|
||||
*/
|
||||
|
||||
#include <fennec/platform/linux/xkb/lib/xkbcommon-names.h>
|
||||
#include <fennec/platform/linux/xkb/lib/xkbcommon-keysyms.h>
|
||||
|
||||
#define XKB_KEYCODE_INVALID (0xffffffff)
|
||||
#define XKB_LAYOUT_INVALID (0xffffffff)
|
||||
#define XKB_LEVEL_INVALID (0xffffffff)
|
||||
#define XKB_MOD_INVALID (0xffffffff)
|
||||
#define XKB_LED_INVALID (0xffffffff)
|
||||
|
||||
#define XKB_KEYCODE_MAX (0xffffffff - 1)
|
||||
|
||||
/**
|
||||
* Maximum keysym value
|
||||
*
|
||||
* @since 1.6.0
|
||||
* @sa xkb_keysym_t
|
||||
* @ingroup keysyms
|
||||
*/
|
||||
#define XKB_KEYSYM_MAX 0x1fffffff
|
||||
|
||||
/**
|
||||
* Test whether a value is a valid extended keycode.
|
||||
* @sa xkb_keycode_t
|
||||
**/
|
||||
#define xkb_keycode_is_legal_ext(key) (key <= XKB_KEYCODE_MAX)
|
||||
|
||||
/**
|
||||
* Test whether a value is a valid X11 keycode.
|
||||
* @sa xkb_keycode_t
|
||||
*/
|
||||
#define xkb_keycode_is_legal_x11(key) (key >= 8 && key <= 255)
|
||||
|
||||
/**
|
||||
* Names to compile a keymap with, also known as RMLVO.
|
||||
*
|
||||
* The names are the common configuration values by which a user picks
|
||||
* a keymap.
|
||||
*
|
||||
* If the entire struct is NULL, then each field is taken to be NULL.
|
||||
* You should prefer passing NULL instead of choosing your own defaults.
|
||||
*/
|
||||
struct xkb_rule_names {
|
||||
/**
|
||||
* The rules file to use. The rules file describes how to interpret
|
||||
* the values of the model, layout, variant and options fields.
|
||||
*
|
||||
* If NULL or the empty string "", a default value is used.
|
||||
* If the XKB_DEFAULT_RULES environment variable is set, it is used
|
||||
* as the default. Otherwise the system default is used.
|
||||
*/
|
||||
const char *rules;
|
||||
/**
|
||||
* The keyboard model by which to interpret keycodes and LEDs.
|
||||
*
|
||||
* If NULL or the empty string "", a default value is used.
|
||||
* If the XKB_DEFAULT_MODEL environment variable is set, it is used
|
||||
* as the default. Otherwise the system default is used.
|
||||
*/
|
||||
const char *model;
|
||||
/**
|
||||
* A comma separated list of layouts (languages) to include in the
|
||||
* keymap.
|
||||
*
|
||||
* If NULL or the empty string "", a default value is used.
|
||||
* If the XKB_DEFAULT_LAYOUT environment variable is set, it is used
|
||||
* as the default. Otherwise the system default is used.
|
||||
*/
|
||||
const char *layout;
|
||||
/**
|
||||
* A comma separated list of variants, one per layout, which may
|
||||
* modify or augment the respective layout in various ways.
|
||||
*
|
||||
* Generally, should either be empty or have the same number of values
|
||||
* as the number of layouts. You may use empty values as in "intl,,neo".
|
||||
*
|
||||
* If NULL or the empty string "", and a default value is also used
|
||||
* for the layout, a default value is used. Otherwise no variant is
|
||||
* used.
|
||||
* If the XKB_DEFAULT_VARIANT environment variable is set, it is used
|
||||
* as the default. Otherwise the system default is used.
|
||||
*/
|
||||
const char *variant;
|
||||
/**
|
||||
* A comma separated list of options, through which the user specifies
|
||||
* non-layout related preferences, like which key combinations are used
|
||||
* for switching layouts, or which key is the Compose key.
|
||||
*
|
||||
* If NULL, a default value is used. If the empty string "", no
|
||||
* options are used.
|
||||
* If the XKB_DEFAULT_OPTIONS environment variable is set, it is used
|
||||
* as the default. Otherwise the system default is used.
|
||||
*/
|
||||
const char *options;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the keymap as a string in the format from which it was created.
|
||||
* @sa xkb_keymap_get_as_string()
|
||||
**/
|
||||
#define XKB_KEYMAP_USE_ORIGINAL_FORMAT ((enum xkb_keymap_format) -1)
|
||||
|
||||
|
||||
#endif // FENNEC_PLATFORM_LINUX_XKB_LIB_XKBCOMMON_H
|
||||
@@ -16,16 +16,16 @@
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
// =====================================================================================================================
|
||||
|
||||
#define FENNEC_LIB(name) bool FENNEC_HAS_LIB_##name;
|
||||
#define FENNEC_SYMBOL(ret, fn, ...) using sym_##fn = ret(*)(__VA_ARGS__); \
|
||||
sym_##fn fn;
|
||||
#define FENNEC_GLOBAL(type, name) type* name;
|
||||
#include <fennec/platform/linux/xkb/lib/sym.h>
|
||||
|
||||
#include <fennec/platform/linux/xkb/lib/xkbcommon.h>
|
||||
#include <fennec/platform/linux/xkb/lib/xkb.h>
|
||||
#include <fennec/platform/linux/xkb/lib/loader.h>
|
||||
#include <fennec/platform/interface/platform.h>
|
||||
|
||||
#define FENNEC_LIB(name) bool FENNEC_HAS_LIB_##name;
|
||||
#define FENNEC_SYMBOL(ret, fn, ...) using XKB_sym_##fn = ret(*)(__VA_ARGS__); \
|
||||
XKB_sym_##fn XKB_##fn;
|
||||
#define FENNEC_GLOBAL(type, name) type* XKB_##name;
|
||||
#include <fennec/platform/linux/xkb/lib/sym.h>
|
||||
|
||||
namespace fennec
|
||||
{
|
||||
|
||||
@@ -58,10 +58,10 @@ bool load_symbols(platform* platform) {
|
||||
return false; \
|
||||
} \
|
||||
current_lib = &_FENNEC_LIB_##lib;
|
||||
#define FENNEC_SYMBOL(ret, fn, ...) fn = (sym_##fn)(platform->find_symbol(current_lib->obj, #fn)); \
|
||||
assertf(fn != nullptr, "Failed to find symbol: " #fn);
|
||||
#define FENNEC_GLOBAL(type, name) name = (type*)(platform->find_symbol(current_lib->obj, #name)); \
|
||||
assertf(name != nullptr, "Failed to find global: " #name);
|
||||
#define FENNEC_SYMBOL(ret, fn, ...) XKB_##fn = (XKB_sym_##fn)(platform->find_symbol(current_lib->obj, #fn)); \
|
||||
assertf(XKB_##fn != nullptr, "Failed to find symbol: " #fn);
|
||||
#define FENNEC_GLOBAL(type, name) XKB_##name = (type*)(platform->find_symbol(current_lib->obj, #name)); \
|
||||
assertf(XKB_##name != nullptr, "Failed to find global: " #name);
|
||||
#include <fennec/platform/linux/xkb/lib/sym.h>
|
||||
|
||||
|
||||
@@ -76,8 +76,8 @@ void unload_symbols(platform* platform) {
|
||||
|
||||
#define FENNEC_LIB(lib) platform->unload_object(_FENNEC_LIB_##lib.obj); \
|
||||
_FENNEC_LIB_##lib.obj = nullptr;
|
||||
#define FENNEC_SYMBOL(ret, fn, ...) fn = nullptr;
|
||||
#define FENNEC_GLOBAL(type, name) name = nullptr;
|
||||
#define FENNEC_SYMBOL(ret, fn, ...) XKB_##fn = nullptr;
|
||||
#define FENNEC_GLOBAL(type, name) XKB_##name = nullptr;
|
||||
#include <fennec/platform/linux/xkb/lib/sym.h>
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,6 @@
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
// =====================================================================================================================
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "tests/test_lang.h"
|
||||
#include "tests/test_math.h"
|
||||
#include "tests/test_memory.h"
|
||||
@@ -27,7 +25,6 @@
|
||||
#include "tests/test_langproc.h"
|
||||
#include "tests/test_platform.h"
|
||||
|
||||
|
||||
int main(int, char **)
|
||||
{
|
||||
srand(0);
|
||||
|
||||
Reference in New Issue
Block a user