another attempt to fix the keybinding problem for plugins.

This commit is contained in:
Storm Dragon
2025-06-05 03:32:01 -04:00
parent 5181944de0
commit a21f1aa13b
2 changed files with 9 additions and 2 deletions

View File

@ -23,5 +23,5 @@
# Fork of Orca Screen Reader (GNOME) # Fork of Orca Screen Reader (GNOME)
# Original source: https://gitlab.gnome.org/GNOME/orca # Original source: https://gitlab.gnome.org/GNOME/orca
version = "2025.04.20" version = "2025.06.05"
codeName = "plugins" codeName = "plugins"

View File

@ -182,7 +182,14 @@ class PluginSystemManager:
bindings = plugin.get_bindings() bindings = plugin.get_bindings()
for binding in bindings.keyBindings: for binding in bindings.keyBindings:
logger.info(f"Adding binding: {binding.keysymstring} with modifiers {binding.modifiers}") logger.info(f"Adding binding: {binding.keysymstring} with modifiers {binding.modifiers}")
# Check if binding already exists to avoid duplicates
if not active_script.getKeyBindings().hasKeyBinding(binding, "keysNoMask"):
active_script.getKeyBindings().add(binding) 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): def _on_settings_changed(self, app=None):
"""Re-register all plugin keybindings when settings change.""" """Re-register all plugin keybindings when settings change."""