From 3f0283422d666db4cce8dab32fb7b5580046c1ee Mon Sep 17 00:00:00 2001 From: Syed Hussaini Date: Fri, 8 Apr 2022 18:25:08 -0500 Subject: [PATCH] swapping control with cmd --- kmk/modules/swap_keys.py | 70 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100755 kmk/modules/swap_keys.py diff --git a/kmk/modules/swap_keys.py b/kmk/modules/swap_keys.py new file mode 100755 index 0000000..9c1cf52 --- /dev/null +++ b/kmk/modules/swap_keys.py @@ -0,0 +1,70 @@ +from kmk.keys import KC, ModifierKey, make_key +from kmk.modules import Module + + +class SwapKeys(Module): + # default cg swap is disabled, can be eanbled too if needed + def __init__(self, cg_swap_enable=False): + self.cg_swap_enable = cg_swap_enable + self._cg_mapping = { + KC.LCTL: KC.LGUI, + KC.RCTL: KC.RGUI, + KC.LGUI: KC.LCTL, + KC.RGUI: KC.RCTL, + } + make_key( + names=('CG_SWAP',), + ) + make_key( + names=('CG_NORM',), + ) + make_key( + names=('CG_TOGG',), + ) + + def during_bootup(self, keyboard): + return + + def matrix_detected_press(self, keyboard): + return keyboard.matrix_update is None + + def before_matrix_scan(self, keyboard): + return + + def process_key(self, keyboard, key, is_pressed, int_coord): + if is_pressed: + # enables or disables or toggles cg swap + if key == KC.CG_SWAP: + self.cg_swap_enable = True + elif key == KC.CG_NORM: + self.cg_swap_enable = False + elif key == KC.CG_TOGG: + if not self.cg_swap_enable: + self.cg_swap_enable = True + else: + self.cg_swap_enable = False + # performs cg swap + if ( + self.cg_swap_enable + and key not in (KC.CG_SWAP, KC.CG_NORM, KC.CG_TOGG) + and isinstance(key, ModifierKey) + and key in self._cg_mapping + ): + key = self._cg_mapping.get(key) + + return key + + def before_hid_send(self, keyboard): + return + + def after_hid_send(self, keyboard): + return + + def on_powersave_enable(self, keyboard): + return + + def on_powersave_disable(self, keyboard): + return + + def after_matrix_scan(self, keyboard): + return