Save a shit ton of perf, turns out making huge dicts every keystroke was AWFUL

This commit is contained in:
Josh Klar 2018-09-16 23:30:52 -07:00
parent 712b0e4888
commit fa195a3e3d

View File

@ -120,47 +120,41 @@ class HIDHelper:
return self return self
def add_modifier(self, modifier): def add_modifier(self, modifier):
if modifier.is_modifier and Keycodes.Modifiers.contains(modifier): if modifier.is_modifier:
self._evt[0] |= modifier.code self._evt[0] |= modifier.code
return self return self
raise ValueError('Attempted to use non-modifier as a modifier') raise ValueError('Attempted to use non-modifier as a modifier')
def remove_modifier(self, modifier): def remove_modifier(self, modifier):
if modifier.is_modifier and Keycodes.Modifiers.contains(modifier): if modifier.is_modifier:
self._evt[0] ^= modifier.code self._evt[0] ^= modifier.code
return self return self
raise ValueError('Attempted to use non-modifier as a modifier') raise ValueError('Attempted to use non-modifier as a modifier')
def add_key(self, key): def add_key(self, key):
if key and Keycodes.contains(key): # Try to find the first empty slot in the key report, and fill it
# Try to find the first empty slot in the key report, and fill it placed = False
placed = False for pos in range(2, 8):
for pos in range(2, 8): if self._evt[pos] == 0x00:
if self._evt[pos] == 0x00: self._evt[pos] = key.code
self._evt[pos] = key.code placed = True
placed = True break
break
if not placed: if not placed:
self.logger.warning('Out of space in HID report, could not add key') self.logger.warning('Out of space in HID report, could not add key')
return self return self
raise ValueError('Invalid keycode?')
def remove_key(self, key): def remove_key(self, key):
if key and Keycodes.contains(key): removed = False
removed = False for pos in range(2, 8):
for pos in range(2, 8): if self._evt[pos] == key.code:
if self._evt[pos] == key.code: self._evt[pos] = 0x00
self._evt[pos] = 0x00 removed = True
removed = True
if not removed: if not removed:
self.logger.warning('Tried to remove key that was not added') self.logger.warning('Tried to remove key that was not added')
return self return self
raise ValueError('Invalid keycode?')