Browse Source

Platform: print key/modifier/button names in Application tests.

pull/651/head
Vladimír Vondruš 2 years ago
parent
commit
6042642848
  1. 217
      src/Magnum/Platform/Test/AbstractXApplicationTest.cpp
  2. 58
      src/Magnum/Platform/Test/AndroidApplicationTest.cpp
  3. 101
      src/Magnum/Platform/Test/EmscriptenApplicationTest.cpp
  4. 101
      src/Magnum/Platform/Test/GlfwApplicationTest.cpp
  5. 98
      src/Magnum/Platform/Test/Sdl2ApplicationTest.cpp

217
src/Magnum/Platform/Test/AbstractXApplicationTest.cpp

@ -24,6 +24,7 @@
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.
*/ */
#include <Corrade/Containers/EnumSet.hpp>
#include <Corrade/Utility/Arguments.h> #include <Corrade/Utility/Arguments.h>
#ifdef BUILD_GLXAPPLICATION #ifdef BUILD_GLXAPPLICATION
@ -34,7 +35,201 @@
#error #error
#endif #endif
namespace Magnum { namespace Platform { namespace Test { namespace { namespace Magnum { namespace Platform {
/* These cannot be in an anonymous namespace as enumSetDebugOutput() below
wouldn't be able to pick them up */
static Debug& operator<<(Debug& debug, Application::InputEvent::Modifier value) {
debug << "Modifier" << Debug::nospace;
switch(value) {
#define _c(value) case Application::InputEvent::Modifier::value: return debug << "::" #value;
_c(Shift)
_c(Ctrl)
_c(Alt)
_c(AltGr)
_c(CapsLock)
_c(NumLock)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
static Debug& operator<<(Debug& debug, Application::MouseMoveEvent::Button value) {
debug << "Button" << Debug::nospace;
switch(value) {
#define _c(value) case Application::MouseMoveEvent::Button::value: return debug << "::" #value;
_c(Left)
_c(Middle)
_c(Right)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
namespace Test { namespace {
Debug& operator<<(Debug& debug, Application::InputEvent::Modifiers value) {
return Containers::enumSetDebugOutput(debug, value, "Modifiers{}", {
Application::InputEvent::Modifier::Shift,
Application::InputEvent::Modifier::Ctrl,
Application::InputEvent::Modifier::Alt,
Application::InputEvent::Modifier::AltGr,
Application::InputEvent::Modifier::CapsLock,
Application::InputEvent::Modifier::NumLock,
});
}
Debug& operator<<(Debug& debug, Application::MouseEvent::Button value) {
debug << "Button" << Debug::nospace;
switch(value) {
#define _c(value) case Application::MouseEvent::Button::value: return debug << "::" #value;
_c(Left)
_c(Middle)
_c(Right)
_c(WheelUp)
_c(WheelDown)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
Debug& operator<<(Debug& debug, Application::MouseMoveEvent::Buttons value) {
return Containers::enumSetDebugOutput(debug, value, "Buttons{}", {
Application::MouseMoveEvent::Button::Left,
Application::MouseMoveEvent::Button::Middle,
Application::MouseMoveEvent::Button::Right,
});
}
Debug& operator<<(Debug& debug, const Application::KeyEvent::Key value) {
debug << "Key" << Debug::nospace;
switch(value) {
#define _c(value) case Application::KeyEvent::Key::value: return debug << "::" #value;
_c(LeftShift)
_c(RightShift)
_c(LeftCtrl)
_c(RightCtrl)
_c(LeftAlt)
_c(RightAlt)
_c(LeftSuper)
_c(RightSuper)
_c(Enter)
_c(Esc)
_c(Up)
_c(Down)
_c(Left)
_c(Right)
_c(Home)
_c(End)
_c(PageUp)
_c(PageDown)
_c(Backspace)
_c(Insert)
_c(Delete)
_c(F1)
_c(F2)
_c(F3)
_c(F4)
_c(F5)
_c(F6)
_c(F7)
_c(F8)
_c(F9)
_c(F10)
_c(F11)
_c(F12)
_c(Space)
_c(Tab)
_c(Quote)
_c(Comma)
_c(Period)
_c(Minus)
_c(Plus)
_c(Slash)
_c(Percent)
_c(Semicolon)
_c(Equal)
_c(LeftBracket)
_c(RightBracket)
_c(Backslash)
_c(Backquote)
_c(Zero)
_c(One)
_c(Two)
_c(Three)
_c(Four)
_c(Five)
_c(Six)
_c(Seven)
_c(Eight)
_c(Nine)
_c(A)
_c(B)
_c(C)
_c(D)
_c(E)
_c(F)
_c(G)
_c(H)
_c(I)
_c(J)
_c(K)
_c(L)
_c(M)
_c(N)
_c(O)
_c(P)
_c(Q)
_c(R)
_c(S)
_c(T)
_c(U)
_c(V)
_c(W)
_c(X)
_c(Y)
_c(Z)
_c(CapsLock)
_c(ScrollLock)
_c(NumLock)
_c(PrintScreen)
_c(NumZero)
_c(NumOne)
_c(NumTwo)
_c(NumThree)
_c(NumFour)
_c(NumFive)
_c(NumSix)
_c(NumSeven)
_c(NumEight)
_c(NumNine)
_c(NumDecimal)
_c(NumDivide)
_c(NumMultiply)
_c(NumSubtract)
_c(NumAdd)
_c(NumEnter)
_c(NumEqual)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
using namespace Containers::Literals; using namespace Containers::Literals;
@ -45,6 +240,26 @@ struct AbstractXApplicationTest: Platform::Application {
Debug{} << "draw event"; Debug{} << "draw event";
swapBuffers(); swapBuffers();
} }
void mousePressEvent(MouseEvent& event) override {
Debug{} << "mouse press:" << event.button() << event.buttons() << event.modifiers() << Debug::packed << event.position();
}
void mouseReleaseEvent(MouseEvent& event) override {
Debug{} << "mouse release:" << event.button() << event.buttons() << event.modifiers() << Debug::packed << event.position();
}
void mouseMoveEvent(MouseMoveEvent& event) override {
Debug{} << "mouse move:" << event.buttons() << event.modifiers() << Debug::packed << event.position();
}
void keyPressEvent(KeyEvent& event) override {
Debug{} << "key press:" << event.key() << int(event.key()) << event.modifiers() << event.buttons() << Debug::packed << event.position();
}
void keyReleaseEvent(KeyEvent& event) override {
Debug{} << "key release:" << event.key() << int(event.key()) << event.modifiers() << event.buttons() << Debug::packed << event.position();
}
}; };
AbstractXApplicationTest::AbstractXApplicationTest(const Arguments& arguments): Platform::Application{arguments, NoCreate} { AbstractXApplicationTest::AbstractXApplicationTest(const Arguments& arguments): Platform::Application{arguments, NoCreate} {

58
src/Magnum/Platform/Test/AndroidApplicationTest.cpp

@ -24,9 +24,52 @@
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.
*/ */
#include <Corrade/Containers/EnumSet.hpp>
#include "Magnum/Platform/AndroidApplication.h" #include "Magnum/Platform/AndroidApplication.h"
namespace Magnum { namespace Platform { namespace Test { namespace { namespace Magnum { namespace Platform {
/* Cannot be in an anonymous namespace as enumSetDebugOutput() below wouldn't
be able to pick it up */
static Debug& operator<<(Debug& debug, Application::MouseMoveEvent::Button value) {
debug << "Button" << Debug::nospace;
switch(value) {
#define _c(value) case Application::MouseMoveEvent::Button::value: return debug << "::" #value;
_c(Left)
_c(Middle)
_c(Right)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
namespace Test { namespace {
Debug& operator<<(Debug& debug, Application::MouseEvent::Button value) {
debug << "Button" << Debug::nospace;
switch(value) {
#define _c(value) case Application::MouseEvent::Button::value: return debug << "::" #value;
_c(None)
_c(Left)
_c(Middle)
_c(Right)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
Debug& operator<<(Debug& debug, Application::MouseMoveEvent::Buttons value) {
return Containers::enumSetDebugOutput(debug, value, "Buttons{}", {
Application::MouseMoveEvent::Button::Left,
Application::MouseMoveEvent::Button::Middle,
Application::MouseMoveEvent::Button::Right,
});
}
struct AndroidApplicationTest: Platform::Application { struct AndroidApplicationTest: Platform::Application {
explicit AndroidApplicationTest(const Arguments& arguments): Platform::Application{arguments} { explicit AndroidApplicationTest(const Arguments& arguments): Platform::Application{arguments} {
@ -37,12 +80,19 @@ struct AndroidApplicationTest: Platform::Application {
/* For testing HiDPI resize events */ /* For testing HiDPI resize events */
void viewportEvent(ViewportEvent& event) override { void viewportEvent(ViewportEvent& event) override {
Debug{} << "viewport event" << event.windowSize() << event.framebufferSize() << event.dpiScaling(); Debug{} << "viewport:" << event.windowSize() << event.framebufferSize() << event.dpiScaling();
} }
/* For testing event coordinates */
void mousePressEvent(MouseEvent& event) override { void mousePressEvent(MouseEvent& event) override {
Debug{} << event.position(); Debug{} << "mouse press:" << event.button() << Debug::packed << event.position();
}
void mouseReleaseEvent(MouseEvent& event) override {
Debug{} << "mouse release:" << event.button() << Debug::packed << event.position();
}
void mouseMoveEvent(MouseMoveEvent& event) override {
Debug{} << "mouse move:" << event.buttons() << Debug::packed << event.position() << Debug::packed << event.relativePosition();
} }
}; };

101
src/Magnum/Platform/Test/EmscriptenApplicationTest.cpp

@ -25,6 +25,7 @@
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.
*/ */
#include <Corrade/Containers/EnumSet.hpp>
#include <Corrade/Utility/Arguments.h> #include <Corrade/Utility/Arguments.h>
#include "Magnum/Platform/EmscriptenApplication.h" #include "Magnum/Platform/EmscriptenApplication.h"
@ -44,7 +45,72 @@
#include <emscripten/version.h> #include <emscripten/version.h>
#endif #endif
namespace Magnum { namespace Platform { namespace Test { namespace { namespace Magnum { namespace Platform {
/* These cannot be in an anonymous namespace as enumSetDebugOutput() below
wouldn't be able to pick them up */
static Debug& operator<<(Debug& debug, Application::InputEvent::Modifier value) {
debug << "Modifier" << Debug::nospace;
switch(value) {
#define _c(value) case Application::InputEvent::Modifier::value: return debug << "::" #value;
_c(Shift)
_c(Ctrl)
_c(Alt)
_c(Super)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
static Debug& operator<<(Debug& debug, Application::MouseMoveEvent::Button value) {
debug << "Button" << Debug::nospace;
switch(value) {
#define _c(value) case Application::MouseMoveEvent::Button::value: return debug << "::" #value;
_c(Left)
_c(Middle)
_c(Right)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
namespace Test { namespace {
Debug& operator<<(Debug& debug, Application::InputEvent::Modifiers value) {
return Containers::enumSetDebugOutput(debug, value, "Modifiers{}", {
Application::InputEvent::Modifier::Shift,
Application::InputEvent::Modifier::Ctrl,
Application::InputEvent::Modifier::Alt,
Application::InputEvent::Modifier::Super
});
}
Debug& operator<<(Debug& debug, Application::MouseEvent::Button value) {
debug << "Button" << Debug::nospace;
switch(value) {
#define _c(value) case Application::MouseEvent::Button::value: return debug << "::" #value;
_c(Left)
_c(Middle)
_c(Right)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
Debug& operator<<(Debug& debug, Application::MouseMoveEvent::Buttons value) {
return Containers::enumSetDebugOutput(debug, value, "Buttons{}", {
Application::MouseMoveEvent::Button::Left,
Application::MouseMoveEvent::Button::Middle,
Application::MouseMoveEvent::Button::Right,
});
}
Debug& operator<<(Debug& debug, const Application::KeyEvent::Key value) { Debug& operator<<(Debug& debug, const Application::KeyEvent::Key value) {
debug << "Key" << Debug::nospace; debug << "Key" << Debug::nospace;
@ -188,38 +254,29 @@ struct EmscriptenApplicationTest: Platform::Application {
#ifdef MAGNUM_TARGET_GL #ifdef MAGNUM_TARGET_GL
/* For testing HiDPI resize events */ /* For testing HiDPI resize events */
void viewportEvent(ViewportEvent& event) override { void viewportEvent(ViewportEvent& event) override {
Debug{} << "viewport event" << event.windowSize() << event.framebufferSize() << event.dpiScaling() << event.devicePixelRatio(); Debug{} << "viewport:" << event.windowSize() << event.framebufferSize() << event.dpiScaling() << event.devicePixelRatio();
} }
#endif #endif
/* For testing event coordinates */
void mousePressEvent(MouseEvent& event) override { void mousePressEvent(MouseEvent& event) override {
Debug{} << "mouse press event:" << event.position() << Int(event.button()); Debug{} << "mouse press:" << event.button() << event.modifiers() << Debug::packed << event.position();
} }
void mouseReleaseEvent(MouseEvent& event) override { void mouseReleaseEvent(MouseEvent& event) override {
Debug{} << "mouse release event:" << event.position() << Int(event.button()); Debug{} << "mouse release:" << event.button() << event.modifiers() << Debug::packed << event.position();
} }
void mouseMoveEvent(MouseMoveEvent& event) override { void mouseMoveEvent(MouseMoveEvent& event) override {
Debug{} << "mouse move event:" << event.position() << event.relativePosition() << Int(event.buttons()); Debug{} << "mouse move:" << event.buttons() << event.modifiers() << Debug::packed << event.position() << Debug::packed << event.relativePosition();
} }
void mouseScrollEvent(MouseScrollEvent& event) override { void mouseScrollEvent(MouseScrollEvent& event) override {
Debug{} << "mouse scroll event:" << event.offset() << event.position(); Debug{} << "mouse scroll:" << event.modifiers() << Debug::packed << event.offset() << Debug::packed << event.position();
} }
/* For testing keyboard capture */ /* For testing keyboard capture */
void keyPressEvent(KeyEvent& event) override { void keyPressEvent(KeyEvent& event) override {
{ Debug{} << "key press:" << event.key() << event.keyName() << event.modifiers();
Debug d;
d << "key press event:" << event.key() << event.keyName();
if(event.modifiers() & KeyEvent::Modifier::Shift) d << "Shift";
if(event.modifiers() & KeyEvent::Modifier::Ctrl) d << "Ctrl";
if(event.modifiers() & KeyEvent::Modifier::Alt) d << "Alt";
if(event.modifiers() & KeyEvent::Modifier::Super) d << "Super";
}
if(event.key() == KeyEvent::Key::F1) { if(event.key() == KeyEvent::Key::F1) {
Debug{} << "starting text input"; Debug{} << "starting text input";
@ -246,21 +303,13 @@ struct EmscriptenApplicationTest: Platform::Application {
} }
void keyReleaseEvent(KeyEvent& event) override { void keyReleaseEvent(KeyEvent& event) override {
{ Debug{} << "key release:" << event.key() << event.keyName() << event.modifiers();
Debug d;
d << "key release event:" << event.key() << event.keyName();
if(event.modifiers() & KeyEvent::Modifier::Shift) d << "Shift";
if(event.modifiers() & KeyEvent::Modifier::Ctrl) d << "Ctrl";
if(event.modifiers() & KeyEvent::Modifier::Alt) d << "Alt";
if(event.modifiers() & KeyEvent::Modifier::Super) d << "Super";
}
event.setAccepted(); event.setAccepted();
} }
void textInputEvent(TextInputEvent& event) override { void textInputEvent(TextInputEvent& event) override {
Debug{} << "text input event:" << event.text(); Debug{} << "text input:" << event.text();
event.setAccepted(); event.setAccepted();
} }

101
src/Magnum/Platform/Test/GlfwApplicationTest.cpp

@ -24,6 +24,7 @@
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.
*/ */
#include <Corrade/Containers/EnumSet.hpp>
#include <Corrade/Containers/Optional.h> #include <Corrade/Containers/Optional.h>
#include <Corrade/PluginManager/Manager.h> #include <Corrade/PluginManager/Manager.h>
#include <Corrade/Utility/Arguments.h> #include <Corrade/Utility/Arguments.h>
@ -36,7 +37,77 @@
#include "Magnum/Trade/AbstractImporter.h" #include "Magnum/Trade/AbstractImporter.h"
#include "Magnum/Trade/ImageData.h" #include "Magnum/Trade/ImageData.h"
namespace Magnum { namespace Platform { namespace Test { namespace { namespace Magnum { namespace Platform {
/* These cannot be in an anonymous namespace as enumSetDebugOutput() below
wouldn't be able to pick them up */
static Debug& operator<<(Debug& debug, Application::InputEvent::Modifier value) {
debug << "Modifier" << Debug::nospace;
switch(value) {
#define _c(value) case Application::InputEvent::Modifier::value: return debug << "::" #value;
_c(Shift)
_c(Ctrl)
_c(Alt)
_c(Super)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
static Debug& operator<<(Debug& debug, Application::MouseMoveEvent::Button value) {
debug << "Button" << Debug::nospace;
switch(value) {
#define _c(value) case Application::MouseMoveEvent::Button::value: return debug << "::" #value;
_c(Left)
_c(Middle)
_c(Right)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
namespace Test { namespace {
Debug& operator<<(Debug& debug, Application::InputEvent::Modifiers value) {
return Containers::enumSetDebugOutput(debug, value, "Modifiers{}", {
Application::InputEvent::Modifier::Shift,
Application::InputEvent::Modifier::Ctrl,
Application::InputEvent::Modifier::Alt,
Application::InputEvent::Modifier::Super
});
}
Debug& operator<<(Debug& debug, Application::MouseEvent::Button value) {
debug << "Button" << Debug::nospace;
switch(value) {
#define _c(value) case Application::MouseEvent::Button::value: return debug << "::" #value;
_c(Left)
_c(Middle)
_c(Right)
_c(Button4)
_c(Button5)
_c(Button6)
_c(Button7)
_c(Button8)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
Debug& operator<<(Debug& debug, Application::MouseMoveEvent::Buttons value) {
return Containers::enumSetDebugOutput(debug, value, "Buttons{}", {
Application::MouseMoveEvent::Button::Left,
Application::MouseMoveEvent::Button::Middle,
Application::MouseMoveEvent::Button::Right,
});
}
Debug& operator<<(Debug& debug, const Application::KeyEvent::Key value) { Debug& operator<<(Debug& debug, const Application::KeyEvent::Key value) {
debug << "Key" << Debug::nospace; debug << "Key" << Debug::nospace;
@ -167,7 +238,7 @@ struct GlfwApplicationTest: Platform::Application {
/* For testing HiDPI resize events */ /* For testing HiDPI resize events */
void viewportEvent(ViewportEvent& event) override { void viewportEvent(ViewportEvent& event) override {
Debug{} << "viewport event" << event.windowSize() Debug{} << "viewport:" << event.windowSize()
#ifdef MAGNUM_TARGET_GL #ifdef MAGNUM_TARGET_GL
<< event.framebufferSize() << event.framebufferSize()
#endif #endif
@ -180,7 +251,7 @@ struct GlfwApplicationTest: Platform::Application {
} }
void drawEvent() override { void drawEvent() override {
Debug{} << "draw event"; Debug{} << "draw";
swapBuffers(); swapBuffers();
if(_redraw) if(_redraw)
@ -188,11 +259,11 @@ struct GlfwApplicationTest: Platform::Application {
} }
void keyPressEvent(KeyEvent& event) override { void keyPressEvent(KeyEvent& event) override {
Debug{} << "key press event:" << event.key() << int(event.key()) Debug{} << "key press:" << event.key() << int(event.key())
#if GLFW_VERSION_MAJOR*100 + GLFW_VERSION_MINOR >= 302 #if GLFW_VERSION_MAJOR*100 + GLFW_VERSION_MINOR >= 302
<< event.keyName() << event.keyName()
#endif #endif
; << event.modifiers();
if(event.key() == KeyEvent::Key::F1) { if(event.key() == KeyEvent::Key::F1) {
Debug{} << "starting text input"; Debug{} << "starting text input";
@ -234,19 +305,31 @@ struct GlfwApplicationTest: Platform::Application {
} }
void keyReleaseEvent(KeyEvent& event) override { void keyReleaseEvent(KeyEvent& event) override {
Debug{} << "key release event:" << event.key() << int(event.key()) Debug{} << "key release:" << event.key() << int(event.key())
#if GLFW_VERSION_MAJOR*100 + GLFW_VERSION_MINOR >= 302 #if GLFW_VERSION_MAJOR*100 + GLFW_VERSION_MINOR >= 302
<< event.keyName() << event.keyName()
#endif #endif
; << event.modifiers();
}
void mousePressEvent(MouseEvent& event) override {
Debug{} << "mouse press:" << event.button() << event.modifiers() << Debug::packed << event.position();
}
void mouseReleaseEvent(MouseEvent& event) override {
Debug{} << "mouse release:" << event.button() << event.modifiers() << Debug::packed << event.position();
} }
void mouseMoveEvent(MouseMoveEvent& event) override { void mouseMoveEvent(MouseMoveEvent& event) override {
Debug{} << "mouse move event:" << event.position() << event.relativePosition() << UnsignedInt(event.buttons()); Debug{} << "mouse move:" << event.buttons() << event.modifiers() << Debug::packed << event.position() << Debug::packed << event.relativePosition();
}
void mouseScrollEvent(MouseScrollEvent& event) override {
Debug{} << "mouse scroll:" << event.modifiers() << Debug::packed << event.offset() << Debug::packed << event.position();
} }
void textInputEvent(TextInputEvent& event) override { void textInputEvent(TextInputEvent& event) override {
Debug{} << "text input event:" << event.text(); Debug{} << "text input:" << event.text();
} }
/* Uncomment to test the tick event. It should run at given minimal loop /* Uncomment to test the tick event. It should run at given minimal loop

98
src/Magnum/Platform/Test/Sdl2ApplicationTest.cpp

@ -24,6 +24,7 @@
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.
*/ */
#include <Corrade/Containers/EnumSet.hpp>
#include <Corrade/Containers/Optional.h> #include <Corrade/Containers/Optional.h>
#include <Corrade/PluginManager/Manager.h> #include <Corrade/PluginManager/Manager.h>
#include <Corrade/Utility/Arguments.h> #include <Corrade/Utility/Arguments.h>
@ -53,9 +54,86 @@
#include "Magnum/GL/DefaultFramebuffer.h" #include "Magnum/GL/DefaultFramebuffer.h"
#endif #endif
namespace Magnum { namespace Platform { namespace Test { namespace { namespace Magnum { namespace Platform {
Debug& operator<<(Debug& debug, const Application::KeyEvent::Key value) { /* These cannot be in an anonymous namespace as enumSetDebugOutput() below
wouldn't be able to pick them up */
static Debug& operator<<(Debug& debug, Application::InputEvent::Modifier value) {
debug << "Modifier" << Debug::nospace;
switch(value) {
#define _c(value) case Application::InputEvent::Modifier::value: return debug << "::" #value;
_c(Shift)
_c(Ctrl)
_c(Alt)
_c(Super)
_c(AltGr)
_c(CapsLock)
_c(NumLock)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
static Debug& operator<<(Debug& debug, Application::MouseMoveEvent::Button value) {
debug << "Button" << Debug::nospace;
switch(value) {
#define _c(value) case Application::MouseMoveEvent::Button::value: return debug << "::" #value;
_c(Left)
_c(Middle)
_c(Right)
_c(X1)
_c(X2)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
namespace Test { namespace {
Debug& operator<<(Debug& debug, Application::InputEvent::Modifiers value) {
return Containers::enumSetDebugOutput(debug, value, "Modifiers{}", {
Application::InputEvent::Modifier::Shift,
Application::InputEvent::Modifier::Ctrl,
Application::InputEvent::Modifier::Alt,
Application::InputEvent::Modifier::Super,
Application::InputEvent::Modifier::AltGr,
Application::InputEvent::Modifier::CapsLock,
Application::InputEvent::Modifier::NumLock,
});
}
Debug& operator<<(Debug& debug, Application::MouseEvent::Button value) {
debug << "Button" << Debug::nospace;
switch(value) {
#define _c(value) case Application::MouseEvent::Button::value: return debug << "::" #value;
_c(Left)
_c(Middle)
_c(Right)
_c(X1)
_c(X2)
#undef _c
}
return debug << "(" << Debug::nospace << UnsignedInt(value) << Debug::nospace << ")";
}
Debug& operator<<(Debug& debug, Application::MouseMoveEvent::Buttons value) {
return Containers::enumSetDebugOutput(debug, value, "Buttons{}", {
Application::MouseMoveEvent::Button::Left,
Application::MouseMoveEvent::Button::Middle,
Application::MouseMoveEvent::Button::Right,
Application::MouseMoveEvent::Button::X1,
Application::MouseMoveEvent::Button::X2,
});
}
Debug& operator<<(Debug& debug, Application::KeyEvent::Key value) {
debug << "Key" << Debug::nospace; debug << "Key" << Debug::nospace;
switch(value) { switch(value) {
@ -209,23 +287,23 @@ struct Sdl2ApplicationTest: Platform::Application {
/* For testing event coordinates */ /* For testing event coordinates */
void mousePressEvent(MouseEvent& event) override { void mousePressEvent(MouseEvent& event) override {
Debug{} << "mouse press event:" << event.position() << Int(event.button()); Debug{} << "mouse press:" << event.button() << Debug::packed << event.position() << event.modifiers();
_gestureDistance = {}; _gestureDistance = {};
_gestureRotation = {}; _gestureRotation = {};
} }
void mouseReleaseEvent(MouseEvent& event) override { void mouseReleaseEvent(MouseEvent& event) override {
Debug{} << "mouse release event:" << event.position() << Int(event.button()); Debug{} << "mouse release:" << event.button() << Debug::packed << event.position() << event.modifiers();
_gestureDistance = {}; _gestureDistance = {};
_gestureRotation = {}; _gestureRotation = {};
} }
void mouseMoveEvent(MouseMoveEvent& event) override { void mouseMoveEvent(MouseMoveEvent& event) override {
Debug{} << "mouse move event:" << event.position() << event.relativePosition() << Uint32(event.buttons()); Debug{} << "mouse move:" << event.buttons() << Debug::packed << event.position() << Debug::packed << event.relativePosition() << event.modifiers();
} }
void mouseScrollEvent(MouseScrollEvent& event) override { void mouseScrollEvent(MouseScrollEvent& event) override {
Debug{} << "mouse scroll event:" << event.offset() << event.position(); Debug{} << "mouse scroll:" << event.modifiers() << Debug::packed << event.offset() << Debug::packed << event.position();
} }
void multiGestureEvent(MultiGestureEvent& event) override { void multiGestureEvent(MultiGestureEvent& event) override {
@ -235,11 +313,11 @@ struct Sdl2ApplicationTest: Platform::Application {
} }
void keyPressEvent(KeyEvent& event) override { void keyPressEvent(KeyEvent& event) override {
Debug{} << "key press event:" << event.key() << "keycode:" << SDL_Keycode(event.key()) << event.keyName() << "scancode:" << event.event().key.keysym.scancode Debug{} << "key press:" << event.key() << "keycode:" << SDL_Keycode(event.key()) << event.keyName() << "scancode:" << event.event().key.keysym.scancode
#ifndef CORRADE_TARGET_EMSCRIPTEN #ifndef CORRADE_TARGET_EMSCRIPTEN
<< SDL_GetScancodeName(event.event().key.keysym.scancode) << SDL_GetScancodeName(event.event().key.keysym.scancode)
#endif #endif
; << event.modifiers();
if(event.key() == KeyEvent::Key::F1) { if(event.key() == KeyEvent::Key::F1) {
Debug{} << "starting text input"; Debug{} << "starting text input";
@ -300,11 +378,11 @@ struct Sdl2ApplicationTest: Platform::Application {
} }
void keyReleaseEvent(KeyEvent& event) override { void keyReleaseEvent(KeyEvent& event) override {
Debug{} << "key release event:" << event.key() << "keycode:" << SDL_Keycode(event.key()) << event.keyName() << "scancode:" << event.event().key.keysym.scancode Debug{} << "key release:" << event.key() << "keycode:" << SDL_Keycode(event.key()) << event.keyName() << "scancode:" << event.event().key.keysym.scancode
#ifndef CORRADE_TARGET_EMSCRIPTEN #ifndef CORRADE_TARGET_EMSCRIPTEN
<< SDL_GetScancodeName(event.event().key.keysym.scancode) << SDL_GetScancodeName(event.event().key.keysym.scancode)
#endif #endif
; << event.modifiers();
/* With EmscriptenApplication, this makes the event stop from /* With EmscriptenApplication, this makes the event stop from
propagating further to the page (such as when pressing F1). propagating further to the page (such as when pressing F1).

Loading…
Cancel
Save