diff --git a/src/cthulhu/cthulhuVersion.py b/src/cthulhu/cthulhuVersion.py index 770781d..5b7ac94 100644 --- a/src/cthulhu/cthulhuVersion.py +++ b/src/cthulhu/cthulhuVersion.py @@ -23,5 +23,5 @@ # Fork of Orca Screen Reader (GNOME) # Original source: https://gitlab.gnome.org/GNOME/orca -version = "2025.04.20" +version = "2025.06.05" codeName = "plugins" diff --git a/src/cthulhu/plugin_system_manager.py b/src/cthulhu/plugin_system_manager.py index 81e291b..60326d6 100644 --- a/src/cthulhu/plugin_system_manager.py +++ b/src/cthulhu/plugin_system_manager.py @@ -182,7 +182,14 @@ class PluginSystemManager: bindings = plugin.get_bindings() for binding in bindings.keyBindings: logger.info(f"Adding binding: {binding.keysymstring} with modifiers {binding.modifiers}") - active_script.getKeyBindings().add(binding) + # Check if binding already exists to avoid duplicates + if not active_script.getKeyBindings().hasKeyBinding(binding, "keysNoMask"): + active_script.getKeyBindings().add(binding) + # Register key grab at system level - this was missing! + from . import cthulhu + grab_ids = cthulhu.addKeyGrab(binding) + if grab_ids: + binding._grab_ids = grab_ids def _on_settings_changed(self, app=None): """Re-register all plugin keybindings when settings change."""