VKeybd: Pass on primary (Ctrl/Cmd) shortcuts
authorRobin Gareus <robin@gareus.org>
Sun, 15 Dec 2019 19:34:14 +0000 (20:34 +0100)
committerRobin Gareus <robin@gareus.org>
Sun, 15 Dec 2019 19:34:14 +0000 (20:34 +0100)
This allows Ctrl/Cmd+s (save) and Ctrl/Cmd+z (undo) etc shortcuts
to work, even though the virtual-keyboard is visible.

gtk2_ardour/pianokeyboard.cc

index 9323f4fbf09a2b5dbda542ce6efdbfb42713ce15..c68b674742f5b7fbf4ff4ba12f6a939306cd6122 100644 (file)
@@ -30,6 +30,8 @@
 #include <gdk/gdkkeysyms.h>
 #include <gtk/gtk.h>
 
+#include "gtkmm2ext/keyboard.h"
+
 #include "pianokeyboard.h"
 
 #ifndef M_PI
@@ -559,6 +561,10 @@ get_keycode (GdkEventKey* event)
 bool
 APianoKeyboard::on_key_press_event (GdkEventKey* event)
 {
+        if (Gtkmm2ext::Keyboard::modifier_state_contains (event->state, Gtkmm2ext::Keyboard::PrimaryModifier)) {
+                return false;
+        }
+
        char const* key = get_keycode (event);
        int note = key_binding (key);
 
@@ -594,6 +600,9 @@ APianoKeyboard::on_key_press_event (GdkEventKey* event)
 bool
 APianoKeyboard::on_key_release_event (GdkEventKey* event)
 {
+        if (Gtkmm2ext::Keyboard::modifier_state_contains (event->state, Gtkmm2ext::Keyboard::PrimaryModifier)) {
+                return false;
+        }
        char const* key = get_keycode (event);
 
        if (!key) {