from kmk.keys import KC, ModifierKey, make_key from kmk.modules import Module class CgSwap(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