Selaa lähdekoodia

UI: Add TranslateQtKeyboardEventModifiers

Palana 11 vuotta sitten
vanhempi
sitoutus
c1a00817bb
2 muutettua tiedostoa jossa 29 lisäystä ja 0 poistoa
  1. 26 0
      obs/qt-wrappers.cpp
  2. 3 0
      obs/qt-wrappers.hpp

+ 26 - 0
obs/qt-wrappers.cpp

@@ -51,3 +51,29 @@ void QTToGSWindow(WId windowId, gs_window &gswindow)
 	gswindow.display = QX11Info::display();
 #endif
 }
+
+uint32_t TranslateQtKeyboardEventModifiers(Qt::KeyboardModifiers mods)
+{
+	int obsModifiers = INTERACT_NONE;
+
+	if (mods.testFlag(Qt::ShiftModifier))
+		obsModifiers |= INTERACT_SHIFT_KEY;
+	if (mods.testFlag(Qt::AltModifier))
+		obsModifiers |= INTERACT_ALT_KEY;
+#ifdef __APPLE__
+	// Mac: Meta = Control, Control = Command
+	if (mods.testFlag(Qt::ControlModifier))
+		obsModifiers |= INTERACT_COMMAND_KEY;
+	if (mods.testFlag(Qt::MetaModifier))
+		obsModifiers |= INTERACT_CONTROL_KEY;
+#else
+	// Handle windows key? Can a browser even trap that key?
+	if (mods.testFlag(Qt::ControlModifier))
+		obsModifiers |= INTERACT_CONTROL_KEY;
+	if (mods.testFlag(Qt::MetaModifier))
+		obsModifiers |= INTERACT_COMMAND_KEY;
+
+#endif
+
+	return obsModifiers;
+}

+ 3 - 0
obs/qt-wrappers.hpp

@@ -18,6 +18,7 @@
 #pragma once
 
 #include <QWidget>
+#include <obs.h>
 
 #define QT_UTF8(str) QString::fromUtf8(str)
 #define QT_TO_UTF8(str) str.toUtf8().constData()
@@ -28,3 +29,5 @@ struct gs_window;
 void OBSErrorBox(QWidget *parent, const char *msg, ...);
 
 void QTToGSWindow(WId windowId, gs_window &gswindow);
+
+uint32_t TranslateQtKeyboardEventModifiers(Qt::KeyboardModifiers mods);