From a21f1aa13b0bd1101cc451cf594a36bbf63dd852 Mon Sep 17 00:00:00 2001 From: Storm Dragon Date: Thu, 5 Jun 2025 03:32:01 -0400 Subject: [PATCH] another attempt to fix the keybinding problem for plugins. --- src/cthulhu/cthulhuVersion.py | 2 +- src/cthulhu/plugin_system_manager.py | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) 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."""