Skip to content

Commit 3e86e82

Browse files
committed
Remove redundant 'self.' references
.. improves performance and reduces mpy size (1175, -11). Now for 1 to 5 key slots filled it's always faster than baseline (268us worst case) too.
1 parent 49c5fcf commit 3e86e82

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

adafruit_hid/keyboard.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,20 +129,22 @@ def _add_keycode_to_report(self, keycode: int) -> None:
129129
# Set bit for this modifier.
130130
self.report_modifier[0] |= modifier
131131
else:
132+
report_keys = self.report_keys
132133
# Don't press twice.
133134
for i in range(_MAX_KEYPRESSES):
134-
if self.report_keys[i] == 0:
135+
report_key = report_keys[i]
136+
if report_key == 0:
135137
# Put keycode in first empty slot. Since the report_keys
136138
# are compact and unique, this is not a repeated key
137-
self.report_keys[i] = keycode
139+
report_keys[i] = keycode
138140
return
139-
if self.report_keys[i] == keycode:
141+
if report_key == keycode:
140142
# Already pressed.
141143
return
142144
# All slots are filled. Shuffle down and reuse last slot
143145
for i in range(_MAX_KEYPRESSES - 1):
144-
self.report_keys[i] = self.report_keys[i + 1]
145-
self.report_keys[-1] = keycode
146+
report_keys[i] = report_keys[i + 1]
147+
report_keys[-1] = keycode
146148

147149
def _remove_keycode_from_report(self, keycode: int) -> None:
148150
"""Remove a single keycode from the report."""
@@ -151,20 +153,21 @@ def _remove_keycode_from_report(self, keycode: int) -> None:
151153
# Turn off the bit for this modifier.
152154
self.report_modifier[0] &= ~modifier
153155
else:
156+
report_keys = self.report_keys
154157
# Clear the at most one matching slot and move remaining keys down
155158
j = 0
156159
for i in range(_MAX_KEYPRESSES):
157-
pressed = self.report_keys[i]
160+
pressed = report_keys[i]
158161
if not pressed:
159162
break # Handled all used report slots
160163
if pressed == keycode:
161164
continue # Remove this entry
162165
if i != j:
163-
self.report_keys[j] = self.report_keys[i]
166+
report_keys[j] = report_keys[i]
164167
j += 1
165168
# Clear any remaining slots
166-
while j < _MAX_KEYPRESSES and self.report_keys[j]:
167-
self.report_keys[j] = 0
169+
while j < _MAX_KEYPRESSES and report_keys[j]:
170+
report_keys[j] = 0
168171
j += 1
169172

170173
@property

0 commit comments

Comments
 (0)