123{
125
126 char keysState[32];
127 int minKeyCode = 0;
128 int maxKeyCode = 0;
129
130#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
131 XDisplayKeycodes(QX11Info::display(), &minKeyCode, &maxKeyCode);
132 XQueryKeymap(QX11Info::display(), keysState);
133#else
134 XDisplayKeycodes(qGuiApp->nativeInterface<QNativeInterface::QX11Application>()->display(),
135 &minKeyCode,
136 &maxKeyCode);
137 XQueryKeymap(qGuiApp->nativeInterface<QNativeInterface::QX11Application>()->display(), keysState);
138#endif
139
140
141 auto checkKeyCodePressedX11 = [&keysState] (KeyCode key) -> bool {
142 int byte = key / 8;
143 char mask = 1 << (key % 8);
144 return keysState[byte] & mask;
145 };
146
147 for (int keyCode = minKeyCode; keyCode <= maxKeyCode; keyCode++) {
148 if (checkKeyCodePressedX11(keyCode)) {
149#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
150 KeySym sym = XkbKeycodeToKeysym(QX11Info::display(),
151 keyCode,
152#else
153 KeySym sym = XkbKeycodeToKeysym(qGuiApp->nativeInterface<QNativeInterface::QX11Application>()->display(),
154 keyCode,
155#endif
156 0,
157 0);
161 modifiers << map.
qtKey;
162 break;
163 }
164 }
165 }
166 }
167
168
169
171 return modifiers;
172}
static const KeyMapping s_mapping[]
void makeContainerUnique(C &container)