Explorar o código

ExtendedControls: added toggle action to _keysym_mappings

Fabian Peter Hammerle %!s(int64=6) %!d(string=hai) anos
pai
achega
3233f1f8e7
Modificáronse 1 ficheiros con 12 adicións e 13 borrados
  1. 12 13
      tooncher/controls.py

+ 12 - 13
tooncher/controls.py

@@ -66,14 +66,13 @@ class ExtendedControls:
         if self._toggle_keysym == X.NoSymbol:
             raise Exception("Extended keyboard controls toggle:"
                             + " Unknown keysym name '{}'".format(toggle_keysym_name))
-        keysym_mappings = copy.deepcopy(
+        self._keysym_mappings = copy.deepcopy(
             EXTENDED_CONTROLS_DEFAULT_KEYSYM_MAPPINGS,
         )
-        if self._toggle_keysym in keysym_mappings:
-            del keysym_mappings[self._toggle_keysym]
+        if self._toggle_keysym in self._keysym_mappings:
             print("INFO Extended Controls:"
                   + " Ignoring mapping for toggle key '{}'".format(toggle_keysym_name))
-        self._keysym_mappings = keysym_mappings
+        self._keysym_mappings[self._toggle_keysym] = ToggleExtendedControlsAction()
         self._default_action = ForwardKeyEventAction()
         self._engine_window = None
         self._enabled = False
@@ -129,9 +128,7 @@ class ExtendedControls:
             xkeyevent.detail,
             index=0,
         )
-        if keysym_in == self._toggle_keysym:
-            action = ToggleExtendedControlsAction()
-        elif self.enabled and keysym_in in self._keysym_mappings:
+        if keysym_in in self._keysym_mappings:
             action = self._keysym_mappings[keysym_in]
         else:
             action = self._default_action
@@ -139,17 +136,19 @@ class ExtendedControls:
 
     def enable(self):
         for keysym in self._keysym_mappings.keys():
-            self._grab_key(
-                self._xdisplay.keysym_to_keycode(keysym),
-            )
+            if keysym != self._toggle_keysym:
+                self._grab_key(
+                    self._xdisplay.keysym_to_keycode(keysym),
+                )
         self._enabled = True
         print("INFO Enabled Extended Controls")
 
     def disable(self):
         for keysym in self._keysym_mappings.keys():
-            self._ungrab_key(
-                self._xdisplay.keysym_to_keycode(keysym),
-            )
+            if keysym != self._toggle_keysym:
+                self._ungrab_key(
+                    self._xdisplay.keysym_to_keycode(keysym),
+                )
         self._enabled = False
         print("INFO Disabled Extended Controls")