diff --git a/src/components/chatinput.cpp b/src/components/chatinput.cpp index 24fc22be..c802413c 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 00000000..59aaad78 --- /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 00000000..d677eaaa --- /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); +}