Resolve #59, adds MEH and HYPER modifiers

This also cleans up some weird potentially-buggy logic paths within the
ModifierKeycode creation and handling. I can now press a free-floating
HYPER in my keymap and see the appropriate codes in `xev` for press and
release events.
This commit is contained in:
Josh Klar
2018-10-11 18:56:46 -07:00
parent b763dd9c4b
commit 98dfb53a83
3 changed files with 39 additions and 9 deletions

View File

@@ -102,7 +102,11 @@ class AbstractHidHelper:
def add_modifier(self, modifier):
if isinstance(modifier, ModifierKeycode):
self.report_mods[0] |= modifier.code
if modifier.code == ModifierKeycode.FAKE_CODE:
for mod in modifier.has_modifiers:
self.report_mods[0] |= mod
else:
self.report_mods[0] |= modifier.code
else:
self.report_mods[0] |= modifier
@@ -110,7 +114,11 @@ class AbstractHidHelper:
def remove_modifier(self, modifier):
if isinstance(modifier, ModifierKeycode):
self.report_mods[0] ^= modifier.code
if modifier.code == ModifierKeycode.FAKE_CODE:
for mod in modifier.has_modifiers:
self.report_mods[0] ^= mod
else:
self.report_mods[0] ^= modifier.code
else:
self.report_mods[0] ^= modifier