summaryrefslogtreecommitdiffstats
path: root/src/shortcuts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shortcuts.cpp')
-rw-r--r--src/shortcuts.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/shortcuts.cpp b/src/shortcuts.cpp
index 8a8d36d5a..708e58198 100644
--- a/src/shortcuts.cpp
+++ b/src/shortcuts.cpp
@@ -626,11 +626,17 @@ static void read_shortcuts_file(char const *filename, bool const is_user_set) {
} else if (!strcmp(mod, "Meta")) {
modifiers |= SP_SHORTCUT_META_MASK;
} else if (!strcmp(mod, "Primary")) {
-#ifdef __APPLE__
- modifiers |= SP_SHORTCUT_META_MASK;
-#else
- modifiers |= SP_SHORTCUT_CONTROL_MASK;
-#endif
+ GdkModifierType mod =
+ gdk_keymap_get_modifier_mask (gdk_keymap_get_default(), GDK_MODIFIER_INTENT_PRIMARY_ACCELERATOR);
+ gdk_keymap_add_virtual_modifiers(gdk_keymap_get_default(), &mod);
+ if (mod & GDK_CONTROL_MASK)
+ modifiers |= SP_SHORTCUT_CONTROL_MASK;
+ else if (mod & GDK_META_MASK)
+ modifiers |= SP_SHORTCUT_META_MASK;
+ else {
+ g_warning("unsupported primary accelerator ");
+ modifiers |= SP_SHORTCUT_CONTROL_MASK;
+ }
} else {
g_warning("Unknown modifier %s for %s", mod, verb_name);
}