基本输入检测
This commit is contained in:
@@ -1,6 +1,13 @@
|
||||
#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[])
|
||||
{
|
||||
@@ -16,5 +23,46 @@ int main(int argc, char *argv[])
|
||||
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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user