Skip to content

Commit

Permalink
Add persistence to native keys and fix Linux keys.
Browse files Browse the repository at this point in the history
  • Loading branch information
Mihaylov93 committed Apr 19, 2020
1 parent 80efc7d commit 8df55fd
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 7 deletions.
3 changes: 3 additions & 0 deletions keysender.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
#include <QMetaEnum>
#include <QDebug>

#if defined(Q_OS_LINUX)
#include "x11sender.hpp"
#endif

#define KEY_PRESSED '1'
#define KEY_RELEASED '0'

Expand Down
9 changes: 7 additions & 2 deletions mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <QDir>
#include <QMetaEnum>
#include <QRegExpValidator>
#include <QVariant>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
Expand All @@ -22,6 +23,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
_keySender = new KeySender(this);
_settingsFile = QDir::currentPath() + "/config.ini";
_settings = new QSettings(_settingsFile, QSettings::IniFormat);
_setDialog = new SetKeyDialog(this);

ui->lePort->setValidator(new QRegExpValidator(QRegExp("[0-9]*"), ui->lePort));
loadSettings();
Expand All @@ -31,7 +33,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi

ui->statusbar->showMessage("Disconnected: Not listening.");
ui->tbLog->append("INFO: Disconnected and not listening to any port.");
_setDialog = new SetKeyDialog(this);

QList<QPushButton *> mButtonList = ui->tabButtons->findChildren<QPushButton *>();

Expand All @@ -46,6 +47,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi

MainWindow::~MainWindow()
{
_settings->setValue("nativekeys", _setDialog->accessMap());
_settings->sync();
delete ui;
}

Expand Down Expand Up @@ -134,8 +137,10 @@ void MainWindow::loadSettings()
ui->lePort->setText(mText);
ui->tbLog->append(QString("INFO: Port initialized to [%1] from settings.").arg(ui->lePort->text()));
}
}

const QMap<QString, QVariant> mMap = _settings->value("nativekeys", "").toMap();
if (!mMap.isEmpty()) _setDialog->accessMap() = mMap;
}
void MainWindow::initMap()
{

Expand Down
19 changes: 15 additions & 4 deletions setkeydialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,12 @@ SetKeyDialog::SetKeyDialog(QWidget* parent) : QDialog(parent)

quint32 SetKeyDialog::keyToNative(const Qt::Key& iKey)
{
return _qtKeysToNativeMap.value(iKey);
return _qtKeysToNativeMap.value(QString::number(iKey)).toUInt();
}

QMap<QString, QVariant>& SetKeyDialog::accessMap()
{
return _qtKeysToNativeMap;
}

void SetKeyDialog::onSetClicked()
Expand All @@ -37,17 +42,23 @@ void SetKeyDialog::onSetClicked()

void SetKeyDialog::keyReleaseEvent(QKeyEvent* iKeyEvent)
{
// qDebug() << iKeyEvent->key();
const QString mKey(QMetaEnum::fromType<Qt::Key>().valueToKey(iKeyEvent->key()));
QStringList mStringList;
mStringList << _btnObjName << mKey;

qDebug() << mStringList;
qDebug() << iKeyEvent->key();

#if defined(Q_OS_LINUX)
qDebug() << "nativeScanCode: " << iKeyEvent->nativeScanCode();
const quint32 mNativeVkey = iKeyEvent->nativeVirtualKey();
const quint32 mNativeKey = iKeyEvent->nativeScanCode();
#endif
#if defined(Q_OS_WIN)
qDebug() << "nativeVirtual: " << iKeyEvent->nativeVirtualKey();
_qtKeysToNativeMap.insert(Qt::Key(iKeyEvent->key()), mNativeVkey);
const quint32 mNativeKey = iKeyEvent->nativeVirtualKey();
#endif

_qtKeysToNativeMap.insert(QString::number(Qt::Key(iKeyEvent->key())), mNativeKey);
emit setKey(mStringList);
this->hide();
}
4 changes: 3 additions & 1 deletion setkeydialog.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ class SetKeyDialog : public QDialog {
public:
explicit SetKeyDialog(QWidget *parent = nullptr);
quint32 keyToNative(const Qt::Key &iKey);
QMap<QString, QVariant> &accessMap();
signals:
void setKey(QStringList);
public slots:
Expand All @@ -15,5 +16,6 @@ public slots:

private:
QString _btnObjName;
QMap<Qt::Key, quint32> _qtKeysToNativeMap;
// QMap<Qt::Key, QVariant> _qtKeysToNativeMap;
QMap<QString, QVariant> _qtKeysToNativeMap;
};

0 comments on commit 8df55fd

Please sign in to comment.