File indexing completed on 2024-12-01 12:40:29

0001 /*
0002     SPDX-FileCopyrightText: 2001 Ellis Whitehead <ellis@kde.org>
0003 
0004     Win32 port:
0005     SPDX-FileCopyrightText: 2004 Jarosław Staniek <staniek@kde.org>
0006 
0007     SPDX-License-Identifier: LGPL-2.1-or-later
0008 */
0009 
0010 #ifndef _KKEYSERVER_H
0011 #define _KKEYSERVER_H
0012 
0013 #include <kwindowsystem_export.h>
0014 
0015 #include <qglobal.h>
0016 
0017 #include <config-kwindowsystem.h>
0018 #if KWINDOWSYSTEM_HAVE_X11 /*or defined Q_OS_WIN*/
0019 #include "kkeyserver_x11.h"
0020 #elif defined Q_OS_MAC
0021 #include "kkeyserver_mac.h"
0022 #elif defined Q_OS_WIN
0023 #include "kkeyserver_win.h"
0024 #endif
0025 
0026 class QString;
0027 
0028 /**
0029  * A collection of functions for the conversion of key presses and
0030  * their modifiers from the window system specific format
0031  * to the generic format and vice-versa.
0032  */
0033 namespace KKeyServer
0034 {
0035 /**
0036  * Converts the mask of ORed KKey::ModFlag modifiers to a
0037  * user-readable string.
0038  * @param mod the mask of ORed KKey::ModFlag modifiers
0039  * @return the user-readable string (in English)
0040  */
0041 KWINDOWSYSTEM_EXPORT QString modToStringUser(uint mod);
0042 
0043 /**
0044  * Converts the modifier given as user-readable string (in English)
0045  * to KKey::ModFlag modifier, or 0.
0046  * @internal
0047  */
0048 KWINDOWSYSTEM_EXPORT uint stringUserToMod(const QString &mod);
0049 
0050 /**
0051  * Test if the shift modifier should be recorded for a given key.
0052  *
0053  * For example, if shift+5 produces '%' Qt wants ctrl+shift+5 recorded as ctrl+% and
0054  * in that case this function would return false.
0055  *
0056  * @since 4.7.1
0057  */
0058 KWINDOWSYSTEM_EXPORT bool isShiftAsModifierAllowed(int keyQt);
0059 
0060 } // namespace KKeyServer
0061 
0062 #endif // !_KKEYSERVER_H