Put KeyMappingX11 stuff inside its own scope

This avoids collisions with other "concurrent" key mappers.
This commit is contained in:
Riteo 2023-01-25 19:27:31 +01:00
parent e93266b9ff
commit aa7cd71498
2 changed files with 13 additions and 14 deletions

View File

@ -30,20 +30,6 @@
#include "key_mapping_x11.h"
#include "core/templates/hash_map.h"
struct HashMapHasherKeys {
static _FORCE_INLINE_ uint32_t hash(const Key p_key) { return hash_fmix32(static_cast<uint32_t>(p_key)); }
static _FORCE_INLINE_ uint32_t hash(const char32_t p_uchar) { return hash_fmix32(p_uchar); }
static _FORCE_INLINE_ uint32_t hash(const unsigned p_key) { return hash_fmix32(p_key); }
static _FORCE_INLINE_ uint32_t hash(const KeySym p_key) { return hash_fmix32(p_key); }
};
HashMap<KeySym, Key, HashMapHasherKeys> xkeysym_map;
HashMap<unsigned int, Key, HashMapHasherKeys> scancode_map;
HashMap<Key, unsigned int, HashMapHasherKeys> scancode_map_inv;
HashMap<KeySym, char32_t, HashMapHasherKeys> xkeysym_unicode_map;
void KeyMappingX11::initialize() {
// X11 Keysym to Godot Key map.

View File

@ -39,8 +39,21 @@
#include <X11/keysymdef.h>
#include "core/os/keyboard.h"
#include "core/templates/hash_map.h"
class KeyMappingX11 {
struct HashMapHasherKeys {
static _FORCE_INLINE_ uint32_t hash(const Key p_key) { return hash_fmix32(static_cast<uint32_t>(p_key)); }
static _FORCE_INLINE_ uint32_t hash(const char32_t p_uchar) { return hash_fmix32(p_uchar); }
static _FORCE_INLINE_ uint32_t hash(const unsigned p_key) { return hash_fmix32(p_key); }
static _FORCE_INLINE_ uint32_t hash(const KeySym p_key) { return hash_fmix32(p_key); }
};
static inline HashMap<KeySym, Key, HashMapHasherKeys> xkeysym_map;
static inline HashMap<unsigned int, Key, HashMapHasherKeys> scancode_map;
static inline HashMap<Key, unsigned int, HashMapHasherKeys> scancode_map_inv;
static inline HashMap<KeySym, char32_t, HashMapHasherKeys> xkeysym_unicode_map;
KeyMappingX11() {}
public: