File indexing completed on 2024-04-14 03:55:49
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 KeyParser 0028 { 0029 private: 0030 KeyParser(); 0031 0032 public: 0033 KTEXTEDITOR_EXPORT static KeyParser *self(); 0034 ~KeyParser() 0035 { 0036 m_instance = nullptr; 0037 } 0038 KeyParser(const KeyParser &) = delete; 0039 KeyParser &operator=(const KeyParser &) = delete; 0040 0041 KTEXTEDITOR_EXPORT const QString encodeKeySequence(const QString &keys) const; 0042 KTEXTEDITOR_EXPORT const QString decodeKeySequence(const QString &keys) const; 0043 QString qt2vi(int key) const; 0044 KTEXTEDITOR_EXPORT int vi2qt(const QString &keypress) const; 0045 int encoded2qt(const QString &keypress) const; 0046 KTEXTEDITOR_EXPORT const QChar KeyEventToQChar(const QKeyEvent &keyEvent); 0047 const QChar KeyEventToQChar(const KeyEvent &keyEvent); 0048 0049 private: 0050 void initKeyTables(); 0051 const QChar KeyEventToQChar(int keyCode, const QString &text, Qt::KeyboardModifiers mods) const; 0052 0053 QHash<int, QString> m_qt2katevi; 0054 QHash<QString, int> m_katevi2qt; 0055 QHash<QString, int> m_nameToKeyCode; 0056 QHash<int, QString> m_keyCodeToName; 0057 0058 static KeyParser *m_instance; 0059 }; 0060 0061 } 0062 0063 #endif /* KATEVI_KEY_PARSER_H */