Save a shit ton of perf, turns out making huge dicts every keystroke was AWFUL
This commit is contained in:
parent
712b0e4888
commit
fa195a3e3d
@ -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?')
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user