Krita Source Code Documentation
Loading...
Searching...
No Matches
KisExtendedModifiersMapper Class Reference

#include <kis_extended_modifiers_mapper.h>

Classes

struct  Private
 

Public Types

typedef QVector< Qt::Key > ExtendedModifiers
 

Public Member Functions

 KisExtendedModifiersMapper ()
 
ExtendedModifiers queryExtendedModifiers ()
 
Qt::KeyboardModifiers queryStandardModifiers ()
 
 ~KisExtendedModifiersMapper ()
 

Static Public Member Functions

static ExtendedModifiers qtModifiersToQtKeys (Qt::KeyboardModifiers standardModifiers)
 
static Qt::Key workaroundShiftAltMetaHell (const QKeyEvent *keyEvent)
 

Private Attributes

QScopedPointer< Privatem_d
 

Detailed Description

Definition at line 19 of file kis_extended_modifiers_mapper.h.

Member Typedef Documentation

◆ ExtendedModifiers

Constructor & Destructor Documentation

◆ KisExtendedModifiersMapper()

KisExtendedModifiersMapper::KisExtendedModifiersMapper ( )

Definition at line 77 of file kis_extended_modifiers_mapper.cpp.

78 : m_d(new Private)
79{
80}

◆ ~KisExtendedModifiersMapper()

KisExtendedModifiersMapper::~KisExtendedModifiersMapper ( )

Definition at line 82 of file kis_extended_modifiers_mapper.cpp.

83{
84}

Member Function Documentation

◆ qtModifiersToQtKeys()

KisExtendedModifiersMapper::ExtendedModifiers KisExtendedModifiersMapper::qtModifiersToQtKeys ( Qt::KeyboardModifiers standardModifiers)
static

Definition at line 135 of file kis_extended_modifiers_mapper.cpp.

136{
137 ExtendedModifiers modifiers;
138
139 if (standardModifiers & Qt::ShiftModifier) {
140 modifiers << Qt::Key_Shift;
141 }
142
143 if (standardModifiers & Qt::ControlModifier) {
144 modifiers << Qt::Key_Control;
145 }
146
147 if (standardModifiers & Qt::AltModifier) {
148 modifiers << Qt::Key_Alt;
149 }
150
151 if (standardModifiers & Qt::MetaModifier) {
152 modifiers << Qt::Key_Meta;
153 }
154
155 return modifiers;
156}

◆ queryExtendedModifiers()

KisExtendedModifiersMapper::ExtendedModifiers KisExtendedModifiersMapper::queryExtendedModifiers ( )

Query the native platform API for keys.

A word of caution: using the result of this to modify KisShortcutMatcher's state (directly or indirectly) can result in keys becoming "stuck" whenever we observe key status through this function, especially when the application does not have focus. On Windows in particular, [Windows Key]+D or [Windows Key]+[0~9] are prone to this behavior.

See also
KisInputManager::Private::fixShortcutMatcherModifiersState

Definition at line 95 of file kis_extended_modifiers_mapper.cpp.

96{
98 static_cast<KisApplication*>(qApp)->extendedModifiersPluginInterface();
99
100 if (plugin) {
101 return plugin->queryExtendedModifiers();
102 }
103
104 ExtendedModifiers modifiers;
105
106#if defined Q_OS_WIN
107 modifiers = queryPressedKeysWin();
108#elif defined Q_OS_MACOS
109 modifiers = queryPressedKeysMac();
110#else
112#endif
113
114 return modifiers;
115}
Base class for the Krita app.
virtual ExtendedModifiers queryExtendedModifiers()=0
static ExtendedModifiers qtModifiersToQtKeys(Qt::KeyboardModifiers standardModifiers)
QVector< Qt::Key > queryPressedKeysMac()

References qtModifiersToQtKeys(), KisExtendedModifiersMapperPluginInterface::queryExtendedModifiers(), queryPressedKeysMac(), and queryStandardModifiers().

◆ queryStandardModifiers()

Qt::KeyboardModifiers KisExtendedModifiersMapper::queryStandardModifiers ( )

Definition at line 117 of file kis_extended_modifiers_mapper.cpp.

118{
119 return QApplication::queryKeyboardModifiers();
120}

◆ workaroundShiftAltMetaHell()

Qt::Key KisExtendedModifiersMapper::workaroundShiftAltMetaHell ( const QKeyEvent * keyEvent)
static

Definition at line 122 of file kis_extended_modifiers_mapper.cpp.

123{
124 Qt::Key key = (Qt::Key)keyEvent->key();
125
126 if (keyEvent->key() == Qt::Key_Meta &&
127 keyEvent->modifiers().testFlag(Qt::ShiftModifier)) {
128
129 key = Qt::Key_Alt;
130 }
131
132 return key;
133}

Member Data Documentation

◆ m_d

QScopedPointer<Private> KisExtendedModifiersMapper::m_d
private

Definition at line 48 of file kis_extended_modifiers_mapper.h.


The documentation for this class was generated from the following files: