From bddf22ef8778e00f6534b6ba2493b6784bceeb7e Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Mon, 2 Oct 2023 23:05:34 -0400 Subject: use group(?)-agnostic keyval for paste shortcut (fixes #228) --- src/components/chatinput.cpp | 7 +++++-- src/misc/events.cpp | 15 +++++++++++++++ src/misc/events.hpp | 7 +++++++ 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/misc/events.cpp create mode 100644 src/misc/events.hpp (limited to 'src') diff --git a/src/components/chatinput.cpp b/src/components/chatinput.cpp index 24fc22b..c802413 100644 --- a/src/components/chatinput.cpp +++ b/src/components/chatinput.cpp @@ -1,5 +1,6 @@ #include "chatinput.hpp" #include "constants.hpp" +#include "misc/events.hpp" #include ChatInputText::ChatInputText() { @@ -41,12 +42,14 @@ bool ChatInputText::ProcessKeyPress(GdkEventKey *event) { return true; } + const auto shortcut = EventsUtil::shortcut_key(event); + #ifdef __APPLE__ - if ((event->state & GDK_MOD2_MASK) && event->keyval == GDK_KEY_v) { + if ((event->state & GDK_MOD2_MASK) && shortcut == GDK_KEY_v) { return CheckHandleClipboardPaste(); } #else - if ((event->state & GDK_CONTROL_MASK) && event->keyval == GDK_KEY_v) { + if ((event->state & GDK_CONTROL_MASK) && shortcut == GDK_KEY_v) { return CheckHandleClipboardPaste(); } #endif diff --git a/src/misc/events.cpp b/src/misc/events.cpp new file mode 100644 index 0000000..59aaad7 --- /dev/null +++ b/src/misc/events.cpp @@ -0,0 +1,15 @@ +#include "events.hpp" + +namespace EventsUtil { +unsigned shortcut_key(GdkEventKey *event) { + // thanks inkscape + unsigned shortcut_key = 0; + gdk_keymap_translate_keyboard_state( + gdk_keymap_get_for_display(gdk_display_get_default()), + event->hardware_keycode, + static_cast(event->state), + 0, + &shortcut_key, nullptr, nullptr, nullptr); + return shortcut_key; +} +} // namespace EventsUtil diff --git a/src/misc/events.hpp b/src/misc/events.hpp new file mode 100644 index 0000000..d677eaa --- /dev/null +++ b/src/misc/events.hpp @@ -0,0 +1,7 @@ +#pragma once +#include +// idk it wont let me forward declare + +namespace EventsUtil { +unsigned shortcut_key(GdkEventKey *event); +} -- cgit v1.2.3