69 lines
3.7 KiB
C++
69 lines
3.7 KiB
C++
#include <QGuiApplication>
|
|
#include <QQmlApplicationEngine>
|
|
#include <QDebug>
|
|
#include <QWindow>
|
|
#include "core/common/Enums.h"
|
|
#include "core/input/RawInputDetector.h"
|
|
|
|
static_assert(static_cast<std::uint16_t>(FancyInput::FipKeys::Enter) == 0x1000);
|
|
static_assert(static_cast<std::uint32_t>(FancyInput::FipRawKeys::NumpadEnter) == 0xE01C);
|
|
static_assert(static_cast<std::uint16_t>(FancyInput::FIPGamepadButtonflags::Y) == 0x8000);
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
QGuiApplication app(argc, argv);
|
|
app.setOrganizationName("FancyInput");
|
|
app.setApplicationName("FancyInput");
|
|
app.setApplicationVersion("1.2.0");
|
|
qputenv("QT_QUICK_CONTROLS_STYLE", "Basic");
|
|
QQmlApplicationEngine engine;
|
|
engine.addImportPath(QStringLiteral("qrc:/"));
|
|
QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed,
|
|
&app, []() { QCoreApplication::exit(-1); },
|
|
Qt::QueuedConnection);
|
|
engine.loadFromModule("FancyInputQt", "MainWindow");
|
|
|
|
FancyInput::RawInputDetector rawInputDetector(&app);
|
|
if (!engine.rootObjects().isEmpty()) {
|
|
if (auto *window = qobject_cast<QWindow *>(engine.rootObjects().constFirst())) {
|
|
rawInputDetector.start(window);
|
|
QObject::connect(&rawInputDetector, &FancyInput::RawInputDetector::keyPressed,
|
|
[](FancyInput::FipKeys key, FancyInput::FipRawKeys rawKey,
|
|
quint16 virtualKey, quint16 scanCode, bool extended,
|
|
bool ctrl, bool shift, bool alt, bool win,
|
|
bool numLock, bool capsLock, bool scrollLock) {
|
|
qInfo().nospace() << "KEY DOWN key=" << static_cast<quint16>(key)
|
|
<< " raw=" << static_cast<quint32>(rawKey)
|
|
<< " vk=0x" << Qt::hex << virtualKey
|
|
<< " scan=0x" << scanCode << Qt::dec
|
|
<< " e0=" << extended << " modifiers(ctrl=" << ctrl
|
|
<< ",shift=" << shift << ",alt=" << alt << ",win=" << win
|
|
<< ") locks(num=" << numLock << ",caps=" << capsLock
|
|
<< ",scroll=" << scrollLock << ')';
|
|
});
|
|
QObject::connect(&rawInputDetector, &FancyInput::RawInputDetector::keyReleased,
|
|
[](FancyInput::FipKeys key, FancyInput::FipRawKeys rawKey,
|
|
quint16 virtualKey, quint16 scanCode, bool extended,
|
|
bool, bool, bool, bool, bool, bool, bool) {
|
|
qInfo().nospace() << "KEY UP key=" << static_cast<quint16>(key)
|
|
<< " raw=" << static_cast<quint32>(rawKey)
|
|
<< " vk=0x" << Qt::hex << virtualKey
|
|
<< " scan=0x" << scanCode << Qt::dec
|
|
<< " e0=" << extended;
|
|
});
|
|
QObject::connect(&rawInputDetector, &FancyInput::RawInputDetector::mouseButtonChanged,
|
|
[](FancyInput::MouseCodeType button, bool pressed) {
|
|
qInfo() << (pressed ? "MOUSE DOWN" : "MOUSE UP")
|
|
<< static_cast<int>(button);
|
|
});
|
|
QObject::connect(&rawInputDetector, &FancyInput::RawInputDetector::mouseWheelMoved,
|
|
[](int delta) { qInfo() << "MOUSE WHEEL" << delta; });
|
|
QObject::connect(&rawInputDetector, &FancyInput::RawInputDetector::mouseMoved,
|
|
[](int deltaX, int deltaY) { qInfo() << "MOUSE MOVE" << deltaX << deltaY; });
|
|
qInfo() << "Raw Input detection enabled on the main window.";
|
|
}
|
|
}
|
|
|
|
return app.exec();
|
|
}
|