1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-02 20:30:00 +00:00

Correct keypad symbols, push X11 into a namespace.

This commit is contained in:
Thomas Harte 2021-05-03 21:09:01 -04:00
parent 9c29655da2
commit 4774676e2a

View File

@ -884,7 +884,14 @@ void MainWindow::keyReleaseEvent(QKeyEvent *event) {
#ifdef HAS_X11 #ifdef HAS_X11
#include <QX11Info> #include <QX11Info>
#include <X11/keysymdef.h>
// X11 collides with my 'Time' namespace; that's probably my fault for lazy namespace
// selection, but this fixes the problem.
namespace X11 {
#include <X11/Xlib.h>
#include <X11/keysym.h>
}
#endif #endif
std::optional<Inputs::Keyboard::Key> MainWindow::keyForEvent(QKeyEvent *event) { std::optional<Inputs::Keyboard::Key> MainWindow::keyForEvent(QKeyEvent *event) {
@ -893,10 +900,10 @@ std::optional<Inputs::Keyboard::Key> MainWindow::keyForEvent(QKeyEvent *event) {
#ifdef HAS_X11 #ifdef HAS_X11
if(QGuiApplication::platformName() == QLatin1String("xcb")) { if(QGuiApplication::platformName() == QLatin1String("xcb")) {
// Convert from a machine-specific keycode to a more general keysym. // Convert from a machine-specific keycode to a more general keysym.
int keysyms = 0; int keysym_count = 0;
const KeySym *const keysyms = XGetKeyboardMapping(QX11Info::display(), event->nativeScanCode(), 1, &keysyms); KeySym *const keysyms = X11::XGetKeyboardMapping(QX11Info::display(), event->nativeScanCode(), 1, &keysym_count);
const KeySym keysym = keysyms[0]; const auto keysym = keysyms[0];
XFree(keysyms); X11::XFree(keysyms);
#define BIND(code, key) case code: return Inputs::Keyboard::Key::key; #define BIND(code, key) case code: return Inputs::Keyboard::Key::key;
@ -960,9 +967,9 @@ std::optional<Inputs::Keyboard::Key> MainWindow::keyForEvent(QKeyEvent *event) {
BIND(XK_KP_Divide, KeypadSlash); BIND(XK_KP_Divide, KeypadSlash);
BIND(XK_KP_Multiply, KeypadAsterisk); BIND(XK_KP_Multiply, KeypadAsterisk);
BIND(XK_KP_Delete, KeypadDelete); BIND(XK_KP_Delete, KeypadDelete);
BIND(XP_KP_7, Keypad7); BIND(XP_KP_8, Keypad8); BIND(XP_KP_9, Keypad9); BIND(XK_KP_Add, KeypadPlus); BIND(XK_KP_7, Keypad7); BIND(XK_KP_8, Keypad8); BIND(XK_KP_9, Keypad9); BIND(XK_KP_Add, KeypadPlus);
BIND(XP_KP_4, Keypad4); BIND(XP_KP_5, Keypad5); BIND(XP_KP_6, Keypad6); BIND(XK_KP_Subtract, KeypadMinus); BIND(XK_KP_4, Keypad4); BIND(XK_KP_5, Keypad5); BIND(XK_KP_6, Keypad6); BIND(XK_KP_Subtract, KeypadMinus);
BIND(XP_KP_1, Keypad1); BIND(XP_KP_2, Keypad2); BIND(XP_KP_3, Keypad3); BIND(XK_KP_Enter, KeypadEnter); BIND(XK_KP_1, Keypad1); BIND(XK_KP_2, Keypad2); BIND(XK_KP_3, Keypad3); BIND(XK_KP_Enter, KeypadEnter);
BIND(XP_KP_0, Keypad0); BIND(XP_KP_0, Keypad0);
BIND(XK_KP_Decimal, KeypadDecimalPoint); BIND(XK_KP_Decimal, KeypadDecimalPoint);
BIND(XK_KP_Equal, KeypadEquals); BIND(XK_KP_Equal, KeypadEquals);