File indexing completed on 2024-04-28 11:45:58
0001 /* 0002 SPDX-FileCopyrightText: 2008 Erlend Hamberg <ehamberg@gmail.com> 0003 SPDX-FileCopyrightText: 2008 Evgeniy Ivanov <powerfox@kde.ru> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef KATEVI_KEY_PARSER_H 0009 #define KATEVI_KEY_PARSER_H 0010 0011 #include <QChar> 0012 #include <QHash> 0013 #include <QString> 0014 #include <ktexteditor_export.h> 0015 0016 class QKeyEvent; 0017 0018 namespace KateVi 0019 { 0020 0021 class KeyEvent; 0022 0023 /** 0024 * for encoding keypresses w/ modifiers into an internal QChar representation and back again to a 0025 * descriptive text string 0026 */ 0027 class KTEXTEDITOR_EXPORT KeyParser 0028 { 0029 private: 0030 KTEXTEDITOR_NO_EXPORT 0031 KeyParser(); 0032 0033 public: 0034 static KeyParser *self(); 0035 ~KeyParser() 0036 { 0037 m_instance = nullptr; 0038 } 0039 KeyParser(const KeyParser &) = delete; 0040 KeyParser &operator=(const KeyParser &) = delete; 0041 0042 const QString encodeKeySequence(const QString &keys) const; 0043 const QString decodeKeySequence(const QString &keys) const; 0044 QString qt2vi(int key) const; 0045 int vi2qt(const QString &keypress) const; 0046 int encoded2qt(const QString &keypress) const; 0047 const QChar KeyEventToQChar(const QKeyEvent &keyEvent); 0048 const QChar KeyEventToQChar(const KeyEvent &keyEvent); 0049 0050 private: 0051 KTEXTEDITOR_NO_EXPORT 0052 void initKeyTables(); 0053 KTEXTEDITOR_NO_EXPORT 0054 const QChar KeyEventToQChar(int keyCode, const QString &text, Qt::KeyboardModifiers mods) const; 0055 0056 QHash<int, QString> m_qt2katevi; 0057 QHash<QString, int> m_katevi2qt; 0058 QHash<QString, int> m_nameToKeyCode; 0059 QHash<int, QString> m_keyCodeToName; 0060 0061 static KeyParser *m_instance; 0062 }; 0063 0064 } 0065 0066 #endif /* KATEVI_KEY_PARSER_H */