- Refactor on platform implementation. See comment in interface/platform.h for more info
This commit is contained in:
157
include/fennec/platform/linux/xkb/lib/xkbcommon.h
Normal file
157
include/fennec/platform/linux/xkb/lib/xkbcommon.h
Normal file
@@ -0,0 +1,157 @@
|
||||
// =====================================================================================================================
|
||||
// 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
|
||||
Reference in New Issue
Block a user