40 static QString lookupString(
struct xkb_state *state, xkb_keycode_t code);
41 static QString lookupStringNoKeysymTransformations(xkb_keysym_t keysym);
43 static QList<xkb_keysym_t> toKeysym(QKeyEvent *event);
45 static int keysymToQtKey(xkb_keysym_t keysym, Qt::KeyboardModifiers modifiers);
46 static int keysymToQtKey(xkb_keysym_t keysym, Qt::KeyboardModifiers modifiers,
47 xkb_state *state, xkb_keycode_t code,
48 bool superAsMeta =
true,
bool hyperAsMeta =
true);
52 static void xkbcommon_XConvertCase(xkb_keysym_t sym, xkb_keysym_t *lower, xkb_keysym_t *upper);
53 static xkb_keysym_t qxkbcommon_xkb_keysym_to_upper(xkb_keysym_t ks);
55 static Qt::KeyboardModifiers modifiers(
struct xkb_state *state, xkb_keysym_t keysym = XKB_KEY_VoidSymbol);
57 static QList<
int> possibleKeys(xkb_state *state,
58 const QKeyEvent *event,
bool superAsMeta =
false,
bool hyperAsMeta =
false);
59 static QList<QKeyCombination> possibleKeyCombinations(xkb_state *state,
60 const QKeyEvent *event,
bool superAsMeta =
false,
bool hyperAsMeta =
false);
62 static void verifyHasLatinLayout(xkb_keymap *keymap);
63 static xkb_keysym_t lookupLatinKeysym(xkb_state *state, xkb_keycode_t keycode);
65 static bool isLatin1(xkb_keysym_t sym) {
66 return sym >= 0x20 && sym <= 0xff;
68 static bool isKeypad(xkb_keysym_t sym) {
70 case XKB_KEY_KP_Space:
72 case XKB_KEY_KP_Enter:
80 case XKB_KEY_KP_Right:
82 case XKB_KEY_KP_Prior:
85 case XKB_KEY_KP_Begin:
86 case XKB_KEY_KP_Insert:
87 case XKB_KEY_KP_Delete:
88 case XKB_KEY_KP_Equal:
89 case XKB_KEY_KP_Multiply:
91 case XKB_KEY_KP_Separator:
92 case XKB_KEY_KP_Subtract:
93 case XKB_KEY_KP_Decimal:
94 case XKB_KEY_KP_Divide:
111 static void setXkbContext(QPlatformInputContext *inputContext,
struct xkb_context *context);
113 struct XKBStateDeleter {
114 void operator()(
struct xkb_state *state)
const {
return xkb_state_unref(state); }
116 struct XKBKeymapDeleter {
117 void operator()(
struct xkb_keymap *keymap)
const {
return xkb_keymap_unref(keymap); }
119 struct XKBContextDeleter {
120 void operator()(
struct xkb_context *context)
const {
return xkb_context_unref(context); }
122 using ScopedXKBState = std::unique_ptr<
struct xkb_state, XKBStateDeleter>;
123 using ScopedXKBKeymap = std::unique_ptr<
struct xkb_keymap, XKBKeymapDeleter>;
124 using ScopedXKBContext = std::unique_ptr<
struct xkb_context, XKBContextDeleter>;
static QT_BEGIN_NAMESPACE int keysymToQtKey_internal(xkb_keysym_t keysym, Qt::KeyboardModifiers modifiers, xkb_state *state, xkb_keycode_t code, bool superAsMeta, bool hyperAsMeta)