Skip to content

Commit

Permalink
use group(?)-agnostic keyval for paste shortcut (fixes #228)
Browse files Browse the repository at this point in the history
  • Loading branch information
ouwou committed Oct 3, 2023
1 parent e68a086 commit bddf22e
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/components/chatinput.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "chatinput.hpp"
#include "constants.hpp"
#include "misc/events.hpp"
#include <filesystem>

ChatInputText::ChatInputText() {
Expand Down Expand Up @@ -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
Expand Down
15 changes: 15 additions & 0 deletions src/misc/events.cpp
Original file line number Diff line number Diff line change
@@ -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<GdkModifierType>(event->state),
0,
&shortcut_key, nullptr, nullptr, nullptr);
return shortcut_key;
}
} // namespace EventsUtil
7 changes: 7 additions & 0 deletions src/misc/events.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#pragma once
#include <gdk/gdkkeys.h>
// idk it wont let me forward declare

namespace EventsUtil {
unsigned shortcut_key(GdkEventKey *event);
}

0 comments on commit bddf22e

Please sign in to comment.